Cor*_*ett 78 rest web-services login web-applications restful-authentication
我正在构建一个带有服务层的Web应用程序.服务层将使用RESTful设计构建.我们的想法是,未来一段时间我们可能会构建使用与Web应用程序相同的服务层的其他应用程序(iPhone,Android等).我的问题是 - 如何实现登录?我想我无法从更传统的基于动词的设计转变为基于资源的设计.如果我用SOAP构建它,我可能会有一个名为Login的方法.在REST中我应该有一个资源.我很难理解如何为登录构建我的URI.应该是这样的:
http:// myservice / {username}?p = {password}
编辑:前端Web应用程序使用传统的ASP.NET框架进行身份验证.但是,在身份验证过程中的某些时候,我需要验证提供的凭据.在传统的Web应用程序中,我会进行数据库查找.但在这种情况下,我正在调用服务而不是进行数据库查找.所以我需要服务中的一些东西来验证提供的凭据.除了验证提供的凭据之外,我可能还需要在用户成功通过身份验证之后获得有关用户的某些信息 - 例如他们的全名,他们的ID等.我希望这会使问题更加清晰.
或者我没有想到这个正确的方法?我觉得我很难正确地描述我的问题.
科瑞
小智 61
正如S.Lott已经指出的那样,我们在这里有两个折叠的东西:登录和身份验证
认证在这里是超出范围的,因为这被广泛讨论并且有共同的协议.但是,客户端实际需要为RESTful Web服务成功验证自身需要什么?对,某种令牌,我们称之为访问令牌.
客户端)所以,我只需要一个访问令牌,但如何获得这样的REST?
服务器)为什么不简单地创建它?
客户)怎么来的?
服务器)对我来说,访问令牌只不过是一种资源.因此,我将为您创建一个以换取您的用户名和密码.
因此,服务器可以提供资源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)发布 - 这取决于...... :-)
S.L*_*ott 25
你没有"登录".你"认证".差异世界.
您有许多身份验证替代方案.
HTTP Basic,Digest,NTLM和AWS S3身份验证
HTTP基本和摘要式身份验证.这使用HTTP_AUTHORIZATION标题.这非常好,非常简单.但是会导致很多流量.
用户名/签名验证.有时称为"ID和KEY"身份验证.这可以使用查询字符串.
?username=this&signature=some-big-hex-digest
这就是亚马逊使用的地方.用户名是"id"."密钥"是摘要,类似于用于HTTP摘要式身份验证的摘要.双方必须就摘要达成一致才能继续进行.
某种基于cookie的身份验证. 例如,OpenAM可以配置为代理进行身份验证,并提供RESTful Web服务器随后可以使用的cookie.客户端将首先进行身份验证,然后为每个RESTful请求提供cookie.
| 归档时间: |
|
| 查看次数: |
89303 次 |
| 最近记录: |