Ich erhalte einen CORS-Fehler beim Versuch, einen Zugriff mit SAML 2.0 zu authentifizieren, und ich bin bei einem vollständigen Verlust.bekomme CORS-Fehler mit SAML 2.0
Wir haben einen Backend-Webserver, der 3 verschiedene Pfade /html
/js
und /services
bedient. Wir haben einen SAML ID-Provider definiert, die IDP-Metadaten importiert und auf der Serverseite einen Service konfiguriert, auf dem die Service-URL auf /html
festgelegt wurde. Dies erzeugte einige XML-Metadaten, die im IDP-Ende der Welt registriert wurden.
Beginnend mit einem neuen Browser, gibt der Benutzer https://host:port/html
ein und eine eingebundene Anmeldeseite erscheint. Der Benutzer meldet sich an, der Backend-Server gibt Sitzungscookies zurück, und die verbleibenden Anfragen werden problemlos an /js
und /services
weitergeleitet.
Jetzt, wenn der Benutzer den Browser schließt und wieder öffnet, werden HTML, JS/CSS aus dem Browser-Cache bedient. Die erste abgehende Anforderung von der App auf den Back-End-Server ist zu /services/a-service-name
und es schlägt mit dem folgenden:
XMLHttpRequest cannot load https://fed.xxx.com/fed/idp/samlv20?SAMLRequest=some-charater-string.
No 'Access-Control-Allow-Origin' header is present on the requested
resource. Origin 'https://my-host:port' is therefore not allowed access.
NETWORK ERROR; xhr= 0 error ; settings= GET /services/a-service-name <<<<<<<<<< this print is from my app
Was soll das? Muss ich 3 Service-Provider (d. H. /html
, /js
, /services
) auf meiner Backend-Server-Seite erstellen? Oder muss meine Anwendung SAML-Anfragen abfangen und interpretieren?
Ich werde einige Hilfe zu schätzen wissen, da ich SAML sehr neu bin.
---- EDIT 1
Basierend auf Anders Abel Antwort, wir folgenden index.html
<script>
if(window.location.search.length == 0){
window.location = "index.html?"+Math.random();
}
</script>
Dies zwingt einen Treffer zu dem bezeichneten SP hinzugefügt, löst SAML Dialog mit dem Bund und Kräften eine Anmeldung, es sei denn, der Benutzer ist bereits angemeldet. Danke!