Java KeyClope自定义Docker协议映射器部署
我正在试验Key斗篷和集成docker注册表v2 auth。一切都很顺利。但是,目前没有真正的授权层,查看github上的源代码,我可以看到有一个类AllowAllDockerProtocolMapper,它自动将docker注册表的所有权限授予登录用户 我想实现一种基于名称空间的授权机制,即登录用户只在其自己的名称空间内拥有推/拉权限(例如) 然而,现在我正努力让一个简单的工作示例启动并运行。我在上阅读了spi的keydeport指南,并在github上查看了一些示例,但现在keydeport似乎没有接收到部署的模块 我所做的:Java KeyClope自定义Docker协议映射器部署,java,docker,keycloak,Java,Docker,Keycloak,我正在试验Key斗篷和集成docker注册表v2 auth。一切都很顺利。但是,目前没有真正的授权层,查看github上的源代码,我可以看到有一个类AllowAllDockerProtocolMapper,它自动将docker注册表的所有权限授予登录用户 我想实现一种基于名称空间的授权机制,即登录用户只在其自己的名称空间内拥有推/拉权限(例如) 然而,现在我正努力让一个简单的工作示例启动并运行。我在上阅读了spi的keydeport指南,并在github上查看了一些示例,但现在keydeport
- 创建了类UserNamespaceMapper,该类扩展DockerAuthV2ProtocolMapper并实现DockerAuthV2AttributeMapper(我基本上是从AllowlDockerProtocolMapper复制的示例)
- 在类路径上创建了dirs META-INF/services并将文件放在那里 名为org.keydepot.ProtocolMapper,其中包含完整的 我的UserNamespaceMapper类的限定名称
- 用我的源代码创建了一个jar docker-user-namespace-mapper.jar
- 通过执行以下命令创建模块:
keydove\u HOME/bin/jboss-cli.sh--command=“module add--name=a.b.c.d.docker-user-namespace-mapper--resources=/build/libs/docker-user-namespace-mapper.jar--dependencies=org.keydove:keydove服务,org.keydove.keydove服务器spi私有,org.keydove:keydove服务器spi”
- 修改的standalone.xml:
认证
模块:a.b.c.d.docker-user-namespace-mapper
...
- 钥匙斗篷
-伊万我终于找到了它不起作用的原因 由于我编辑了错误的配置文件,KeyClope未拾取该模块。我没有将提供者添加到
standalone.xml
,而是将其添加到standalone ha.xml
。这是因为我实际上使用了官方的KeyClope docker映像,并查看了它们的启动脚本docker entrypoint.sh
,很明显使用了standalone ha.xml
。您可以在此处找到更多信息:
如果有人对如何基于用户名称空间为DockerV2注册表实现/部署自定义KeyClope映射器感兴趣:请查看我的代码:
干杯 您是否更改了新的提供商ID?是的,我更改了提供商ID。
<subsystem xmlns="urn:jboss:domain:keycloak-server:1.1">
<web-context>auth</web-context>
<providers>
<!-- THIS IS WHAT I ADDED -->
<provider>module:a.b.c.d.docker-user-namespace-mapper</provider>
</providers>
...