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

Pre*_*ist 8 apache rest web-services shiro

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

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

jeo*_*vre 3

我建议你使用 jersey web 框架,因为它非常简单,用 java 编写并带有注释!

您可以在 shiro.ini 中指定您的 uri、角色、权限,然后在 jersey 上创建一个 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);
    }
Run Code Online (Sandbox Code Playgroud)

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

  @GET
    @Path("/books")
    @Produces({"application/json"})
    @RequiresUser
    @RequiresRoles("reader")
Run Code Online (Sandbox Code Playgroud)

这真的很容易!请参阅 shiro 文档:shiro 注释参考

  • 您永远不应该使用@QueryParam 来传递用户和密码进行身份验证。我不能否决这个答案,但这是一种不安全的方法。 (4认同)