【发布时间】:2016-09-21 11:05:52
【问题描述】:
我正在尝试制作一个基于 AzureAD 的应用程序。我有一个功能正常的后端,我还有一个功能性的客户端服务,它可以通过在标头中传递访问令牌来连接到应用程序。
但是,当我尝试使用 ADAL.js 通过此代码进行授权时:
$.ajax({
url: '/api/folder',
type: 'POST',
headers: { 'Authorization': 'Bearer ' + getAuthHeaders(), },
xhr: function () {
myXhr = $.ajaxSettings.xhr();
if (myXhr.upload) {
myXhr.upload.addEventListener('progress', progressBar, false);
}
return myXhr;
},
success: completeHandler = function (data) {
alert('Success!');
modal.remove();
updateFileBrowsers(folderName);
},
error: errorHandler = function (jqXHR, textStatus, errorThrown) {
alert('Fail! :(');
},
data: formData,
cache: false,
contentType: false,
processData: false
}, 'json');
我只收到来自服务器的 401 响应。控制器非常简单,它在 API 访问点上有整个控制器的 [Authorize] 符号。
我检查了令牌不为空,但事实并非如此。我已将应用程序添加到 Azure 应用程序。当使用登录并设置标头的客户端后台应用程序使用的控制器时,完全相同的方法会生成成功的连接:
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", result.AccessToken);
我能看到的唯一区别是一个使用 ADAL.js 和一个使用 .NET 本机类来设置请求标头。
澄清:httpClient 就像一个魅力。 SPA 解决方案拒绝工作。
【问题讨论】:
标签: c# jquery asp.net azure-active-directory adal.js