Переключитесь с FORM на SPNE GO в WildFly - PullRequest
0 голосов
/ 19 февраля 2020

Я хочу переключить аутентификацию моего веб-приложения с аутентификации на основе форм на аутентификацию на основе Kerberos, но WildFly, похоже, полностью игнорирует мою прежнюю конфигурацию домена безопасности.

Изменение моей сети. xml с

<login-config>
    <auth-method>FORM</auth-method>
    <realm-name>myapp</realm-name>
    <form-login-config>
        <form-login-page>/faces/login.xhtml</form-login-page>
        <form-error-page>/faces/login_failed.html</form-error-page>
    </form-login-config>
<login-config>

на

<login-config>
    <auth-method>SPNEGO</auth-method>
    <realm-name>myapp</realm-name>
<login-config>

и изменение моего прежнего домена безопасности (не Elytron) на

<security-domain cache-type="default" name="myapp">
    <authentication>
        <login-module flag="required" code="org.jboss.security.negotiation.spnego.SPNEGOLoginModule">
            <module-option value="myapp-host-kerberos" name="serverSecurityDomain"/>
            <module-option value="useFirstPass" name="password-stacking"/>
        </login-module>
    </authentication>
</security-domain>
<security-domain cache-type="default" name="myapp-host-kerberos">
    <authentication>
        <login-module flag="required" code="org.jboss.security.negotiation.KerberosLoginModule">
            <module-option value="true" name="storeKey"/>
            <module-option value="true" name="useKeyTab"/>
            <module-option value="C:\Path_to_my_keytab_file" name="keyTab"/>
            <module-option value="HTTP/server@DOMAIN" name="principal"/>
            <module-option value="true" name="debug"/>
            <module-option value="true" name="doNotPrompt"/>
            <module-option value="true" name="refreshKrb5Config"/>
        </login-module>
    </authentication>
</security-domain>

со следующими системными свойствами (через standalone-conf .bat)

set JAVA_OPTS=%JAVA_OPTS% -Djava.security.krb5.conf=C:\Path_to_my_krb5.ini
set JAVA_OPTS=%JAVA_OPTS% -Dsun.security.krb5.debug=true
set JAVA_OPTS=%JAVA_OPTS% -Dsun.security.spnego.debug=true

и следующий jboss-web. xml

<?xml version="1.0" encoding="UTF-8"?>
<jboss-web xmlns="http://www.jboss.com/xml/ns/javaee">
    <security-domain flushOnSessionInvalidation="true">myapp</security-domain>
</jboss-web>

не работал ни на WildFly 15, ни на WildFly 18.

При доступе к защищенной странице браузер (Edge, Firefox) получает HTTP 401 с заголовком согласования и, похоже, передает учетные данные / билет, как и ожидалось. Но сервер не предоставляет доступ (и вместо этого продолжает отвечать 401). Кажется, что сервер даже не обращается к настроенному (устаревшему) домену безопасности вообще; по крайней мере, это то, во что я верю после попытки установить точки останова в модулях входа в систему, указав недопустимые параметры модуля (должно создавать предупреждение в журнале сервера) и даже изменив атрибут кода, чтобы он указывал на несуществующий класс.

Журнал сервера пуст и ничего не показывает, в частности никаких полезных выводов отладки Kerberos. SysInternals Process Monitor не сообщает о каких-либо попытках доступа к указанной конфигурации krb5 или файлам ключей.

Требуется ли SPNE GO использование Elytron в WildFly 15 или 18? Чего мне не хватает, чтобы WildFly хотя бы вызвал модуль входа?

...