问题标签 [grails-spring-security]

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 投票
1 回答
927 浏览

grails-spring-security - 使用 spring security ui 运行 grails 3.3 应用程序时出错

在 grails 3.3.0 应用程序中包含 spring security ui 插件 (3.0.2) 后,我无法运行 grails 应用程序。Spring Security 核心插件版本为 3.2.0.M1。如果从依赖项列表中删除 spring security ui 插件,则应用程序可以正常工作。

堆栈跟踪:

运行命令s2ui-override auth 也会出现以下错误

使用的依赖项:

0 投票
0 回答
470 浏览

grails - 在 Bootstrap.groovy 中执行多租户感知查询

在尝试将一些数据保存到属于 BootStrap.groovy 中特定租户的数据存储时,我收到以下错误。

org.grails.datastore.mapping.multitenancy.exceptions.TenantNotFoundException:无法在 Web 请求之外解析租户

我正在使用 SessionTenantResolver 作为tenantResolver 类配置application.yml

我已经尝试将租户感知查询包装在里面withId,如下所示

User.groovy(由 s2-quickstart 生成)

我想要实现的是将超级管理员相关数据存储到默认数据存储中,将其他管理员/用户身份验证信息存储到他们所属租户的数据存储中。

另外,如果我只从 Bootstrap.groovy 创建超级管理员并将其保存到默认数据存储中,我应该怎么做?

0 投票
0 回答
400 浏览

grails - Grails 3.3.2 / 热重载 / 尝试调用静态初始化程序时出现意外错误

当我对控制器进行更改时,似乎热重载正在中断并出现以下错误:

不确定如何访问完整的堆栈跟踪,但看起来这种情况发生在带有@GrailsCompileStatic注释的 Spring Security 类中。我有以下配置:

  • 圣杯 3.3.2
  • spring-security-core 插件 v3.3.2
  • spring-security-rest 插件 v2.0.0.M2; 和
  • JVM 1.8

更新:在我对控制器进行更改然后compile从 grails 交互式提示符运行命令后,似乎发生了此错误。

0 投票
0 回答
127 浏览

grails - 将 AMAZON CONGNITO 与 GRAILS 3 和 spring-security-core 集成

我希望在 GRAILS 3 上启动一个新项目,该项目将使用 Amazon CONGNITO 和 spring-security-core。主要目标是使用 Amazon CONGNITO 用户池作为 GRAILS 3 应用程序(包括 spring-security-core)和 ANGULAR API 的集中式用户身份验证。

有没有什么插件可以让我快速集成所有三个并开始开发应用程序?

0 投票
0 回答
772 浏览

rest - Grails Spring Security 自定义会话身份验证

我在遗留系统上工作,因此无法遵循 Spring Security Core 插件(文档)提供的盒子标准文档,这意味着我不喜欢域对象。

我正在尝试开发的是具有基于会话的身份验证的 Grails 中的 REST-API(不能使用基本身份验证,因为前端是 Angular,并且需要能够在 30 分钟不活动后使用户无效)

我找到了一个正在做我想做的事情的资源——尽管它正在使用域对象,而这正是我所缺乏的。

grails 应用程序也将最终在 Tomcat 服务器上,因此也必须与之兼容。

但是,我尝试制作自己的身份验证提供程序。我在 application.groovy 中有以下内容:

在 resources.groovy 我有

我的 MyAuthenticator 类:

为了测试这是否有效,我正在启动一个 CURL。

返回 401。日志中的堆栈跟踪如下:

正如所见,它确实认为它在错误发生前不久进行了身份验证。但是,然后某处发生了故障,并尝试在字符串上执行 .getUsername() 。

我无法弄清楚是什么试图做到这一点。对于可能导致此问题的任何想法,或者即使我以完全错误的方式进行处理,我将不胜感激。

0 投票
2 回答
181 浏览

grails - Grails MongoDB 脏检查在 Spring Security 中失败

我将 Grails 3.3.2 与 mongoDB 插件 (v6.1.4) 和 Spring Security Core 插件 (v3.2.0) 一起使用。

