我正在创建一个基于Web的服务,我希望将其作为REST API公开,以便开发人员能够使用它创建应用程序。我希望开发人员能够创建/管理用户帐户并通过API进行身份验证。怎么办呢? OAuth还是其他什么?
我正在使用python,flask,mongodb。
答案 0 :(得分:11)
我们使用OAuth 2(比OAuth 1更受欢迎)解决了以下问题。特别是我们正在使用resource owner password credentials流程。至于如何将它集成到我们的RESTful服务中,这是一个想法:
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
,区分单个用户资源和多个用户集合资源。)