Вы просматриваете документацию Apigee Edge .
Перейти к документации Apigee X. info
Что
Политика LDAP предусматривает:
- Аутентификация : Учётные данные пользователя, предоставленные в запросе, проверяются на соответствие учётным данным LDAP-провайдера. Политика LDAP обеспечивает большую гибкость аутентификации, позволяя использовать любое значение DN вместе с паролем, даже если нужное вам значение DN отсутствует в запросе. Например, предположим, что для аутентификации вам нужно использовать адрес электронной почты и пароль. Возможны следующие варианты:
- Если адрес электронной почты указан в запросе, вы можете просто использовать его вместе с паролем для аутентификации LDAP.
- Если адрес электронной почты отсутствует в запросе, но есть другой атрибут DN (например, номер телефона), вы можете использовать номер телефона для получения соответствующего адреса электронной почты из LDAP, а затем использовать адрес электронной почты и пароль для аутентификации.
- Поиск по отличительному имени (DN) : Помимо аутентификации, вы также можете использовать политику LDAP для определения атрибута пользователя в запросе, например адреса электронной почты, и выполнить запрос, который извлекает другие атрибуты DN этого пользователя из LDAP. Полученное DN сохраняется в переменной.
Используйте политику LDAP, когда доступ к защищённым ресурсам должен быть ограничен пользователями вашего LDAP-провайдера, такими как администраторы, пользователи организации и разработчики, особенно когда доступ к токену OAuth не нужен или слишком «тяжелый». Эта политика также предназначена для извлечения метаданных доменного имени для использования в потоках прокси-API.
Например, можно настроить выполнение вызова API только в том случае, если пользователь успешно прошел аутентификацию в LDAP; а затем при необходимости извлечь атрибуты DN (доменного имени) для пользователя после успешной аутентификации.
Дополнительную информацию см.:
- Управление политикой паролей LDAP по умолчанию для управления API
- « Важная информация о вашей политике паролей » в сообществе Apigee
Образцы
Аутентификация по имени пользователя и паролю
<Ldap name="4GLdapPo>licy<"
Ld>apRes<ourceldap1/Ld>apRe<source
Auth>enticati<on
UserName ref="request.he>ader.use<rname"/
Password ref=">request.<heade>r.passw<ord&qu>ot;/
< Scopesubtree/Scope
>< Bas>e<DN ref="apigee.baseDN"/B>aseDN< !-- default is> d<c=api>gee,dc=com --
/Authentication
/LdapЭтот пример обеспечивает аутентификацию через LDAP-провайдера. Политика передаёт имя пользователя и пароль из запроса в LDAP для аутентификации.
Аутентификация атрибута DN
<Ldap name="LdapPo>licy<"
Ld>apRes<ourceldap1/Ld>apRe<source
Auth>enticati<on
Password ref="request.he>ader.pas<sword">/
SearchQuerymail={<request.head>er.mail}</Sear>chQuery<
> Scopes<ubtree/Scope
BaseDN>< ref=&q>u<ot;apigee.baseDN"/BaseDN !-- >defau<lt is dc=apigee>,d<c=com> --
/Authentication
/LdapЭта политика получает DN пользователя с адресом электронной почты в заголовке запроса, а затем аутентифицирует пользователя через LDAP с паролем, указанным в заголовке запроса.
Поиск LDAP
<Ldap name="LdapPo>licy&<quot; !-- using a custom LDAP p>rovid<er -- LdapConn>ectorClasscom.custom.ldap.<MyProvider/LdapConn>ector<Class Ld>apReso<urceMyLdap/Ld>apRes<ource<>/span> Searc<h BaseDN ref="><;apigee>.<baseDN"/BaseDN !-- default is> dc=apige<e,dc=com --> SearchQuerymail={<request.head>er.mail}/<SearchQuer>y Att<ributes > < Attrib>uteaddress/At<tribute > < Attr>ibutephone/At<tribute > < Attr>ibutetitl<e/Attribute> </Attr><ibutes> < Scope/S‘cope !-’- d>efaul<t is su>b<tree >-- /Search /Ldap
Эта политика ссылается на настраиваемого провайдера LDAP. Она использует адрес электронной почты в заголовке запроса для идентификации пользователя, а затем извлекает адрес, номер телефона и обращение пользователя из LDAP. Полученные атрибуты DN сохраняются в переменной. См. раздел «Переменные, специфичные для данной политики».
Для поиска LDAP и получения атрибутов DN запрос должен включать учетные данные администратора.
Ссылка на элемент
Ниже приведены описания элементов и атрибутов политики LDAP.
Элемент | Описание |
|---|---|
| Родительский элемент с атрибутом имени, в который можно ввести имя политики. |
| При использовании политики LDAP с пользовательским провайдером LDAP (не предоставляемым Apigee) укажите полный класс коннектора LDAP. Это класс, в котором вы реализовали интерфейс |
| Введите имя среды для ресурса LDAP. Подробнее см. в разделе Создание ресурса LDAP . |
| Базовый уровень LDAP, на котором находятся все ваши данные. Например, в LDAP-провайдере Apigee все данные находятся в каталоге
|
|
|
Аутентификация | |
| Родительский элемент для реализуемого вами поведения аутентификации. |
| Пустой элемент, принимающий один из следующих атрибутов:
Если вы не выполняете аутентификацию с использованием имени пользователя или имя пользователя не включено в запрос, вам не нужно включать этот элемент. Если имя пользователя указано в запросе, но вы хотите аутентифицировать пользователя с атрибутом DN, отличным от имени пользователя, например, адресом электронной почты, включите |
| Пустой элемент, принимающий один из следующих атрибутов:
|
| Если вы хотите выполнить аутентификацию с использованием атрибута DN, отличного от имени пользователя, например адреса электронной почты, настройте политику LDAP для получения атрибута DN из запроса (например, имени пользователя), который используется для идентификации пользователя в LDAP, получения адреса электронной почты и аутентификации пользователя. Например, предположим, что LDAP определяет атрибут «mail» для хранения адреса электронной почты: |
Поиск | |
| Родительский элемент для реализуемого вами поведения поиска. |
| Идентифицируя пользователя с помощью метаданных в запросе или ответе, вы можете использовать этот элемент для получения дополнительных атрибутов DN пользователя из LDAP. Например, если запрос содержит адрес электронной почты пользователя, а ваш LDAP определяет атрибут Этот запрос ищет в LDAP адрес электронной почты, соответствующий адресу в запросе, и политика теперь может извлекать дополнительные атрибуты DN для этого пользователя с помощью элемента Attributes. |
| Используйте один или несколько элементов Например, после того как Значения атрибутов — это имена атрибутов DN, определенные в вашем LDAP. <Attributes> <Attribute>address</Attribute> <Attribute>phone</Attribute> <Attribute>title</Attribute> </Attributes> |
Заметки об использовании
Apigee Edge для частного облака позволяет использовать LDAP-провайдера в вызовах API. С помощью политики LDAP приложения могут аутентифицировать учётные данные пользователей, хранящихся в LDAP, а вы можете извлекать из LDAP уникальные имена (DN) — метаданные или атрибуты, связанные с каждым пользователем, такие как адрес электронной почты, почтовый адрес и номер телефона. Возвращаемое DN сохраняется в переменной для дальнейшего использования API-прокси.
Создать ресурс LDAP
Политика LDAP использует ресурс LDAP, созданный в Apigee Edge. Ресурс LDAP предоставляет информацию о подключении к вашему репозиторию LDAP.
Для создания и управления ресурсами LDAP используйте следующий API и полезную нагрузку:
API
Создайте ( POST ) ресурс LDAP или получите список ( GET ) всех ресурсов LDAP:
/v1/organizations/org_name/environments/environment/ldapresources
Получить сведения о ( GET ), обновить ( POST ) и удалить ( DELETE ) ресурс LDAP:
/v1/organizations/org_name/environments/environment/ldapresources/ldap_resource_name
Полезная нагрузка
Ниже приведен пример полезной нагрузки XML с комментариями по использованию.
<LdapResource name="l>dap<1" >Conne<ction> Ho<sts !-- port is optional: defaults to 389 for ldap:// and 636 for l>daps://< -- Host >port=&q<uot;6>36&qu<ot;foo>.com/<Host />Hosts< SSLEna>b<ledfalse/SSLEnabled !-- optional, >defau<lts to >f<alse -- > < Version3/Version !-- optio>nal, <defaults to 3->- <Authentications>i<mple/Authentication !-- optional, only> simp<le supported -- > ConnectionPr<oviderjndi|unboundi>d</ConnectionProv>ider <!-- required >-- ServerSetTypesingle|<round robin|fa>i<lover/ServerSetType !-- not ap>plica<ble for jndi -- !-- If using a custom LDAP provider, the fully> qual<ified class: -- > LdapConnectorClasscom.cu<stom.ldap.MyProvide>r/L<dapConnecto>rCl<ass /Connection Connec>t<Pool enabled="true" !-- enabled is> opti<onal, d>efaul<ts to tr>u<e -- Timeout30000/Timeout !-- optional, in milliseco>nds; <if not >se<t, no ti>m<eout -- Maxsize50/Maxsize !-- optional; if >not s<et, no m>ax< connecti>o<ns -- Prefsize30/Prefsize !-- optiona>l; if< not set><, no pref> <size -- Initsize/Initsize !-- optional>; if <not set,>< defaults> <to 1 -- Protocol/Protocol !-- optional; if not s>et,< defaults to> <39;ss>l pla<in>' -- /ConnectPool A<dmi>n < DNcn=ma>nager,<dc=apigee>,dc<=com/D>N< Password>secret/Password /Admin /LdapResource
Пример curl: создание ресурса LDAP
В следующем примере создается ресурс LDAP с именем ldap1 .
curl -X POST -H "Content-Type: application/xml" \ https://api.enterprise.apigee.com/v1/organizations/myorg/environments/test/ldapresources \ -u apigee_email:passwor<d -d \ 'LdapResourc>e nam<e="ld>ap1&quo<t; > Conne<ctio>n < Host>s < Hostf>oo.com/<Host > /Hos<ts SS>LEnable<dfalse/>S<SLEnable>d < Version3/Vers>ion < Authenticat>ionsimp<le/Authentication > Con<nectionProviderunbo>undid/C<onnectionProv>ider <ServerSetTyper>ound <robin/Serve>rSetT<ype /Connection Co>nnectPo<ol enab>led=&<quot;tru>e"< >Ti<meout300>00/Time<out > <Maxsize50>/Maxsiz<e ><Prefsize3>0/Prefs<ize >< Initsiz>e/Ini<tsize >Proto<col/P>rotocol< > /ConnectPool Admin < > DNcn=<manager,>dc=api<gee,dc=co>m/DN < >Pas<swordsecret/P>assword /Admin /LdapResource'
Коды ответов
Ниже приведены коды ответов HTML, которые политика возвращает в случае успеха или неудачи:
- Успех : 200
- Ошибка : 401
Использование настраиваемого поставщика LDAP в Edge для частного облака
Использование пользовательского провайдера LDAP
Apigee Edge for Private Cloud поставляется с поставщиком LDAP, который уже настроен для взаимодействия с политикой LDAP. Однако, если вы используете собственный поставщик LDAP, необходимо включить поддержку политики LDAP в этом поставщике. Для этого:
- В классе поставщика LDAP реализуйте интерфейс
ExternalLdapConProvider.public interface ExternalLdapConProvider { void doAuthentication(LdapBean LlapBean, String userDN, String password, String baseDN); void doSearchAndAuthentication(LdapBean LlapBean, String password, String baseDN, String query, int scope); Collection<Map<String, String[]>> doSearch(LdapBean LlapBean, String query, String baseDN, Collection<String> requiredAttributes, int scope); void closeConnections(); } - В
<LdapConnectorClass>конфигурации политики (следующие разделы) добавьте полное имя класса вашего поставщика LDAP. - Загрузите этот файл: custom-ldap.jar_.zip . (Возможно, вам придётся щелкнуть правой кнопкой мыши и выбрать «Сохранить как ».)
- Разархивируйте его.
- Добавьте файл custom-ldap.jar в свою среду и убедитесь, что он есть в вашем classpath.
- Создайте ресурс среды для вашего LDAP-провайдера. Имя ресурса среды будет использоваться в элементе
<LdapResource>политики LDAP.
Использование UnboundID LDAP SDK для Java
Вы можете использовать UnboundID LDAP SDK с политикой LDAP, но сначала необходимо загрузить версию 2.3.1 и добавить ее в каждый classpath вашего обработчика сообщений.
Чтобы использовать UnboundID LDAP SDK с политикой LDAP:
- Откройте браузер и перейдите в репозиторий файлов Sourceforge для UnboundID LDAP SDK:
https://sourceforge.net/projects/ldap-sdk/files/
- Найдите версию SDK 2.3.1 (SE или Standard Edition ) и скачайте ZIP-файл для этой версии. Например, скачайте "unboundid-ldapsdk-2.3.1-se.zip".
- Извлеките JAR-файл из ZIP-файла SDK, как показано в следующем примере:
unzip -j -d ~/tmp ~/Downloads/unboundid-ldapsdk-2.3.1-se.zip unboundid-ldapsdk-2.3.1-se/unboundid-ldapsdk-se.jar
Эта команда извлекает только JAR-файл в каталог ~/tmp. С помощью
-jможно удалить структуру каталогов, хотя это необязательно. - На каждом узле процессора сообщений:
- Скопируйте JAR-файл в каталог
/opt/apigee/edge-gateway/lib/thirdpartyобработчика сообщений. - При необходимости предоставьте пользователю Apigee разрешение на доступ к JAR-файлу, чтобы обработчик сообщений мог получить к нему доступ.
Edge добавляет все сторонние библиотеки из каталога
/opt/apigee/edge-gateway/lib/thirdpartyв classpath. - Скопируйте JAR-файл в каталог
- Перезапустите обработчик сообщений:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
Переменные потока
Ниже приведены переменные политики LDAP, заполняемые SearchQuery .
Переменная | Описание |
|---|---|
ldap.policyName.execution.success | После выполнения политики эта переменная потока содержит значение «истина» или «ложь» в зависимости от результата. |
ldap.policyName.search.result[index]. attribute.attrName[index]=value | Гибкий формат этой переменной, в частности индекса, учитывает наличие нескольких атрибутов, а также атрибутов с несколькими значениями. Индекс — это число, начинающееся с 1. Если индекс не указан, по умолчанию используется индекс 1. Если политика возвращает адрес, телефон и адрес электронной почты, вы можете получить первый атрибут и значение, используя следующие переменные: ldap.policyName.search.result.attribute.address ldap.policyName.search.result.attribute.phone ldap.policyName.search.result.attribute.email Если вы хотите получить третий атрибут адреса в результатах поиска, вы бы использовали это: ldap.policyName.search.result[3].attribute.address Если атрибут имеет несколько значений (например, если у пользователя несколько адресов электронной почты), вы бы извлекли второй адрес электронной почты из результатов следующим образом: ldap.policyName.search.result.attribute.mail[2] |
Коды ошибок
Ошибки, возвращаемые политиками Edge, имеют единый формат, описанный в справочнике кодов ошибок .
Эта политика использует следующие коды ошибок:
| Код ошибки | Сообщение |
|---|---|
InvalidAttributeName | Invalid attribute name {0}. |
InvalidSearchBase | Search base can not be empty. |
InvalidValueForPassword | Invalid value for password field. It can not be empty. |
InvalidSearchScope | Invalid scope {0}. Allowed scopes are {1}. |
InvalidUserCredentials | Invalid user credentials. |
InvalidExternalLdapReference | Invalid external ldap reference {0}. |
LdapResourceNotFound | Ldap resource {0} not found. |
BaseDNRequired | Base DN required. |
OnlyReferenceOrValueIsAllowed | Only value or reference is allowed for {0}. |
AttributesRequired | At least one attribute required for search action. |
UserNameIsNull | User name is null. |
SearchQueryAndUserNameCannotBePresent | Both search query and username can not be present in the authentication action. Please specify either one of them. |