Pagina 1 van 1

ADSI en ASP

Geplaatst: 06 apr 2005, 17:48
door meon
Ik ben een tooltje aan het maken voor de mensen van HRM om eenvoudig persoonsgegevens (adresgegevens, superieur, etc) in te kunnen geven in de Active Directory van ons domein. Het is webgebaseerd via ASP.
Nu ben ik al vrij ver geraakt (met mijn beperkte kennis op dat gebied), maar nu gaat het toch mis. Ik krijg enkel een errorcode terug zonder echte foutmelding.
Ik vermoed dat het iets met permissies te maken heeft, maar ik ben niet zeker.
Ik geef voor de volledigheid de code mee:

Code: Selecteer alles

Dim oRootDSE, oCon, oCmd, oRecordSet, objUser
Dim sDomainADsPath, strUserName, sProperties, strADsPath

Set oRootDSE 		= GetObject("LDAP://RootDSE")
	sDomainADsPath		= "LDAP://" & oRootDSE.Get("defaultNamingContext")
	Set oRootDSE 		= Nothing
	Set oCon 			= CreateObject("ADODB.Connection")
	oCon.Provider 		= "ADsDSOObject"
	sUser = "DOMAIN\domainuser"
	sPassword = "123456"
	oCon.Open "ADProvider", sUser, sPassword
	
	Call GetUser(dta_userPrincipalName)
		
Sub GetUser(strUserName)
	sProperties		= "ADsPath"
	Set oCmd		= CreateObject("ADODB.Command")
	Set oCmd.ActiveConnection = oCon
	oCmd.CommandText = "<" & sDomainADsPath & ">;(&(objectCategory=user)(userprincipalName=" & strUserName & "));" & sProperties & ";subtree"
	oCmd.Properties("Page Size") = 100
	Set oRecordSet = oCmd.Execute
	Do until oRecordSet.EOF 
		Call EditUser(oRecordSet("ADsPath"))
		response.Write(oRecordSet("ADsPath") & " updated succesfully")
		oRecordSet.MoveNext 
	Loop
	oRecordSet.Close
	Set oRecordSet = Nothing
End Sub
		
Sub EditUser(strADsPath)
	Set objUser = GetObject(strADsPath)

	' General
	If dta_physicalDeliveryOfficeName <> "" Then objUser.Put "physicalDeliveryOfficeName", dta_physicalDeliveryOfficeName
	'... en zo nog meer velden
 	objUser.SetInfo
End Sub
		
oCon.Close
Set oCon = Nothing
Het gaat mis op het moment dat deze regel wordt uitgevoerd: Set objUser = GetObject(strADsPath).
Ik krijg deze fout terug:
error '80072020'
/update/submit.asp, line 161
Ik neem aan dat de code op zich niet het probleem is, dan wel permissies. Maar dewelke? Die van de user die het script opvraagt? Die van IUSR? Van de server?

Geplaatst: 06 apr 2005, 20:03
door kikker46
Beste,

Wat staat er eigenlijk in die string, heeft de fout iets te maken met dat er in die string aanhalingstekens staan ?

Mvg,

Kikker

Geplaatst: 06 apr 2005, 20:09
door meon
Die string is een ldap-pad met een distinguished name, zoals bvb

Code: Selecteer alles

Set objUser = GetObject("LDAP://CN=User Name,OU=Users,OU=Office,OU=region,DC=domain,DC=corp,DC=local")

Geplaatst: 06 apr 2005, 21:56
door khsw
Die error kan ongeveer alles zijn :?

Waar ik spontaan aan denk is dat de account waaronder de website draait, en dus ook de LDAP query wordt uitgevoerd, niet voldoende rechten heeft daarvoor...

Geplaatst: 06 apr 2005, 22:05
door meon
ook als ik de connectie in het script laat uitvoeren door een domain-admin-account heb ik die fout.

Opvallend, thuis werkt het dus wél eh. Het moet dus iets zijn ivm permissies.

Naar een bruikbare tip van Kikker ga ik dit morgen eens proberen:
http://www.codecomments.com/archive299- ... 69775.html

Geplaatst: 07 apr 2005, 09:32
door meon
Jawel!

De uitleg op bovenstaande URL lost mijn probleem op!
Ik heb nu enkel nog een user nodig die kan wegschrijven. Ik denk dat dat via delegate controls wel op te lossen is.