Authentifizieren Sie einen Benutzer in active directory?
Ich habe eine web-Anwendung, wo ich eine login-Seite.Wie kann ich die Authentifizierung gegen das active directory-Benutzer ?
Ab jetzt bin ich in der Lage zu bekommen einige Eigenschaften aus dem active directory,der zu dem Ergebnis kommt, ich bin in der Lage zu kommunizieren mit AD mit LDAP-Zeichenfolge.Ich weiß, das ist nicht möglich, zu extrahieren Passwort aus der AD-und authentifiziert Benutzer eingegebene Kennwort !!.
Gibt es eine Möglichkeit, ich kann die Authentifizierung gegen das active directory-Benutzer ?
Hier ist mein code bisher
public class Userdetails
{
public static string ADPath = ConfigurationManager.AppSettings.Get(“ADPath”); //Get the ADAM Path from web config fiel
public static string ADUser = ConfigurationManager.AppSettings.Get(“ADUser”); //ADAM Administrator
public static string ADPassword = ConfigurationManager.AppSettings.Get(“ADPassword”); //ADAM Administrator password
public static DirectoryEntry GetUserDetails(string userID)
{
AuthenticationTypes AuthTypes; //Authentication flags.
//Set authentication flags.
//For non-secure connection, use LDAP port and
// ADS_USE_SIGNING |
// ADS_USE_SEALING |
// ADS_SECURE_AUTHENTICATION
//For secure connection, use SSL port and
// ADS_USE_SSL | ADS_SECURE_AUTHENTICATION
AuthTypes = AuthenticationTypes.Signing |
AuthenticationTypes.Sealing |
AuthenticationTypes.Secure;
DirectoryEntry De = new DirectoryEntry(ADPath, ADUser, ADPassword, AuthTypes);
DirectorySearcher Ds = new DirectorySearcher(De);
SearchResult Sr;
Ds.SearchScope = SearchScope.Subtree;
Ds.Filter = “(&(objectclass=*)(cn= ” + userID + “))”;
Sr = Ds.FindOne();
if (!(Sr == null))
{
De = new DirectoryEntry(Sr.Path, ADUser, ADPassword, AuthTypes);
return De;
}
else
{
return null;
}
}
- Ein Active Directory-server wird in der Lage sein, um erhalten Benutzername und Passwort und Ihnen sagen, ob es das richtige Passwort ist oder nicht, ohne dass reversible Passwörter. So sollte es möglich sein.
- Welche version von C# verwenden Sie?
- Ich bin mit C# 3.5
- Verwenden Sie anschließend nur die DirectoryEntry - /DirectorySearcher-als letzten Ausweg. Die config-basierte option von Wiktor oder Brian ' s code. Beide sind viel einfacher zu verwenden.
- Möglich doppelte oder Verwandte - stackoverflow.com/questions/2538064/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie nur authentifizieren gegen das AD und nicht über andere, für AD-bestimmte Operationen nicht warum du dich mit dem built-in
ActiveDirectoryMembershipProvider
anstelle des Schreibens einer benutzerdefinierten code?Bitte werfen Sie einen Blick:
http://msdn.microsoft.com/en-us/library/system.web.security.activedirectorymembershipprovider.aspx
http://msdn.microsoft.com/en-us/library/bb299745.aspx
http://msdn.microsoft.com/en-us/library/system.directoryservices.accountmanagement.aspx
http://msdn.microsoft.com/en-us/magazine/cc135979.aspx
Configuration.Config.ActiveDirectory.PrimaryServer
undConfiguration.Config.ActiveDirectory.Container
?Erstellen einer neuen DirectoryEntry mit einem Passwort und verwenden Sie es mit ein DirectorySearcher-überprüft das Passwort und werfen eine Ausnahme, wenn es fehlschlägt. Eine wichtige Ausnahme von dieser ist leer/null-Passwörter. Die meisten LDAP-Server (ich denke, die ANZEIGE ist im Lieferumfang enthalten) ignoriert den parameter password, wenn Sie null ist oder leer. So sollten Sie testen, für, die ersten.
Alte MSDN-Beispiel