2016-12-15 4 views
2

우리는 우리의 응용 프로그램을 구현하기 위해 마이크로 서비스 기반 아키텍처에 우리의 응용 프로그램을 구축하고 있습니다. 마이크로 서비스와 마찬가지로, 서비스간에 많은 상호 서비스 상호 작용이 발생합니다.내 마이크로 서비스 기반 아키텍처를위한 중앙 JWT 관리 시스템

엔드 포인트를 보호하기 위해 이러한 보안 교환간에 JWT 기반 인증을 구현할 계획입니다.

우리는 우리가 그것을 달성 할 수 있도록 참조 2 개 방법이 있습니다

  1. 삽입 토큰 (@consumer 쪽)을 ​​생성하고 (측면 @provider) 평가하기 위해 각 응용 프로그램에서 JWT 엔진. 키의 초기 교환으로 토큰 교환은 이후의 모든 통신에 대해 원활하게 작동합니다.
  2. 분산 응용 프로그램의 모든 마이크로 서비스 통신 사이에 위치하며 응용 프로그램의 암호화 - 해독 및 유효성 검사를 포함하여 모든 토큰 수명주기를 처리하는 외부 (응용 프로그램 용) JWT 엔진이 있어야합니다.

https://jwt.io에 나와 있지만, 오버 헤드 토큰 생성 및 관리를 고려하는 것은 마이크로 서비스에 추가로 옵션 # 1에 따라 그것을 할 수있는 옵션이 많이 있습니다, 우리는 드함으로써 두번째 옵션으로 이동하는 것을 선호 - 중앙 집중식 게이트웨이.

다양한 API 게이트웨이를 살펴본 끝에 우리는 우리의 필요에 부응 할 수있는 가벼운 솔루션/도구를 발견하지 못했으며 많은 마이크로 서비스로 구성된 하나의 응용 프로그램에 중앙 집중식 엔진을 사용할 수있게되었습니다.

누구나 그런 도구/솔루션에 대해 알고 있습니까?

이 방법에 대한 다른 의견이 있으면 알려주십시오.

답변

1

또한 옵션 2를 선호하지만, 당신은 왜 프레임 워크를 찾고 있습니다?

중앙 응용 프로그램은 개인 키 관리 및 토큰 발급에 대해서만 책임을집니다. 하나의 서비스를 해결하기위한 프레임 워크를 포함하는 것은 과도 할 수 있습니다

또한 유효성 검사 서비스를 구현한다고 생각할 수도 있지만 응용 프로그램이 당신 것이기 때문에 비대칭 키를 사용하고 원격 인증 요청을 중앙에서 실행하는 대신 로컬에서 토큰을 확인하는 것이 좋습니다 신청. 마이크로 서비스에 간단한 라이브러리를 제공하여 키를 다운로드하고 유효성 검증을 수행 할 수 있습니다. JWT.io의 라이브러리를 포함하거나 처음부터 빌드하십시오. JWT를 검증하는 것은 매우 간단합니다.

예를 들어 블랙리스트를 사용하여 만료 시간 전에 토큰을 거부해야한다면 중앙 서비스가 필요합니다. 그러나 JWT 무국적자를 없애기 때문에이 계획을 권장하지 않습니다.

+0

당신의 제안을 좋아했습니다 @ pedrofb. –

0
+0

나는이 검색의 일부로 Zuul을 탐구했으며 Zuul이 실제로 그것을 통해 연결되는 응용 프로그램에 대한 JWT 토큰을 생성/관리하고 유효성을 검사 할 수 있는지 확신 할 수 없습니다. Zuul 문서에도 JWT 지원에 대한 언급이 있다는 증거는 없습니다. 그것은 토큰 릴레이 시스템을 가지고 있지만 그것은 JWT 토큰이 아닙니다. –

+0

실제로 Zuul을 통과하는 모든 마이크로 서비스는 (ZuulProxy 설정에 지정된대로) 동일한 clientId를 사용하도록 만들어졌습니다.반면에 마이크로 서비스 호출을 위해 각 연결에 대해 고유 한 토큰을 "교환"하기를 원합니다. 또한 엔드 포인트에서 토큰의 암호를 해독하고 유효성을 검사하지 않기를 바랍니다. 토큰을받은 후에는 JWT 엔진에 오히려 그 조각을 다시로드해야합니다. Zuul을 사용하여 이러한 필요를 충족시켜주는 샘플/예제가 있다면 공유 하시겠습니까? –

관련 문제