问题标签 [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.
grails - 如何在我的项目中实现 Grails 的 Shiro 安全性
我是 Grails 的新手,并且使用了一些 Shiro 安全性。我创建了一个带有登录页面的小网站,如果登录成功,它会将我重定向到另一个登录页面。
现在我想实施 Shiro Security。我已经在新的 Grails 项目上运行了 Shiro 的插件和快速启动应用程序。
我想要实现的是如何使用快速启动文件和代码在我自己的页面上实现我的安全性。请指导。一点。我应该从那个快速开始使用哪些文件以及我应该做哪些更改。?
等待一些积极的回应:)
java - 散列和加盐密码并不总是相同的
我在我的 Spring 应用程序中使用 Apache Shiro 作为我的安全层,我遇到了一个非常奇怪的情况。
首先,这就是我的安全系统的设置方式。当用户注册时,他们的密码会使用安全生成的随机盐进行哈希处理。然后将盐和散列密码存储在我的数据库中。当他们注册和登录时,一切都 100% 正常工作,但几天过去了,突然他们的散列密码不再匹配。这是我的代码:
生成的哈希密码为:
但是我在数据库中的密码是:
所以你可以想象,我完全被难住了。有谁知道我做错了什么?或者,如果我离开了一步。
更新 1:在我的系统中注册新用户后,系统中的所有其他用户似乎都因某种原因更改了密码。所以这与密码哈希的生成方式无关,更多的是与我的数据库访问层有关。
guice - 使用 Google Guice Servlet 配置 Apache Shiro
我开始使用 Guice/Shiro 而不是 Spring/Spring Security。我查看了 Shiro 网站上的示例,所有配置示例都是作为 INI 文件示例制作的。是否可以在纯 Java 中配置 Shiro,因为 Guice Servlet 是要配置的?
grails - Grails + Shiro 插件在创建 ShiroFilters 时失败,无法解析对 bean transactionManager 的引用
在 Grails (v 1.3.7) 应用程序中安装 Shiro 插件 (v 1.1.3) 并使用 grails shiro-quick-start --prefix="Sec"引导不同的 Shiro 类后 grails run-app 因堆栈而失败如下图所示。
有人知道到底出了什么问题吗?
启动应用程序时显示以下异常:
运行 Grails 应用程序.. 2011-05-09 16:14:31,209 [main] 错误 context.GrailsContextLoader - 执行引导程序时出错:创建名为 'org.apache.shiro.grails.ShiroFilters' 的 bean 时出错:bean 初始化失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为“shiroAnnotationHandlerService”的 bean 时出错:设置 bean 属性“transactionManager”时无法解析对 bean“transactionManager”的引用;嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException:没有定义名为“transactionManager”的 bean org.springframework.beans.factory.BeanCreationException:创建名为“org.apache.shiro.grails.ShiroFilters”的 bean 时出错:初始化豆失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为“shiroAnnotationHandlerService”的 bean 时出错:设置 bean 属性“transactionManager”时无法解析对 bean“transactionManager”的引用;嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'transactionManager' is defined at org.grails.tomcat.TomcatServer.start(TomcatServer.groovy:212) at grails.web.container.EmbeddableServer$start.call (来源不明)在 _GrailsRun_groovy$_run_closure5_closure12.doCall(_GrailsRun_groovy:158) 在 _GrailsRun_groovy$_run_closure5_closure12.doCall(_GrailsRun_groovy) 在 _GrailsSettings_groovy$_run_closure10.doCall(_GrailsSettings_groovy:280) 在 _Grails_Settings_groovy groovy) 在 gant.Gant.invokeMethod(Gant.groovy) 在 gant.Gant.executeTargets(Gant.groovy:590) 在 gant.Gant.executeTargets(Gant.groovy:589) 由:org.springframework.beans.factory。 BeanCreationException:创建名为“shiroAnnotationHandlerService”的bean时出错:设置bean属性“transactionManager”时无法解析对bean“transactionManager”的引用;嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException:未定义名为“transactionManager”的 bean ... 23 更多原因:org.springframework.beans.factory.NoSuchBeanDefinitionException:未定义名为“transactionManager”的 bean ...还有 23 个 Gant.executeTargets(Gant.groovy:589) 原因:org.springframework.beans.factory.BeanCreationException:创建名为“shiroAnnotationHandlerService”的bean时出错:设置bean属性“transactionManager”时无法解析对bean“transactionManager”的引用;嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException:未定义名为“transactionManager”的 bean ... 23 更多原因:org.springframework.beans.factory.NoSuchBeanDefinitionException:未定义名为“transactionManager”的 bean ...还有 23 个 Gant.executeTargets(Gant.groovy:589) 原因:org.springframework.beans.factory.BeanCreationException:创建名为“shiroAnnotationHandlerService”的bean时出错:设置bean属性“transactionManager”时无法解析对bean“transactionManager”的引用;嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException:未定义名为“transactionManager”的 bean ... 23 更多原因:org.springframework.beans.factory.NoSuchBeanDefinitionException:未定义名为“transactionManager”的 bean ...还有 23 个 设置 bean 属性 'transactionManager' 时的 transactionManager';嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException:未定义名为“transactionManager”的 bean ... 23 更多原因:org.springframework.beans.factory.NoSuchBeanDefinitionException:未定义名为“transactionManager”的 bean ...还有 23 个 设置 bean 属性 'transactionManager' 时的 transactionManager';嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException:未定义名为“transactionManager”的 bean ... 23 更多原因:org.springframework.beans.factory.NoSuchBeanDefinitionException:未定义名为“transactionManager”的 bean ...还有 23 个
java - 使用 spring security 和/或 shiro 的最佳实践
我对使用 Spring Security 或 Shiro 处理“权利”概念的最佳方式的意见感兴趣。
例如,假设一个具有如下签名的 JAX-RS 端点:
使用 Spring Security,我可能会注释一个实现,例如:
或使用 Shiro,
然而,我正在寻找的是关于如何确保用户有权访问特定帐户 ID 的“最佳实践”的一些建议(我认为这称为“权利管理”)。
我可以想象几种不同的方法:
(这让我觉得使用 Spring Security 并不完全简单,但我很想错)。
或者,我可以想象引入一个域对象和一个工厂,如果当前安全上下文持有的原则允许用户查看该帐户,则AccountId
该工厂只会成功地将 aString
转换为a。AccountId
但这开始变得有点混乱。
总的来说,我不想在这里发明新概念;这似乎是面包和黄油的东西,但我没有太多运气在这里找到关于最佳实践的可靠建议。
感谢您的任何建议。
mysql - Shiro + Keys 存储为字符串 = 故障点或不必要的关注?
不涉及太多细节,这是一个高层次的问题。
我一直认为将主键存储在没有约束的地方从来都不是一个好主意。例如,在 EAV 风格架构中存储主键("USER_ID",144)
。如果该用户被删除,它将不会反映在 EAV 映射中,并会导致更远的问题。
所以我正在创建一个使用 shiro 作为security/permission
框架的新应用程序,我需要用户能够编辑自己而不是其他用户,我还需要其他用户能够编辑任何人。很简单:
user1 = "user:441:edit"
user2 = "user:edit"
另外,我可以有一个只能编辑一部分用户的人,像这样
user3 = "user:459:edit","user:460:edit","user:461:edit"
或者,可以编辑某个部门但仅限该部门的用户的人
user4 = "department:5898:user:edit"
如果 user3 列表中的某个人被删除,那么没有魔法就无法更新该用户的权限(遍历所有权限并找到要删除的权限)。
现在我不打算重置密钥,但如果它真的发生并且我不清理旧密钥,我可能会让用户突然能够编辑在重用旧密钥后最近创建的用户。
我可以通过使用在所有表中唯一的生成代码("user:ciS84nFSHK:edit")
来管理权限删除来缓解其中的一些问题。但是,添加几亿条记录让我认为这可能会很快变得笨拙。
我是否不正确地使用 Shiro?我只是过度关注键被破坏了吗?这些问题你解决了吗?任何帮助,将不胜感激。
hibernate - Shiro、Hibernate 和 Envers
我已经实现了 shiro 并且运行良好。我们现在正在尝试实现 envers 以在休眠状态下对我们的实体进行审计日志记录,并且效果也很好。一个问题是我们试图让主题在正常模式和 runAs 模式下都从 shiro 进行更改。
Shiro 从当前线程中获取主题,并且似乎在调用 envers 的 AuditEventListener 时它已经在一个单独的线程中。在hibernate中将shiro的主题绑定到当前线程的好钩子在哪里。Shiro 已经有方法可以做到这一点,但我需要重写 hibernates 事件调用者以某种方式将主题绑定到新线程,或者向事件中添加额外的数据,以便我稍后获取它。
java - 高级 Java 安全框架
您在 Java 项目中使用什么安全框架?
我使用了 Spring Security 和 Apache Shiro,它们看起来都很不成熟。
Spring 安全漏洞:
- 没有对权限的原生支持;
- 无法在 Java 代码中显式使用(有时是必要的);
- 过于关注经典(非 AJAX)Web 应用程序。
Apache Shiro 缺陷:
- 最终版本中的错误(例如 Spring 集成的问题);
- 不支持 OpenID 和其他一些广泛使用的技术;
- 报告的性能问题。
两者都缺乏文档。
也许大多数真正的项目都开发了自己的安全框架?
security - Apache Shiro“使用 JSF 2.0”!进展如何?
我正在寻找 java web 应用程序中用于身份验证/用户登录管理/安全性的框架/解决方案,它可以使天真的开发人员的工作更轻松/更快,并使应用程序相对更安全地抵御潜在威胁。
正如一些人建议我考虑像 Spring Security 和 Apache Shiro 这样的解决方案,我想知道它如何与 JSF 2.0一起使用。对于我的情况,使用 Shrino 而不是 Spring 安全性有什么缺点吗?
对于 JSF 应用程序还有其他更好的安全解决方案吗?
目前,我在我的 Web 应用程序中使用 JSF 2.0(带有 Facelets)作为前端开发框架,它由 NoSQL 数据库 Cassandra 提供支持。
spring - 我可以在 Apache Shiro 安全注释中使用表达式吗?
我一直在对 Apache Shiro 和 Spring Security 进行一些比较——我真的很喜欢 Shiro 使用的安全模型,并且相信它比 Spring Security 更干净。
然而,一大优点是能够从方法级安全注释中引用方法参数。例如,现在我可以这样:
在此示例的上下文中,这意味着经过身份验证的用户必须有权在电子邮件帐户上发送电子邮件。
但是,这还不够细粒度,因为我需要实例级别的权限!在这种情况下,假设用户可以对电子邮件帐户的实例拥有权限。所以,我想把前面的代码写成这样:
通过这种方式,权限字符串引用传递给方法的参数,以便可以保护该方法免受特定的 EmailAccount 实例的影响。
我知道我可以从方法中的纯 Java 代码轻松地做到这一点,但是使用注释来实现同样的事情会很棒——我知道 Spring Security 在其注释中支持 Spring EL 表达式。
这绝对不是 Shiro 的功能,因此我必须编写自己的自定义注释吗?
谢谢,
安德鲁