问题标签 [shiro]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
9525 浏览

java - 何时从容器管理的安全性转移到 Apache Shiro、Spring Security 等替代方案?

我正在尝试保护使用 JSF2.0 构建的应用程序。

我很困惑人们什么时候选择使用 Shiro、Spring Security 或 owasp 的 esapi 等安全替代方案,而留下容器管理的安全性。在看到 Stack Overflow 上的一些相关问题后,我意识到过去 JSF 开发人员更喜欢基于容器的安全性。但我也被强烈推荐使用 Apache Shiro。我在安全问题方面是新手,不知道可能是什么相关问题以及如何处理它们。因此,我正在寻找可以通过其默认设置/自行处理大多数安全问题的东西。

就我的应用程序需求而言,我有一个社交应用程序,其中具有不同角色的用户可以访问不同的页面集,并且可以根据他们的角色在这些页面上使用不同级别的功能。

在那种情况下,您认为我可以选择什么?

我个人一直被说服选择 Shiro,因为它易于使用并且可以为新手处理大部分事情。

0 投票
1 回答
374 浏览

jsf - JSF 应用程序是否真的需要 Shiro 的会话管理支持,而 JSF 已经提供了这样的功能?

我正在尝试使用 Shiro 来保护我的 JSF 应用程序。在简要了解 Shiro 之后,我很困惑 JSF 应用程序是否真的需要 Shiro 提供的会话管理工具。由于 JSF 在响应收到的请求集时已经创建了会话,所以使用 Shiro 会为经过身份验证的用户创建(额外的!?)会话实例吗?

我担心如果我为 jsf 应用程序配置 Shiro,那么它是否会创建额外的会话实例(我很担心,因为 jsf 已经给了我,我不希望通过 shiro 的会话实例)

0 投票
3 回答
1993 浏览

security - 覆盖 shiro 未经授权的页面

我需要知道如何覆盖 shiro 未经授权的页面。即,当用户对受保护的 url 没有某些权限时,shiro 返回页面 401。我们如何使其将用户转发到预定义的未经授权的页面?

谢谢...

0 投票
1 回答
245 浏览

grails - Grails / Shiro 内部 URL 请求

我们有一个 grails 应用程序,并且正在使用 Shiro 安全插件。

我们目前正在使用 groovy URL 功能来获取页面的输出并在 DIV 中呈现内容,但是当对任何受保护的 Shiro 页面发出此类请求时,它会向我们显示登录页面,因为 Shiro 无法识别作为有效登录用户的内部请求。

有谁知道如何克服这个问题?

0 投票
1 回答
2409 浏览

java - 无法使用 Apache Shiro 配置获得正确的结果

我正在尝试在我的项目中使用 apache shiro,因为我必须在我的项目中创建一个基于角色的机制。我创建了一个具有以下配置的演示项目...

我在我的项目中创建了以下文件 -

索引.jsp

登录.jsp

success.jsp
denied.jsp
logout.jsp
showUser.jsp

我的shiro.ini配置如下——

我正在使用 servlet LoginTestServlet.java在身份验证成功/不成功后调度到login.jsp页面或success.jsp -

我正在使用 TOMCAT 6.0。

我的问题是——

  1. 每当我尝试在login.jsp页面输入凭据时,它会自动将我带到相应页面以获取我输入的凭据。例如,如果我在单击success.jsp后尝试输入 ROLE_MEMBER 凭据,它会将我带到success.jsp页面。但是,如果我在单击相同的success.jsp后尝试输入 ROLE_ADMIN ,它会根据编写的 servlet 代码自动将我带到secret.jsp,而不是去denied.jsp
  2. 如何在不为每个资源编写单独的 servlet 以显示登录成功或拒绝页面的情况下制作通用代码?

另外,有没有办法在 shiro 中为每个资源创建自定义权限?如果是,那么如何。如果有这方面的链接,我将不胜感激。

谢谢大家。

0 投票
2 回答
2743 浏览

spring - Spring 中启用 Apache Shiro 注释时找不到 Spring 数据 JPA 存储库

这是问题所在。

我有 spring 3.0.5,使用它的新 DATA JPA 存储库模块(接口扩展 CrudRepository<T, ID extends Serializable>)。

我有 Apache Shiro 1.1.0 作为我的应用程序的安全解决方案。Apache shiro在spring bean定义xml文件中配置如下:

请注意,我的应用程序是一个独立的应用程序,这个 Apachoe Shiro 配置反映了它。

spring jpa 存储库的配置以及标准 spring 配置(注释扫描)在其他文件中配置,它们似乎与这个问题无关,所以我将跳过打印它们。

