Вы просматриваете документацию Apigee Edge .
Перейдите к документации Apigee X. информация
Что
Политика 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="4GLdapPolicy"> <LdapResource>ldap1</LdapResource> <Authentication> <UserName ref="request.header.username"/> <Password ref="request.header.password"/> <Scope>subtree</Scope> <BaseDN ref="apigee.baseDN"></BaseDN> <!-- default is dc=apigee,dc=com --> </Authentication> </Ldap>
В этом примере обеспечивается проверка подлинности поставщика LDAP. Политика передает имя пользователя и пароль из запроса в LDAP для аутентификации.
Аутентификация атрибута DN
<Ldap name="LdapPolicy"> <LdapResource>ldap1</LdapResource> <Authentication> <Password ref="request.header.password"/> <SearchQuery>mail={request.header.mail}</SearchQuery> <Scope>subtree</Scope> <BaseDN ref="apigee.baseDN"></BaseDN> <!-- default is dc=apigee,dc=com --> </Authentication> </Ldap>
Эта политика получает DN пользователя с адресом электронной почты в заголовке запроса, а затем аутентифицирует пользователя по LDAP с помощью пароля, указанного в заголовке запроса.
Поиск LDAP
<Ldap name="LdapPolicy"> <!-- using a custom LDAP provider --> <LdapConnectorClass>com.custom.ldap.MyProvider</LdapConnectorClass> <LdapResource>MyLdap</LdapResource> <Search> <BaseDN ref="apigee.baseDN"></BaseDN> <!-- default is dc=apigee,dc=com --> <SearchQuery>mail={request.header.mail}</SearchQuery> <Attributes> <Attribute>address</Attribute> <Attribute>phone</Attribute> <Attribute>title</Attribute> </Attributes> <Scope></Scope> <!-- default is ‘subtree’ --> </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, а вы можете получать отличительные имена (DN) из LDAP — метаданные или атрибуты, связанные с каждым пользователем, такие как адрес электронной почты, адрес и номер телефона. Возвращенное 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="ldap1"> <Connection> <Hosts> <!-- port is optional: defaults to 389 for ldap:// and 636 for ldaps:// --> <Host port="636">foo.com</Host> </Hosts> <SSLEnabled>false</SSLEnabled> <!-- optional, defaults to false --> <Version>3</Version> <!-- optional, defaults to 3--> <Authentication>simple</Authentication> <!-- optional, only simple supported --> <ConnectionProvider>jndi|unboundid</ConnectionProvider> <!-- required --> <ServerSetType>single|round robin|failover</ServerSetType> <!-- not applicable for jndi --> <!-- If using a custom LDAP provider, the fully qualified class: --> <LdapConnectorClass>com.custom.ldap.MyProvider</LdapConnectorClass> </Connection> <ConnectPool enabled="true"> <!-- enabled is optional, defaults to true --> <Timeout>30000</Timeout> <!-- optional, in milliseconds; if not set, no timeout --> <Maxsize>50</Maxsize> <!-- optional; if not set, no max connections --> <Prefsize>30</Prefsize> <!-- optional; if not set, no pref size --> <Initsize></Initsize> <!-- optional; if not set, defaults to 1 --> <Protocol></Protocol> <!-- optional; if not set, defaults to 'ssl plain' --> </ConnectPool> <Admin> <DN>cn=manager,dc=apigee,dc=com</DN> <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:password -d \ '<LdapResource name="ldap1"> <Connection> <Hosts> <Host>foo.com</Host> </Hosts> <SSLEnabled>false</SSLEnabled> <Version>3</Version> <Authentication>simple</Authentication> <ConnectionProvider>unboundid</ConnectionProvider> <ServerSetType>round robin</ServerSetType> </Connection> <ConnectPool enabled="true"> <Timeout>30000</Timeout> <Maxsize>50</Maxsize> <Prefsize>30</Prefsize> <Initsize></Initsize> <Protocol></Protocol> </ConnectPool> <Admin> <DN>cn=manager,dc=apigee,dc=com</DN> <Password>secret</Password> </Admin> </LdapResource>'
Коды ответов
Ниже приведены коды ответов HTML, которые политика возвращает в случае успеха или неудачи:
- Успех : 200
- Ошибка : 401
Использование собственного поставщика LDAP в Edge для частного облака
Использование собственного поставщика LDAP
Apigee Edge для частного облака поставляется с поставщиком 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 в свою среду и убедитесь, что он находится в вашем пути к классам.
- Создайте ресурс среды для вашего провайдера LDAP. Вы будете использовать имя ресурса среды в элементе
<LdapResource>
политики LDAP.
Использование UnboundID LDAP SDK для Java
Вы можете использовать UnboundID LDAP SDK с политикой LDAP, но сначала необходимо загрузить версию 2.3.1 и добавить ее в каждый путь к классам вашего процессора сообщений.
Чтобы использовать UnboundID LDAP SDK с политикой LDAP:
- Откройте браузер и перейдите в хранилище файлов Sourceforge для UnboundID LDAP SDK:
https://sourceforge.net/projects/ldap-sdk/files/
- Найдите версию 2.3.1 (SE или Standard Edition ) SDK и загрузите 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
в путь к классам. - Скопируйте файл 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. |