简单的restful Web服务上的身份验证和授权

时间:2015-12-23 15:22:20

标签: java authorization restful-authentication

我使用maven在eclipse中开发了一个基本的Restful Webservice。我使用tomcat 7.0作为服务器,SE 1.7和jersey作为我的JAX-RS源,但我不使用JPA。我有一个MySql DB,我用MySql提供的Connector J连接到DB。我的数据库中有一个employee表和一个deparment表,以及这些表的合适模型类。我的webservice只提供以JSON格式返回雇员和deparment信息的get方法。

它工作得非常好,但现在我希望客户端在访问webservice-methods之前登录。

客户端没有设置jet,但它应该是一个网站,在我的tomcat服务器上使用javascript和JQuery与web服务进行交互。

现在我想为我的webservice添加身份验证和授权服务。这应检查用户是否已登录并具有要求定义的员工或部门的权限。例如,我的一个get方法是:

@GET
@Path("/employee/{id}")
@Produces(MediaType.APPLICATION_JSON)
public Employee getEmployee(@PathParam("id") long id) {
    return EmployeeDBService.getDefinedEmployee(id);
}

现在客户端使用serverurl / myresource / employee / 10调用它 但登录客户端的用户无权要求具有ID 10的员工。

我还想添加一个功能,在闲置一段时间之后注销客户端。

我已经搜索了一个很好的教程和技术来实现对Web服务的身份验证和授权服务。但我并没有真正成功,因为:

  • 我是开发Java restful webservices的新手。
  • 我发现只有在SOAP Web服务中实现的示例,并且在经过一段时间不活动后才会读到有关自动注销的内容。

你们中的某些人是否知道如何解决我的问题的良好链接/示例/技术?

如果有任何问题,我会回答他们。谢谢你的帮助和时间!

1 个答案:

答案 0 :(得分:1)

如评论所述,security chapter in the Jersey documentation将向您展示如何在REST API中集成身份验证机制:此部分身份验证仅检查用户是否已登录以及他是谁。

  

登录客户端的用户无权要求ID为10的员工

JAX / RS对您的数据模型及其权限一无所知。但他会给你登录。您必须自己实现逻辑。可能这将是每个REST方法的第一行。