8

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

ACS 没有升级计划,因此我已开始直接与 Google OpenID Connect 集成。我正在关注Google 的迁移文档,该文档说我可以添加一个 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

我尝试将它们设置为不同,但出现错误

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

Google 是否计划支持此类案例?

关于如何解决这个问题的任何想法?

4

1 回答 1

0

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

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

这归结为域匹配,并且redirect_uri是 中路径的子路径(openid.realm如果有的话)。

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

于 2015-02-23T11:27:38.220 回答