OpenID 只是 OAuth 的范围?

问题描述 投票:0回答:1

我读了很多关于 OpenID 与 OAuth 2.0 的答案。许多 bla bla 喜欢 - OpenId 关于身份验证,OAuth 关于授权。但我看到的是—— 使用 OAuth 来获取用户名和电子邮件,您必须通过范围向用户询问基本信息,获取访问令牌,然后使用访问令牌前往提供商并获取用户名和电子邮件。 使用 OpenID,您只需要使用 ID 令牌获取访问令牌,现在您不需要向提供商发出另一个请求来获取用户名和电子邮件,您只需解密 JWT ID 令牌即可。 这就是我所看到的所有差异。请各位聪明人告诉我,我说得对不对。 我检查了 Google 和 GitHub 有关他们的 OpenID 实现的信息: Google 刚刚添加了范围“openid”,因此 OAuth 2.0 代码没有任何变化,您只需添加新范围,作为回报,您不仅会获得访问令牌,还会获得 ID 令牌。 GitHub,也许我眼瞎了,没有看到任何关于OpenID的信息。有关 GitHub OpenID 的所有准则与 OAuth 相同。我没有亲自测试它,但我假设您只需要执行没有范围的 OAuth,您就会获得令牌 ID。 微软看起来也做了与谷歌相同的事情,具有 openid 范围。

oauth openid
1个回答
0
投票

根据 OpenID Connect 规范:

  • OpenID Connect 1.0 是 OAuth 2.0 协议之上的简单身份层。

  • 该规范定义了核心 OpenID Connect 功能: 身份验证构建在 OAuth 2.0 之上,并使用声明来传达有关最终用户的信息。

  • OpenID Connect 对 OAuth 2.0 进行的主要扩展是 ID 令牌数据结构,以便对最终用户进行身份验证。

  • 我们使用 JSON Web 令牌

因此,OIDC 只是 OAuth 之上的一个薄层。 ID 令牌的用途通常是创建本地用户会话,此后 ID 令牌通常没有任何用途。它的生命周期通常很短,比如 5 分钟。

当您使用 OIDC 时,

openid 范围是必需的范围,它基本上为您提供了 sub 声明。就是这样。

© www.soinside.com 2019 - 2024. All rights reserved.