我使用Spring boot 2.0.0.M7,但我无法使OAuth2正常工作。我有它在Facebook和github在M4下工作。 (它在M5中改变了,我当时没有尝试升级它。)
我似乎无法触发从我的应用程序到oauth提供程序的初始重定向。使用提供商1(facebook),以前/ login / facebook过滤器将重定向到外部OAuth2。 现在......我不知道我需要点击以触发令牌/重定向逻辑的URL(可能在文档中丢失?)。
https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot-features-security-oauth2提及/ login / oauth2 / code / * - 但这似乎是针对提供商的响应,并不会触发重定向。
我当前的配置如下(并且在M4中工作的挂钩已作为注释保留)
@Configuration
@EnableWebSecurity
@EnableOAuth2Client
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
// ...
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.exceptionHandling()
.authenticationEntryPoint(new AuthenticationEntryPoint() {
@Override
public void commence(HttpServletRequest request, HttpServletResponse response,
AuthenticationException authException) throws IOException, ServletException {
response.sendRedirect("/login");
}
})
.and()
.authorizeRequests()
.antMatchers("/", "/favicon.ico", "/static/**", "/login", "/login/**", "/logout", "/at/**").permitAll()
.anyRequest().authenticated()
.and()
// .addFilterBefore(new OAuth2ClientContextFilter(), BasicAuthenticationFilter.class)
// .addFilterBefore(oauthFilter("facebook"), BasicAuthenticationFilter.class)
// .addFilterBefore(githubFilter(), BasicAuthenticationFilter.class)
.csrf()
.disable()
.rememberMe()
.alwaysRemember(true)
;
http.httpBasic().disable();
http.formLogin().disable();
}
// private Filter facebookFilter() {
// @Bean @ConfigurationProperties("facebook.client") public AuthorizationCodeResourceDetails facebook() {
// ...
}
登录页面包含指向/ login / facebook和/ login / github的链接。
我的application.yml是:
spring.security.oauth2.client.registration:
# developer.facebook.com
facebook:
client-id: redacted
client-secret: redacted
#https://github.com/settings/applications/redacted
github:
client-id: redacted
client-secret: redacted
并且因为它可能会有所帮助,所以从build.gradle中选择一些依赖项:
compile 'org.springframework.boot:spring-boot-starter-web'
compile 'org.springframework.security.oauth:spring-security-oauth2:2.2.1.RELEASE'
compile 'org.springframework.boot:spring-boot-starter-security'
compile 'org.springframework:spring-context:5.0.2.RELEASE'
compile 'org.springframework.security:spring-security-web:5.0.0.RELEASE'
compile 'org.springframework.security:spring-security-oauth2-client:5.0.0.RELEASE'
我已经花了很多年的时间与圈子一起玩。任何帮助欢迎:) 感谢
答案 0 :(得分:1)
所以
compile 'org.springframework.security.oauth:spring-security-oauth2:2.2.1.RELEASE'
和
compile 'org.springframework.security:spring-security-oauth2-client:5.0.0.RELEASE'
完全不兼容。 几乎没有关于新的做事方式的文件。缺少信息和过时的指南。
因为我在这里:
//the spring security 5 way
//OAuth2AuthorizationRequestRedirectFilter based config...
http.addFilterAfter(new OAuth2AuthorizationRequestRedirectFilter(clientRegistrationRepository), BasicAuthenticationFilter.class);
http.addFilterAfter(oAuth2LoginAuthenticationFilter(), OAuth2AuthorizationRequestRedirectFilter.class);
以及application.yml配置:
spring.security.oauth2.client.registration:
解决。当示例和文档赶上第5季时,会很好。