Security OAuth2私有应用程序的流程和最佳实践
请耐心听我解释我的问题以及我找到的解决方案/指南 说明:在我的公司,我们有一个产品,有多个模块。每个模块都是其独立的后端和前端。我们将JavaEE/JakartaEE和JAX-RS作为后端堆栈,并将其作为前端进行响应。到目前为止,我们使用的是通过会话使用JavaEE安全性的基本身份验证,但由于产品正在发展,我们需要移动客户端并允许第三方访问数据,因此我们决定将OAuth2/OpenID Connect集成到我们的应用程序中 由于有多个实现提供OAuth2功能,我们目前正在研究一些可用的选项。(例如)。我们将选择的决定取决于我们想要做多少工作来改变应用程序的现有结构,以及我们如何处理数据库中的用户。但是,无论我们选择哪种实现方式,我们都面临着类似的问题 问题Security OAuth2私有应用程序的流程和最佳实践,security,authentication,oauth,oauth-2.0,openid-connect,Security,Authentication,Oauth,Oauth 2.0,Openid Connect,请耐心听我解释我的问题以及我找到的解决方案/指南 说明:在我的公司,我们有一个产品,有多个模块。每个模块都是其独立的后端和前端。我们将JavaEE/JakartaEE和JAX-RS作为后端堆栈,并将其作为前端进行响应。到目前为止,我们使用的是通过会话使用JavaEE安全性的基本身份验证,但由于产品正在发展,我们需要移动客户端并允许第三方访问数据,因此我们决定将OAuth2/OpenID Connect集成到我们的应用程序中 由于有多个实现提供OAuth2功能,我们目前正在研究一些可用的选项。(例
- 由于这是我们自己的React应用程序,我们不希望显示同意屏幕,就像在Microsoft/Google等应用程序中,您看不到任何同意屏幕一样。我想这可以通过在请求本身中设置一个值来实现,或者根据客户端id跳过同意屏幕,但我只是想确定一下
- 下一步是在哪里存储访问和刷新令牌?访问令牌应作为承载令牌随每个请求一起发送。因此它可以存储在本地存储中,因为它们的寿命很短,但是刷新令牌应该安全地存储。就像在安全的http cookie中一样?。如果是这种情况,那么服务器必须设置它。如果这是正确的,那么流将是什么样子
-->我们的React应用程序(未登录)
-->登录页面(另一个React页面)
-->用户输入凭据
-->Java后端
-->对用户进行身份验证
-->启动OAuth2进程
-->获取访问和刷新令牌
-->将其设置为安全cookie
-->将经过身份验证的响应与cookie一起返回前端
-->登录页面重定向到上一页
这感觉不正确。PKCE在这种情况下会有什么帮助用户继续使用应用程序
你也应该考虑阅读(如果没有密码)
如果我正确地理解了,这个例子中使用的中间件实际上就是我们的后端。它的工作原理与我在问题中描述的相同。前端将用户发送到登录页面,接收代码,将其发送到后端,后端将此代码发送到oauth服务器,并接收令牌,在会话中设置它们,然后