我正在尝试创建以下应用程序:
前端应用
当前,有一个简单的身份验证机制(尚未与其他提供程序实现oauth2集成)。但是,会生成授权令牌并将其存储在本地状态。最终,还希望允许oauth2登录。
对于后端的每个其余调用,将添加“授权:承载”标头(通过拦截器)。
后端应用
在后端,所有请求都通过zuul网关传递。在网关上,有一个过滤器,用于验证令牌,然后生成另一个“自定义” JWT令牌,该令牌将在向微服务的下游传输时使用。此外,它们之间的微服务使用此“自定义” jwt令牌在它们之间对请求进行身份验证。
OAuth2客户端集成
在一个用例中,我希望一个经过身份验证的用户通过oauth2授权后端应用程序调用其他服务提供商上的API。
想法是与其他提供商的服务的所有交互都将通过后端应用程序完成:
因此,所有对第三方提供商的呼叫都将通过后端进行代理。
问题
在其中一个微服务中,我尝试启用oauth2客户端功能(通过@ EnableOauth2Client),但是当spring-boot应用程序重定向到另一个提供程序的授权URL时,在浏览器中出现CORS错误。 (生成的URL很好,并且可以在浏览器页面中打开)。即使这可行,我仍然看到回调URL出现问题,因为这些URL受后端应用程序保护。 (既需要获取回调,还需要能够“识别”回叫的用户,以便我可以在当前用户的数据下保存访问和刷新令牌)
问题
提供此类功能的“正确”或“最佳做法”是什么?
如果在前端应用程序中执行了“授权”,我是否应该只发送访问/刷新令牌以在后端进行存储?如果是这样,如何实现对前端应用程序的“回调”。