休息,glassfish4 shiro 启用工作样本

Posted

技术标签:

【中文标题】休息,glassfish4 shiro 启用工作样本【英文标题】:rest, glassfish4 shiro enabled working sample 【发布时间】:2014-09-27 14:10:46 【问题描述】:

我是 javaee 开发的新手。我正在尝试构建一个 javaee 应用程序,其中驻留在 Glassfish4 上的其余服务将由移动客户端调用。我在网上遇到了用于身份验证和授权的 apache shiro 框架。我想使用 shiro 来保护服务。 目前我正在尝试使用一些硬编码用户配置基本身份验证以获得信心。我的最终目标是将用户存储移动到数据库中。

按照 apache shiro 教程,我配置了我的 web.xml 和 shiro.ini。

1) 但是不知何故,其余的服务仍然是开放的,我可以在没有任何密码的情况下调用它们。 shiro.ini 没有在我的应用程序中正确加载吗?

2) 将来我将有来自多个应用程序的多个休息服务,所以我也需要为所有这些服务配置 shiro 吗?有没有办法使用单个 shiro 配置来处理多个 webapp 的身份验证和授权?

3) 如果您有类似的工作示例,请指出。

项目位置

网址:https://github.com/debashisgho/MyApp/

我可以在不使用任何用户/密码的情况下获取资源数据

 http://localhost:8080/MyApp/rest/MyResource

我确定我没有正确配置它。需要帮助找出缺少的东西。

【问题讨论】:

检查您的依赖项,特别是 shiro-jersey,该库将 Shiro 支持添加到 Jersey。确保正确配置 (github.com/silb/shiro-jersey) 谢谢秃头。我正在使用 javaee 容器 glassfish 来运行我的服务。我还需要使用 shiro-jersey 吗? 【参考方案1】:

您能否告诉您是否在控制台中看到任何错误或看到 shiro 环境已成功初始化。

你可以试试

<filter>
    <filter-name>ShiroFilter</filter-name>
    <filter-class>org.apache.shiro.web.servlet.ShiroFilter</filter-class>
  </filter>

而不是

<filter>
    <filter-name>ShiroFilter</filter-name>
    <filter-class>org.apache.shiro.web.servlet.ShiroFilter</filter-class>
     <init-param>
        <param-name>configPath</param-name>
        <param-value>classpath:shiro.ini</param-value>
     </init-param>
  </filter>

【讨论】:

我在取出init-parm后重新部署了应用程序war。严重:[admin-listener(8)] INFO org.apache.shiro.web.env.EnvironmentLoader - Shiro 环境在 298 毫秒内初始化。 INFO:MyApp 在 1,172 毫秒内成功部署。信息:启动 Jersey 应用程序...严重:PWC6117:找不到文件“..glassfish\domains\domain1\applications\MyApp\login.jsp”。还是不行。【参考方案2】:

将 shiro 配置更改为以下内容后,基本身份验证和授权工作正常 稍后我将尝试将其集成到数据库中。但这让我相信 Shiro 会起作用。

[main]
authBasic = org.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilter
[users]
# format: username = password, role1, role2, ..., roleN
root = secret,admin
guest = guest,guest
[roles]
#format; roleName = permission1, permission2, ..., permissionN
admin = *
[urls]
/api/** = authBasic

我没有得到第二个问题的答案是否可以为多个 webapp 配置单个 shiro.ini。

【讨论】:

以上是关于休息,glassfish4 shiro 启用工作样本的主要内容,如果未能解决你的问题,请参考以下文章

JEE、eclipselink、glassfish4.0 无法持久化实体

使用 Shiro 注销时出现 IllegalStateException

Shiro / CDI 注入安全主体适用于 Glassfish 但不适用于 Wildfly

Apache shiro - 我怎么知道缓存正在为授权工作?

启用 CDI 的 shiro 过滤器

Apache shiro + kerberos 身份验证