为什么 Google 的 OpenID 实现的 ID 会发生变化?

2024-04-16

我正在尝试为 Web 应用程序实现 OpenId 登录。每当新用户通过 OpenId 登录时,我都会在系统上创建一个新用户,并在数据中存储他们的 openid URL,以便下次他们使用该用户登录时。

我正在使用 Gmail OpenID 对此进行测试,问题是每次我执行此操作时,Google 都会发送不同的 openid URL,即https://www.google.com/accounts/o8/id?id=SomethingThatChangesFromTimeToTime https://www.google.com/accounts/o8/id?id=SomethingThatChangesFromTimeToTime

当然,我无法判断这是否是新用户。我有点困惑:openid 标识符不应该始终保持不变吗?


Google 的 OpenID 标识符或多或少是多个数据的哈希表示,包括请求来自的主机(更准确地说是openid.realm发送给提供者的参数)。因此,如果您的主机不时发生变化(例如端口和IP地址发生变化),那么ID也会不时发生变化。 StackOverflow 也使用了解决此问题的方法。检查这些帖子:

  • OpenID,一年后 https://blog.stackoverflow.com/2010/04/openid-one-year-later/
  • Google 的 OpenID 每个域都是唯一的 https://blog.stackoverflow.com/2009/04/googles-openids-are-unique-per-domain/

以下是谷歌常见问题解答摘录:

问:OpenID 规范指出openid.realm是可选的,如果未提供,Google 应使用openid.return_to改为网址。那行得通吗?

