Identitätsserver-Authentifizierung im realen Szenario implementieren

9

Ich untersuche, wie IdentityServer 3 funktioniert, und ich habe immer noch Probleme, sie vollständig zu verstehen.

Im Allgemeinen ist mir das Konzept klar, aber ich bin mir nicht sicher, wie ich das bei einem realen Projekt umsetzen soll.

Dies ist ein grundlegendes Beispiel, das ich in meinem Fall zu implementieren versuche: link

Ich habe ein Web-API-Projekt und möchte meine API-Methoden von jedem Client aufrufen (mvc, wpf, phone ...) Daher brauche ich eine Implementierung, die für alle Kunden geeignet ist.

Wenn ich es gut verstehe (und wahrscheinlich nicht vollständig verstehe), sollte ich drei Projekte haben:

  • Kunde
  • Api
  • Projektiere den Host IdentityServer

Und alle Projekte sollten Sachen wie auf Bild benötigt haben: Schritte auf dem Bild:

  1. Erhalte Token
  2. Rückgabetoken
  3. Rufen Sie api
  4. auf
  5. Überprüfen Sie, ob das Token in Ordnung ist
  6. Wenn das Token in Ordnung ist, dann geben Sie die anderen Daten zurück, sonst erscheint der Fehler

Meine Fragen sind:

  • Denke ich darüber nach, wie das funktioniert, ok?
  • Wo mache ich Fehler?
  • Ist dieses Beispiel gut genug für meinen Fall? Fehle ich etwas? wichtig?
  • Muss ich ein Projekt erstellen, das den IdentityServer hostet, oder so? benötigt nur zum Beispiel Code?
  • Muss das IdentityServer-Host-Projekt eine Konsolenanwendung sein? kommunizieren mit API und Client (wie im Beispiel) oder in der realen Welt Das ist anders gemacht?
  • Sollte projizieren, dass der Host-Identitätsserver auf Clients und Benutzer?
  • Sollte ein anderes Projekt außer dem Host-Identity-Server-Projekt auf Clients und Benutzer achten?
  • Was ist der Unterschied zwischen implizitem und hybridem Fluss, was brauche ich in meinem Fall und warum?
  • Wie erstelle ich meine eigene Login-Ansicht? Ich möchte HTML-Seite für die Anmeldung, wenn ich Web-Client verwenden, aber WPF Login-Ansicht, wenn ich wpf, auch andere Ansicht für mobile Client verwenden.

BEARBEITEN: Ich denke, dass ich Resource Owner flow brauche. Ich unterstütze diese Ressource ich sehe, wo Benutzer Benutzername und Passwort eingeben.

    
Raskolnikov 14.01.2016, 12:43
quelle

1 Antwort

2

Ihr grundsätzlicher Ablauf ist korrekt, wobei Identity Server als Ihr Autorisierungsserver fungiert und Ihr Client und Ihre Web-API getrennt sind.

Sie sollten Identity Server in einem eigenen Projekt hosten, um sicherzustellen, dass es von jeder anderen Logik getrennt ist, die Sicherheitsbedenken hervorrufen könnte. Wie Sie es hosten, liegt an Ihnen und Ihrem Anwendungsfall. Normalerweise würden Sie sehen, dass es in einem ASP.NET-Projekt auf einem IIS-Server gehostet wird.

Identity Server muss Clients und Benutzer kennen, um sie zu authentifizieren. Die einzigen anderen Projekte, die Ihren Identitätsspeicher (Benutzer) kennen sollten, sind Anwendungen, die sich auf Administratoren, Benutzerregistrierung usw. beziehen. Der Client-Speicher wird nur von Identity Server verwendet.

Ansichten können mithilfe der Identity Server-Vorlagen oder durch die Einführung Ihrer eigenen ViewService geändert werden. Weitere Informationen finden Sie in der Dokumentation: Ссылка

Bei den Flows ist der Ressourcenbesitzerfluss nur OAuth, daher gibt es keine Authentifizierung (Anmeldeseite), nur Autorisierung (Server zu Server).

    
Scott Brady 15.01.2016, 13:10
quelle