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

标签 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 中添加了一个 block ,如下所示:
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)中引入一个 Controller 后,将“/springSecurityOAuth/onSuccess”替换为“/oauth/google/callback”,(并通过 Google Developers Console 通过重定向 URL 注册)我发现我的 onSuccess方法确实被调用了,但是 Controller 中引用的数据结构是错误的,似乎我需要在很大程度上重写 Controller 逻辑才能使一切正常。我必须假设其他人希望以与我相同的方式完成基于 Google 的身份验证。某处是否有完整的操作示例?或者有人可以告诉我在尝试使用标准插件时哪里出错了?感谢您的任何帮助。

最佳答案

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

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

关于authentication - Grails 通过 Spring Security 插件使用 Google 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27964389/

相关文章:

grails - Grails:如何在没有选择存储的情况下使用脚手架在 Controller 中处理多重选择?

rest - 如何在grails中发布文件

node.js - 用户登录后页面刷新不适用于 Passport js

grails - 如何将带有私有(private)插件的 Grails 应用程序部署到云端

c# - 在插件框架中使用抽象类作为契约

ember.js - 用于 Sublime 查看面包屑的插件

javascript - 更改 ckeditor iframe 对话框 url

javascript - 如何在 Angular JS 中验证状态

java - 在 Android 上更改 HTTP 基本身份验证的加密

authentication - 用户认证是否需要 LDAP 绑定(bind)帐户?