【问题标题】:What is the purpose of Resource Owner Password Credential Grant Type in OAuth 2.0?OAuth 2.0 中资源所有者密码凭据授予类型的用途是什么?
【发布时间】:2017-01-02 13:52:34
【问题描述】:

根据我的previous question的回答

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

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

【问题讨论】:

    标签: authentication oauth-2.0 authorization


    【解决方案1】:

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

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

    这种资助类型的风险高于其他资助类型 因为它维护了这个协议寻求的密码反模式 避免。

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

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

    【讨论】:

      【解决方案2】:

      在我看来,当我们使用刷新令牌时,资源所有者密码凭证 (ROPC) 的力量得到了适当的利用。

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

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

      【讨论】:

        猜你喜欢
        • 2016-12-31
        • 2014-07-09
        • 2016-03-03
        • 2021-12-05
        • 2021-06-20
        • 2019-12-08
        • 1970-01-01
        • 2019-02-19
        • 1970-01-01
        相关资源
        最近更新 更多