Você está lendo a documentação do Apigee Edge.
Acesse a documentação da
Apigee X. info
O que
A política do LDAP oferece:
- Autenticação: as credenciais de usuário fornecidas na solicitação são validadas
em relação às credenciais no provedor LDAP. A política do LDAP oferece muita flexibilidade com a autenticação, permitindo que você use qualquer valor de DN com a senha, mesmo que o valor de DN desejado não esteja na solicitação. Por exemplo, digamos que você precise usar e-mail / senha para
autenticação. As seguintes opções são possíveis:
- Se o e-mail estiver na solicitação, basta usá-lo com a senha para autenticação LDAP.
- Se o e-mail não estiver na solicitação, mas outro atributo de DN estiver (como número de telefone), use o número de telefone para receber o e-mail correspondente do LDAP e use e-mail / senha para autenticar.
- Pesquisa de nome distinto (DN): além da autenticação, você também pode usar a política LDAP para identificar um atributo de usuário na solicitação, como e-mail, e realizar uma consulta que recupera outros atributos de DN do LDAP para esse usuário. O DN recuperado é armazenado em uma variável.
Use a política do LDAP quando o acesso a recursos protegidos precisar ser limitado a usuários no provedor de LDAP, como administradores, usuários da organização e desenvolvedores, principalmente quando o acesso ao token OAuth for desnecessário ou muito pesado. A política também foi projetada para recuperar metadados de nome de domínio para uso em fluxos de proxy de API.
Por exemplo, é possível fazer com que uma chamada de API seja executada apenas quando um usuário é autenticado com sucesso no LDAP e, opcionalmente, recuperar atributos de DN (nome de domínio) para o usuário após a autenticação ser bem-sucedida.
Para mais informações, consulte:
- Como gerenciar a política de senhas LDAP padrão para o gerenciamento de APIs
- "Informações importantes sobre sua política de senhas" na Comunidade do Apigee
Amostras
Autenticação por nome de usuário/senha
<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
/LdapEste exemplo fornece autenticação em um provedor LDAP. A política transmite o nome de usuário e a senha da solicitação para o LDAP para autenticação.
Autenticação de atributo de 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
/LdapEssa política recebe o DN do usuário com o e-mail no cabeçalho da solicitação e autentica o usuário no LDAP com a senha fornecida no cabeçalho da solicitação.
Pesquisar 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
Essa política faz referência a um provedor LDAP personalizado. Ele usa o endereço de e-mail no cabeçalho da solicitação para identificar o usuário e recupera o endereço, o telefone e o título do usuário do LDAP. Os atributos de DN recuperados são armazenados em uma variável. Consulte "Variáveis específicas da política".
Para pesquisar o LDAP e recuperar atributos de DN, a solicitação precisa incluir credenciais de administrador.
Referência de elemento
Confira a seguir as descrições dos elementos e atributos da política LDAP.
|
Elemento |
Descrição |
|---|---|
|
|
Elemento pai com um atributo de nome para você inserir o nome da política. |
|
|
Ao usar a política LDAP com um provedor LDAP personalizado (não fornecido pela Apigee), especifique a classe de conector LDAP totalmente qualificada.
Essa é a classe em que você implementou a interface |
|
|
Insira o nome do ambiente do recurso LDAP. Consulte Criar um recurso LDAP para mais informações. |
|
|
O nível básico do LDAP em que todos os seus dados estão armazenados. Por exemplo, no provedor LDAP da Apigee, todos os dados estão em
|
|
|
|
|
Authentication |
|
|
|
Elemento pai do comportamento de autenticação que você implementa. |
|
|
Elemento vazio que usa um dos seguintes atributos:
Se você não estiver autenticando com nome de usuário ou se o nome de usuário não estiver incluído na solicitação, não será necessário incluir esse elemento. Se o nome de usuário estiver na solicitação, mas você quiser autenticar um usuário com um atributo DN
diferente do nome de usuário, como e-mail, inclua um |
|
|
Elemento vazio que usa um dos seguintes atributos:
|
|
|
Se você quiser autenticar usando um atributo de DN diferente do nome de usuário, como e-mail, configure a política LDAP para receber um atributo de DN da solicitação (como nome de usuário), que é usado para identificar o usuário no LDAP, recuperar o e-mail e autenticar o usuário. Por exemplo, supondo que o LDAP defina um atributo "mail" para armazenar o endereço de e-mail:
|
|
Pesquisa |
|
|
|
Elemento pai do comportamento de pesquisa que você implementa. |
|
|
Ao identificar o usuário com metadados na solicitação ou resposta, é possível usar esse
elemento para recuperar outros atributos de DN do usuário no LDAP. Por exemplo, se a
solicitação contiver o e-mail do usuário e o LDAP definir um atributo
Essa consulta pesquisa no LDAP um e-mail que corresponda ao e-mail na solicitação, e a política agora pode recuperar outros atributos de DN para esse usuário com o elemento "Attributes". |
|
|
Use um ou mais elementos Por exemplo, depois que o Os valores de atributo são os nomes de atributo DN definidos no seu LDAP. <Attributes> <Attribute>address</Attribute> <Attribute>phone</Attribute> <Attribute>title</Attribute> </Attributes> |
Notas de uso
O Apigee Edge para nuvem privada permite aproveitar um provedor LDAP em chamadas de API. Com a política do LDAP, os aplicativos podem autenticar credenciais em relação aos usuários armazenados no LDAP, e você pode recuperar nomes distintos (DNs) do LDAP, ou seja, os metadados ou atributos associados a cada usuário, como e-mail, endereço e número de telefone. O DN retornado é armazenado em uma variável para uso posterior pelo proxy de API.
Criar um recurso LDAP
A política LDAP usa um recurso LDAP criado no Apigee Edge. Um recurso LDAP fornece as informações de conexão ao seu repositório LDAP.
Para criar e gerenciar recursos LDAP, use a seguinte API e payload:
API
Crie (POST) um recurso LDAP ou liste (GET) todos os recursos LDAP:
/v1/organizations/org_name/environments/environment/ldapresources
Confira detalhes sobre (GET), atualização (POST) e exclusão (DELETE) de um recurso LDAP:
/v1/organizations/org_name/environments/environment/ldapresources/ldap_resource_name
Payload
Confira abaixo um exemplo de payload XML com comentários de uso.
<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
Exemplo de curl: criar um recurso LDAP
O exemplo a seguir cria um recurso LDAP chamado 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'
Códigos de resposta
Confira abaixo os códigos de resposta HTML que a política retorna em caso de sucesso ou falha:
- Sucesso: 200
- Falha: 401
Usar um provedor LDAP personalizado no Edge para nuvem privada
Como usar um provedor LDAP personalizado
O Apigee Edge para nuvem privada vem com um provedor LDAP já configurado para interagir com a política LDAP. No entanto, se você estiver usando um provedor LDAP personalizado, precisará ativar o provedor para oferecer suporte à política do LDAP. Para fazer isto:
- Na sua classe de provedor LDAP, implemente a interface
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(); } - No
<LdapConnectorClass>da configuração da política (próximas seções), adicione o nome de classe totalmente qualificado do seu provedor LDAP personalizado. - Faça o download deste arquivo: custom-ldap.jar_.zip. Talvez seja necessário clicar com o botão direito do mouse e selecionar Salvar como.
- Descompacte o arquivo.
- Adicione o arquivo custom-ldap.jar ao seu ambiente e verifique se ele está no caminho de classe.
- Crie um recurso de ambiente para seu provedor LDAP. Você vai usar o nome do recurso de ambiente no elemento
<LdapResource>da política LDAP.
Usar o SDK do UnboundID LDAP para Java
Você pode usar o SDK LDAP do UnboundID com a política LDAP, mas primeiro faça o download da versão 2.3.1 e adicione-a a cada um dos caminhos de classe do processador de mensagens.
Para usar o SDK do LDAP do UnboundID com a política do LDAP:
- Abra um navegador e acesse o repositório de arquivos do Sourceforge para o SDK LDAP do UnboundID:
https://sourceforge.net/projects/ldap-sdk/files/
- Encontre a versão 2.3.1 (SE ou Standard Edition) do SDK e faça o download do arquivo ZIP dessa versão. Por exemplo, faça o download de "unboundid-ldapsdk-2.3.1-se.zip".
- Extraia o arquivo JAR do arquivo ZIP do SDK, como mostra o exemplo a seguir:
unzip -j -d ~/tmp ~/Downloads/unboundid-ldapsdk-2.3.1-se.zip unboundid-ldapsdk-2.3.1-se/unboundid-ldapsdk-se.jar
Esse comando extrai apenas o arquivo JAR para o diretório ~/tmp. Ele descarta a estrutura de diretório com
-j, embora isso seja opcional. - Em cada nó do processador de mensagens:
- Copie o arquivo JAR para o diretório
/opt/apigee/edge-gateway/lib/thirdpartydo processador de mensagens. - Se necessário, conceda permissão de usuário do Apigee no arquivo JAR para que o processador de mensagens possa acessá-lo.
- Reinicie o processador de mensagens:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
O Edge adiciona todas as bibliotecas de terceiros no diretório
/opt/apigee/edge-gateway/lib/thirdpartyao caminho de classe. - Copie o arquivo JAR para o diretório
Variáveis de fluxo
A seguir, estão as variáveis da política LDAP preenchidas por um SearchQuery.
|
Variável |
Descrição |
|---|---|
ldap.policyName.execution.success |
Depois que a política é executada, essa variável de fluxo contém o valor "true" ou "false", dependendo do resultado. |
ldap.policyName.search.result[index]. attribute.attrName[index]=value |
O formato flexível dessa variável, principalmente o índice, considera vários atributos, bem como atributos com vários valores. O índice é um número que começa em 1. Se nenhum número de índice for fornecido, o padrão será 1. Se a política retornar endereço, telefone e e-mail, você poderá recuperar o primeiro atributo e valor usando estas variáveis: ldap.policyName.search.result.attribute.address ldap.policyName.search.result.attribute.phone ldap.policyName.search.result.attribute.email Se você quisesse recuperar o terceiro atributo de endereço nos resultados da pesquisa, usaria isto: ldap.policyName.search.result[3].attribute.address Se um atributo tiver vários valores (por exemplo, se um usuário tiver vários endereços de e-mail), você vai recuperar o segundo endereço de e-mail dos resultados assim: ldap.policyName.search.result.attribute.mail[2] |
Códigos de erro
Os erros retornados pelas políticas do Edge seguem um formato consistente, conforme descrito na Referência do código do erro.
Esta política usa os seguintes códigos de erro:
| Código do erro | A mensagem |
|---|---|
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. |