我有一个开放的id提供者,我用这个提供者作为keycloak的身份代理。我想Map从代理发送到keycloak的角色(声明)(keycloak将在其jwt中发送Map的角色)。我想知道如何实现和添加一个自定义Map器到keycloak(像hardcodedmapper,keycloak中的attributemapper)。我可以这样做吗?谢谢
aydmsdu91#
创建新的provider类,我扩展了现有的org.keycloak.broker.saml.mappers.AttributeToRoleMapper类。在构建jar时,请确保在jar中有一个名为services的文件夹,即META-INF文件夹。在此文件夹中创建一个名为org.keycloak.broker.provider.IdentityProviderMapper的简单文本文件,在该文件中添加新提供程序类的全名,即package.Classname。编译完成后,将文件放到Keycloak根文件夹下的providers文件夹中。
provider
org.keycloak.broker.saml.mappers.AttributeToRoleMapper
org.keycloak.broker.provider.IdentityProviderMapper
package.Classname
myss37ts2#
为了让我的自定义Map器与最新版本的Keycloak(在撰写本文时为4.8)一起工作,我必须做一些稍微不同的事情:
AbstractOIDCProtocolMapper
package com.test; import org.keycloak.protocol.oidc.mappers.AbstractOIDCProtocolMapper; public class MyTestMapper extends AbstractOIDCProtocolMapper { ... }
src/main/resources
META-INF/services
org.keycloak.protocol.ProtocolMapper
com.test.MyTestMapper
services
META-INF
jboss-deployment-structure.xml
<?xml version="1.0" encoding="UTF-8"?> <jboss-deployment-structure> <deployment> <dependencies> <module name="org.keycloak.keycloak-services" /> </dependencies> </deployment> </jboss-deployment-structure>
2条答案
按热度按时间aydmsdu91#
创建新的
provider
类,我扩展了现有的org.keycloak.broker.saml.mappers.AttributeToRoleMapper
类。在构建jar时,请确保在jar中有一个名为services的文件夹,即META-INF文件夹。
在此文件夹中创建一个名为
org.keycloak.broker.provider.IdentityProviderMapper
的简单文本文件,在该文件中添加新提供程序类的全名,即package.Classname
。编译完成后,将文件放到Keycloak根文件夹下的providers文件夹中。
myss37ts2#
为了让我的自定义Map器与最新版本的Keycloak(在撰写本文时为4.8)一起工作,我必须做一些稍微不同的事情:
AbstractOIDCProtocolMapper
的自定义Map器:src/main/resources
中,创建文件夹结构META-INF/services
META-INF/services
目录中创建一个名为org.keycloak.protocol.ProtocolMapper
的文件。其内容应该只有一行,其中包含自定义Map器的全限定类名:src/main/resources
(services
的上一个)的META-INF
文件夹下,创建一个名为jboss-deployment-structure.xml
的文件。根据您要做的事情,您需要在这里添加适当的JBoss模块。