Як сказати mod_auth_kerb виконувати свою роботу, незважаючи на те, що "не потрібен дійсний користувач"


11

Я реалізував аутентифікацію SSO за допомогою mod_auth_kerb на Apache. Мій конфігурація виглядає так:

<Location /login/ >
    AuthType Kerberos
    AuthName "Kerberos Login"
    KrbMethodNegotiate on
    KrbAuthoritative on
    KrbVerifyKDC on
    KrbAuthRealm D.ETHZ.CH
    Krb5Keytab /etc/HTTP.keytab
    KrbSaveCredentials on
    RequestHeader set KERBEROS_USER %{REMOTE_USER}s
</Location>

Моя проблема полягає в тому, що без цього require valid-usermod_auth_kerb навіть не намагається перевірити автентифікацію користувача і в KERBEROS_USERкінцевому підсумку є (null). Якщо я додаю require valid-user, користувач автоматично перевіряє автентифікацію, якщо браузер підтримує його, але йому відображається негарна форма модального входу (ala HTTP Basic Auth), якщо браузер не підтримує переговори Kerberos.

Що я хочу досягти, це те, що якщо користувач відвідує /login/, mod_auth_kerb намагається перевірити автентифікацію користувача через Kerberos Negotiate. Якщо це не вдається, користувачеві буде представлена ​​нормальна форма входу в HTML.

Чи можна налаштувати Apache / mod_auth_kerb таким чином?


Якщо ви не можете подати форму для входу та відповідне поводження з помилками, це правильна (очікувана) поведінка.
BillThor

Відповіді:


12

Я робив це колись, коли створив простий інструмент з однозначним підписом (щоб об'єднати Kerberos з mod_auth_tkt). Це вимагало трохи шикарного фарбу:

  • / webauth / login захищено require valid-userдирективою. Якщо хтось пов’язаний з дійсними обліковими записами Kerberos, ми отримали їх ім’я користувача від REMOTE_USER, дали їм cookie для автентифікації та надіслали їх у дорогу.

  • Конфігурація Apache використовувала ErrorDocumentзапит для перенаправлення неаутентифікованих користувачів на / webauth / requ_authentication:

    ErrorDocument 401 / webauth / requ_authentication

    Це буде виконувати такі дії:

    • Поверніть код результату 401 (як правило, ErrorDocuments їдять ваш результат результату) та
    • Представте форму для входу.
  • Форма для входу зробить саме те, що ви очікуєте: подайте форму користувача / ім’я користувача / пароль, підтвердіть те саме, а потім надайте їм авторське cookie.


+1 для цікавого рішення.
Сем Галіке

чудово, це прекрасно працює!
Бенджамін Вольвенд
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.