.NET Core Identity Server 4-Authentifizierung VS-Identitätsauthentifizierung

Ich versuche zu verstehen, die richtige Art und Weise zu tun-Authentifizierung in ASP.NET Core. Ich habe mehrere Ressourcen (von denen die Meisten veraltet).

Einige Leute bieten Alternative Lösungen, die besagt, verwenden Sie eine cloud-basierte Lösung wie Azure AD, oder Verwenden IdentityServer4 und meine host-eigenen Token-Server.

In der Älteren version .Net eine der einfacheren Formen der Authentifizierung zum erstellen eines Benutzerdefinierten Iprinciple und speichern zusätzliche Authentifizierung Benutzer-Daten.

public interface ICustomPrincipal : System.Security.Principal.IPrincipal
{
    string FirstName { get; set; }

    string LastName { get; set; }
}

public class CustomPrincipal : ICustomPrincipal
{
    public IIdentity Identity { get; private set; }

    public CustomPrincipal(string username)
    {
        this.Identity = new GenericIdentity(username);
    }

    public bool IsInRole(string role)
    {
        return Identity != null && Identity.IsAuthenticated && 
           !string.IsNullOrWhiteSpace(role) && Roles.IsUserInRole(Identity.Name, role);
    }

    public string FirstName { get; set; }

    public string LastName { get; set; }

    public string FullName { get { return FirstName + " " + LastName; } }
}

public class CustomPrincipalSerializedModel
{
    public int Id { get; set; }

    public string FirstName { get; set; }

    public string LastName { get; set; }
}

Dann würden Sie Serialisieren Sie Ihre Daten in ein cookie und senden Sie es zurück an den client.

public void CreateAuthenticationTicket(string username) {     

    var authUser = Repository.Find(u => u.Username == username);  
    CustomPrincipalSerializedModel serializeModel = new CustomPrincipalSerializedModel();

    serializeModel.FirstName = authUser.FirstName;
    serializeModel.LastName = authUser.LastName;
    JavaScriptSerializer serializer = new JavaScriptSerializer();
    string userData = serializer.Serialize(serializeModel);

    FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(
    1,username,DateTime.Now,DateTime.Now.AddHours(8),false,userData);
    string encTicket = FormsAuthentication.Encrypt(authTicket);
    HttpCookie faCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket);
    Response.Cookies.Add(faCookie);
}

Meine Fragen sind:

  1. Wie kann ich mich authentifizieren ähnlich wie die Art und Weise getan, die in früheren version die .Net gilt der alte Weg, immer noch arbeiten oder gibt es eine neuere version.
  2. Was sind die vor-und Nachteile der Verwendung von Ihrem eigenen token-server Verse, die Erstellung Ihrer eigenen benutzerdefinierten Prinzip?
  3. Beim Einsatz einer cloud-basierten Lösung oder ein separates Token-server wie würden Sie sich Integrieren, dass Sie mit Ihrer aktuellen Anwendung würde ich müsste noch eine Tabelle users in meiner Anwendung, wie würden Sie verknüpfen die beiden?
  4. Sein, es gibt so viele verschiedene Lösungen, wie kann ich erstellen Sie eine enterprise-Anwendung zu ermöglichen, Anmeldung über Gmail/Facebook während noch in der Lage zu erweitern, um andere SSO -
  5. Was sind einige einfache Implementierungen dieser Technologien?

InformationsquelleAutor der Frage johnny 5 | 2017-02-08

Schreibe einen Kommentar