No 'Access-Control-Allow-Origin' header with Microsoft Online Auth

后端 未结 2 650
梦如初夏
梦如初夏 2020-11-27 08:07

I am trying to make a simple request to get an access token using the Microsoft graph OAuth endpoint. When I send the simple request below I get

No \

相关标签:
2条回答
  • 2020-11-27 08:37

    To integrate AAD in javascript, we suggest you to use azure-activedirectory-library-for-js which is a library in javascript for frontend to integrate AAD with a ease.

    There are 2 options we need to pay attention on before we use ADAL for JS:

    • According the node at https://github.com/OfficeDev/O365-jQuery-CORS#step-6--run-the-sample:

      Note This sample will not work in Internet Explorer. Please use a different browser, such as Google Chrome. ADAL.js uses an iframe to get CORS API tokens for resources other than the SPA's own backend. These iframe requests require access to the browser's cookies to authenticate with Azure Active Directory. Unfortunately, cookies are not accessible to Internet Explorer when the app is running in localhost.

    • Enable the oauth2AllowImplicitFlow of your Azure AD application. Refer to https://crmdynamicsblog.wordpress.com/2016/03/17/response-type-token-is-not-enabled-for-the-application-2/ for the detailed steps.

    Here is the code sample to acquire access token from 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>
    
    0 讨论(0)
  • 2020-11-27 08:50

    Your not going to be able to run that from the client. Part of the CORS setup requires that microsoftonline.com adds your domain to their CORS supported whitelist.

    I would suggest that you make a call a service on your server, which then makes the request server to server.

    0 讨论(0)
提交回复
热议问题