jboss Keycloak创建自定义身份提供者Map器

1bqhqjot  于 2022-11-08  发布在  其他
关注(0)|答案(2)|浏览(169)

我有一个开放的id提供者,我用这个提供者作为keycloak的身份代理。我想Map从代理发送到keycloak的角色(声明)(keycloak将在其jwt中发送Map的角色)。我想知道如何实现和添加一个自定义Map器到keycloak(像hardcodedmapper,keycloak中的attributemapper)。我可以这样做吗?谢谢

aydmsdu9

aydmsdu91#

创建新的provider类,我扩展了现有的org.keycloak.broker.saml.mappers.AttributeToRoleMapper类。
在构建jar时,请确保在jar中有一个名为services的文件夹,即META-INF文件夹。
在此文件夹中创建一个名为org.keycloak.broker.provider.IdentityProviderMapper的简单文本文件,在该文件中添加新提供程序类的全名,即package.Classname
编译完成后,将文件放到Keycloak根文件夹下的providers文件夹中。

myss37ts

myss37ts2#

为了让我的自定义Map器与最新版本的Keycloak(在撰写本文时为4.8)一起工作,我必须做一些稍微不同的事情:

  • 创建了一个扩展AbstractOIDCProtocolMapper的自定义Map器:
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.keycloak.protocol.ProtocolMapper的文件。其内容应该只有一行,其中包含自定义Map器的全限定类名:
com.test.MyTestMapper
  • src/main/resourcesservices的上一个)的META-INF文件夹下,创建一个名为jboss-deployment-structure.xml的文件。根据您要做的事情,您需要在这里添加适当的JBoss模块。
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
    <deployment>
        <dependencies>
            <module name="org.keycloak.keycloak-services" />
        </dependencies>
    </deployment>
</jboss-deployment-structure>

相关问题