1

Ich habe eine ASP.net Core (.NET Framework 4.7) Anwendung, die wie Cookie-Authentifizierung verwendet, was in ist this linkWie können Sie die asp.net-Kern-Windows-Authentifizierung neben der Cookie-Authentifizierung verwenden?

app.UseCookieAuthentication(new CookieAuthenticationOptions() 
    { 
     AuthenticationScheme = "CookieAuthentication", 
     LoginPath = new PathString("/Login/"), 
     AccessDeniedPath = new PathString("/Login/"), 
     AutomaticAuthenticate = true, 
     AutomaticChallenge = true 
    }); 

Was will ich die Windows-Authentifizierung mit Cookie-Authentifizierung erlauben ist. Wenn der Benutzer sich also in der Domäne des Unternehmens befindet, muss er seinen Benutzernamen und sein Passwort nicht eingeben. Wenn sie jedoch von einer externen Domäne kommen, werden sie zur Anmeldeseite weitergeleitet und geben ihren Benutzernamen und ihr Passwort ein, um authentifiziert zu werden .

+0

Wie authentifizieren Sie derzeit die Benutzer der externen Domäne? – Win

+0

Ich mache das durch Cookie-Authentifizierung. – Baso

Antwort

1

Wenn der Benutzer sich in der Domäne des Unternehmens befindet, muss er Benutzername und Kennwort nicht eingeben.

doesn't have to enter user name and password ist der schwierige Teil. Soweit ich weiß, können Sie nicht beide Authentifikation gleichzeitig erfüllen.

Sie können jedoch beide Arten von Benutzern bitten, Benutzernamen und Passwort einzugeben und sich zuerst mit Ihrem System zu authentifizieren. Wenn die Authentifizierung fehlschlägt, können Sie sich mit dem Domänenkonto authentifizieren. Wenn dieses Szenario funktioniert, können Sie Novell.Directory.Ldap in ASP.NET Core verwenden. Here ist der Beispielcode.

public bool ValidateUser(string domainName, string username, string password) 
{ 
    string userDn = $"{username}@{domainName}"; 
    try 
    { 
     using (var connection = new LdapConnection {SecureSocketLayer = false}) 
     { 
     connection.Connect(domainName, LdapConnection.DEFAULT_PORT); 
     connection.Bind(userDn, password); 

     if (connection.Bound) 
      return true; 
     } 
    } 
    catch (LdapException ex) 
    { 
     // Log exception 
    } 
    return false; 
} 

Hinweis: Ab heute ist System.DirectoryServices noch nicht in ASP.NET-Core verfügbar.

+0

Ich dachte, ich kann die app.UseCookieAuthentication nach app.UseMvc und aktivieren Sie Windows-Authentifizierung und anonyme Authentifizierung auf diese Weise, wenn Windows-Authentifizierung nicht funktioniert die Pipeline weiterhin die CookieAuthentication zu erreichen. In der Zeit darf mein Login-Controller auf [AllowAnonymous] zugreifen und der Rest des Controllers hat das [Authorize] -Attribut. Ist es in irgendeiner Weise möglich? Vielen Dank, – Baso

+0

Sie könnten diese beiden Middle-Ware zusammen. Ich habe es noch nie versucht, also konnte ich es nicht sicher sagen. – Win

Verwandte Themen