line.bizでのOpenID - JWT内のメールアドレスがuserinfoにない

こんにちは、
ここ数日、Lineとの連携でOpenIDがどのように機能するかを調べています:https://developers.line.biz/en/reference/line-login/ 。そのため、openid をインストールしました。

LineのOpenID Connectディスカバリードキュメントはここにあります:
https://access.line.me/.well-known/openid-configuration

openidプロファイルとメールのスコープを設定しました。

line.bizによると、メールアドレスはトークンに含まれています。そして、ログを見るとすべて順調です。
トークンから抽出したJWTファイルにメールアドレスが含まれていました。
例:
OIDCログ:検証済み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 をリクエストした後、メールアドレスは含まれていませんでした。含まれているのは名前とサブUserIdのみです。

lineのドキュメントのuserinfoを見ると、これは正しいようです。userinfoにはメールアドレスは含まれていません。

では、JWTレスポンスでメールアドレスを抽出するために何ができるでしょうか?クレームを試してみましたが、何か見落としている方法があるのでしょうか?それとも無駄なことでしょうか?目が回ってきました :slight_smile:

ありがとうございます!

編集:
OpenIDプラグインのページ:openid を読みました。
ディスカバリードキュメントに userinfo_endpoint パラメータが含まれている場合、プラグインはそのエンドポイントを使用してユーザーメタデータを収集します。含まれていない場合、プラグインはトークンエンドポイントによって提供される id_token(JWT)からメタデータを抽出します。

したがって、解決策の1つは、プラグインにuserinfoエンドポイントを使用しないように指示することでしょうか?それは素晴らしいことです。しかし、それは可能でしょうか?

わかりました。おそらく最善の解決策ではありませんが、プラグインがユーザー情報エンドポイントが利用できない場合にJWTデータを使用するため、GitHubでプラグインをフォークし、次のように設定しました。

discourse-openid-connect/lib/omniauth_open_id_connect.rb

18行目 - option :use_userinfotrue から false に変更しました。

これで完了です。

プラグインの設定で、ユーザー情報またはJWT応答を選択できるオプションがあると便利です。

「いいね!」 1

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.