Я надеюсь использовать службу Active Directory Azure для аутентификации как часть Angular SPA. С этой целью я пытаюсь использовать Active Directory Authentication Library (ADAL) for JavaScript. Но, хотя кажется, что он правильно перенаправляется на службы входа в систему и после ввода учетных данных возвращается к URL-адресу ответа, я не могу получить userInfo.isAuthenticated (userInfo пуст) в моем контроллере.Angular SPA adal login вызывает Azure AD и URL-адрес ответа, но не возвращает userInfo или isAuthenticated
Как я могу отладить, почему аутентификация не кажется завершающей?
Ниже мое приложение код:
'use strict';
var myClientApplication = angular.module('myApplication', [
'ngRoute', 'myControllerModule', 'AdalAngular'
]);
Logging = {
level: 3,
log: function (message) {
console.log(message);
}
};
var appStart = function($routeProvider, $httpProvider, adalProvider) {
$routeProvider.when('/xxx', {
templateUrl: '/app/views/xxx.html',
controller: 'xxxController',
requireADLogin: true
}).when('/home', {
templateUrl: '/app/views/home.html',
controller: 'homeController',
requireADLogin: false
}).otherwise({
redirectTo: '/home'
});
adalProvider.init({
instance: 'https://login.microsoftonline.com/',
tenant: 'mydefaultdomain.onmicrosoft.com',
clientId: '91dc4efa-xxxx-xxxx-xxxx-c579f5f07ceb',
endPoints: {},
//anonymousEndpoints: {},
extraQueryParameter: 'nux=1',
cacheLocation: 'localStorage',
}, $httpProvider);
};
myClientApplication.config(['$routeProvider', '$httpProvider', 'adalAuthenticationServiceProvider', appStart]);
Мой код контроллера:
'use strict'
var myControllerModule = angular.module('myControllerModule', []);
myControllerModule.controller('homeController', ['$scope', 'adalAuthenticationService', function ($scope, adalService) {
$scope.userInfo = adalService.userInfo;
$scope.login = function() {
adalService.login()
}
$scope.logout = function() {
adalService.logOut()
}
}]);
myControllerModule.controller('xxxController', ['$scope', function($scope){}]);
Представление для домашнего контроллера:
<div class="container">
<button class="btn btn-primary" title="Login" ng-click="login()">Login</button>
<button class="btn btn-primary" title="Logout" ng-click="logout()">Logout</button>
<p>status:{{userInfo.isAuthenticated}}</p>
<p>user:{{userInfo.userName}}</p>
<p>aud:{{userInfo.profile.aud}}</p>
<p>iss:{{userInfo.profile.iss}}</p>
Какие результаты в:
status:false
user:
aud:
iss:
В рамках управления Azure, у меня есть Active Directory (Status = Active), с определенным Заявлением со следующей конфигурацией:
- вход по адресу: http://127.0.0.1:8080/app/index.html
- идентификатор клиента: 91dc4efa -xxxx-хххх-хххх-c579f5f07ceb
- ответ ID: http://127.0.0.1:8080/app/index.html
Следующие отображается в журнале сообщений после нажатия кнопки Войти прессы:
// I think this is coming to index
app.js:10 Wed, 15 Feb 2017 22:45:09 GMT:1.0.13-VERBOSE: Location change event from http://127.0.0.1:8080/app/index.html#!#id_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJ…-4325-bcff-5bb5e5a552b9&session_state=709884dd-ad85-4b58-b403-d3155ab441cc to http://127.0.0.1:8080/app/index.html#!#id_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJ…-4325-bcff-5bb5e5a552b9&session_state=709884dd-ad85-4b58-b403-d3155ab441cc
// I think this is the redirect for the home controller
app.js:10 Wed, 15 Feb 2017 22:45:10 GMT:1.0.13-VERBOSE: Location change event from http://127.0.0.1:8080/app/index.html#!#id_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJ…-4325-bcff-5bb5e5a552b9&session_state=709884dd-ad85-4b58-b403-d3155ab441cc to http://127.0.0.1:8080/app/index.html#!/home#id_token=eyJ0eXAiOiJKV1QiLCJhbG…-4325-bcff-5bb5e5a552b9&session_state=709884dd-ad85-4b58-b403-d3155ab441cc
// Don't know what this means?
app.js:10 Wed, 15 Feb 2017 22:45:10 GMT:1.0.13-VERBOSE: Url: /app/views/home.html maps to resource: null
Версии:
- Адал-угловые: 1.0.13
- угловой: 1.6.2
- узел: 6.9.5
- НПМ: 4.1.2 ОС:
- для Windows 10
Запуск с помощью «старта НОГО», где старта = http://127.0.0.1:8080/../app.js
Вы пытались привязываться к 'userInfo', не устанавливая его в своем контроллере? Это объект, открытый из корневой области, поэтому вам не нужно это делать: '$ scope.userInfo = adalService.userInfo;'. – juunas