我們正在爲我們的應用程序使用azure Active Directory身份驗證。我已經將它包含在SPA中,並且能夠讓它登錄。我得到了一個oauth標記,並且能夠存儲它並查看它。無法讓ADAL攔截器在Angular中工作
微軟的ADAL-Angular.js提供了一個攔截器,以便可以將該令牌添加到所有$ http調用中。它應該不需要修改SPA來使用它。我似乎無法讓它工作。
我在app.js中註冊提供者並將其推送到$ httpprovider(即使ADAL-Angular)。這是代碼。
var connectionsApp = angular.module('app',
['ngRoute', 'ngResource', 'ngCookies',
'tc.views', 'tc-flightProcessing', 'tc-agent', 'ui.bootstrap', 'ui.tab.scroll', 'AdalAngular'])
.run(run);
connectionsApp.config(['scrollableTabsetConfigProvider', '$httpProvider', 'adalAuthenticationServiceProvider', function(scrollableTabsetConfigProvider,$httpProvider, adalAuthenticationServiceProvider){
scrollableTabsetConfigProvider.setShowTooltips (true);
scrollableTabsetConfigProvider.setTooltipLeftPlacement('bottom');
scrollableTabsetConfigProvider.setTooltipRightPlacement('left');
adalAuthenticationServiceProvider.init(
{
tenant: 'xxxxxxxxx-9fafd38f483f',
clientId: 'xxx'
}, $httpProvider);
$httpProvider.interceptors.push('ProtectedResourceInterceptor');
}]);
這是服務電話。
var getDelayCodes = function() {
if (isPromisePending) {
return deferred.promise;
}
deferred = $q.defer();
isPromisePending = true;
debugger;
$http({
method: 'GET',
url: envService.endPoint + 'delaycode'
headers: {'Content-Type': 'application/json'}
})
.then(function successCallback(response){
result = response.data;
isPromisePending = false;
deferred.resolve(result);
},
function errorCallback(response) {
isPromisePending = false;
deferred.reject(response.data);
});
return deferred.promise;
如果我手動設置頁眉它的工作原理,但我不希望有這樣做的每一項服務。這工作:
$http.defaults.headers.post.Authorization = "Bearer " + sessionStorage.getItem("adal.idtoken");
$http.defaults.headers.common.Authorization = "Bearer " + sessionStorage.getItem("adal.idtoken");
在此先感謝您的幫助。
我沒有設置$ httpProvider.interceptors.push('ProtectedResourceInterceptor');'語句,所有的代碼就像https://github.com/AzureAD/azure-activedirectory-library-for- js,我配置了cors調用的端點,Adal的攔截器在我身邊工作得很好。你能再試一次嗎? –