使用Apache Shiro进行Restful Web服务身份验证和授权

时间:2014-05-28 08:40:52

标签: apache web-services rest shiro

我能够使用JDBC关系使用apache shiro通过数据库验证基于Web的应用程序。此外,我已经能够使用Shiro-Filters为web.xml中的Shiro过滤器配置和shiro.ini中的配置授予对特定Web资源或http URL的访问权限。

现在,我想为webservices实现相同的功能。特别是,如果凭据有效,我希望用户点击login-url获取令牌。之后,必须根据用户的特定令牌验证对Web服务的所有连续请求。 我没有任何线索来实现这一点。任何建议,程序或暗示性链接都可以帮助我很多!!

3 个答案:

答案 0 :(得分:3)

我建议您使用jersey网络框架,因为它非常简单,在java和注释中!

如您所知,您可以在shiro.ini中指定您的uri,角色和权限,然后在球衣上制作一个Web项目。

之后在java代码中的使用清晰简单!了解如何检索

球衣代码:

/**
     * login to app
     * @param username
     * @param password
     * @return
     * since v0.6.4 
     */
    @PUT
    @Path("login")
    @Produces({"application/json"})
    public Response loginv3(
            @FormParam("username") String username,
            @FormParam("password") String password){

        return login(username, password);
    }

在这种情况下,只有当用户连接并且我们具有“读者”角色时,我们才会检索图书:

  @GET
    @Path("/books")
    @Produces({"application/json"})
    @RequiresUser
    @RequiresRoles("reader")

真的很容易!请参阅shiro文档:shiro annotation reference

答案 1 :(得分:0)

这个mecanic由shiro实现,令牌传递给浏览器并作为cookie存储在客户端导航器上。之后,shiro会将每个连接上的令牌传递给浏览器服务器。

首先尝试让您的应用程序支持身份验证:authen shiro doc

请实施shiro Step by Step project以验证身份验证和自动化的概念! :)

请给我一些反馈。享受它:))

答案 2 :(得分:-1)

使用shiro的用户身份验证显示在shiro example on GIT中。只需分叉这个git就可以了。

Shiro正在传递cookie以保持连接活着! :) cookie的转移由shiro管理,你不必考虑它。

享受:)