所以我目前正在尝试制作一个 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 的一个很好的替代品,它有据可查,符合规范,并且(相对)易于配置,很高兴知道!