Oauth2和OpenId连接实现



我们正在尝试实现一个应用程序,其中UI是在angular和后端是在Spring启动。我们需要在应用程序中实现openId和oauth2。后端api需要更安全。

我只是混淆了使用授权授权流和密码授权流。

谁能告诉我在这种情况下需要使用哪一个,为什么?

不建议在前端存储令牌。它还在FE和BE之间分配令牌处理逻辑,因为BE无论如何都必须对每个请求验证令牌。

因此,为了避免在前端处理和刷新令牌并简化整体架构,您可以在Spring Boot中实现授权代码流。这也将减少在FE中接触XSS的风险。

您可以实现一个专用端点,它启动流并从身份服务器接收代码。然后,它将此代码交换为id令牌并存储它。然后,它为前端创建一个HttpOnly、严格的SameOrigin会话cookie。从那时起,所有对Spring Boot内API的调用都将自动携带此cookie,而无需在FE上添加任何额外代码。

为了消除BE上的令牌存储,您甚至可以将令牌放入cookie中。然而,令牌可能相当大,可能需要分割成块。这不会以任何方式影响FE。

您需要检查BE内部每个API调用的令牌过期,并在后端刷新令牌。这将保持用户会话的无缝性。如果由于吊销或刷新令牌过期而无法刷新令牌,则API将不得不返回401,FE将需要初始化重新登录。

最新更新