1

LDAPでユーザーを認証するためにasp classicを使用しています。LDAP には約 10,000 のアカウントがあり、asp での認証のチェックは非常に遅くなります (15 秒)。

同じサーバーで LDP ツール ( Microsoft から) を使用しましたが、すべて (接続、バインディング、検索から) は高速です。

これが私のコードです。3つの異なるオプションを試しましたが、同じ結果が得られました:

SQL 命令の使用:

Dim oConn: Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Provider = "ADsDSOOBJECT"
oConn.Properties("User ID") = Username
oConn.Properties("Password") = Password
oConn.Properties("Encrypt Password") = True
oConn.Open "DS Query", Username, Password
Dim Query: Query = "SELECT sAMAccountName FROM 'LDAP://ldap.mydomain.com/CN=" & Username & ",CN=Users' WHERE objectCategory = 'person' AND objectClass='user' AND SAMAccountName = '" & Username & "' "
Dim oCmd: Set oCmd = Server.CreateObject("ADODB.Command")
Set oCmd.ActiveConnection = oConn
oCmd.CommandText = Query
Dim oRs: Set oRS = oCmd.Execute
If oRS.BOF Or oRS.EOF Then
    ' Authentication failed
Else
    ' Autentication passed
End If
...

LDAP の使用方法:

Dim oConn: Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Provider = "ADsDSOOBJECT"
oConn.Properties("User ID") = Username
oConn.Properties("Password") = Password
oConn.Properties("Encrypt Password") = True
oConn.Open "DS Query", Username, Password
Dim Query: Query = "<LDAP://ldap.mydomain.com>;(samAccountName=" & Username & ");samAccountName;subtree"
Dim oCmd: Set oCmd = Server.CreateObject("ADODB.Command")
Set oCmd.ActiveConnection = oConn
oCmd.CommandText = Query
Dim oRs: Set oRS = oCmd.Execute
If oRS.BOF Or oRS.EOF Then
    ' Authentication failed
Else
    ' Autentication passed
End If
...

IADS オブジェクトの使用:

Dim DSODomaine
Dim DSOContainer

On Error Resume Next

Set DSODomaine = GetObject("LDAP:")
Set DSOContainer = DSODomaine.OpenDSObject("LDAP://ldap.mydomain.com", Username, Password, ADS_SECURE_AUTHENTICATION + ADS_SERVER_BIND)

If Err.Number <> 0 Then
    ' Authentication failed
Else
    ' Autentication passed
End If
...

3 つの例はすべて遅いです。asp classic を使用してパフォーマンスを向上させるにはどうすればよいですか?

4

1 に答える 1