0

我正在阅读这篇文章http://rc3.org/2011/12/02/using-hmac-to-authenticate-web-service-requests/并且我理解 HMAC 是如何工作的。

问题是 HMAC 似乎只对第三方(中继方)进行身份验证。如果第三方想要通过我的系统用户和他/她的密码来提取用户的特定数据怎么办?我不想使用 OAuth 1.0 或 2.0,因为它们存在各种问题。在我看来,我也需要对用户进行身份验证,而不仅仅是授权?

例如,Evernote 移动应用程序要求我输入用户名/密码,我确信它在后台调用某种 Web API。它没有使用 OAuth 2.0 对吗?因为我没有看到自己重定向到提供者站点来“授权”。在这种情况下,我的用户名/密码是如何传递给后端服务的?

[编辑]

经过一番思考,我假设 SSL 是解决方案?拥有 SSL 后,您可以将用户名/密码以纯文本形式传递给我的 Web api,然后我会做任何事情来验证第三方 PLUS 验证用户并使用用户数据进行响应?

在那种情况下,缺点是我必须信任第三方?所以他们不存储我用户的用户名+密码,对吗?

4

1 回答 1

0

首先,仅仅因为您没有看到重定向,并不意味着没有使用 OAuth。我并不是说 Evernote 使用 OAuth。我不知道他们的架构,但作为 OAuth 2.0 一部分的资源所有者密码凭证授予适用于第一方应用程序,并且它不进行重定向。

其次,如果您想确保您的用户不会与使用您的 Web API 的第三方应用程序共享他们的凭据,那么 OAuth 2.0 是一个不错的选择,并且不确定您为什么不想使用 OAuth。您也可以在 WIF 的帮助下尝试 WS-Federation,尽管它是 SOAP-ish。最后一个选项将提出您自己的基于重定向的机制,通过该机制确保您的用户在您的网页中提交他们的凭据,但这是非常危险的,不推荐。为什么要重新发明轮子?除此之外,您必须只信任第三方。

于 2013-06-25T17:00:54.923 回答