在当前的春季启动中,我尝试使用外部OAuth2服务器登录用户。现在的问题是,当我执行应用程序时,授权成功后,应该将用户重定向回该应用程序。发生这种情况时,我遇到了错误。
我的application.properties
文件:
spring.security.oauth2.client.registration.mercadolivre.provider=mercadolivre
spring.security.oauth2.client.registration.mercadolivre.client-id=...
spring.security.oauth2.client.registration.mercadolivre.client-secret=...
spring.security.oauth2.client.registration.mercadolivre.authorization-grant-type=authorization_code
spring.security.oauth2.client.registration.mercadolivre.redirect-uri=http://localhost:8080/
spring.security.oauth2.client.provider.mercadolivre.authorization-uri=https://auth.mercadolivre.com.br/authorization
spring.security.oauth2.client.provider.mercadolivre.token-uri=https://api.mercadolibre.com/oauth/token
我的安全配置类:
@Configuration
public class Security extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.anyRequest().authenticated()
.and()
.oauth2Login();
}
}
我现在面临的错误:
这是什么问题?
更新
我尝试将此行添加到我的applicatio.properties
文件中:
spring.security.oauth2.client.registration.mercadolivre.redirect-uri={baseUrl}/login/oauth2/code/{registrationId}
现在我收到此错误:
打开浏览器开发者控制台:
答案 0 :(得分:0)
将redirect-uri
更改为其他内容...最好使用reference使用的模板字符串,例如:
spring.security.oauth2.client.registration.mercadolivre.redirect-uri={baseUrl}/login/oauth2/code/{registrationId}
这是将处理授权服务器发回的授权代码的uri。如果您希望在成功认证后将用户重定向到某个页面,请在configure()
中执行以下操作:
http.
...
.oauth2Login()
.defaultSuccessUrl("/");