OpenID Connect是否支持资源所有者密码凭据授权?

21
我之前一直使用OAuth资源所有者凭证流来进行授权。
但现在我想考虑使用openid connect代替它,用于认证和授权,并想知道资源所有者凭证流是否在openid connect中得到支持。
3个回答

23

是的,OpenID Connect支持所有OAuth 2.0授权类型,包括资源所有者密码凭证授权和客户端凭证授权。

众所周知,授权码授权和隐式授权是典型的3-legged流程,包括客户端、授权服务器和用户之间的交互。而资源所有者密码凭证授权和客户端凭证授权是2-legged流程,这意味着客户端使用预先授权的范围,因此无需与用户进行交互,从而消除了典型流程中其中一条腿的需要。

这里提供一个参考:配置OpenID Connect提供程序以启用2-legged OAuth请求


你知道为什么吗?有其他的选择吗? - rinat.io
它是否在响应中返回ID令牌?因为在我的情况下它没有返回。 - Kishan Vaishnav
不,它不会。 - Kishan Vaishnav
您的网址无效。顺便说一句,显示未找到内容。 - The 0bserver

10
答案是肯定的。OpenID Connect虽然规范中没有明确表述,但支持所有OAuth 2.0流程,因为它是OAuth 2.0的扩展。
规范讨论了涉及浏览器重定向的流程,因为它们更常见、更安全,且资源所有者凭据仅支持用户名和密码,而且只在OAuth 2规范中用于向后兼容。
在真正的SSO系统中,您希望抽象出在OP / IDP上验证用户的方法。涉及浏览器是一种做法。在资源所有者密码凭证流程中,客户端“看到”资源所有者的用户名/密码,与其他流程不同,这违背了联合SSO协议(如OpenID Connect)的主要目的,即认证机制和凭证应独立于客户端/应用程序。因此,在OpenID Connect中使用ROPC的情况并不常见,除了可能在企业内部使用情况下会有例外。
但具体的OP / AS软件和客户端库支持方面可能会有所不同。

1
另一种看待这个问题的方式是:使用Resource Owner Password Credentials授权类型与OpenID Connect在功能上等同于使用LDAP绑定+属性查询;后者可能更普遍地支持跨平台。 - Hans Z.

4
是的。我之前也曾经寻找过同样的答案。根据OpenId Connect规范,建议使用授权码(authorization code)和隐式(implicit)授权类型进行OpenId Connect请求。但是并未提到其他授权类型不能使用。因此您可以使用任何其他授权类型进行OpenId Connect身份验证请求。有一些来自openid connect小组的邮件讨论了这个问题。请从这里找到它们。如果您的OAuth2授权服务器支持它,我认为使用它是可以的。据我所知,大多数授权服务器都支持它,例如这里

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接