我想为我们的组build立一个OpenID提供程序,我们可以使用它来login到内部和外部的OpenID感知服务(例如,stackoverflow.com)。
我们的用户都有我们的CA颁发的X.509证书,所以我认为理想的解决scheme是使用它来validation它们(即提供者不应该要求input密码)。 也许Apache FakeBasicAuth会从SSL连接的证书中提取用户名?
什么是最好的软件使用? 开源首选。
好的,我使用这个工作:
在Apacheconfiguration中,我做了这个(注:最后没有使用FakeBasicAuth):
SSLCACertificateFile /.../myOrgCA.pem SSLVerifyClient require SSLVerifyDepth 1 SSLOptions +StdEnvVars
编辑action_default()将用户redirect到https地址(如果通过纯http访问的话)。 普通的http地址是你在<link rel="openid.server">发布的地址。
更改getLoggedInUser()以从$_SERVER['SSL_CLIENT_S_DN_Email']提取用户名。
您也可以编辑doAuth()以类似的方式提供电子邮件地址或全名。
请注意,这是一件多么安全的事情,但是我们将它用于价值相对较低的站点(论坛,错误跟踪器等)。
我自己也考虑过同样的事情,经过一番研究,我能find的最好的答案就是你所说的 – Apache运行mod_ssl,FakeBasicAuth来标识用户,然后提取标识用户并validation它们。