INFO: Como utilizar a ADSI para consultar um servidor LDAP de terceiros

Traduções deste artigo Traduções deste artigo
ID do artigo: 251195 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sumário

O provedor LDAP (Lightweight Directory Access Protocol) para o Active Directory Service Interfaces (ADSI) é usado para recuperar informações de servidores LDAP de terceiros. Este artigo descreve diversos problemas que podem surgir e como solucioná-los.

Mais Informações

Ao usar o ADSI para recuperar informações de um servidor LDAP de terceiros, você precisa:
  • Determine a disponibilidade de informações de esquema.
  • Obter a autenticação correta.
  • Impedir que uma pesquisa em um recipiente inexistente.

Determinar a disponibilidade das informações de esquema

De acordo com a solicitação de comentários (RFC) 2251, LDAP versão 3 servidores devem expor um atributo subSchemaSubEntry fora da raiz da empresa de serviço de diretório (rootDSE). ADSI usa esse atributo para localizar informações subschemaSubentry, que ele, em seguida, tenta validar e armazenar em cache.

Para informações adicionais sobre como o ADSI armazena em cache o subschemaSubentry, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
251189INFO: Localizar um esquema de servidor LDAP em cache por ADSI
ADSI usa as informações subschemaSubentry para expor as interfaces apropriadas para uma determinada classe e recuperar atributos na sintaxe correta do cache de propriedades.

Se o ADSI é incapaz de localizar ou validar corretamente as informações de subschemaSubentry, ele usará o esquema de versão 2 do LDAP padrão. Como o LDAP versão 2 servidores não expõem um subschemaSubentry, ADSI mantém informações de esquema internamente sobre muitas classes e atributos padrão. Se o ADSI usa o esquema de versão 2 do padrão, ele não tem acesso a informações de esquema padrão, incluindo classes personalizadas ou atributos que foram criados no servidor.

Se nenhuma informação de esquema sobre a sintaxe do atributo estiver disponível, a ADSI é não é possível recuperar o atributo do cache de propriedades. Nesse caso, você pode usar o método IADsPropertyList.GetPropertyItem para especificar uma sintaxe para o atributo da propriedade solicitada. Quando você especifica um valor ADsTYPE, você evitar a necessidade de informações sobre esse atributo.

Se você usar o Microsoft ActiveX Data Objects (ADO), e você não tem informações de esquema disponíveis, que você precisa recuperar a seqüência de caracteres ADsPath do objeto, ligar ao objeto no diretório e, em seguida, use o método IADsPropertyList.GetPropertyItem . Não há nenhuma solução alternativa para usar ADO diretamente sem informações de esquema.

Obter autenticação correta

Há várias maneiras para autenticar um cliente LDAP para um servidor LDAP com a ADSI. Entre esses métodos, somente uma ligação simples suporte nativamente LDAP para transmitir as credenciais ao servidor. Em outros casos, o cliente e o servidor devem concordar com o método, geralmente com o uso de outra autoridade de segurança ou protocolo proprietário.

Por exemplo, o método GetObject (ou a função ADsGetObject em C) usa o sinalizador ADS_SECURE_AUTHENTICATION, que pode resultar em uma ligação LDAP que usa o Microsoft Windows NT Challenge/Response (NTLM). Esta ligação provavelmente falhe, pois muitos servidores de terceiros não aceitam NTLM. Se a autenticação falhar, o vínculo seguro é rebaixado para uma ligação anônima; por exemplo, um simples ligar sem qualquer credenciais do usuário. Neste ponto, o aplicativo pode ter acesso somente a um subconjunto de informações (ou até mesmo para não) dependendo da configuração do servidor.

Para evitar essa situação, executar uma ligação simples usando o método OpenDSObject (ou a função ADsOpenObject em C) e especificar zero (sinalizadores) ou ADS_FAST_BIND (descrita abaixo) para o parâmetro lnReserved . Com a ligação simples, passar um nome de usuário atribuído válido (cn = nome de usuário, cn =...) e a senha para o servidor LDAP para verificação. Para obter uma ligação simples com o ADO, defina a propriedade Criptografar senha do objeto ADODB.Connection como FALSE e atribua o nome de usuário atribuída e a senha às propriedades de Identificação de usuário e senha respectivamente.

Impedir que uma pesquisa em um recipiente inexistente

Por padrão, ADSI executa uma pesquisa de classe de objeto do objeto base especificado em uma consulta ou vincular. Essa pesquisa falhará se o nome distinto é fornecido não existir no diretório.

Por exemplo, suponha que uma pesquisa está definida para começar em "o = corp, c = US" para todos os usuários no diretório. A estrutura do diretório é, que não há nenhum contêiner "Corp" real, mas em vez disso, dois objetos na raiz do diretório com os nomes distintos de "ou = AméricadoNorte, o = corp, c = US"e"ou = Europa, o = corp, c = US". ADSI emite uma pesquisa de objectClass para "o = corp, c = US" qual falhar, interrompendo a pesquisa para os usuários antes de iniciar.

A solução mais fácil para esse problema é especificar um objeto de base que existe realmente no diretório. Se não for possível, devido à implementação do diretório, para executar a pesquisa desejada com um objeto base válido, você deve evitar ADSI de executar uma pesquisa de objectClass inicial.

Para evitar que uma pesquisa de objectClass no objeto, passe o sinalizador ADS_FAST_BIND no parâmetro lnReserved do método OpenDSObject (ou a função ADsOpenObject em C). Porque esse sinalizador determinará ações do ADSI depois que o vínculo tiver ocorrido, ela não afeta a autenticação adequada. Observe que esse sinalizador não está disponível antes a ADSI 2.5.

O provedor ADO para Microsoft Windows 2000 expõe propriedades ADSI sinalizador no objeto ADODB.Connection . Você pode definir o sinalizador ADS_FAST_BIND para essa propriedade impedir que consultas ADO executando uma pesquisa de objectClass. A propriedade ADSI sinalizador não está presente no ADSI 2.5 para Microsoft Windows NT versão 4.0 ou Microsoft Windows 9 x. Para uma possível solução, consulte o seguinte artigo:

223049COMO: Consultar Exchange 5.x anônimo por meio de ADSI

Referências

Para obter informações adicionais sobre ADSI, consulte os seguintes artigos na Base de dados de Conhecimento da Microsoft:
233023COMO: Localizar todos os provedores ADSI em um sistema
187529COMO: Usar ADO para objetos de acesso através de um provedor de ADSI LDAP
251189INFO: Localizar um esquema de servidor LDAP em cache por ADSI
223049COMO: Consultar Exchange 5.x anônimo por meio de ADSI

Para obter informações gerais sobre ADSI, consulte o seguinte site:
http://msdn2.microsoft.com/library/aa772170.aspx

Propriedades

ID do artigo: 251195 - Última revisão: sexta-feira, 28 de setembro de 2007 - Revisão: 1.3
A informação contida neste artigo aplica-se a:
  • Microsoft Active Directory Service Interfaces 2.5
Palavras-chave: 
kbmt kbinfo kbmsg KB251195 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 251195
Aviso de Isenção de Responsabilidade sobre Conteúdo do KB Aposentado
Este artigo trata de produtos para os quais a Microsoft não mais oferece suporte. Por esta razão, este artigo é oferecido "como está" e não será mais atualizado.

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com