我已经阅读了好几个月,似乎整个事情可能会在我下面总结的内容上有所收敛。我想在最理想的到来:使用授权码授权而不使用cookie?
- 的OAuth2
- ID连接
- SPA /移动客户端
- JWT有银行级别的安全质量为上述
解决方案组件而言。所以这似乎是有道理的。
- 使用Authorization Code Grant而不使用服务器端会话和cookie,因为此OAuth流比隐式流更安全。
- 不要创建服务器端会话或cookie(除了可能记住我的cookie来识别客户端之前是否已经过身份验证)。这对缩放和整体简单性更好。
- 将JWT/OpenID连接令牌返回给客户端,以便客户端可以使用它来发出API请求并在客户端内作出授权决定。 (我认为这是OAuth2混合授权代码授权/隐式流程是什么?)。将JWT/OpenID连接令牌存储在客户端会话存储中。
- 拥有短暂的JWT令牌,并在用户注销之前提供刷新令牌。客户端会自动接收刷新令牌,除非它超时/客户端会话过期或用户注销。刷新令牌将由SPA /移动应用正在与之交谈的/ OAuth客户端的边缘服务器获取并提供服务。
- 在注销(或超时)时,从浏览器会话存储中删除令牌。
难道这是疯狂的/听起来合理吗?它跳过了无效的令牌,但如果令牌的寿命非常短并且客户端可以获得刷新令牌,则似乎可以这样做。我想用Spring-Boot/Spring Security和Angular 4/5来实现这个功能,我想知道我是否错过了任何明显的东西,或者有一种更简单的方法不会牺牲/降低安全性?
你是否也认为这会通过“银行”级别的安全标准检查?
首先阅读:https://stackoverflow.com/help/how-to-ask 但我猜使用: ID连接与认证的程序库:https://openid.net/certification/ 遵循OpenID Connect的最佳实践 https://openid.net/specs/openid-connect-basic-1_0.html https://openid.net/specs/openid-connect-implicit-1_0.html – jwilleke
是啊我知道你的意思是“如何问”提示 - 我觉得我正在用上述方法“跳出框”,所以只是检查是否有人看到任何疯狂的事情,或许我应该考虑。 .. – Ole