OpenId 连接和 OAuth 2.0 密码授予 - 有啥区别?

Posted

技术标签:

【中文标题】OpenId 连接和 OAuth 2.0 密码授予 - 有啥区别?【英文标题】:OpenId connect and OAuth 2.0 password grant - what is the difference?OpenId 连接和 OAuth 2.0 密码授予 - 有什么区别? 【发布时间】:2021-02-26 19:15:31 【问题描述】:

我了解 OpenId 连接是建立在 OAuth 2.0 之上的用于身份验证的层。 OAuth2.0 基本上解决了授权问题,而 OpenId connect 在 OAuth2.0 之上构建了身份验证框架(通过显式 ID_token)。但是我对 OAuth 2.0 密码授权类型(我不是在询问其他授权类型,请注意)和 OpenId 连接之间的区别有点困惑。谁能解释一下?用例有什么不同吗?提前致谢。

【问题讨论】:

看到这个问题What's the difference between OpenID and OAuth?A 这不是我问的。我正在寻找 OAuth 授权类型(密码授权)和 OpenId 之间的确切区别。我了解 OAuth 和 OpenId 之间的区别。谢谢。 【参考方案1】:

此引用基于from here,它可能会对您有所帮助

众所周知,授权代码授予和隐式授予是典型的三足流程,包括客户端、授权服务器和用户之间的交互。虽然资源所有者密码凭据授予和客户端凭据授予是两条腿的,这意味着客户端使用预授权范围,因此无需与用户交互,无需在典型流程中执行其中一条腿。

【讨论】:

是的,这有帮助。我想现在我明白了.. 谢谢! 密码授予使用了两条腿的流程并且只获取访问令牌。我猜没有ID_token。在 OpenId Connect 中,ID_token 是必须的。这有区别吗?

以上是关于OpenId 连接和 OAuth 2.0 密码授予 - 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

“错误:” “Unsupported_grant_type” 使用 OAuth 2.0,Owin。密码授予和授权授予

OAuth 2.0 中资源所有者密码凭据授予类型的用途是啥?

OpenID Connect 是不是支持资源所有者密码凭证授予?

Spring Security OAuth 2.0 - 授权代码授予始终需要客户端密码

OAuth 2.0“状态”和OpenID“nonce”参数之间的区别?为啥状态不能被重用?

HTTP 基本身份验证和 OAuth 2.0 相同吗?