2011-05-11 6 views
2

J'utilise LDAP - Active Directory pour authentifier les utilisateurs d'un de mes projets.Meilleur moyen de filtrer les utilisateurs LDAP

J'ai actuellement 2 pages de connexion - 1 est destiné aux étudiants, l'autre pour le personnel.

J'ai réussi à écrire un script d'authentification à lier au serveur LDAP - cela fonctionne pour tous les utilisateurs stockés sur le serveur LDAP.

Maintenant, je veux pouvoir filtrer les étudiants du personnel, en permettant uniquement au personnel de se connecter via la «page de connexion du personnel».

Le DN ressemble à quelque chose comme ce qui suit:

cn=USERNAME,ou=DEPT,ou=MAS,ou=LAN,o=UNI <-- STAFF 
cn=USERNAME,ou=DEPT,ou=STUDENT,ou=LAN,o=UNI <-- STUDENT 

Comment puis-je aller sur le filtrage ou = étudiant ou quelque chose pour empêcher les étudiants d'être en mesure de se connecter via le nouveau script d'authentification du personnel?

Thankyou

Répondre

2

Pour empêcher l'étudiant d'être capable de se connecter via le nouveau script d'authentification du personnel, vous pouvez simplement changer la base de recherche LDAP vous. En dépit de la recherche de l'UPN dans le répertoire entier, vous recherchez l'UPN de ou=MAS,ou=LAN,o=UNI.

Avec LDIFDE.EXE cela donnerait:

ldifde -fc: \ temp \ User.LDF -d "ou = MAS, ou = LAN, o = UNI" -r "(userPrincipalName = login)" Ainsi, la recherche ne renvoie rien si l'utilisateur est un étudiant.

Sur le LDAP absolu, il existe une syntaxe de filtre appelée ExtensibleMatch qui vous permet de le faire, mais qui fonctionne dans AD.

+0

S'il vous plaît excusez-moi, je ne suis pas très familier avec LDIFDE.exe, en fait je ne l'ai jamais utilisé. Ce que vous dites est que si vous changez la base que je cherche, alors plutôt que de chercher "ou = LAN, o = UNI", je pourrais plutôt chercher "ou = MAS, ou = LAN, o = UNI"? –

+0

En ce moment, comment obtenez-vous le DN de la personne qui s'authentifie? Je supposais que dans un formulaire il donnait son login (userPrincipalName) et vous faites une recherche dans le répertoire pour trouver l'objet. Vous pouvez simplement lancer cette recherche à partir d'un endroit différent en fonction de la page de connexion. – JPBlanc

+0

Eh bien, actuellement, j'effectue une liaison Annonomous au serveur LDAP avec le nom d'utilisateur fourni, alors cela retourne le nom Distingué comme indiqué ci-dessus. Je tente alors de lier à nouveau avec le DN et le mot de passe retournés. Comme je l'ai dit cependant, im en utilisant ce point de départ: $ dn = "ou = LAN, o = UNI"; Pourrais-je juste faire ou = MAS, ou = LAN, o = UNI pour ma recherche d'annuaire? –

Questions connexes