Onelogin - 如何在成功登录 PKCE 后获取用户 ID 或电子邮件地址?

Onelogin - how to get the userid or email address after a successful PKCE login?

我已经设法将适用于 SSO 的 PKCE 身份验证用于我们的应用程序,并将 OneLogin 作为身份提供者 - 但是我看不到我们将在哪里或如何检索已登录用户的用户名。

我发现有 API 种获取方法,但这似乎需要另一个访问令牌来验证进入 API,这似乎有点愚蠢 - 没有办法吗无需 re-authenticate ?

即可获取用户的电子邮件地址

所以我正在使用这些 restful 调用登录:

https://domain/oidc/2/auth?client_id=xxx&redirect_uri=<redirect uri>&response_type=code&scope=openid

然后

https://domain/oidc/2/token?...
            "grant_type", "authorization_code",
            "code", code,
            "client_id", client_id,
            "redirect_uri", redir,
            "code_verifier", pkce_code_verifier

这很好用,但现在对于第 3 步,我需要用户的电子邮件地址来识别他们 - 我如何获得它?

在 OKTA 中,我们额外调用了

https://domain/oauth2/default/v1/userinfo

这似乎与作为不记名授权的令牌一起使用 header。同样的想法在onelogin中行不通。

谢谢

答案是使用这个 URL 和令牌作为持有者

https://domain/oidc/2/me

然后返回的 json 包含包含登录用户电子邮件地址的“电子邮件”属性。

使用 'openid' 范围,您应该在 id_token(而不是 access_token)中收到电子邮件。除了电子邮件,它还提供 preferred_username 和姓名作为基本用户信息。

如果您需要有关用户的其他信息,您可以添加 'profile' 范围或调用 https://subdomain.onelogin.com/oidc/2/me API。此 API 将需要 access_token 作为 Bearer 令牌。

参考:

https://developers.onelogin.com/openid-connect/api/user-info

https://developers.onelogin.com/openid-connect/scopes - 检查最小要求范围