javascript - resource - Sin encabezado ''Access-Control-Allow-Origin'' con Microsoft Online Auth
razón encabezado cors access control allow origin faltante (2)
Estoy tratando de hacer una solicitud simple para obtener un token de acceso utilizando el punto final de Microsoft Graph OAuth. Cuando envío la solicitud simple a continuación recibo
No hay encabezado ''Access-Control-Allow-Origin'' presente en el recurso solicitado. El origen ''localhost: 8080 / myapprunninglocally'', por lo tanto, no tiene acceso permitido. ** "
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();
También he registrado esta aplicación usando Microsoft Azure Directory, solicité TODOS los permisos y usé el delegado
client_id
.
He leído sobre CORS y estoy al tanto de las Políticas de Origen Cruzado, sin embargo, estoy al tanto de que hay API que exponen puntos finales que incluyen el
''Access-Control-Allow-Origin''
en sus encabezados de respuesta.
¿Hay alguno capaz de ayudar?
No podrás ejecutar eso desde el cliente. Parte de la configuración de CORS requiere que microsoftonline.com agregue su dominio a su lista blanca admitida por CORS.
Te sugiero que llames a un servicio en tu servidor, que luego hace que la solicitud sea de servidor a servidor.
Para integrar AAD en JavaScript, le sugerimos que use azure-activedirectory-library-for-js que es una biblioteca en JavaScript para frontend para integrar AAD con facilidad.
Hay 2 opciones a las que debemos prestar atención antes de usar ADAL para JS:
-
Según el nodo en
https://github.com/OfficeDev/O365-jQuery-CORS#step-6--run-the-sample
:
Nota: esta muestra no funcionará en Internet Explorer. Utilice un navegador diferente, como Google Chrome. ADAL.js usa un iframe para obtener tokens CORS API para recursos que no sean el propio backend del SPA. Estas solicitudes de iframe requieren acceso a las cookies del navegador para autenticarse con Azure Active Directory. Lamentablemente, Internet Explorer no puede acceder a las cookies cuando la aplicación se ejecuta en localhost.
-
Habilite
oauth2AllowImplicitFlow
de su aplicación Azure AD. Consulte https://crmdynamicsblog.wordpress.com/2016/03/17/response-type-token-is-not-enabled-for-the-application-2/ para ver los pasos detallados.
Aquí está el ejemplo de código para adquirir el token de acceso de Microsoft Graph:
<script src="https://secure.aadcdn.microsoftonline-p.com/lib/1.0.14/js/adal.min.js"></script>
<body>
<a href="#" onclick="login();">login</a>
<a href="#" onclick="getToken()">access token</a>
</body>
<script type="text/javascript">
var configOptions = {
tenant: "<tenant_id>", // Optional by default, it sends common
clientId: "<client_id>",
postLogoutRedirectUri: window.location.origin,
}
window.authContext = new AuthenticationContext(configOptions);
var isCallback = authContext.isCallback(window.location.hash);
authContext.handleWindowCallback();
function getToken(){
authContext.acquireToken("https://graph.microsoft.com",function(error, token){
console.log(error);
console.log(token);
})
}
function login(){
authContext.login();
}
</script>