For further Information on Jazz Security Architecture you can visit our jazz.net article Jazz Server Authentication Explained
You can configure the Liberty OpenID Connect Provider to further delegate the user authentication like App ID on IBM cloud using the Liberty "Social Login" feature. This article shows an example of configuration with JAS and App ID.
The configuration information are extracted and modified for JAS from Liberty Topic: Configuring Social Login in Liberty and Configuring CLM Authentication with a 3rd Party OIDC provider
In this approach the user authentication is further delegated from JAS to App ID and this leads to redirections which some clients cannot do. Following are the limitations
The following diagram depicts the deployment topology and the authentication flow.
Overview of the different steps involved in this configuration.
Deploying App ID instance.
Adding an application in App ID.
You can get information for liberty OIDC settings after adding an "Application".
{ "clientId": "xxxx1234-1234-1234-xxxx-e18890408990", "tenantId": "xxxx1234-1234-1234-1234-206ad598442e", "secret": "XXXXXXXXXXXXMDRkMC00ZTRjLTk1Y2MtYWU4MTIzNmQ2ZDZl", "name": "JAS", "oAuthServerUrl": "https://au-syd.appid.cloud.ibm.com/oauth/v4/xxxx1234-1234-1234-1234-206ad598442e", "profilesUrl": "https://au-syd.appid.cloud.ibm.com", "discoveryEndpoint": "https://au-syd.appid.cloud.ibm.com/oauth/v4/xxxx1234-1234-1234-1234-206ad598442e/.well-known/openid-configuration", "type": "regularwebapp", "scopes": [ "myscope01" ] }
[JAS_HOME]\wlp\usr\servers\jazzop\server.xml
configuration file and add the socialLogin-1.0 , ssl-1.0
oidcLogin
element and configure the connection to App ID by referring "Application" information.
Attribute in oidcLogin | Value from Application Information |
clientId | {clientId} |
clientSecret | {secret} |
authorizationEndpoint | {oAuthServerUrl}/authorization |
tokenEndpoint | {oAuthServerUrl}/token |
issuer | {oAuthServerUrl} |
jwksUri | {oAuthServerUrl}/publickeys |
scope | {scopes} |
<featureManager> <feature>socialLogin-1.0</feature> <feature>appSecurity-2.0</feature> <feature>ssl-1.0</feature> ... </featureManager>
<oidcLogin id="myoidcserver" displayName="OIDC Login" clientId="xxxx1234-24a4-4172-ba66-e18890408990" clientSecret="XXXXXXXXXXXXMDRkMC00ZTRjLTk1Y2MtYWU4MTIzNmQ2ZDZl" authorizationEndpoint="https://au-syd.appid.cloud.ibm.com/oauth/v4/xxxx1234-1234-47ec-9e28-206ad598442e/authorization" tokenEndpoint="https://au-syd.appid.cloud.ibm.com/oauth/v4/xxxx1234-1234-47ec-9e28-206ad598442e/token" issuer="https://au-syd.appid.cloud.ibm.com/oauth/v4/xxxx1234-1234-47ec-9e28-206ad598442e" jwksUri="https://au-syd.appid.cloud.ibm.com/oauth/v4/xxxx1234-1234-47ec-9e28-206ad598442e/publickeys" scope="myscope01" userNameAttribute="email" > authFilterRef="myoidcAuthFilter" > </oidcLogin> <authFilter id="myoidcAuthFilter"> <userAgent id="oidcUserAgent" agent="Mozilla|Opera" matchType="contains"/> <requestUrl id="pingRequestUrl" urlPattern="/authorize" matchType="contains"/> </authFilter>
For example, the redirect URL for the oidcLogin configuration example has the following format:
https://[JAS_Host]:[Port]/ibm/api/social-login/redirect/oidclogin_id
The following error message shows when redirect URL is not set in App ID.
Please see Adding redirect URIs for details.
CWPKI0823E: SSL HANDSHAKE FAILURE: A signer with SubjectDN [CN=au-syd.appid.cloud.ibm.com, O=International Business Machines Corporation, L=Armonk, ST=New York, C=US] was sent from the host [au-syd.appid.cloud.ibm.com:443]. The signer might need to be added to local trust store [ibm-team.keystore], located in SSL configuration alias [defaultSSLConfig]. The extended error message from the SSL handshake exception is: [PKIXCertPathBuilderImpl could not build a valid CertPath.].
[JAS_HOME]\wlp\usr\servers\jazzop\ibm-team.keystore
file, in your browser, go to one of the endpoints specified by the oidcLogin element au-syd.appid.cloud.ibm.com
, and export the certificate. Use a key management tool such as iKeyman or the Java keytool utility to add the certificate to the Liberty truststore file.
Status icon key: