As any database designer knows, MS Access is a quick and easy way to get a user application up and running. It’s intuitive, easy to use, easy to learn and provides a good, low-cost user experience. However, the built-in security for Access is often cumbersome and easy to beat. If you are in an active directory domain environment, the best course of action is to use the active directory to allocate access based on users and security groups.
The script below will allow you to authenticate users via the active directory. While you may not have access to create security groups, you can authenticate and then match against an encrypted user table (MD5, AES, Blowfish, etc though MD5 should not be considered without using a salt). The security advantage here is that you are limiting potential logins both via the active diretory and the user table. Also, users will not have to remember a password for your system and for the network. As the user updates his/her network password, that same update is reflected with your database system login.
Here’s the code for my solution to this problem (using the Active DS Type Library)
Public Function ADSAuth(ByVal ADSDomain As String, ByVal ADSUsername As String, ByVal ADSPassword As String) As Boolean On Error GoTo ErrHandler Dim dso As IADsOpenDSObject Dim Domain As IADsDomain Set dso = GetObject("WinNT:") Set Domain = dso.OpenDSObject("WinNT://" & ADSDomain, ADSUsername, ADSPassword, ADS_SECURE_AUTHENTICATION) Set Domain = Nothing Set dso = Nothing ADSAuth = True Exit Function ErrHandler: If Err.Number = -2147023570 Then MsgBox "Login Failure: Unknown user name or bad password.", vbCritical + vbOKOnly, "Login Failure" Else MsgBox "Program encountered error number " & Err.Number & " : " & Err.Description & ".", vbCritical + vbOKOnly, "Program Error" End If Set Domain = Nothing Set dso = Nothing ADSAuth = False End Function
This is just a brief, single purpose script I threw together so if anyone has a faster/better way of doing this or has the code for a more comprehensive manipulation of the active directory, post it in the comments. Thanks for reading and happy coding!
Filed under: Programming, Technology |
Leave a Reply