【发布时间】:2020-04-17 20:36:55
【问题描述】:
由于本地存储和会话存储都可以通过 JavaScript 访问,因此最好不要在其中任何一个中存储身份验证 JWT 以避免 XSS 攻击。
由于 OpenID 连接 2.0 是在单独的域上执行的,我们如何设置包含经过身份验证的 JWT 的服务器端 HTTP 唯一 cookie?
我的猜测是这样的:
- 用户访问您的网站,然后点击登录。
- 用户被重定向到第 3 方 OpenID connect 2.0 提供商。
- 用户登录并现在被重定向到您选择的路径 www.example.com/myredirectlogin。
- 然后,当重定向到达我的路由并在 URI 中传递 JWT 令牌时,用户的浏览器会发出 get 请求。
- 然后,服务器使用提供商提供的公钥通过非对称算法验证 JWT。
- 然后服务器返回一个服务器端的仅 HTTP cookie,其中 JWT 作为值,客户端没有任何 JWT 的记忆,因为它只在 URI 中,没有存储在其他任何地方。
我的问题是:以上是安全处理 OpenIDConnect 2.0 流的正确过程吗?
【问题讨论】:
标签: security oauth-2.0 jwt openid-connect