У меня есть поставщик открытых идентификаторов, и я использую этого поставщика в качестве брокера идентификации keycloak. Я хочу сопоставить роли (утверждения), которые отправлены от брокера к keycloak (и keycloak отправит сопоставленные роли в своем jwt). Я хочу знать, как реализовать и добавить настраиваемый сопоставитель в keycloak (например, hardcodedmapper, attributemapper в keycloak). Я могу это сделать? Спасибо
Keycloak создать настраиваемый сопоставитель поставщика удостоверений
Ответы (2)
Создайте свой новый класс provider
, я расширил существующий класс org.keycloak.broker.saml.mappers.AttributeToRoleMapper
.
При создании jar убедитесь, что у вас есть папка с именем services внутри jar, папка META-INF.
В этой папке создайте простой текстовый файл с именем org.keycloak.broker.provider.IdentityProviderMapper
, в этот файл добавьте полное имя вашего нового класса провайдера, то есть package.Classname
.
После компиляции поместите файл в папку провайдеров под корневой папкой Keycloak. Перезагрузите контейнер.
Мне пришлось сделать что-то немного другое, чтобы мой пользовательский картограф работал с последней версией Keycloak (4.8 на момент написания этой статьи):
Создал настраиваемый картограф, расширяющий
AbstractOIDCProtocolMapper
:package com.test; import org.keycloak.protocol.oidc.mappers.AbstractOIDCProtocolMapper; public class MyTestMapper extends AbstractOIDCProtocolMapper { ... }
В
src/main/resources
создайте структуру папокMETA-INF/services
Создайте файл с именем
org.keycloak.protocol.ProtocolMapper
в каталогеMETA-INF/services
. Его содержимое должно быть всего одной строкой, содержащей полное имя класса вашего настраиваемого сопоставителя:com.test.MyTestMapper
В папке
META-INF
вsrc/main/resources
(одна вверх отservices
) создайте файл с именемjboss-deployment-structure.xml
. В зависимости от того, что вы делаете, вам нужно будет добавить сюда соответствующие модули JBoss. Для моего простого тестового картографа я использовал:<?xml version="1.0" encoding="UTF-8"?> <jboss-deployment-structure> <deployment> <dependencies> <module name="org.keycloak.keycloak-services" /> </dependencies> </deployment> </jboss-deployment-structure>
initToken
или аналогичным методом в вашем настраиваемом картографе. - person Xtreme Biker   schedule 08.10.2017