我想为我们的组设置一个 OpenID 提供程序,我们可以使用它来登录内部和外部的 OpenID 感知服务(例如 stackoverflow.com)。
我们的用户都有我们的 CA 颁发的 X.509 证书,所以我认为理想的解决方案是使用它来验证他们(即提供商不应该要求输入密码)。也许 Apache FakeBasicAuth 可以从 SSL 连接的证书中提取用户名?
什么是最好的软件?开源优先。
我想为我们的组设置一个 OpenID 提供程序,我们可以使用它来登录内部和外部的 OpenID 感知服务(例如 stackoverflow.com)。
我们的用户都有我们的 CA 颁发的 X.509 证书,所以我认为理想的解决方案是使用它来验证他们(即提供商不应该要求输入密码)。也许 Apache FakeBasicAuth 可以从 SSL 连接的证书中提取用户名?
什么是最好的软件?开源优先。
好的,我得到这个工作使用:
在 Apache 配置中,我是这样做的(注意:最后没有使用 FakeBasicAuth):
如果通过纯 http 访问,编辑 action_default() 以将用户重定向到 https 地址。纯 http 地址是您在
<link rel="openid.server">
.更改 getLoggedInUser() 以从中提取用户名
$_SERVER['SSL_CLIENT_S_DN_Email']
。您还可以编辑 doAuth() 以类似方式提供电子邮件地址或全名。
请注意确保这一切的安全性,但我们将其用于价值相对较低的网站(论坛、错误跟踪器等)。
我自己也考虑过同样的事情,经过一些研究,我能找到的最佳答案与您所建议的完全一样——Apache 运行 mod_ssl,FakeBasicAuth 来识别用户,然后提取它来识别用户并验证他们。