繁体   English   中英

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

[英]Restful Web service Authentication and Authorization with Apache Shiro

我能够通过使用JDBC relam的数据库使用apache shiro对基于Web的应用程序进行身份验证。 此外,我可以通过使用Shiro过滤器来授予对特定Web资源或http url的访问权限,使用web.xml中的Shiro过滤器配置和shiro.ini中的配置。

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

我建议您使用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);
    }

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

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

真的很简单! 请参见shiro文档: shiro注释参考

该机制由shiro实现,令牌传递到浏览器,并作为cookie存储在客户端导航器上。 之后,shiro将在每次连接上将令牌传递到服务,然后通过浏览器。

首先尝试使身份验证符合您的应用程序要求: authen shiro doc

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

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

在GIT上的shiro示例中显示了使用shiro进行用户身份验证。 只需分叉此git即可使其正常工作。

Shiro正在传递cookie,以保持连接状态! :) Cookie的传输由shiro管理,您无需考虑它。

请享用 :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM