SAML (Security Assertion Markup Language) is an OASIS open standard for representing and exchanging user identity, authentication, and attribute information. A SAML assertion is an XML formatted token that is used to transfer user identity and attribute information from the identity provider (IdP) of a user to a trusted service provider (SP) as part of completing an SSO request.
With the introduction of Jazz Authorization Server (JAS), we can configure IBM Engineering Lifecycle Management Solution to redirect authentication to a SAML Identity Provider via JAS. For additional information on SAML and WebSphere Liberty visit our Infocenter Page
The focus of this article is showcase configuring ELM and JAS with SimpleSAMLphp as the IdP.
Overview of the different steps involved in this configuration.
Although the authentication is redirected and performed by the SAML IdP, ELM still needs to connect to the LDAP (via Advanced Properties in JTS) server for User-to-group role mapping (JazzAdmins, JazzUsers and so on) and JAS as well needs to be configured with the same LDAP server for ID Token and Application Passwords mapping. Most customers don't expose the LDAP server working with the SAML IdP and instead create a replica with limited attributes and passwords disabled.
As a pre-req , first configure JAS with the LDAP server and then setup ELM Configure JAS with LDAP
Extracting the instructions from ELM Documentation and Liberty Documentation
JazzAuthServer_install_dir/wlp/usr/servers/jazzop/server.xml
and uncomment the following features <feature>samlWeb-2.0</feature> <feature>ssl-1.0</feature>
JazzAuthServer_install_dir/wlp/usr/servers/jazzop/appConfig.xml
and uncomment/update the samlWebSso2.0
and authFilter
elements <samlWebSso20 id="defaultSP" spCookieName="jazzop_sso_cookie_idp" forceAuthn="true" authFilterRef="samlAuthFilter" spLogout="true" enabled="true" > </samlWebSso20> <authFilter id="samlAuthFilter"> <requestUrl id="samlRequestUrl" urlPattern="/authorize" matchType="contains" /> <userAgent id="samlUserAgent" agent="Mozilla|Opera" matchType="contains"/> </authFilter>
defaultSP
to a custom ID then add the following section in appConfig.xml
<samlWebSso20 id="defaultSP" enabled="false"> </samlWebSso20>
For Jazz Authorization Server to communicate with the SAML IdP, the server must be registered as a partner in the IdP. You can download / export the SP metadata from JAS to register it as a partner. Registering and enabling a partner depends on the SAML implementation in your IdP, you can follow the SAML documentation or contact you Administrator.
When JAS is configured as a SAML Service Provider you can download/export the metadata
JazzAuthServer_install_dir/start_jazz
https://jas.example.org/ibm/saml20/defaultSP/samlmetadata
defaultSP
in the URL with the ID that you have defined
spMetadata.xml
file with SAML IdP administrator
For the Jazz Authorization Server to communicate with the SAML IdP you must import the SAML IdP metadata file
https://adfs.example.org/federationmetadata/2007-06/federationmetadata.xml
https://simplesamlphp.example.org/simplesaml/saml2/idp/metadata.php
idpMetadata.xml
(Case sensitive if JAS is running on UNIX based systems)
idpMetadata.xml
to JazzAuthServer_install_dir/wlp/usr/servers/jazzop/resources/security
The following steps demonstrate how to install and configure SimpleSAMLphp.
saml20-idp-hosted.php
<?php $metadata['__DYNAMIC:1__'] = [ 'host' => 'simplesaml.example.org', // X.509 key and certificate. Relative to the cert directory. 'privatekey' => 'simplesaml.key', 'certificate' => 'simplesaml.crt', /* Authentication source to use. Must be one that is configured in 'config/authsources.php'. */ 'auth' => 'example-userpass', 'userid.attribute' => 'uid', 'attributes.NameFormat' => 'urn:oasis:names:tc:SAML:2.0:attrname-format:uri' ];
SimpleSAMLphp include a Metadata converter UI which can be used to covert the metadata format that can be added to saml20-sp-remote.php
https://simplesaml.example.org/simplesaml/admin/metadata-converter.php
metadata/saml20-sp-remote.php
Status icon key: