OpenID Connect(OIDC) ID Token payload email 속성

안녕하세요.

카카오에 OpenID Connect 지원 소식을 듣고 기쁜마음에 AWS Cognito에 통합하기를 시작했습니다.
AWS Cognito 참고: https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-identity-provider.html#cognito-user-pools-oidc-providers

문제는 email 정보가 필수라서 Authorized scope에 "account_email openid"를 주더라도, id token정보 payload에 email이 없어서 Cognito에서 attribute mapping시에 오류가 발생하는것 같습니다.
카카오 ID 토큰 정보: REST API | Kakao Developers 문서

실제 rest api를 통하여 사용자 정보에 email이 포함되지만, id token엔 빠져있는것을 확인했습니다.

구글은 oauth 연동이 잘 되어서 해당 문서를 참고로 추측해보건데, email scope이 주어지는 경우에 email 값이 id token에 추가되는것을 볼 수 있습니다.
구글 id token 참고: OpenID Connect  |  Google Identity  |  Google Developers

혹시 카카오에서도 scope에 따른 속성 값을 추가하는 기능을 구현하려고 계획중이신지 알고싶습니다.
제가 필요한 정보는 id token값에 "email"입니다.

감사합니다.

안녕하세요.

이번에 카카오 OpenID Connect 기능을 오픈하며
AWS와 Azure같은 서비스에서도 원활히 기능 사용할 수 있도록 검토하며 개선하고 있는데요.

아쉽지만, id token에 이메일은 포함하고 있지 않습니다.

/v2/user/me는 계층형 데이터라 OIDC 표준에 맞지 않고,
이메일은 개인정보라 개인정보만 취급하는 OIDC용, 별도 userinfo API를 제공하게되었습니다. 오늘 배포 되었으며,

다음과 같이 사용하실 수 있으며, 디벨로퍼스 Scope설정에 따라 제공 여부 결정됩니다.
참고 부탁드려요~

curl -v -X GET "https://kapi.kakao.com/v1/oidc/userinfo" \
  -H "Authorization: Bearer ${ACCESS_TOKEN}"
HTTP/ 1.1 200 OK
{
“sub”: 123456789,
“name”: “홍길동",
“nickname”: “홍길동",
“picture”: ""
“email”: "sample@sample.com",
“email_verified”: true,
“gender”: “MALE”,
“birthdate”: “1970-01-01”,
“phone_number”: “+82 00-0000-0000”,
“phone_number_verified”: true
}
1개의 좋아요

와우 감사합니다!
해당 경로를 입력하고 email 매핑해서 테스트해봤더니 성공적으로 연동되었습니다. ㅎㅎ
aws cognito OpenID Connect에서 userinfo api가 따로 있었던 이유가 그 이유였군요.
다른 분이 먼저 문의하신 discovery 부분마저 지원되면 자동 셋팅되고 손쉽게 연동해서 쓸 수 있겠네요.

감사합니다!
수고하세요~

1개의 좋아요

@alex.sangjoon.park

안녕하세요.

OIDC Discovery 스펙 배포 되었습니다.

https://kauth.kakao.com/.well-known/openid-configuration

{
    "issuer": "https://kauth.kakao.com",
    "authorization_endpoint": "https://kauth.kakao.com/oauth/authorize",
    "token_endpoint": "https://kauth.kakao.com/oauth/token",
    "userinfo_endpoint": "https://kapi.kakao.com/v1/oidc/userinfo",
    "jwks_uri": "https://kauth.kakao.com/.well-known/jwks.json",
    "subject_types_supported": ["public"],
    "id_token_signing_alg_values_supported": ["RS256"],
    "response_types_supported": ["code"],
    "grant_types_supported": ["authorization_code","refresh_token"],
    "code_challenge_methods_supported": ["S256"],
    "claims_supported": ["iss","aud","sub","auth_time","exp","iat","nonce"]
}
3개의 좋아요