Keycloak 과 기업 인증 · OIDC 토큰과 검증 · 퀴즈
퀴즈: OIDC 토큰
문항 6개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.
JWT 의 헤더와 페이로드는?
- Base64URL 인코딩일 뿐이라 누구나 읽을 수 있다
- 대칭키로 암호화되어 있다
- gzip 으로 압축되어 있다
- 서명 값의 일부로 포함된다
`aud` 클레임 검증을 빠뜨리면?
- 만료 시각을 지난 토큰이 그대로 통과한다
- 같은 인증 서버가 발급한 다른 API 용 토큰이 통과한다
- 공개키가 맞아도 서명 검증이 실패한다
- 리프레시 토큰 교환이 거부되기 시작한다
로컬 JWT 검증이 introspection 보다 나은 점과 그 대가는?
- 검증이 더 정확함 / 매번 느림
- 네트워크 왕복이 없어 빠름 / 취소를 즉시 반영하지 못함
- 탈취에 더 안전함 / 구현이 복잡함
- 표준 방식임 / 캐시가 꼭 필요함
JWT 헤더의 `kid` 가 필요한 이유는?
- 개별 토큰을 구별하는 식별자로 쓰려고
- JWKS 에 공개키가 여럿일 때 어느 것으로 서명했는지 지정하려고
- 검증 결과를 캐시할 때의 키로 쓰려고
- 토큰을 발급한 서버를 식별하려고
ID 토큰으로 API 를 호출하면 안 되는 이유는?
- ID 토큰이 너무 커서 헤더에 안 들어가서
- ID 토큰은 만료가 너무 짧기 때문에
- ID 토큰의 aud 는 클라이언트 앱이지 API 서버가 아니라서
- 액세스 토큰과 서명 방식이 달라서
헤더의 `alg` 를 검증하지 않으면 가능한 공격은?
- none 알고리즘이나 알고리즘 혼동으로 서명 검증을 우회하는 공격
- 가로챈 토큰을 다시 보내는 재생 공격
- 다른 사이트에서 요청을 위조하는 CSRF
- 로그인 전 세션 ID 를 심는 세션 고정