自定义转换器中没有用户主体广告TEIID JDBC

时间:2018-05-21 21:30:30

标签: kerberos redhat-datavirt

我使用kerberos票证与TEIID成功建立了JDBC连接。我想获得故障单中的默认主体

门票详情: 票证缓存:KEYRING:persistent:6003:6003 默认主体:nfunke@FUNKE.HK

有效启动Expires服务主体 05/21/2018 21:14:46 05/22/2018 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

但没有&#34; nfunke&#34;

我从哪里获取上下文中的用户名?

在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 :(得分:0)

如果要委托数据源,首先需要定义&#34; security-domain&#34;在您的数据源配置上。然后,您需要使用&#34; login-module&#34;定义另一个安全域。像上面一样。见Kerberos Delegation