该医院对以下OAuth要求意味着什么?

时间:2016-10-26 08:58:48

标签: oauth oauth-2.0

我们有一家医院作为希望开发应用程序的客户。这个应用程序可能会使用各种验证方法,其中OAuth2就是其中之一。他们有一份要求清单,其中有一种困惑我:

  

对于每个用户会话,应用程序都需要生成不可预测的内容   "状态参数"。该应用程序需要验证"状态值"对于   发送到重定向URL的每个请求; "州"需要   记录所有授权请求;和#34;州价值"具有   用它收到的访问令牌进行验证。

虽然他们没有特别提到它,但我想这会谈到OAuth。我有OAuth2的一些经验。我知道访问令牌和刷新令牌是什么。但这个故事在我头顶。他们在谈论什么样的"state parameter""state value"

有人可以对这个故事有所了解吗?

2 个答案:

答案 0 :(得分:2)

这是关于OAuth 2.0在授权请求中定义的state参数,作为RECOMMENDED参数(https://tools.ietf.org/html/rfc6749#section-4.1.1),用于防止跨站点请求伪造以及关联请求和响应:

  

状态

     RECOMMENDED.  An opaque value used by the client to maintain
     state between the request and callback.  The authorization
     server includes this value when redirecting the user-agent back
     to the client.  The parameter SHOULD be used for preventing
     cross-site request forgery as described in Section 10.12.

答案 1 :(得分:1)

我相信他们选择用自己的语言编写OAuth 2.0客户端应用程序要求。规范声明:

  

客户端必须为其重定向URI实现CSRF保护。这通常通过要求发送到重定向URI端点的任何请求包括将请求绑定到用户代理的认证状态的值(例如,用于认证用户代理的会话cookie的散列)来实现。 客户端应该在发出授权请求时使用“state”请求参数将此值传递给授权服务器。

(强调我的,阅读section 10.12 of the specification中的整个故事)

有关如何使用state参数的更多分步指导方法,您可以参考Using the State Parameter。此页面提到了Auth0,但对于任何其他符合OAuth 2.0的服务器,该过程应该相同。另请注意,具体步骤假设基于浏览器的应用程序,因此将不可预测的状态参数存储在Web存储中。其他类型的客户将使用其他商店,但原则保持不变。