web-services – 如何在RESTful Web服务中实现登录?

我正在构建一个带有服务层的Web应用程序。服务层将使用RESTful设计构建。思维是,在将来的某个时候,我们可能会构建使用与Web应用程序相同的服务层的其他应用程序(iPhone,Android等)。我的问题是这 – 我如何实施登录?我想我从一个更传统的基于动词的设计转移到基于资源的设计。如果我是用SOAP构建这个,我可能会有一个方法叫Login。在REST中我应该有一个资源。我很难理解我应该如何构建我的URI的登录。应该是这样的:

http://myservice/ {username}?p = {password}

编辑:前端Web应用程序使用传统的ASP.NET框架进行身份验证。然而在验证过程中的某个时候,我需要验证提供的凭据。在传统的Web应用程序中,我将进行数据库查找。但在这种情况下,我调用服务,而不是进行数据库查找。所以我需要在服务中的东西,将验证提供的凭据。除了验证提供的凭据,我可能还需要一些关于用户成功验证后的信息 – 像他们的全名,他们的ID等。我希望这使问题更清楚。

还是我不想这个正确的方法?我觉得我很难正确描述我的问题。

Corey

正如S.洛特已经指出的,我们在这里有两个折叠的东西:登录和验证

认证在这里超出范围,因为这是广泛讨论和有共同的协议。但是,我们实际需要一个客户端成功地对一个RESTful Web服务进行身份验证?对,有些令牌,让我们称之为access-token。

客户端)所以,我需要的是一个访问令牌,但如何获得这样RESTful?
服务器)为什么不简单地创建它?
客户端)怎么来?
服务器)对我来说,访问令牌不是资源。因此,我将为您创建一个用于兑换您的用户名和密码。

因此,服务器可以提供资源URL“/ accesstokens”,用于POST用户名和密码,将链接返回到新创建的资源“/ accesstokens / {accesstoken}”。
或者,您返回包含访问令牌和包含资源链接的href的文档:

<access-token
  id="{access token id goes here; e.g. GUID}"
  href="/accesstokens/{id}"
/>

很可能,您实际上不会将访问令牌创建为子资源,因此不会在响应中包含其href。
但是,如果这样做,客户端可以代表其生成链接或不生成?没有!
记住,真正的RESTful Web服务以一种方式将资源链接在一起,客户端可以自己导航,而不需要生成任何资源链接。

你可能拥有的最后一个问题是,如果你应该将用户名和密码作为HTML表单或文档,例如。 XML或JSON – 它取决于… 🙂

http://stackoverflow.com/questions/4608225/how-do-i-implement-login-in-a-restful-web-service

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:web-services – 如何在RESTful Web服务中实现登录?