Атрибуты#
Внешний валидатор атрибута#
Если возможностей, предоставляемых правилами преобразования входных значений с помощью регулярных выражений недостаточно для реализации требуемой бизнес-логики проверки допустимости значения атрибута, то для атрибута можно запрограммировать и настроить использование внешнего валидатора.
Для этого нужно создать программу с внешним валидатором и собрать ее в JAR-файл.
Созданный JAR-файл нужно скопировать на серверы с приложениями Blitz Identity Provider. Адрес размещения JAR-файлов прописать в Java-опцию extensionsDir.
Пример:
export JAVA_OPTS="${JAVA_OPTS} -DextensionsDir=/usr/share/identityblitz/extensions"
В блоке настроек атрибутов blitz.prod.local.idp.id-attrs.attrsMeta в блок описания атрибута, для которого нужно включить проверку через внешний валидатор, необходимо добавить в блоке source блок validators:
в настройке
classNameпрописать адрес Java-класса, реализующего имплементацию интерфейсаAttributeValidatorиз Blitz JDK;в блоке
confпрописать настройки, передающиеся в валидатор.
"id-attrs" : {
"attrsMeta" : [
{
{
"class" : "verified-mobile",
"format" : "string",
"name" : "phone_number",
"realmed" : false,
"required" : false,
"searchable" : true,
"source" : {
"validators" : [
{
"className" : "validator.MobileValidator",
"conf" : {
"conf1" : "value1"
}
}
],
"type" : "idStore"
},
"unique" : false
},
…
}
]
}
Транслятор атрибута#
С атрибутом можно ассоциировать транслятор, описывающий правила преобразования атрибута при чтении из LDAP-каталога и при записи в LDAP-каталог. Для этого необходимо:
В блоке настроек хранилища атрибута найти раздел настроек соответствия атрибутов
blitz.prod.local.idp.id-stores.list.mappingRules.В данном разделе найти раздел описания атрибута, для которого нужно включить транслятор.
В этот раздел добавить блок
translatorс настройкойclassName, в которой указать имя Java-класса, реализующего алгоритм трансляции.
"id-stores" : { "list" : [ { … "mappingRules" : [ … { "name" : "attribute name in Blitz IDP", "storeAttr" : "attribute name in LDAP", "translator" : { "className" : "className" } } ], }, … ] }
При использовании самостоятельно разработанного транслятора необходимо:
Создать программу с внешним транслятором и собрать ее в JAR-файл.
Важно
Java-класс алгоритма трансляции должен реализовывать имплементацию интерфейса LdapAttributeTranslator из Blitz JDK.
Созданный JAR-файл скопировать на серверы с приложениями Blitz Identity Provider.
Адрес размещения JAR-файлов прописать в Java-опцию
extensionsDir.export JAVA_OPTS="${JAVA_OPTS} -DextensionsDir=/usr/share/identityblitz/extensions"
Для некоторых задач Blitz Identity Provider предоставляет встроенные Java-классы:
транслятор для атрибута
objectGUIDиз Active Directory, позволяющий представить этот атрибут не в байтовом виде, а в форме строки GUID. Имя встроенного Java-классаcom.identityblitz.idp.store.ldap.core.translator.ObjectGUIDTranslator."id-stores" : { "list" : [ { … "mappingRules" : [ … { "name" : "objectGUID", "storeAttr" : "objectGUID", "translator" : { "className" : "com.identityblitz.idp.store.ldap.core.translator.ObjectGUIDTranslator" } } ], }, … ] }трансляторы для перевода значения атрибута в нижний регистр, в верхний регистр или в режим
initcap(то есть первый символ в верхний регистр, а остальные — в нижний).Перечень встроенных Java-классов:
com.identityblitz.idp.store.ldap.core.translator.LowerCaseTranslator com.identityblitz.idp.store.ldap.core.translator.UpperCaseTranslator com.identityblitz.idp.store.ldap.core.translator.InitCapTranslator
Пример перевода атрибута email в нижний регистр#"id-stores" : { "list" : [ { … "mappingRules" : [ … { "name" : "email", "storeAttr" : "email", "translator" : { "className" : "com.identityblitz.idp.store.ldap.core.translator.LowerCaseTranslator" } } ], }, … ] }Пример перевода атрибута fullname в верхний регистр#"id-stores" : { "list" : [ { … "mappingRules" : [ … { "name" : "fullname", "storeAttr" : "fullName", "translator" : { "className" : "com.identityblitz.idp.store.ldap.core.translator.UpperCaseTranslator" } } ], }, … ] }Пример перевода атрибута name в режим initcap#"id-stores" : { "list" : [ { … "mappingRules" : [ … { "name" : "name", "storeAttr" : "givenName", "translator" : { "className" : "com.identityblitz.idp.store.ldap.core.translator.InitCapTranslator" } } ], }, … ] }транслятор для атрибута
objectSIDдля его конвертации в строковый вид. Имя встроенного Java-классаcom.identityblitz.idp.store.ldap.core.translator.ObjectSIDTranslator. Для конвертированного атрибута возможен поиск, при этом операцияLIKEне поддерживается. Также нельзя его изменять и задавать при создании.Пример настройки:
"id-stores" : { "list" : [ { … "mappingRules" : [ … { "name": "objectSID", "storeAttr": "objectSID", "translator": { "className": "com.identityblitz.idp.store.ldap.core.translator.ObjectSIDTranslator" } } ], }, … ] }