2016-06-02 3 views
1

내 프로젝트 중 하나에서 OpenId Connect for SSO를 구현하려고합니다. 그러나 저는 리소스 서버 측에서 OpenId JWT 토큰의 상태를 검증하여 stateless로 만들려는 경우에 조금 어려움을 겪고 있습니다. 사용자가 로그 아웃하려고하면 Authorization Server는 사용자 로그 아웃에 대해 알게됩니다 (따라서 OpenId Connect 세션 관리 스펙). 그러나 Authorization Server는 사용자의 토큰이 더 이상 유효하지 않다는 것을 Resource Server에 알려야합니까? 로그 아웃 후 사용자가 자신의 OpenId 토큰을 사용하여 Resource Server로 이동하여 액세스 할 수 있습니다. 그건 이상하고 인터넷에서 어떤 해결책도 찾을 수 없었습니다. 중앙 로그 아웃으로 무국적 보안을 구성하도록 도와주세요.OpenId 무소속 SSO 용 로그 아웃 연결

+0

관련 주제가 두 개 있습니다. http://stackoverflow.com/questions/27355808/openid-connect-with-stateless-jwt-tokens 및 http://stackoverflow.com/questions/32533285/openid-connection- session-management-can-id-token-be-revoked하지만 그들 중 누구도 내 질문에 답하지 못합니다. – Alex

+0

id_token 또는 액세스 토큰은 이미 발견 된 답변과 같이 수명이 짧아야합니다. http://stackoverflow.com/a/32536038/676335 수명이 짧은 access_token을 사용하여 프로젝트를 갱신하려면 refresh_token을 호출해야하며, 그러면 권한 서 v는 로그 아웃 된 사용자에 대해 새 access_token을 제공하기를 거부 할 수 있습니다. – fiddur

+0

응답 해 주셔서 감사합니다. 안타깝게도 암시 적 흐름입니다 (Relying Party는 AngularJS 응용 프로그램입니다). 따라서 OpenId Connect 사양. 이 흐름에서 새로 고침 토큰은 안전하지 않으므로 전혀 사용하지 않아야합니다. 이것이이 문제를 다루는 해답이없는 이유입니다. 어떤 아이디어? – Alex

답변

0

전달 된 액세스 토큰이 유효한지 여부를 확인하려면 Token Introspection 끝점을 사용할 수 있습니다. 리소스 서버는 OP의 인트로 스펙 션 엔드 포인트를 호출하여 리소스에 액세스하기 전에 토큰의 유효성을 검사 할 수 있습니다. 효과적으로 토큰의 유효성을 검증하기 위해, 리소스 서버는해야

  • 영업 이익에 등록 된 클라이언트 수와에 전달 범위 및
  • 을 검증 SPA 응용 프로그램 (암시 적 흐름 응용 프로그램)과 동일/유사한 범위를 인트로 스펙 션 엔드 포인트에 액세스하십시오.

자세한 내용은 위의 링크 된 스펙에서 자세히 설명합니다.

P. 앞에서 쓴 answer에는 다른 관련 참조가 있습니다.

+0

감사합니다. 지금은 "플랜 B"입니다. 그러나 Token Introspection 엔드 포인트에서 토큰을 검사하기 시작하면 발행 된 토큰에 대한 정보를 한 곳에서 저장해야한다는 의미입니다. 즉, 시스템은 상태 저장이되지만 상태는 유지되지 않습니다. 이 시스템을 확장 가능하게 만들려면 탈퇴하고 싶은 사용자 세션을 공유해야합니다. 또한, Relaying Party (RP)에서 Resource Server (RS) 로의 각 요청에 대해 RS는 트래픽에 상당한 영향을 미칠 OP에 또 다른 요청을 보내야합니다. 당신의 생각은 시스템을 stateful하게 만드는 것이지만 JWT validation이나 다른 접근법을 사용하여 stateless로 만들고 싶습니다. – Alex

+0

신사 숙녀 여러분, 어떤 아이디어입니까? SSO를 무국적으로 만들 수 있습니까? – Alex

+0

여기에서 귀하의 요구 사항을 잘못 이해했을 수 있습니다. 하지만 시나리오에서 JWT 액세스 토큰을 상태 비 저장 토큰으로 사용할 수 없습니까? 이 링크 - http://nordicapis.com/how-to-control-user-identity-within-microservices/에는 국적이없는 토큰 교환에 대한 정보가 있습니다. 그것이 도움이되기를 바랍니다 – Karthik