5

我试图在我的应用程序中使用Google应用程序引擎获取spring security oauth2安装程序。一切似乎本地正常工作,但是当我部署到应用程序引擎的事情开始打破。在我通过谷歌身份验证后,将其转发给白标错误页面。在控制台中我看到这样的错误:在Google App Engine上启用Oauth2sso

http://my-application.appspot.com/login?state=t…m&session_state=8b67f5df659a8324430803973b9e1726e39fd454..1ae3&prompt=none 
401 (Unauthorized) 

设置我的身份验证与此application.yml文件:

security: 
    oauth2: 
client: 
    clientId: client-key 
    clientSecret: secret-key 
    accessTokenUri: https://www.googleapis.com/oauth2/v4/token 
    userAuthorizationUri: https://accounts.google.com/o/oauth2/v2/auth 
    clientAuthenticationScheme: form 
    scope: 
    - openid 
    - email 
    - profile 
    - https://www.googleapis.com/auth/cloud-platform 
resource: 
    userInfoUri: https://www.googleapis.com/oauth2/v3/userinfo 
    preferTokenInfo: true 

我的安全配置看起来somethign像这样:

@Override 
protected void configure(HttpSecurity http) throws Exception { 
    http.csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse()) 
     .and() 
      .authorizeRequests() 
      .antMatchers("/static/**").permitAll() 
      .antMatchers("/**").hasAuthority("ROLE_ADMIN") 
      .anyRequest().authenticated() 
     .and() 
      .exceptionHandling() 
      .accessDeniedPage("/403"); 
} 

我有在Google凭据页面上配置了Oauth ID,以允许授权的javascript来源为:

http://my-application.appspot.com 
https://my-application.appspot.com 
http://localhost:8080 

与经授权的重定向URI来:

http://my-application.appspot.com/login 
https://my-application.appspot.com/login 
http://localhost:8080/login 

任何想法,为什么我可能会得到授权错误,当我部署到GAE?

感谢,

克雷格

+0

你确定你正在尝试与有 “ROLE_ADMIN” 权威认证用户? –

+0

积极。我试图剥离出来,只留下所有页面上的oauth身份验证,它仍然给出相同的错误。 – craigtb

+0

如果可能,您可以在GitHub上共享一个最小的,可重现的示例项目吗? –

回答

2

你的问题是关于授权的,也许错过了完全授权的应用程序,如您client_secret.json移动到你的工作目录的一步。

https://developers.google.com/drive/v3/web/quickstart/java#step_1_turn_on_the_api_name

步骤1:打开驱动器API

  1. 使用此向导来创建或谷歌 开发者控制台中选择一个项目,并自动打开API。点击 继续,然后转到凭据。在将凭据添加到 项目页面上,单击取消按钮。

    1. 在页面顶部,选择OAuth许可屏幕选项卡。选择 电子邮件地址,如果尚未设置产品名称,请输入产品名称,然后单击保存按钮 。选择凭证选项卡,单击创建凭证按钮并选择OAuth客户端ID。

    2. 选择应用程序类型其他,输入名称“Drive API 快速入门”,然后单击创建按钮。

    3. 单击确定关闭生成的对话框。

    4. 单击 客户端ID右侧的file_download(下载JSON)按钮。

    5. 将此文件移动到您的工作目录并重命名为 client_secret.json。

有用的链接: GCM http 401 authorization error

+0

这是通过仅使用一个实例解决的。它SEEMS身份验证不通过服务器。尚未有机会进行调查。 – craigtb