Для улучшения работы сайта мы используем файлы cookies. Оставаясь на сайте, вы соглашаетесь с политикой обработки персональных данных.

Методы аутентификации. LDAP (API)

В данном разделе представлена документация API для плагина метода аутентификации LDAP StarVault. Чтобы узнать больше об использовании и работе, смотрите документацию метода аутентификации LDAP StarVault.

Этот механизм может использовать внешние сертификаты X.509 в качестве части TLS или проверки подписи. Проверка подписей на сертификаты X.509 с использованием SHA-1 устарела и больше не может использоваться без обходного решения.

В данной документации предполагается, что метод аутентификации LDAP подключен по пути /auth/ldap в StarVault. Поскольку возможно включать методы аутентификации в любом месте, пожалуйста, обновите ваши вызовы API соответственно.

1. Настройка LDAP

Эта конечная точка настраивает метод аутентификации LDAP.

Метод Путь

POST

/auth/ldap/config

1.1. Параметры

  • url (string: ldap://127.0.0.1) - сервер LDAP для подключения. Примеры: ldap://ldap.myorg.com, ldaps://ldap.myorg.com:636. Можно указать несколько URL через запятую, например ldap://ldap.myorg.com,ldap://ldap2.myorg.com; они будут проверяться по порядку.

  • case_sensitive_names (bool: false) - если установлено, имена пользователей и групп, назначенные политике, будут нечувствительны к регистру. В противном случае имена будут нормализованы в нижний регистр. Регистр будет сохранен при отправке имени пользователя на сервер LDAP во время входа; это только для соответствия локальным определениям пользователей/групп.

  • connection_timeout (integer: 30) - таймаут в секундах при попытке подключения к серверу LDAP до попытки следующего URL в конфигурации.

  • request_timeout (integer: 90) - таймаут в секундах для подключения при выполнении запросов к серверу до возврата ошибки.

  • starttls (bool: false) - Если установлено в true, выдает команду StartTLS после установления незащищенного соединения.

  • tls_min_version (string: tls12) - минимальная версия TLS для использования. Допустимые значения: tls10, tls11, tls12 или tls13.

  • tls_max_version (string: tls12) - максимальная версия TLS для использования. Допустимые значения: tls10, tls11, tls12 или tls13.

  • insecure_tls (bool: false) - если установлено в true, пропускает проверку сертификата SSL сервера LDAP - не безопасно, используйте с осторожностью!

  • certificate (string: "") - CA сертификат для использования при проверке сертификата сервера LDAP, должен быть закодирован в формате x509 PEM.

  • client_tls_cert (string: "") - клиентский сертификат для предоставления серверу LDAP, должен быть закодирован в формате x509 PEM (необязательный).

  • client_tls_key (string: "") - ключ клиентского сертификата для предоставления серверу LDAP, должен быть закодирован в формате x509 PEM (необязательный).

  • binddn (string: "") - полное DN объекта для связывания при выполнении поиска пользователя. Пример: cn=starvault,ou=Users,dc=example,dc=com.

  • bindpass (string: "") - пароль для использования вместе с binddn при выполнении поиска пользователя.

  • userdn (string: "") - база DN, под которой следует выполнять поиск пользователя. Пример: ou=Users,dc=example,dc=com.

  • userattr (string: "cn") - атрибут на объекте пользователя, соответствующий имени пользователя, переданного при аутентификации. Примеры: sAMAccountName, cn, uid.

  • discoverdn (bool: false) - использует анонимное связывание для обнаружения DN пользователей.

  • deny_null_bind (bool: true) - эта опция предотвращает обход аутентификации пользователями при предоставлении пустого пароля.

  • upndomain (string: "") - домен пользователя, используемый для построения строки UPN для аутентифицирующегося пользователя. Построенная UPN будет выглядеть как [username]@UPNDomain. Пример: example.com, что заставит StarVault связываться как username@example.com.

  • userfilter (string: "") - необязательный LDAP фильтр поиска пользователей. Шаблон может получать доступ к следующим переменным контекста: UserAttr, Username. Значение по умолчанию: ({{.UserAttr}}={{.Username}}), или ({{.UserAttr}}={{.Username@.upndomain}}) если upndomain установлен.

  • anonymous_group_search (bool: false) - использует анонимное связывание при выполнении поиска групп LDAP (обратите внимание: даже когда true, первоначальные учетные данные все равно будут использоваться для первоначального теста подключения).

  • groupfilter (string: "") - шаблон Go, используемый для построения запроса членства группы. Шаблон может получать доступ к следующим переменным контекста: [UserDN, Username]. Значение по умолчанию: (|(memberUid={{.Username}})(member={{.UserDN}})(uniqueMember={{.UserDN}})), что совместимо с несколькими распространенными схемами каталогов. Для поддержки разрешения вложенных групп для Active Directory, вместо этого используйте следующий запрос: (&(objectClass=group)(member:1.2.840.113556.1.4.1941:={{.UserDN}})).

  • groupdn (string: "") - база поиска LDAP, которую следует использовать для поиска членства в группе. Это может быть корень, содержащий либо группы, либо пользователей. Пример: ou=Groups,dc=example,dc=com.

  • groupattr (string: "") - LDAP атрибут, который нужно следовать на объектах, возвращаемых groupfilter, чтобы перечислить членство пользователей в группах. Примеры: для запросов, возвращающих группы, используйте: cn. Для запросов, возвращающих пользователей, используйте: memberOf. Значение по умолчанию: cn.

  • username_as_alias (bool: false) - если установлено в true, заставляет метод аутентификации использовать переданное пользователем имя пользователя в качестве имени алиаса.

  • dereference_aliases (string: never) - когда алиасы должны быть разыменованы при операциях поиска. Разрешенные значения: 'never', 'finding', 'searching', 'always'. По умолчанию 'never'.

  • max_page_size (int: 0) - если установлено значение больше 0, сервер LDAP будет использовать контроль поиска с постраничным доступом для запроса страниц размером до указанного размера. Это может быть использовано для избежания превышения максимального размера результата на сервере LDAP. В противном случае сервер LDAP не будет использовать контроль поиска с постраничным доступом.

  • use_token_groups (bool: true) - (Необязательно) Использовать атрибут tokenGroups, сконструированный Active Directory пользователя для поиска членства в группах.

При указании userfilter в фильтре должно присутствовать либо значение шаблона {{.UserAttr}}, либо буквальное значение, которое соответствует userattr, чтобы гарантировать, что поиск возвращает уникальный результат, который учитывает `userattr`для назначения алиаса сущности и избежать возможных коллизий при входе.

Пример запроса:
$ curl \
    --header "X-Vault-Token: ..." \
    --request POST \
    --data @payload.json \
    http://127.0.0.1:8200/v1/auth/ldap/config
Пример тела запроса:
{
  "binddn": "cn=starvault,ou=Users,dc=example,dc=com",
  "deny_null_bind": true,
  "discoverdn": false,
  "groupattr": "cn",
  "groupdn": "ou=Groups,dc=example,dc=com",
  "groupfilter": "(&(objectClass=group)(member:1.2.840.113556.1.4.1941:={{.UserDN}}))",
  "insecure_tls": false,
  "starttls": false,
  "tls_max_version": "tls12",
  "tls_min_version": "tls12",
  "url": "ldaps://ldap.myorg.com:636",
  "username_as_alias": false,
  "userattr": "samaccountname",
  "userdn": "ou=Users,dc=example,dc=com",
  "max_page_size": 1000
}

2. Чтение конфигурации LDAP

Эта конечная точка извлекает конфигурацию LDAP для метода аутентификации.

Метод Путь

GET

/auth/ldap/config

Пример запроса:
$ curl \
    --header "X-Vault-Token: ..." \
    http://127.0.0.1:8200/v1/auth/ldap/config
Пример ответа:
{
  "auth": null,
  "warnings": null,
  "wrap_info": null,
  "data": {
    "binddn": "cn=starvault,ou=Users,dc=example,dc=com",
    "bindpass": "",
    "certificate": "",
    "deny_null_bind": true,
    "discoverdn": false,
    "groupattr": "cn",
    "groupdn": "ou=Groups,dc=example,dc=com",
    "groupfilter": "(&(objectClass=group)(member:1.2.840.113556.1.4.1941:={{.UserDN}}))",
    "insecure_tls": false,
    "starttls": false,
    "tls_max_version": "tls12",
    "tls_min_version": "tls12",
    "upndomain": "",
    "url": "ldaps://ldap.myorg.com:636",
    "username_as_alias": false,
    "userattr": "samaccountname",
    "userdn": "ou=Users,dc=example,dc=com"
  },
  "lease_duration": 0,
  "renewable": false,
  "lease_id": ""
}

3. Список групп LDAP

Эта конечная точка возвращает список существующих групп в методе.

Метод Путь

LIST

/auth/ldap/groups

Пример запроса:
$ curl \
    --header "X-Vault-Token: ..." \
    --request LIST \
    http://127.0.0.1:8200/v1/auth/ldap/groups
Пример ответа:
{
  "auth": null,
  "warnings": null,
  "wrap_info": null,
  "data": {
    "keys": ["ученые", "инженеры"]
  },
  "lease_duration": 0,
  "renewable": false,
  "lease_id": ""
}

4. Чтение группы LDAP

Эта конечная точка возвращает политики, связанные с группой LDAP.

Метод Путь

GET

/auth/ldap/groups/:name

4.1. Параметры

  • name (string: ) - имя группы LDAP.

Пример запроса:
$ curl \
    --header "X-Vault-Token: ..." \
    http://127.0.0.1:8200/v1/auth/ldap/groups/admins
Пример ответа:
{
  "data": {
    "policies": ["admin", "default"]
  },
  "renewable": false,
  "lease_id": "",
  "lease_duration": 0,
  "warnings": null
}

5. Создание/Обновление группы LDAP

Эта конечная точка создает или обновляет политики группы LDAP.

Метод Путь

POST

/auth/ldap/groups/:name

5.1. Параметры

  • name (string: ) - имя группы LDAP;

  • policies (string: "") - список, разделенный запятыми, политик, связанных с группой.

Пример тела запроса:
{
  "policies": "admin,default"
}
Пример запроса:
$ curl \
    --header "X-Vault-Token: ..." \
    --request POST \
    --data @payload.json \
    http://127.0.0.1:8200/v1/auth/ldap/groups/admins

6. Удаление группы LDAP

Эта конечная точка удаляет группу LDAP и ассоциацию политик.

Метод Путь

DELETE

/auth/ldap/groups/:name

6.1. Параметры

  • name (string: ) - Имя группы LDAP.

Пример запроса:
$ curl \
    --header "X-Vault-Token: ..." \
    --request DELETE \
    http://127.0.0.1:8200/v1/auth/ldap/groups/admins

7. Список пользователей LDAP

Эта конечная точка возвращает список существующих пользователей в методе.

Метод Путь

LIST

/auth/ldap/users

Пример запроса:
$ curl \
    --header "X-Vault-Token: ..." \
    --request LIST \
    http://127.0.0.1:8200/v1/auth/ldap/users
Пример ответа:
{
  "auth": null,
  "warnings": null,
  "wrap_info": null,
  "data": {
    "keys": ["mitchellh", "armon"]
  },
  "lease_duration": 0,
  "renewable": false,
  "lease_id": ""
}

8. Чтение пользователя LDAP

Эта конечная точка возвращает политики, связанные с пользователем LDAP.

Метод Путь

GET

/auth/ldap/users/:username

8.1. Параметры

  • username (string: ) - имя пользователя LDAP.

Пример запроса:
$ curl \
    --header "X-Vault-Token: ..." \
    http://127.0.0.1:8200/v1/auth/ldap/users/mitchellh
Пример ответа:
{
  "data": {
    "policies": [
      "admin",
      "default"
    ],
    "groups": ""
  },
  "renewable": false,
  "lease_id": "",
  "lease_duration": 0,
  "warnings": null
}

9. Создание/Обновление пользователя LDAP

Эта конечная точка создает или обновляет политики пользователей LDAP и ассоциации групп.

Метод Путь

POST

/auth/ldap/users/:username

9.1. Параметры

  • username (string: ) - имя пользователя LDAP;

  • policies (string: "") - список, разделенный запятыми, политик, связанных с пользователем;

  • groups (string: "") - список, разделенный запятыми, групп, связанных с пользователем.

Пример тела запроса:
{
  "policies": "admin,default"
}
Пример запроса:
$ curl \
    --header "X-Vault-Token: ..." \
    --request POST \
    --data @payload.json \
    http://127.0.0.1:8200/v1/auth/ldap/users/mitchellh

10. Удаление пользователя LDAP

Эта конечная точка удаляет пользователя LDAP и ассоциацию политик.

Метод Путь

DELETE

/auth/ldap/users/:username

10.1. Параметры

  • username (string: ) - имя пользователя LDAP.

Пример запроса:
$ curl \
    --header "X-Vault-Token: ..." \
    --request DELETE \
    http://127.0.0.1:8200/v1/auth/ldap/users/mitchellh

11. Вход с помощью пользователя LDAP

Эта конечная точка позволяет вам войти с учетными данными LDAP.

Метод Путь

POST

/auth/ldap/login/:username

11.1. Параметры

  • username (string: ) - имя пользователя LDAP;

  • password (string: ) - пароль для пользователя LDAP.

Пример тела запроса:
{
  "password": "MyPassword1"
}
Пример запроса:
$ curl \
    --request POST \
    --data @payload.json \
    http://127.0.0.1:8200/v1/auth/ldap/login/mitchellh
Пример ответа:
{
  "lease_id": "",
  "renewable": false,
  "lease_duration": 0,
  "data": null,
  "auth": {
    "client_token": "c4f280f6-fdb2-18eb-89d3-589e2e834cdb",
    "policies": ["admins", "default"],
    "metadata": {
      "username": "mitchellh"
    },
    "lease_duration": 0,
    "renewable": false
  }
}