Keycloak Admin Java Adapter 401 尽管所有角色都未经授权

Keycloak Admin Java Adapter 401 Unauthorised despite all roles

我正在使用 Keycloak api 但我遇到以下问题: 在“master”中,我有一个名为“foo”的领域(它以名称“foo-realm”作为客户端出现)

master>foo-realm (foo)

在“foo”中我有一个名为“client”的客户端。

在“master”中我有一个名为“client-admin”的用户。

我希望能够使用 api 使用主控中的“client-admin”查询和更新“client”中的用户信息。

“client-admin”具有“foo-realm”的所有角色(查询用户、管理领域等),并出现在“foor-realm”的“角色中的用户”列表中。

但是我不能让它与 api 一起工作:

KeycloakBuilder.builder()
            .serverUrl("serverUrl")
            .realm("master")
            .grantType(OAuth2Constants.PASSWORD)
            .clientId("foo-realm")
            .username("client-admin")
            .password("client-admin-password").build().realm("foo").users().list()

我得到 javax.ws.rs.NotAuthorizedException:HTTP 401 未经授权 从此.

api 的工作方式与我们过去使用直接创建到“foo”的用户一起查询“client”一样(参见下面的代码段)。但是我们在密码更新策略方面遇到了问题,所以现在我们希望用户处于“master”状态。我想我没有做正确的角色归属,但我不明白哪里出了问题。

    KeycloakBuilder.builder()
            .serverUrl("serverUrl")
            .realm("foo")
            .grantType(OAuth2Constants.PASSWORD)
            .clientId("client-id")
            .clientSecret("client")
            .username("admin-in-foo")
            .password("admin-in-foo-password").build().realm("foo").users().list()

我也试过了,但我仍然收到 401 未授权

    KeycloakBuilder.builder()
                .serverUrl("serverUrl")
                .realm("foo")
                .grantType(OAuth2Constants.PASSWORD)
                .clientId("client")
                .clientSecret("client-secret")            
                .username("client-admin")
                .password("client-admin-password").build().realm("foo").users().list()

欢迎任何帮助。 感谢阅读。

好的,我找到了答案。我不得不将“admin-cli”客户端查询为“master”,如下所示:

KeycloakBuilder.builder()
        .serverUrl("serverUrl")
        .realm("master")
        .grantType(OAuth2Constants.PASSWORD)
        .clientId("admin-cli")
        .username("client-admin")
        .password("client-admin-password").build().realm("foo").users().list()