Estás viendo la documentación de Apigee Edge.
Ve a la
Documentación de Apigee X. información
Qué
La política de LDAP proporciona lo siguiente:
- Autenticación: Se validan las credenciales de usuario proporcionadas en la solicitud.
con las credenciales del proveedor de LDAP. La política de LDAP te brinda mucha flexibilidad con
autenticación, lo que te permite usar cualquier valor DN junto con la contraseña, incluso si ese valor DN
que deseas no está en la solicitud. Por ejemplo, digamos que necesitas usar correo electrónico / contraseña para
autenticación. Las siguientes opciones son posibles:
- Si el correo electrónico está en la solicitud, puede usarlo con la contraseña de LDAP. autenticación.
- Si el correo electrónico no se incluye en la solicitud, pero sí otro atributo DN (como el número de teléfono), puedes usar el número de teléfono para obtener el correo electrónico correspondiente de LDAP y, luego, usar las para autenticarse.
- Búsqueda de nombre distinguido (DN): Además de la autenticación, puedes usar la política LDAP para identificar un atributo de usuario en la solicitud, como el correo electrónico, y realizar una consulta que recupere otros atributos de DN de LDAP para ese usuario. El DN recuperado es se almacenan en una variable.
Usa la política de LDAP cuando el acceso a los recursos protegidos esté limitado a los usuarios de tu LDAP de servicios en la nube, como los usuarios administradores, los usuarios de la organización y los desarrolladores, El acceso al token de OAuth es innecesario o demasiado pesado. La política también está diseñada recuperar metadatos de nombres de dominio para usarlos en flujos de proxy de API
Por ejemplo, puedes hacer que solo se ejecute una llamada a la API cuando un usuario se autenticó correctamente con LDAP; y, de manera opcional, recuperar atributos DN (Nombre de dominio) para el usuario la autenticación de forma correcta.
Para obtener información adicional, consulta:
- Gestionar la política de contraseñas de LDAP predeterminada para la administración de API
- "Información importante sobre tu política de contraseñas" en la Comunidad de Apigee
Ejemplos
Autenticación con nombre de usuario y contraseña
<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>
Esta muestra proporciona autenticación en un proveedor de LDAP. La política pasa el nombre de usuario y la contraseña de la solicitud a LDAP para la autenticación.
Autenticación de atributos de 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>
Esta política obtiene el DN del usuario con el correo electrónico en el encabezado de la solicitud. autentica al usuario en LDAP con la contraseña proporcionada en el encabezado de la solicitud.
Buscando 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>
Esta política hace referencia a un proveedor de LDAP personalizado. Usa la dirección de correo electrónico de la solicitud encabezado para identificar al usuario y, luego, recupera la dirección, el teléfono y el cargo del usuario de o LDAP. Los atributos de DN recuperados se almacenan en una variable. Consulta "Información específica variables".
Para buscar LDAP y recuperar atributos de DN, la solicitud debe incluir credenciales.
Referencia del elemento
A continuación, se encuentran las descripciones de los elementos y atributos de la política de LDAP.
Elemento |
Descripción |
---|---|
|
Elemento superior con un atributo de nombre para que ingreses el nombre de la política. |
|
Cuando se usa la política de LDAP con un LDAP personalizado
proveedor (no proporcionado por Apigee), especifica la clase del conector LDAP completamente calificado.
Esa es la clase en la que implementaste el |
|
Ingresa el nombre del entorno del recurso LDAP. Consulta Cómo crear un Recurso de LDAP para obtener más información. |
|
Es el nivel base de LDAP en el que se encuentran todos tus datos. Por ejemplo, en
Proveedor de LDAP de Apigee, todos los datos están en
|
|
|
Autenticación |
|
|
Elemento superior para el comportamiento de autenticación que implementarás. |
|
Elemento vacío que toma uno de los siguientes atributos:
Si no autenticas con un nombre de usuario o si el nombre de usuario no está incluido en la no necesitas incluir este elemento. Si el nombre de usuario está en la solicitud, pero quieres autenticar a un usuario con un atributo DN
que no sea nombre de usuario, como correo electrónico, incluye un |
|
Elemento vacío que toma uno de los siguientes atributos:
|
|
Si quieres autenticarte con un atributo DN que no sea el nombre de usuario, como el correo electrónico, configurar la política de LDAP para obtener un atributo DN de la solicitud (como un nombre de usuario) que se usa para identificar al usuario en LDAP, recuperar el correo electrónico y autenticar el usuario. Por ejemplo, supongamos que LDAP define un “correo electrónico” para almacenar la dirección de correo electrónico:
|
Buscar |
|
|
Elemento superior para el comportamiento de búsqueda que implementas. |
|
Al identificar al usuario con metadatos en la solicitud o respuesta, puedes usar
para recuperar atributos DN adicionales para el usuario desde LDAP. Por ejemplo, si el
contiene el correo electrónico del usuario, y tu LDAP define un atributo
Esta consulta busca en LDAP un correo electrónico que coincida con el correo electrónico de la solicitud, y el ahora puede recuperar atributos de DN adicionales para ese usuario con el campo Attributes . |
|
Usa uno o más elementos Por ejemplo, después de que Los valores de los atributos son los nombres de los atributos DN definidos en tu LDAP. <Attributes> <Attribute>address</Attribute> <Attribute>phone</Attribute> <Attribute>title</Attribute> </Attributes> |
Notas de uso
Apigee Edge para la nube privada te permite aprovechar un proveedor de LDAP en las llamadas a la API. Con el LDAP política, las aplicaciones pueden autenticar credenciales contra usuarios almacenados en LDAP, y tú puedes recuperar nombres distinguidos (DN) de LDAP: los metadatos, o atributos, asociados cada usuario, como correo electrónico, dirección y número de teléfono. El DN devuelto se almacena en una variable el proxy de API puede seguir usándolo.
Crea un recurso de LDAP
La política de LDAP aprovecha un recurso de LDAP que se crea en Apigee Edge. Un recurso de LDAP proporciona la información de conexión a tu repositorio LDAP.
Para crear y administrar recursos LDAP, usa la siguiente API y carga útil:
API
Crea (POST
) un recurso de LDAP o enumera (GET
) todos los recursos de LDAP:
/v1/organizations/org_name/environments/environment/ldapresources
Obtén detalles sobre (GET
), actualiza (POST
) y borra (DELETE
) un recurso de LDAP:
/v1/organizations/org_name/environments/environment/ldapresources/ldap_resource_name
Carga útil
A continuación, se muestra un ejemplo de carga útil de XML con comentarios de uso.
<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>
Ejemplo de curl: Crea un recurso de LDAP
En el siguiente ejemplo, se crea un recurso LDAP llamado 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>'
Códigos de respuesta
A continuación, se detallan los códigos de respuesta HTML que la política muestra para su ejecución correcta o incorrecta:
- Listo: 200
- Error: 401
Usa un proveedor de LDAP personalizado en Edge para la nube privada
Uso de un producto Proveedor de LDAP
Apigee Edge para la nube privada incluye un proveedor de LDAP que ya está configurado para interactuar con la política de LDAP. Sin embargo, si usas un proveedor de LDAP personalizado, debes habilitar al proveedor para que admita la política de LDAP. Para ello, sigue estos pasos:
- En tu clase de proveedor de LDAP, implementa la interfaz
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(); }
- En el
<LdapConnectorClass>
de la configuración de la política (siguientes secciones), agregar el nombre de clase completamente calificado de tu proveedor de LDAP personalizado. - Descarga este archivo: custom-ldap.jar_.zip. (es posible que debas hacer clic con el botón derecho y seleccionar Guardar como).
- Descomprímelo.
- Agrega el archivo custom-ldap.jar a tu entorno y asegúrate de que esté en tu ruta de clase.
- Crea un recurso de entorno para tu proveedor de LDAP. Usarás la herramienta de entorno
en el elemento
<LdapResource>
de la política de LDAP.
Con el SDK de LDAP de UnboundID para Java
Puedes usar el SDK de LDAP UnboundID con la política de LDAP, pero primero debes descargar la versión 2.3.1 y agregarlo a cada una de las rutas de clase de Message Processor.
Para usar el SDK de LDAP UnboundID con la política de LDAP, sigue estos pasos:
- Abre un navegador y navega al repositorio de archivos de Sourceforge para el SDK de LDAP de UnboundID:
https://sourceforge.net/projects/ldap-sdk/files/
- Busca la versión 2.3.1 (SE o Standard Edition) del SDK y descarga el archivo ZIP para esa versión. Por ejemplo, descarga “unboundid-ldapsdk-2.3.1-se.zip”.
- Extrae el archivo JAR del archivo ZIP del SDK, como se muestra en el siguiente ejemplo:
unzip -j -d ~/tmp ~/Downloads/unboundid-ldapsdk-2.3.1-se.zip unboundid-ldapsdk-2.3.1-se/unboundid-ldapsdk-se.jar
Este comando extrae solo el archivo JAR en el directorio ~/tmp. Quita el directorio con
-j
, aunque esto es opcional. - En cada nodo de Message Processor:
- Copia el archivo JAR a Message Processor
/opt/apigee/edge-gateway/lib/thirdparty
. - Si es necesario, otórgale permiso al usuario de Apigee en el archivo JAR para que el procesador de mensajes pueda acceder a él.
- Reinicia el procesador de mensajes:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
Edge agrega todas las bibliotecas de terceros
/opt/apigee/edge-gateway/lib/thirdparty
a la ruta de clase. - Copia el archivo JAR a Message Processor
Variables de flujo
A continuación, se muestran las variables de la política de LDAP que propaga un SearchQuery
.
Variable |
Descripción |
---|---|
ldap.policyName.execution.success |
Después de que se ejecuta la política, esta variable de flujo contiene el valor "true" o "false", según el resultado. |
ldap.policyName.search.result[index]. attribute.attrName[index]=value |
El formato flexible de esta variable, el índice en particular: cuentas para múltiples atributos, así como atributos con múltiples de salida. El índice es un número que comienza en 1. Si no proporcionas un número de índice, el valor predeterminado el número de índice es 1. Si la política devuelve la dirección, el teléfono y el correo electrónico, puedes recuperar el primer atributo y su valor con estas variables: ldap.policyName.search.result.attribute.address ldap.policyName.search.result.attribute.phone ldap.policyName.search.result.attribute.email Para recuperar el tercer atributo de dirección en los resultados de la búsqueda, haz lo siguiente: usarías lo siguiente: ldap.policyName.search.result[3].attribute.address Si un atributo tiene varios valores (por ejemplo, si un usuario tiene varios valores de correo electrónico). direcciones), deberías recuperar la segunda dirección de correo electrónico de los resultados de la siguiente manera: ldap.policyName.search.result.attribute.mail[2] |
Códigos de error
Los errores que muestran las políticas de Edge tienen un formato coherente, como se describe en la Referencia de código de error.
Esta política usa los siguientes códigos de error:
Código de error | Mensajes |
---|---|
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. |