2013-11-20 3 views
1

У меня возникли проблемы с настройкой проекта с помощью OAuth2, WebAPI2 и интерфейса.Как передать токен аутентификации OAuth2 из приложения MVC5 wepapplication в приложение WebAPI2

Сценарий:

Я настраиваю проект, который является в основном WebApi2. Этот WebApi предоставляет бизнес-логику и данные для моих интерфейсов.

Теперь интерфейс является веб-приложением MVC5, но в будущем я хочу подключить к нему другие «Приложения». Именно здесь появляется CORS: интерфейс и WebAPI могут находиться на разных серверах.

Я бы хотел использовать OAuth2, чтобы пользователи могли регистрироваться через Google и других поставщиков.

Вопрос:

Это касается SIGNUP части:

Сначала я пытался подписаться на интерфейс MVC приложения и попытаться передать маркер аутентификации в WebAPI. По-видимому, это не правильный способ реализовать это.

Теперь я собираюсь открыть интерфейс регистрации в проекте WebApi, чтобы пользователи были перенаправлены на Api, если они регистрируются в веб-приложении MVC. Но это вызовет беспокойство, потому что для каждого действия в веб-приложении MVC требуется вызов «этот пользователь аутентифицирован».

Кто-нибудь знает, какой из двух вариантов (или, может быть, третий) предпочтительнее?

Я знаю, что это довольно широк, но, пожалуйста, быть нежным ;-)

+0

http://www.asp.net/web-api/overview/security/external-authentication-services о том, как реализовать внешнюю аутентификацию. – flup

ответ

2

Это совсем немного вопрос о архитектурной части.

Чтобы быть gentle.Second подход кажется сложным в том, что у вас есть два интерфейса UI, учитывая все более приложения для (MVC5 приложений и теперь WebAPI для Signup)

, таким образом, делая вы будете делать ваш интерфейс в большей степени зависит от API-проекта делая его плотно связанным.

В первом подходе, если только защита является препятствием для вас, вы можете зашифровать/дешифровать токен до и после вызова службы в проект веб-API.

и с первым подходом, можно упорствует Проверку подлинность пользователя на Уру Interface/Presentation Layer в локальном хранилище или сеансе

сама WebAPI предназначен для распределенной связи между приложениями и другими компонентами системы, такими как бизнес-слой ,

, но у вас уже есть интерфейсный слой, поэтому я думаю, что нет необходимости делать WebApi тяжелым с Пользовательским интерфейсом.

Первый подход будет хорошим.

1

Наш проект имеет ту же архитектуру.

MVC сайта -> Web API (бизнес) -> Web API (данные)

Business API будет открыт для сторонних разработчиков, поэтому нам необходима аутентификация OAuth2.

Web API может открывать только некоторые функции, не все, возможно, вы использовали бы «Scope», но для нас есть только два вида API, API для сторонних разработчиков и API для нашего сайта.

Итак, мы сделали что-то в обработчике подлинности, существует схема «Bearer» для заголовка авторизации, почему бы и нет нового для нашего сайта?

Тогда это работает. Просто определите новую схему для сайта MVC, например. «ASPX» и сохраните файлы cookie с сайта, разрешите их.

Мы также можем знать, где запрос с тех пор, как схема заголовка отличается.

Кстати, вы должны позаботиться о названии схемы.

+0

Убедитесь, что сервер API и сервер сайта MVC имеют одинаковые параметры машинного ключа перед расшифровкой файлов cookie – Teddy