Jazz Authorization Server (JAS) is a Liberty OpenID Connect Provider and it can be configured to further delegate authentication to a SAML Identity Provider or a Third Party OIDC Provider. The expectation is for Single Sign-On and Sign-Out to work between ELM and non-ELM applications that are both configured to use the same Provider.
The focus on this Article is on Single Sign-On and Logout. It is assumed that you have configured JAS with either a SAML IdP or a Third Party OIDC Provider.
The default configuration of JAS configured with SAML IdP indicates the IdP to force the user to re-authenticate. We would need to change this configuration for SSO to work between ELM and Non-ELM applications.
Steps to update the configuration:
appConfig.xml
file located at [JAS_HOME]\wlp\usr\server\jazzop\appConfig.xml
samlWebSso20
section and update the parameter forceAuthn to forceAuthn="false"
and add parameter spLogout="true" <samlWebSso20 id="defaultSP" spCookieName="jazzop_sso_cookie_idp" forceAuthn="false" authFilterRef="samlAuthFilter" spLogout="true" > </samlWebSso20>
You would need to perform the following additional configuration changes in JAS.
idpMetadata.xml
file contains HTTP-POST
binding for SingleLogoutService
. IBM Liberty only supports SAML SSO with HTTP-POST
Bindings and not HTTP-Redirect
Binding. <md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://mysaml.example.com/mysaml/slo" />
appConfig.xml
file located at [JAS_HOME]\wlp\usr\server\jazzop\appConfig.xml
samlWebSso20
section and change the spCookieName
parameter value from jazzop_sso_cookie_idp
to example liberty_saml_idp_sso_cookie
or to any name of your choice. <samlWebSso20 id="defaultSP" spCookieName="liberty_saml_idp_sso_cookie" forceAuthn="false" authFilterRef="samlAuthFilter" spLogout="true" > </samlWebSso20>
/end_session
to the Authentication Filter requestUrl
<authFilter id="samlAuthFilter"> <requestUrl id="samlRequestUrl" urlPattern="/authorize|/end_session" matchType="contains" /> <userAgent id="samlUserAgent" agent="Mozilla|Opera" matchType="contains"/> </authFilter>
This workaround would work if you can directly access the SAML IdP Logout URL
There are instances where SAML IdP does not support HTTP-POST for SingleLogoutService
and/or the above instructions does not work. You could follow the workaround mentioned below, which are additional configuration in ELM.
https://adfs.example.org/adfs/ls/?wa=wsignout1.0
jts, ccm, qm, rm, gc and dcc
perform the following: https://[ELM_URL]/[app]/admin#action=com.ibm.team.repository.admin.configureAdvanced
Web Logout URI
and update the value with the Logout URL received
Trusted URIs for client authorization and redirection
and update the value with the Logout URL received
When ELM is configured with a Third Party OIDC Provider , no changes are needed.
With the default configurations the Logout operations from ELM does not complete. You would need to perform the following additional configuration in ELM.
This workaround would work if you can directly access the OIDC Logout URL
https://preprod.example.com/ui/oidcclient/logout
jts, ccm, qm, rm, gc and dcc
perform the following: https://[ELM_URL]/[app]/admin#action=com.ibm.team.repository.admin.configureAdvanced
Web Logout URI
and update the value to the Logout URL received
Trusted URIs for client authorization and redirection
and update the value with the Logout URL received
After applying the Single Sign-On and Sign Out configurations mentioned in the previous steps, following are the results
Status icon key: