2017-07-03 22 views
1

我一直在審查這裏的應用程序授權步驟https://developer.microsoft.com/en-us/graph/docs/authorization/app_authorization,但似乎無法獲得工作請求。我始終得到錯誤說Microsoft身份驗證:如何使用ajax post來刷新訪問令牌?

對預檢請求的響應未通過訪問控制檢查:請求的資源上沒有「Access-Control-Allow-Origin」標頭。因此,原產地「http://localhost:8080」是不允許訪問。」

這似乎不可思議,因爲我包括頭。

$.ajax({ 
      type: "POST", 
      url: url, 
      crossDomain: true, 
      data: { 
       'refreshToken': refreshToken, 
       'client_id': clientId, 
       'client_secret': clientSecret, 
       'redirect_uri': redirect_uri, 
       'resource': resource 
      }, 
      dataType: 'json', 
      beforeSend: function (xhr) { 
       xhr.setRequestHeader('Access-Control-Allow-Origin', "*"); 
       xhr.setRequestHeader('Access-Control-Allow-Methods', "*"); 
       xhr.setRequestHeader('Access-Control-Allow-Headers', "*"); 
      }, 
      success: function (data, status, headers, config) { 
       callback(data); 
      }, 
      error: function (data, status, headers, config) { 
       console.log('Error getting access token from Microsoft Graph: ' + status + " " + JSON.stringify(data)); 
      } 
     }); 

回答

1

您使用的是錯誤的OAuth2流程。你不應該使用的授權盛大碼因爲當瀏覽器請求重定向URL(令牌不在URL的哈希#部分中)時,您無法保持客戶機密安全並且令牌到達服務器。

這就是爲什麼Microsoft API不支持XHR訪問/token端點(通過省略CORS響應標頭)。

您可以考慮使用專爲瀏覽器使用而設計的隱式流程,使標記保持安全並且不需要客戶機密。

+0

當嘗試使用隱式授權工作流端點進行身份驗證時,出現相同的「Access-Control-Allow-Origin」錯誤。 – user3707850

+0

您不能對'/ auth'端點使用XHR請求。這是OAuth2背後的基本理念 - 用戶必須重定向到OAuth2服務器,並通過身份驗證並重新導向回。所以客戶端(您的應用程序)無法看到用戶的密碼。 XHR請求無法做到這一點。 –

相關問題