我有UserPasswordEncoderListener以下persistenceEvent方法:

问题是hasChanged每次我保存一个没有更新的用户对象时调用总是返回true,导致已经编码的密码被重新编码,从而破坏了身份验证。

一种解决方法是使用旧方法,只需从数据库中检索原始密码并在编码之前进行比较,但我想知道为什么hasChanged错误地返回 true。

hasChanged通过在 groovy 控制台中运行以下命令测试了它在其他地方的行为是否正确:

结果是Result: false。为什么它在持久性侦听器类中不起作用?

仅供参考:我在 resources.groovy 中定义了以下 bean:

0 投票
1 回答
274 浏览

grails - Grails - Spring security ldap 活动目录身份验证 - 凭据错误错误

我正在尝试使用 grails-sporing-security-rest 和 grails-spring-security-ldap 插件对 REST API 实施安全性。

流程应该是这样的,一旦实现了身份验证提供程序,它将使用身份验证机制对用户进行身份验证。

但就我而言,我正在尝试验证 JSON 用户名和密码 POST 请求,下面是输出。

如果您观察日志,SpringSecurityLDAPTemplate 身份验证成功,但是当请求转到下一个过滤器 RestAuthenticationFilter 时,它会显示 Bad Credentials 错误。这让人有些困惑。/api/login 是 spring 安全端点,如果认证成功,它将获取用户名和密码,它应该返回适​​当的令牌,但是为什么它又被发送到 RestAuthenticationFilter 呢?

使用正确的用户名和密码:

用户名和密码错误:

资源.Groovy

应用程序.groovy

application.yml - grails 配置

更新:

进一步解决了问题,并注意到了这一点。

下面的代码行位于SpringSecurityLdapTemplate类和方法searchForSingleEntryInternal - 来自 spring-security-ldap 4.2.3 版本。从ActiveDirectoryLdapAuthenticationProvider类调用它 以从 LDAP 获取信息。

在这种情况下,searchResult.getObject 返回导致身份验证失败的 null,但我验证我能够从 resultsEnum 中获取属性。

非常感谢任何帮助。谢谢。

0 投票
1 回答
37 浏览

grails - 使用 spring-security-ui 插件时如何保持 spring-security-core 登录屏幕

我正在将 grails 应用程序从 2.3.4 迁移到 3.3.9。我创建了一个新应用程序,并逐步引入代码。我有“org.grails.plugins:spring-security-core:3.2.3”依赖和“org.grails.plugins:spring-security-ui:3.1.2”,因为我想要用户/角色管理屏幕。

根据我的调查,这两个插件都包括 login/auth.gsp,而且似乎我的应用程序使用的是 ui 而不是核心,但这不是我的 2.3.4 应用程序使用“:spring-security-core:2.0-RC2”和“的行为方式” :spring-security-ui:1.0-RC1"。有什么方法可以配置或强制应用程序从核心使用 login/auth.gsp 吗?如果没有,我可以将我想要的复制到我的本地视图文件夹中吗?会不会有兼容性问题?

0 投票
1 回答
146 浏览

grails - 如何使用 Spring Security 从控制器注销

我可以在控制器中使用 Spring Security 的注销方法吗?或者有没有办法通过清除缓存和刷新来注销?

0 投票
0 回答
154 浏览

grails - 一旦在春季安全休息中过期,您可以刷新 access_token 吗?

查看您需要发布到 /oauth/access_token 的文档

该示例不会随请求发送 BEARER 令牌,但使用 grails 4.0.5 和 spring-security-rest-3.0.1,当我尝试刷新令牌时,除非我包含当前的不记名令牌,否则请求将被拒绝。

如果当前不记名令牌已过期,则刷新消息因尝试使用过期令牌而被拒绝。

我正在使用以下 filterChain (直接来自文档)

文档中还有其他一些关于设置 ANONYMOUS_ACCESS 的条目,但这最终会创建一个会话,并导致其他一些我还不太清楚的奇怪现象。

是否有其他配置可以使“/oauth/access_token”端点像“/api/login”请求一样工作?