Jump to content

ASP - LDAP(AD) problème d'écriture


Recommended Posts

Salut,

Je suis débutant dans le domaine des requêtes LDAP et je veux créer une petite interface Web en ASP pour mettre à jour et consulter l'annuaire LDAP (Active Directory) de mon domaine NT (sur un Windows Server 2003).

Je suis capable de récupérer (lire) les entrées avec des requêtes LDAP sans trop de problèmes (je vois les noms, OU, DC, etc.)

Mais j'ai un problème pour écrire dans la fiche des utilisateurs pour les mettre à jour, Par exemple je voudrais pouvoir mettre à jour le numéro de téléphone, adresse postale, adresse de courrier, etc. (ce qui permettrait à notre secrétaire d'ajouter les informations des employés et finalement utiliser LDAP convivialement avec Outlook pour carnet d'adresse).

Voici le code utilisé pour la requête (ce n'est qu'en phase de test je n'est pas très joli encore :transpi: ).

Fichier nommé add-info.asp:

<% @ LANGUAGE=VBSCRIPT %>
<% Option Explicit %>
<%
If Request.Form("bouton") <> "" Then

dim nom, Unite, numtel, utilisateur

nom=Request.form("nom")
Unite=Request.form("Unite")
numtel=Request.form("numtel")

Response.Write nom & "<br />" & vbcrlf
Response.Write Unite & "<br />" & vbcrlf
Response.Write numtel & "<br />" & vbcrlf
Response.Write "LDAP://cn=" & nom & ",ou=" & Unite & ",dc=domaine,dc=com" & "<br /><br />" & vbcrlf

If nom <> "" and Unite <> "" And numtel <> "" Then
  Set utilisateur = GetObject("LDAP://cn=" & nom & ",ou=" & Unite & ",dc=domaine,dc=com")
  utilisateur.Put "telephonenumber",numtel
  utilisateur.SetInfo
  Response.Write "Modification faite !!!"
Else
  Response.Write "Un des champs est vide... Modification non faite<br />" & vbcrlf
End If

End If

%>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Modification du numéro de téléphone</title>
</head>
<body>
<h1>Modification du numéro de téléphone</h1>
<br />

<form name="form" method="post" action="add-info.asp">
Entrez le nom:
<input name="nom" type="text" size="20" maxlength="50" />
<br />
Entrez le nom du OU:
<input name="Unite" type="text" size="20" maxlength="50" />
<br />
Entrez le numéro de télphone:
<input name="numtel" type="text" size="20" maxlength="50" />
<br />
<input type="submit" name="bouton" value="valider" />
</form>

</body>
</html>

Lorsque je tape des mauvaises valeurs je suis bien retourné dans le ELSE, si c'est valide je reçois l'erreur:

Jean Jojo
Usagers du domaine
222-2222
LDAP://cn=Jean Jojo,ou=Usagers du domaine,dc=domaine,dc=com


Active Directory erreur '80070005' 

Erreur d'accès général refusé 

/add-info.asp, ligne 21

Le nom, l'OU, et les DC sont bien valides.

Est-ce que IIS me bloque en écriture, est-ce que LDAP me bloque en écriture ou bien je n'utilise pas une méthode valable pour envoyer la requête ?

Je sais pas trop là...

Merci de votre aide.

-----------------------

Je vais ajouter ceci, que je viens d'y penser:

Est-ce que pour une requête LDAP, qui est similaire à une requête SQL, il est possible de passer l'authentification en ligne de code ? Je pourrais utiliser une compte administraif de l'AD pour donner l'accès nécessaire.

Link to comment
Share on other sites

Il faut que l'utilisateur qui effectue la requête dans ton ldap ai les droit d'écriture sur ton AD... en l'occurrence dans la config par défaut c'est l'utilisateur iis qui va effectuer cette requête et évidemment, il n'a pas ce droit...

En authentification windows intégré, ce serait l'utilisateur loggué sur le site, qui n'aurait pas les droits non plus (j'imagine, ou plutôt j'espère :D).

La solution est de configurer ton site pour utiliser une impersonation iis, c'est à dire donner, temporairement ou non, les droits d'un autre utilisateur au processus iis. Je te laisse en demander plus à google :D

L'autre solution est de passer dans ta requête un login/mdp d'un utilisateur ayant les droits d'écriture sur ton ldap... Attention, de mémoire il est obligatoire de passer ces infos en clair, ce qui n'est pas trop recommandé, tu t'en doutes...

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...