gpt4 book ai didi

oauth-2.0 - 是否可以从 Google 获取 id_token 中的个人资料信息?

转载 作者:行者123 更新时间:2023-12-03 22:05:35 25 4
gpt4 key购买 nike

使用 Google 的 OpenIDConnect 身份验证系统时,可以指定 emailprofile或两者都在 scope范围。如果您要求 email范围内,“email”和“email_verified”声明将包含在 id_token作为成功的 OAuth2 身份验证 session 的一部分返回。

这是一个示例 from Google's documentation:

An ID token's payload

An ID token is a JSON object containing a set of name/value pairs. Here’s an example, formatted for readability:


{"iss":"accounts.google.com", 
"at_hash":"HK6E_P6Dh8Y93mRNtsDB1Q",
"email_verified":"true",
"sub":"10769150350006150715113082367",
"azp":"1234987819200.apps.googleusercontent.com",
"email":"jsmith@example.com",
"aud":"1234987819200.apps.googleusercontent.com",
"iat":1353601026,
"exp":1353604926,
"hd":"example.com"
}

但是,请求 profile范围似乎对 id_token 的内容没有任何影响。为了检索配置文件信息,您必须创建 separate HTTP request to a distinct endpoint (使用您刚刚收到的 access_token 进行身份验证)以获取看起来非常相似但包含更多信息的文档:
{
"kind": "plus#personOpenIdConnect",
"gender": string,
"sub": string,
"name": string,
"given_name": string,
"family_name": string,
"profile": string,
"picture": string,
"email": string,
"email_verified": "true",
"locale": string,
"hd": string
}

理想情况下,我希望获得包含在 id_token JWT 中的配置文件信息(实际上只是 name ),而不必进行单独的调用。有没有办法指定其他字段并将它们作为声明包含在 id_token 中?如果不是,为什么是 email特殊处理并在 id_token 中返回?

最佳答案

从今天开始,您将在 token 端点交换代码时获得配置文件信息(即使用“代码流”)。

使用方法:添加 profile范围到您的请求,并确保您使用的是符合 OpenID Connect 的端点(在 https://accounts.google.com/.well-known/openid-configuration 中列出的端点)。

查找诸如 name 之类的声明和 picture在这些 ID token 响应中。和以前一样,如果 email范围在您的请求中,ID token 将包含与电子邮件相关的声明。

当您刷新访问 token 时,与新访问 token 一起返回的 ID token 经常也会包含这些额外的声明。您可以检查这些字段,如果存在(并且与您存储的不同),请更新您的用户配置文件。这对于检测姓名或电子邮件地址更改很有用。

关于oauth-2.0 - 是否可以从 Google 获取 id_token 中的个人资料信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32175174/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com