Аутентификация между mvc и webapi (отдельные домены/приложения)

im ищет хорошие идеи/ресурсы/реализации для следующего сценария

Веб-сайт MVC в http://mywebsite.com

Служба веб-сервиса Webapi на http://myapi.com

ВАЖНО - Обратите внимание на отдельные домены/Приложения.

Пользователь регистрируется на веб-сайте, и данные извлекаются из API через JSONP/CORS

Очевидно, я не хочу, чтобы пользователь аутентифицировался на webapi, используя базовую аутентификацию. Но API также доступен для приложений Android/IOS, поэтому мне нужен базовый auth

Я подумал о возврате токена с сайта MVC, а затем написал делегацию на веб-сайте webapi для аутентификации с использованием этого токена, но мне бы хотелось, чтобы некоторые входы или даже лучшие решения

Я сделал довольно диаграмму только для случая:

Diagram

Ответы

Ответ 1

Хотя JSONP также рассматривает возможность использования CORS некоторых примеров реализации WebApi здесь.

Рассмотрите следующий стандарт (по крайней мере, черновик) для вашего токена, а не создайте свой собственный. Json Web Token (JWT), по-видимому, является хорошим подходом к спецификации здесь включает в себя формат и определяет подход шифрования или подписи. Существуют библиотеки, поддерживающие такой токен, например Модель идентификации Thinkteckture в этой статье описывается использование этой библиотеки и JWT. У Google есть хороший путеводитель для разработчиков здесь.

Отказ от ответственности, рассмотрите выше, прочитав о некоторых стандартах OAuth и JWT .

Если вы использовали HTTP-заголовок, я не уверен, что вам нужен настраиваемый заголовок (@Vipul) заголовок "Авторизация:" есть для такого типа информация.

Если вы используете пользовательский токен, убедитесь, что у него есть срок годности, подумайте об использовании nonce, если вы хотите защитить повторять атаки и подписывать или шифровать с использованием известного алгоритма.

Согласитесь с тем, что делегирующий обработчик является хорошим местом для проверки маркера. ActionFilter называется намного позже, чем необходимо в стеке, а срединным местом было бы реализовать System.Web.Http.AuthorizeAttribute.

Ответ 2

Реле токена

звучит неплохо.

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