SaveTokens = OpenIdConnect中间件中的愚蠢?

时间:2017-01-30 20:22:21

标签: identityserver4

在获取具有混合或授权代码流的访问令牌以使其远离浏览器之后,在(ASP.NET Core)OpenIdConnect中间件中使用SaveTokens = true似乎很愚蠢,以便它们最终再次进入浏览器。

使用中间件存储访问令牌的更好方法是什么?

2 个答案:

答案 0 :(得分:1)

使用SaveTokens中间件将令牌中的令牌与用户声明一起存储。虽然此cookie可能存储在浏览器中,但它受到保护,因此只有该应用程序才能读取它。浏览器或客户端代码无法读取cookie。所以他们并没有真正在浏览器中结束(就像他们使用隐式授权类型一样)。

否则,您需要做的是创建一个令牌存储,通过经过身份验证的用户或会话查找令牌。

ASP.NET Core Identity有一个表,用于为您可以查看的用户存储令牌,但这意味着您的所有应用程序都必须与ASP.NET Identity库集成,任何令牌都可以访问应用

答案 1 :(得分:0)

与隐式流程相比,有几个关键区别,这使得此流程更加安全:

  1. 它们最终以Secure and HttpOnly cookie的形式出现在浏览器中,这意味着它们是:

    1. 仅通过HTTPS上的加密请求发送。
    2. JavaScript无法访问它们。
  2. cookie也被加密,并且只能由ASP.NET Core服务器应用读取。因此,即使攻击者以某种方式获得了它们,要解密它们,也需要访问服务器或ASP.NET Core的数据保护提供程序使用的加密密钥。