答:它会起作用,因为协议将成功完成。但如果你的return_to网址是这样的www.example.com/authenticate?style=openid-federated_login,您要求我们提示用户批准并信任您网站上的特定地址,这对用户不友好。另外,如果您省略openid.realm参数,您将永远无法更改您的return_toURL:它还会隐式更改您的 Google 帐户用户的领域和 URL 标识符。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 Google 的 OpenID 实现的 ID 会发生变化? 的相关文章

  • Google OpenId Connect 迁移:在 ASP.NET 应用程序中获取 openid_id

    我已经阅读了大量的 Google 文档和 SO Q A 但没有运气 我想知道是否有人按照 Google 的建议成功使用了 OpenId 到 OpenId Connect 迁移 这就是我们以前所做的 IAuthenticationRespon
  • 我应该使用 OpenId 的哪个 Erlang 实现(如果有)?

    我需要 OpenId 协议的 Erlang 实现 我发现了以下内容 但这似乎是一个处于早期阶段的项目 http code google com p erlopenid http code google com p erlopenid 关于我
  • OpenID:如何将多个 OpenID 帐户最佳地关联到一个用户?

    我是 openID 的新手 我花了很多时间思考让用户选择使用各种启用 OpenID 的帐户登录的最佳实践是什么 我必须进一步澄清 我的系统不是一个只需要简单的 一次性身份验证 来进行博客发布的系统 而是一个像社交网站一样的完整系统 用户总是
  • ASP.NET 和 OWIN Cookie Azure Open ID 不起作用

    我尝试使用 OpenID 与 Azure AD 连接 并且使用教程中的确切代码https learn microsoft com en us azure active directory develop tutorial v2 asp we
  • 带 www 或不带 www 的默认 URL 有何优缺点?

    我们需要将默认 URL 设置为唯一名称 如果是 www 则没有前缀 反之亦然 因此要做出的决定是坚持使用 www 或不使用前缀 没有为所有子域设置前缀 cookie 它还有什么其他缺点 还是好处 基本上我们需要 OpenID 这个 因为如果
  • 如何使用 OAuth2 / OpenID Connect 与 UserService?

    我正在 Google App Engine 上运行多个应用程序 我使用 UserService 进行身份验证 以便能够代表用户发送电子邮件等 并使用 OAuth2 进行 API 授权 我现在正尝试在 Google Apps Marketpl
  • 使用 DotNetOpenAuth 时,Azure 开发结构因 SocketException 崩溃

    我正在尝试使用 DotNetOpenAuth OpenID 身份验证在 Windows Azure Dev Fabric 下运行 ASP NET MVC 2 网站 Azure Dev Fabric 本身反复崩溃 dfloadbalancer
  • Django + Google SSO openid

    我想要我的申请http app acquee com designer http app acquee com designer接受谷歌帐户作为登录 我找到了一堆 django 库 但大多数都是在我不使用的现有 Django 身份验证系统之
  • 将 OpenID 与 Zend Framework 结合使用

    我希望我的网站能够完全执行 Stackoverflow 使用 openId 所做的操作 我正在梳理资料来源 之前我也曾在 facebook 上这样做过 但是 OpenID 方面没有取得太大进展 我想做的只是检测是否有人登录了谷歌 如果他们获
  • ASP.NET MVC 5 中的“通用”OpenID

    我尝试了 ASP NET MVC 5 中的新身份验证功能 我之前使用过DotNetOpenAuth 我知道内置的 Google 提供程序使用 OpenID 1 并且工作正常 但我想在身份验证时使用我自己的 OpenID 提供程序 不幸的是
  • 如何为 mvc 应用程序中的所有控制器启用 ssl

    我有一个 MVC 5 应用程序 并且安装了 ssl 证书 现在正在使用 https 连接 但在我的代码中 我必须在 homecontroller 上设置 requirehttps 属性 如下所示 RequireHttps public cl
  • IDX10501:签名验证失败。无法匹配键

    请帮助我了解 ASP netcore 应用程序和 netcore Kestrel 托管应用程序的 JWT 令牌验证之间的区别 有两个应用程序使用源代码验证令牌 如下所示 public static IServiceCollection Ad
  • 使用 AppAuth 在 swift4 中进行身份验证时会显示附加警报

    我在用AppAuth0 90 0 用于使用外部身份验证服务器进行身份验证 用户可以在其中登录 以便应用程序接收适当的身份验证令牌 最近 升级到 swift 4 后 在发送到身份验证服务器之前 我收到以下警报 应用程序名称 想要使用 exte
  • MSN 是 OpenID 提供商吗?

    MSN 是 OpenID 提供商吗 如果是这样 您知道 URL 是什么样的吗 我正在尝试将 MSN 添加到具有用于登录网站的特殊按钮的提供商列表中 Microsoft 有一个附加到 Windows Live ID 的 OpenID 服务目前
  • 通过 Curl OpenId

    如何使用 Curl 进行基于 OpenId 的身份验证 首先我能做到吗 问候 阿拉巴克什 我想你正在谈论curl命令行 而不是库 我没有尝试过 但是根据我对OpenID和curl的了解 应该是可以的 但是 还没有完全自动化 如果您想要真正轻
  • 提示用户输入密码 - Google OpenID Connect

    我们正在尝试将 Google 的 OpenID Connect 用于商业网络应用程序 但担心用户会使应用程序保持打开状态 并且未经授权的用户将登录 因为用户仍然登录到 Google 因此 OpenID Connect 只是让他们直接登录 W
  • 从 OpenID 提供商检索电子邮件地址的通用参数

    在我的网站中 我使用基于 OpenID 的身份验证 我正在向 OpenID 提供商请求 电子邮件地址 问题是每个提供商在身份验证后在 GET 响应中以自己的参数发送电子邮件地址 我列出了我所看到的三个 堆栈交换 openid alias3
  • OpenID,如何开发提供商

    目前我正在开发一些基础设施 并且已经实现了自己的 RESTful 身份验证机制 现在我想也许我不应该走这条路并使用行业标准 因此与我的项目的互操作性在身份验证和授权方面可能很琐碎并且更容易理解 查了一些文章后googling在 Stacko
  • 身份服务器流程

    IdentityServer 支持不同的 OpenId Connect 流 这些流定义在Flows https github com IdentityServer IdentityServer3 blob 4a44a9f03879c85bb
  • 本地主机上使用 DotNetOpenAuth 的 OpenID 提供程序

    我在本地运行 DotNetOpenAuth 示例提供程序 它似乎可以通过 Web 浏览器正确处理请求 我可以在调试器中单步执行授权处理程序 我有一个项目可以通过 Google 和其他提供商进行身份验证 但无法通过示例提供商进行身份验证 示例

随机推荐