CAS-Authentifizierung und Weiterleitungen mit jQuery AJAX

8

Ich habe eine HTML-Seite, die Anfragen an ein CAS-geschütztes ( zentraler Authentifizierungsdienst ) Web stellen muss Dienst mit den jQuery AJAX-Funktionen. Ich habe den folgenden Code:

%Vor%

Die request -Variable kann entweder zum CAS-Server ( https://cas.mydomain.com/login?service=myServiceURL ) oder direkt zum Dienst (der dann zum CAS zurückgeleitet werden sollte, um ein Service-Ticket zu erhalten) sein. Firebug zeigt, dass die Anfrage gestellt wird und dass sie als 302 Redirect zurückkommt. Die Funktion $.ajax() verarbeitet die Umleitung jedoch nicht.

Ich habe diese Funktion geschrieben, um das zu umgehen:

%Vor%

Aber selbst dann wird die Funktion handleRedirects niemals aufgerufen, und xmlHttp.status gibt immer 0 zurück. Es sieht auch nicht so aus, als ob die Cookies mit dem Aufruf cas.mydomain.com gesendet werden. (Siehe diese Frage für ein ähnliches Problem.)

Ist das ein Problem mit den AJAX-Anrufen, die keine Weiterleitungen behandeln, oder ist hier mehr los, als man sieht?

    
Steve Nay 02.06.2010, 19:42
quelle

3 Antworten

5

Es ist tatsächlich mehr los als es auf den ersten Blick scheint.

Nach einigen Untersuchungen scheint es, dass jQuery AJAX-Anfragen, die auf diese Weise gemacht wurden, fehlschlagen, wenn sie nicht zur selben Subdomain gemacht werden. In diesem Beispiel werden Anforderungen an cas.mydomain.com von einem anderen Server gesendet. Auch wenn es sich um mydomain.com handelt, schlägt die Anforderung fehl, weil die Subdomäne nicht mit übereinstimmt.

jQuery AJAX behandelt Umleitungen ordnungsgemäß. Ich habe einige Tests mit Skripts in derselben Subdomain durchgeführt, um dies zu überprüfen. Darüber hinaus werden Cookies wie erwartet weitergegeben. Siehe meinen Blogpost für diese Forschung.

>

Denken Sie auch daran, dass die Protokolle identisch sein müssen. Das heißt, da cas.mydomain.com HTTPS verwendet, muss die Seite, von der Sie sie aufrufen, auch auf HTTPS sein oder die Anforderung wird fehlschlagen.

    
Steve Nay 05.06.2010, 20:48
quelle
1

Sie können solche domainübergreifenden AJAX-Aufrufe mit einem PHP-Proxy durchführen. Im folgenden Beispiel kann der Proxy REST-Web-Services aufrufen, die eine JSON-Zeichenfolge zurückgeben.

wsproxy.php

%Vor%

URL-Nutzung

  

Ссылка

jQuery $.ajax oder $.post

Beachten Sie, dass eine GET-Anfrage ausreicht, wenn Sie Benutzername und Passwort nicht weitergeben müssen.

%Vor%     
Daniel Szalay 12.02.2014 09:53
quelle
0

Cross-Domain-Aufrufe sind vom Browser nicht erlaubt. Der einfachste Weg wäre, JSONP auf der Seite der mobilen Anwendung zu verwenden und ein CAS-Gateway zu verwenden, um ein Ticket zurückzugeben.

    
user1727646 01.08.2013 11:06
quelle

Tags und Links