如何在IdentityServer4中存储和传输现时和状态参数?

时间:2018-11-11 07:55:24

标签: oauth-2.0 identityserver4 openid-connect

我已阅读Here关于 state nonce 参数之间的差异以及据我了解生成了 state 参数的信息由 Authentication 服务器(身份服务器)提供,并由客户端用于阻止CSRF攻击,而 nonce 参数由客户端生成,然后Authentication服务器会将其包含在令牌,客户端将使用它来检查令牌的有效性。

我的第一个问题是:在使用隐式授予类型时,对于IdentityServer4,上述流程是否正确?

我的第二个问题: nonce 参数存储在用户代理(浏览器)上的什么位置,客户端如何生成和传输它?

我的第三个问题:客户如何交叉检查 state 参数是否有效?

1 个答案:

答案 0 :(得分:1)

不,状态立即均由客户端生成。同样,它们也由客户验证。

状态可阻止CSRF攻击。授权服务器将包含状态,以便可以验证来自客户端的原始请求的授权响应。类似地,立即由客户端生成。授权服务器只需将其包含在令牌中即可进行验证。

在使用隐式授予类型时,对于IdentityServer4,上述流程是否正确?

identityServer4必须支持在适当的响应中包括状态和随机数。我相信是的。

随机数参数存储在用户代理(浏览器)上的什么位置,客户端如何生成和传输它?

这将取决于客户端的实现。 OIDC协议提供了guide on nonce implementation

  

为Web服务器客户端实现此目的的一种方法是将加密的随机值存储为HttpOnly会话cookie,并使用该值的加密哈希作为随机数参数

客户端如何交叉检查状态参数是否有效?

客户端收到授权响应时,必须验证响应URL的查询参数(或片段)中状态参数的正确性。然后,它必须将值与其生成的原始值进行比较。