使用不同的redirect_uri和openid.realm参数从Google OpenID 2.0迁移到OpenID Connect

时间:2014-08-28 04:07:10

标签: oauth-2.0 google-oauth acs google-openid openid-connect

我正在从Google OpenID 2.0迁移到OpenID Connect。我目前正在使用Microsofts ACS,它使用Googles折旧的OpenID 2.0进行身份验证。这意味着我的领域自动设置为“https://mywebsite.accesscontrol.windows.net:443/v2/openid”。

ACS没有升级计划,因此我已开始直接与Google OpenID Connect集成。我正在关注Googles migration documentation,它说我可以添加openid.realm参数(设置为OpenID 2.0使用的域),然后获取映射现有用户帐户所需的openid_id。此外,它表示redirect_uri 需要与openid.realm相同。我想出于安全原因。

所以我的问题是我无法将重定向uri设置为与领域相同,因为领域是ACS端点,例如

https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=id.apps.googleusercontent.com&redirect_uri=http%3A%2F%2Fmywebsite.com%3A2018%2F&scope=openid%20profile%20email&state=state&openid.realm=https%3A%2F%2Fmywebsite.accesscontrol.windows.net%3A443%2Fv2%2Fopenid

我尝试将它们设置为不同但我收到错误

  

'Realm与redirect_uri / origin不匹配。错误代码:5'

Google计划支持此类案例吗?

有关如何解决这个问题的想法吗?

1 个答案:

答案 0 :(得分:0)

老问题,但如果仍然很重要,我认为Google docs实际上说:

"找到您的应用程序redirect_uri并进行更改(如有必要),使其与您的OpenID 2.0 openid.realm值匹配,根据匹配规则section 9.2 of the OpenID 2.0 spec"

归结为域匹配,redirect_uriopenid.realm中路径的子路径(如果有的话)。

由于您的openid.realm包含了一条路径,我认为您已经搞砸了,您将不得不在服务器中设置某种重定向以将旧的redirect_url映射到您的新路。值得庆幸的是,在我的情况下,我可以将redirect_url设置为任何新路径,因为我的openid.realm只有一个域名。