Kein ‘Access-Control-Allow-Origin’-Header mit Microsoft Online Auth
Lesezeit: 2 Minuten
Rijanat
Ich versuche, eine einfache Anforderung zum Abrufen eines Zugriffstokens mithilfe des OAuth-Endpunkts von Microsoft Graph zu stellen. Wenn ich die einfache Anfrage unten sende, bekomme ich
Auf der angeforderten Ressource ist kein Header „Access-Control-Allow-Origin“ vorhanden. Origin ‘localhost:8080/myapprunninglocally’ wird daher kein Zugriff gewährt.**”
var xhttp = new XMLHttpRequest();
xhttp.open("GET", "https://login.microsoftonline.com/common/oauth2/authorize?client_id=<client_id>&scope=wl.signin%20wl.calendars_update&response_type=token&redirect_uri=localhost:8080/myapprunninglocally", true);
xhttp.send();
Ich habe diese App auch mit Microsoft Azure Directory registriert, ALLE Berechtigungen angefordert und die delegierte client_id.
Ich habe mich über CORS informiert und bin mir der Cross-Origin-Richtlinien bewusst. Mir ist jedoch bewusst, dass es APIs gibt, die Endpunkte verfügbar machen, die die enthalten 'Access-Control-Allow-Origin' in ihren Antwortheadern. Kann jemand helfen?
Sie werden das nicht vom Client aus ausführen können. Ein Teil der CORS-Einrichtung erfordert, dass microsoftonline.com Ihre Domäne zu ihrer CORS-unterstützten Positivliste hinzufügt.
Ich würde vorschlagen, dass Sie einen Dienst auf Ihrem Server aufrufen, der dann die Anfrage von Server zu Server stellt.
Gary Liu
Um AAD in Javascript zu integrieren, empfehlen wir Ihnen die Verwendung von azure-activedirectory-library-for-js Dies ist eine Bibliothek in Javascript für das Frontend, um AAD problemlos zu integrieren.
Es gibt zwei Optionen, auf die wir achten müssen, bevor wir ADAL für JS verwenden:
Hinweis Dieses Beispiel funktioniert nicht in Internet Explorer. Bitte verwenden Sie einen anderen Browser, z. B. Google Chrome. ADAL.js verwendet einen Iframe, um CORS-API-Token für andere Ressourcen als das eigene Back-End der SPA abzurufen. Diese Iframe-Anforderungen erfordern Zugriff auf die Cookies des Browsers, um sich bei Azure Active Directory zu authentifizieren. Leider sind Cookies für Internet Explorer nicht zugänglich, wenn die App in localhost ausgeführt wird.