【问题标题】:Kerberos sql server datasource in Wildfly 8.2Wildfly 8.2 中的 Kerberos sql 服务器数据源
【发布时间】:2016-03-16 07:26:27
【问题描述】:

我在为 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

现在,问题是我不想要 Wildfly 9,我想在 Wildfly 8.2 上设置它。应该可以吧?

所以,在 Wildfly 8.2 上:

  1. Wildfly 8.2 没有 KerberosLoginModule。它改为使用 sun 提供的登录模块 (com.sun.security.auth.module.Krb5LoginModule),指定为 here
  2. 一旦我让 Wildfly 8 使用 Sun 的这个登录模块(不能开箱即用 - 这让我想知道 JBoss 的人是否真的测试过这个? - ...因为加载登录类的模块(org.picketbox) 不依赖于 sun.jdk 模块,并且由于 classnotfoundexception 异常失败),在添加 addGSSCredentials 选项之前,我偶然发现了在 Wildfly 9 上遇到的相同错误:“主题中没有匹配的凭据!”李>
  3. 问题是,Sun 登录模块类不支持 addGSSCredentials。

那么,有没有人使用 Sun 类为 Wildfly 8.2 上的数据源设置 Kerberos?或者我必须升级库以从 jboss-negotiation 获取 KerberosLoginModule?

【问题讨论】:

    标签: java sql-server wildfly kerberos wildfly-8


    【解决方案1】:

    我可以让它在 WildFly 8.2.1.Final 中工作的唯一方法是将 jboss-negotiation-common-&lt;version&gt;.jarjboss-negotiation-extras-&lt;version&gt;.jar2.2.7.Final 更新为 3.0.2.Final,WildFly 10.1.0.Final 提供的版本(抱歉,我没有尝试使用 WildFly 9)。

    您需要更新 modules\system\layers\base\org\jboss\security\negotiation\main\ 以引用新的 jar。

    或者,您可以将整个 org.jboss.security.negotiation 模块替换为 WildFly 10.1.0.Final 中包含的版本。

    作为参考,我在standalone.xml的登录模块是:

    <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>
    

    我发现我不需要设置isInitiatordelegationCredential 选项。

    PS。感谢您发布这个问题!我在使用 Kerberos 身份验证时遇到了很多问题,因为我将 storeKey 设置为 true,直到遇到这个问题。

    PSS。我应该补充一点,我没有连接到 MS SQL Server,而是连接到 Apache Phoenix 数据源,这可以解释为什么我不需要设置一些登录选项。

    【讨论】:

      猜你喜欢
      • 2015-05-30
      • 2021-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-19
      • 2015-07-07
      • 2015-10-01
      • 1970-01-01
      相关资源
      最近更新 更多