2016-12-05 3 views
1

Я пытаюсь получить AAD OAuth 2.0 маркер, отправив запрос на запись, но всегда получаю следующее сообщение об ошибке. (Пожалуйста, обратите внимание, используя аналогичный код в C# отлично работает, а также с помощью скрипача/Почтальон)Получение Azure Active Directory маркер Javascript

Origin http://localhost:24310 не найден в заголовке Access-Control-Allow-Origin

function CallAAD() 
     {    
      var settings = { 
       "async": true, 
       "crossDomain": true, 
       "url": "https://login.microsoftonline.com/saurabhpersonalad.onmicrosoft.com/oauth2/token", 
       "method": "POST", 
       "headers": { 
        "content-type": "application/x-www-form-urlencoded", 
        "cache-control": "no-cache",     
        "Access-Control-Allow-Origin":"*" 
       }, 
       "data": { 
        "grant_type": "client_credentials", 
        "client_id": "18cff243-e5f1-4e6e-9432-1790724eeb50", 
        "client_secret": "aUoWP9tNSDXblVvn/blmFkJtGyo8HM+YIb4JeIipdL8=", 
        "resource": "https://saurabhpersonalad.onmicrosoft.com/WebApplication6" 
       } 
      } 

      $.support.cors = true; 

      $.ajax(settings).done(function (response) { 
       debugger; 
       alert(response); 
      }); 
+1

Где этот код предназначен для запуска? На стороне клиента (например, в браузере)? –

+0

@PhilippeSignoret Да – Charu

+0

Вы никогда не должны ставить клиента в передний план. Существуют потоки, предназначенные для одностраничных приложений JavaScript. – juunas

ответ

1

client_credentials grant_type как grant_type для конфиденциальных клиентов, которые могут держать клиента секреты в безопасности, тогда как JQuery предназначен для браузера государственных клиентов на основе. Возможно, вы захотите использовать бэкэнд вашего веб-приложения для совершения вызовов в веб-api с учетными данными клиента.

Однако, чтобы получить токен AAD oauth 2.0 на клиентах broswer, мы предлагаем вам использовать azure-activedirectory-library-for-js, который является библиотекой в ​​javascript для интерфейса, чтобы интегрировать AAD с легкостью. Вы можете обратиться к No 'Access-Control-Allow-Origin' header with Microsoft Online Auth.

+0

Итак, вы имеете в виду, что пользователь будет перенаправлен на страницу входа, если я хочу сделать это из jquery? – Charu

+0

Да, вы правы. Как правило, 'client_credentials' grant_type используется в сценарии только для приложений. –

+0

Я пытаюсь получить доступ к ресурсу AAD от JS, который является веб-ресурсом в CRM Dynamics онлайн. ЕСЛИ я зарегистрировал CRM и конечный ресурс в том же AAD, пользователь должен будет войти в систему. Нет ли способа входа в систему без проглатывания пользователя. – Charu