几个月来我一直在阅读这篇文章,似乎整个事情都可以集中在我在下面总结的内容上。我正在努力达到最理想的状态:
- OAuth2
- OpenID 连接
- SPA / 移动客户端
- 智威汤逊
与上述组件有关的具有银行级安全质量的解决方案。所以这似乎是有道理的。
- 在不使用服务器端会话和 cookie 的情况下使用授权代码授予,因为此 OAuth 流比隐式流更安全。
- 不要创建服务器端会话或 cookie(除了可能记住我的 cookie 以识别客户端之前是否已通过身份验证)。这对于缩放和整体简单性更好。
- 将 JWT / OpenID 连接令牌返回给客户端,以便客户端可以使用它来发出 API 请求并在客户端内做出授权决策。(我认为这就是 OAuth2 混合授权代码授予/隐式流程是什么?)。将 JWT / OpenID 连接令牌存储在客户端会话存储中。
- 拥有短暂的 JWT 令牌并提供刷新令牌,直到用户注销。除非超时/客户端会话过期或用户注销,否则客户端将自动接收刷新令牌。
- 在注销(或超时)时,从浏览器会话存储中删除令牌。
这是否疯狂/听起来合理吗?它跳过了无效的令牌,但如果令牌的生命周期很短并且客户端可以获得刷新令牌,那么这样做似乎是可以的。我想使用 Spring-Boot / Spring Security 和 Angular 4/5 来实现这一点,我想知道我是否遗漏了任何明显的东西,或者可能有一种更简单的方法不会牺牲/降低安全性?
您还认为这会通过“银行”级安全标准检查吗?