O LDAP é a única maneira de autenticar um aplicativo da Web no Active Directory?

5

Como posso conectar um aplicativo da Web PHP ao Active Directory? O LDAP é o único caminho?

Algumas referências que tenho até agora link

    
por Keyne 22.11.2010 / 21:31

5 respostas

8

Bem, o Active Directory é LDAP + Kerberos + alguns outros bits e partes diversos. Oficialmente você poderia autenticar via Kerberos, mas isso não fornecerá nenhum dos outros dados de autorização que você possa precisar.

Desde que o seu firewall não o proíba e você tenha uma conta de usuário com as permissões corretas, você deve poder consultar o Active Directory usando bibliotecas PHP LDAP padrão, navegadores LDAP, etc.

    
por 22.11.2010 / 21:39
4

O LDAP não é obrigatório. Você pode usar a autenticação baseada em declarações (a nova tendência) com o SAML. Uma biblioteca PHP é aqui .

Faça com que o administrador da rede instale o ADFSv2 para que o AD abra um SAML e o endpoint WS-Trust no seu aplicativo. O ADFS é gratuito e o Windows 2008 R2 é o sistema operacional correto para executar a versão mais recente.

TIP: Apenas certifique-se de instalá-lo para que ele use o SQL (não o SQL Express) se você quiser recursos avançados como detecção de repetição de token.

    
por 23.11.2010 / 07:51
1

Você também pode experimentar o SAML. Tente pesquisar "diretório ativo SAML" e "apache SAML".

    
por 23.11.2010 / 04:03
1

estou atualmente trabalhando em um aplicativo híbrido para minha empresa que exige autenticação de funcionários via LDAP / ActiveDirectory

no PHP não é tão difícil de autorizar contra o LDAP.

Sua configuração PHP deve ter sessão e ldap habilitados.

heres um exemplo de uma autenticação básica com PHP

class LDAP_Authentication
{
    private $connection;
    public function __construct($domain)
    {
        $this->connection = @ldap_connect($domain);
    }

    public connected()
    {
        return $this->connection !== false;
    }

    public function login($user,$password)
    {
        return @ldap_bind($this->connection,$user,$password);
    }
}

Exemplo de uso:

session_start(); //Single Login

$LDAPAuth = new LDAP_Authentication('domain.internal');

if($LDAPAuth->connected())
{
    if($LDAPAuth->login('some_user',"some_pass"))
    {
        $_SESSION['logged_in'] = true;
        $_SESSION['credentials'] = array('some_user','some_pass');

        echo 'Welcome';
    }else
    {
        echo 'Try again';
    }
}

Atualização 1

Um método possível é usar JavaScript para fazer isso, você pode detectar o nome do computador, nome de usuário, domínio do cliente usando o objeto de rede no WScript, e depois detectá-las e enviá-las ao servidor para verificar com o AD, se tudo estiver funcionando bem, o servidor criará uma sessão para esse usuário e responderá com um Objeto JSON, com sucesso definido como verdadeiro.

o lado do javascript verá que é um sucesso e, em seguida, redirecionará o navegador para outro local, fazendo com que eles façam login.

POC:

var Data = {}
//Show loading layer
$("#loader").show();
try
{
    var Information = new ActiveXObject("WScript.Network");
    Data.Username = Information.UserName;
    Data.Computername = Information.ComputerName;
    Data.Domain = Information.UserDomain;

    $.post("/ldap/ajax/login",Data,fucntion(object){
        if(object.success)
        {
            document.location = "/"; //Will automatically start session.
        }else
        {
            document.location = "/ldap/faild/"; //general login page
        }
    });
}catch(e)
{
    document.location = "/ldap/faild/"; //general login page
}
    
por 22.11.2010 / 22:15
0

Is that right? How can I connect without LDAP?

Se o seu sistema Linux estiver executando o Winbind ( link ), você poderia usar serviços PAM padrão para autenticação. E, como foi apontado, você também pode autenticar usando o Kerberos (tratando-o como um banco de dados de senhas ou aceitando de fato tokens do Kerberos via, por exemplo, os mod_kerberos do Apache).

Usar o Kerberos oferece algumas vantagens de segurança, se feitas corretamente (porque as senhas nunca atravessam a rede), mas você ainda precisa interagir com o LDAP (ou o sistema local executando o Winbind) para obter associações de grupo, etc. .

    
por 23.11.2010 / 03:20