Authentification d'un utilisateur auprès d'un annuaire LDAP

aLittleWoodElfe

Membre confirmé
28 Février 2004
81
1
Bonjour,

Je développe en ce moment un logiciel et pour l'un des traitements de ce logiciel j'aurais besoin de savoir si l'utilisateur est loggué en local ou auprès d'un annuaire LDAP.
Comment puis-je faire pour découvrir cela et connaître le nom du domaine utilisé ?

En particulier si vous êtes dans une telle configuration pourriez-vous me poster le résultat de la commande suivante :
Bloc de code:
lookupd -q user -a name votre_login
.

En effet pour le moment je me base sur le résultat de cette commande qui d'après un truc que j'ai lu sur le net devrait comporter une @ si l'utilisateur n'est pas loggué en local. Mais je n'ai pas sous la main de quoi tester ça :-(

Merci d'avance de votre aide.
 
<font class="small">Code:</font><hr /><pre>gid: 0000
home: /Users/mylogin
name: mylogin mylogin
passwd: ******** ********
realname: mylogin
shell: /bin/bash
uid: 0000</pre><hr />

Il n'y a pas de compte "mylogin" sur la machine locale, mais le "home" y est. Manifestement l'authentification se fait en Kerberos. Je ne sais pas si ça va t'aider beaucoup. Pourquoi n'interroge tu pas les bases NetInfo ?

À+
 
Hum, donc on ne voit aucune différence entre un compte local et un compte LDAP ? :-(

J'ai testé un peu les diverses commandes ni*** comme nigrep mais je n'arrive pas à trouver cette information. Mais si tu as une idée je suis tout ouï. Tout ce que je cherche c'est un moyen de savoir si l'utilisateur est sur un compte local ou un compte distant.
 
<font class="small">Code:</font><hr /><pre>#! /bin/bash

theUserName=`id -un`
notLocal=`/usr/bin/nifind -v /users/name=$theUserName | /usr/bin/grep -c "not found" -`
if [ $notLocal = 0 ];
then
/bin/echo "Current user is in local Netinfo database"
else
/bin/echo "Current user is not in local Netinfo database"
fi</pre><hr />

À toi de l'adapter. Ce script ne teste pas la manière avec laquelle l'utilisateur a été authentifié, mais s'il est présent dans la base Netinfo locale. Ce sera peut-être suffisant.

À+
 
C'est exactement ce que je cherchais, merci
up.gif


En fait j'avais bien vu la commande nifind, mais je découvre juste NetInfo et tout ce qui tourne autour dans MacOS X et je n'avais pas pensé à faire ça.
Joli aussi le -c pour grep, je n'y avais jamais fait attention dans la page de man.

Pour ce qui est des infos sur la façon dont s'est authentifié l'utilisateur pour le moment je lit les fichiers de configuration dans /Library/Preferences/DirectoryServices pour en retirer le nom du domaine LDAP éventuellement employé (en considérant que l'utilisateur ne peut s'authentifier qu'auprès d'une seule base).

J'ai cherché un moment mais je n'ai pas trouvé de moyen de savoir comment s'est authentifé un utilisateur.
 
aLittleWoodElfe a dit:
J'ai cherché un moment mais je n'ai pas trouvé de moyen de savoir comment s'est authentifé un utilisateur.
Moi non plus. Ma méthode ne marche que si l'utilisateur n'a pas de compte en local. Il y a certainement moyen de faire plus élégant et plus sûr.

À+
 
Au fait rian à voir avec le sujet de départ mais, à quoi sert le - à la fin de la ligne commande avec le grep ??

J'ai testé et je n'ai pas vu de différence, d'un autre coté en regardant compiler un logiciel via fink j'ai vu de nouveau ce - à la fin d'une commande. Alors à quoi sert-il donc ?
 
OK, j'ai lu doc et donc ça permet de faire des redirections de ou vers stdin et stdout, mais dans :

"/usr/bin/nifind -v /users=name=$theUserName | /usr/bin/grep -c "not found" -"

l'entrée du grep est remplie par le pipe, donc ce que tu rediriges avec le - c'est la sortie du grep ? En fait je ne comprends pas à quoi il sert ici ???