Jboss KeyClope创建自定义身份提供程序映射器
我有一个开放的id提供程序,我使用这个提供程序作为KeyClope的身份代理。我想将从代理发送的角色(声明)映射到keydepeat(keydepeat将在其jwt中发送映射角色)。我想知道如何实现一个自定义映射器并将其添加到KeyClope(如KeyClope中的hardcodedmapper、attributemapper)。我能做这个吗?感谢您创建新的Jboss KeyClope创建自定义身份提供程序映射器,jboss,keycloak,jboss-tools,jboss-eap-7,keycloak-services,Jboss,Keycloak,Jboss Tools,Jboss Eap 7,Keycloak Services,我有一个开放的id提供程序,我使用这个提供程序作为KeyClope的身份代理。我想将从代理发送的角色(声明)映射到keydepeat(keydepeat将在其jwt中发送映射角色)。我想知道如何实现一个自定义映射器并将其添加到KeyClope(如KeyClope中的hardcodedmapper、attributemapper)。我能做这个吗?感谢您创建新的提供者类,我扩展了现有的org.keydove.broker.saml.mappers.AttributeToRoleMapper类 在构建
提供者
类,我扩展了现有的org.keydove.broker.saml.mappers.AttributeToRoleMapper
类
在构建jar时,请确保jar中有一个名为services的文件夹,即META-INF文件夹
在该文件夹中创建一个名为org.keydepot.broker.provider.IdentityProviderMapper
的简单文本文件,在该文件中添加新提供者类的全名,即package.Classname
编译完成后,将该文件放到keydape根文件夹下的providers文件夹中。重新启动容器。创建新的
提供程序
类,我扩展了现有的org.keydape.broker.saml.mappers.AttributeToRoleMapper
类
在构建jar时,请确保jar中有一个名为services的文件夹,即META-INF文件夹
在该文件夹中创建一个名为org.keydepot.broker.provider.IdentityProviderMapper
的简单文本文件,在该文件中添加新提供者类的全名,即package.Classname
编译完成后,将该文件放到keydape根文件夹下的providers文件夹中。重新启动您的容器。为了让我的自定义映射器使用最新版本的KeyClope(撰写本文时为4.8),我不得不做一些稍微不同的事情:
- 创建了扩展
的自定义映射器:AbstractOIDCProtocolMapper
package com.test; import org.keycloak.protocol.oidc.mappers.AbstractOIDCProtocolMapper; public class MyTestMapper extends AbstractOIDCProtocolMapper { ... }
- 在
中,创建文件夹结构src/main/resources
META-INF/services
- 在
目录中创建一个名为META-INF/services
的文件。其内容应仅为一行,其中包含自定义映射器的完全限定类名:org.keydape.ProtocolMapper
com.test.MyTestMapper
- 在
中的src/main/resources
文件夹下(从META-INF
开始),创建一个名为services
的文件。根据您正在做的事情,您需要在这里添加适当的JBoss模块。对于我的简单测试映射器,我使用了: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>
- 创建了扩展
的自定义映射器:AbstractOIDCProtocolMapper
package com.test; import org.keycloak.protocol.oidc.mappers.AbstractOIDCProtocolMapper; public class MyTestMapper extends AbstractOIDCProtocolMapper { ... }
- 在
中,创建文件夹结构src/main/resources
META-INF/services
- 在
目录中创建一个名为META-INF/services
的文件。其内容应仅为一行,其中包含自定义映射器的完全限定类名:org.keydape.ProtocolMapper
com.test.MyTestMapper
- 在
中的src/main/resources
文件夹下(从META-INF
开始),创建一个名为services
的文件。根据您正在做的事情,您需要在这里添加适当的JBoss模块。对于我的简单测试映射器,我使用了: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>