Източник на данни на Kerberos sql сървър в Wildfly 8.2

Имам проблем с настройването на интегрирана автентификация с Kerberos към MS Sql сървър на Wildfly 8.2.0.

Ето какво съм направил досега:

  • Успях да го пусна на 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), както е посочено тук
  2. След като накарах Wildfly 8 да използва този модул за влизане от Sun (НЕ работи веднага - което ме кара да се чудя дали момчетата от JBoss наистина са тествали това? - ... защото модулът, който зарежда класа за влизане (org. picketbox) не зависи от модула sun.jdk и се проваля чудесно с classnotfoundexception), попаднах на същата грешка, която получавах на Wildfly 9, преди да добавя опцията addGSSCredentials: „Няма съответстващи идентификационни данни в Subject!“
  3. Проблемът е, че addGSSCredentials не се поддържа от модулния клас за вход на Sun.

И така, някой настройвал ли е Kerberos за източник на данни на Wildfly 8.2, използвайки класа Sun? Или трябва да надстроя библиотеките, за да получа KerberosLoginModule от jboss-negotiation?


person andrei.serea    schedule 10.12.2015    source източник


Отговори (1)


Единственият начин да накарам това да работи в WildFly 8.2.1.Final е да актуализирам jboss-negotiation-common-<version>.jar и jboss-negotiation-extras-<version>.jar от 2.2.7.Final на 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 е:

<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 или delegationCredential.

PS. Благодаря, че публикувахте този въпрос! Имах много проблеми с Kerberos удостоверяването, защото задавах storeKey на true, докато не попаднах на това.

PSS. Трябва да добавя, че не се свързвам към MS SQL Server, а към източник на данни Apache Phoenix, което може да обясни защо не е необходимо да задавам някои опции за влизане.

person Frangipanes    schedule 14.11.2016