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