Oauth
嘗試使用 Google 身份提供商登錄 Openshift 4.5 時出現 401 Unauthorized
我最近部署了一個 4.5 版 OKD 集群,一切似乎都很好,但我無法讓 Google 身份提供程序用於登錄。我按照此處的說明進行操作,但沒有成功。當我嘗試使用我的公司 google 身份登錄時,我收到一條非常通用的錯誤消息:
我最終得到了以下 OAuth 配置:
spec: identityProviders: - google: clientID: <my-ID>.apps.googleusercontent.com clientSecret: name: google-secret hostedDomain: <company domain> mappingMethod: claim name: googleidp type: Google
我也按照描述設置了Google項目。剛剛創建了 Oauth2.0 憑據,回調 URL(這是正確的,因為我在同意螢幕後返回 OKD),沒有額外的同意範圍;只是個人資料、電子郵件和 openid,OKD 不請求任何其他範圍。該項目設置為內部,因此只有公司使用者可以登錄。
經過一些調查後,我設法增加了 oauth-openshift pod 的詳細程度,以下是失敗嘗試的日誌中顯示的內容:
1 handler.go:156] Got auth data I0929 15:30:10.036799 1 round_trippers.go:423] curl -k -v -XPOST -H "Content-Type: application/x-www-form-urlencoded" -H "Accept: application/json" 'https://www.googleapis.com/oauth2/v3/token' I0929 15:30:10.071829 1 round_trippers.go:443] POST https://www.googleapis.com/oauth2/v3/token 401 Unauthorized in 35 milliseconds I0929 15:30:10.071871 1 round_trippers.go:449] Response Headers: I0929 15:30:10.071879 1 round_trippers.go:452] Server: scaffolding on HTTPServer2 I0929 15:30:10.071885 1 round_trippers.go:452] Cache-Control: private I0929 15:30:10.071891 1 round_trippers.go:452] X-Content-Type-Options: nosniff I0929 15:30:10.071897 1 round_trippers.go:452] Vary: Origin I0929 15:30:10.071902 1 round_trippers.go:452] Vary: X-Origin I0929 15:30:10.071909 1 round_trippers.go:452] Vary: Referer I0929 15:30:10.071915 1 round_trippers.go:452] Date: Tue, 29 Sep 2020 15:30:10 GMT I0929 15:30:10.071920 1 round_trippers.go:452] Alt-Svc: h3-Q050=":443"; ma=2592000,h3-29=":443"; ma=2592000,h3-27=":443"; ma=2592000,h3-T051=":443"; ma=2592000,h3-T050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43" I0929 15:30:10.071926 1 round_trippers.go:452] Content-Type: application/json; charset=utf-8 I0929 15:30:10.071934 1 round_trippers.go:452] X-Xss-Protection: 0 I0929 15:30:10.071939 1 round_trippers.go:452] X-Frame-Options: SAMEORIGIN I0929 15:30:10.072004 1 handler.go:176] Error getting access token: Unauthorized E0929 15:30:10.072031 1 errorpage.go:26] AuthenticationError: Unauthorized I0929 15:30:10.072428 1 httplog.go:90] verb="GET" URI="/oauth2callback/googleidp?state=<token>&code=<token>&scope=email%20profile%20openid%20https://www.googleapis.com/auth/userinfo.email%20https://www.googleapis.com/auth/userinfo.profile&authuser=0&hd=<companydomain>&prompt=consent" latency=35.835162ms resp=200 UserAgent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36" srcIP="10.129.2.28:49228":
我找不到 Unauthorized 錯誤的原因,因此非常感謝任何幫助。
在Google云控制台而不是開發者控制台中做同樣的事情最終使它工作。所以OKD平台沒有問題。
https://console.developers.google.com
與
https://console.cloud.google.com
在開發者控制台中創建項目時,一些設置被忽略了。我發現我必須在第一個項目中添加Google云 API,但這還不足以讓它工作,所以我將只使用新項目,因為我沒有更多時間在這方面進行投資。