Jboss EAP 6.x / AS 7.x require specific steps to enable Kerberos Integrated Authentication which differ from general J2EE Web Server configuration. This technical note describes how to set up Kerberos Integrated Authentication with Jboss EAP 6.x / AS 7.x to allow users authenticating against Strategy Web 10 and above.
Prerequisites:
Due to JBoss 6.x specific Kerberos integrated authentication configuration, this technical note complements steps and prerequisites outlined in KB33276: How to set up Integrated Authentication in Tomcat running on Linux and having MicroStrategy Web Universal 9.0.1 to 9.2.1 .
Warning: The integration of Kerberos is done at the server level. When configuring Strategy Developer for Kerberos the server that integrates with Kerberos is the Strategy Intelligence server. However, when configuring Strategy Web, the integration with Kerberos, at the server level, is with the 3rd party application server, ie. Jboss. This technical note is meant as a guide only and does not imply that Strategy Technical Support is an expert on integrating Kerberos with Jboss Application Server.
Note: The steps below outline a basic working environment to authenticate specified users against Strategy Web. For advanced user <> role mapping configuration, refer to Red Hat JBoss 6 documentation or contact Red Hat support for assistance.
First steps:
Create krb5.conf and krb5.keytab files as per KB33276: How to set up Integrated Authentication in Tomcat running on Linux and having MicroStrategy Web Universal 9.0.1 to 9.2.1 (Section 1.1 and 1.4)
Configuring Strategy.war file for JBoss Kerberos authentication:
<jboss-deployment-structure>
<deployment>
<dependencies>
<module name="org.jboss.security.negotiation" />
</dependencies>
</deployment>
</jboss-deployment-structure>
<jboss-web>
<security-domain>SPNEGO</security-domain>
<valve>
<class-name>org.jboss.security.negotiation.NegotiationAuthenticator</class-name>
</valve>
</jboss-web>
<filter>
<display-name>SpnegoJbossFilter</display-name>
<filter-name>SpnegoJbossFilter</filter-name>
<filter-class>com.Strategy.web.filter.SpnegoJbossFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>SpnegoJbossFilter</filter-name>
<servlet-name>mstrWeb</servlet-name>
<servlet-name>MobileServlet</servlet-name>
<servlet-name>TaskProcessorServlet</servlet-name>
</filter-mapping>
<security-role>
<role-name>user</role-name>
</security-role>
<security-constraint>
<web-resource-collection>
<web-resource-name>Web</web-resource-name>
<url-pattern>/servlet/mstrWeb</url-pattern>
<url-pattern>/servlet/mstrWeb/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
<role-name>user</role-name>
</auth-constraint>
</security-constraint>
Strategy.war
+----- META-INF
| +----- jboss-deployment-structure.xml
| +----- MANIFEST.MF
|
+----- WEB-INF
+----- jboss-web.xml
+----- web.xml
<system-properties>
<property name="java.security.krb5.conf" value="/path/to/krb5.conf"/>
<property name="jboss.security.disable.secdomain.option" value="true"/>
<property name="javax.security.auth.useSubjectCredsOnly" value="false"/>
</system-properties>
<security-domain name="SPNEGO" cache-type="default">
<authentication>
<login-module code="SPNEGO" flag="required">
<module-option name="password-stacking" value="useFirstPass"/>
<module-option name="serverSecurityDomain" value="host"/>
</login-module>
</authentication>
<mapping>
<mapping-module code="SimpleRoles" type="role">
<module-option name="mstradmin@TECHSUPP.Strategy.COM" value="admin"/>
<module-option name="user1@TECHSUPP.Strategy.COM" value="user"/>
<module-option name="user2@TECHSUPP.Strategy.COM" value="user"/>
</mapping-module>
</mapping>
</security-domain>
<security-domain name="SPNEGO" cache-type="default"> <authentication> <login-module code="SPNEGO" flag="required"> <module-option name="password-stacking" value="useFirstPass"/> <module-option name="serverSecurityDomain" value="host"/> </login-module> <login-module code="UsersRoles" flag="required"> <module-option name="password-stacking" value="useFirstPass" /> <module-option name="usersProperties" value="/path/to/spnego-users.properties" /> <module-option name="rolesProperties" value="/path/to/spnego-roles.properties" /> </login-module> </authentication> </security-domain>
mstradmin@TECHSUPP.Strategy.COM=admin user1@TECHSUPP.Strategy.COM=user user2@TECHSUPP.Strategy.COM=user
<security-domain name="host" cache-type="default">
<authentication>
<login-module code="Kerberos" flag="required">
<module-option name="debug" value="true"/>
<module-option name="useKeyTab" value="true"/>
<module-option name="keyTab" value="/path/to/krb5.keytab"/>
<module-option name="storeKey" value="true"/>
<module-option name="refreshKrb5Config" value="true"/>
<module-option name="doNotPrompt" value="true"/>
<module-option name="principal" value="SERVICE PRINCIPAL NAME"/>
</login-module>
</authentication>
</security-domain>
Final steps:
Third Party Software Installation WARNING:
The third-party product(s) discussed in this technical note is manufactured by vendors independent of Strategy. Strategy makes no warranty, express, implied or otherwise, regarding this product, including its performance or reliability.
KB279117