401尝试使用谷歌身份提供商登录Openshift 4.5时未经授权



我最近部署了一个4.5版本的OKD集群,一切似乎都很好,但我无法让谷歌身份提供程序用于登录。我按照这里的指示做了,但没有成功。当我尝试使用我的公司谷歌身份登录时,我会收到一条非常常见的错误消息:

登录错误

我最终得到了以下OAuth配置:

spec:
identityProviders:
- google:
clientID: <my-ID>.apps.googleusercontent.com
clientSecret:
name: google-secret
hostedDomain: <company domain>
mappingMethod: claim
name: googleidp
type: 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": 

我找不到未经授权的错误的原因,所以非常感谢您的帮助。

在谷歌云控制台而不是开发人员控制台中做完全相同的事情,最终实现了这一点。所以OKD平台没有问题。

https://console.developers.google.com

https://console.cloud.google.com

在开发人员控制台中创建项目时,会忽略一些设置。我发现我必须在第一个项目中添加谷歌云API,但这还不足以使其发挥作用,所以我将只使用新项目,因为我没有更多的时间投资于此。

最新更新