line.biz의 OpenID - JWT에는 이메일이 있지만 userinfo에는 없음

안녕하세요,
최근 며칠 동안 OpenID가 Line과 어떻게 연동되는지 파악하려고 노력하고 있습니다: https://developers.line.biz/en/reference/line-login/ . 그래서 openid 플러그인을 설치했습니다.

Line의 OpenID Connect discovery 문서는 여기에서 찾을 수 있습니다:
https://access.line.me/.well-known/openid-configuration

openid 프로필과 이메일 스코프를 설정했습니다.

line.biz 문서에 따르면 이메일 주소는 토큰에 포함되어 있다고 합니다. 로그를 확인해 보니 지금까지 모든 것이 정상적으로 보입니다.
토큰에서 추출한 JWT 파일에서 이메일 주소를 확인했습니다:
OIDC Log: Verified JWT—
iss: https://access.line.me
sub: Uf3156a0081c563144b3
aud: ‘1657458025’
exp: 1662826967
iat: 1662823367
nonce: f5930aa4c2bd1b3807d
amr:

하지만 https://api.line.me/oauth2/v2.1/userinfo 를 요청한 후
이메일 주소가 포함되어 있지 않았습니다. 이름과 sub UserId만 있었습니다.

line 문서의 userinfo 섹션을 살펴보니 이것이 정상적인 것 같습니다. userinfo에는 이메일이 포함되어 있지 않습니다.

그러면 JWT 응답에서 이메일 주소를 추출하려면 어떻게 해야 할까요? claims를 사용해 보았는데, 제가 놓치고 있는 방법이 있을까요? 아니면 이 접근법은 통하지 않는 것일까요? 머리가 어지럽습니다 :slight_smile:

감사합니다!

수정:
OpenID 플러그인 페이지에서 읽었습니다: openid
발견 문서(discovery document)에 userinfo_endpoint 매개변수가 포함된 경우, 플러그인은 사용자 메타데이터를 수집하기 위해 해당 값을 사용합니다. 그렇지 않은 경우, 플러그인은 토큰 엔드포인트가 제공하는 id_token(JWT)에서 메타데이터를 추출합니다.

따라서 하나의 해결책은 플러그인이 userinfo 엔드포인트를 사용하지 않도록 설정하는 것입니다. 그렇게 할 수 있다면 좋겠습니다. 그런데 그렇게 할 수 있을까요?

네, 알겠습니다. 아마도 최선의 해결책은 아닐 수 있지만, userinfo 엔드포인트가 사용 불가능한 경우 플러그인이 JWT 데이터를 사용하도록 되어 있어서, GitHub에서 플러그인을 포크하고 다음과 같이 설정했습니다:

discourse-openid-connect/lib/omniauth_open_id_connect.rb

18번째 줄 - option :use_userinfo 값을 true 대신 false로 변경했습니다.

이렇게 하면 됩니다.

플러그인 설정에서 userinfo 또는 JWT 응답 중 하나를 선택할 수 있는 옵션이 있으면 좋겠습니다.