Выход из системы не работает с DIGEST-аутентификацией - PullRequest
0 голосов
/ 28 января 2019

Я установил Orbeon Forms 2018.2.201901010020 CE в Tomcat-8.5.37 и попытался использовать новую кнопку выхода из пользовательского меню - вход в систему работал уже в предыдущих выпусках orbeon.
Указание FORM в качестве метода аутентификации враздел входа в систему web.xml, все работает без сбоев.Но при использовании аутентификации FORM необходимо сохранять пароли в виде открытого текста, этого следует избегать.
Поэтому я попытался DIGEST в качестве метода аутентификации, который позволяет сохранять зашифрованные пароли.
Логин работаети пользовательское меню сообщает о вошедшем в систему пользователе.
Но выход из системы не делает сеанс недействительным.Вместо отображения страницы выхода из orbeon отображается домашняя страница бегуна форм, а в пользовательском меню пользователь по-прежнему отображается как вошедший в систему.
И, нажав еще раз кнопку выхода, все остается прежним: домашняя страница бегуна формотображается с уже вошедшим пользователем.

В properties-local.xml я вставил свойство для меню пользователя и для аутентификации контейнера:

  <property
    as="xs:boolean"
    name="oxf.fr.authentication.user-menu.enable"
    value="true"/>
  <property
    as="xs:string"
    name="oxf.fr.authentication.method"
    value="container"
  />

Пользователи и роли определены вtomcat_users.xml.

В web.xml я изменил шаблон URL в ограничении безопасности для бегуна форм с <url-pattern>/fr/auth</url-pattern> на <url-pattern>/fr/*</url-pattern>, поэтому tomcat запросил аутентификацию для всех fr страниц:

    <security-constraint>
        <web-resource-collection>
            <web-resource-name>Form Runner</web-resource-name>
            <!-- <url-pattern>/fr/auth</url-pattern> original -->
                 <url-pattern>/fr/*</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <role-name>orbeon-user</role-name>
        </auth-constraint>
    </security-constraint>

Для аутентификации DIGEST я использовал DIGEST в login-config web.xml и добавил CredentialHandler в области в server.xml.

        <login-config>
            <auth-method>FORM</auth-method>
            <!-- <auth-method>DIGEST</auth-method>   -->
            <form-login-config>
                <form-login-page>/fr/login</form-login-page>
                <form-error-page>/fr/login-error</form-error-page>
            </form-login-config>
        </login-config>
    <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
           resourceName="UserDatabase">
           <!-- <CredentialHandler
     className="org.apache.catalina.realm.MessageDigestCredentialHandler"
              algorithm="md5" saltLength="0" iterations="1" /> -->
    </Realm>

В тестах я впервые открыл страницу http://localhost/8080/orbeon/home/.Это не страница fr , поэтому она будет отображаться без запроса пароля.
Затем я выбрал приложение bookshelf .Это страница fr, поэтому всплывает страница для аутентификации.
При аутентификации FORM отображается страница входа orbeon: orbeon login
При аутентификации DIGEST отображается страница входа tomcat:
tomcat login

В обоих случаях после успешного входа отображается страница сводной книжной полки, а в пользовательском меню отображается зарегистрированный пользователь.
bookshelf summary page with user menu

При аутентификации DIGEST после нажатия кнопки выхода из системы следующая страница отображается вместо домашней страницы orbeon.Пользователь остается в системе, и имя пользователя отображается в меню пользователя.
При повторном нажатии кнопки выхода все остается прежним: домашняя страница бегунка формы отображается с уже вошедшим пользователем:
form runner home page after logout

Рядом находятся ссылки на два журнала orbeon:
orbeon.log для FORM аутентификации аутентификация в форме журнала orbeon
orbeon.log для DIGEST аутентификация orbeon log DIGEST аутентификация

Примечание.В журнале orbeon DIGEST я видел ошибки сломанной трубы, в журнале orbeon FORM я не видел этих ошибок.

Что мне нужно изменить, чтобы выход из системы также работал с аутентификацией DIGEST?

Большое спасибо за любые советы

1 Ответ

0 голосов
/ 30 января 2019

Короче, что я бы порекомендовал:

  1. Не используйте DIGEST в web.xml.Используйте FORM.Большинство веб-приложений используют своего рода аутентификацию на основе форм.
  2. Убедитесь, что используется HTTPS, а не обычный HTTP.
  3. Убедитесь, что используется область безопасности, которая не хранит пароли в открытом виде вбаза данных.Это не зависит от того, используете ли вы аутентификацию на основе форм или нет.
  4. При аутентификации BASIC невозможно легко выйти из системы.То же самое может быть в случае DIGEST.Я не уверен, что эта проблема стоит того, чтобы ее решить.

См. Также Базовое хранение пароля HTTP Basic auth более безопасно, чем Digest auth .Насколько я понимаю, DIGEST устарел и менее безопасен, чем правильно выполненная аутентификация на основе форм через HTTPS с правильным перевариванием паролей в вашей базе данных.

...