Java React和spring引导的Oath2实现
我正在尝试使用OAuth保护我的应用程序。我在react中构建了客户端应用程序(UI),后端在Spring Boot中。我配置了一个OAuth服务器,它将负责对用户进行身份验证 我真的很困惑React应用程序是否应该与Auth server对话并获取令牌,或者Spring Boot是否应该获取令牌 在阅读了多篇文章后,我想到了流:Java React和spring引导的Oath2实现,java,reactjs,spring-boot,oauth,oauth-2.0,Java,Reactjs,Spring Boot,Oauth,Oauth 2.0,我正在尝试使用OAuth保护我的应用程序。我在react中构建了客户端应用程序(UI),后端在Spring Boot中。我配置了一个OAuth服务器,它将负责对用户进行身份验证 我真的很困惑React应用程序是否应该与Auth server对话并获取令牌,或者Spring Boot是否应该获取令牌 在阅读了多篇文章后,我想到了流: 用户将转到ReactApp主页,ReactApp将其重定向到OAuth服务器登录页(/authorize) OAuth服务器将对用户凭据进行身份验证,并使用code
/authorize
)code
代码
(以及客户端Id和客户端机密),并从Auth server获取令牌
,并将该令牌发送到ReactApp以进行进一步通信code
在UI中(ReactApp)和token
在后端(Spring Boot))任何帮助都将不胜感激。SPA是客户端,Spring Boot应用程序是资源服务器。设置您的启动服务是非常困难的。理想情况下,React应用程序将使用
授权\u代码
流,并将代码交换为令牌本身,然后将令牌发送到启动服务。React无法获取令牌
,因为要从code
获取令牌
,React应用程序需要传递客户端ID
和客户端机密
,这是不安全的。这就是为什么我想将代码
发送到Spring Boot,让Spring Boot获取令牌
并将其传递给ReactApp。在这种情况下,React将是一个公共客户端;您没有客户机密或没有客户机密“secret”是正确的,但这仍然比其他选择要好。因此,我提到的流程不安全或无法工作?因此您建议使用以下标准实践之一:使用代码交换证明密钥(PKCE)的授权代码授予和隐式授予。