2016-11-11 6 views
1

I Запросить authorization code от OAuth2 Сервер. Моя цель - авторизовать пользователя с моим приложением microsoft. Refered DocumentOAuth2 Ошибка источника происхождения

Моя попытка для ПОЛУЧИТЬ вызова:

function httpGet(){ 
     var theUrl = "https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id="client_id"&response_type=code&redirect_uri="redirect_uri"&response_mode=query&resource=https%3A%2F%2Fservice.contoso.com%2F&state=12345"; 

     var req = new XMLHttpRequest(); 
     req.open('GET', theUrl, true); 
     req.onreadystatechange = function() { 
      if (req.readyState === 4) { 
       if (req.status >= 200 && req.status < 400) { 
        console.log(req.responseText) 
       } else { 
        console.log("error") 
       } 
      } 
     }; 
     req.send(); 
    } 

, но это дает под ошибкой:

No 'Access-Control-Allow-Origin' header is present on the requested resource.

я добавить req.setRequestHeader("Access-Control-Allow-Origin", "*");

, но он дает ошибку ниже:

Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

+0

Вам нужно настроить это на сервере, а не Угловая приложение – jonrsharpe

+0

@jonrsharpe Что вы имеете в виду под " Вам нужно настроить это на сервере »? –

+0

Я имею в виду сервер, на который вы делаете запрос. Хотя это, похоже, не под вашим контролем. – jonrsharpe

ответ

0

без использования каких-либо frontend Google библиотеки я придумал решение.

window.open("url") 

После завершения аутентификации я получаю code от url params и отправить его backend и достичь access token, refersh token.......etc,

1

Чтобы интегрировать AAD в javascript, мы предлагаем вам использовать azure-activedirectory-library-for-js, который является библиотекой в ​​javascript для интерфейса, чтобы интегрировать AAD с легкостью.

Есть 2 варианта, мы должны обратить внимание на, прежде чем использовать Адал для JS:

Вот пример кода для получения маркера доступа от Microsoft Graph:

<script src="https://secure.aadcdn.microsoftonline-p.com/lib/1.0.10/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>