有人可以为我提供一些关于 JAX-Rs Web 服务中的访问控制的指针吗?例如,根据用户凭据、姓名或任何其他标准限制访问。在 sun 手册中找不到任何有用的信息。
在此先感谢,阿迪尔
有人可以为我提供一些关于 JAX-Rs Web 服务中的访问控制的指针吗?例如,根据用户凭据、姓名或任何其他标准限制访问。在 sun 手册中找不到任何有用的信息。
在此先感谢,阿迪尔
我个人使用 Spring security 来实现这一点。Spring security 允许轻松使用各种身份验证和授权方案(例如,通过针对数据库或 LDAP 服务器检查来自 HTTP 请求的基本/摘要标头)。使用JAX-RS设置起来并不难,而且还有一个漂亮的基于方面的权限系统,您可以在其中执行类似的操作
@PreAuthorize("hasRole('ROLE_ADMIN') or order.customer.username == user.username) deleteOrder(Order order);
这确保经过身份验证的用户必须在ROLE_ADMIN组中或者是订单的所有者才能被允许删除它。
配置完成后,您在JAX-RS资源中所要做的就是处理来自 spring 的 Security 异常并采取适当的操作(fx. 通过抛出WebApplicationException ,如此处所述)
人们有很多方法可以做到这一点,并且这个网站上有很多关于这个主题的精彩主题(请参阅保护 REST API/Web 服务的最佳实践)
我个人使用 OAuth 来完成这项任务。有关 OAuth的更多信息,请查看 OAuth 初学者指南