我在 Wildfly 8.2.0 上设置针对 MS Sql Server 的 Kerberos 集成身份验证时遇到问题。
这是我到目前为止所做的:
-
设法在 Wildfly 9.0.2 上运行它,只是因为 Wildfly 9 包含“新”登录模块类 org.jboss.security.negotiation.KerberosLoginModule。安全域配置如下:
<login-module code="org.jboss.security.negotiation.KerberosLoginModule" flag="required" module="org.jboss.security.negotiation">
<module-option name="storeKey" value="false"/>
<module-option name="useKeyTab" value="false"/>
<module-option name="principal" value="app-srv@REALM"/>
<module-option name="useTicketCache" value="true"/>
<module-option name="debug" value="true"/>
<module-option name="refreshKrb5Config" value="true"/>
<module-option name="isInitiator" value="true"/>
<module-option name="addGSSCredential" value="true"/>
<module-option name="delegationCredential" value="USE"/>
</login-module>
工作得很好。在将“addGSSCredential”添加到“true”之前,我收到错误“主题中没有匹配的凭据!”但后来我读到了这个人在这里说的话:https://developer.jboss.org/message/913652#913652 https://developer.jboss.org/message/913652#913652.
现在的问题是我不想要 Wildfly 9,我想将其设置在 Wildfly 8.2 上。应该可以吧?
因此,在 Wildfly 8.2 上:
- Wildfly 8.2 没有 KerberosLoginModule。相反,它使用 sun 提供的指定登录模块 (com.sun.security.auth.module.Krb5LoginModule)here https://docs.jboss.org/author/display/WFLY8/Security+subsystem+configuration
- 一旦我让 Wildfly 8 使用 Sun 的这个登录模块(不能开箱即用 - 这让我想知道 JBoss 的人是否真的测试过这个? - ...因为加载登录类的模块(org. picketbox)不依赖于 sun.jdk 模块,并且它会因 classnotfoundException 而失败),在添加 addGSSCredentials 选项之前,我偶然发现了在 Wildfly 9 上遇到的相同错误:“主题中没有匹配的凭据!”
- 问题是,Sun 登录模块类不支持 addGSSCredentials。
那么,有人曾经使用 Sun 类为 Wildfly 8.2 上的数据源设置 Kerberos 吗?或者我必须升级库才能从 jboss-negotiation 获取 KerberosLoginModule 吗?
我可以让它在 WildFly 8.2.1.Final 中工作的唯一方法是更新jboss-negotiation-common-<version>.jar
and jboss-negotiation-extras-<version>.jar
from 2.2.7.Final
to 3.0.2.Final
,WildFly 10.1.0.Final 提供的版本(抱歉,我没有尝试使用 WildFly 9 中的版本)。
你需要更新modules\system\layers\base\org\jboss\security\negotiation\main\
参考新罐子。
或者,您可以直接更换整个org.jboss.security.negotiation
模块的版本包含在 WildFly 10.1.0.Final 中。
作为参考,我的登录模块位于standalone.xml
is:
<login-module code="org.jboss.security.negotiation.KerberosLoginModule" flag="required" module="org.jboss.security.negotiation">
<module-option name="useTicketCache" value="true"/>
<module-option name="debug" value="true"/>
<module-option name="refreshKrb5Config" value="true"/>
<module-option name="addGSSCredential" value="true"/>
</login-module>
我发现我不需要设置isInitiator
or delegationCredential
选项。
附言。感谢您发布这个问题!我在 Kerberos 身份验证方面遇到了很多问题,因为我正在设置storeKey
to true
直到我遇到这个。
PSS。我应该补充一点,我没有连接到 MS SQL Server,而是连接到 Apache Phoenix 数据源,这可以解释为什么我不需要设置一些登录选项。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)