Я экспериментирую с keycloak и интегрированной аутентификацией реестра Docker v2. Все работает нормально с этим. Однако в настоящее время нет реального уровня авторизации, и, посмотрев на исходный код на github, я вижу, что существует класс AllowAllDockerProtocolMapper , который автоматически предоставляет все разрешения для реестра докера зарегистрированному пользователю.
Я хотел бы реализовать механизм авторизации на основе пространства имен, т. Е. Чтобы вошедший в систему пользователь имел полномочия только на push / pull внутри своего собственного пространства имен (например, https://myregistry.local/username).
Прямо сейчасОднако, я изо всех сил пытаюсь получить простой рабочий пример. Я прочитал руководство по keycloak для spi на https://www.keycloak.org/docs/latest/server_development/index.html#_providers и посмотрел некоторые примеры на github, но сейчас развернутый модуль, похоже, не выбранвверх по keycloak.
Что я сделал:
- Создан класс UserNamespaceMapper , который расширяет DockerAuthV2ProtocolMapper и реализует DockerAuthV2AttributeMapper (Я в основном скопировал пример из AllowAllDockerProtocolMapper )
- Создал dirs META-INF / services на classpath и поместил туда файл с именем org.keycloak.protocol.ProtocolMapper , который содержит полное имя для моего UserNamespaceMapper class
- Createdjar docker-user-namespace-mapper.jar из моего исходного кода
Создал модуль, выполнив следующую команду:
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"
.
Модифицированный standalone.xml:
<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>
...
Когда я иду вАдминистратор кли и попробуйте добавить новый сопоставитель для клиента docker-v2, новый сопоставитель не отображается, и все выглядит так же, как до развертывания. Во время развертывания и перезапуска сервера ошибок не выдается. Кто-нибудь может мне помочь правильно установить этот докер маппер?
Любая помощь очень ценится!
Спасибо, Иван