Java React和spring引导的Oath2实现

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

我正在尝试使用OAuth保护我的应用程序。我在react中构建了客户端应用程序(UI),后端在Spring Boot中。我配置了一个OAuth服务器,它将负责对用户进行身份验证

我真的很困惑React应用程序是否应该与Auth server对话并获取令牌,或者Spring Boot是否应该获取令牌

在阅读了多篇文章后,我想到了流:

  • 用户将转到ReactApp主页,ReactApp将其重定向到OAuth服务器登录页(
    /authorize
  • OAuth服务器将对用户凭据进行身份验证,并使用
    code
  • ReactApp将使用API端点将代码发送到Spring引导服务器
  • Spring Boot server将使用
    代码
    (以及客户端Id和客户端机密),并从Auth server获取
    令牌
    ,并将该令牌发送到ReactApp以进行进一步通信
  • 问题:

  • 这是标准流程吗
  • 应用程序使用此流的安全性如何
  • 在UI中执行某些部分和在后端执行另一部分身份验证是一个好主意吗?(
    code
    在UI中(ReactApp)和
    token
    在后端(Spring Boot))
  • 还有比这更好的办法吗

  • 任何帮助都将不胜感激。

    SPA是客户端,Spring Boot应用程序是资源服务器。设置您的启动服务是非常困难的。理想情况下,React应用程序将使用
    授权\u代码
    流,并将代码交换为令牌本身,然后将令牌发送到启动服务。React无法获取
    令牌
    ,因为要从
    code
    获取
    令牌
    ,React应用程序需要传递
    客户端ID
    客户端机密
    ,这是不安全的。这就是为什么我想将
    代码
    发送到Spring Boot,让Spring Boot获取
    令牌
    并将其传递给ReactApp。在这种情况下,React将是一个公共客户端;您没有客户机密或没有客户机密“secret”是正确的,但这仍然比其他选择要好。因此,我提到的流程不安全或无法工作?因此您建议使用以下标准实践之一:使用代码交换证明密钥(PKCE)的授权代码授予和隐式授予。