Other properties of the custom chain should look like those shown in this picture (they must match the configuration for the STS client built into the demo business app):
Your SAML partner configuration should use the second javascript mapping rule shown in the example above.
The way I tested this scenario was to install the example business app on the same WebSphere server as TFIM – but this is absolutely not a requirement. Be sure to modify the configuration properties at the top of the index.jsp file contained in the application to match your environment including the connection properties to your TFIM server, and the SSO URL for triggering SSO to your SAML partner.
You also to ensure that the business application (index.jsp in the sample ear) received the tagvalue_user_session_id attribute from the TAM credential as a HTTP header. To do this I used the following TAM administration command:
pdadmin> object modify /WebSEAL/your_webseal_object/your_junction set attribute HTTP-Tag-Value user_session_id=user_session_id
Note that in the above command your_webseal_object should be for the WebSEAL server in your environment. Do “object list /WebSEAL” if you don’t know what it is. Also your_junction should be the junction to the WebSphere running the business application (this could be the /FIM junction for example if the EAR is running on the TFIM server like it was when I tested the scenario).
The result of running the scenario is that the SAML assertion generated as part of the SSO to the partner included the business attributes that the index.jsp puts into the STSUU before calling the TFIM STS.
And, as I wrap up this article, I just thought of some other techniques if your business app is not behind WebSEAL and doesn’t have access to the user_session_id. You could easily generate your own “lookup key” in the business app instead of using the WebSEAL session id, then include that key in the TARGET parameter of the redirect to the TFIM SSO URL. This will be available to your TFIM IDP mapping rule in the STSUU as well, and you could unmarshall the query string and extract the lookup key from there. There are lots of options – you just have to keep thinking!