Autenticação LDAP
O Lightweight Directory Access Protocol (LDAP) é um protocolo de Internet para acessar e manter serviços de informações de diretório distribuído em uma rede. Se você depender do LDAP para autenticar usuários para aplicativos da web, reserve um tempo para revisar o conteúdo deste tópico antes de iniciar.
Diretrizes de Programação
- Use somente uma interface LDAP -- os usuários podem ser autenticados somente por meio de um conexão com um servidor LDAP.
- Active Directory -- o uso de uma interface do Active Directory é proibido, no entanto, a autenticação LDAP com o Active Directory é suportada.
- Propriedades do administrador -- o administrador de LDAP deve ter acesso a todas as propriedades LDAP do usuário.
| Atributo | Definição |
|---|---|
mail |
Endereço de e-mail SMTP do usuário. |
cn |
Usado internamente para determinar o nome comum do usuário. |
sn |
Usado internamente para determinar o sobrenome do usuário. |
givenname |
Usado internamente para determinar o nome do usuário. |
Prefixo de Search dn |
Usado como nome do usuário. |
Usando um servidor LDAP para autenticação do usuário
attribute=value, separados
por vírgulas. Por exemplo:cn=Ben Gray,ou=editing,o=New York Times,c=US
cn=Lucille White,ou=editing,o=New York Times,c=US
cn=Tom Brown,ou=reporting,o=New York Times,c=USQualquer um dos atributos definidos no esquema do diretório pode ser usado para compor um DN. A ordem dos pares de valores de atributo do componente é importante. O DN contém um componente para cada nível da hierarquia de diretório da raiz até o nível no qual a entrada reside. DNs de LDAP começam com o atributo mais específico (em geral, algum tipo de nome) e continuam com atributos progressivamente mais amplos, muitas vezes terminando com um atributo de país. O primeiro componente do DN é referenciado como Nome Distinto Relativo (RDN). Ele identifica uma entrada distintamente de quaisquer outras entradas que possuem o mesmo pai. Nos exemplos anteriores, o RDN "cn=Ben Gray" separa a primeira entrada da segunda entrada, (com RDN "cn=Lucille White"). Esses dois DNs de exemplo são, ao contrário, equivalentes. O par atributo=valor que compõe o RDN para uma entrada também deve estar presente na entrada. (Isso não é verdadeiro para os outros componentes do DN.)
Exemplos
uid= e o sufixo usado for ")", uid se tornará o atributo de nome do usuário.. O filtro de procura padrão usado é: (|(cn={filter}*)(sn={filter}*)(mail={filter}*)(givenName={filter})) e atributos usados para o prefixo também são incluídos no filtro de procura. Nesse caso, em que '(uid=' é o prefixo, ao procurar usuários, o filtro de procura se torna: (|(cn={filter}*)(sn={filter}*)(mail={filter}*)(givenName={filter}*)(uid={filter}*))em que {filter} é substituído por texto real.O DN de ligação autenticada é um usuário no servidor LDAP externo com permissão para obter os DNs base e procurar o diretório LDAP dentro da base de procura definida. Ele também deverá estar apto a ler outras propriedades do usuário e será usado se o acesso anônimo ao LDAP para obter DNs base e para procurar e obter acesso a atributos do usuário não for permitido. Quando uma procura é executada para Steve, o filtro de consulta LDAP mostrado no exemplo a seguir é usado e a procura é feita a partir do DN base especificado na IU. Quando o DN do usuário é retornado, o DN e a senha são usados para autenticar o usuário:
(|(cn=Steve*)(sn=Steve*)(mail=Steve*)(givenName=Steve*)(uid=Steve*)).Para ligação durante chamadas de login, a sequência de procura usada é o prefixo. Por exemplo, se o prefixo é '(uid=', a sequência de procura usada para procurar um usuário durante o login se torna: (uid=Steve).- Usando o atributo mail como o nome do usuário
- Quando você deseja usar um endereço de e-mail como o nome do usuário (por exemplo, steve@company.com), geralmente você usa o atributo de e-mail como o prefixo '(
mail='. Nesse caso, use a sequência de procura a seguir para executar a procura internamente (assumindo '(mail=' como prefixo):
No exemplo anterior, se o DN for localizado, a senha será usada com o DN para executar uma ligação. O primeiro resultado é obtido, portanto, certifique-se de usar um atributo exclusivo para o nome do usuário. Em seguida, as propriedades LDAP para o usuário são lidas ((|(cn=steve@company.com*)(sn=steve@company.com*)(mail=steve@company.com*) (givenName=steve@company.com*)(mail=steve@company.com*))cn,sn,mail,givenName). Se as propriedades LDAP não puderem ser lidas usando o usuário conectado, elas serão lidas a partir do DN do usuário usando credenciais de ligação autenticadas. Se o atributo de nome de usuário for diferente, ele também será consultado. Por exemplo, se o prefixo é '(uid=', o atributouidtambém é lido a partir objeto DN do usuário:(|(cn={filter}*)(sn={filter}*)(mail={filter}*)(givenName={filter}*))Nota: o prefixo e o sufixo não podem ser usados para obter o DN do usuário diretamente. Por exemplo, a tentativa a seguir para obter diretamente o DN de um usuário falha:Prefix: "uid=", Suffix: ",ou=users,dc=company,dc=com"
Indicações de LDAP
As indicações de LDAP permitem que uma árvore de diretórios seja particionada e distribuída entre múltiplos servidores LDAP. Uma indicação de LDAP a maneira de um controlador de domínio de indicar a um aplicativo cliente que ele não tem uma cópia de um objeto solicitado, enquanto fornece ao cliente um local que provavelmente retém o objeto. O cliente usa então o objeto como base para uma procura DNS para um controlador de domínio.
- Procurar usuários que fazem parte de múltiplas árvores e florestas do Active Directory.
- Autenticação de usuários no Cloud Manager, no API Manager e no portal CMS.
- Um único host/porta LDAP está configurado com credenciais do administrador e todos os usuários são referidos a partir do DN base da árvore/servidor.
- Como parte da procura de usuário seguindo a indicação de LDAP, as mesmas credenciais do administrador são usadas nas árvores/florestas de recebimento de dados.
- A autenticação da API LDAP não suporta indicação de LDAP externa. A indicação de LDAP interna é suportada.