什么是 id_token google oauth

Posted

技术标签:

【中文标题】什么是 id_token google oauth【英文标题】:what is id_token google oauth 【发布时间】:2012-12-02 06:12:54 【问题描述】:

当我尝试对 googleapi 执行 oauth2 时,我刚刚得到以下结果。只有一件事:我在documentation 中找不到 id_token 的用途。


  "access_token": "xxxx",
  "token_type": "Bearer",
  "expires_in": 3600,
  "id_token": "veryverylongstring",
  "refresh_token": "abcdefg"

【问题讨论】:

【参考方案1】:

id_token 是 JSON Web 令牌 (JWT)。如果您对其进行解码,您会看到它包含多个断言,包括用户的 ID。详情请见this answer。

【讨论】:

是否有任何其他 oauth 提供者(facebook、twitter 等)支持这样的东西?我想保存服务器->提供者往返。【参考方案2】:

id_token 用于 OpenID Connect 协议,在该协议中用户被认证和授权。 (有一个重要的distinction between authentication and authorization。)你会得到id_tokenaccess_token

id_token 值包含有关用户身份验证的信息。 ID 令牌类似于身份卡的概念,采用标准 JWT 格式,由 OpenID 提供者 (OIDP) 签名。要获得一个,客户端需要通过身份验证请求将用户发送到他们的 OIDP。

ID 令牌的特点:

    断言用户的身份,在 OpenID (sub) 中称为主题。 指定颁发机构 (iss)。 为特定受众(即客户 (aud))生成。 可能包含一个随机数(nonce)。 可以根据强度 (acr) 指定何时 (auth_time) 以及如何对用户进行身份验证。 有问题 (iat) 和过期时间 (exp)。 可能包含有关主题的其他请求详细信息,例如姓名和电子邮件地址。 经过数字签名,因此可以由预期验证 收件人。可以选择对机密性进行加密。

ID 令牌语句或声明被打包在一个简单的 JSON 对象中:


  "sub"       : "alice",
  "iss"       : "https://openid.c2id.com",
  "aud"       : "client-12345",
  "nonce"     : "n-0S6_WzA2Mj",
  "auth_time" : 1311280969,
  "acr"       : "c2id.loa.hisec",
  "iat"       : 1311280970,
  "exp"       : 1311281970

【讨论】:

表述清晰,例证充分,因此 +1。我还冒昧地对其进行了一些编辑。希望你不要介意。 酷。谢谢。

以上是关于什么是 id_token google oauth的主要内容,如果未能解决你的问题,请参考以下文章

如何使用适用于 Web 服务器应用程序的 Google OAuth 2.0 向 Google ID_Token 添加自定义声明

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

OAuth 2 access_token vs OpenId Connect id_token

谷歌 oauth2 id_token 与 refresh_token

如何在 Postman 的 Oauth2 中使用 id_token 而不是 access_token?

使用带有 OpenID Connect 提供程序的 spring-security-oauth2 客户端时如何访问“id_token”和“refresh_token”?