Pergunta

Eu tenho o seguinte código:

$bind = new COM("LDAP://CN=GroupName,OU=Groups,OU=Division,DC=company,DC=local");

Quando eu executá-lo a partir de um prompt de comando, ele funciona muito bem. Quando ele é executado sob o IIS / PHP / ISAPI, ele barfs.

Fatal error: Uncaught exception 'com_exception' with message 'Failed to create COM object `LDAP://CN=...[cut]...,DC=local':
An operations error occurred. ' in index.php
Stack trace:
  #0 index.php: com->com('LDAP://CN=...')
  #1 {main} thrown

IIS está configurado para autenticação do Windows (sem anônimo, não básicos, sem digerir) e eu estou conectando como o mesmo usuário como o prompt de comando. Não consigo encontrar quaisquer erros específicos na arquivos de log ou o log de eventos do IIS.

O principal objectivo deste exercício é o de abster-se de manter as credenciais do usuário no meu script e contando com a autenticação do IIS para passá-los até o diretório ativo. Eu entendo que você pode usar LDAP para realizar a mesma coisa, mas, tanto quanto eu sei credenciais não podem ser passadas através.

Talvez seja de alguma forma relacionado com o erro que recebo quando tento porta-lo para ASP. Recebo erro 80072020 (que atualmente estou olhando para cima).

Os logs de eventos não mostram nada fora do comum. Nenhuma advertência, nenhum erro. auditoria de segurança completa está habilitado (o sucesso eo fracasso em cada item na política de segurança), e mostra logons bem sucedidos do Windows para cada usuário que autenticar contra a página web (que se espera).

Foi útil?

Solução

Uma vez que você estiver usando autenticação do Windows no IIS, você pode ter alguns eventos de segurança no log de eventos do Windows. Gostaria de verificar o log de eventos para eventos de segurança, bem como eventos de aplicativo e ver se você está batendo qualquer tipo de problemas de permissões.

Além disso, desde que você está basicamente apenas comunicar a AD via LDAP ... que você pode olhar em usar a biblioteca LDAP nativo para PHP ao invés de uma COM.

Você terá que ativar a extensão provavelmente no seu php.ini. Vale a pena olhar, provavelmente.

Outras dicas

Parece estar trabalhando agora.

Eu habilitado "Confiar no computador para delegação" para o objeto de computador no Active Directory. Normalmente IIS não podem autenticar você e posteriormente passar por você em toda a rede (no meu caso a um controlador de domínio para consulta Active Directory) sem a confiança delegação habilitado.

Você apenas tem que ter certeza que ele está autenticando usando Kerberos e não NTLM ou algum outro digerir autenticação porque o resumo não é confiável para o uso como um símbolo de representação.

Ele fixa os meus scripts PHP e ASP.

Bem, se você quiser usar o LDAP, deixe-me apontar-lhe o código de autenticação LDAP que usamos para Maia Mailguard: olhar para a função chamada lauth_ldap

Eu acho que requer LDAP versão 3, então você tem que definir esse parâmetro para LDAP. Para verificar a senha, usamos a função de ligação LDAP para deixar o autenticar servidor LDAP.

Eu não sou nenhum AD / COM / IIS especialista, mas poderia ser um problema de permissões. por exemplo o usuário IUSR_computername não tem acesso aplicável dentro do diretório, ou você não está vinculativa como um usuário específico?

O alarme para mim é o fato de que ele é executado ok linha de comando (por exemplo, correndo com as suas permissões), mas falha no IIS (por exemplo, não suas permissões).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top