5 votes

Est-ce que LDAP est le seul moyen d'authentifier une application web contre Active Directory?

Comment puis-je connecter une application Web PHP à l'Active Directory? LDAP est-il le seul moyen?

Quelques références que j'ai trouvées jusqu'à présent https://stackoverflow.com/questions/1003751/how-do-i-use-microsoft-ad-and-php-single-sign-on-web-app

8voto

Samat Jain Points 165

Eh bien, Active Directory est LDAP+Kerberos+quelques autres morceaux divers. Officiellement, vous pouvez vous authentifier via Kerberos, mais cela ne fournira pas les autres données d'autorisation dont vous pourriez avoir besoin.

Si votre pare-feu ne l'interdit pas et que vous avez un compte utilisateur avec les autorisations correctes, vous devriez pouvoir interroger Active Directory en utilisant des bibliothèques PHP LDAP standard, des navigateurs LDAP, etc.

4voto

Charles Lindsay Points 271

LDAP n'est pas obligatoire. Vous pouvez utiliser l'authentification basée sur les revendications (la nouvelle tendance) avec SAML. Une bibliothèque PHP est disponible ici.

Demandez à votre administrateur réseau d'installer ADFSv2 pour que AD ouvre un SAML et un point de terminaison WS-Trust dans votre application. ADFS est gratuit, et Windows 2008 R2 est le bon OS pour exécuter la dernière version.

ASTUCE : Assurez-vous simplement de l'installer de manière à ce qu'il utilise SQL (pas SQL Express) si vous voulez des fonctionnalités avancées comme la détection de rejeu de jeton.

1voto

RobertPitt Points 410

Je travaille actuellement sur une application hybride pour mon entreprise qui nécessite une authentification des employés via LDAP / ActiveDirectory

en PHP ce n'est pas si difficile de s'autoriser contre LDAP.

Votre configuration PHP devrait avoir les sessions et LDAP activés.

voici un exemple d'une authentification basique avec 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);
    }
}

Exemple d'utilisation:

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';
    }
}

Update 1

Une méthode possible est d'utiliser JavaScript pour réaliser ceci, vous pouvez détecter le nom de l'ordinateur du client, le nom d'utilisateur, le domaine en utilisant l'objet réseau dans WScript, vous détectez ensuite les informations d'identification et les envoyez au serveur pour vérifier avec AD, si tout est bon alors le serveur créera une session pour cet utilisateur et renverra un objet JSON, avec success à true.

le côté JavaScript verra ensuite que c'est un succès et redirigera le navigateur vers un autre emplacement les connectant ainsi.

POC:

var Data = {}
//Afficher la couche de chargement
$("#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 = "/"; //Démarrera automatiquement la session.
        }else
        {
            document.location = "/ldap/faild/"; //page de connexion générale
        }
    });
}catch(e)
{
    document.location = "/ldap/faild/"; //page de connexion générale
}

1voto

Johndie Points 41

Vous pourriez essayer SAML aussi. Essayez une recherche pour "SAML active directory" et "SAML apache".

0voto

Eric Noob Points 531

Est-ce correct? Comment puis-je me connecter sans LDAP?

Si votre système Linux exécute Winbind (http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/winbind.html), vous pourriez éventuellement utiliser les services PAM standards pour l'authentification. Et, comme cela a été souligné, vous pouvez également vous authentifier en utilisant Kerberos (soit en le traitant comme une base de données de mots de passe, soit en acceptant effectivement des jetons Kerberos via, par exemple, le module mod_kerberos d'Apache).

L'utilisation de Kerberos vous offre certains avantages en termes de sécurité s'ils sont correctement mis en place (car les mots de passe des utilisateurs ne traversent jamais le réseau), mais vous devriez toujours interagir avec LDAP (ou le système local exécutant Winbind) pour obtenir des appartenances à des groupes, etc., pour l'autorisation.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X