2010-10-04 4 views
2

Мне нужно проверить пару имени пользователя и пароля для данного домена в VBScript. Сценарий будет знать имя пользователя, пароль и домен, для которых он должен проверять доступ, и все, что мне нужно вернуть, является истинным или ложным относительно того, действительна ли учетная запись.Проверка имени пользователя/пароля на домен Active Directory в VBScript?

Может ли кто-нибудь предложить хороший способ достичь этого? Благодаря!

+1

выглядит следующим образом (http://stackoverflow.com/questions/290548/c -validate-a-username-and-password-on-active-directory) - это хороший способ сделать это в .NET, но оптимальным решением VBScript было бы лучше. – c0nsumer

ответ

4

Следующая функция будет проверять имя пользователя/пароль, против данной области:

function fnCheckAccess(strDomain, strUserID, strUserPWD) 

const ADS_SECURE_AUTHENTICATION = &h0001 
const ADS_CHASE_REFERRALS_ALWAYS = &H60 

dim objDSO 
dim objUser 
dim strPath 

strPath = "LDAP://" & strDomain & "/OU=Users,DC=" & strDomain 

On Error Resume Next 
set objDSO = GetObject("LDAP:") 
set objUser = objDSO.OpenDSObject (strPath, strUserID, strUserPWD, ADS_SECURE_AUTHENTICATION OR ADS_CHASE_REFERRALS_ALWAYS) 
if Err.Number <> 0 then 
    MsgBox "Incorrect Password for " & g_strDomain & "\" & g_strUserID & "." & vbCRLF & vbCRLF & "Error " & Err.Number & ": " & Err.Description, 16, "Access Denied" 
    fnCheckAccess = False 
else 
    fnCheckAccess = True 
end if 
Err.Clear 
On Error Goto 0 

set objDSO = Nothing 
set objUser = Nothing 

end function 
+0

Работает блестяще - спасибо! – gdt

2

Это не "Microsoft одобрил" метод проверки учетных данных:

http://msdn.microsoft.com/en-us/library/windows/desktop/aa706065(v=vs.85).aspx

" Logon User "должен хорошо работать для операционных систем XP +.

Следующая статья была также очень полезно в получении этого выясняло (VB.NET):

http://codingforpassion.blogspot.com/2011/07/windows-logon-api-for-net.html

3

Если бы проблемы с публикуемой fnCheckAccess (strDomain, strUserID, strUserPWD), как мой домен OU структура делает не имеют пользователей в OU = Пользователи. На основании статьи MSDN придумал, после чего должно работать на любом домене:

'http://msdn.microsoft.com/en-us/library/windows/desktop/aa706065%28v=vs.85%29.aspx 
    Set objNetwork = CreateObject("WScript.Network") 
    strDomain = objNetwork.UserDomain 
    Const ADS_SECURE_AUTHENTICATION = 1 
    strUsername=InputBox("Enter Username:") 
    strPassword=InputBox("Enter Password:") 
    Set objDS = GetObject("LDAP:") 
    On Error Resume Next 
    Set objDomain = objDS.OpenDSObject("LDAP://" & strDomain, strUsername, strPassword, ADS_SECURE_AUTHENTICATION) 
    If Err.Number Then 
     WScript.Echo _ 
      "For user:" & vbCrLf & _ 
      " " & strDomain & "\" & strUsername & vbCrLf & _ 
      "Error Number:" & vbCrLf & _ 
      " " & Err.Number & vbCrLf & _ 
      "Error Description:" & vbCrLf & _ 
      " " & Err.Description 
    Else 
     WScript.Echo _ 
      "Valid password entered for user" & vbCrLf & _ 
      " " & strDomain & "\" & strUsername 
    End If 
    On Error Goto 0 
0
runas /u:domain\user notepad.exe 

делает трюк

Смежные вопросы