我需要使用 REST API 与 keycloak 进行通信,以便在 keycloak 中创建用户,并且有三个主要要求:
jboss/keycloak:16.1.1
问题是,我不确定 json 格式的此类客户端的正确配置是什么!!!
到目前为止我所尝试的总结:
admin-rest-client
,通过 keycloak UI 手动进行 REST 通信。exported-realm.json
导入keycloak --->这应该给我带有admin-rest-client
客户端的领域。重现问题的步骤:
运行
docker run -p 8080:8080 -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=admin jboss/keycloak:16.1.1
创建一个自定义领域并命名为
my-realm
设置一个名为
admin-rest-client
的客户端,用于 REST 通信就像这个问题。
导出此领域
不幸的是,由于控制台中出现以下错误,我无法导入它:
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
)的角色正在造成问题。所以,我的问题是:
我如何导入之前导出的领域,以便获得所有客户端?
我的策略(基于手动创建客户端并将其导出)找到正确的客户端配置是正确的方法吗?我发现
admin-rest-client
的配置超级复杂,我想知道是否有针对此类用户的更简单的配置。
下面的屏幕截图仅显示了该客户端配置的一部分:
我们实际上做到了这一点,略有不同。您可以这样做
,而不是部分导入realm-export.json非常感谢。很高兴能进一步提供帮助。