/ / Angular und Web API mit Ping Federate mit WIF - angularjs, ASP.net-Web-API, WIF, Pingfederate

Angular und Web API mit Ping Federate mit WIF - angularjs, asp.net-web-api, wif, pingfederate

Ich verwende Ping zur Authentifizierung von Benutzern in einemAngular / .NET Web API-Stack mit WIF. WIF funktioniert sofort, indem es die richtige Konfiguration in web.config in einer MVC- oder Web Forms-Anwendung eingibt. Es fängt jeden Aufruf einer angeforderten Seite / Steuerung ab und wenn kein Token verfügbar ist, wird es zur Authentifizierung an Ping weitergeleitet.

Q1

In meinem Stapel funktioniert das nicht als der Webteil vonDiese Anwendung ist HTML / Angular. Ich könnte die Ping-Konfiguration in die Web-API-Konfigurationsdatei legen und dann, wenn eckig die API aufruft, wird WIF sie abfangen und den Benutzer (hoffentlich) zum Ping umleiten. Aber nicht sicher, ob Web API eine http Redirect tun kann. Auch Seiten, die wahrscheinlich keinen API-Anruf machen, werden ohne Authentifizierung geladen.

Q2

Nehmen wir an, Problem 1 ist gelöst und Benutzerauthentifiziert sich selbst bei Ping, Ping muss diese Assertion an die Web-API-Ebene und nicht an HTML / Angular senden, da es eine POST-Antwort ist. Das ist in Ordnung und Web-API überprüft das Claims-Objekt, um die Benutzerinformationen zu erhalten. Danach müssen wir den Benutzer umleiten, um zu der Seite zurückzugelangen, auf die er zugreifen wollte, was die App jetzt nicht mehr weiß. Auch, wie man HTTP Umleitung von Web API erreicht.

Q3

Gibt es eine Möglichkeit für Ping, auf einer html / eckigen Seite zu posten?

Danke für Ihre Hilfe...

Antworten:

1 für die Antwort № 1

Aufgrund der REST-Natur von APIs können sie keine HTTP-Weiterleitung durchführen. Selbst wenn sie es könnten, würde es während eines AJAX-Anrufs sein und den Browser nicht beeinflussen.

Standardmäßig unterstützt WIF nur die folgenden Protokolle:

  • WS-Fed
  • WS-Vertrauen
  • WS-Sicherheit
  • WS-Sicherheitspolitik
  • WS-Adressierung

Ich schlage vor, den impliziten OAuth-Grant-Typ für den Angular- / WebAPI-Teil zu verwenden.

Allerdings sind die Ansprüche von WIF und OAuth wirklich komplementär. Sie könnten eine OAuth-Erweiterung für WIF-Similair zu der hier referenzierten schreiben: https://msdn.microsoft.com/en-us/library/azure/gg193416.aspx

So stelle ich mir den Flow vor:

  1. Die Angular App fordert Informationen von der WIF-geschützten API an
  2. Die API gibt den Statuscode 401 zurück
  3. Die Angular-App führt eine Umleitung zum Ping-OAuth-Autorisierungsendpunkt durch
  4. Benutzer Authentifiziert sich, wenn er nicht bereits eine Sitzung mit dem SSO-IdP-Server hat
  5. Das Bearer-Token wird an die Angular-App zurückgegeben
  6. Das Bearer-Token wird dem Autorisierungsheader hinzugefügt und an die API gesendet
  7. WIF fängt die Anfrage ab, extrahiert das Bearer-Token und ruft den Ping-OAuth-Token-Endpunkt auf, um das Token zu validieren
  8. Ping gibt ein Token zurück, das die gesuchten Informationen zu Ansprüchen enthält. Diese Ansprüche werden dann in WIF eingefügt.