0

OAuth2 (리소스 서버)와 올바르게 작동하는 스프링 부팅 응용 프로그램이 있습니다. 사용자 정의 configure(HttpSecurity http) 메소드가 없습니다. 전용스프링 보안 : 수동으로 기본 설정으로 되돌림

spring-boot-starter-security 
spring-security-oauth2 
spring-security-jwt 

이 pom에 추가됩니다.

보호되지 않아야하는 끝점을 추가해야했습니다.

@Configuration 
public class Security extends ResourceServerConfigurerAdapter { 

    @Override 
    public void configure(HttpSecurity http) throws Exception { 
     http.authorizeRequests() 
      .antMatchers(GET, "/public/**").anonymous() 
      .anyRequest().authenticated() 
    } 
} 

지금 /public/** 엔드 포인트가 모두 제대로 열려 : 그래서 사용자 지정 설정을 추가했습니다. 그러나 다른 모든 엔드 포인트가 작동 중지 및 디버그 레벨에 나는 참조 :

paOAuth2AuthenticationProcessingFilter : 인증 요청이 실패 : 오류 = "ACCESS_DENIED", ERROR_DESCRIPTION = "자원 ID를 포함하지 않는 잘못된 토큰 (OAuth2를-자원)"

그래서 어떻게 든 잘못 OAuth2 기본 구성을 무시합니다. 그것을 다시 가져 오는 방법?

+0

보안을 설정하는 유일한 설정입니다. '@ EnableResourceServer'는 메인 클래스에 있습니다. 그'Security' 클래스를 추가하기 전에 모든 것이 올바르게 동작했습니다. – piotrek

+0

나는 cloudfoundry-uaa 권한 서버를 가지고 있습니다. 리소스 서버로만 작동하는 서버에서 문제가 발생합니다. – piotrek

+0

보안 클래스를 제거하고 엔드 포인트가 다시 작동하는지 확인하여 시작할 수 있습니다. –

답변

0

답변을 찾았습니다. @dur 주석에 따라 리소스 서버 구성에 리소스 ID를 설정해야했습니다 (아래에서 확인할 수 있듯이). 토큰의 aud 필드에 전달 된 리소스 중 하나로 설정해야했습니다.

@Configuration 
class Security extends ResourceServerConfigurerAdapter { 

    @Override 
    public void configure(ResourceServerSecurityConfigurer resources) throws Exception { 
     resources.resourceId("my-resource-name"); 
    } 
} 

는하지만 난 봄의 기본 ID가 oauth2-resource 그대로가 보안 설정없이 작동 왜 아무 생각이 없습니다. 구성이 전혀 없을 때 무시되는 것 같습니다.