6

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

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

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

Logic 表示,第一种方法将是最有效的,因为每次进行身份验证都会产生相当多的开销。

您对此有何建议?去无状态还是有状态?有状态方法是否存在主要缺点?

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

4

2 回答 2

3

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

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

另一种选择是使用类似于 AWS 的方式来执行此操作(例如,链接到亚马逊的此处此处)。这里有其他解释:buzzmediasamritchie

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

于 2012-06-18T07:56:18.547 回答
0

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

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

private static ClientResource getClientResource(String uri) {
ClientResource clientResource = new ClientResource(uri);
clientResource.setChallengeResponse(ChallengeScheme.HTTP_BASIC,
        "username", "password"
        );
return clientResource;
}
于 2012-06-18T01:44:18.667 回答