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

时间:2016-08-26 01:19:01

标签: authentication oauth-2.0 authorization

根据我的previous question

的答案

好的,OAuth 2.0是一种授权协议,但是当您使用ROPC(资源所有者密码凭据)授权类型时,我理解它的方式,您的意思是验证和授权不是吗?

OpenID是否仍适用于ROPC?仍然有点混淆OAuth 2.0 ROPC和OpenID

2 个答案:

答案 0 :(得分:1)

资源所有者密码凭据授予类型会对用户进行身份验证,但这是一种非典型的OAuth 2.0授权类型,仅用于迁移目的,如规范所述:

  

资源所有者密码凭据授予类型通常用于
  遗产或迁移原因。它降低了存储的整体风险   客户端的用户名和密码,但不消除需要   将高权限凭据公开给客户端。

     

此授权类型的风险高于其他授权类型   因为它维护了该协议所寻求的密码反模式   避免。

OpenID Connect不禁止资源所有者密码凭据授权(即使OpenID Connect规范没有在OAuth 2.0之外明确定义它),但是否定了OpenID Connect应该是的联合SSO协议的主要目的。这是因为它将RP锁定为单个身份验证方法,从而向RP公开用户凭据。你的里程数。支持各个提供商可能会有所不同。

另请参阅:Does OpenID Connect support the Resource Owner Password Credentials grant?

答案 1 :(得分:0)

我认为,当我们使用刷新令牌时,资源所有者密码凭证(ROPC)的功能得到了适当利用。

考虑一个用户需要登录的移动应用程序。登录并使用您的clientId,secret,userid和password请求令牌后,通常会获得访问令牌和刷新令牌。访问令牌通常在较短时间内(例如1小时)有效,刷新令牌在较长时间内(例如24小时)有效。 ClientId和Secret存储在应用程序中。 UserId和密码归用户所有,永远不会存储在任何地方。

当用户尝试在1小时后访问该应用程序时,其访问令牌已过期,这意味着在正常情况下,他需要再次登录。 但是,通过交换刷新令牌以及clientId和Secret(不需要userId和密码)来获取新的访问令牌(和新的刷新令牌),我们可以避免再次输入用户ID和密码这一繁琐的任务。新的访问令牌将具有与先前访问令牌相同的所有功能。这意味着只要用户至少在24小时前处于活动状态,就不必再次登录。闲置24小时后,刷新令牌和访问令牌都将过期,并且需要登录才能获取新的访问令牌。