0

스프링 부트 2.0.0.M7을 사용 중이며 OAuth2가 작동하지 않습니다. 나는 그것이 facebook와 github를 위해 M4 아래에서 일하도록했다. (M5에서 바뀌었고, 그 때 그것을 시도하지 않았고 업그레이드하지 않았습니다.)스프링 부트 2.0.0.M7 및 Oauth2가 초기 리디렉션을 트리거하지 않음

내 앱에서 oauth 제공 업체로 초기 리디렉션을 트리거 할 수 없습니다. 공급자 1 (페이스 북)을 사용하면 이전에/login/facebook 필터가 외부 OAuth2로 리디렉션되었습니다. 지금 ... 토큰/리디렉션 논리를 트리거하기 위해 필요한 URL (문서에없는 것일 수도 있습니다)을 모르겠습니다.

https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot-features-security-oauth2 멘션/로그인/oauth2/코드/* -하지만 이것은 공급자 응답을위한 것으로 보이며 리디렉션을 트리거하지 않습니다.

내 현재의 구성은 다음과 같습니다 (그리고 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() { 
// ... 
} 

로그인 페이지가 링크가/로그인/페이스 북 및/로그인/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' 

나는 이것에 빙빙 돌고 나이를 썼다. 어떤 도움을 환영 : 덕분에

답변

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' 

완전히 호환되지 않습니다. 새로운 일을하는 방법에 대한 문서는 거의 없습니다. 누락 된 정보 및 만료 된 안내서.

내가 여기 이후 : application.yml 구성과 함께

 //the spring security 5 way 
     //OAuth2AuthorizationRequestRedirectFilter based config... 
     http.addFilterAfter(new OAuth2AuthorizationRequestRedirectFilter(clientRegistrationRepository), BasicAuthenticationFilter.class); 
     http.addFilterAfter(oAuth2LoginAuthenticationFilter(), OAuth2AuthorizationRequestRedirectFilter.class); 

:

spring.security.oauth2.client.registration: 

해결. 예제와 문서가 스프링 5를 따라 잡을 때 좋을 것임

관련 문제