3

У меня есть приложение ASP.NET MVC 5, которое использует Identity 2.0 для аутентификации/авторизации. Теперь я хочу предоставить доступ к данным в своем веб-приложении к своему Android-приложению через Web Api 2.0.MVC 5, Identity 2.0 Android Rest/Json Api

Мой вопрос: Как контролировать авторизацию/аутентификацию доступа к моему андроидному приложению?

На Android стороны я использую «org.springframework.web.client.RestTemplate» и добавить заголовок HTTP на мой запрос:

HttpAuthentication authHeader = new HttpBasicAuthentication("username", "password"); 
    HttpHeaders requestHeaders = new HttpHeaders(); 
    requestHeaders.setAuthorization(authHeader); 
    HttpEntity<?> requestEntity = new HttpEntity<Object>(requestHeaders); 

Должен ли я просто создать фильтр или HttpModule, анализировать HTTP-заголовок там и запросить БД, чтобы проверить, есть ли у этого существующий пользователь?

Для меня ясно, как это работает с интерфейсом HTML/Javascript. Существует куки-файл, используемый после каждого успешного входа в систему, который используется для всех последующих вызовов, но что является лучшей стратегией для моего приложения для Android?

Обновление: Найдено эти две ссылки, но я не уверен, если я должен идти по этому пути: http://springinpractice.com/2012/04/08/sending-cookies-with-resttemplate http://blog.mikepearce.net/2010/08/24/cookies-and-the-restful-api/

ответ

3

Вы можете, как Вы предложили, создать фильтр для вашего WebAPI контроллеры для авторизации и аутентификации доступа из вашего клиентского приложения. Вот blog post, который может помочь вам реализовать такую ​​вещь.

Однако я предлагаю использовать токены доступа, как определено стандартом Oauth. Этот метод аутентификации и авторизации очень хорошо подходит для мобильных приложений. Вы можете создавать токены доступа, которые поддерживают ваше мобильное клиентское приложение , зарегистрированное в аналогично длинным файлам cookie и клиенту браузера. Или вы можете использовать короткие токены доступа и длинные обновления токенов. Также нет ничего, что помешало бы вам использовать Oauth с браузерами, либо предоставив вам единую реализацию. Вот отличный ответ SO на tokens and Oauth.

Посмотрите на IdentityServer следующее рекламное объявление является из их репозитория Github:

IdentityServer является/рамки катана на основе .NET и hostable компонент , что позволяет реализовать единый вход и контроль доступа к современным веб-приложения и API, использующие протоколы, такие как OpenID Connect и OAuth2. Он поддерживает широкий спектр клиентов, таких как мобильные, веб-сайты, SPA и настольные приложения , а также расширяемый, позволяющий интегрировать новые и существующие архитектуры.

+0

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

+0

@stefan не проблема, приятель, рад, что смогу помочь :) –

+0

Можете ли вы посмотреть мой следующий пост? http://stackoverflow.com/questions/31891898/webapi-2-oauth2-android-client – stefan

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