使用 Grails 和 Spring Security 作为后端时的 Angular 前端身份验证

Posted

技术标签:

【中文标题】使用 Grails 和 Spring Security 作为后端时的 Angular 前端身份验证【英文标题】:Angular frontend authentication when using Grails and Spring Security for backend 【发布时间】:2015-11-20 06:24:07 【问题描述】:

我正在编写一个以 Grails 和 Spring Security 作为后端的 Angular 应用程序。我不想把前端和后端耦合,所以我不使用任何gsp,通信只通过REST请求。

现在的问题是使用哪种身份验证。

表单身份验证可能很有用,但 Spring Security 重定向到默认表单页面,而我的登录页面位于 Grails 之外(在 Angular 项目中)。我不需要 spring security 的表单页面,我只需要一个 URL,我可以在其中使用凭据进行发布请求并获取 cookie。

所以我从Basic authentication 开始,这很容易,但是我们必须在每个请求中添加Authorization 标头,这很烦人且不安全。

Spring security 允许remember me cookie,但它与表单身份验证耦合,因此不可能(或难以)将其与基本身份验证一起使用。

无状态令牌认证(例如,JWT)听起来不错,但不清楚如何使用 Grails 配置它。安全插件的文档没有提到无状态身份验证:http://grails-plugins.github.io/grails-spring-security-core/guide/index.html

那么在 Spring Secirity 中从 Angular 进行身份验证的最佳方法是什么?

【问题讨论】:

使用grails.org/plugin/spring-security-rest 是的,我看到了插件,但我已经使用了Grails Spring Security 插件,它可以提供一些不错的东西。所以我想知道是否可以使用安全插件。 好吧,spring-security-rest 是其余身份验证的扩展,但它基于 spring-security-core,因此仍然需要它,因此您仍将其用于其他功能 我用过spring-security-rest。简而言之:它有效! 各位,我可以同时使用spring security pluginspring security rest还是必须选择? 【参考方案1】:

您正在使用 Spring Security 的默认行为。如果您想要无状态身份验证,则必须覆盖默认行为。请通过this wiki page 并查看this sample app 了解角度后端。

【讨论】:

以上是关于使用 Grails 和 Spring Security 作为后端时的 Angular 前端身份验证的主要内容,如果未能解决你的问题,请参考以下文章

Grails spring-security-core 插件安装永远不会完成

Groovy:使用 Grails 和 Spring 安全核心插件时出现意外令牌

Grails 3.0 和 Spring Security

Grails - SSL 和 Spring 安全核心

使用 Grails 3 和 Spring Security REST 配置 CORS

在带有 CAS 和 LDAP 的 Grails 中使用 Spring Security