Ich brauche SSO (Single Sign On) einen Benutzer von einer Anwendung von mir (Identity-Provider mit ASPNET Session State) und umleiten sie zu einer anderen Anwendung von mir (Service Provider), die konfiguriert ist zu verwenden impliziter Fluss mit IdentityServer4. Ich muss dies erreichen, ohne dass sich der Benutzer wieder anmelden muss und ohne das Passwort des Benutzers anzugeben.IdentityServer SSO - Vertrauenswürdige Anwendung
Mein erster Gedanke war, dass ich ein Client-Geheimnis für den Identitätsanbieter verwenden könnte den Benutzer auf IdentityServer4 Authentifizierung Endpunkt mit dem Zugriffstoken als Abfrageparameter zu umleiten und dann einen benutzerdefinierte Validator oder Erweiterung Zuschuss verwenden, um eine Identität zu erteilen Token zur Verwendung mit der Anwendung des Dienstanbieters, ohne dass auch das Kennwort des Benutzers angegeben werden muss.
Ich habe es geschafft, ein Zugriffs-Token an den Identity-Provider zu senden und dann den Benutzer zu IdentityServer4 umzuleiten, aber die Ausstellung eines Identitäts-Tokens hat sich als schwierig für mich erwiesen. Ich habe die Proben und die Dokumentation überflutet und bin gelinde gesagt verwirrt.
Ich bin auf der Suche nach Richtung auf den geeigneten Ansatz für dieses Szenario und vielleicht ein umfassendes Beispiel in C#. Ich verstehe, dass ich einen hybriden Fluss verwenden kann, um ein Zugangstoken sowie ein Identitäts-Token auszugeben. Ich denke, mein größter Kampf ist, wie man den Benutzer umleitet und basierend auf dem Zugriffstoken dem Benutzer ein Identitäts-Token ausstellt (und wenn dies sogar ein akzeptabler Ansatz ist).
Einfach ausgedrückt: Ich möchte den Benutzer von Anwendung A zu IdentityServer4 auf Anwendung B basierend auf Vertrauen mit dem Identity-Provider umleiten (über Client-Geheimnis?).
Hinweis: Ich verstehe, dass dies als eine meinungsbasierte Frage angesehen werden könnte, aber basierend auf meinen Untersuchungen glaube ich, dass es eine einzige Best Practice gibt und darum bitte ich.
Haben die Anwendungen A und B in ihren * ClientSecrets * dasselbe * Secret *? @alan – Babak
@Babak Anwendung B nutzt das ClientSecret nicht, da es sich um das OAuth-Token handelt. Einfach ausgedrückt: Anwendung A verwendet das ClientSecret, um das OAuth-Token zu erhalten, und stellt dieses Token anschließend Anwendung B. – alan
Aber die Auth-App akzeptiert das Token nicht und lässt uns in Login2() gehen. Irgendeine Meinung? – Babak