ADSI en ASP

Alles over programmeren en development binnen de IT-wereld
Plaats reactie
Gebruikersavatar
meon
Administrator
Administrator
Berichten: 16757
Lid geworden op: 18 feb 2003, 22:02
Twitter: meon
Locatie: Bree
Uitgedeelde bedankjes: 582 keer
Bedankt: 780 keer
Provider

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?
Laatst gewijzigd door meon 06 apr 2005, 20:11, in totaal 1 gewijzigd.
Gebruikersavatar
kikker46
Pro Member
Pro Member
Berichten: 262
Lid geworden op: 29 mei 2004, 01:25
Locatie: Kikkerland

Beste,

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

Mvg,

Kikker
Gebruikersavatar
meon
Administrator
Administrator
Berichten: 16757
Lid geworden op: 18 feb 2003, 22:02
Twitter: meon
Locatie: Bree
Uitgedeelde bedankjes: 582 keer
Bedankt: 780 keer
Provider

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")
khsw
Elite Poster
Elite Poster
Berichten: 1158
Lid geworden op: 03 maa 2004, 09:04
Uitgedeelde bedankjes: 18 keer
Bedankt: 16 keer

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...
Gebruikersavatar
meon
Administrator
Administrator
Berichten: 16757
Lid geworden op: 18 feb 2003, 22:02
Twitter: meon
Locatie: Bree
Uitgedeelde bedankjes: 582 keer
Bedankt: 780 keer
Provider

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
Gebruikersavatar
meon
Administrator
Administrator
Berichten: 16757
Lid geworden op: 18 feb 2003, 22:02
Twitter: meon
Locatie: Bree
Uitgedeelde bedankjes: 582 keer
Bedankt: 780 keer
Provider

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.
Plaats reactie

Terug naar “Development”