JWS (JWT) 헤더가있는 JWKS 키 저장소에서 서명 확인 키를 선택하는 표준 방법이 있습니까?JWT 헤더가있는 JWKS에서 키 선택
목표는 OpenID Connect ID 토큰 유효성 검사 라이브러리를 구현하는 것입니다. 유연한 계획을 세우려하고 있지만 다른 구성을 예상하고 있지만 키 선택이 IdP에만 관련된 것이라면 요점이 있는지 확실하지 않습니다.
내 현재의 알고리즘은 JWKS 안내 및 필터링 : JWK가있는 경우 동일하지 "SIG"
- 필드를 "사용" "key_ops는"JWK 그것이 JWS 헤더 값과 다른 경우 "ALG"필드가 JWK하지 않는 또는 (주 다른 값이있는 경우
- JWS 헤더는 "아이"필드가있는 경우 거부 거부 할 경우
- 를 "확인"이 포함되어 있지 않습니다 역 논리)
- 이 단계에서 정확히 하나의 JWK가 남아 있다면 그 중 하나를 사용합니다. 그렇지 않으면 실패입니다.
이 방법이 "충분히 표준"입니까?
=== 내가 오픈 ID를 연결 핵심 사양 말의 Section 10.1이 있음을 발견
편집 === :
RSA 또는 ECDSA 서명, 호세 헤더의 ALG 헤더 매개 변수 값을 사용하여
JSON Web Algorithms [JWA]에 정의 된대로 적절한 알고리즘으로 설정되어야합니다. 콘텐츠에 서명하는 데 사용되는 개인 키는 발신자가 JWK Set 문서에 발행 한 서명 확인에 사용 된 공개 키와 연결되어야합니다 (MUST). 참조 된 JWK Set 문서에 여러 개의 키가있는 경우, JOSE Header에 아이 값을 제공해야합니다 (MUST). 각 키의 주요 용도는 서명을 지원해야합니다 (MUST).
JWK "use"는 필수이므로 "sig"로 안전하게 지정할 수 있습니다.
JWKS에 키가 둘 이상인 경우 JWT "kid"은 필수 항목입니다. 이는 (간접적으로는 있지만)이 경우 JWT "어린이"와 "JWK"어린이가 일치해야한다고 제안합니다. "꼬마"는 고유 할 필요가 없으므로 추가 규칙이 필요합니다.
4. 아마도 : "JWS 헤더에"kid "필드가 있으면 JWK가 없거나 다른 값을 갖습니다 (역 논리에 유의하십시오)."JWS-> JWK –
좋은 점, 건배! – maciekszajna