我的SecurityDAORealmCredentialsRepository作为其 jpa 存储库控制器接口 ( CredentialsRepository extends CrudRepository<T, ID extends Serializable>) 自动装配,用于访问存储凭据的数据库。

现在解决问题。

配置 Apache Shiro 注释扫描时,CredentialsRepository找不到类型的自动装配 bean,因此未装配。关闭注释扫描后,CredentialsRepository 变量会自动关联并且一切正常。

启用 Apache Shiro 注释处理的部分是这个

通过注释掉它的中心和平

注释已关闭,取消注释将再次打开它们。

作为测试,我尝试自动连接一个简单的 pojo 而不是 my CredentialsRepository,这在两种情况下都很好用(注释开/关)。

我对弹簧内部的了解不多。这里可能发生的情况是CredentialsRepository变量没有自动连接,因为 Spring 没有机会SimpleJpaRepository在其后端创建其适当的实现 ()。

解决方法只是通过自动连接一些“全类”JPA 控制器而不是 spring 管理接口实现来实现。

但是我很好奇这是否是一个需要修复的错误,或者这里是否存在一些额外的弹簧魔法可以使其也适用于弹簧数据接口。

0 投票
1 回答
1202 浏览

grails - 如何在 grails Web 应用程序中使用 shiro 本机会话?

目前,我在控制器和 gsp 页面中都使用默认的 HttpSession 对象:

在控制器中:

在普惠制中:

我想要一个“记住我”的功能。Shiro 已经内置了它。但是,据我了解,为了做到这一点,我必须使用 shiro 本机会话模式(在 Config.groovy:security.shiro.session.mode="native")。默认情况下,它会保持会话状态,因此只要 cookie 过期或用户注销,对象就会保留在会话中。

我的理解对吗?

然后我将不得不将我的控制器更改为:

我对此的看法:

所以,我的问题是:

  • 那正确吗?
  • 我不能只使用以前的方式访问会话吗?
  • 我是否必须在某些配置中关闭默认的 http 会话?
0 投票
1 回答
283 浏览

java - 带有 Ruby (RhoMobile) 前端安全性的 Java 和 Spring 后端

我目前正在使用 RhoMobile 构建一个移动应用程序。该应用程序将简单地调用一堆 REST Web 服务。后端 REST 服务是用 Java + Spring 编写的。我想知道安全考虑是什么。我们的要求非常简单,我们需要一种安全的方式让用户使用应用程序登录,然后才能调用 Web 服务。

有没有人有任何结合这些技术的经验。我有什么选择。目前我正在考虑使用 Spring Security 或 Shiro,但只是想知道是否有人有更好的经验。

请注意,我们将使用 JSON 进行所有通信。

0 投票
1 回答
4404 浏览

spring-roo - 使用 Apache Shiro 为 Spring Roo 项目设置 JDBC 领域

我使用 Eclipse 链接为我的 JPA 持久层设置了一个 Spring-Roo 项目,并且我创建了(用户角色、用户)表来管理我的安全性。我想知道是否有人用 Spring 项目设置了一个领域来配置 Apache Shiro,以便它使用数据库表来查找用户名和密码并保存用户名和密码?

目前我有一个 Shiro.ini 文件与一些测试角色和(用户名、密码)组合一起使用,但我试图弄清楚如何使用正确的过滤器来配置我的 web.xml 文件。下面是我的 web.xml 文件和当前的过滤器集。

有没有人有一个使用(Postgres)和 Apache Shiro 和 Spring 的 JDBC 领域的例子?

0 投票
1 回答
12237 浏览

java - 使用 sessionId 或用户名+密码的 Shiro 身份验证

一般来说,我在 Java 身份验证框架和身份验证工作流程方面没有太多经验(只有一些理论知识),因此出于教育目的,我正在尝试为我的 HTTP 应用程序创建这种类型的身份验证:

  1. 客户将登录名+密码发布到/login.
  2. Shiro 通过给定的凭据登录用户。服务器返回客户端他的sessionId.
  3. 客户请求某种资源/myresource?sessionId=1234567
  4. Shiro 通过 given 登录主题sessionId/myresource然后服务器执行获取(使用 Shiro 管理方法级访问权限)的常规工作流程。

基本上我有这些问题:

  1. 我想我不需要 HTTP 会话或 Servlet 会话。Shiro 有自己的会话管理器,足以满足我的需求。我错了吗?
  2. 为客户端提供真正的 sessionId 是一种好习惯,还是应该发送某种 sessionToken(在服务器端解析为 sessionId)?
  3. 如何使用 sessionId 登录主题(客户端应在本地存储)?
  4. 在进行这种身份验证之前,我还需要了解其他任何事情吗?

提前致谢。