目前我有4个项目,项目A是作为前端的react项目,可以生成JWT令牌的OAuth服务器项目,资源服务器项目A(例如
user-server
,有像/login
,/register
和这样的控制器) /userInfo
..哪个项目A将调用,对于userInfo
,它需要身份验证,资源服务器项目B(例如payment-server
)并具有像/payByCredit
这样的控制器。目前我所拥有的将如下:
现在我的问题是我的ReactJS项目将允许第三方登录,例如谷歌,我现在的理解是我的ReactJS项目需要添加一个新按钮说
Login with Google
并指向我的 user-server/login-with-google
,并在我的 user-server
,添加新的控制器,在配置中添加oauth2.client.registration.google.clientId
和oauth2.client.registration.google.clientSecret
等...然后userServer
将把access_token
返回给ReactJS。但是access_token
是从google生成的,如果我的ReactJS项目使用这个令牌并尝试从payByCredit
访问paymentServer
,我相信它会失败,如何使paymentServer
也授权和验证access_token
与谷歌返回?还是我理解有误?
在典型的 OIDC 流程中,您的 FE (
ReactJS
) 直接通信。与 authServer
(第一或第三)方获取访问令牌,然后将其发送到资源服务器 (userServer
),资源服务器验证令牌,并发布资源(信息)
所以,我愿意
ReactJS
-> Google Server
并获得 GoogleAuthToken
ReactJS
发送GoogleAuthToken
到userServer
,
2.1. (后端令牌流程)userServer
验证GoogleAuthToken
并将正确的信息发送回ReactJS
(第5步。)