2

所以我目前正在尝试制作一个 OpenID 提供程序。我尝试过使用两个基于 Java 的 OpenID 服务器包——Atlassian 的 Crowd 和 WSO2 Identity Server。现在,在我的实现中,安全性是必须的,这意味着使用 SSL 并拥有基于 HTTPS 的 OpenID。现在,对于 WSO2 和 Crowd,大量站点根本无法使用提供的 OpenID。在测试的 20 个站点中,8 个使用 Crowd 失败,10 个使用 WSO2 失败。这种高故障率是不能接受的。几乎每个有问题的站点都声称他们找不到 OpenID 端点。

当我使用不带 SSL 的 OpenID(所以基于 HTTP 的 OpenID)时,网站突然变得更加合规,只有两个失败了。我正在使用来自 AusCERT 的证书,所以问题不应该是由于自签名证书。

起初我认为这只是有大量 RP 根本不接受基于 HTTPS 的 OpenID 的问题。我尝试使用 Verisign 的基于 HTTPS 的 OpenID 登录到我失败的相同站点,但它确实有效。仔细观察 WSO2 和 Crowd,我发现两者都完全符合 OpenID 2.0 规范——特别是,它们都没有在头部提供指向 XRDS 文档的链接以供 yadis 发现。考虑到我的问题是站点无法在我提供的 URL 上发现 OpenID 端点,这似乎是相关的,除了当我不使用 SSL 时,基于 HTML 的发现就足够了。

有人对我的问题真正出在哪里有任何见解吗?丢失的 XRDS 文件似乎应该是相关的,但它可能只是一个红鲱鱼。尽管如此,如果有人知道 Crowd 或 WSO2 的一个很好的替代品,它有据可查,符合规范,并且(相对)易于配置,很高兴知道!

4

1 回答 1

3

需要注意的一件事是,某些提供商的 SSL 证书未由某些 RP 认为具有权威性的根权限签名。确保从所有 RP 都信任的证书中获取证书。

如果 .NET 是您的提供商的一个选项,请查看免费和开源的DotNetOpenAuth库,您可以自己托管该库,并被MySpacenetidme.com一些主要 OP 使用。它的 OpenID 2.0 实现已经完成,它支持美国政府的 ICAM OpenID 2.0 Profile,并已用于许多互操作性、安全性和合规性测试,并且它适用于 OpenID 1.1 和 2.0 RP,因此您很有可能拥有与许多/所有 RP 的良好互操作性。它有一堆额外的安全功能,你可以打开它们(比如你说的需要 HTTPS)。

(完全披露:我写了 DotNetOpenAuth。)

于 2009-12-22T16:42:15.437 回答