我正在阅读这篇文章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认证用户并用用户的数据做出回应?
在这种情况下,缺点是我必须信任第三方?所以他们不存储我的用户的用户名+密码,这是正确的吗?
答案 0 :(得分:0)
首先,仅仅因为您没有看到重定向,这并不意味着不使用OAuth。我不是说Evernote使用OAuth。我不知道他们的架构,但资源所有者密码凭证授权是OAuth 2.0的一部分,适用于第一方应用程序,它不会重定向。
其次,如果您想确保您的用户不与使用您的网络API的第三方应用共享他们的凭据,OAuth 2.0是一个很好的选择,并且不确定您为什么不想使用OAuth。您也可以在WIF的帮助下尝试WS-Federation,尽管它是SOAP-ish。最后一个选项将提供您自己的基于重定向的机制,通过该机制,您的用户可以确保您的凭据在您的网页中提交,但这样做风险很大,不推荐使用。为什么重新发明轮子?除此之外,您必须只信任第三方。