我正在构建一个基于Spring的宁静网络服务。我正在使用Spring Security。它只能由桌面应用程序访问。基本上是机器到机器的网络服务。
我想要一个进行身份验证的自定义服务。然后根据身份验证的结果执行其他更敏感的操作。
另一种选择是在每个请求的正文中发送凭据,并且每次都基本上进行身份验证。
逻辑说第一种方法是最有效的,因为每次验证都会有相当多的开销。
你有什么建议与此有关?去无国籍或有状态?有状态方法是否存在主要缺点?
到目前为止,我阅读了Java Web Services Up and Running的一些章节。 以及来自SO的几个问题,例如this。
答案 0 :(得分:3)
如您提供的链接所述,REST方式是对每个请求进行身份验证,而不是保留会话。
至于在每个请求上使用用户名/密码进行身份验证,如果您可以使用...安全层(https),则是安全的。否则,该对以明文发送并且可被发现。
另一种选择是使用类似AWS的方式(例如,链接到亚马逊here和here)。这里有其他解释:buzzmedia和samritchie
也许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;
}