自定义TEIID JDBC转换器无法获取Kerberos票据用户主体
如何在Teiid自定义转换器的execute方法中获取Kerberos用户主体nfunke@FUNKE.HK?
我这边遇到个Teiid结合Kerberos的问题,想请教下大家:我已经通过Kerberos票据成功建立了TEIID JDBC连接,票据详情显示默认主体是nfunke@FUNKE.HK,但在自定义转换器的execute方法里,只能获取到数据源配置的服务主体,拿不到用户主体nfunke。
下面是我的代码片段:
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()); } } // ... }
日志输出结果如下:
..... available subject: HTTP/52.201.217.84 ..... Type:org.jboss.security.SimplePrincipal ..... available subject: Roles ..... Type:org.jboss.security.SimpleGroup ..... available subject: CallerPrincipal ..... Type:org.jboss.security.SimpleGroup ..... available subject: HTTP/52.201.217.84@FUNKE.HK ..... Type:javax.security.auth.kerberos.KerberosPrincipal
我的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>
目前查询功能是正常运行的,但我就是不知道怎么从上下文里拿到用户名nfunke,有没有懂的朋友指点一下?
内容的提问来源于stack exchange,提问作者Norbert Funke
相关产品推荐
相关产品推荐

