Назад | Перейти на главную страницу

Провайдер OpenID, использующий Apache SSL / FakeBasicAuth?

Я хотел бы настроить поставщика OpenID для нашей группы, который мы можем использовать для входа во внутренние и внешние службы, поддерживающие OpenID (например, stackoverflow.com).

У всех наших пользователей есть сертификаты X.509, выданные нашим центром сертификации, поэтому я думаю, что идеальным решением было бы использовать это для их аутентификации (т.е. провайдер не должен запрашивать пароль). Может быть, Apache FakeBasicAuth сработает, чтобы извлечь имя пользователя из сертификата SSL-соединения?

Какое программное обеспечение лучше всего использовать? Предпочтительно открытый исходный код.

Хорошо, я получил эту работу, используя:

В конфигурации 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 для идентификации пользователя, а затем извлекает его для идентификации пользователя и проверки его.