3

Active Directory サーバーに接続するために正しく動作するコードがあります。

Dim oDSObj: Set oDSObj = GetObject("LDAP:")
Dim oAuth: Set oAuth = oDSObj.OpenDSObject("LDAP://ldap.domain.com", "DOMAIN\username", "password", 1)

ただし、これを OpenLDAP サーバーに対して機能させるための構文を理解できないようです。

Dim oDSObj: Set oDSObj = GetObject("LDAP:")
Dim oAuth: Set oAuth = oDSObj.OpenDSObject("LDAP://ldap.domain.com/ou=Users", "username", "password", 1)

正直なところ、私は LDAP に関しては少し無頓着なので、dc と cn と ou の意味がわかりません (組織単位、一般名などを表すことは知っています) が、わかりませんそれをクエリに追加する必要がある場合。

Active Directory サーバーに接続したら、次のコードでクエリを実行します。

dc = ""
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Provider = "ADSDSOObject"
oConn.Open "Ads Provider", "DOMAIN\username", "password"            '
Dim rs: Set rs = oConn.Execute("<LDAP://ldap.domain.com" & dc & ">;(& (objectCategory=person)(objectClass=user)(sAMAccountName=" & GetLDAPUserName(sPerson) & "));name,mail,telephoneNumber;subtree")

しかし、sAMAccountName は AD 固有のものであることを認識しているため、openLDAP コードには別の構文が必要になります。

ユーザーは「ldapuser」で、パスワードは「password」で、次の場所に保存されます: ou=Users,dc=domain,dc=com

その LDAP サーバーに接続してアカウント情報を照会するためのコードは何ですか?

4

2 に答える 2

1

私はついにそれを理解しました:

sUser = "myusername"
sDN = "cn=" & sUser & ",ou=people,dc=company,dc=com"
sRoot = "LDAP://ldapservername.com/dc=company,dc=com"

Dim oDS: Set oDS = GetObject("LDAP:")
Dim oAuth: Set oAuth = oDS.OpenDSObject(sRoot, sDN, "password", &H0200)

Dim oConn: Set oConn = CreateObject("ADODB.Connection")
oConn.Provider = "ADSDSOObject"
oConn.Open "Ads Provider", sDN, "password"

Dim rs
Set rs = oConn.Execute("<" & sRoot & ">;(uid=" & sUser & ");cn,mail,telephoneNumber;subtree")

wscript.echo rs("cn").value
wscript.echo rs("mail").value
wscript.echo rs("telephoneNumber").value
于 2009-04-03T13:39:57.907 に答える
1

コード Michael に感謝します。
中央の OpenLDAP サーバーを使用して単純にユーザー (ユーザーパスワード) を認証するように変更しました。これが私のために働いたコードです(MSAccess 2003):

sUser = "TheUserName"
sDN = "uid=" & sUser & ",o=users,dc=MyDomain,dc=it"
sRoot = "LDAP://MyLDAPServer/o=users,dc=MyDomain,dc=it"

Dim oDS: Set oDS = GetObject("LDAP:")

On Error GoTo AuthError
Dim oAuth: Set oAuth = oDS.OpenDSObject(sRoot, sDN, "ThePassword", &H200)
On Error GoTo 0

MsgBox "Login Successful"
Exit Sub

AuthError:
If Err.Number = -2147023570 Then
    MsgBox "Wrong Username or password !!!"
End If
On Error GoTo 0
于 2012-04-13T15:07:30.683 に答える