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:
Und alle Projekte sollten Sachen wie auf Bild benötigt haben: Schritte auf dem Bild:
Meine Fragen sind:
BEARBEITEN: Ich denke, dass ich Resource Owner flow brauche. Ich unterstütze diese Ressource ich sehe, wo Benutzer Benutzername und Passwort eingeben.
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).
Tags und Links c# security authentication asp.net-web-api2 thinktecture-ident-server