2014-09-12 3 views
2

Я создаю мобильное приложение (которое позже также может стать веб-приложением). Серверная сторона - это приложение ASP.NET MVC + Web API, и я думаю о том, как я могу реализовать управление пользователями и их аутентификацию.Проверка подлинности веб-API для мобильного приложения

Как я могу реализовать экран регистрации/входа в приложение? Предложить родные формы приложений, которые будут отправлять только запросы API в службу или желательно, чтобы отображал компонент веб-браузера и отображал страницу входа в веб-сайт, а затем извлекал токен после входа пользователя в систему? Я вижу, что первый вариант более удобен для пользователя, но второй позволит мне изменить страницу входа/регистрации (например, добавить внешних поставщиков аутентификации), не нарушая устаревшие версии приложения.

Мой второй вопрос касается внешних поставщиков аутентификации. ASP.NET Identity имеет хорошую поддержку для них, и вполне возможно, чтобы пользователи регистрировались с помощью Facebook или другого поставщика OAuth2. Имеет ли смысл добавить поддержку для внешних поставщиков аутентификации, когда я планирую открыто публиковать API приложения? Есть ли причины, почему это не очень хорошая идея?

ответ

2

Ваш первый вариант лучше всего, если вы считаете, что ваши пользователи доверяют вам управлять своими паролями. Вы делаете безопасный звонок для своей службы, если в результате результат службы выдает токен-носитель. Это будет анонимный звонок. Я использовал ответ от этого вопроса, чтобы заставить меня идти по этому пути:

Get IPrincipal from OAuth Bearer Token in OWIN

Если пользователи менее склонны доверять вам свои полномочия, то веб-вид и внешний поставщик является хорошей альтернативой. Вам нужно будет работать с поставщиками, которые поддерживают «Неявный поток грантов», поскольку не хотят делиться приложениями clientid и клиентским секретом на мобильном устройстве. Этот подход включает использование веб-представления для входа в систему, а затем захват маркера на фрагменте uri клиента для ответа. Я думаю, что он находится в заголовке местоположения, но у меня нет рабочего примера передо мной. Что-то вроде: https://your.domain.com/#access_token = 8473987927394723943294

Вы должны передать этот токен с каждым вызовом api.

Удачи вам!

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