AD FS 2.0-Authentifizierung und AJAX

Ich habe eine Website, die Sie versuchen zu nennen eine MVC-controller-action auf einer anderen Website. Diese Seiten sind sowohl das setup als relying party Vertrauensstellungen in AD FS 2.0. Alles authentifiziert und funktioniert einwandfrei beim öffnen von Seiten im browser-Fenster zwischen den beiden Standorten. Jedoch, wenn Sie versuchen, Aufruf einer controller-action von JavaScript mit dem jQuery-AJAX-Methode es schlägt immer fehl. Hier ist ein code-snippet, was ich versuche zu tun...

$.ajax({
  url: "relyingPartySite/Controller/Action",
  data: { foobar },
  dataType: "json",
  type: "POST",
  async: false,
  cache: false,
  success: function (data) {
    //do something here
  },
  error: function (data, status) {
    alert(status);
  }
});

Das Problem ist, dass AD FS verwendet JavaScript, um post ein verstecktes html-Formular an die relying party.
Bei der Ablaufverfolgung mit Fiddler kann ich sehen, es zu erhalten, um die AD FS-Website und senden Sie diese html-Formular sollte die post und leiten Sie an die controller-action authentifiziert. Das problem ist, diese form kommt zurück als Ergebnis der ajax-Anfrage und offensichtlich zum scheitern verurteilt mit einem parser-Fehler, da der ajax request erwartet json aus der controller-action. Wie es scheint, wäre dies ein häufiges Szenario, also, was ist der richtige Weg, um die Kommunikation mit AD FS von AJAX und Griff diese Umleitung?

  • wenn die HTML zurückgegeben wird von der ajax-Aufruf, klar Sie wollen nicht analysieren, es mit dem json-parser. ändern Sie Datentyp "html", und die post-ein Beispiel für den html zurückgegeben, so kann ich Ihnen zeigen, wie Sie eine Prozedur schreiben, legt zurück.
  • Das Problem ist, ich will zurück zu erhalten, JSON. AD FS leitet mit einer neuen HTML-form posten möchte zum durchführen der handshake, die es braucht. Dies funktioniert sehr gut, innerhalb eines browser-Fensters aber nicht hier. Sobald der handshake passiert, gibt es keinen redirect mit der AJAX-Anfrage und ich wieder JSON. Ich habe einen workaround für jetzt behandeln die html-Seite post in einem IFRAME, aber es ist nicht ideal.
  • Ich verstehe, dass Sie wollen, um wieder JSON, aber du wirst es nicht zurück bekommen, JSON. Jedoch, wenn Sie wollen in der Lage sein zu behandeln, die zurückgegeben Datenstruktur, als ob es waren JSON -, post-ein Beispiel für den HTML zurückgegeben, und ich werde Ihnen zeigen, wie Sie eine Prozedur schreiben, legt zurück ohne mit einem IFRAME.
  • Warum in meinem Fall gab er mir die Fehlermeldung "Kein access-control-Allow-Access-Allow-Origin'? Es ist ein CORS-problem, das heißt, mein browser verhindert das umleiten auf meinem ADFS-server, weshalb Ihre Anfrage umgeleitet werden kann, um die ADFS-server?
Schreibe einen Kommentar