Единый вход Plone и CGI с использованием mod_auth_tkt

На пару вопросов были ответы, предлагающие использовать mod_auth_tkt, чтобы разрешить Plone 4 (Plone и интеграция Asp.Net, Используйте механизм аутентификации Plone для входа на другие сайты.) для аутентификации других веб-приложений, и, поскольку у меня есть пара CGI, которые уже прыгают через обручи для аутентификации через Plone, это кажется идеальным для моей цели. Тем не менее, я не могу найти много документации об использовании mod_auth_tkt в целом, и абсолютно ничего об использовании его с Plone.

У меня есть следующие проблемы.

  1. mod_auth_tkt ожидает общий «секрет». Примеры mod_auth_tkt показывают, что Apache получает это из файла конфигурации. Plone не делится своими секретами - так как же Apache узнает, что данный файл cookie Plone является действительным auth_tkt?
  2. какой URL-адрес можно использовать в конфигурации Apache TKTAuthLoginURL? [Я не уверен, что это жизненно важно, так как на данный момент я действительно заинтересован только в том, чтобы что-то вызывалось из внутри plone, а не напрямую как cgi]
  3. Apache ожидает, что файл cookie билета будет назван через TKTAuthCookieName (по умолчанию «auth_tkt»). Как это называет Plone? __ac?

person Auspex    schedule 07.03.2011    source источник


Ответы (2)


Документация по использованию mod_auth_tkt — это справочная страница, распространяемая вместе с исходным кодом.

Отвечая на ваши конкретные вопросы:

  1. В /Plone/acl_users/session. На вкладке Управление секретами задайте общий секрет. (Это описано в документации по настройке общего секрета с формой входа в IIS.) Вы должны установить тот же секрет в конфигурации Apache с помощью директивы TKTAuthSecret.

  2. Для Plone 4.0 (или Plone 3.x с plone.session 3.x) используйте /Plone/login_form. Для Plone 4.1 используйте /Plone/login, предполагая, что сайт Plone размещен в /Plone. Используйте /login_form или /login, если он размещен в корне.

  3. Plone по умолчанию использует _ac, поэтому используйте TKTAuthCookieName "_ac". (Имя cookie, которое использует Plone, устанавливается в настройках сеанса acl_users и настройках аутентификации cookie.)

Возможно, вам придется установить TKTAuthBackArgName "came_from", хотя я думаю, что Plone будет отступать от URL-адреса реферера, поэтому он может работать без него. И вам нужно будет установить флажок «Использовать алгоритм хеширования, совместимый с mod_auth_tkt» на вкладке настроек acl_users/session.

person Laurence Rowe    schedule 07.03.2011
comment
Спасибо Лоуренс. Я обнаружил, что документация находится на странице руководства, и в значительной степени понял 1 и 3, но я все еще вижу mod_auth_tkt=False в SessionPlugin. Я установил использовать алгоритм хеширования, совместимый с mod_auth_tkt, и попробовал как auth_tkt, так и __ac в имени файла cookie. На странице manage_secret отображается общий секрет (включен). - person Auspex; 07.03.2011
comment
В _getSigningSecret() self._shared_secret всегда имеет значение None, хотя я наблюдал, как он устанавливается с помощью отладчика в manage_setSharedSecret(). - person Auspex; 07.03.2011
comment
Остается ли флажок Использовать алгоритм хеширования, совместимый с mod_auth_tkt, на экране управления после того, как вы проверите его и сохраните? Регистрируются ли какие-либо ошибки при установке общего секрета? Я действительно не понимаю, как вы могли видеть свое поведение. - person Laurence Rowe; 08.03.2011
comment
О, решение - это то, чего я боялся... Я опубликую его как отдельный ответ. - person Auspex; 08.03.2011

Оказывается, что-то похоже на конфликт с pas.plugins.sqlalchemy. Я исследовал PPS, и хотя не кажется, что должно быть какое-то пересечение, на сайте, который я тестировал, был установлен PPS. Когда я перешел на сайт без PPS, установка флага "secret" и mod_auth_tkt дала желаемый эффект. Поскольку я, кажется, попал в роль обслуживающего персонала для pas.plugins.sqlalchemy, я думаю, это моя проблема :-)

Домо аригато, мистер Роу-бото!

person Auspex    schedule 08.03.2011