RESTful Web服务中的身份验证

时间:2012-06-17 17:30:57

标签: web-services spring rest spring-security

我正在构建一个基于Spring的宁静网络服务。我正在使用Spring Security。它只能由桌面应用程序访问。基本上是机器到机器的网络服务。

  • 我想要一个进行身份验证的自定义服务。然后根据身份验证的结果执行其他更敏感的操作。

  • 另一种选择是在每个请求的正文中发送凭据,并且每次都基本上进行身份验证。

逻辑说第一种方法是最有效的,因为每次验证都会有相当多的开销。

你有什么建议与此有关?去无国籍或有状态?有状态方法是否存在主要缺点?

到目前为止,我阅读了Java Web Services Up and Running的一些章节。 以及来自SO的几个问题,例如this

2 个答案:

答案 0 :(得分:3)

如您提供的链接所述,REST方式是对每个请求进行身份验证,而不是保留会话。

至于在每个请求上使用用户名/密码进行身份验证,如果您可以使用...安全层(https),则是安全的。否则,该对以明文发送并且可被发现。

另一种选择是使用类似AWS的方式(例如,链接到亚马逊herehere)。这里有其他解释:buzzmediasamritchie

也许OAuth是一种选择,但我没有经验。

答案 1 :(得分:0)

从REST服务(客户端 - 服务器)开始,我强烈建议您使用Restlet

可以使用ClientResource定义对此REST服务的身份验证。示例:

private static ClientResource getClientResource(String uri) {
ClientResource clientResource = new ClientResource(uri);
clientResource.setChallengeResponse(ChallengeScheme.HTTP_BASIC,
        "username", "password"
        );
return clientResource;
}