为公共客户端使用 cookie 保护 Web API 的陷阱

Posted

技术标签:

【中文标题】为公共客户端使用 cookie 保护 Web API 的陷阱【英文标题】:Pitfalls of securing web APIs with cookie for public clients 【发布时间】:2021-09-13 11:29:28 【问题描述】:

我正在为公共 JS 客户端在我的 asp.net core rest web api 中实现 oidc/pkce 隐式授权流程。

我几乎明白这是如何工作的,但我无法完全理解另一种方法的最大问题是什么 - 如果我要使用 ASP Identity 提供的默认 cookie(或会话)身份验证。

我发现很难用谷歌搜索这个主题。能否请教一些文章的提示/指点?

【问题讨论】:

【参考方案1】:

仍然使用普通的 cookie 身份验证,即使您使用基于令牌的身份验证。

OpenIDConnect 客户端收到最终令牌后,默认会创建一个包含用户详细信息和声明的经典会话令牌。或者,您还可以在此 cookie 中存储 ID/访问/刷新令牌。

cookie 已加密,因此不会被篡改或黑客攻击。

使用 OpenIDConnect 的好处是当您涉及多个客户端和/或 API 并且您需要一种标准化的方式来处理此问题时。对许多不同的服务使用普通的 cookie 方法很难保证安全。

【讨论】:

以上是关于为公共客户端使用 cookie 保护 Web API 的陷阱的主要内容,如果未能解决你的问题,请参考以下文章

将 cookie-config 设置为 httpOnly 并在 web.xml 中保护后无法读取 JSESSIONID cookie

如何保护 Web 应用程序免受 cookie 窃取攻击?

JSON Web Token 如何比 cookie/session 更安全?

在反应中使用 cookie 的客户端身份验证和受保护的路由

如何保护 Web api 以验证客户端应用程序生成的 openid 令牌?

MVC .NET cookie 身份验证系统通过令牌身份验证访问 Web Api