межсерверная аутентификация с помощью Jboss и kerberos - PullRequest
0 голосов
/ 10 сентября 2018

Мы пытаемся реализовать единый вход в Kerberos для наших экземпляров Jboss EAP 6.4 (Java 1.8).Получил большинство вещей для работы.Может соединиться с клиентом Java и сетью.Но у нас есть удаленное исходящее соединение с другим экземпляром Jboss, который мы не можем заставить работать.До того, как мы изменили на Kerberos (ранее использовался Ldap), это работало путем установки имени пользователя и области безопасности в конфигурации для соединения с существующим пользователем.

Предыдущая конфигурация для первого экземпляра jboss:

<remote-outbound-connection name="ejb-out-con" outbound-socket-binding-ref="ejb-out" username="admin" security-realm="ejb-admin-realm">
    <properties>
        <property name="SSL_ENABLED" value="false"/>
    </properties>
</remote-outbound-connection>

Область безопасности, использованная выше:

<security-realm name="ejb-admin-realm">
    <server-identities>
        <secret value="somepassword"/>
    </server-identities>
</security-realm>

Код, используемый для получения ejb из удаленного субдомена, где аргумент для поиска - это имя пакета + класса:

// environment contain java.naming.factory.url.pkgs=org.jboss.ejb.client.naming
InitialContext ctx = new InitialContext(environment);
CaseInbox caseInbox = (CaseInbox) ctx.lookup("ejb:sub-domain.ear/subservice/SubCaseInboxBean!" + class);

Но: после переключения на Kerberos имя пользователя и область безопасности , по-видимому, не используются на соединении вторичного сервера с сервером, и мы вошли в систему как анонимный пользователь.Клиент на (первом) сервере работает, но при следующем переходе весь пользовательский контекст теряется.Когда мы отлаживаем, мы видим, что для основного атрибута в SecurityContext задана строка случайного числа.

SecurityContextAssociation.getPrincipal() - это что-то вроде a77bfaf6-97e2-47f0-aa2c-bf212ffc348c .

Пробовал все виды различных Опции XNIO : SSL_ENABLED , SSL_STARTTLS , SASL_POLICY_NOANONYMOUS , SASL_POLICYTNOP, SASL_DISALLOWED_MECHANISMS с разными значениями, но ничего не работает.

Пример:

<remote-outbound-connection name="ejb-out-con" outbound-socket-binding-ref="ejb-out" username="admin" security-realm="ejb-admin-realm">
                    <properties>
                        <property name="SSL_ENABLED" value="true"/>
                        <property name="SSL_STARTTLS" value="false"/>
                        <property name="SASL_POLICY_NOANONYMOUS" value="false" />
                        <property name="SASL_POLICY_NOPLAINTEXT" value="true" />
                </remote-outbound-connection>

Кто-нибудь знает, возможен ли такой подход (с использованием Kerberos и удаленного исходящего трафика)-связность)?И если это так, как?Нужен ли нам более новый Jboss?Совершенно другой подход?Перехватчики?Потратил часы на поиск проблемы и документации.Но ничего не помогло.

PS Это мой первый вопрос stackoverflow.Надеюсь, я все понял правильно.:)

...