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 - 检查最小要求范围
我已经设法将适用于 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 - 检查最小要求范围