Сопоставление пользователей#
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