Json Web Token
인증을 위해 JWT ( )를 사용하는 방법에 대한 많은 정보가 웹에 있습니다. 그러나 다중 도메인 환경에서 싱글 사인온 솔루션에 JWT 토큰을 사용할 때 흐름이 무엇인지에 대한 명확한 설명을 찾지 못했습니다 .
저는 다른 호스트에 사이트가 많은 회사에서 일합니다. example1.com 및 example2.com을 사용하겠습니다 . 싱글 사인온 솔루션이 필요합니다. 즉, 사용자가 example1.com 에서 인증하면 example2.com 에서도 자동으로 인증되기를 원합니다 .
OpenId Connect 흐름을 사용하여 example1.com 에서 인증하려는 사용자 가 먼저 인증 서버 (또는 OP
"OpenId Provider") 로 리디렉션 된다는 것을 이해합니다 . 사용자는 해당 서버에서 인증 한 다음 서명 된 JWT 토큰 을 사용하여 원래 example1.com 사이트로 리디렉션합니다 . ( 나중에 실제 JWT 토큰으로 자체적으로 교환 할 수 있는 중간 토큰 을 반환하는 또 다른 흐름이 있다는 것을 이해 하지만 이것이 우리에게 필요하다고 생각하지 않습니다) ...
이제 사용자는 example1.com 으로 돌아와 인증 을 받았습니다 ! 그는 Authentication
헤더에 JWT 토큰을 전달하여 요청을 할 수 있으며 서버는 서명 된 JWT를 확인할 수 있으므로 사용자를 식별 할 수 있습니다. 좋은!
첫 번째 질문 :
JWT 토큰을 클라이언트에 어떻게 저장해야합니까? 다시 말하지만 이것에 대한 많은 정보가 있으며 사람들은 사용 Web Storage
이 오래된 것보다 갈 길이 라는 데 동의하는 것 같습니다 cookies
. 우리는 브라우저가 다시 시작될 그래서 사용을 할 사이에 JWT가 지속되고 싶어 Local Storage
하지 Session Storage
...
이제 사용자는 브라우저를 다시 시작할 수 있으며 JWT 토큰이 만료되지 않는 한 example1.com 에서 계속 인증됩니다 !
또한 example1.com 이 다른 도메인에 Ajax 요청을해야하는 경우 CORS를 구성 하면이를 허용한다는 것을 이해합니다 . 그러나 우리의 주요 사용 사례는 교차 도메인 요청이 아니라 단일 사인온 솔루션을 가지고 있습니다 !
따라서 주요 질문 :
이제 사용자가 example2.com으로 이동하여 이미 가지고있는 JWT 토큰을 사용하여 인증을 받으려면 흐름은 어떻게되어야 할까요? Local Storage
도메인 간 액세스를 허용하지 않는 것 같으므로이 시점에서 브라우저는 example2.com에 요청하기 위해 JWT 토큰을 읽을 수 없습니다 !
해야 :
- 사용자가 다시 인증 서버 로 리디렉션 됩니까? 사용자가 example1.com 에 대해 인증 되면 인증 서버 가 사용자에게 쿠키를 설정했을 수 있으므로 example2.com에 대한이 새로운 인증 요청은 해당 쿠키를 사용하여 사용자가 이미 인증되었음을 확인하고 즉시 example2.com으로 다시 리디렉션 할 수 있습니다. 동일한 JWT 토큰으로?
- 또는 example2.com 의 브라우저 가 인증 서버로 다시 이동하지 않고도 JWT 토큰에 액세스 할 수 있습니까? 나는 거기에 참조 크로스 스토리지 솔루션은 , 그러나 그 널리 사용된다? 교차 도메인 SSO 환경에 제안 된 솔루션입니까?
우리는 화려한 것을 원하지 않습니다. 주로 사용되는 솔루션에 만족할 것입니다!