我正在试验钥匙斗篷和集成码头注册中心v2 auth。一切都很顺利。但是,目前还没有真正的授权层,通过查看github上的源代码,我可以看到有一个类AllowAllDockerProtocolMapper,它会自动将停靠器注册中心的所有权限授予登录用户。
我想实现一种基于名称空间的授权机制,即登录用户在自己的名称空间(例如https://myregistry.local/username)中只有推挽权限。
然而,现在,我正在努力获得一个简单的工作示例并运行。我在提供者上阅读了spi的keycloak指南,并查看了github上的一些示例,但是现在部署的模块似乎还没有被keycloak捕获。
我所做的:
KEYCLOAK_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.keycloak:keycloak-services,org.keycloak.keycloak-server-spi-private,org.keycloak:keycloak-server-spi"。 <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>
...当我转到Admin cli,并尝试向docker-v2客户端添加一个新的映射器时,新的映射器将不会出现,而且一切似乎都与部署前相同。在部署和服务器重新启动期间,不会引发任何错误。有人能帮我正确部署这个码头映射器吗?
任何帮助都是非常感谢的!
谢谢,-Ivan
发布于 2019-10-23 13:26:07
我终于明白了为什么它不起作用。
由于我编辑错了配置文件,这个模块没有被Keycloak接收。我没有将提供程序添加到standalone.xml中,而是将其添加到standalone-ha.xml中。这是因为我实际上使用的是正式的密钥掩蔽器映像jboss/钥匙斗篷,通过查看它们的启动脚本docker-entrypoint.sh,可以清楚地看到使用了standalone-ha.xml。您可以在这里找到更多信息:使用Docker时没有加载的Keycloak SPI提供程序和层。
如果有人对如何为DockerV2注册表实现/部署自定义密钥披风映射器(基于用户名称空间)感兴趣:请看我的代码:https://github.com/ieggel/DockerRegistryKeycloakUserNamespaceMapper
干杯!
https://stackoverflow.com/questions/58452526
复制相似问题