我应该如何在REST API中处理身份验证?

时间:2010-07-29 00:00:25

标签: web-services api authentication rest

我是新手,但我会尽力解释我想做什么。

我有一个产品目录和各种私人信息,我的用户希望能够通过他们的网站访问这些信息。

例如:

User-a有一个电子商务网站,他们想卖掉我的商品。他们将能够通过Web服务访问某些产品详细信息。他们还可以查看我给出的协商费率以及其他一些私人信息。

API如何处理来自User-a网站的请求?

我一整天都在阅读不同的身份验证方法,但它们似乎都围绕着第三方访问特定用户信息的想法。例如,如果您让http://randomtwitterapp.com访问您的Twitter个人资料。在这种情况下,第三方站点必须管理多个不同的用户和身份验证令牌。在我们的例子中,我的用户网站代表用户进行交互。我希望这是有道理的。

1 个答案:

答案 0 :(得分:0)

让我们称呼用户A“Alice”,因为调用她的User-A很麻烦。

将Alice的网站视为Alice自己。特殊定价和此类特定于相关网站的IS,因此 it 登录到您的网站。颁发开发该站点的人员用于进行身份验证的凭据,然后使用这些凭据来确定您显示的定价和产品。

至于实际的身份验证机制,它实际上取决于您的需求。如果你需要做的只是向不同的人提供不同的数据,你可以做一些简单的事情,就像查询字符串中传递的API令牌一样简单:http://api.example.com/products?key=9af4d8381781baccb0f915e554f8798d

如果Alice已经拥有您网站的用户名和密码,您可以让她使用Basic Auth的API请求中使用这些用户名和密码。

如果Alice需要在她无法控制的各个网站上输入她的帐户信息,那么oAuth非常方便。有了它,您基本上可以为她访问API所需的每个站点提供API密钥。并且您允许她删除这些API密钥并拒绝这些网站访问。