Сопоставление пользователей#

CedrusData позволяет заменить имя пользователя, использованного в процессе аутентификации, на другое имя пользователя. Это может быть актуальным для механизмов аутентификации, которые используют сложные имена пользователей, например Kerberos аутентификация или Аутентификация с помощью сертификата. Например, сопоставление пользователей позволяет сделать так, чтобы principal Kerberos со сложным именем CN=Alice Smith,OU=Finance,O=Acme,C=US отображался в CedrusData как alice.

Существует два способа сопоставления имен пользователей:

Регулярные выражения#

Сопоставление пользователей использует регулярные выражения на основе Java Pattern.

Паттерн может содержать группу, которая определяет часть удовлетворяющей паттерну строки. Группы задаются с помощью круглых скобок. Нумерация групп происходит слева направо, начиная с индекса 1. Сопоставленное имя пользователя равно значению одной из групп.

Например, если имена пользователей следуют формату alice@example.com, и вы хотите преобразовать их к формату alice, то вы можете определить паттерн (.*)(@.*), в котором целевая часть имени пользователи (например, alice) заключена в группу $1.

Сопоставление с помощью регулярного выражения#

Сопоставление имен пользователей можно задать с помощью общего для всех пользователей паттерна. В таком случае, преобразованное имя пользователя всегда будет извлечено из группы $1. Таким образом, паттерн всегда должен содержать группы. Если оригинальное имя пользователя не соответствует паттерну, пользователю будет отказано в аутентификации.

Паттерн необходимо задать на координаторе в файле etc/config.properties. Имя параметра конфигурации зависит от используемого механизма аутентификации:

Механизм аутентификации

Свойство

Password (file, LDAP, Salesforce)

http-server.authentication.password.user-mapping.pattern

OAuth2

http-server.authentication.oauth2.user-mapping.pattern

Certificate

http-server.authentication.certificate.user-mapping.pattern

Header

http-server.authentication.header.user-mapping.pattern

JSON Web Token

http-server.authentication.jwt.user-mapping.pattern

Kerberos

http-server.authentication.krb5.user-mapping.pattern

Insecure

http-server.authentication.insecure.user-mapping.pattern

Пример конфигурации для аутентификации с помощью пароля:

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)

http-server.authentication.password.user-mapping.file

OAuth2

http-server.authentication.oauth2.user-mapping.file

Certificate

http-server.authentication.certificate.user-mapping.file

Header

http-server.authentication.header.user-mapping.pattern

JSON Web Token

http-server.authentication.jwt.user-mapping.file

Kerberos

http-server.authentication.krb5.user-mapping.file

Insecure

http-server.authentication.insecure.user-mapping.file

Пример конфигурации для аутентификации с помощью пароля:

http-server.authentication.password.user-mapping.file=etc/user-mapping.json