ID 토큰은 제 3자인 카카오 인증 서버에서 발급하므로, 서비스 보안을 위해 유효한 ID 토큰인지 검증하고 사용해야 합니다.
JWT 서명 검증은 지원하는 라이브러리를 사용하거나 RFC7516 규격에 따라 직접 구현하시어 검증할 수 있습니다.
이 글은 auth0 java-jwt 라이브러리를 사용한 예제를 담고 있습니다.
Gradle
gradle에 아래 의존 라이브러리를 추가 합니다.
implementation 'com.auth0:java-jwt:3.19.0'
implementation 'com.auth0:jwks-rsa:0.21.1'
구현코드
String idToken = "...";
// 1. 검증없이 디코딩
DecodedJWT jwtOrigin = JWT.decode(idToken);
// 2. 공개키 프로바이더 준비
JwkProvider provider = new JwkProviderBuilder("https://kauth.kakao.com")
.cached(10, 7, TimeUnit.DAYS) // 7일간 최대 10개 캐시
.build();
Jwk jwk = provider.get(jwtOrigin.getKeyId());
// 3. 검증 및 디코딩
Algorithm algorithm = Algorithm.RSA256((RSAPublicKey) jwk.getPublicKey(), null);
JWTVerifier verifier = JWT.require(algorithm)
.build();
DecodedJWT jwt = verifier.verify(idToken);
주의! 공개키 프로바이더는 반드시 싱글톤 객채로 구현 하십시오.
예제와 같이 함수 내에 구현 시, 매번 kakao에 접속해야 하는 성능이슈가 발생하며 카카오로 부터 요청이 차단될수도 있습니다.
'언어, 환경별 예제 코드' 카테고리의 다른 글
iOS 카카오 SDK 사용, 공식 예제 실행해보기 (0) | 2022.11.17 |
---|---|
Flutter 카카오 SDK 사용, 공식 예제 실행해보기 (0) | 2022.11.11 |
iOS, 웹뷰에서 JS SDK 방식 로그인 간단히 테스트 (0) | 2022.04.05 |
Android Kakao SDK v2 Java로 사용하기 - 카카오 링크 (1) | 2021.11.29 |
Android Kakao SDK v2 Java로 사용하기 - 카카오 로그인 (2) | 2021.11.29 |
댓글