[ASP] Authenticatie via een LDAP-server

Pagina: 1
Acties:
  • 103 views sinds 30-01-2008
  • Reageer

  • TweakersOnly
  • Registratie: September 2000
  • Laatst online: 18:40
Als schoolopdracht moeten wij vanaf een webite op het domein XX een LDAP-server op het domein YY benaderen om gebruikers door middel van hun gebruikersnaam en wachtwoord te authenticeren.

Van de LDAP-server op het domein YY is het volgende bekend:
Host: ldap.YY.nl
Port: 9893
Application dn: uid=TESTPROG,dc=NetIDAccess
Application password: WACHTWOORD
Base DN (voor users): dc=NetID,o=domein YY,c=nl
De authenticatie moet op de volgende manier gebeuren:
No information on the tree-structure of the NetId server is disclosed, so as to encourage software developers to not make assumptions on this structure. The preferred usage pattern is:
- Bind with application DN and password
- Search for a user by search on attribute ‘uid’ and collect this DN
- Bind with the DN found in step 2 and password provided by user
- Look at Bind-result for authentciation

The search in step 2 should be performed with the scope “SUBTREE”.
Inmiddels heb ik de volgende code voor het eerste punt:
ASP.NET Visual Basic:
1
2
3
4
5
6
dim username, wachtwoord, ldapserver, dso, comp
username   = "uid=TESTPROG,dc=NetIDAccess"
wachtwoord   = "WACHTWOORD"
ldapserver = "LDAP://ldap.YY.nl:9893"
set dso = GetObject("LDAP:")
set comp = dso.OpenDSObject(ldapserver, username, wachtwoord,0)


Dit gaat echter niet goed. Ik krijg de volgende foutmelding terug:
Technical Information (for support personnel)

Error Type:
(0x8007203A)
ldap.asp, line 6
Weet iemand wat ik verkeerd doe en hoe ik de overige punten moet aanpakken. :?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 13:24

gorgi_19

Kruimeltjes zijn weer op :9

Heb je al gezocht op Google met de zoekwoorden authentication LDAP ASP GetObject?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • TweakersOnly
  • Registratie: September 2000
  • Laatst online: 18:40
Ja, ik heb al een hele tijd gezocxht op google maar niet kunnen vinden wat ik nodig heb. Als ik de authenticatie methode goed begrijp, moet ik eerst controleren of de application DN voorkomt. Als dit waar is, ga ik in de application DN zoeken naar de username en wachtwoord. Als ik verkeerd zit, dan hoor ik dit graag. :)

Verwijderd

Wellicht een interessant verhaal van Microsoft over LDAP, inclusief voorbeeld in VBScript. http://www.microsoft.com/.../activedirectory/ldap.asp

Enjoy :)

Edit:
Nog een linkje: http://aspalliance.com/lance/ldapauth-1.asp
Okay, dit linkje is idd niet zo relevant.

[ Voor 26% gewijzigd door Verwijderd op 23-01-2003 17:50 ]


  • TweakersOnly
  • Registratie: September 2000
  • Laatst online: 18:40
Verwijderd schreef op 23 januari 2003 @ 15:15:
Wellicht een interessant verhaal van Microsoft over LDAP, inclusief voorbeeld in VBScript. http://www.microsoft.com/.../activedirectory/ldap.asp

Enjoy :)

Edit:
Nog een linkje: http://aspalliance.com/lance/ldapauth-1.asp
Ik heb het verhaal van MS doorgelezen, maar hier kom ik niet echt verder mee. Het verhaal op aspalliance.com gaat uit van het IP*Works ASP-component om een LDAP-server te benaderen, terwijl ik van ADSI moet uitgaan. Anders was het ook eenvoudig geweest. :) :)

  • TweakersOnly
  • Registratie: September 2000
  • Laatst online: 18:40
Ik heb geprobeerd om door middel van een SQL query alle gebruikers op de LDAP server op te vragen:


ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
dim Conn, rs, SQLStmt
SQLStmt = "SELECT cn " & _
          "FROM 'LDAP://ldap.YY.nl:9893,dc=netID,o=domein YY,c=nl' " & _
          "WHERE objectClass='*'"
Set Conn = CreateObject("ADODB.Connection")
Conn.Provider = "ADSDSOObject"
Conn.Open "ADs Provider","uid=TESTPROG,dc=NetIDAccess","WACHTWOORD"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.open SQLStmt, conn
Do While Not rs.EOF Or rs.BOF
   ReturnValue = rs.Fields(0)
   If IsArray(ReturnValue) Then
        For I = LBound(ReturnValue) To UBound(ReturnValue)
            If ReturnValue(I) <> "" Then
                Response.Write ReturnValue(I) & "<BR>"
            End If
        Next
   Else
        Response.Write ReturnValue & "<BR>"
   End If
   rs.MoveNext
Loop


Bij de volgende regel gaat het echter fout:
ASP:
1
rs.open SQLStmt, conn


De foutmelding die gegeven wordt is:
Error Type:
Provider (0x80040E37)
Table does not exist.
default.asp, line 10
Wat heb ik hier verkeerd gedaan? :?

  • TweakersOnly
  • Registratie: September 2000
  • Laatst online: 18:40
Ik ben nog even verder gaan zoeken op google en GoT. Op http://gathering.tweakers.net/forum/list_messages/373642 wordt op bijna identieke wijze met ASP een LDAP-koppeling gemaakt. Als oplossing wordt gezegd dat je FAST_BIND moet toepassen. Kan iemand mij hier meer informatie over geven?
Pagina: 1