첫 번째 일 - 체크 아웃이 문서에 대해 authentication with OAuth2.0. 배경에 따라 OAuth & OpenID Connect를 읽어야 할 수도 있습니다.
그러나 서명 된 암호화 된 JWT로 서버 측 세션을 유지하려는 경우에도 마찬가지입니다. 당신의 JWT에서 일부 나타내는 적어도, 주장의 몇 가지가 필요합니다
- 세션이 생성 될 때 (IAT) 생성 여전히 세션 유효 (특급)
- 가 얼마나 오래
- 세션, 그건 당신의 인증 시스템 (ISS)이 세션에서 인증
- 즉 사용자 ID 또는 뭔가 (서브)의
나중에 당신이 청중 바람직하게는 비표를 추가 할 수 있습니다. 그러나 당신이 모든 것을 암호화한다면 당신은 또한 넌센스없이 그것을 얻을 수도 있습니다.
일반적으로 the OIDC core spec에있는 제안 된 클레임을 참조하는 것이 좋습니다.
여기 까다로운 부분이 있습니다. 기본적으로 두 가지 옵션이 있습니다. 서버 쪽 문자열을 생성 할 수 있습니다. 문자열은 모든 응용 프로그램에 완전히 불투명 해지고 세션이됩니다. 그런 다음 토큰 인트로 스펙 션 엔드 포인트를 제공하십시오. 여기에서 클라이언트는 위에서 설명한 클레임에이 문자열을 보내고 검색 할 수 있습니다 (세션에 매핑하기로 결정한 추가 모든 항목 포함). 또한이 불투명 한 문자열이 매핑되는 사용자 클레임과 함께 보존되는 저장소가 필요하다는 것을 의미합니다.
다른 방법으로 전체 묶음에 서명하고 (선택적으로 암호화하여) 전선으로 보낼 수도 있습니다. 사용자를 로그 아웃 할 수 있어야하는 경우에만 토큰에 대한 ID가 있어야합니다. 토큰에 서명하는 것은 비공개 키로 이루어지며, 비공개 키는 애플리케이션에서만 알고 있으며 모든 클라이언트의 인증은 애플리케이션이 공유 할 수있는 공개 키에 의해 수행됩니다. JWK 엔드 포인트를 제공합니다.
JWT에 넣은 클레임에 따라 실제로 암호화 할 필요가 없을 수도 있습니다.하지만 그렇다면 암호화를 위해 키를 관리해야합니다.
또한 토큰 인증에서 무엇이 무엇인지에 대한 개요를 보려면 this article을 확인하십시오.
구현시 OAuth2.0/OIDC와 호환 되려고합니까, 아니면 JWS (JWS 및 JWE 사용) 만 사용하여 사용자 세션을 유지하고 있습니까? – ingenious
@ ingenious 사용자들에게 Google과 같은 OAuth2 제공자로 로그인 할 수있는 옵션을 제공하고 싶지만 현재 주요 목표는 사용자 세션을 유지하는 것입니다. –