
I need some help. I am trying to get trusted auth to work on xI r3, with no success. I have followed the documentation and some of the forums to the T, but I must of overlooked something minimal.
I did the following:
- Setup Trusted auth in CMC, created shared secret
- Created TrustedPrincipal.conf with my shared secret in %BUSINESSOBJECTS_HOME%\Business Objects Enterprise 12.0 win32_x86\
- Modified my web.xml here it is
<?xml version="1.0"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>Business Objects InfoView</display-name>
<description>
Business Objects InfoView application
</description>
<!-- ==================== -->
<!-- Customizable options -->
<!-- ==================== -->
<!-- You can specify the default CMS machine name here -->
<!-- Put your CMS name inside <param-value> </param-value> -->
<!-- eg. <context-param> -->
<!-- <param-name>cms.default</param-name> -->
<!-- <param-value>CrystalMS</param-value> -->
<!-- eg. </context-param> -->
<context-param>
<param-name>cms.default</param-name>
<param-value>TSSCITW0021:6400</param-value>
</context-param>
<!-- Choose whether to let the user change the CMS name -->
<!-- If it isn't shown the default System from above will be used -->
<context-param>
<param-name>cms.visible</param-name>
<param-value>false</param-value>
</context-param>
<!-- You can specify the default Authentication types here -->
<!-- secEnterprise, secLDAP, secWinAD, secSAPR3 -->
<context-param>
<param-name>authentication.default</param-name>
<param-value>secEnterprise</param-value>
</context-param>
<!-- Choose whether to let the user change the authentication type -->
<!-- If it isn't shown the default authentication type from above will be used -->
<context-param>
<param-name>authentication.visible</param-name>
<param-value>false</param-value>
</context-param>
<!-- The default home page -->
<context-param>
<param-name>homepage.default</param-name>
<param-value>/jsp/listing/home.jsp</param-value>
</context-param>
<!-- If the locale preference is disabled (only english languages will be used/allowed) -->
<context-param>
<param-name>disable.locale.preference</param-name>
<param-value>false</param-value>
</context-param>
<!-- Set to false to disable Siteminder single sign on. -->
<context-param>
<param-name>siteminder.enabled</param-name>
<param-value>true</param-value>
</context-param>
<!-- You can specify the siteminder Authentication type here -->
<!-- secLDAP, secWinAD -->
<context-param>
<param-name>siteminder.authentication</param-name>
<param-value>secLDAP</param-value>
</context-param>
<!-- Set to true to enable Vintela single sign on. -->
<context-param>
<param-name>vintela.enabled</param-name>
<param-value>false</param-value>
</context-param>
<!-- Set to true to enable other single sign on. -->
<context-param>
<param-name>sso.enabled</param-name>
<param-value>false</param-value>
</context-param>
<!-- Set to false to disable logon with token. -->
<context-param>
<param-name>logontoken.enabled</param-name>
<param-value>true</param-value>
</context-param>
<!-- For turning persistent cookies on/off for the logon page. Defaults to true if this is not present -->
<context-param>
<param-name>persistentcookies.enabled</param-name>
<param-value>true</param-value>
</context-param>
<!--
Trusted authentication: set how to retrieve userID
set to "REMOTE_USER" for HttpServletRequest.getRemoteUser()
set to "HTTP_HEADER" for HTTP header
set to "QUERY_STRING" for URL query string
set to "COOKIE" for cookie
set to "WEB_SESSION" for web session
set to "USER_PRINCIPAL" for user principal
set to "VINTELA" for Vintela integration
reset to empty to disable trusted authentication
-->
<context-param>
<param-name>trusted.auth.user.retrieval</param-name>
<param-value>QUERY_STRING</param-value>
</context-param>
<!--
Trusted authentication: set Header/URL parameter/Cookie/Session variable name to retrieve username
No need to set for REMOTE_USER or USER_PRINCIPAL.
-->
<context-param>
<param-name>trusted.auth.user.param</param-name>
<param-value>ivsLogonToken</param-value>
</context-param>
<!--
Trusted authentication: session variable name to retrieve the shared secret;
Leave empty if shared secret is not passed from web session
-->
<context-param>
<param-name>trusted.auth.shared.secret</param-name>
<param-value></param-value>
</context-param>
<!--
Configurable logon service
These 2 configurations allow one to customize the location of the logon service
config.logon.service.context: the service context path. e.g. /InfoViewApp
config.logon.service.url: the service url without context path. e.g. /logon/logon.do
-->
<context-param>
<param-name>config.logon.service.context</param-name>
<param-value></param-value>
</context-param>
<context-param>
<param-name>config.logon.service.url</param-name>
<param-value></param-value>
</context-param>
<!--
Configurable timeout service
These 2 configurations allow one to customize the location of the timeout service
config.timeout.service.context: the service context path. e.g. /InfoViewApp
config.timeout.service.url: the service url without context path. e.g. /logon/logon.do
-->
<context-param>
<param-name>config.timeout.service.context</param-name>
<param-value></param-value>
</context-param>
<context-param>
<param-name>config.timeout.service.url</param-name>
<param-value></param-value>
</context-param>
<!--
cms.clusters: comma separated list of cluster names
Each cluster in the above list requires its own parameter:
param-name = cms.clusters.<clustername> (without the @)
param-value = comma separated list of cms servers
note: Each param-name must match case with the corresponding value in cms.clusters.
note2: No port needs to be given for a server. If none is given, then the default port 6400 is assumed.
Alternatively, these parameters may be put in a file called "clusters.properties" which should
be placed in the WEB-INF/classes directory. The parameters in this file should be stored
in the normal .properties format, i.e. one "<name>=<value> pair per line. If this file exists,
the settings in web.xml will be ignored entirely.
-->
<!-- EXAMPLE:
<context-param>
<param-name>cms.clusters</param-name>
<param-value>@samplecluster, @samplecluster2, @samplecluster3</param-value>
</context-param>
<context-param>
<param-name>cms.clusters.samplecluster</param-name>
<param-value>cmsone:6400, cmstwo</param-value>
</context-param>
<context-param>
<param-name>cms.clusters.samplecluster2</param-name>
<param-value>cms3, cms4, cms5</param-value>
</context-param>
<context-param>
<param-name>cms.clusters.samplecluster3</param-name>
<param-value>aps05</param-value>
</context-param>
-->
<!-- Sample equivalent clusters.properties file:
cms.clusters=@samplecluster, @samplecluster2, @samplecluster3
cms.clusters.samplecluster=cmsone:6400, cmstwo
cms.clusters.samplecluster2=cms3, cms4, cms5
cms.clusters.samplecluster3=aps05
-->
<!-- proxy.contextpaths: comma separated list of proxies -->
<!-- EXAMPLE:
<context-param>
<param-name>proxy.contextpaths</param-name>
<param-value>/Infoview</param-value>
</context-param>
OR
<context-param>
<param-name>proxy.contextpaths</param-name>
<param-value>/Marketing,/Sales/infoview,/HR</param-value>
</context-param>
-->
<context-param>
<param-name>proxy.contextpaths</param-name>
<param-value></param-value>
</context-param>
<!-- Default window properties when viewing a document in a new window. -->
<!-- Does not override the window properties defined in the plugin files. -->
<context-param>
<param-name>window.properties.default</param-name>
<param-value>fullscreen=yes,location=no,scrollbars=yes,menubars=no,toolbars=no,resizable=yes</param-value>
</context-param>
<!-- location to pick up help files -->
<context-param>
<param-name>customized.help.location</param-name>
<param-value></param-value>
</context-param>
<!-- Shared Destination From Field -->
<!-- Enables or Disables the From field when scheduling a object to a destination.
When the value is set to false the From field will not be rendered and the system
will first attempt to get the email value from the report default, if report default
is not available it will attempt to get the value from the email address on user
profile of the logged on user and lastly if the user profile email address in not
available it will use the job server default. -->
<context-param>
<param-name>SMTPFrom</param-name>
<param-value>true</param-value>
</context-param>
<!-- application name -->
<context-param>
<param-name>app.name</param-name>
<param-value>InfoView</param-value>
</context-param>
<context-param>
<param-name>app.name.greeting</param-name>
<param-value>BusinessObjects</param-value>
</context-param>
<context-param>
<param-name>app.supportmygroups</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<param-name>app.supportlocreports</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<param-name>app.ondemandlink</param-name>
<param-value>http://information.ondemand.com/istore/</param-value>
</context-param>
<context-param>
<param-name>app.ondemand.toolbar.button.enabled</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<param-name>app.ondemand.textlink.enabled</param-name>
<param-value>true</param-value>
</context-param>
<!-- threshold at which the tree list control will not display all the nodes -->
<!-- instead, a too many children message will be printed -->
<context-param>
<param-name>max.tree.children.threshold</param-name>
<param-value>200</param-value>
</context-param>
<!-- URLs -->
<context-param>
<param-name>url.exit</param-name>
<param-value></param-value>
</context-param>
<context-param>
<param-name>url.error</param-name>
<param-value>/jsp/common/error.jsp</param-value>
</context-param>
<!-- Content : ALL schema and non-schema (global) file resources. -->
<!-- Resolution: Resource path resolves to <schemaPath>/<resourcePathAndFileName>. -->
<!-- Prefixes : - Values prefixed with the value given by schema.prefix are resolved to the current schema -->
<!-- - Values prefixed with the value given by schema.global.prefix are resolved as non-schema (global) items -->
<!-- - NONE indicates no prefix -->
<!-- - If these 2 prefixes are the same (including both NONE) you essentially have NO global items. -->
<!-- - If neither prefix is matched, item is "schema". -->
<!-- - The prefix is not part of the file spec. -->
<!-- Note : Only the default schema is now in use. -->
<!-- ==================== -->
<!-- Schemas -->
<!-- ==================== -->
<context-param>
<param-name>schema.global.prefix</param-name>
<param-value>NONE</param-value>
</context-param>
<context-param>
<param-name>schema.prefix</param-name>
<param-value>*</param-value>
</context-param>
<!-- context-relative paths -->
<context-param>
<param-name>schema.global</param-name>
<param-value>/res/general</param-value>
</context-param>
<context-param>
<param-name>schema.default</param-name>
<param-value>/res/schema.blue</param-value>
</context-param>
<!-- ==================== -->
<!-- File resources -->
<!-- ==================== -->
<context-param>
<param-name>img.obj.default</param-name>
<param-value>ce_generic_object.gif</param-value>
</context-param>
<context-param>
<param-name>img.list.heading.separator</param-name>
<param-value>separator_grey_title_bar.gif</param-value>
</context-param>
<context-param>
<param-name>img.list.plus</param-name>
<param-value>collapse.gif</param-value>
</context-param>
<context-param>
<param-name>img.list.minus</param-name>
<param-value>expand.gif</param-value>
</context-param>
<context-param>
<param-name>img.banner.logo</param-name>
<param-value>*banner_logo.gif</param-value>
</context-param>
<context-param>
<param-name>img.banner.left</param-name>
<param-value>*banner_fill_left.gif</param-value>
</context-param>
<context-param>
<param-name>img.banner.center</param-name>
<param-value>*banner_fill_center.gif</param-value>
</context-param>
<context-param>
<param-name>img.banner.right</param-name>
<param-value>*banner_fill_right.gif</param-value>
</context-param>
<!-- Sorting Arrows -->
<context-param>
<param-name>img.sort.arrowdown</param-name>
<param-value>sort_desc.gif</param-value>
</context-param>
<context-param>
<param-name>img.sort.arrowup</param-name>
<param-value>sort_asc.gif</param-value>
</context-param>
<!-- Panel gradient & buttons -->
<context-param>
<param-name>img.panel.titlebar</param-name>
<param-value>*panel_title_bar_fill.gif</param-value>
</context-param>
<context-param>
<param-name>img.panel.footerbar</param-name>
<param-value>*panel_footer_bar_fill.gif</param-value>
</context-param>
<context-param>
<param-name>img.panel.new.window</param-name>
<param-value>*new_window.gif</param-value>
</context-param>
<context-param>
<param-name>img.panel.new.window.hover</param-name>
<param-value>*new_window_hover.gif</param-value>
</context-param>
<context-param>
<param-name>img.panel.arrowdown</param-name>
<param-value>*arrow_down.gif</param-value>
</context-param>
<context-param>
<param-name>img.panel.arrowdown.hover</param-name>
<param-value>*arrow_down_hover.gif</param-value>
</context-param>
<context-param>
<param-name>img.panel.arrowleft</param-name>
<param-value>*arrow_left.gif</param-value>
</context-param>
<context-param>
<param-name>img.panel.arrowleft.hover</param-name>
<param-value>*arrow_left_hover.gif</param-value>
</context-param>
<context-param>
<param-name>img.panel.arrowright</param-name>
<param-value>*arrow_right.gif</param-value>
</context-param>
<context-param>
<param-name>img.panel.arrowright.hover</param-name>
<param-value>*arrow_right_hover.gif</param-value>
</context-param>
<context-param>
<param-name>img.panel.arrowup</param-name>
<param-value>*arrow_up.gif</param-value>
</context-param>
<context-param>
<param-name>img.panel.arrowup.hover</param-name>
<param-value>*arrow_up_hover.gif</param-value>
</context-param>
<context-param>
<param-name>img.panel.close</param-name>
<param-value>*close_panel.gif</param-value>
</context-param>
<context-param>
<param-name>img.panel.close.hover</param-name>
<param-value>*close_panel_hover.gif</param-value>
</context-param>
<context-param>
<param-name>img.panel.maximize</param-name>
<param-value>*maximize.gif</param-value>
</context-param>
<context-param>
<param-name>img.panel.maximize.hover</param-name>
<param-value>*maximize_hover.gif</param-value>
</context-param>
<context-param>
<param-name>img.panel.minimize</param-name>
<param-value>*minimize.gif</param-value>
</context-param>
<context-param>
<param-name>img.panel.minimize.hover</param-name>
<param-value>*minimize_hover.gif</param-value>
</context-param>
<context-param>
<param-name>img.panel.restore</param-name>
<param-value>*restore_down.gif</param-value>
</context-param>
<context-param>
<param-name>img.panel.restore.hover</param-name>
<param-value>*restore_down_hover.gif</param-value>
</context-param>
<context-param>
<param-name>img.panel.tearoff</param-name>
<param-value>*tear_off.gif</param-value>
</context-param>
<context-param>
<param-name>img.panel.tearoff.hover</param-name>
<param-value>*tear_off_hover.gif</param-value>
</context-param>
<!-- Toolbar (22x22) images -->
<context-param>
<param-name>img.toolbar.calendar</param-name>
<param-value>toolbar/calendar.gif</param-value>
</context-param>
<context-param>
<param-name>img.toolbar.home</param-name>
<param-value>toolbar/home.gif</param-value>
</context-param>
<context-param>
<param-name>img.toolbar.refresh</param-name>
<param-value>toolbar/refresh.gif</param-value>
</context-param>
<!-- Error (32x32) image -->
<context-param>
<param-name>img.error</param-name>
<param-value>infoview_error.gif</param-value>
</context-param>
<!-- InfoView homepage icons -->
<context-param>
<param-name>img.home.myinfoview</param-name>
<param-value>MyInfoView.gif</param-value>
</context-param>
<context-param>
<param-name>img.home.favefolder</param-name>
<param-value>favfolder.gif</param-value>
</context-param>
<context-param>
<param-name>img.home.folder</param-name>
<param-value>folder.gif</param-value>
</context-param>
<context-param>
<param-name>img.home.help</param-name>
<param-value>help.gif</param-value>
</context-param>
<context-param>
<param-name>img.home.inbox</param-name>
<param-value>inbox.gif</param-value>
</context-param>
<context-param>
<param-name>img.home.preferences</param-name>
<param-value>preferences_infoview.gif</param-value>
</context-param>
<context-param>
<param-name>img.home.ondemand</param-name>
<param-value>ondemand.gif</param-value>
</context-param>
<!-- JSTL Configuration -->
<context-param>
<param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
<param-value>com.businessobjects.infoview.ApplicationResources</param-value>
</context-param>
<!-- Clustering:
true - SessionCleanupListener will expire an Enterprise Session.
false - SessionCleanupListener will logoff an Enterprise Session.
-->
<context-param>
<param-name>distributable</param-name>
<param-value>true</param-value>
</context-param>
<!-- Uncomment the following context-param if you are using multi-byte characters with WebLogic
and you are not using CrystalUTF8InputActionServlet as the action servlet. Please note
that for this to work your application will need to send data to and receive data from the
client browser in UTF8. -->
<!--
<context-param>
<param-name>weblogic.httpd.inputCharset./*</param-name>
<param-value>utf-8</param-value>
</context-param>
-->
<context-param>
<param-name>path.rightFrame</param-name>
<param-value>1</param-value>
</context-param>
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>com.businessobjects.webutil.encoding.EncodingFilter</filter-class>
</filter>
<!-- This filter may be required on NetWeaver to fix character encoding issues. This should be used if NetWeaver does not
set the charset to utf-8 for html responses. -->
<!--
<filter>
<filter-name>ResponseEncodingFilter</filter-name>
<filter-class>com.businessobjects.webutil.encoding.ResponseUTF8EncodingFilter</filter-class>
<init-param>
<param-name>enabled</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>excludeUrl1</param-name>
<param-value>/common/appService.do</param-value>
</init-param>
</filter>
-->
<filter>
<filter-name>ApplicationServiceCacheControlFilter</filter-name>
<filter-class>com.businessobjects.webutil.caching.ApplicationServiceCacheControlFilter</filter-class>
</filter>
<filter>
<filter-name>CacheControlFilter</filter-name>
<filter-class>com.businessobjects.webutil.caching.CacheControlFilter</filter-class>
</filter>
<!-- Special filter to disable HttpServletResponse.setLocale(), making it a no-op. This is necessary to preserve
charset encoding of response on web application servers that override previously charset encoding when
HttpServletResponse.setLocale() is called. -->
<!--
<filter>
<filter-name>SetEncodingFilter</filter-name>
<filter-class>com.crystaldecisions.webapp.util.filter.ResponseEncodingFilter</filter-class>
</filter >
-->
<!-- For Vintela SSO the following filter needs to be uncommented.
There is also a filter mapping which needs to be uncommented.
Set idm.realm to the Active Directory realm where the server is in
and idm.princ to the service principal name.
-->
<!--
<filter>
<filter-name>authFilter</filter-name>
<filter-class>com.businessobjects.sdk.credential.WrappedResponseAuthFilter</filter-class>
<init-param>
<param-name>idm.realm</param-name>
<param-value>YOUR_REALM</param-value>
</init-param>
<init-param>
<param-name>idm.princ</param-name>
<param-value>YOUR_PRINCIPAL</param-value>
</init-param>
<init-param>
<param-name>idm.allowUnsecured</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>idm.allowNTLM</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>idm.logger.name</param-name>
<param-value>simple</param-value>
<description>
The unique name for this logger.
</description>
</init-param>
<init-param>
<param-name>idm.logger.props</param-name>
<param-value>error-log.properties</param-value>
<description>
Configures logging from the specified file.
</description>
</init-param>
<init-param>
<param-name>error.page</param-name>
<param-value>/jsp/logon/vintelaError.jsp</param-value>
<description>
The URL of the page to show if an error occurs during authentication.
</description>
</init-param>
</filter>
-->
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>*.faces</url-pattern>
</filter-mapping>
<!--
<filter-mapping>
<filter-name>ResponseEncodingFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>ResponseEncodingFilter</filter-name>
<url-pattern>*.faces</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>ResponseEncodingFilter</filter-name>
<url-pattern>*.object</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>ResponseEncodingFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
-->
<filter-mapping>
<filter-name>ApplicationServiceCacheControlFilter</filter-name>
<url-pattern>/common/appService.do</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CacheControlFilter</filter-name>
<url-pattern>*.gif</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CacheControlFilter</filter-name>
<url-pattern>*.css</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CacheControlFilter</filter-name>
<url-pattern>*.js</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CacheControlFilter</filter-name>
<url-pattern>*.html</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CacheControlFilter</filter-name>
<url-pattern>/ure/ure/cache/images/*</url-pattern>
</filter-mapping>
<!-- For Vintela SSO the following filter mapping needs to be uncommented.
There is also a filter which needs to be uncommented.
-->
<!--
<filter-mapping>
<filter-name>authFilter</filter-name>
<url-pattern>/logon/logonService.do</url-pattern>
</filter-mapping>
-->
<!-- Filter mapping for the special filter to disable HttpServletResponse.setLocale(), making it a no-op. This is necessary to preserve
charset encoding of response on web application servers that override previously charset encoding when
HttpServletResponse.setLocale() is called.
-->
<!--
<filter-mapping>
<filter-name>SetEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
-->
<!-- Container Listener configurations -->
<!-- In Tomcat 5.0.27, if you are experiencing problem that the license count on your CMS doesn't drop even
after the application server has been idled for a long time and all the http sessions should have
expired, comment in the following lines.
-->
<listener>
<listener-class>com.businessobjects.sdk.ceutils.SessionCleanupListener</listener-class>
</listener>
<listener>
<listener-class>com.sun.faces.config.ConfigureListener</listener-class>
</listener>
<!-- End container listener configurations -->
<!-- Servlet Mappings -->
<!-- Action Servlet Configuration -->
<servlet>
<servlet-name>action</servlet-name>
<!-- CrystalUTF8InputActionServlet is needed to enable multi-byte characters input with
Tomcat. Note that for this to work your application will need to send data and
receive data from the client browser in UTF8. Because CrystalUTF8InputActionServlet
uses Java Servlet 2.3 calls, to enable Java Servlet 2.2 support please change the
action servlet class to org.apache.struts.action.ActionServlet. Please note that
this will disable multi-byte character input support. -->
<servlet-class>com.crystaldecisions.webapp.struts.framework.CrystalUTF8InputActionServlet</servlet-class>
<!--
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
-->
<init-param>
<param-name>application</param-name>
<param-value>com.businessobjects.infoview.ApplicationResources</param-value>
</init-param>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>content</param-name>
<param-value>text/html;charset=utf-8</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>validate</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>nocache</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
<!-- The Servlet for the Application Service. This is separate because we have a special filter
for the Application Service that inserts the caching headers for the skinning/branding services,
and the "action" servlet sets the cache value to "no-cache" for all the requests it processes. -->
<servlet>
<servlet-name>AppServiceServlet</servlet-name>
<!-- CrystalUTF8InputActionServlet is needed to enable multi-byte characters input with
Tomcat. Note that for this to work your application will need to send data and
receive data from the client browser in UTF8. Because CrystalUTF8InputActionServlet
uses Java Servlet 2.3 calls, to enable Java Servlet 2.2 support please change the
action servlet class to org.apache.struts.action.ActionServlet. Please note that
this will disable multi-byte character input support. -->
<servlet-class>com.crystaldecisions.webapp.struts.framework.CrystalUTF8InputActionServlet</servlet-class>
<!--
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
-->
<init-param>
<param-name>application</param-name>
<param-value>com.businessobjects.infoview.ApplicationResources</param-value>
</init-param>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>content</param-name>
<param-value>text/html;charset=utf-8</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>validate</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
<!-- Faces Servlet -->
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.faces</url-pattern>
</servlet-mapping>
<!-- map .do extension to dispatcher servlet -->
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<!-- map .object extension to dispatcher servlet -->
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.object</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AppServiceServlet</servlet-name>
<url-pattern>/common/appService.do</url-pattern>
</servlet-mapping>
<!-- Define the default session timeout for your application,
in minutes. From a servlet or JSP page, you can modify
the timeout for a particular session dynamically by using
HttpSession.getMaxInactiveInterval(). -->
<session-config>
<session-timeout>20</session-timeout> <!-- 20 minutes for session objects -->
</session-config>
<!-- The welcome file list -->
<welcome-file-list>
<welcome-file>default.htm</welcome-file>
</welcome-file-list>
<error-page>
<error-code>404</error-code>
<location>/httperror_404.htm</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/httperror_500.jsp</location>
</error-page>
<!-- JSTL -->
<taglib>
<taglib-uri>/WEB-INF/c.tld</taglib-uri>
<taglib-location>/WEB-INF/c.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/fmt.tld</taglib-uri>
<taglib-location>/WEB-INF/fmt.tld</taglib-location>
</taglib>
<!-- Struts Tag Library Descriptors -->
<taglib>
<taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>
</web-app>
For the trusted.auth.user.retrieval context-param I have tried QUERY_STRING, HTTP_HEADER, and USER_PRINCIPAL. All seem to fail
4. Here is my custom login.jsp
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ page import = "com.crystaldecisions.sdk.occa.infostore.*,
com.crystaldecisions.sdk.occa.infostore.CeSecurityID.Limit,
com.crystaldecisions.sdk.plugin.desktop.common.*,
com.crystaldecisions.sdk.framework.*,
com.crystaldecisions.sdk.framework.ISessionMgr,
com.crystaldecisions.sdk.framework.CrystalEnterprise,
com.crystaldecisions.sdk.framework.IEnterpriseSession.*,
com.crystaldecisions.sdk.occa.security.*,
com.crystaldecisions.sdk.properties.*,
com.crystaldecisions.sdk.exception.SDKException,
com.crystaldecisions.sdk.framework.ITrustedPrincipal,
com.crystaldecisions.ePortfolio.framework.common.CEClientConstants,
com.crystaldecisions.ePortfolio.framework.common.UserSettings,
com.crystaldecisions.sdk.framework.ISessionMgr,
com.crystaldecisions.webapp.CEConstants,
com.crystaldecisions.sdk.occa.infostore.IInfoStore,
java.util.Locale" %>
<%@ page import="com.crystaldecisions.sdk.occa.managedreports.*" %>
<%@ page import="com.crystaldecisions.sdk.occa.security.ILogonTokenMgr" %>
<%@ page import="javax.servlet.http.Cookie" %>
<html>
<body>
<%
try{
out.println("here1");
ISessionMgr sessionMgr = CrystalEnterprise.getSessionMgr();
out.println("sessionMRG" + sessionMgr);
out.println("here2");
ITrustedPrincipal trustedPrincipal = sessionMgr.createTrustedPrincipal("rod", "tssccitw0021.svr.xxxxxxx.net:6400", "rod");
out.println("here3");
IEnterpriseSession enterpriseSession = sessionMgr.logon("rod", "koala","tssccitw0021.svr.xxxxx.net:6400", "secEnterprise");
out.println("here4");
//IEnterpriseSession enterpriseSession = sessionMgr.logon(trustedPrincipal);
String logonToken = enterpriseSession.getLogonTokenMgr().getDefaultToken();
out.println(logon);
out.println("</br>");
IUserInfo authenticated = enterpriseSession.getUserInfo();
out.println(authenticated.getAuthenMethod());
out.println("</br>");
out.println(authenticated.getUserName());
string infoViewURL = "http://tssccitw0021.svr.xxxxx.net:8080InfoViewApp/logon/start.do";
response.sendRedirect (infoViewURL + + "?ivsLogonToken=" + logonToken );
out.println("here5");
}catch(Exception ex){
out.println(ex.getMessage().toString());
}
%>
</body>
</html>
- I am trying to test this by entering the address to the browser expecting to get into InfoViewApp, but I always get redirected back to the login.jsp page with the following error message on the jsp page, no exception gets logged: “Logon denied: Your session is not valid or has expired.”
Does anyone see any mistakes that I am doing?
Thanks! 
doogie003 (BOB member since 2008-09-29)