OpenID провайдер использует Apache SSL/FakeBasicAuth?
Я хотел бы настроить поставщика OpenID для нашей группы, который мы можем использовать для входа во внутренние и внешние службы, поддерживающие OpenID (например, stackoverflow.com).
У всех наших пользователей есть сертификаты X.509, выданные нашим ЦС, поэтому я думаю, что идеальное решение будет использовать их для их аутентификации (т.е. провайдер не должен запрашивать пароль). Может быть, Apache FakeBasicAuth будет работать для извлечения имени пользователя из сертификата SSL-соединения?
Какое программное обеспечение лучше всего использовать? Open Source предпочтительнее.
2 ответа
ОК, я получил это с помощью:
- Apache с SSL
- PHP OpenID библиотека
В конфигурации Apache я сделал это (примечание: в конце концов не использовал FakeBasicAuth):
SSLCACertificateFile /.../myOrgCA.pem SSLVerifyClient require SSLVerifyDepth 1 SSLOptions +StdEnvVars
Отредактируйте action_default(), чтобы перенаправить пользователя на адрес https, если доступ осуществляется через обычный http. Простой http-адрес - это тот, который вы публикуете в своем <link rel="openid.server">
,
Измените getLoggedInUser(), чтобы извлечь имя пользователя из $_SERVER['SSL_CLIENT_S_DN_Email']
,
Вы также можете отредактировать doAuth(), чтобы аналогичным образом указать адрес электронной почты или полное имя.
Обратите внимание, насколько это безопасно, но мы используем его для относительно недорогих сайтов (форумы, баг-трекеры и т. Д.).
Я сам рассмотрел то же самое, и лучший ответ, который я смог найти после некоторого исследования, был именно такой, как вы предлагали - Apache запустил mod_ssl, FakeBasicAuth для идентификации пользователя, а затем извлек его, чтобы идентифицировать пользователя и проверить его.