2013-06-25 2 views
0

Я читаю эту статью http://rc3.org/2011/12/02/using-hmac-to-authenticate-web-service-requests/, и я понимаю, как работает HMAC, я думаю.ASP.NET Web API/HMAC Аутентификация, как авторизовать от имени пользователя?

Проблема в том, что HMAC, похоже, аутентифицирует стороннюю сторону (ретрансляционную сторону). Что, если третья сторона хочет передать пользователю мою систему и свой пароль для извлечения конкретных данных пользователя? Я не хочу использовать OAuth 1.0 или 2.0, потому что с ними связаны разные проблемы. Мне кажется, мне нужно также аутентифицировать пользователя, а не просто разрешать?

Например, мобильное приложение Evernote, оно запрашивает у меня имя пользователя/пароль, и я уверен, что он вызывает какой-то веб-API в фоновом режиме. Он не использует OAuth 2.0 правильно? Потому что я не вижу, чтобы я перенаправлялся на сайт провайдера, чтобы «разрешить». В этом случае, как мое имя пользователя/пароль было передано в сервисную службу?

[Редактировать]

Подумав немного, я предполагаю, что SSL является решением? После того, как у вас есть SSL, вы можете передать имя пользователя/пароль на мой веб-api в текстовом формате, а затем я делаю все, чтобы аутентифицировать стороннюю версию PLUS, аутентифицировать пользователя и отвечать данными пользователя?

В этом случае недостатком является то, что я должен доверять третьей стороне? Таким образом, они не сохраняют имя пользователя пользователя + пароль, это правильно?

ответ

0

Во-первых, только потому, что вы не видите перенаправления, это не значит, что OAuth не используется. Я не говорю, что Evernote использует OAuth. Я не знаю их архитектуры, но ресурс Credentials Credentials владельца ресурса, который является частью OAuth 2.0, подходит для сторонних приложений и не перенаправляет.

Во-вторых, если вы хотите, чтобы ваши пользователи не делились своими учетными данными с сторонним приложением, которое использует ваш веб-API, OAuth 2.0 - отличный вариант и не уверен, почему вы не хотите использовать OAuth. Вы также можете попробовать WS-Federation с помощью WIF, хотя это SOAP-ish. Последним вариантом будет ваш собственный механизм переадресации, с помощью которого ваши пользователи, отправляющие свои учетные данные на вашей веб-странице, будут обеспечены, но это очень рискованно и не рекомендуется. Зачем изобретать велосипед? Помимо этого, вы должны доверять только третьей стороне.

+0

@Bardri. Благодарю. Я просто попытался снова прочитать OAuth2.0, не могли бы вы объяснить, как OAuth2.0 может получить учетные данные владельца ресурса, не заходя на сайт провайдера? Немного смущен. Кроме того, я занимаюсь OAuth, потому что я читаю эти две статьи http://homakov.blogspot.com/2013/03/oauth1-oauth2-oauth.html (кто случайно взломал facebook oAuth2.0 еще некоторое время назад) и http://hueniverse.com/2012/07/oauth-2-0-and-the-road-to-hell/ (кто, оказывается, является создателем OAuth) – Liming

+0

Просто увидел реализацию XAuth Twitter, которая пропускает токен запроса и авторизации. https://dev.twitter.com/docs/oauth/xauth и напрямую получить доступ к AccessToken. Хотя, я должен очень доверять стороннему приложению ... Как и Twitter, третья сторона должна конкретно запросить такое разрешение, так что это не так, как OAuth решила проблему за отзыв ... плюс все другие факторы, упомянутые выше две ссылки – Liming

+0

и только FYI. Я не говорю, что OAuth2.0 плохой, но я не доверяю реализациям там. Я имею в виду, что реализация facebook (подкрепленная их экспертами-инженерами, все еще постоянно сталкивается с проблемами, я не уверен, что есть реализация, которую я могу использовать) – Liming