2015-01-19 5 views
2

У меня есть веб-приложение angularjs, использующее Azure Active Directory для аутентификации. Веб-приложение Api, которое приложение использует, аутентифицирует без каких-либо ошибок.Angularjs не аутентифицируется с помощью Azure Active Directory

Для аутентификации на стороне клиента я использую adal.js и adal-angular.js. Когда я пытаюсь посетить любую страницу в моем приложении, аутентификация завершается неудачно и выводит следующие сообщения в консоли

The returned id_token is not parseable. 
Route change event for:/ 
Start login at:https://localhost:44308/# 
Navigate url:https://login.windows.net/myapp.onmicrosoft.com/oauth2/authorize 
Navigate to:https://login.windows.net/myapp.onmicrosoft.com/oauth2/authorize 
TypeError: Cannot read property 'data' of undefined 

Я следовал this учебнику.

Кто-нибудь знает, что происходит или как отлаживать это?

ответ

3

Ошибка была в библиотеке adal.js, когда токен, который не правильно декодировал символы utf-8.

Обновленная версия библиотеки с исправлением ошибки будет доступна в ближайшее время.

+0

Я также сталкиваюсь с той же проблемой. Можете ли вы решить это? –

+0

Да, ошибка в моем случае состояла в том, что библиотека не могла правильно декодировать греческие символы в именах пользователей. Не было проблем с пользователями без греческих символов. Это было исправлено для греческих персонажей. Может быть, пользователь tou пытается войти в систему, имеет специальный символ в любом атрибуте? (например, имя, фамилия ...) –

1

Трудно ответить, не видя пример кода. Если вы используете обещания, вам нужно обработать дело, если обещание отклонено. Вы, наверное, есть что-то вроде этого:

myAuthService.authenticate(...).then(function(data){ 
     //this handles the successful call. 
    }); 

Что вам нужно, чтобы увидеть ошибку, что-то вроде этого:

 myAuthService.authenticate(...).then(function(data){ 
      //this handles the successful call. 
     }, function(e){ 
      //this handles the error case 
      alert('errror. inspect this.arguments'); 
}); 

Вы должны размещать код, который бросает ошибку.

+0

Как вы можете видеть в опубликованной ссылке, единственным кодом является тот, который инициализирует библиотеку. Существует событие, которое срабатывает при ошибке, но, похоже, не помогает ... –

+0

Вы получите более качественные ответы, если вы будете делиться образцами кода, а не обмениваться ссылками с любым учебным пособием, которое вы пытаетесь выполнить. См. Раздел «Помогите другим воспроизвести проблему»: http://stackoverflow.com/help/how-to-ask – Noel

+0

Проблема, кажется, ошибка в библиотеке ... Я исправил это и отлично работает! Спасибо в любом случае –

Смежные вопросы