【问题标题】:Restful Web service Authentication and Authorization with Apache Shiro使用 Apache Shiro 的 Restful Web 服务身份验证和授权
【发布时间】:2014-07-17 09:14:46
【问题描述】:

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

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

【问题讨论】:

    标签: apache web-services rest shiro


    【解决方案1】:

    我建议你使用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 annotation reference

    【讨论】:

    • 您好,Jean 谢谢您的回复!当用户尝试访问获取书籍的服务时,他如何进行身份验证。如何让它知道这个特定用户已登录!当他获得令牌后通过不同的浏览器登录一次时。
    • 用户通过 shiro 认证。请分叉shiro example app。请给我一些反馈! :) 谢谢
    • 你不应该使用@QueryParam's 来传递用户和密码进行身份验证。我不能对这个答案投反对票,但这是一种不安全的方法。
    • 你是对的@PabloAndrésMartínezVargas 我的错,我正在纠正它!
    【解决方案2】:

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

    首先尝试将身份验证传播到您的应用程序中:authen shiro doc

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

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

    【讨论】:

    【解决方案3】:

    使用 shiro 的用户身份验证显示在 shiro example on GIT 中。只需 fork 这个 git 让它工作。

    Shiro 正在传递一个 cookie 以保持连接有效! :) cookie 的传输是由 shiro 管理的,你不用想。

    享受:)

    【讨论】:

      猜你喜欢
      • 2015-12-24
      • 2011-11-19
      • 2016-03-30
      • 1970-01-01
      • 2020-11-13
      • 2016-03-13
      • 2012-06-19
      • 2016-02-20
      • 1970-01-01
      相关资源
      最近更新 更多