Stai visualizzando la documentazione di Apigee Edge.
Consulta la
documentazione di Apigee X. info
Cosa
Il criterio LDAP fornisce:
- Autenticazione: le credenziali utente fornite nella richiesta vengono convalidate
rispetto alle credenziali nel provider LDAP. Il criterio LDAP offre molta flessibilità con
l'autenticazione, consentendoti di utilizzare qualsiasi valore DN insieme alla password, anche se il valore DN
che vuoi non è nella richiesta. Ad esempio, supponiamo che tu debba utilizzare email / password per l'
autenticazione. Sono possibili le seguenti opzioni:
- Se l'email è nella richiesta, puoi semplicemente utilizzarla con la password per l'autenticazione LDAP.
- Se l'email non è nella richiesta, ma è presente un altro attributo DN (ad esempio il numero di telefono), puoi utilizzare il numero di telefono per recuperare l'email corrispondente da LDAP, quindi utilizzare email / password per l'autenticazione.
- Ricerca del nome distinto (DN): oltre all'autenticazione, puoi utilizzare il criterio LDAP anche per identificare un attributo utente nella richiesta, ad esempio l'email, ed eseguire una query che recupera altri attributi DN da LDAP per quell'utente. Il DN recuperato viene memorizzato in una variabile.
Utilizza il criterio LDAP quando l'accesso alle risorse protette deve essere limitato agli utenti del tuo provider LDAP , come utenti amministratori, utenti dell'organizzazione e sviluppatori, soprattutto quando l'accesso ai token OAuth non è necessario o è troppo pesante. Il criterio è progettato anche per recuperare i metadati del nome di dominio da utilizzare nei flussi del proxy API.
Ad esempio, puoi fare in modo che una chiamata API venga eseguita solo quando un utente viene autenticato correttamente in LDAP e, facoltativamente, recuperare gli attributi DN (nome di dominio) per l'utente dopo l'autenticazione.
Per ulteriori informazioni, consulta:
- Gestire il criterio password LDAP predefinito per la gestione delle API
- "Informazioni importanti sul criterio password" nella community Apigee
Esempi
Autenticazione con nome utente/password
<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>Questo esempio fornisce l'autenticazione rispetto a un provider LDAP. Il criterio passa il nome utente e la password dalla richiesta a LDAP per l'autenticazione.
Autenticazione dell'attributo 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>Questo criterio recupera il DN dell'utente con l'email nell'intestazione della richiesta, quindi autentica l'utente in LDAP con la password fornita nell'intestazione della richiesta.
Ricerca in 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>
Questo criterio fa riferimento a un provider LDAP personalizzato. Utilizza l'indirizzo email nell'intestazione della richiesta per identificare l'utente, quindi recupera l'indirizzo, il numero di telefono e il titolo dell'utente da LDAP. Gli attributi DN recuperati vengono memorizzati in una variabile. Consulta "Variabili specifiche del criterio variabili".
Per cercare in LDAP e recuperare gli attributi DN, la richiesta deve includere le credenziali dell'amministratore.
Riferimento all'elemento
Di seguito sono riportate le descrizioni degli elementi e degli attributi del criterio LDAP.
|
Elemento |
Descrizione |
|---|---|
|
|
Elemento principale con un attributo name (nome) in cui inserire il nome del criterio. |
|
|
Quando utilizzi il criterio LDAP con un provider LDAP personalizzato (non fornito da Apigee), specifica la classe del connettore LDAP con nome completo.
Si tratta della classe in cui hai implementato l'interfaccia di Apigee |
|
|
Inserisci il nome dell'ambiente della risorsa LDAP. Per ulteriori informazioni, consulta Create an LDAP resource. |
|
|
Il livello di base di LDAP in cui esistono tutti i tuoi dati. Ad esempio, nel
provider LDAP di Apigee, tutti i dati si trovano in
|
|
|
|
|
Autenticazione |
|
|
|
Elemento principale per il comportamento di autenticazione che implementi. |
|
|
Elemento vuoto che accetta uno dei seguenti attributi:
Se non esegui l'autenticazione con il nome utente o se il nome utente non è incluso nella richiesta, non devi includere questo elemento. Se il nome utente è nella richiesta, ma vuoi autenticare un utente con un attributo DN diverso dal nome utente, ad esempio l'email, includi una |
|
|
Elemento vuoto che accetta uno dei seguenti attributi:
|
|
|
Se vuoi eseguire l'autenticazione utilizzando un attributo DN diverso dal nome utente, ad esempio l'email, configura il criterio LDAP in modo da ottenere un attributo DN dalla richiesta (ad esempio il nome utente), che viene utilizzato per identificare l'utente in LDAP, recuperare l'email e autenticare l' utente. Ad esempio, supponendo che LDAP definisca un attributo "mail" per memorizzare l'indirizzo email:
|
|
Ricerca |
|
|
|
Elemento principale per il comportamento di ricerca che implementi. |
|
|
Identificando l'utente con i metadati nella richiesta o nella risposta, puoi utilizzare questo
elemento per recuperare ulteriori attributi DN per l'utente da LDAP. Ad esempio, se la
richiesta contiene l'email dell'utente e LDAP definisce un attributo
Questa query cerca in LDAP un'email corrispondente all'email nella richiesta e il criterio può ora recuperare ulteriori attributi DN per l'utente con l'elemento Attributes element. |
|
|
Utilizza uno o più Ad esempio, dopo che I valori degli attributi sono i nomi degli attributi DN definiti in LDAP. <Attributes> <Attribute>address</Attribute> <Attribute>phone</Attribute> <Attribute>title</Attribute> </Attributes> |
Note sull'utilizzo
Apigee Edge for Private Cloud ti consente di sfruttare un provider LDAP nelle chiamate API. Con il criterio LDAP le applicazioni possono autenticare le credenziali rispetto agli utenti archiviati in LDAP e puoi recuperare i nomi distinti (DN) da LDAP, ovvero i metadati o gli attributi associati a ogni utente, come email, indirizzo e numero di telefono. Il DN restituito viene memorizzato in una variabile per un ulteriore utilizzo da parte del proxy API.
Creare una risorsa LDAP
Il criterio LDAP sfrutta una risorsa LDAP che crei in Apigee Edge. Una risorsa LDAP fornisce le informazioni di connessione al repository LDAP.
Per creare e gestire le risorse LDAP, utilizza la seguente API e il seguente payload:
API
Crea (POST) una risorsa LDAP o elenca (GET) tutte le risorse LDAP:
/v1/organizations/org_name/environments/environment/ldapresources
Recupera i dettagli (GET), aggiorna (POST) ed elimina (DELETE) una risorsa LDAP:
/v1/organizations/org_name/environments/environment/ldapresources/ldap_resource_name
Payload
Di seguito è riportato un esempio di payload XML con commenti sull'utilizzo.
<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>
Esempio di curl: creare una risorsa LDAP
L'esempio seguente crea una risorsa LDAP denominata 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>'
Codici di risposta
Di seguito sono riportati i codici di risposta HTML restituiti dal criterio in caso di esito positivo o negativo:
- Esito positivo: 200
- Esito negativo: 401
Utilizzare un provider LDAP personalizzato in Edge for Private Cloud
Utilizzare un provider LDAP personalizzato
Apigee Edge for Private Cloud include un provider LDAP già configurato per interagire con il criterio LDAP. Tuttavia, se utilizzi un provider LDAP personalizzato, devi abilitare il provider per supportare il criterio LDAP. Per farlo:
- Nella classe del provider LDAP, implementa l'interfaccia
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(); } - Nella sezione
<LdapConnectorClass>della configurazione del criterio (nelle sezioni successive), aggiungi il nome completo della classe del provider LDAP personalizzato. - Scarica questo file: custom-ldap.jar_.zip. (Potresti dover fare clic con il tasto destro del mouse e selezionare Salva con nome.)
- Decomprimilo.
- Aggiungi il file custom-ldap.jar al tuo ambiente e assicurati che sia nel classpath.
- Crea una risorsa ambiente per il tuo provider LDAP. Utilizzerai il nome della risorsa ambiente nell'elemento
<LdapResource>del criterio LDAP.
Utilizzare l' SDK LDAP UnboundID per Java
Puoi utilizzare l'SDK LDAP UnboundID con il criterio LDAP, ma devi prima scaricare la versione 2.3.1 e aggiungerla al classpath di ogni processore di messaggi.
Per utilizzare l'SDK LDAP UnboundID con il criterio LDAP:
- Apri un browser e vai al repository di file Sourceforge per l'SDK LDAP UnboundID:
https://sourceforge.net/projects/ldap-sdk/files/
- Trova la versione 2.3.1 (SE o Standard Edition) dell'SDK e scarica il file ZIP per quella versione. Ad esempio, scarica "unboundid-ldapsdk-2.3.1-se.zip".
- Estrai il file JAR dal file ZIP dell'SDK, come mostrato nell'esempio seguente:
unzip -j -d ~/tmp ~/Downloads/unboundid-ldapsdk-2.3.1-se.zip unboundid-ldapsdk-2.3.1-se/unboundid-ldapsdk-se.jar
Questo comando estrae solo il file JAR nella directory ~/tmp. Elimina la struttura delle directory con
-j, anche se è facoltativo. - Su ogni nodo del processore di messaggi:
- Copia il file JAR nella directory
/opt/apigee/edge-gateway/lib/thirdpartydel processore di messaggi. - Se necessario, concedi all'utente Apigee l'autorizzazione per il file JAR in modo che il processore di messaggi possa accedervi.
- Riavvia il processore di messaggi:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
Edge aggiunge tutte le librerie di terze parti nella
/opt/apigee/edge-gateway/lib/thirdpartydirectory al classpath. - Copia il file JAR nella directory
Variabili di flusso
Di seguito sono riportate le variabili del criterio LDAP compilate da una SearchQuery.
|
Variabile |
Descrizione |
|---|---|
ldap.policyName.execution.success |
Dopo l'esecuzione del criterio, questa variabile di flusso contiene un valore "true" o "false", a seconda del risultato. |
ldap.policyName.search.result[index]. attribute.attrName[index]=value |
Il formato flessibile di questa variabile, in particolare l'indice, tiene conto di più attributi, nonché di attributi con più valori. L'indice è un numero che inizia da 1. Se non viene fornito alcun numero di indice, il numero di indice predefinito è 1. Se il criterio restituisce indirizzo, telefono ed email, puoi recuperare il primo attributo e il primo valore utilizzando queste variabili: ldap.policyName.search.result.attribute.address ldap.policyName.search.result.attribute.phone ldap.policyName.search.result.attribute.email Se volessi recuperare il terzo attributo dell'indirizzo nei risultati di ricerca, utilizzeresti questo: ldap.policyName.search.result[3].attribute.address Se un attributo avesse più valori (ad esempio, se un utente ha più indirizzi email ), recupereresti il secondo indirizzo email dai risultati nel seguente modo: ldap.policyName.search.result.attribute.mail[2] |
Codici di errore
Gli errori restituiti dai criteri Edge seguono un formato coerente, come descritto nel riferimento ai codici di errore.
Questo criterio utilizza i seguenti codici di errore:
| Codice di errore | Messaggio |
|---|---|
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. |