16

我看到 OpenID 登录随处可见,并决定我应该考虑在我的服务器上实现我自己的提供程序,这样我就可以控制我的信息和登录。

令人惊讶的是,这是相当复杂和困难的。

尽管许多站点允许 OpenID 登录(例如这个),但我发现了以下问题:

  1. 许多简单的“自己动手”的单一身份 OpenID 提供者解决方案现在都是蒸汽软件。
  2. OpenID 存在相当严重的持续安全问题:

http://en.wikipedia.org/wiki/OpenID#Security

  1. 许多 OpenID 提供者似乎已经消失(MyOpenID.com、getopenid.com 等)
  2. 该协议似乎随着先前版本的下降而不断变化(可能是由于安全问题?)

例如,2013 年 8 月关于使用 Google Plus/Profiles 作为代表的 SO 解决方案现在收到来自 Google 的错误,称今年 4 月 Google 将删除 OpenID 2.0 支持并替换为 OpenID Connect:

将 OpenID 委托给 Google(不是 Google Apps)

有没有人提供一个简单的 OpenID Connect单一身份提供者?查看 OpenID 的 OpenID 提供商软件列表,根本没有提到任何 OpenID Connect 解决方案,更不用说页面已经 4 年没有更新了!

http://wiki.openid.net/w/page/12995226/Run%20your%20own%20identity%20server

浏览所有这些信息,我真的很高兴几年前我搁置了在我的服务器上实施 OpenID 2.0 的计划,因为它看起来已经过时了,我想不出一个简单的方法来证明我的身份。令人惊讶的是,我不能只安装一个软件包并编辑一个配置文件就可以了。大多数更简单的实现都涉及安装和使用 PHP,它有自己的安全问题需要了解。

所以 - 任何是 OpenID 专家及其发展方向的人,谁能给我一些关于如何设置我的身份提供者的建议,或者是否值得困难?我很想控制我的信息和我的电子邮件地址的分发以及拥有一个永久的身份,但如果标准会不断变化,那么它并不是真正的永久。

4

3 回答 3

5

OpenID 2.0 已被弃用,就在今天,OpenID 基金会批准了OpenID 2.0 到 OpenID Connect 迁移指南

我不是 OpenID 方面的专家,但重要的是要知道 OpenID Connect与旧版本根本不同。特别是,它在 OAuth 之上运行,因此依赖方必须从服务提供者处获取 OAuth 凭据。

有一个规范允许 RP 自动获取这些 OAuth 凭据(称为动态客户端注册),但该规范被标记为“可选”,它在客户端库中没有得到广泛支持,我严重怀疑我们会看到很多应用程序实施动态客户注册。

向 OpenID Connect 的转变从用户和应用程序开发人员(更不用说较小的身份提供者)手中夺走了权力,并将其全部交给了大型的名牌服务提供商。所以不幸的是,设置您自己的个人 OpenID 提供程序的想法似乎不会成为未来的证明。

于 2015-04-17T03:43:28.847 回答
4

如果您想设置自己的 OpenID 提供程序,我可以建议您可能希望查看的两个可用选项。它们都是 PHP 解决方案。

第一个是最容易实现的phpMyID,它的所有者已弃用它,但它在GitHub 上再次崛起。我昨天使用 PHP 5.6.8 快速测试了这个。它只是两个 PHP 文件。

第二个称为SimpleID,是我目前使用的。我用它登录了许多网站,包括这个网站。

然而,OpenID Connect 也不是。我正在寻找一个解决方案,以便我可以升级(这个搜索让我想到了你的问题)。到目前为止,我发现的最佳候选者称为Gluu,但它似乎是一个庞然大物,我还没有尝试过。

SimpleID 有一个Trac 票证 和一个支持 OpenID Connect 的开发分支,但它似乎处于休眠状态。

我在搜索时发现的另一件有趣的事情是web 登录IndieAuth。不是 OpenID,但仍然很有趣。

于 2015-05-07T07:39:25.963 回答
0

未来会怎样,当然很难预测。

Google 已实施 OpenID Connect。他们已经实现了 Discovery,但作为一个通用的 OIDC IDP,如果没有动态注册,它就不是很有用,因为您仍然必须注册一个应用程序并获取密钥。恐怕这对他们有利,因为人们可能更喜欢谷歌登录,因此不关心基于用户提供的电子邮件或 URL 的 OIDC。

根据OpenID Certifications的说法,很少有人实施了动态注册,但它还很年轻,可能会发生变化。

真诚地希望完整的 OpenID Dyn​​amic 能够得到广泛采用,最好是被电子邮件提供商采用,这样我们就可以基于您的电子邮件进行单点登录,这是大多数人都能记住的,而不是一些晦涩的 http 端点。

我要为我自己的服务器做这个;node.js 中基于openid-connect的一个简单的小型 OIDC 和 webfinger 服务器。让它变得容易和广泛采用取决于我们,当我的迷你服务器可用时,我会在评论中放一个链接npm install:-)

于 2015-05-21T07:35:21.610 回答