Grails 通过 Spring Security 插件使用 Google 身份验证

Posted

技术标签:

【中文标题】Grails 通过 Spring Security 插件使用 Google 身份验证【英文标题】:Grails using Google authentication with the Spring Security plugin 【发布时间】:2015-03-13 21:39:52 【问题描述】:

最近有没有人成功地将 Google 身份验证与 Burt Beckwith 出色的基于 Grails 的 Spring Security 插件相结合?我想用 Grails 2.4.3 沿着这条路走下去,经过一番鬼混(并在 https://github.com/donbeave/grails-spring-security-oauth-google 重新编译插件的 donbeave 版本)后,我找到了可以一起编译和运行的引用组合。我最终在我的 BuildConfig.groovy 中添加了以下几行:

compile ':spring-security-core:2.0-RC4'
compile ":spring-security-oauth:2.1.0-RC4"
compile ':spring-security-oauth-google:0.3.1'

然而,我发现初始化命令“grails s2-init-oauth”创建的更改并没有为我提供前进所需的所有修改。我最终在我的 config.groovy 中添加了一个块,如下所示:

oauth 
    providers 
        google 
            api = org.grails.plugin.springsecurity.oauth.GoogleApi20
            key = 'MY KEY'
            secret = 'MY SECRET'
            successUri = '/oauth/google/success'
            failureUri = '/oauth/google/error'
            callback = "$baseURL/oauth/google/callback"
            scope = 'https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email'
        
    

这些配置定义在我的代码中指定了一个不存在的回调(上面称为 ./oauth/google/callback)。在我从推荐的示例 (https://github.com/bagage/grails-google-authentification-example) 中引入控制器后,将“/springSecurityOAuth/onSuccess”替换为“/oauth/google/callback”,(并通过 Google Developers Console 通过重定向 URL 注册)我发现我的 onSuccess方法确实被调用了,但是控制器中引用的数据结构是错误的,似乎我需要在很大程度上重写控制器逻辑才能使一切正常。我必须假设其他人希望以与我相同的方式完成基于 Google 的身份验证。某处是否有完整的操作示例?或者有人可以告诉我在尝试使用标准插件时哪里出错了?感谢您的帮助。

【问题讨论】:

【参考方案1】:

您还需要使用 spring security oauth 插件。请参考这里https://github.com/cazacugmihai/grails-spring-security-oauth,

当您单击按钮时,它会触发 Oauth 控制器中的身份验证操作,该操作会获取 验证() 谷歌的网址。验证成功后,它会触发 Oauth 控制器的 callback() 操作,然后重定向到 SpringSecurityOauthController 的 onSuccess() 操作,然后将信息保存到 OAuthId 域,最后重定向到配置中给出的 successUri。

【讨论】:

有支持 Grails 3 的插件吗?

以上是关于Grails 通过 Spring Security 插件使用 Google 身份验证的主要内容,如果未能解决你的问题,请参考以下文章

Grails - 卸载 Spring Security Core

Grails/Spring Security:无法使用新创建的用户登录

带有 grails 的 Spring Security 核心插件

grails spring-security-oauth-facebook:0.2

Grails Spring Security 3 服务 springSecurityService 为空

Grails Spring Security 扩展用户属性