Рейтинг:0

Kerberos работает, если он не был предварительно авторизован

флаг cn

Я перемещаю приложение с WebLogic на JBoss EAP 6.4, и оно почти работает. Проблема в том, что я могу заставить аутентификацию Kerberos работать, только если я играю со свойством isInitiator в моем standalone-full-ha.xml для spnego-server.

Если я устанавливаю isInitiator=true, то получаю сообщение об ошибке при запуске приложения "Информация перед аутентификацией недействительна".

Если я установлю isInitiator=false, то при переходе на страницу я получаю «Указан NTLM. Понижен до базовой аутентификации (и/или SSL), но переход на более раннюю версию не поддерживается».

Однако, если я затем вернусь к isInitiator=true после того, как он потерпел неудачу с false, он работает в течение дня.

На следующий день он возвращается к «Информация перед аутентификацией была недействительной». Мне нужно снова попытаться подключиться с isInitiator=false, чтобы он снова заработал.

Мой автономный-полный-ha.xaml выглядит так:

 <system-properties>
        <property name="java.net.preferIPv4Stack" value="true"/>
        <property name="org.apache.coyote.http11.Http11Protocol.SERVER" value=""/>
        <property name="java.security.auth.login.config" value="/app/jb-8443/login.conf"/>
        <property name="java.security.krb5.conf" value="/app/jb-8443/krb5.conf"/>
        <property name="sun.security.krb5.debug" value="true"/>
        <property name="jboss.security.disable.secdomain.option" value="true"/>
        <property name="javax.security.auth.useSubjectCredsOnly" value="false"/>
    </system-properties>
...
 <security-domain name="spnego-client" cache-type="default">
                    <authentication>
                        <login-module code="com.sun.security.auth.module.Krb5LoginModule" flag="required"/>
                    </authentication>
                </security-domain>
                <security-domain name="spnego-server" cache-type="default">
                    <authentication>
                        <login-module code="com.sun.security.auth.module.Krb5LoginModule" flag="required">
                            <module-option name="storeKey" value="true"/>
                            <module-option name="useKeyTab" value="true"/>
                            <module-option name="useTicketCache" value="false"/>
                            <module-option name="isInitiator" value="true"/>
                            <module-option name="keyTab" value="/app/jb-8443/krb5.keytab"/>
                            <module-option name="debug" value="true"/>
                            <module-option name="principal" value="[email protected]"/>
                            <module-option name="doNotPrompt" value="true"/>
                        </login-module>
                    </authentication>
                </security-domain>
                <security-domain name="com.sun.security.jgss.krb5.initiate" cache-type="default">
                    <authentication>
                        <login-module code="com.sun.security.auth.module.Krb5LoginModule" flag="required">
                            <module-option name="storeKey" value="true"/>
                            <module-option name="useKeyTab" value="true"/>
                            <module-option name="useTicketCache" value="false"/>
                            <module-option name="isInitiator" value="true"/>
                            <module-option name="keyTab" value="/app/jb-8443/krb5.keytab"/>
                            <module-option name="debug" value="true"/>
                            <module-option name="principal" value="[email protected]"/>
                            <module-option name="doNotPrompt" value="true"/>
                        </login-module>
                    </authentication>
                </security-domain>
                <security-domain name="com.sun.security.jgss.krb5.accept" cache-type="default">
                    <authentication>
                        <login-module code="com.sun.security.auth.module.Krb5LoginModule" flag="required">
                            <module-option name="storeKey" value="true"/>
                            <module-option name="useKeyTab" value="true"/>
                            <module-option name="useTicketCache" value="false"/>
                            <module-option name="isInitiator" value="true"/>
                            <module-option name="keyTab" value="/app/pyks0app/jb-8443/krb5.keytab"/>
                            <module-option name="debug" value="true"/>
                            <module-option name="principal" value="[email protected]"/>
                            <module-option name="doNotPrompt" value="true"/>
                        </login-module>
                    </authentication>
                </security-domain>

В файле login.conf есть:

com.sun.security.jgss.krb5.initiate {
    Требуется com.sun.security.auth.module.Krb5LoginModule
    doNotPrompt=истина
    Principal="[email protected]"
    useKeyTab = истина
    useTicketCache = ложь
    отладка = истина
    keyTab="/app/jb-8443/krb5.keytab"
    ключ хранилища = истина;
};

com.sun.security.jgss.krb5.accept {
    Требуется com.sun.security.auth.module.Krb5LoginModule
    doNotPrompt=истина
    Principal="[email protected]"
    useKeyTab = истина
    keyTab="/app/jb-8443/krb5.keytab"
    storeKey = правда
    useTicketCache = ложь
    инициатор = ложь
    обновитьKrb5Config=истина
    модуль Баннер = правда
    магазинпасс = истина;
};
spnego-клиент {
 Требуется com.sun.security.auth.module.Krb5LoginModule;
};
spnego-сервер {
 Требуется com.sun.security.auth.module.Krb5LoginModule
 storeKey = правда
 useKeyTab = истина
 useTicketCache = ложь
 keyTab="/app/jb-8443/krb5.keytab"
 отладка = истина
 Principal="[email protected]"
 не подсказывать=истина;
};

В развертывании WebLogic были только части spnego-client и spnego-server. Я добавил части com.sun.security.jgss.krb5.initiate и com.sun.security.jgss.krb5.accept, и после их добавления я смог подключиться с помощью трюка isInitiator flip.

Это можно обойти? Например, пропустить предварительную аутентификацию, если она не подключилась сегодня? Если что-то кешируется только на 24 часа, сохранить его дольше?

Нужны ли эти инициирующие и принимающие части поверх spnego-сервера?

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.