我已经看到这两篇文章给出了这个问题的解决方案,但他们没有提供足够详细的信息,说明如何为像我这样的非Java开发人员这样做:
这里是他们的解决方案的概述,如果有更多的细节,可以帮助其他人。
过程期望 https://stackoverflow.com/questions/43376233/keycloak-add-extra-claims-from-database-external-source
实现ProtocolMapper接口并添加包含对类的引用的文件ProtocolMapper。 此时,Keycloak认识到了新的实现。您应该能够通过管理控制台配置它。 若要向令牌添加一些数据,请添加以下接口 org.keycloak.protocol.oidc.mappers.OIDCAccessTokenMapper 并根据接口实现了这些方法。 然后添加具有以下内容的文件“META/jbos-Deployment-structure.xml”,并在完成所有这些操作后,在对http://:/auth/realms/testrealm/protocol/openid-connect/token的每个请求中调用自定义的http://:/auth/realms/testrealm/protocol/openid-connect/token()方法。
看完这篇文章后,我有几个问题:
谢谢大家抽出时间。如果我错过了他们的答案,请告诉我。
编辑:
我希望有人能给我一些详细的步骤,说明如何在Keycloak 3.4.3 (对非Java开发人员来说足够详细)中从数据库中添加额外的声明。
编辑2这里的方法可以做到这一点,但缺乏细节。Keycloak创建自定义身份提供程序映射程序
发布于 2018-11-07 22:35:34
我希望这个一步步的指南能帮助你。
我使用Keycloak 4.5.0 -因为我安装了这个较新的版本-但我不应该有很大的区别。我在这个例子中实现了一个OIDCProtocolMapper
。
简单地总结一下--对于其他人的快速概述--后面将对每一步进行更详细的描述。
AbstractOIDCProtocolMapper
类org.keycloak.protocol.ProtocolMapper
,必须可用,并包含映射程序的名称jboss-deployment-structure.xml
需要可用,才能使用类中内置的keycloak/opt/jboss/keycloak/standalone/deployments/
中好的,现在更详细:-)
创建自定义Mapper
我上传了我的maven pom.xml
(pom) --只要将它导入到您的IDE中,所有的依赖项都会自动加载。这些依赖项只是provided
,稍后将在运行时直接从keycloak中使用。
相关的是keycloak.version
属性??所有的keycloak依赖项当前都加载在4.5.0.Final
版本中。
现在,我创建了一个名为CustomOIDCProtocolMapper
的定制协议Mapper类。查找“完整”代码这里
它应该扩展AbstractOIDCProtocolMapper
,并且需要实现所有的抽象方法。也许您想要一个SAML,然后它是另一个基类(AbstractSAMLProtocolMapper
)
一个相关的方法是transformAccessToken
--在这里,我对AccessToken设置了一个额外的声明。你需要你的逻辑,但是的-取决于你的数据库,等等;-)
服务档案
服务文件是重要的,用于查找您的自定义实现
将文件与fileName org.keycloak.protocol.ProtocolMapper
放在\src\main\resources\META-INF\services\
中。
在这个文件中,您将写入自定义提供程序的名称-因此keycloak知道这个类可以作为协议映射程序使用。
在我的示例中,文件内容只是一行
com.stackoverflow.keycloak.custom.CustomOIDCProtocolMapper
部署结构XML
在您的自定义映射器中,您使用来自keycloak的文件。为了使用它们,我们需要将这种依赖性告知jboss。因此,在jboss-deployment-structure.xml
内容中创建一个文件\src\main\resources\META-INF\
:
<jboss-deployment-structure>
<deployment>
<dependencies>
<module name="org.keycloak.keycloak-services" />
</dependencies>
</deployment>
</jboss-deployment-structure>
构建和部署扩展程序
构建扩展名jar文件(mvn clean package
) --并将jar
放置在/opt/jboss/keycloak/standalone/deployments/
中并重新启动密钥披风
在日志文件中,您应该看到它何时部署,以及(希望没有)错误消息。
现在您可以使用映射器了--在我的示例中,我可以在keycloak管理ui中创建一个mapper,并从下拉列表中选择Stackoverflow Custom Protocol Mapper
。
正如信息-这不是完全官方支持的keycloak所以接口可能会改变在以后的版本。
我希望这是可以理解的,你将能够成功地实现你自己的地图
编辑:导出的eclipse文件结构zip
https://stackoverflow.com/questions/53089776
复制相似问题