2016-03-03 2 views
1

Я новичок в AngularJS и WebAPI, и я ищу, чтобы создать шаблон SPA для моей организации, которая становится котла пластиной для принятия быстрого ОРА с участием:AngularJS SPA с приложением WebAPI и MVC. Как настроить авторизации с Owin

  1. WebAPIs 2 - Для целей поиска и ввода данных и
  2. Контроллеры MVC 5 - Для получения изображений. В принципе, все GET запросов и ничего
  3. MVC Просмотры: Просмотры которые будут в конечном итоге загружаются в нг ракурс заполнитель
  4. AngularJS Контроллеры - Все виды MVC будут привязаны к их соответствующим индивидуальным угловым контроллерам.
  5. ASP.NET Идентичность 2: Для пользователей магазина и Роли
  6. Owin безопасность: Для лексем и печенья на основе разрешения моего WebAPIs и MVC контроллеров.

В startup.Auth.cs. Я использую следующие параметры авторизации:

app.UseCookieAuthentication(new CookieAuthenticationOptions()); 
app.UseOAuthBearerTokens(OAuthOptions); 

Я создал небольшую схему для объяснения потока данных

enter image description here

WebAPIs и MVC контроллеры для теперь будут сидеть в 1 ярус, но архитектура должны позволить их разделить.

Теперь мои вопросы

  1. Является ли эта архитектура разумно для строительства SPA
  2. Would [Авторизоваться] Атрибут на моих контроллерах MVC быть в состоянии распознать и расшифровать кук, что WEBAPIs возвращенных после аутентификации, учитывая, что приложение WebAPis и MVC может быть на двух разных уровнях в будущем.

ответ

0

Атрибут [Авторизовать] проверяет, установлено ли свойство IsAuthenticated на объекте Request, используемом как MVC, так и Web API. Это свойство задается промежуточным программным обеспечением Identity, как вы настроили в файле startup.cs.

Каждый запрос проходит через конвейер промежуточного программного обеспечения OWIN перед тем, как прибыть на контроллер MVC или Web API. Затем промежуточное ПО может изменять или даже полностью обрабатывать запрос. По сути, MVC и веб-API также являются посредниками, говоря: «Эй, если этот запрос URL-адресов соответствует этому маршруту, я обработаю его ребятами». Идентификатор ASP.NET - это промежуточное программное обеспечение, которое не выполняет запрос, но изменяет его, прежде чем передавать его по конвейеру. Он проверяет предоставленные учетные данные в запросе (в вашем случае в виде токена-носителя для веб-API или в виде файла cookie для MVC). Если они найдены, то данные аутентификации добавляются в объект запроса, который затем используется веб-API или MVC для проверки [Авторизовать].

Причина, по которой ваше приложение принимает только токены, которые оно выдало, связано с тем, что оно зашифровано ключом, известным только самому приложению. Если вы намерены принять токены, зашифрованные из другого приложения, эти приложения должны использовать один и тот же закрытый ключ для шифрования. Эти ключи можно настроить в файле web.config. Будьте очень осторожны, чтобы не потерять эти ключи (например, не добавляйте свой web.config с этими данными в репозиторий git). Кроме того, вы можете настроить отдельный сервер авторизации, который посредничает между различными приложениями, основанными на нем.

Надеюсь, это поможет!

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