OpenID with line.biz - JWT 中的电子邮件,在 userinfo 中丢失

你好,
在过去几天里,我一直在尝试弄清楚 OpenID 如何与 Line 结合使用: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
电子邮件地址不包含在内。只有姓名和 sub 用户 ID。

查看 line 文档下的 userinfo 似乎是正确的。userinfo 不包含电子邮件。

那么,我该如何提取 JWT 响应中的电子邮件地址呢?我尝试使用声明,也许有一种我遗漏的方法可以获取它?或者这会徒劳无功?这让我头晕目眩 :slight_smile:

谢谢!

编辑:
我在 OpenID 插件页面上读到:openid
如果发现文档包含 userinfo_endpoint 参数,则插件将使用该参数来收集用户元数据。如果没有,插件将从令牌端点提供的 id_token(一个 JWT)中提取元数据。

所以一个解决方案是告诉插件不要使用 userinfo 端点?那将是很好的。但我该怎么做?

好的,我明白了。这也许不是最好的解决方案,但因为该插件在使用 JWT 数据时,如果 userinfo 端点不可用,我 fork 了 github 上的插件并在其中进行了设置:

discourse-openid-connect/lib/omniauth_open_id_connect.rb

第 18 行 - 将 option :use_userinfo 设置为 false 而不是 true。

就是这样。

如果能在插件设置中提供一个选项,允许在 userinfo 或 JWT 响应之间进行选择,那就太好了。

1 个赞

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