我实现了 OAuth2 授权服务器和资源服务器。
并且有很多文件告诉我“授权服务器和资源服务器是否可以分离”
我喜欢 MSA,所以我决定分离这些服务器。
我在互联网上看到了很多关于这个问题的文件,但在实践中我不能再继续了。
我正在使用 SpringBoot2。
- 设想
- 用户连接到我的
Client
应用程序。 - 对安全端点的请求
/client/me
- 在
Client
's Controller 中,如果用户没有通过身份验证,则重定向到Authorization Server
's login endpoint/auth/oauth/authorize
。 - 如果用户首先进入我的
Client
应用程序,用户将在我的Authorization Server
. - 在
Authorization Server
的注册页面中,用户将输入他的username
,realusername
,password
和email
。 - 用户的帐户已发布,用户将通过我
Authorization Server
的登录表单登录。 - 如果登录成功,
Client
将向Resource Server
的/me
端点请求access-token
,Resource Server
映射为的控制器/me
将返回Principal
或Authentication
对象作为 REST API。 Client
会将 REST API 的结果绑定到DefaultOAuth2User
我CustomOAuth2User
的SecurityContext
.
- 用户连接到我的
这是问题。
据我所知,Resource Server
的/me
端点将提供用户的资源。例如,实名或电子邮件等。
但是用户已经注册Authorization Server
,所以所有信息都保存在Authorization Server
的数据库中。
我的 oauth2 服务器是 MSA。所以DB也被分开了。
那么,我如何通过's 的端点设置email
或realname
到Principal
或Authentication
或CustomOAuth2User
对象?Resource Server
/me