【问题标题】:Grails spring security Oauth2Grails 春季安全 Oauth2
【发布时间】:2018-09-11 16:10:57
【问题描述】:

我正在寻找有关 grails 插件的建议:

  • Spring Security OAuth2
  • Spring Security OAuth2 - Google

我正在开发 Grails 3.1.9 应用程序,我需要添加功能性 google 登录按钮。

  1. 我已将依赖项添加到我的 build.gradle。

    编译'org.grails.plugins:spring-security-core:3.1.1' 编译'org.grails.plugins:spring-security-oauth2:1.1.0' 编译'org.grails.plugins:spring-security-oauth2-google:1.1.0'

  2. 在 google 中创建应用程序。

  3. 创建的凭据:

    添加到授权的 JavaScript 来源

    http://localhost:8089

    添加到授权的重定向 URI

    http://localhost:8089/oauth2/google/callback

  4. 在 application.yml 中进行配置。


grails:
    plugin:
        springsecurity:
            oauth2:
                providers:
                     google:
                         api_key: myKey
                         api_secret: mySecret         
                         successUri: /oauth2/google/success    
                         failureUri: /oauth2/google/failure   
                         callback: /oauth2/google/callback    
                active: true    
                registration:
                        askToLinkOrCreateAccountUri: /oauth2/ask 
                        roleNames: ['ROLE_USER'] 
  1. 使用此命令创建了新的域类。

grails init-oauth2 myPackage User OAuthID
  1. 将此添加到我的用户域类中。

    静态 hasMany = [oAuthIDs: OAuthID]

  2. 最后将此添加到我的登录视图中。


<oauth2:connect provider="google" id="google-connect-link">Google</oauth2:connect>

Logged with google?
<oauth2:ifLoggedInWith provider="google">yes</oauth2:ifLoggedInWith>
<oauth2:ifNotLoggedInWith provider="google">no</oauth2:ifNotLoggedInWith>

问题是,当我点击通过 google 登录后,我的页面只是刷新并转到 /login/auth。没有重定向到谷歌身份验证,代码永远不会到达 Oauth2 中的回调函数。

有人知道我做错了什么或缺少什么吗?我将非常感谢任何建议或示例。

【问题讨论】:

  • 你能在 google web 检查器中显示你的重定向 url,似乎是因为这个配置:registration: askToLinkOrCreateAccountUri: /oauth2/ask 尝试打开这个 url,但最好在登录前捕获你的重定向页面.因为重定向到登录页面 99% 意味着 Spring Security 拒绝了某些请求
  • 我希望这就是你的意思。该链接应该将用户重定向到谷歌服务器,但不起作用。 &lt;a href="/spring-security-o-auth2/authenticate?provider=google" provider="google"&gt;Google&lt;/a&gt; 并且 /oauth2/ask 用于在应用程序从谷歌服务器获得响应后重定向。至少我认为它是有效的。
  • 您是否检查过“/spring-security-o-auth2/authenticate”网址是否对世界开放?

标签: spring grails oauth-2.0 google-login


【解决方案1】:

您是否添加了 OAuthID 作为插件所需的参数,如下所示?

grails.plugin.springsecurity.oauth2.domainClass = 'myPackage.OAuthID'

【讨论】:

  • 在 cmets 中提出您的疑问/查询,不要仅凭假设回答问题。
  • 是的,我的 application.groovy 中有这个
猜你喜欢
  • 2015-04-17
  • 2017-10-22
  • 2015-11-09
  • 2017-10-01
  • 2023-03-06
  • 2015-04-04
  • 2018-08-01
  • 2013-12-22
相关资源
最近更新 更多