所以我目前正在尝试建立一个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规范 - 特别是它们都没有为Yadis发现提供XRDS文档的头部链接。考虑到我的问题是网站无法在我提供的URL上发现OpenID端点,除了当我不使用SSL时基于HTML的发现就足够了,这似乎是相关的。
有没有人对我的问题究竟在哪里有任何见解?丢失的XRDS文档似乎应该是相关的,但它可能只是一个红色的鲱鱼。 Baring,如果有人知道Crowd或WSO2的一个很好的替代品,这是一个很好的文档,适用于规范,并且(相对)易于配置,很高兴知道!
答案 0 :(得分:3)
有一点需要注意的是,某些提供商的SSL证书不会被某些RP认为具有权威性的root权限签名。确保从所有RP都信任的证书中获取证书。
如果.NET是您的提供商的选项,请查看免费和开源的DotNetOpenAuth库,您可以自己托管该库,并由一些主要的OP使用,例如MySpace和{{3 }和netidme.com。它的OpenID 2.0实现已经完成,它支持美国政府ICAM OpenID 2.0 Profile,并且已经用于许多互操作性,安全性和一致性测试,并且它可以与OpenID 1.1和2.0 RP配合使用,因此您很可能拥有它与许多/所有RP的良好互操作性。它有一堆others你可以打开(就像你要求的那样需要HTTPS)。
(完全披露:我写了DotNetOpenAuth。)