2015-07-31 2 views
0

Я использую ADAL в своем приложении UWP для Win10. Вот фрагмент кода:Ошибка AcquireTokenAsync в приложении UWP

// WinRT, UWP app. Doesn't work 
TokenCache TC = new TokenCache(); 
authContext = new AuthenticationContext(authority, true, TC); 
var authresult = await authContext.AcquireTokenAsync(resourceUri, clientID, new Uri(redirectUri)); 
token = authresult.AccessToken; 

Иногда это не удается из-за ошибки, никогда не воспитывая окно аутентификации:

authentication_ui_failed: The browser based authentication dialog failed to complete. Value does not fall within the expected range.

Иногда это вызвать окно аутентификации, но не перенаправлять, производство:

"authentication_ui_failed: The browser based authentication dialog failed to complete. The system cannot locate the resource specified. (Exception from HRESULT: 0x800C0005)"

Это использует версию WinRT библиотеки. Аналогичный код, используя версию .NET отлично работает с консольным приложения:

// .NET, console app. Works great 
TokenCache TC = new TokenCache(); 
authContext = new AuthenticationContext(authority, TC); 
var authresult = authContext.AcquireToken(resourceUri, clientID, new Uri(redirectUri)); 
token = authresult.AccessToken; 

ответ

2

Это, как правило, вызван песочницей магазина и UWP приложений. Как минимум, перенаправление uri приложения должно совпадать с назначенным средой выполнения - см. Образец магазина Windows на github.com/azuread. Другие вещи, которые могут повлиять на поведение, - это настройки конфиденциальности на ящике, использование локальной сети, не запрашивая правильных возможностей ..: все ограничения, которые применяются к приложениям магазина Windows, будут применяться и к использованию ADAL. Также: могу ли я спросить вас, почему вы передаете пользовательский кеш в приложение? Это обычное явление для приложений, работающих в средах с песочницами, таких как приложения для хранения в Windows.

+0

Спасибо, что мне не хватало «Private Networks (Client & Server)». После включения второй ошибки (0x800C0005) исчезает. Первая ошибка («Значение не входит в ожидаемый диапазон») все еще случается. Кроме того, несмотря на то, что мои учетные данные не являются критичными, мои учетные данные не сохраняются, в отличие от консольного приложения, поэтому я должен каждый раз вводить имя пользователя и пароль. Использование пользовательского кеша не является существенным для моего приложения, я проверил, что это не влияет на проблему. – arturl

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