2017-02-19 1 views
3
나는 현재 연구를 많이하고 또한 개념 증명 설정에 따라 신원 서버 4.

교환 참조 토큰 - 다운 스트림 microservices 인증

에서 제공하는 인증과 Microservices 아키텍처를 기반으로 새로운 응용 프로그램을 만드는 오전

, 내가 API 및 토큰을 사용하여 이러한 서비스에 성공적으로 액세스하는 네이티브 응용 프로그램을 보호하기위한 Identity Server 설정

처음에는 클라이언트가 API에 액세스하는 데 사용 된 액세스 토큰을 발급했지만 지금은 참조 토큰을 사용하도록 전환했습니다. 자, 문제에!

여기에서 취하고 싶은 접근법은 참조 토큰을받은 마이크로 서비스 게이트웨이를 채택한 다음이를 다운 스트림 마이크로 서비스에 대한 요청에 포함시키기 위해 JWT로 바꾸는 것입니다. 게이트웨이 내에서 JWT에 대한 인바운드 참조 토큰을 "교환"할 수 있습니까? Identity Server 내에 여기에서 도움이 될만한 것이 있습니까? 아니면 참조 토큰을 보내고 Authorization 헤더를 모든 다운 스트림 서비스에 전달하기 위해 게이트웨이 서비스에서 JWT를 생성하는 클레임을 검색해야합니까?

아키텍처의 목표를 이해하는 데 도움이되는 추가 정보가 있으면 알려 주시기 바랍니다.

답변

3

이것은 확장 승인을위한 좋은 사용 사례입니다. 필요로 다운 스트림 서비스를, 내가 여기 내 구현에 대한 몇 가지 세부 사항을 후속 것이라고 생각

https://identityserver4.readthedocs.io/en/release/topics/extension_grants.html

+0

고마워, 그게 내가 원하는 것처럼 보인다. 구현을 살펴보고 결과를 따라 가겠습니다. 문서를보고 꽤 많은 책을 보냈습니다.이 부분을 놓친 이유는 확실하지 않습니다. –

+0

확장 기능을 추가 했으므로 필자에게 필요한 기능을 제공합니다. 그러나 게이트웨이 API에서이를 채택하는 것에 대해 몇 가지 질문이 있지만, 이는 고유 한 Identity Server가 아닌 것으로 생각되지만 초기 질문과 관련이 있다고 생각합니다. 게이트웨이가 만드는 대부분의 다운 스트림 호출은 권한 부여를 위해 위임 JWT가 필요하므로 모든 게이트웨이 컨트롤러에서 JWT를 사용할 수 있도록 가장 깨끗한 방법을 찾고 있습니다. 나는 (캐시를 사용하여) 교환을 처리하기 위해 커스텀 미들웨어를 사용하고있다. 이것이 실행 가능할 것인가? –

2

, 그것은 다른 사람 참조 토큰을 사용하여 API 게이트웨이를 확보하고자하는 데 유용했다 경우 다음 문서를 참조하십시오 JWT.

API 게이트웨이에서 실행되는 ASP.Net Core 미들웨어를 구현했습니다. 미들웨어는 Identity Server 인증 미들웨어 이후와 MVC 미들웨어 이전에 파이프 라인에서 실행됩니다. 미들웨어의 목적은 인바운드 참조 토큰을 가져 와서 다운 스트림 마이크로 서비스를 호출 할 때 Authorization 헤더에서 사용할 수있는 JWT에 대해 Identity Server (Extension Grants 사용)와 교환하는 것입니다.

미들웨어는 GitHubNuGet package으로 제공됩니다. 미들웨어의 사용 사례에 대한 자세한 내용은 GitHub ReadMe에서 볼 수 있으며 GitHub Wiki에서 사용할 수있는 미들웨어 설치 및 구성에 대한 자세한 내용도 있습니다.

액세스 토큰에 대한 참조 토큰 교환을 수행하는 것 외에도 미들웨어는 캐싱 지원을 내장하여 토큰 교환을 수행하기 위해 Identity Server 로의 왕복 횟수를 줄입니다.

미들웨어를 사용하려는 사람이 문서에 포함되지 않은 설치 및 구성과 관련하여 질문이있는 경우 GitHub 저장소에 질문으로 태그를 추가하십시오.