在 Google App Engine 上启用 Oauth2sso



我正在尝试在Google应用程序引擎中的应用程序上设置Spring Security oauth2。 一切似乎在本地都运行良好,但是当我部署到应用程序引擎时,事情开始崩溃。 我通过谷歌进行身份验证后,它将我转发到白标错误页面。 在控制台中,我看到此错误:

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

我用这个应用程序.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

我的安全配置如下所示:

@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");
}

我已经在谷歌凭据页面上配置了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,我可能会收到未经授权的错误?

谢谢

克雷格

您的问题是关于授权的,可能错过了完全授权应用程序的步骤,例如将 client_secret.json 移动到工作目录。

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

第 1 步:启用云端硬盘 API

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

    1. 页面顶部,选择"OAuth 同意屏幕"选项卡。 一个电子邮件地址,输入产品名称(如果尚未设置(,然后单击 保存按钮。选择凭据选项卡,单击创建 凭据按钮,然后选择 OAuth 客户端 ID。

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

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

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

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

有用的链接 : GCM http 401 授权错误

最新更新