在JAX-RS应用程序中获取凭据的最佳方法是什么?

时间:2014-07-23 14:38:53

标签: java security rest java-ee restlet

我正在开发一个基于RESTlet的小型中间件,它为几个后端系统提供REST API。

为此,我的JAX-RS应用程序需要其某些方法的凭据,以使用(明文)用户名和密码验证对后端系统的调用。

到目前为止,我发现了很多关于授权/身份验证的文档,但所有这些文档都只能验证对方法的访问权限并提供用户组。它似乎没有让我有可能将用户的凭据传递给实际的方法。是否有一种很好的方式来注入它们而不依赖于REST框架?

1 个答案:

答案 0 :(得分:0)

如果您只是想要普通身份验证,那么常见的(除非您使用HTTPS)策略是将它们放在HTTP请求标头中。在服务器端,您可以使用这些值并随意执行任何操作,包括评估对所请求服务的访问权限。如果使用JAX-RS,则创建一个实用程序方法相对简单。

如果您还想确保完整性,您可能希望包含一个散列,该散列使用simmetric键(客户端和服务器都知道)散列所有参数字符串表示的串联。在服务器端,您重新计算哈希以检查请求是否已被篡改。通过这种方式,即使窃听者获取您的凭据嗅探网络流量,他也很难发送虚假请求或篡改正确的请求。