Сопоставление пользователей#
CedrusData позволяет заменить имя пользователя, использованного в
процессе аутентификации, на другое имя пользователя. Это может быть
актуальным для механизмов аутентификации, которые используют сложные
имена пользователей, например Kerberos аутентификация или Аутентификация с помощью сертификата.
Например, сопоставление пользователей позволяет сделать так,
чтобы principal Kerberos со сложным именем CN=Alice Smith,OU=Finance,O=Acme,C=US отображался в CedrusData как alice.
Существует два способа сопоставления имен пользователей:
С помощью регулярного выражения
С помощью правил в формате JSON, записанных в файле
Регулярные выражения#
Сопоставление пользователей использует регулярные выражения на основе Java Pattern.
Паттерн может содержать группу,
которая определяет часть удовлетворяющей паттерну строки.
Группы задаются с помощью круглых скобок.
Нумерация групп происходит слева направо, начиная с индекса 1.
Сопоставленное имя пользователя равно значению одной из групп.
Например, если имена пользователей следуют формату alice@example.com, и вы хотите преобразовать их к формату alice,
то вы можете определить паттерн (.*)(@.*), в котором целевая часть имени пользователи (например, alice) заключена в группу $1.
Сопоставление с помощью регулярного выражения#
Сопоставление имен пользователей можно задать с помощью общего для всех пользователей паттерна.
В таком случае, преобразованное имя пользователя всегда будет извлечено из группы $1.
Таким образом, паттерн всегда должен содержать группы.
Если оригинальное имя пользователя не соответствует паттерну, пользователю будет отказано в аутентификации.
Паттерн необходимо задать на координаторе в файле etc/config.properties. Имя параметра конфигурации зависит от используемого механизма аутентификации:
Механизм аутентификации |
Свойство |
|---|---|
Password (file, LDAP, Salesforce) |
|
OAuth2 |
|
Certificate |
|
Header |
|
JSON Web Token |
|
Kerberos |
|
Insecure |
|
Пример конфигурации для аутентификации с помощью пароля:
http-server.authentication.password.user-mapping.pattern=(.*)(@.*)
Сопоставление с помощью файла#
Сопоставление пользователей с помощью файла позволяет задать более сложные правила.
Правила описываются с помощью JSON. В процессе аутентификации происходит последовательный вызов правил в порядке их указания в файле до первого успешного совпадения имени пользователя с паттерном правила. Если ни одного совпадения не найдено, пользователю будет отказано в аутентификации.
Каждое правило состоит из следующих полей:
pattern(обязательно): регулярное выражение (паттерн). Если оригинальное имя пользователя удовлетворяет паттерну, к нему будет применено текущее правило.user(необязательно): строка, которая определяет правило замены оригинального имени пользователя на сопоставленное имя пользователя. Строка может включать ссылки на группы. Значение по умолчанию:$1(первая группа паттерна).allow(необязательно): разрешена ли аутентификация для пользователя, имя которого удовлетворяет текущему правилу.case(необязательно): один из:keep- сохранить сопоставленное имя пользователя как есть (поведение по умолчанию)lower- преобразовать сопоставленное имя пользователя к нижнему регистру. Например,AdminиADMINбудут преобразованы кadmin.upper- преобразовать сопоставленное имя пользователя к верхнему регистру. Например,adminиAdminбудут преобразованы кADMIN.
В следующем примере заданы несколько правил:
Пользователю
test@example.comотказано в аутентификацииВсе имена пользователей в формате
alice@example.comбудут преобразованы кaliceВсе имена пользователей в формате
bob@uk.example.comбудут преобразованы кbob_ukИмена пользователей в домене
@uppercase.comбудут преобразованы к верхнему регистру:john@uppercase.com -> JOHN.
{
"rules": [
{
"pattern": "test@example\\.com",
"allow": false
},
{
"pattern": "(.+)@example\\.com"
},
{
"pattern": "(?<user>.+)@(?<region>.+)\\.example\\.com",
"user": "${user}_${region}"
},
{
"pattern": "(.*)@uppercase.com",
"case": "upper"
}
]
}
Путь к файлу необходимо задать на координаторе в файле etc/config.properties.
Файл должен быть расположен в файловой системе координатора.
Имя параметра конфигурации зависит от используемого механизма аутентификации:
Механизм аутентификации |
Свойство |
|---|---|
Password (file, LDAP, Salesforce) |
|
OAuth2 |
|
Certificate |
|
Header |
|
JSON Web Token |
|
Kerberos |
|
Insecure |
|
Пример конфигурации для аутентификации с помощью пароля:
http-server.authentication.password.user-mapping.file=etc/user-mapping.json