Keycloak CLI:创建身份提供者映射器

Keycloak CLI: Creating an Identity Provider Mapper

我正在尝试使用类似于此的 keycloak CLI 创建 IDP 提供程序映射器

docs 中的示例全部用于 存储 映射器。

我试过了

kcadm.sh create components -r my-realm -s name=my-mapper-name -s providerId=oidc-hardcoded-role-idp-mapper -s providerType=org.keycloak.broker.provider.IdentityProviderMapper -s parentId=<parent id> -s 'config.role=["ROLE_MY_ROLE"]'

但是失败并出现错误

14:45:26,325 ERROR [org.keycloak.services.error.KeycloakErrorHandler] (default task-7) Uncaught server error: java.lang.ClassCastException: class org.keycloak.broker.provider.HardcodedRoleMapper cannot be cast to class org.keycloak.component.ComponentFactory (org.keycloak.broker.provider.HardcodedRoleMapper is in unnamed module of loader 'org.keycloak.keycloak-services@9.0.0' @1dd6d570; org.keycloak.component.ComponentFactory is in unnamed module of loader 'org.keycloak.keycloak-server-spi@9.0.0' @8467851)

因为与 HardcodedLDAPRoleStorageMapperFactory 不同,它不会扩展 ComponentFactory

是否可以使用 keycloak CLI 执行此操作?

谢谢!

你必须调用如下:

./kcadm.sh create identity-provider/instances/<IDP_name>/mappers \ 
          -r <REALM_NAME> \
          -s name=<MAPPER_NAME> \
          -s identityProviderAlias=<IDP_ALIAS> \ 
          -s identityProviderMapper=oidc-hardcoded-role-idp-mapper \
          -s config.role=<ROLE_NAME>

为了便于复制和粘贴:

./kcadm.sh create identity-provider/instances/<IDP_name>/mappers  -r <REALM_NAME> -s name=<MAPPER_NAME> -s identityProviderAlias=<IDP_ALIAS> -s identityProviderMapper=oidc-hardcoded-role-idp-mapper -s config.role=<ROLE_NAME>

字段 identityProviderMapperMapper Type,在您的情况下将是 oidc-hardcoded-role-idp-mapper