[RESOLU] Variable session courante du poste

Mammouth du PHP | 737 Messages

18 avr. 2014, 11:28

Bonjour,

Avant de pluguer mon CMS avec mon AD (active directory) je cherche un moyen simple d'afficher les infos de ma session AD courante (pas PHP hein)

Quelqu'un sait-il comment faire car j'essaie en local des :

echo $_ENV["user"]; //username USER USERNAME login LOGIN givenname...

en vain.

J'ai aussi vu la commande getenv('USERNAME'); //...

Idem.
Notice: Undefined index: USERNAME

Par avance merci de votre aide.

Mega
;)
Dyslexics are teople poo

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

18 avr. 2014, 14:35

salut,

$_ENV n'est peuplée qu'après utilisation de getenv().

Tu veux dire que les infos de connexion AD sont stockée sur le serveur ? (dans des variables d'environnement).

tu ne confondrais pas entre ce qui est dispo coté serveur et coté client ?

si tu veux utiliser les infos du mec qui navigue sur ton site il te faut utiliser SSO (par exemple) et récupérer le token de la session windows.
ceci dit je crois que cela ne fonctionne que pour IE (a vérifier).


@+
Il en faut peu pour être heureux ......

Mammouth du PHP | 737 Messages

18 avr. 2014, 15:12

Salut moogli, ca faisait un bail, toujours les mêmes ;)

Oui tu as bien compris la problématique du SSO. Je voudrais m'affranchir d'un pavé de connexion supplémentaire.

Avant de me lancer plus loin et interroger mon AD je voudrais déjà commencer par afficher mon USERNAME.

echo "<pre>";
print_r($_ENV);
echo "</pre>";

ne contient pas mon username.

J'ai poursuivi avec ceci : echo "username ".shell_exec("%USERNAME%"); mais USERNAME semble vide

pourtant c'est la bonne syntaxe car quand je fais un cmd > set j'ai bien cette variable.

Je fais peut être une confusion mais c'est tout un mic mac cette simple histoire
Dyslexics are teople poo

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

18 avr. 2014, 21:51

Ben tu oublie que php est exécuté sur le serveur et que la tu demande les infos du serveur pas de la machine cliente.

Le seul exemple que j'ai c'est l'utilisation de NTLM.
A priori tu auras ainsi la possibilité de récupérer le "token" windows pour faire ce que tu veux.

C'est a tester mais il y a des choses dispo sur le net.
comme par exemple http://stackoverflow.com/questions/1600 ... ing-ntlmv2


@+
Il en faut peu pour être heureux ......

Mammouth du PHP | 737 Messages

22 avr. 2014, 14:24

Bonjour,

Oui ça semble plutôt bien marcher. Par contre je me pose des questions en terme de politique (intrusion) et sécurité. Est-ce légitime même pour du fonctionnel ?

Ton/votre point de vue m'intéresse ?

Mega
;)
Dyslexics are teople poo

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

22 avr. 2014, 15:52

le coté "intrusion" de la chose est une question qu'il faut ce poser c'est sur ainsi que :
- Est ce que les données sont vitale ? (la tournée des camions du laitier d'accoté on s'en fou, l'accès complet sur mon compte en banque moins déjà ;) )
- Est ce que l'on est amené à accueillir des gens externe a l'entreprise dans les locaux ?
etc

Mais surtout : est ce que les utilisateurs du SI sont correctement sensibilisé et incité à un minimum de sécurité ?
un exemple simple :
Lundi matin 10 :
- Le chef de projet : dit donc moogli Mr le client me dit que l'utilisateur d'un compte à "hacké" le compte d'une concurrent sur notre plateforme (oula la il à commandé 18 tonnes de gloubiboulga ...)
- moogli : bizarre les mots de passes sont encodé en bases, ils peuvent pas y avoir accès et même si pas de ssl y a peu de chances qu'il y ai eu un snif du réseau.
Fait voir.
- le chef de projet : aller tiens son se connect en prod :
* nom d'utilisateur : enseigne1337
* mot de passe : 1337enseigne
- moogli : hum c'est généralisé ça ?
- le chef de projet : oui enseigne + numéro de magasin et l'inverse pour le mot de passe.
- moogli : ben déjà faudrait éviter ça, et utiliser la possibilité d'expiration des mot de passe.

bref la sécurité c'est bien mais il y a un juste niveau.
Cela ne sert à rien d'utiliser un encodage de compète, "incassable" tous ce que veux si les gens quitte leur poste sans verrouiller la station oui laisse le mot de passe sous le clavier.

Donc le SSO oui mais pas sur des applications sensible :)

@+
Il en faut peu pour être heureux ......

Mammouth du PHP | 737 Messages

24 avr. 2014, 15:43

Re Moogli,

Thx a lot Mr !

