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



我已经成功地将PKCE认证工作用于SSO到我们的应用程序中,OneLogin作为身份提供者-但是我无法看到我们将在哪里或如何检索登录用户的用户名。

我发现有API的方法来获得这个,但这似乎需要另一个访问令牌来认证进入API,这似乎有点愚蠢-有没有一种方法可以获得用户的电子邮件地址,而不必重新认证?

所以我用这些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

这似乎与令牌作为承载授权头一起工作。同样的方法在onelogin中不起作用。

感谢

答案是使用这个URL和令牌作为承载符

https://domain/oidc/2/me

返回的json包含"email"包含登录用户的电子邮件地址的属性。

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

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

参考:

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

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

最新更新