2.0 KiB
2.0 KiB
Bearer JWT가 검증과 역할 변환을 지나 principal이 된다
Alternative text
Bearer JWT 입력이 JwtDecoder, issuer·시간 검증, audience 검증, role converter를 거쳐 authenticated principal이 되는 검증 사슬.
Long description
왼쪽의 raw Bearer JWT가 NimbusJwtDecoder에서 JWK 서명을 확인한 뒤 issuer와 timestamp validator, 프로젝트의 AudienceValidator를 통과해 validated Jwt가 된다. 이어서 KeycloakRealmRoleConverter가 realm_access.roles를 ROLE_* authority로 바꾸고 authenticated principal이 만들어진다.
Elements and evidence
- Bearer JWT (data): Resource Server가 Authorization header에서 받은 raw Bearer JWT. Evidence: L354–L359.
- NimbusJwtDecoder (service): JWK를 이용해 JWT 서명을 검증하는 decoder. Evidence: L359–L360.
- Issuer · Time validators (service): Expected issuer와 timestamp 조건을 확인하는 default validators. Evidence: L361–L361.
- AudienceValidator (service): keycloak-pattern-api audience 포함 여부를 확인하는 project validator. Evidence: L362–L370.
- Validated Jwt (data): 서명, issuer·시간, audience 검증을 통과한 Jwt. Evidence: L363–L363.
- Realm role converter (service): realm_access.roles 문자열에 ROLE_ prefix를 붙여 authority로 변환한다. Evidence: L364–L370.
- Authenticated principal (actor): 검증된 JWT와 ROLE_* authorities를 가진 인증 결과. Evidence: L365–L365.
Relationships
- Bearer JWT → NimbusJwtDecoder: decode. Evidence: L354–L360.
- NimbusJwtDecoder → Issuer · Time validators: signature ok. Evidence: L360–L361.
- Issuer · Time validators → AudienceValidator: claims. Evidence: L361–L362.
- AudienceValidator → Validated Jwt: valid audience. Evidence: L362–L363.
- Validated Jwt → Realm role converter: realm roles. Evidence: L363–L364.
- Realm role converter → Authenticated principal: authorities. Evidence: L364–L365.