Bat*_*han 2 jboss jboss-tools keycloak jboss-eap-7 keycloak-services
我有一个开放的 ID 提供程序,我使用该提供程序作为 keycloak 的身份代理。我想映射从代理发送到 keycloak 的角色(声明)(keycloak 将在其 jwt 中发送映射的角色)。我想知道如何实现自定义映射器并将其添加到keycloak(例如keycloak中的硬编码映射器、属性映射器)。我可以这样做吗?谢谢
小智 8
创建您的新provider课程,我扩展了现有org.keycloak.broker.saml.mappers.AttributeToRoleMapper课程。
构建 jar 时,请确保 jar 中有一个名为 services 的文件夹(META-INF 文件夹)。
在此文件夹中创建一个名为 的简单文本文件org.keycloak.broker.provider.IdentityProviderMapper,在该文件中添加新提供程序类的全名,即package.Classname.
编译后,将文件放入 Keycloak 根文件夹下的providers文件夹中。重新启动您的容器。
为了让我的自定义映射器能够使用最新版本的 Keycloak(撰写本文时为 4.8),我必须做一些稍微不同的事情:
创建了一个扩展的自定义映射器AbstractOIDCProtocolMapper:
package com.test;
import org.keycloak.protocol.oidc.mappers.AbstractOIDCProtocolMapper;
public class MyTestMapper extends AbstractOIDCProtocolMapper {
...
}
Run Code Online (Sandbox Code Playgroud)在 中src/main/resources,创建文件夹结构META-INF/services
org.keycloak.protocol.ProtocolMapper创建一个名为in目录的文件META-INF/services。它的内容应该只是一行,包含自定义映射器的完全限定类名:
com.test.MyTestMapper
Run Code Online (Sandbox Code Playgroud)在(上一个)META-INF文件夹下,创建一个名为. 根据您正在执行的操作,您需要在此处添加适当的 JBoss 模块。对于我的简单测试映射器,我使用了:src/main/resourcesservicesjboss-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>
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
13993 次 |
| 最近记录: |