如何实现REST API的身份验证?

anu*_*jkk 10 python authentication api rest oauth

我正在创建一个基于Web的服务,我希望将其作为REST API公开,以便开发人员能够使用它创建应用程序.我希望开发人员能够创建/管理用户帐户并通过API进行身份验证.怎么办呢?OAuth还是其他什么?

我正在使用python,flask,mongodb.

Dom*_*nic 11

我们使用OAuth 2(比OAuth 1更优选)解决了以下问题.特别是我们使用资源所有者密码凭证流.至于如何将它集成到我们的RESTful服务中,这是一个想法:

  • 初始资源在被未经授权的用户命中时返回401.401的主体包含单个链接rel=oauth2-token.(如何通过链接发送信号取决于您的媒体类型;我们使用的是HAL,但您甚至可以使用Link标题.)
  • 在用户进行身份验证后,他返回到初始资源,在其Authorization标头中发送从OAuth 2进程返回的承载令牌.此时,我们返回200,所有正常链接都可用.

我们不公开帐户创建,但如果您想这样做,我会使用初始资源中未授权用户可用的其他链接.该链接将具有自定义,rel因为它特定于您的应用程序,例如rel=http://rels.myapi.com/users

良好的RESTful设计将指示与此的链接rel指向例如http://myapi.com/users,并且API的消费者POST对该端点执行操作,该端点向他们返回具有Location指向例如新创建的用户资源的标头的新用户资源http://myapi.com/users/username.(用户资源本身当然是另一种rel,区分单个用户资源和多个用户集合资源.)