Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java KeyClope自定义Docker协议映射器部署_Java_Docker_Keycloak - Fatal编程技术网

Java KeyClope自定义Docker协议映射器部署

Java KeyClope自定义Docker协议映射器部署,java,docker,keycloak,Java,Docker,Keycloak,我正在试验Key斗篷和集成docker注册表v2 auth。一切都很顺利。但是,目前没有真正的授权层,查看github上的源代码,我可以看到有一个类AllowAllDockerProtocolMapper,它自动将docker注册表的所有权限授予登录用户 我想实现一种基于名称空间的授权机制,即登录用户只在其自己的名称空间内拥有推/拉权限(例如) 然而,现在我正努力让一个简单的工作示例启动并运行。我在上阅读了spi的keydeport指南,并在github上查看了一些示例,但现在keydeport

我正在试验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
...
  • 钥匙斗篷
当我转到Admin cli并尝试向docker-v2客户端添加新映射器时,新映射器不会显示,并且所有内容似乎与部署之前相同。在部署和服务器重新启动期间,不会引发任何错误。有人能帮我正确部署这个docker映射器吗

非常感谢您的帮助

谢谢,
-伊万

我终于找到了它不起作用的原因

由于我编辑了错误的配置文件,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>
       ...