IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Autres composants PHP Discussion :

Connexion automatique sur un intranet depuis windows


Sujet :

Autres composants PHP

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 61
    Par défaut Connexion automatique sur un intranet depuis windows
    Bonjour, je dois développer un petit programme avec Zend Framework et celui ci est sensé se connecter automatiquement (sans passer par un formulaire de connexion), en vérifiant l'identifiant dans l'active directory.

    Est-ce possible?? Parce que ayant regardé la documentation sur le sujet, je n'ai trouvé qu'en passant par un formulaire de connexion. Rien d'automatique . Je me demande même si cela est possible...

    Cordialement,
    Damien

  2. #2
    Membre chevronné Avatar de defcon_suny
    Homme Profil pro
    Non pas trop...
    Inscrit en
    Décembre 2006
    Messages
    441
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Non pas trop...
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2006
    Messages : 441
    Par défaut
    Salut,

    Il y a quelques temps, j'ai mis en place un système similaire pour un intranet.
    J'ai pu réaliser l'authentification de l'utilisateur en me connectant à un annuaire LDAP. Mais je n'ai pas trouvé le moyen de me passer d'un formulaire (impossible de récupérer la session du pc client).
    Voici ma class, si cela peut t'aider.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
    <?php
    class LDAPConnect{
    	private $username;
    	private $password;
    	private $ldap_server = "ldap://nomDuServeur.Domaine.com";
    	private $domaine = 'Domaine.com';
    	private $base_dn = "CN=Users, DC=domaine, DC=com";
    	private $filter;
    	private $connect;
     
    	public $msg;
    	public $is_connect = false;
    	/**
    	*/
    	function __construct(Message $m,$u, $p){
    		$this->msg = $m;
    		$this->username = $u;
    		$this->password = $p;
    	}
     
    	/**
    	*/
    	private function connectToServer(){
    		if (!($this->connect=@ldap_connect($this->ldap_server))) {
    			$this->msg->__set('type','error');
    			$this->msg->__set('msg','Impossible de se connecter au serveur LDAP');
    		}
    	}
     
    	/**
    	*/
    	public function bindToServer(){
    		self::connectToServer();
    		if (!($bind=@ldap_bind($this->connect, $this->username.'@'.$this->domaine, $this->password))) {
    			$this->msg->__set('type','error');
    			$this->msg->__set('msg','Nom d\'utilisateur et/ou mot de passe incorrect');
    		}else
    			$this->is_connect = true;
    	}
     
    	/**
    	*/
    	public function getSamaccountname(){
    		if ($this->is_connect){
    			$this->filter = '(&(objectClass=user)(objectCategory=person)(samaccountname='.$this->username.'*))';
    			if (!($search=@ldap_search($this->connect, $this->base_dn, $this->filter))) {
    				die("Recherche impossible sur le serveur LDAP");
    			}
    			$entries = ldap_get_entries($this->connect, $search);
    			return $entries[0]["samaccountname"][0];
    		}
    	}
    }
     
    $Oldap = new LDAPConnect($m,$_POST['username'],$_POST['password']);
    		$Oldap->bindToServer();
    		if ($Oldap->is_connect){
    			//Connexion réussie
    		}
    ?>
    INFO : $m est juste une instance d'une classe Message qui gère l'affichage des messages du système.

    ++

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 61
    Par défaut
    Je te remercie pour ta réponse, ça peut en effet m’être utile. Pour ma part c'est également sur l'intranet que l'application servira, c'est pourquoi on n'est pas sensé rentrer ses informations dans un formulaire de connexion.

    S'il n'y a pas moyen avec Zend, savez vous s'il est possible de retrouver ses informations personnelles via PHP afin d'effectuer la connexion par la suite? Car une fois encore, je n'ai trouvé aucune info a ce sujet...
    Je sais que cela est possible avec d'autres langages, mais avec PHP ça reste un mystère!

  4. #4
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 37
    Par défaut
    Implicitement ça l'est.

    Lorsque qu'un utilisateur s'authentifie sur un réseau gérer avec un active directory, un script de démarrage s'exécute et il en va de même quand un utilisateur s'en va ...

    A vous d'aller authentifier votre utilisateur à ce moment ^^


    Je me souviens que du temps ou j'étais au lycée, les utilisateurs étaient authentifiés comme ça sur l'intranet ...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 61
    Par défaut
    Oui mais étant identifié sur le réseau, comment récupérer toutes ses informations d'utilisateur au lancement de mon application par exemple? J'ai du mal à voir comment faire le lien entre les 2, c'est 2 choses totalement distinctes.

  6. #6
    Membre très actif
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Par défaut
    bonjour,

    Il s'agit aussi d'une recherche que j'ai effectué sans succès, de pouvoir authentifier mon utilisateur sur l'intranet sans qu'il ai besoin de ressaisir ses identifiant une seconde fois, un peu comme "l'authentification windows" quand je me connect via Microsoft SQL Server Management Studio sur mon serveur MsSQL.

    J'ai trouvé cette info : http://fr.wikipedia.org/wiki/NTLM.

    Mais n'ai pas encore creuser l'idée pour le mettre en place.

    quoiqu'il en soit la remarque de Méthylbro m'interesse :

    Implicitement ca l'est.
    Lorsque qu'un utilisateur s'authentifie sur un réseau gérer avec un active directory, un script de démarrage s'exécute et il en va de même quand un utilisateur s'en va ...
    A vous d'aller authentifier votre utilisateur à ce moment ^^
    Je me souviens que du temps ou j'était au lycée, les utilisateurs étaient authentifiés comme ca sur l'intranet ...
    aurais-tu d'autre information concernant cette méthodologie ?

    J'avais aussi utilisé le SSPI dans un programme en VB mais ce type d'authentification ne marche je crois que sur les outils microsofts.

    Je vais suivre ce post avec intéret en tout cas, car il serait intéressant pour l'intranet de mon entreprise

    Par contre qlimamax tu devrais mettre un titre de post plus explicite genre :
    Connection automatique sur un intranet depuis windows ou un truc du genre

    ++

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 61
    Par défaut
    Voila, j'ai modifier le titre du topic comme demandé. En esperant que ca interpelle quelqu'un qui aura une réponse pour nous éclairer.

    Concernant le lien wikipedia, je comprend pas comment on pourrait utiliser ce genre de protocole même si le font a l'air interessant. A moins de l'implémenter en PHP (ce qui me parait... ) ca ne semble pas utilisable dans mon cas.

  8. #8
    Membre chevronné Avatar de defcon_suny
    Homme Profil pro
    Non pas trop...
    Inscrit en
    Décembre 2006
    Messages
    441
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Non pas trop...
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2006
    Messages : 441
    Par défaut
    J'avais déjà eu une réflexion sur le sujet (voir post précédent).
    Je ne crois pas qu'il soit possible avec PHP d'obtenir ce genre d'information sans passer par un langage de transition.

    A condition d'utiliser l'activeX de IE, Javascript à la possibilité de récupérer des infos côté client. Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <script language="javascript" type="text/javascript">
    var obj = new ActiveXObject('WScript.Network');
    alert(obj.UserName);
    </script>
    Je ne vois pas autre chose...

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 61
    Par défaut
    La je crois que je tiens quelque chose de bien ^^

    Et tu peux détailler ce qu'est le WScript.network stp? Comme son contenu par exemple, ou bien même d'où il sort.

    Dedans on peut par exemple trouver son identifiant? Car c'est l'une des choses qui m'interessent pour le moment.

    Cordialement

  10. #10
    Membre chevronné Avatar de defcon_suny
    Homme Profil pro
    Non pas trop...
    Inscrit en
    Décembre 2006
    Messages
    441
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Non pas trop...
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2006
    Messages : 441
    Par défaut
    Là, je crois qu'une petite recherche sur le net s'impose... tu as une piste... fonce!

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 61
    Par défaut
    Merci, j'y regarde. Par contre j'ai vu qu'il existerait peut etre une solution via de l'asp, y'a moyen d'integrer de l'asp dans zend?? (On sait jamais ^^)



    J'ai essayer le script que tu m'as donné, il ne fait rien, alors qu'avec un bete "alert("titi")" il fait quelque chose, il semblerait donc qu'il y ait une erreur. Je vais continuer mes recherches et je vous tiens au courant.

    Lors de mes recherches, je vois que ce script est pas mal utiliser et qu'il a l'air de fonctionner, cependant chez moi il ne fonctionne pas. Quelqu'un aurait une idee pourquoi? Ca peut venir de la configuration de activeX ??

  12. #12
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 37
    Par défaut
    Citation Envoyé par narutobaka Voir le message
    bonjour,
    aurais-tu d'autre information concernant cette méthodologie ?
    Plus d'infos, malheureusement non. Mais pour moi c'est une méthode qui me parait viable.
    Maintenant il faut aussi voir ce que ca donne niveau sécurité ...


    Je vais essayer d'expliquer autrement ce que j'ai en tête :

    Lorsqu'un utilisateur s'authentifie sur un réseau gérer via un annuaire Active Directory, un script de démarrage de session s'exécute à chaque fois. Dans ce script on connais le nom de l'utilisateur.
    Je ne sait plus quel est le nom de ce script sur le serveur, mais sans doutes qu'un administrateur réseau comprendra tout de suite de quoi il s'agit si je lui en parle.

    A partir de là, c'est facile. Il suffit d'associer cet utilisateur à la machine avec un petit script php.
    Par la suite quand un visiteur navigue sur l'intranet, avec l'adresse ip de la machine cliente, on peut retrouver quel est l'utilisateur authentifié sur cette dernière.

    Est-ce que quelqu'un vois ou je veux en venir ?
    Bon maintenant ce n'est qu'une idée et je ne connais pas la solution exacte pour la mettre en place.

    Cependant je sait que c'est possible, puisque comme je l'ai dit c'était comme ca que les utilisateurs de mon lycée étaient authentifiés sur l'intranet.

    Maintenant attention, quelle que soit la technique utilisée, j'ai peur que cela pose de gros problèmes de sécurité.

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 61
    Par défaut
    Oui, au niveau de la sécurité c'est pareil pour ma solution.
    J'ai réussi a faire ma connexion en utilisant du JavaScript et le fameux avec ActiveXobject. Cependant cette technique nécessite que les machines accédant a l'intranet accepte ce site en tant que site de confiance dans les paramètres de sécurité du navigateur IE.
    A ce niveau, je crains un gros défaut de sécurité...

  14. #14
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 37
    Par défaut
    Dans tous les cas le problème sera le même ... Sauf si l'authentification se fait côté serveur.

    Windows Serveur ne propose-t-il pas un script qui s'exécute côté serveur lors de l'authentification d'un utilisateur sur le réseau ?

    Est-ce que quelqu'un est capable de trouver ça (parce que l'administration système et moi ... ça fait 10).

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 61
    Par défaut
    De mon coté c'est la même, casiment pas de connaissance au niveau du réseau.
    Par contre je sais pas si j'ai bien compris mais il me semblait que ce qu'on met dans le ActiveXobject, Wscript.network était justement une sorte de script dans lequel on peut retrouver des informations concernant le réseau comme par exemle le username, le domainname etc... Mais il se peut que je sois complètement à coté de la plaque. Après tout c'est juste une intuition

  16. #16
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 37
    Par défaut
    non, ça me parait logique qlimamax.

    Au fond, le nom d'utilisateur, le nom du réseau, le nom de la machine ... tout ça ce sont des valeurs qui doivent être accessible. Ça me parait relativement logique.

    Le seul hic c'est que faire confiance à du JavaScript pour ce genre de données ... c'est risqué niveau sécurité.

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 61
    Par défaut
    Oué, faudrait avoir l'avis d'un mec connaissant bien la sécurité aussi bien au niveau du javascript que du web en général..

  18. #18
    Nouveau candidat au Club
    Inscrit en
    Décembre 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 2
    Par défaut Franchement IIS et ASP
    Je ne sais d'ou vient cet effet de mode chez les développeurs mais ils font preuve d'un rare faignantisme en développement ces derniers temps.

    J'ai tout les mal du monde à trouver des sites avec un simple formulaire HMTL sans ce type de vérification à la noix.

    Mon programme de connexion automatique destiné à des utilisateur d'intranet est caduc avec l'arrivée de dizaines de sites de prestataires utilisant ce type d'authentification

    Difficile à chaque fois d'expliquer à la direction de mon entreprise le pourquoi du comment.

    J'ai pus négocier sur certain site Internent avec le développeurs concerner la création d'un script PHP qui en lieux et place du formulaire aspx me connecte sur leur site Internet.

    Bref j'ai beau chercher et me triturer les méninges pour le moment je n y arrive pas

Discussions similaires

  1. gerer la connexion multiple sur un intranet
    Par tortuegenie dans le forum ASP.NET
    Réponses: 5
    Dernier message: 16/10/2008, 17h48
  2. Réponses: 0
    Dernier message: 07/02/2008, 11h26
  3. Réponses: 1
    Dernier message: 23/11/2007, 10h57
  4. [PHP-JS] Connexion automatique sur un site
    Par valinor4 dans le forum Langage
    Réponses: 6
    Dernier message: 15/01/2007, 13h48
  5. Connexion automatique sur base SQL (Login/pass mémorisé)
    Par Fredo67 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 10/10/2005, 16h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo