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

bro*_*knz 8 google-openid oauth-2.0 acs google-oauth openid-connect

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

ACS没有升级计划,所以我已经开始直接与Google OpenID Connect集成.我正在关注Googles迁移文档,该文档说我可以添加一个 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
Run Code Online (Sandbox Code Playgroud)

我试过设置不同但我收到错误

'领域与redirect_uri/origin不匹配.错误代码:5'

Google计划支持这样的案例吗?

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

Tom*_*Tom 0

老问题,但如果它仍然重要,我认为谷歌文档实际上是说:

“根据OpenID 2.0规范第 9.2 节中的匹配规则,找到您的应用程序redirect_uri并更改它(如有必要),使其与您的 OpenID 2.0openid.realm值匹配”

这归结为域匹配以及redirect_uri中路径的子路径openid.realm(如果有的话)。

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