microservice身份验证

gz5pxeao  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(406)

我正在尝试在另一个微服务中验证一个微服务请求,但找不到任何示例来说明如何在keydove中配置客户端以及如何配置Spring Security 。这就是我试图归档的体系结构:

我已经设法让用户授权工作并保护microservice a,现在我正在尝试授权来自microservice b的请求,但我不确定如何做到这一点,我是否应该为microservice b在Key斗篷中创建一个专用用户,或者在realm中创建客户端,或者其他一些技术帐户?它是由某个api密钥完成的,还是microserviceb应该以与用户类似的方式请求访问令牌?
我的想法是在keydove中为microserviceb创建一个客户机,从keydove请求一个访问令牌,并将其附加到发送给microservicea的每个请求中。
这是正确的方法吗?
有图书馆处理这个案子吗?
我找不到任何与spring进行这种交流的例子,您是否知道任何具有这种例子的存储库?

k7fdbhmy

k7fdbhmy1#

据我所知,您对ms-a的前端访问是通过不同的用户帐户(登录)完成的。但是对于ms-b访问ms-a,当ms-b总是使用同一个帐户(ms-b服务帐户)时,这没关系吗?
在这个场景中,我将为这个后端身份验证创建第二个客户端,我们称之为 backend-client 使用以下选项:
oidc,机密,启用直接访问授权和服务帐户,禁用标准流
ms-b现在可以通过一个简单的keydove请求获得一个访问令牌

curl --request POST \
        --url https://keycloak/auth/realms/%realm_name%/protocol/openid-connect/token \
        --header 'Accept: */*' \
        --header 'Content-Type: application/x-www-form-urlencoded' \
        --data 'client_id=backend-client&client_secret=%client_secret%&grant_type=client_credentials'

(不需要user+pw,所以保留 client_secret (非常安全)
访问令牌现在需要用于从ms-b到ms-a的所有请求( Authentication: Bearer %Access-Token% (页眉)
我不知道有任何spring实现/适配器,但是我很确定如果您搜索 Direct Access Grants 你会找到一个合适的解决办法

相关问题