2017-01-04 3 views
1

다음은 아키텍처 예입니다.스프링을 사용한 마이크로 서비스 권한 부여

  • 사용자는 API 게이트웨이
  • 게이트웨이는
  • 스프링 세션이 microservices "A"와 "B"로 HTTP 세션을 복제하는 모든 요청을 인증하는 API를 통해 microservices "A"와 "B"를 액세스 할 수 있습니다.
  • 마이크로 서비스 "C"는 보안 점검없이 마이크로 서비스 "A"에 액세스합니다.

Example architecture

브라우저와 microservices 사이의 권한 부여 검사를 제공하는 가장 좋은 방법은 무엇입니까? 솔루션은 마이크로 서비스 "C"가 "세션"/ 역할과 연관되어 있지 않음을 해결해야합니다. 특히

:

  • 어떻게 메소드 레벨 인증 작업이 [예. @PreAuthorize] 마이크로 서비스 "C"에 사용자가 없을 때?
  • 모든 승인 확인을 API 게이트웨이에 넣고 보호 할 모든 마이크로 서비스 간 통신을 보호해야합니까?

답변

0

'C'의 요청에 대해 OAuth 또는 JWT를 사용하는 것은 어떻습니까? 서비스 A는 단순히 토큰의 유효성을 검사하기 위해 다른 인증 공급자 (API 게이트웨이에서 오는 요청에 대해 이미 가지고있는 것으로 가정)를 필요로합니다. 그런 다음 권한을 포함하거나 토큰의 다른 정보에 따라 권한을 조회하는 정보를 제공 할 수 있습니다. 그러면 메서드 수준의 auth 주석을 유지할 수 있습니다.

+0

토큰을 @PreAuthorize가 인증 할 수있는 역할/기관으로 어떻게 변환합니까? –

0

API 게이트웨이가 httpsessionheaderStrategy와 헤더에 X-인증 토큰을 설정할 수 있습니다 의 목록을 찾아주세요. 그리고 각 서비스는 시나리오에 따라 인증 컨텍스트를 설정하기 위해 GenericFilter를 가질 수 있습니다.

1

최종 사용자가 관련되어 있지 않으며 B2B 케이스이므로 인증이 필요하지 않으며 인증이 필요하지 않습니다. 이 경우 클라이언트 자격 증명 OAuth2 흐름을 사용해야합니다. 자세한 내용은 http://proficientblog.com/microservices-security/

관련 문제