Аутентификация angular для HTTP-запросов на сайте MVC4 с использованием аутентификации Windows

В настоящее время я разрабатываю веб-сайт с использованием AngularJS, и приложение предназначено для POST и GET данных в уже работающее приложение MVC4 и из него. Это приложение MVC4 использует проверку подлинности Windows.

Я могу получить доступ к приложению MVC4 напрямую через браузер и без проблем перемещаться по URL-адресу, который возвращает JSON. На данный момент я просто скачал этот JSON вручную и создал приложение с его помощью.

Моя проблема возникает, когда я запрашиваю сервер непосредственно из моего приложения AngularJS. Я попытался заставить это работать на другом сервере, используя Basic Authentication, который работал нормально. Но теперь мне нужно, чтобы он работал с проверкой подлинности Windows с использованием проверки подлинности NTLM.

Я попытался создать Сообщение типа 1 и установить его в заголовке авторизации, но быстро переполнился.

Я чувствую, что огромный объем связи, необходимый между сервером и клиентом только для аутентификации, делает использование AngularJS и аутентификации Windows (аутентификация NTLM) непривлекательным? Как мне решить эту проблему?


person Nicklas Kevin Frank    schedule 16.07.2014    source источник
comment
Я собрал простой Gist, который использует аутентификацию Angular и Windows, однако он основан на шаблоне HotTowel AngularJS (от Nuget) и использует веб-API. Тем не менее, если это все равно поможет... gist.github.com/e67e5cbe3e9943ecbb03.git   -  person proggrock    schedule 13.08.2014


Ответы (1)


Эта проблема в итоге решилась сама собой.

Чтобы объяснить, как мне нужно дать немного больше информации о том, как был построен проект и как изначально возникла проблема.

В этом проекте две части:

  1. Приложение, использующее AngularJS для отображения данных на стороне клиента.
  2. API/веб-служба, используемая для получения данных из базы данных.

В самом начале; Я разрабатывал и тестировал это приложение на локальном веб-сервере, все еще используя API, развернутый в домене. Поскольку в API/веб-службе была включена проверка подлинности Windows, моя служба в AngularJS не могла запросить эти данные без проверки подлинности. (Очевидно)

Однако, поскольку оба этих приложения в конечном итоге были развернуты в одном и том же домене под одним и тем же IIS, эта проблема решилась сама собой.

Развертывание приложений AngularJS в том же домене и IIS, что и API, означало, что аутентификация приложения AngularJS автоматически также аутентифицирует API. Это не требует дополнительного кода, поскольку файл cookie для аутентификации автоматически обрабатывается соответствующим образом.

person Nicklas Kevin Frank    schedule 25.08.2014