如何导入客户端以与 keycloak 进行 REST 通信?

问题描述 投票:0回答:1

我需要使用 REST API 与 keycloak 进行通信,以便在 keycloak 中创建用户,并且有三个主要要求:

  1. 使用
    jboss/keycloak:16.1.1
  2. 使用json文件导入keycloak中的领域
  3. 领域应该包含一个客户端,使我能够通过 REST 与 keycloak 进行通信。

问题是,我不确定 json 格式的此类客户端的正确配置是什么!!!


到目前为止我所尝试的总结:

  1. 创建一个带有秘密的客户端,称为
    admin-rest-client
    ,通过 keycloak UI 手动进行 REST 通信。
  2. 导出领域 --------> 这应该给我一个具有用于 REST 通信的 client_id 和密钥的客户端
  3. 将获得的
    exported-realm.json
    导入keycloak --->这应该给我带有
    admin-rest-client
    客户端的领域。

重现问题的步骤:

  1. 运行

    docker run -p 8080:8080 -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=admin jboss/keycloak:16.1.1

  2. 创建一个自定义领域并命名为

    my-realm

  3. 设置一个名为

    admin-rest-client
    的客户端,用于 REST 通信就像这个问题

  4. 导出此领域

  1. 杀死 keycloak docker 容器并再次设置它(以便您可以导入领域)

  2. 现在,尝试导入下载的

    realm-export.json
    (如果资源存在则覆盖它)

不幸的是,由于控制台中出现以下错误,我无法导入它:

05:54:37,870 ERROR [org.keycloak.services] (default task-2) KC-SERVICES0038: Error importing roles: java.lang.NullPointerException
    at [email protected]//org.keycloak.models.utils.RepresentationToModel.importRoles(RepresentationToModel.java:633)
    at [email protected]//org.keycloak.partialimport.RolesPartialImport.doImport(RolesPartialImport.java:98)
    at [email protected]//org.keycloak.partialimport.PartialImportManager.saveResources(PartialImportManager.java:72)
    at [email protected]//org.keycloak.services.resources.admin.RealmAdminResource.partialImport(RealmAdminResource.java:1108)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)

在我看来,

manage-user
admin-rest-client
)的角色正在造成问题。所以,我的问题是:

  1. 我如何导入之前导出的领域,以便获得所有客户端?

  2. 我的策略(基于手动创建客户端并将其导出)找到正确的客户端配置是正确的方法吗?我发现

    admin-rest-client
    的配置超级复杂,我想知道是否有针对此类用户的更简单的配置。 下面的屏幕截图仅显示了该客户端配置的一部分:

rest jboss keycloak
1个回答
0
投票

我们实际上做到了这一点,略有不同。您可以这样做

,而不是部分导入realm-export.json
  1. 从左侧导航顶部下拉列表中打开领域列表。
  2. 然后点击添加领域
  3. 现在单击“导入”,然后使用“realm-export.json”导入角色和客户端。通过这种方法,您的用户不会被导入,但其他所有内容都会被导入。

非常感谢。很高兴能进一步提供帮助。

© www.soinside.com 2019 - 2024. All rights reserved.