нет основной рекламы пользователя TEIID JDBC в пользовательском переводчике - PullRequest
0 голосов
/ 22 мая 2018

У меня успешное соединение JDBC с TEIID с использованием билета Kerberos.Мне нравится получать участника по умолчанию, который находится в билете

Информация о билете: Кэш билета: KEYRING: постоянный: 6003: 6003 Основной участник по умолчанию: nfunke@FUNKE.HK

Действительный стартовый участник службы Expires21.05.2008 21:14:46 22.05.2008 21:14:44 krbtgt/FUNKE.HK@FUNKE.HK

но в функции выполнения переводчика я получаю только основнойиз службы, настроенной в источнике данных.

Код:

public void execute(String tableName, List<String> columns, Map<String, List<Object>> values, Subject subject, Limit limit) throws IonicTranslatorException{
.
.
    if (subject!=null) {
users = subject.getPrincipals();
        for(Principal p: users){
            log.warn("available subject: " + p.getName());
            log.warn("Type:" + p.getClass().getName());

, в результате я получаю:

..... доступную тему: HTTP /52.201.217.84
..... Тип: org.jboss.security.SimplePrincipal
..... доступная тема: роли
..... Тип: org.jboss.security.SimpleGroup
..... доступная тема: CallerPrincipal
..... Тип: org.jboss.security.SimpleGroup
..... доступная тема: HTTP/52.201.217.84@FUNKE.HK
..... Тип: javax.security.auth.kerberos.KerberosPrincipal

, но без "nfunke"

где бы я мог получить имя пользователя из контекста?

Белуw конфигурация домена в standalone.xml:

            <security-domain name="FUNKE.HK">
                <authentication>
                    <login-module code="SPNEGO" flag="requisite">
                        <module-option name="password-stacking" value="useFirstPass"/>
                        <module-option name="serverSecurityDomain" value="host"/>
                        <module-option name="removeRealmFromPrincipal" value="true"/>
                    </login-module>
                    <login-module code="com.sun.security.auth.module.Krb5LoginModule" flag="required" module="org.jboss.security.negotiation">
                        <module-option name="storeKey" value="true"/>
                        <module-option name="userKeyTab" value="true"/>
                        <module-option name="principal" value="HTTP/52.201.217.84@FUNKE.HK"/>
                        <module-option name="useKeyTab" value="true"/>
                        <module-option name="keyTab" value="/etc/krb5.keytab"/>
                        <module-option name="doNotPrompt" value="true"/>
                        <module-option name="debug" value="true"/>
                        <module-option name="useTicketCache" value="true"/>
                        <module-option name="refreshKrb5Config" value="true"/>
                        <module-option name="isInitiator" value="true"/>
                        <module-option name="delegationCredential" value="USE"/>
                        <module-option name="addGSSCredential" value="true"/>
                    </login-module>
                </authentication>
            </security-domain>

и да, я могу без проблем выполнять запросы

1 Ответ

0 голосов
/ 22 мая 2018

Если вы хотите делегировать источникам данных, сначала вам нужно определить «домен безопасности» в конфигурации источника данных.Затем вам нужно определить другой домен безопасности с помощью «login-module», как описано выше.См. Делегация Kerberos

.
...