spring boot 获取 token 调用另一个服务

springboot get token to call another service

我想从 SpringBoot 发出 GET 请求。我可以使用 org.keycloak.admin.client.Keycloak 仅获取并刷新令牌以访问另一个微服务中的 API?我认为它仅用于管理,用于添加角色等。不用于授权。

        keycloak = KeycloakBuilder
            .builder()
            .serverUrl(serverUrl)
            .grantType(OAuth2Constants.PASSWORD)
            .realm(realm)
            .clientId(clientId)
            .username(userName)
            .password(pass)
            .build();

    AccessTokenResponse accessToken = keycloak.tokenManager().getAccessToken();

它可以工作,但我仍然对在这里使用管理客户端有不好的感觉。对于 Angular 客户端,这是类似的方式,但不是来自 admin 包。

此操作是由用户发起的吗?通常你想使用来自前端的相同令牌并根据你的请求传递它,这样你就可以一直追踪你的请求到发起它的人。

为您的服务使用令牌意味着它可以在没有人为提示的情况下访问其他服务,也许您想要这个,但通常您不需要。

如果您仍想为您的客户获取令牌,您可以使用此处所述的服务帐户:

https://github.com/keycloak/keycloak-documentation/blob/master/server_admin/topics/clients/oidc/service-accounts.adoc