Spring boot 钥匙斗篷门面服务

Spring boot 钥匙斗篷门面服务,spring-boot,security,architecture,microservices,keycloak,Spring Boot,Security,Architecture,Microservices,Keycloak,我正在开发一个系统,在这个系统中我想实现一个facade服务,它在其中执行一些与用户相关的内容,并且还通过restapi与keydape服务器通信。KeyClope拥有自己的数据库和其他服务 因此,facade服务应该在KeyClope配置中注册为客户端(移动应用程序)的公共客户端,但是facade到KeyClope应该作为服务帐户,因为我不想将可以查询用户的角色添加到客户端的用户中 流程应如下所示: 移动应用程序调用后端服务来检索一些数据(注册为keydove public client),后

我正在开发一个系统,在这个系统中我想实现一个facade服务,它在其中执行一些与用户相关的内容,并且还通过restapi与keydape服务器通信。KeyClope拥有自己的数据库和其他服务

因此,facade服务应该在KeyClope配置中注册为客户端(移动应用程序)的公共客户端,但是facade到KeyClope应该作为服务帐户,因为我不想将可以查询用户的角色添加到客户端的用户中

流程应如下所示:

移动应用程序调用后端服务来检索一些数据(注册为keydove public client),后端服务通过rest模板调用keydove(但将机密客户端配置作为服务帐户),来检索用户信息、聚合结果、做一些与业务相关的事情,A放弃结果并将其返回到移动应用程序


是否可行?

我的理解是,为移动应用程序创建了一个具有公共访问类型的客户端。为后端服务创建另一个具有机密访问类型的客户端。然后对于后端客户端,您将能够启用服务帐户并设置适当的服务帐户角色(因为服务帐户仅针对机密访问类型启用)。这可能有点混乱,因此在移动应用程序中,您应该能够通过用户名/密码进行身份验证,并接收访问令牌,使用该令牌,它可以为某些数据调用该后端,但同时后端应该能够调用KeyCloves API,并为此,我们需要clientId和clientSecret进行身份验证,而不是来自移动应用程序的访问令牌。clientId和客户端机密应该存储在环境变量中的某个位置,以便后端服务可以使用它们连接到KeyClope。