简单 restful 网络服务的身份验证和授权

Authentication and Authorization on a simple restful webservice

我使用 maven 在 eclipse 中开发了一个基本的 Restful Web 服务。我使用 tomcat 7.0 作为服务器,SE 1.7 和 jersey 作为我的 JAX-RS 源,但我不使用 JPA。我有一个 MySql 数据库,我使用 MySql 提供的连接器 J 连接到数据库。我的数据库中有一名员工 table 和一个部门 table 以及那些 table 的 suitable 模型 类。我的网络服务只提供 return 员工和部门信息 JSON 格式的获取方法。

它工作得很好,但现在我希望客户端在访问 web 服务方法之前先登录。

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

现在我想为我的网络服务添加身份验证和授权服务。这应该检查用户是否已登录并有权询问定义的员工或部门。例如,我的一种获取方法是:

@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的员工。

我还想添加一个功能,在一段时间不活动后注销客户端。

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

你们中有人知道如何解决我的问题的好的链接/示例/技术吗?

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

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

the user logged in the client does not have the permission to ask for employee with the id 10

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