Методы аутентификации. LDAP (API)
В данном разделе представлена документация API для плагина метода аутентификации LDAP StarVault. Чтобы узнать больше об использовании и работе, смотрите документацию метода аутентификации LDAP StarVault.
|
Этот механизм может использовать внешние сертификаты X.509 в качестве части TLS или проверки подписи. Проверка подписей на сертификаты X.509 с использованием SHA-1 устарела и больше не может использоваться без обходного решения. |
В данной документации предполагается, что метод аутентификации LDAP подключен по пути /auth/ldap в StarVault. Поскольку возможно включать методы аутентификации в любом месте, пожалуйста, обновите ваши вызовы API соответственно.
1. Настройка LDAP
Эта конечная точка настраивает метод аутентификации LDAP.
| Метод | Путь |
|---|---|
|
|
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 пользователя для поиска членства в группах.
|
При указании |
$ 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 для метода аутентификации.
| Метод | Путь |
|---|---|
|
|
$ 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
Эта конечная точка возвращает список существующих групп в методе.
| Метод | Путь |
|---|---|
|
|
$ 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.
| Метод | Путь |
|---|---|
|
|
5. Создание/Обновление группы LDAP
Эта конечная точка создает или обновляет политики группы LDAP.
| Метод | Путь |
|---|---|
|
|
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
7. Список пользователей LDAP
Эта конечная точка возвращает список существующих пользователей в методе.
| Метод | Путь |
|---|---|
|
|
$ 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.
| Метод | Путь |
|---|---|
|
|
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 и ассоциации групп.
| Метод | Путь |
|---|---|
|
|
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
11. Вход с помощью пользователя LDAP
Эта конечная точка позволяет вам войти с учетными данными LDAP.
| Метод | Путь |
|---|---|
|
|
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
}
}