我已经成功地将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 -检查最小范围