Etki alanı kullanıcısı için bir kullanıcı adı ve parola verildiğinde, bu kullanıcının programlı olarak doğrulanmasının en iyi yolu ne olurdu?Etki Alanı Kullanıcılarını System.DirectoryServices ile Kimlik Doğrulama
6
A
cevap
8
Bazı kesmeleri yalnızca kimlik doğrulaması için kimlik doğrulamasını kullanabilirsiniz.
Try
Dim directoryEntry as New DirectoryEntry("LDAP://DomainController:389/dc=domain,dc=suffix", "username", "password")
Dim temp as Object = directoryEntry.NativeObject
return true
Catch
return false
End Try
kullanıcı geçerli değilse, dizin girdisi NativeObject erişilebilir ve bir istisna atar edilemez. Bu en etkili yol olmasa da (istisnalar kötüdür, falan filan), hızlı ve acısızdır. Bu ayrıca, yalnızca AD değil, tüm LDAP sunucularıyla çalışmanın mükemmel bir avantajına da sahiptir.
16
.NET 3.5 bu sorunla başa çıkmak için yeni bir ad alanı ekledi - System.DirectoryServices.AccountManagement. Kod örneği aşağıdaki gibidir:
Private Function ValidateExternalUser(ByVal username As String, ByVal password As String) As Boolean
Using context As PrincipalContext = New PrincipalContext(ContextType.Domain, _defaultDomain)
Return context.ValidateCredentials(username, password, ContextOptions.Negotiate)
End Using
End Function
ad da (vb şifreleri süresi dolan şifreleri değiştirme) etki alanı hesabı manipüle yöntemleri bir sürü sağlamak gibi görünüyor.
asla TÜM özel durumları yakalamamalısınız ... COMException, LDAP sunucusuna erişemediğinizde atılacak olan şeydir, böylece yakalayacağınız şey budur. –