Tengo una Aplicación de acceso que requiere que el usuario ingrese su usuario y contraseña del dominio de Windows para ingresar. He utilizado el siguiente código VBA para lograr esto:VBA: Iniciar sesión usando la Autenticación de Windows
Function WindowsLogin(ByVal strUserName As String, ByVal strpassword As String, ByVal strDomain As String) As Boolean
'Authenticates user and password entered with Active Directory.
On Error GoTo IncorrectPassword
Dim oADsObject, oADsNamespace As Object
Dim strADsPath As String
strADsPath = "WinNT://" & strDomain
Set oADsObject = GetObject(strADsPath)
Set oADsNamespace = GetObject("WinNT:")
Set oADsObject = oADsNamespace.OpenDSObject(strADsPath, strDomain & "\" & strUserName, strpassword, 0)
WindowsLogin = True 'ACCESS GRANTED
ExitSub:
Exit Function
IncorrectPassword:
WindowsLogin = False 'ACCESS DENIED
Resume ExitSub
End Function
noto que a veces cuando se introduce correctamente la información, el acceso es denegado. Intenté depurar una vez y me dio el error: "La ruta de red no se encontró. " en la línea Set oADsObject = oADsNamespace.OpenDSObject)
.
No estoy seguro de por qué esto ocurre a veces. ¿Es mejor convertir a LDAP en su lugar? He intentado pero no puedo construir la URL de LDAP correctamente.
No sé cómo responder a su pregunta, pero jugando con su código parece que obtengo un VERDADERO en su función siempre y cuando pase un nombre de usuario y un dominioStan válidos aunque la contraseña sea "" –
Es como un acertar o fallar. Comportamiento extraño. – Rick
Terminé usando 'opción comparar binario' en lugar de' opción comparar base de datos' razonamiento es que 'opción comparar base de datos' no le da un buen control de los CASOS –