Аутентификация Ionic/Cordova с помощью ACS

История. У нас есть WebAPI, настроенный с помощью Azure ACS и ADFS для аутентификации.

Доступ к любому ресурсу WebAPI через браузер приведет к перенаправлению пользователей, не прошедших проверку подлинности, на страницу входа в ADFS через ACS. После успешного входа в систему пользователь будет перенаправлен для возврата URL-адреса в качестве настройки в ACS вместе с токеном безопасности. Это прекрасно работает.

Проблема. Мы разрабатываем мобильное приложение с использованием платформы Ionic (http://ionicframework.com/< /а>). Мы хотим использовать те же ACS и ADFS для аутентификации, которые мы используем для WebAPI. В этом процессе мы сталкиваемся со следующими проблемами:

Проблема 1. При доступе к любому ресурсу WebAPI через мобильное приложение (Ionic, Cordova, AngularJS) пользователь перенаправляется в ACS, и мы получаем следующую ошибку.

XMLHttpRequest cannot load https://{domainname}.accesscontrol.windows.net/v2/wsfederation?wa=ws…52fitem&wct=2014-10-10T14%3a24%3a34Z&whr=https%3a%2f%2f{domainname}.com. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access. 

Следовательно, мы не можем аутентифицировать любого пользователя через ACS с мобильным приложением.

Проблема 2. Установка URL возврата в качестве пустого в ACS приводит к следующей ошибке.

ACS90050: No reply address is configured with the relying party principal. 

Предпринятые шаги: -> Мы включили CORS в WebAPI.


person user2994197    schedule 10.10.2014    source источник


Ответы (1)


Мы подали заявку в Microsoft, чтобы узнать, можно ли включить CORS в ACS. Мы получили ниже ответ.

ACS не предоставляет решения CORS, мы исследовали возможности. К сожалению, ответ по-прежнему: «Ни один ACS не предоставляет решения CORS». То есть ACS не дает нам доступа к руту для стандартного междоменного решения. Кроме того, предоставление токена считается HTTPOnly, поскольку манипулирование токеном с помощью Javascript по своей сути опасно.

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

Примеры кода управления доступом (ACS) Windows Azure AD: https://code.msdn.microsoft.com/Windows-Azure-AD-Access-0dcde385

Образец в разделе: C#\Webservice\ACS2WindowsPhoneSample может предоставить некоторые рекомендации, но мы не сможем помочь с изменением образца.

person user2994197    schedule 22.10.2014