Dans le cadre de ma problématique SSO je cherche à faire la chose suivante :
<?php
$ldap_dn = "CN=mon controler name,OU=mon organization unit,DC=mon domaine controler,DC=bis";
$ldap_svr = "ip ou nom de mon AD";
$conn=ldap_connect($ldap_svr) or die("Cannot connect to LDAP server!");

ldap_set_option ($conn, LDAP_OPT_REFERRALS, 0);
ldap_set_option($conn, LDAP_OPT_PROTOCOL_VERSION, 3);

ldap_bind($conn,"user_lecture_ad","mot_de_passe_associe");

$filter = "megadeth";

$result=ldap_list($conn, $ldap_dn, "CN=*$filter*") or die("No search data found."); 

$info = ldap_get_entries($conn, $result);

for ($i=0; $i < $info["count"]; $i++) {
    echo $info[$i]["cn"][0] . '<br />';
}
?>
qui m'aurait permis de dire "si je suis dans ce groupe..." mais ça foire :?

Code : Tout sélectionner

Search: No such object in C:\wamp\www\mega\ad.php on line 14 Call Stack # Time Memory Function Location 1 0.0003 374976 {main}( ) ..\ad.php:0 2 0.0118 375640 ldap_list ( ) ..\ad.php:14 No search data found.
En fait avec la session windows je pourrais comparer si je suis membre de ce groupe et je fais matcher les valeurs.

Mon $ldap_dn est un groupe avec des members.

Grace à mon outil en local je peux voir que les attributes types sont du type members et les values de cette forme
CN=NOM PRENOM,OU=Les users,OU=Lieu geographique,DC=mon DC,DC=mon DC (mais la chaine peut varier)

Tu peux m'aider ? Tu vois où je merdouille ?

Mega
;)
Dyslexics are teople poo

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

24 avr. 2014, 19:17

J'ai pas de ldap sous la main pour tester désolé :/

As tu essayé en changeant le filtre (ou=*) par exemple.

Pour le code finale tu va virer les "or Die" hein ? ;)

Il faut que tu vois ce qu'il peux retourner.

Désolé suis un peu sec sur le sujet.

@+
Il en faut peu pour être heureux ......

Mammouth du PHP | 737 Messages

25 avr. 2014, 10:45

salut Moogli,
J'ai pas de ldap sous la main pour tester désolé :/
Quoi ???? Tu sors sans ton ldap ! Je sors jamais sans mon ldap :D
As tu essayé en changeant le filtre (ou=*) par exemple.
Oui, en vain :?
Pour le code finale tu va virer les "or Die" hein ? ;)
Mdrrrr, oui, ça me renvoie à une autre réponse de toi sur l'emploi abusive du @ et du caca derrière le sapin, tu m'as tué :lol:
Il faut que tu vois ce qu'il peux retourner.

Désolé suis un peu sec sur le sujet.

@+
Merci qd même, ça sent une nouvelle journée à ramer :roll:

mais c'est ça qu'c'est bon aussi...

Mega
;)
Dyslexics are teople poo

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

25 avr. 2014, 11:43

moogli a écrit:
Pour le code finale tu va virer les "or Die" hein ?

Mdrrrr, oui, ça me renvoie à une autre réponse de toi sur l'emploi abusive du @ et du caca derrière le sapin, tu m'as tué
il y a des métaphores qui marque plus que d'autre :mrgreen: :mrgreen:
Il en faut peu pour être heureux ......

ViPHP
xTG
ViPHP | 7331 Messages

25 avr. 2014, 13:14

Ouais... Il en faut peu pour être heureux.....

Mammouth du PHP | 737 Messages

25 avr. 2014, 14:16

hakuna matata ;)

J'ai progressé sur le sujet :
<?php
 $ldap = ldap_connect("IP");
    if ($ldap && $bind = ldap_bind($ldap, "[email protected]", "ldappassword")) {
		$query = ldap_search($ldap, "CN=specu,OU=special groups,DC=society,DC=extension", "CN=*");
		$data = ldap_get_entries($ldap, $query);
		for ($i=0; $i < $data['count']; $i++) {
			print_r($data[$i]['member']);
			echo "\n\n";    
		}
    }
?>
Si je retire CN=specu ça me renvoie tous les CN sous special groups.

Autrement (donc avec) il me met :
Warning: ldap_search() [function.ldap-search]: Search: No such object in C:\wamp\www\mega\ad.php on line 5

Sérieux je vois pas car dans mon AD j'ai bien des objets member avec des values en face commençant par CN= :?

Grrrr... :x

Mega
;)
Dyslexics are teople poo

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

26 avr. 2014, 23:47

en même temps, a priori il a pas trord si tu demande les CN sous special groups\cn=specu il n'y en a p'tet pas :)

et
<?php
$query = ldap_search($ldap, "OU=special groups,DC=society,DC=extension", "CN=specu");
ça fonctionne ?

(oui je tâtonne ;))


@+
Il en faut peu pour être heureux ......