java - 로그인 - Spring @EnableResourceServer 대 @ EnableOAuth2Sso



spring token rest (1)

이러한 특수 효과는 다양한 OAuth 2.0 역할로 서비스를 표시합니다.

@EnableResourceServer 주석은 OAuth 2.0 - Resource Server와 관련하여 귀하의 서비스가 요청을 처리하기 위해 액세스 토큰을 필요로한다는 것을 의미합니다. 액세스 토큰은 리소스 서버를 호출하기 전에 OAuth 2.0 클라이언트가 인증 서버에서 가져와야합니다.

@ EnableOAuth2Sso : 서비스를 OAuth 2.0 클라이언트로 표시합니다. 즉, 자원 소유자 (최종 사용자)를 사용자가 자격 증명을 입력해야하는 권한 서버로 재 지정하는 책임이 있음을 의미합니다. 작업이 완료되면 사용자는 권한 부여 코드 (권한 코드와 혼동하지 마십시오)를 사용하여 클라이언트로 다시 리디렉션됩니다. 그런 다음 클라이언트는 권한 부여 코드를 가져와 권한 부여 서버를 호출하여 액세스 토큰을 교환합니다. 그 후에 만 ​​클라이언트는 액세스 토큰이있는 자원 서버를 호출 할 수 있습니다.

또한 @EnableOAuth2Sso 주석의 소스 코드를 살펴보면 두 가지 흥미로운 것을 볼 수 있습니다 :

  • @EnableOAuth2Client . 여기서 서비스는 OAuth 2.0 클라이언트가됩니다. OAuth2RestTemplate 통해 해당 서비스를 호출 할 경우 액세스 토큰 (인증 코드와 교환 된 후)을 다운 스트림 서비스로 OAuth2RestTemplate 있습니다.
  • @EnableConfigurationProperties(OAuth2SsoProperties.class) . OAuth2SsoProperties에는 기본적으로 /login String loginPath 속성 하나만 있습니다. 이렇게하면 OAuth2ClientAuthenticationProcessingFilter/login 에 대한 브라우저 요청을 가로 채고 사용자를 권한 부여 서버로 리디렉션합니다.

@ EnableOAuth2Sso를 사용해야합니까?

그것은 달려 있습니다 :

  • API 게이트웨이가 인증 코드 흐름 또는 리소스 소유자 비밀번호 자격증 명 흐름을 사용하여 브라우저와 상호 작용하는 OAuth 2.0 클라이언트가되도록하려면 대답은 '예'입니다. 아마도 @EnableOAuth2Sso 가 리소스 소유자 암호 자격 증명 흐름을 잘 지원하는지 잘 모르겠다 고 말했습니다. 어쨌든, 정말로 그렇게하지 않는 한, 권한 부여 코드 흐름으로 이동하는 것이 좋습니다. 그렇게하지 않는 것이 좋은 이유입니다. BTW, 인증 코드 흐름을 사용하는 경우 다운 스트림 마이크로 서비스를 @EnableResourceServer 로 표시 할 수 있습니다. 그러면 API 게이트웨이는 OAuth 2.0 클라이언트가 될 것이고 마이크로 서비스는 나에게 논리적 인 OAuth 2.0 리소스 서버가 될 것입니다.
  • 브라우저와의 상호 작용 (예 : 클라이언트 자격 증명 플로우 )이 필요하지 않거나 암시 적 플로우 를 사용하는 SPA가있는 경우 @EnableResourceServer를 사용해야합니다. 즉, 유효한 액세스 토큰이있는 요청 만 수락합니다.

https://code.i-harness.com

지금까지 읽은 대부분의 자습서는 API 게이트웨이에서 @EnableOAuth2Sso 대신 @EnableOAuth2Sso 를 사용합니다. 차이점은 무엇입니까? 대조적으로 OAuth2Sso 는 무엇을합니까?

세부 사항 : 스프링 기반 마이크로 서비스 및 단일 페이지 응용 프로그램을위한 보안 / 인프라 아키텍처를 구현하고 있습니다. 얼마 동안은 보안 요구 사항이 없었지만 SPA는 다른 호스트 (CORS 파티)에서 열린 마이크로 서비스와 직접 대화했습니다.

이제 저는 보안 레이어와 게이트웨이 패턴을 spring-zuulspring-zuul 사용하여 추가합니다. 그래서 @EnableAuthorizationServer가있는 서비스 (uaa-service)와 @EnableAuthorizationServer@EnableAuthorizationServer 가있는 게이트웨이가 있습니다. 암호 부여 유형 만 있으면 각 SPA에 고유 한 로그인 양식이 있으며 uaa-service 토큰 끝점, 물마루 게이트웨이로 인증 한 다음 추가 요청을 위해 해당 토큰을 계속 사용합니다.

이 접근법에 문제가 있습니까? @EnableOAuth2Sso 합니까?





rest-security