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

时间:2015-01-15 13:20:14

标签: authentication grails plugins spring-security google-authentication

最近有没有人设法成功将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" for" / oauth / google / callback",(并通过Google Developers Console通过重定向网址注册)我发现我的onSuccess方法确实被调用了,但控制器中引用的数据结构是错误的,似乎我需要在很大程度上重写控制器逻辑才能使一切正常。我必须假设其他人希望以与我相同的方式完成基于Google的身份验证。在某处有完整的操作示例吗?或者,有人可以告诉我在尝试使用标准插件时出错了吗?感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您还需要使用spring security oauth插件。请参阅此处https://github.com/cazacugmihai/grails-spring-security-oauth

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