OpenIdConnect 中间件中的 SaveTokens = true 愚蠢吗?

Rol*_*ndG 8 identityserver4

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

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

Sco*_*ady 9

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

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

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

  • 我注意到 Dominick Baier 说(在该视频的 46:10 左右 https://www.youtube.com/watch?v=YXdJ2HLAOdE ... NDC 2017 伦敦 IdentityServer4 演示)设置 SaveTokens = True 不是一个好主意由于其他原因导致 cookie 变得太大。……现在我想起来了……他不是最没有特权的吗? (6认同)
  • 或者您可以在 cookie MW 中实现票证缓存 - 并将所有数据保留在服务器上。 (5认同)