<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Gatsby RSS feed]]></title><description><![CDATA[A Personal Blog Platform of Athiththan Kathirgamasegaran]]></description><link>http://github.com/dylang/node-rss</link><generator>GatsbyJS</generator><lastBuildDate>Wed, 13 Apr 2022 15:53:55 GMT</lastBuildDate><item><title><![CDATA[In-Memory API Deployer]]></title><link>https://stackcheats.github.io/in-memory-api-deployer/content/</link><guid isPermaLink="false">https://stackcheats.github.io/in-memory-api-deployer/content/</guid><pubDate>Fri, 18 Mar 2022 00:00:00 GMT</pubDate><content:encoded>&lt;style data-emotion-css=&quot;sa2dbt&quot;&gt;body{color:text;background-color:var(--theme-ui-colors-background,#fff);}&lt;/style&gt;&lt;style data-emotion-css=&quot;0&quot;&gt;&lt;/style&gt;&lt;div class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;img src=&quot;/cbb5bea47dfa2cfda1225ceb745065d3/in-memory-api-deployer-flow.svg&quot; alt=&quot;In-Memory API Deployer&quot; class=&quot;css-0&quot;/&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded></item><item><title><![CDATA[WSO2 API Manager & Auth0 OIDC SSO]]></title><link>https://stackcheats.github.io/wso2-api-manager-auth0-sso/content/</link><guid isPermaLink="false">https://stackcheats.github.io/wso2-api-manager-auth0-sso/content/</guid><pubDate>Mon, 21 Feb 2022 00:00:00 GMT</pubDate><content:encoded>&lt;style data-emotion-css=&quot;sa2dbt&quot;&gt;body{color:text;background-color:var(--theme-ui-colors-background,#fff);}&lt;/style&gt;&lt;style data-emotion-css=&quot;0&quot;&gt;&lt;/style&gt;&lt;h2 id=&quot;Greetings-Everyone-&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Greetings-Everyone-&quot; aria-label=&quot;Greetings Everyone  permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Greetings Everyone!!! 👋&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;In this medium, we will be walking through how to configure OIDC SSO between WSO2 API Manager and Auth0.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;We will be using the WSO2 API Manager v4.0.0 for this demo&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;Let’s break in…&lt;/p&gt;&lt;h2 id=&quot;-Auth0&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-Auth0&quot; aria-label=&quot; Auth0 permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;🔐 Auth0&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;Before continuing with the SSO configurations in the WSO2 API Manager, there are a few configurations and rules that need to be added to the Auth0 platform to experience the expected outcome.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;If you already have an Auth0 account, you can move on to the next steps, if you are not, then navigate to &lt;a href=&quot;https://auth0.com/&quot; class=&quot;css-0&quot;&gt;Auth0&lt;/a&gt; (&lt;code class=&quot;css-0&quot;&gt;https://auth0.com&lt;/code&gt;) and register for a trial account to continue with this demo.&lt;/p&gt;&lt;h3 id=&quot;-OIDC-Client-Registration&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-OIDC-Client-Registration&quot; aria-label=&quot; OIDC Client Registration permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;✋ OIDC Client Registration&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Let’s start by creating and configuring an Application in Auth0.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Once you have successfully logged in to the Auth0 dashboard, expand the &lt;code class=&quot;css-0&quot;&gt;Applications&lt;/code&gt; menu from the side-bar and click on &lt;code class=&quot;css-0&quot;&gt;Applications&lt;/code&gt;, and &lt;code class=&quot;css-0&quot;&gt;Create Application&lt;/code&gt;. Fill the following&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Name: &lt;code class=&quot;css-0&quot;&gt;WSO2APIM&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Choose an application type: &lt;code class=&quot;css-0&quot;&gt;Regular Web Applications&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;and &lt;code class=&quot;css-0&quot;&gt;Create&lt;/code&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/32063a5379c902067ae3ccab6d43b70e/78d47/auth0_create_application.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:89.86486486486487%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAIAAADUsmlHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB7klEQVQ4y5VTTW/UMBDNb+fCvQd+Q8WNCweOSFxBqlREVUBL9iPJhjhObMffNm/idstChZbRbmLP+M08v5lUKaVl0fipZVFKOefyBRZCALCKMR2P/aFp63q32+3nWVwC1toAD3Cc+JRiPAXSBVZOVvhzPrVttywLEiFfvMAeaNOdtcZtpVRC0lOpRUqJXJJMrWv9NyGqDMLTNM/TzMdx5BzIs8slgPDIj0zPjCp7763zXLti8BhjQ/AxJCGykV4xiZxSUh7rg3d+TZhJbbw+fvr8+sMNVQIm57fv3g9fv2CLxvFjc339xoekNZ28u7n9fuiLrlVhzwbGenJBDLBoj72YJgCsSdLamsngvdYUVWJWxj2pHUOEPEJKaEiJ2PhjUzddZ623JndNs91sIKO1IOLv7r81TfsEdtZhPOp6C+VWqg5hxhh6bwxyDdhCdqyhBdYDheIDGIK1XYcJw4m17Xy/bw6HxhpEsB3r7c6SESn4UamcrMrVS1cLbVTGkMKDQUA16yy2COHOmEpMFHpKmU7gWQh4qRD0DgFI710MRFsIMbDRr4IhBOZrIx9pF3wpG38bcjgAAAyTE0jU8+k5VT6l+OPDAHjVibKA6TrU4Wefuo4+pSr/j3Ey8eoqv3yB6+QqPTu1/zQp8zzTtP8C2AcX3sM1W/sAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Auth0 Create Application&quot; title=&quot;Auth0 Create Application&quot; src=&quot;/static/32063a5379c902067ae3ccab6d43b70e/6d370/auth0_create_application.png&quot; srcSet=&quot;/static/32063a5379c902067ae3ccab6d43b70e/c5084/auth0_create_application.png 148w,/static/32063a5379c902067ae3ccab6d43b70e/60cc9/auth0_create_application.png 295w,/static/32063a5379c902067ae3ccab6d43b70e/6d370/auth0_create_application.png 590w,/static/32063a5379c902067ae3ccab6d43b70e/78d47/auth0_create_application.png 800w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;On the next page, move to &lt;code class=&quot;css-0&quot;&gt;Settings&lt;/code&gt; tab view, and provide the following inputs&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Allowed Callback URLs: &lt;code class=&quot;css-0&quot;&gt;https://localhost:9443/commonauth&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;and &lt;code class=&quot;css-0&quot;&gt;Save Changes&lt;/code&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Next, expand the &lt;code class=&quot;css-0&quot;&gt;Advanced Settings&lt;/code&gt;, and move to &lt;code class=&quot;css-0&quot;&gt;Endpoints&lt;/code&gt; tab to gather all OIDC related endpoints of the Auth0 application to configure with the WSO2 API Manager.&lt;/p&gt;&lt;h3 id=&quot;-User-Registration&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-User-Registration&quot; aria-label=&quot; User Registration permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;✋ User Registration&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;We have now, successfully configured an application in Auth0 for our OIDC SSO flow. Next, we’ll register a demo user and a role in the Auth0 platform.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Expand the &lt;code class=&quot;css-0&quot;&gt;User Management&lt;/code&gt; menu from the sidebar and click on &lt;code class=&quot;css-0&quot;&gt;Users&lt;/code&gt; &amp;gt; &lt;code class=&quot;css-0&quot;&gt;Create User&lt;/code&gt;. Create a user with the following details&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Email: &lt;code class=&quot;css-0&quot;&gt;demouser@auth0.com&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Connection: &lt;code class=&quot;css-0&quot;&gt;Username-Password-Authentication&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;and click on &lt;code class=&quot;css-0&quot;&gt;Create&lt;/code&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/abdf89db3c228be61d450e4b67f7a4f0/0f09e/auth0_new_user.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:86.48648648648648%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAARCAIAAABSJhvpAAAACXBIWXMAAAsTAAALEwEAmpwYAAABHElEQVQ4y52TwU7EIBCG9329+D4eTDz4KCa+gNF1N2vioQVaaAtlKXQGpy3VvehS/0wJpPPBzwC7GKOUqiwZF1Vdy5ghADCmp86OPq0NI3YDjM65BEulrLWXv/GalrQJZrV9PYm3k3g5FPsP8cl70SFv4bdgDSgDCbYuNN1ZdVa1ttVO22AH/Ducx9W2lCVj5x/nmBGrbe992+lOGyojIAJeFyUmeEZwafOVYM5FUUwnzUoGIeCmas+2O7I9jiPkiTITPDMI479sN01LthulYiYHyfgE012jbVdVTQ1dUurRkHFu+n4p5KUwEjqG4BO8ya0fkOYchtV25mMQlbRWPz7E25t4fxc3wLSmcwNAOB7i81N838/w96FtFYFfr9nl0u2nAtwAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Auth0 New User&quot; title=&quot;Auth0 New User&quot; src=&quot;/static/abdf89db3c228be61d450e4b67f7a4f0/6d370/auth0_new_user.png&quot; srcSet=&quot;/static/abdf89db3c228be61d450e4b67f7a4f0/c5084/auth0_new_user.png 148w,/static/abdf89db3c228be61d450e4b67f7a4f0/60cc9/auth0_new_user.png 295w,/static/abdf89db3c228be61d450e4b67f7a4f0/6d370/auth0_new_user.png 590w,/static/abdf89db3c228be61d450e4b67f7a4f0/0f09e/auth0_new_user.png 640w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;On the next view, edit the &lt;code class=&quot;css-0&quot;&gt;Name&lt;/code&gt; field and provide &lt;code class=&quot;css-0&quot;&gt;Demo User&lt;/code&gt; as the value.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Next, expand the &lt;code class=&quot;css-0&quot;&gt;User Management&lt;/code&gt; from the side navigation bar and click on &lt;code class=&quot;css-0&quot;&gt;Roles&lt;/code&gt; to create a role in the Auth0 platform. Click on &lt;code class=&quot;css-0&quot;&gt;Create Role&lt;/code&gt; and add the following&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Name: &lt;code class=&quot;css-0&quot;&gt;subscriber&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Description: &lt;code class=&quot;css-0&quot;&gt;Subscriber Role to Login to the Devportal&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;and &lt;code class=&quot;css-0&quot;&gt;Create&lt;/code&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/c7fbfe76b66bfd15b6a6690cf8c63d28/0f09e/auth0_new_role.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:56.75675675675676%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAyElEQVQoz52RQQ6CMBBFObIbz+PCuPAOxkuo8QZAWui4KFiYwvgpJRoTk+IPJdOBN/0zzUREKV2UZZ4XzCwJGobB2gZBhlUb0rpSukqGR+dchImosRbBmKy5ygSjTF0bYwh+EmH8GWFEznV9z+MaRRhnYlpkTOxpcbXsfhqf4LZtMbD5IXpUFXogvJXWFrMIJj+FhPf+bRub+YMPCkFMfg0JCWaUW2wn3i3sPJ09HmS7kf1OVsA4Gd0xd/ebnE9yvQQY1uQvAXwB6yyGqIBG33YAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Auth0 New Role&quot; title=&quot;Auth0 New Role&quot; src=&quot;/static/c7fbfe76b66bfd15b6a6690cf8c63d28/6d370/auth0_new_role.png&quot; srcSet=&quot;/static/c7fbfe76b66bfd15b6a6690cf8c63d28/c5084/auth0_new_role.png 148w,/static/c7fbfe76b66bfd15b6a6690cf8c63d28/60cc9/auth0_new_role.png 295w,/static/c7fbfe76b66bfd15b6a6690cf8c63d28/6d370/auth0_new_role.png 590w,/static/c7fbfe76b66bfd15b6a6690cf8c63d28/0f09e/auth0_new_role.png 640w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Navigate to the &lt;code class=&quot;css-0&quot;&gt;Users&lt;/code&gt; tab, and click on &lt;code class=&quot;css-0&quot;&gt;Add Users&lt;/code&gt;. Select the user that we registered previously and click on &lt;code class=&quot;css-0&quot;&gt;Assign&lt;/code&gt; to assign the &lt;code class=&quot;css-0&quot;&gt;subscriber&lt;/code&gt; role to our user.&lt;/p&gt;&lt;h3 id=&quot;-Rules-to-add-Roles&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-Rules-to-add-Roles&quot; aria-label=&quot; Rules to add Roles permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;✋ Rules to add Roles&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;As the next step, we are going to create a Rule in the Auth0 to include the Role details of the User in the ID token. To perform this, navigate to &lt;code class=&quot;css-0&quot;&gt;Auth Pipeline&lt;/code&gt; section and click on &lt;code class=&quot;css-0&quot;&gt;Rules&lt;/code&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Click on &lt;code class=&quot;css-0&quot;&gt;Create&lt;/code&gt; and select &lt;code class=&quot;css-0&quot;&gt;Empty Rule&lt;/code&gt; and provide the following as inputs&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Name: Add Roles to User ID Token&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Script&lt;pre class=&quot;prism-code language-js&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;addRoles&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt;user&lt;/span&gt;&lt;span class=&quot;token parameter punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt; context&lt;/span&gt;&lt;span class=&quot;token parameter punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token parameter&quot;&gt; callback&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; namespace &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;#x27;http://sample.net&amp;#x27;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; assignedRoles &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;context&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token property-access&quot;&gt;authorization&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;||&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token property-access&quot;&gt;roles&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;let&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; idTokenClaims &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; context&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token property-access&quot;&gt;idToken&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;||&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;let&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; accessTokenClaims &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; context&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token property-access&quot;&gt;accessToken&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;||&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    idTokenClaims&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token template-string string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;token template-string interpolation interpolation-punctuation punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token template-string interpolation&quot;&gt;namespace&lt;/span&gt;&lt;span class=&quot;token template-string interpolation interpolation-punctuation punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token template-string string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;/roles`&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; assignedRoles&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    accessTokenClaims&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token template-string string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;token template-string interpolation interpolation-punctuation punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token template-string interpolation&quot;&gt;namespace&lt;/span&gt;&lt;span class=&quot;token template-string interpolation interpolation-punctuation punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token template-string string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;/roles`&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; assignedRoles&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    context&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token property-access&quot;&gt;idToken&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; idTokenClaims&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    context&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token property-access&quot;&gt;accessToken&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; accessTokenClaims&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;callback&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword null nil&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; user&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; context&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;and Save changes.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;The rule will get applied to all necessary flows and applications in the Auth0 platform. With this, we have now completed configuring the Auth0 platform to perform OIDC SSO. Now, let’s start configuring the other end, WSO2 API Manager.&lt;/p&gt;&lt;h2 id=&quot;-WSO2-API-Manager&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-WSO2-API-Manager&quot; aria-label=&quot; WSO2 API Manager permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;🌐 WSO2 API Manager&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;Let’s start running a WSO2 API Manager v4.0.0 pack locally and then configure the SSO with Auth0 for the Devportal.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;If you haven’t already run a WSO2 API Manager in your environment, download the distribution from &lt;a href=&quot;https://wso2.com/api-management/&quot; class=&quot;css-0&quot;&gt;here&lt;/a&gt; and start the server by executing &lt;code class=&quot;css-0&quot;&gt;sh api-manager.sh&lt;/code&gt; command from the &lt;code class=&quot;css-0&quot;&gt;&amp;lt;apim_home&amp;gt;/bin&lt;/code&gt; directory.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Once the server is started, navigate to &lt;code class=&quot;css-0&quot;&gt;https://localhost:9443/devportal&lt;/code&gt; and click on &lt;code class=&quot;css-0&quot;&gt;Sign-in&lt;/code&gt; to auto-create the Service Provider entries.&lt;/p&gt;&lt;h3 id=&quot;-Identity-Provider&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-Identity-Provider&quot; aria-label=&quot; Identity Provider permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;✋ Identity Provider&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;First, let’s register an Identity Provider in the API Manager server to represent the Auth0.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Open up your favourite browser, go to the Carbon Management console of the API Manager server by hitting to &lt;code class=&quot;css-0&quot;&gt;https://localhost:9443/carbon&lt;/code&gt; and logging in with the &lt;code class=&quot;css-0&quot;&gt;admin&lt;/code&gt; credentials.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Once logged in, click on &lt;code class=&quot;css-0&quot;&gt;Add&lt;/code&gt; under the &lt;code class=&quot;css-0&quot;&gt;Identity Providers&lt;/code&gt; section. Create an IDP with the following&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Identity Provider Name: &lt;code class=&quot;css-0&quot;&gt;Auth0&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Display Name: &lt;code class=&quot;css-0&quot;&gt;Auth0&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Identity Provider’s JWKS Endpoint: Enter the &lt;code class=&quot;css-0&quot;&gt;JSON Web Key Set URL&lt;/code&gt; of the Application, we created in Auth0 (ex: &lt;code class=&quot;css-0&quot;&gt;https://dev-.....auth0.com/.well-known/jwks.json&lt;/code&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;Expand the &lt;code class=&quot;css-0&quot;&gt;Claim Configuration&lt;/code&gt; &amp;gt; &lt;code class=&quot;css-0&quot;&gt;Basic Claim Configuration&lt;/code&gt; and add a Claim Mapping for the &lt;code class=&quot;css-0&quot;&gt;roles&lt;/code&gt;. Select &lt;code class=&quot;css-0&quot;&gt;Define Custom Claim Dialect&lt;/code&gt; and add the following claim mappings by clicking on &lt;code class=&quot;css-0&quot;&gt;Add Claim Mapping&lt;/code&gt;&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;http://sample.net/roles&lt;/code&gt; : &lt;code class=&quot;css-0&quot;&gt;http://wso2.org/claims/role&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;Next, expand the &lt;code class=&quot;css-0&quot;&gt;Role Configuration&lt;/code&gt; &amp;gt; &lt;code class=&quot;css-0&quot;&gt;Add Role Mapping&lt;/code&gt; and add the following&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;subscriber&lt;/code&gt; : &lt;code class=&quot;css-0&quot;&gt;Internal/subscriber&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;And choose the &lt;code class=&quot;css-0&quot;&gt;Role Claim URI&lt;/code&gt; as &lt;code class=&quot;css-0&quot;&gt;http://sample.net/roles&lt;/code&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Then, expand the &lt;code class=&quot;css-0&quot;&gt;Federated Authenticators&lt;/code&gt; &amp;gt; &lt;code class=&quot;css-0&quot;&gt;OAuth2/OpenID Connect Configuration&lt;/code&gt; and perform the following&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Enable OAuth2/OpenIDConnect: &lt;code class=&quot;css-0&quot;&gt;true&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Default: &lt;code class=&quot;css-0&quot;&gt;true&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Client ID: Enter the Client ID of the &lt;code class=&quot;css-0&quot;&gt;WSO2APIM&lt;/code&gt; Application&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Client Secret: Enter the Client Secret of the &lt;code class=&quot;css-0&quot;&gt;WSO2APIM&lt;/code&gt; Application&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Authorization Endpoint URL: Enter the &lt;code class=&quot;css-0&quot;&gt;OAuth Authorization URL&lt;/code&gt; captured from Auth0&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Token Endpoint URL: Enter the &lt;code class=&quot;css-0&quot;&gt;OAuth Token URL&lt;/code&gt; captured from Auth0&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Userinfo Endpoint URL: Enter the &lt;code class=&quot;css-0&quot;&gt;OAuth User Info URL&lt;/code&gt; captured from Auth0&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Additional Query Parameters: &lt;code class=&quot;css-0&quot;&gt;scope=openid profile email&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;Next, expand the Just-in-Time Provisioning section and perform the following&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Always provision to User Store Domain: &lt;code class=&quot;css-0&quot;&gt;PRIMARY&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Provision silently: &lt;code class=&quot;css-0&quot;&gt;true&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;and Register.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Attached below is the IDP configurations of &lt;code class=&quot;css-0&quot;&gt;Auth0&lt;/code&gt; configured in the WSO2 API Manager server.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/1333130642e93634c0b2419e09327dd9/3643c/auth0_idp_configuration.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:136.48648648648648%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAbCAIAAADzvTiPAAAACXBIWXMAAAsTAAALEwEAmpwYAAACjUlEQVQ4y5VUi46bMBD0//9Xq0ptVZ1a9R5VQgLmYWxjGxtsnukA19xLuUtXI4SBsXdnZyHdGvM8W1srrbUxpq7D+uTDIGBO03Q6ndq2UQsb9BoPT1cECSE0TTOOo1/ICF1VlbX2KrJzDqcNw2Bdw7nARm3rrz0ZtL7vkTkOjOOkKBgSD+E6Mpjgo3pnLSsF51LpWuva+4A3mxwXyVpXeU61ltYqU0ttpFJCKW6MtE6f4d6gtpoYo7I0NqYyjWGcucaMYxjGME7dMIRh8CuWm75vN3R9i2+k5ASJDcOIHEoh7h52jJWQ2rlGCOmaRTofutrWqO2cLWrEFX1ZWrVpW7Li/v4OstVICGVIiTf4bJrmaRo3wmsyY2kUPVAa0XR/jP9k+XEDK6mQGRfpGSV/AhdZQg+kKIp9tJdSMMFyVpa8lBU0qyolcbOhAtQLKC254GRcY0mb82NC4ZmhH4IPWPoA2eZxGOGcZ1k/BnpJhBA4HCcLpJKxvCgBBNxmlqiBbVqeB0SFOqRg8e/br7vdT1lFrTs6e3TuqPVRSlzpJRhDC3YgGCbvMRhdnDXff5mbO3tza6VeOrmKPL0FniNtVE5WDy4FHaj99E1+/lF9uTHGLq/nC658ahWa3LYtdmuskiJjZaa06Lqw7fgxeTMJBDhAbpoVjGtTz/P/kJVWCU2zLFfadH3/zjC9sCfaiEXTuArmWP4lJrz7M3hdM6YancwLBkOtfN1fPvyJDEuhWt+2xujVLVgpeMK/DCQ4/othmbAZk0PyvIiiCJbCDHLOccMuBH8W8GWe56RSOk6SLMvSNMXfq/X+klpI9oxHb9eu3e32YMKx22xfE1AEBidJQkHe76M4oWgVrleCpulf8nAMD7D5RDEAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Auth0 IDP Configuration&quot; title=&quot;Auth0 IDP Configuration&quot; src=&quot;/static/1333130642e93634c0b2419e09327dd9/6d370/auth0_idp_configuration.png&quot; srcSet=&quot;/static/1333130642e93634c0b2419e09327dd9/c5084/auth0_idp_configuration.png 148w,/static/1333130642e93634c0b2419e09327dd9/60cc9/auth0_idp_configuration.png 295w,/static/1333130642e93634c0b2419e09327dd9/6d370/auth0_idp_configuration.png 590w,/static/1333130642e93634c0b2419e09327dd9/540ae/auth0_idp_configuration.png 885w,/static/1333130642e93634c0b2419e09327dd9/2561a/auth0_idp_configuration.png 1180w,/static/1333130642e93634c0b2419e09327dd9/3643c/auth0_idp_configuration.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;h3 id=&quot;-Devportal-Service-Provider&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-Devportal-Service-Provider&quot; aria-label=&quot; Devportal Service Provider permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;✋ Devportal Service Provider&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Now, let’s open up the auto-created Devportal Service Provider by going to &lt;code class=&quot;css-0&quot;&gt;Service Providers&lt;/code&gt; &amp;gt; &lt;code class=&quot;css-0&quot;&gt;List&lt;/code&gt; &amp;gt; &lt;code class=&quot;css-0&quot;&gt;apim_devportal&lt;/code&gt; &amp;gt; &lt;code class=&quot;css-0&quot;&gt;Edit&lt;/code&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Expand the &lt;code class=&quot;css-0&quot;&gt;Local &amp;amp; Outbound Authentication Configuration&lt;/code&gt; and perform the following&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Authentication Type: &lt;code class=&quot;css-0&quot;&gt;Federated Authentication&lt;/code&gt; : &lt;code class=&quot;css-0&quot;&gt;Auth0&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Assert Identity using mapped local subject identifier: &lt;code class=&quot;css-0&quot;&gt;true&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;and click on &lt;code class=&quot;css-0&quot;&gt;Update&lt;/code&gt;.&lt;/p&gt;&lt;h2 id=&quot;-Voila-&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-Voila-&quot; aria-label=&quot; Voila  permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;🎉 Voila!!! 🎉&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;We have successfully configured OIDC SSO between WSO2 API Manager and Auth0. As the final step, let’s perform a few testing and verify the flow&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Open up your favourite browser and navigate to &lt;code class=&quot;css-0&quot;&gt;https://localhost:9443/devportal&lt;/code&gt;. Click on &lt;code class=&quot;css-0&quot;&gt;Sign-in&lt;/code&gt;, this will direct you to the Auth0’s login page to log in with the user that we have created for this demo, &lt;code class=&quot;css-0&quot;&gt;demouser@auth0.com&lt;/code&gt;. Provide the credentials and proceed with the sign-in flow.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Once the login flow is successful, you will be redirected back to the Devportal’s page and will be signed in with the user that we have registered in the Auth0, along with the same user provisioned in the WSO2 API Manager side.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;strong class=&quot;css-0&quot;&gt;Happy Stacking!!!&lt;/strong&gt; ✌️&lt;/p&gt;</content:encoded></item><item><title><![CDATA[SAML Bearer Grant with WSO2 API Manager]]></title><link>https://stackcheats.github.io/saml-bearer-grant-with-wso2-api-manager-identity-server/content/</link><guid isPermaLink="false">https://stackcheats.github.io/saml-bearer-grant-with-wso2-api-manager-identity-server/content/</guid><pubDate>Fri, 04 Feb 2022 00:00:00 GMT</pubDate><content:encoded>&lt;style data-emotion-css=&quot;sa2dbt&quot;&gt;body{color:text;background-color:var(--theme-ui-colors-background,#fff);}&lt;/style&gt;&lt;style data-emotion-css=&quot;0&quot;&gt;&lt;/style&gt;&lt;h2 id=&quot;Greetings-Everyone--&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Greetings-Everyone--&quot; aria-label=&quot;Greetings Everyone   permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Greetings Everyone !!! 👋&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;In this medium, I will be walking through how to configure and generate an access token in WSO2 API Manager using SAML Bearer Grant flow.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;As to demonstrate the flow and configurations, we will be using WSO2 API Manager v3.2.0 &amp;amp; WSO2 Identity Server v5.10.0&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;As out-of-the-box, the WSO2 API Manager v3.2.0 supports SAML Bearer grant flow to generate access tokens by providing a valid SAML Assertion to the system.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;So, let’s dive in and start configuring our WSO2 API Manager &amp;amp; Identity Server to perform the SAML Bearer grant …&lt;/p&gt;&lt;h2 id=&quot;-WSO2-API-Manager&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-WSO2-API-Manager&quot; aria-label=&quot; WSO2 API Manager permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;🌐 WSO2 API Manager&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;Let’s start with configuring the WSO2 API Manager.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;As of the first step, we need a Service Provider configured in the API Manager environment to generate access tokens. We can either log in to the Devportal and create an Application to generate tokens or, we can log in to the Carbon Management console of the API Manager server and create a new Service Provider.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;For this demonstration, I will be focusing on creating a Service Provider from the Carbon Management console of the API Manager server.&lt;/p&gt;&lt;h3 id=&quot;-Service-Provider&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-Service-Provider&quot; aria-label=&quot; Service Provider permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;✋ Service Provider&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Let’s log in to the Carbon Management console of the API Manager server by firing up your favourite browser and navigating to &lt;code class=&quot;css-0&quot;&gt;https://localhost:9443/carbon&lt;/code&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Sign in to the console with the admin credentials. Once logged in, navigate to the &lt;code class=&quot;css-0&quot;&gt;Service Providers&lt;/code&gt; section and click on &lt;code class=&quot;css-0&quot;&gt;Add&lt;/code&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Configure the Service Provider with the following information&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Service Provider Name: &lt;code class=&quot;css-0&quot;&gt;saml-bearer-sp&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;and click on &lt;code class=&quot;css-0&quot;&gt;Register&lt;/code&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;On the next screen, expand the &lt;code class=&quot;css-0&quot;&gt;Inbound Authentication Configuration&lt;/code&gt; &amp;gt; &lt;code class=&quot;css-0&quot;&gt;OAuth/OpenID Connect Configuration&lt;/code&gt; and click on &lt;code class=&quot;css-0&quot;&gt;Configure&lt;/code&gt;. Make sure, that you have selected the &lt;code class=&quot;css-0&quot;&gt;SAML2&lt;/code&gt; grant type in the &lt;code class=&quot;css-0&quot;&gt;Allowed Grant Types&lt;/code&gt; and add a &lt;code class=&quot;css-0&quot;&gt;Callback URL&lt;/code&gt; if you have enabled either &lt;code class=&quot;css-0&quot;&gt;Code&lt;/code&gt; or &lt;code class=&quot;css-0&quot;&gt;Implicit&lt;/code&gt; grant type. Once done, scroll down and click on &lt;code class=&quot;css-0&quot;&gt;Add&lt;/code&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Make a note of the generated &lt;code class=&quot;css-0&quot;&gt;OAuth Client Key&lt;/code&gt; and &lt;code class=&quot;css-0&quot;&gt;OAuth Client Secret&lt;/code&gt; of the Service Provider, as we will be using these credentials when invoking the Token endpoint with SAML Bearer Token grant.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Click on &lt;code class=&quot;css-0&quot;&gt;Update&lt;/code&gt; to save the Service Provider configurations.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Next, we need to configure an Identity Provider in the API Manager server to validate the signature of the SAML Assertion that we are passing.&lt;/p&gt;&lt;h3 id=&quot;-Identity-Provider&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-Identity-Provider&quot; aria-label=&quot; Identity Provider permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;✋ Identity Provider&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Navigate to the &lt;code class=&quot;css-0&quot;&gt;Identity Providers&lt;/code&gt; section and click on &lt;code class=&quot;css-0&quot;&gt;Add&lt;/code&gt; to add a new Identity Provider in the API Manager server.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Configure the Identity Provider with the following inputs&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Identity Provider Name: &lt;code class=&quot;css-0&quot;&gt;wso2is&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Display Name: &lt;code class=&quot;css-0&quot;&gt;WSO2 IS&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;Expand the &lt;code class=&quot;css-0&quot;&gt;Federated Authenticators&lt;/code&gt; &amp;gt; &lt;code class=&quot;css-0&quot;&gt;SAML2 Web SSO Configuration&lt;/code&gt; and perform the following&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Enable SAML2 Web SSO: &lt;code class=&quot;css-0&quot;&gt;true&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Service Provider Entity ID: &lt;code class=&quot;css-0&quot;&gt;wso2apim&lt;/code&gt; &lt;em class=&quot;css-0&quot;&gt;(enter the Service Provider Entity ID that you have registered in the IS server)&lt;/em&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Identity Provider Entity ID: &lt;code class=&quot;css-0&quot;&gt;wso2is&lt;/code&gt; &lt;em class=&quot;css-0&quot;&gt;(enter the Identity Provider Entity ID of your IS Server)&lt;/em&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;SSO URL: &lt;code class=&quot;css-0&quot;&gt;https://localhost:9444/samlsso&lt;/code&gt; &lt;em class=&quot;css-0&quot;&gt;(assuming that the Identity Server is running on a port offset of 1)&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;click on &lt;code class=&quot;css-0&quot;&gt;Register&lt;/code&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;In addition to the above configurations, we also need to export the public certificate of the WSO2 Identity Server and import it under the created Identity Provider in the API Manager. This is because, we will be using the WSO2 Identity Server as our SAML provider, therefore the SAML Assertion is going to be signed with the private key of the Identity Server. Hence, in order to verify the signature of the assertion, we need to export and import the public certificate of the WSO2 Identity Server into API Manager.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;If you are planning to use any other SAML providers than WSO2 Identity Server, then it is required to import the public certificate of the respective provider in the created Identity Provider&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;Execute the following command to export the public certificate from the WSO2 Identity Server. Run the commands from &lt;code class=&quot;css-0&quot;&gt;&amp;lt;WSO2_IS_HOME&amp;gt;/repository/resources/security&lt;/code&gt; directory&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;Provide the WSO2 Carbon JKS Keystore password when prompted&lt;/p&gt;&lt;/blockquote&gt;&lt;pre class=&quot;prism-code language-sh&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;keytool -export -keystore wso2carbon.jks -alias wso2carbon -file wso2carbon.crt&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;Now, we have exported the public certificate as &lt;code class=&quot;css-0&quot;&gt;.crt&lt;/code&gt; format. Execute the following &lt;code class=&quot;css-0&quot;&gt;openssl&lt;/code&gt; command to convert the &lt;code class=&quot;css-0&quot;&gt;.crt&lt;/code&gt; to &lt;code class=&quot;css-0&quot;&gt;.pem&lt;/code&gt; format to upload certificate via the UI&lt;/p&gt;&lt;pre class=&quot;prism-code language-sh&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;openssl x509 -inform der -in wso2carbon.crt -out wso2carbon.pem&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;Now, that we have exported the public certificate of the WSO2 Identity Server as &lt;code class=&quot;css-0&quot;&gt;.pem&lt;/code&gt; format, let’s upload it via the Carbon Management console. Navigate to the &lt;code class=&quot;css-0&quot;&gt;Identity Providers&lt;/code&gt; section in the Carbon Management console of the WSO2 API Manager &amp;gt; &lt;code class=&quot;css-0&quot;&gt;List&lt;/code&gt; &amp;gt; and click on the &lt;code class=&quot;css-0&quot;&gt;Edit&lt;/code&gt; of our newly created Identity Provider.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Under Choose IDP certificate type, select Upload IDP certificate and choose the exported public certificate. And click on Update to save the configurations.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;strong class=&quot;css-0&quot;&gt;and Done!!!&lt;/strong&gt; 🎉 🎉 🎉&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;We have now configured our WSO2 API Manager to successfully validate the SAML Assertion and to generate an access token using SAML Bearer grant flow.&lt;/p&gt;&lt;h2 id=&quot;-Test--Verify&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-Test--Verify&quot; aria-label=&quot; Test  Verify permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;🔍 Test &amp;amp; Verify&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;To try out and verify the SAML Bearer grant flow, let’s configure our existing API Manager to perform a federated authentication with the Identity Server using SAML SSO.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;This is an extra part of the configuration to acquire a valid SAML Response and Assertion from the WSO2 Identity Server to try out our SAML Bearer grant flow. If you have already acquired a SAML Assertion from the Identity Server using any App integration, then this section is not required for you to follow 😃&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;If you haven’t already started a WSO2 Identity Server, start one with a port offset of any desired (I will be using a port offset of 1 for this demonstration).&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Let’s start configuring the WSO2 Identity Server for our SAML SSO&lt;/p&gt;&lt;h2 id=&quot;-WSO2-Identity-Server&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-WSO2-Identity-Server&quot; aria-label=&quot; WSO2 Identity Server permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;🔐 WSO2 Identity Server&lt;/h2&gt;&lt;h3 id=&quot;-Service-Provider-for-SAML-SSO&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-Service-Provider-for-SAML-SSO&quot; aria-label=&quot; Service Provider for SAML SSO permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;✋ Service Provider for SAML SSO&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Open up your favourite browser and navigate to &lt;code class=&quot;css-0&quot;&gt;https://localhost:9444/carbon&lt;/code&gt; and sign in to the Carbon Management console of the Identity Server using the &lt;code class=&quot;css-0&quot;&gt;admin&lt;/code&gt; credentials.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Go to the &lt;code class=&quot;css-0&quot;&gt;Service Providers&lt;/code&gt; section and click on &lt;code class=&quot;css-0&quot;&gt;Add&lt;/code&gt;. Create a Service Provider named &lt;code class=&quot;css-0&quot;&gt;wso2apim&lt;/code&gt; and click on &lt;code class=&quot;css-0&quot;&gt;Register&lt;/code&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;On the next screen, expand the &lt;code class=&quot;css-0&quot;&gt;Inbound Authentication Configuration&lt;/code&gt; &amp;gt; &lt;code class=&quot;css-0&quot;&gt;SAML2 Web SSO Configuration&lt;/code&gt; and click on &lt;code class=&quot;css-0&quot;&gt;Configure&lt;/code&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Fill the form with the following&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Issuer: &lt;code class=&quot;css-0&quot;&gt;wso2apim&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Assertion Consumer URLs: &lt;code class=&quot;css-0&quot;&gt;https://localhost:9443/commonauth&lt;/code&gt; &lt;em class=&quot;css-0&quot;&gt;(and click on Add to add the URL)&lt;/em&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Enable Response Signing: &lt;code class=&quot;css-0&quot;&gt;true&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Enable Signature Validation in Authentication Requests and Logout Requests: &lt;code class=&quot;css-0&quot;&gt;true&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Enable Single Logout: &lt;code class=&quot;css-0&quot;&gt;true&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Enable Attribute Profile: &lt;code class=&quot;css-0&quot;&gt;true&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Include Attributes in the Response Always: &lt;code class=&quot;css-0&quot;&gt;true&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Enable Audience Restriction: &lt;code class=&quot;css-0&quot;&gt;https://localhost:9443/oauth2/token&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Enable Recipient Validation: &lt;code class=&quot;css-0&quot;&gt;https://localhost:9443/oauth2/token&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Enable Assertion Query Request Profile: &lt;code class=&quot;css-0&quot;&gt;true&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Idp Entity ID Alias: &lt;code class=&quot;css-0&quot;&gt;wso2is&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;and click on &lt;code class=&quot;css-0&quot;&gt;Register&lt;/code&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Since we have enabled the Signature validation in authentication requests and log out requests, we have to upload the WSO2 API Manager’s public certificate to the Service Provider that we have registered.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Execute the following commands from &lt;code class=&quot;css-0&quot;&gt;&amp;lt;WSO2_APIM_HOME&amp;gt;/repository/resources/security&lt;/code&gt; directory&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;Provide the WSO2 Carbon JKS Keystore password when prompted&lt;/p&gt;&lt;/blockquote&gt;&lt;pre class=&quot;prism-code language-sh&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;keytool -export -keystore wso2carbon.jks -alias wso2carbon -file wso2carbon.crt&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;Now, we have exported the public certificate as &lt;code class=&quot;css-0&quot;&gt;.crt&lt;/code&gt; format. Execute the following &lt;code class=&quot;css-0&quot;&gt;openssl&lt;/code&gt; command to convert the &lt;code class=&quot;css-0&quot;&gt;.crt&lt;/code&gt; to &lt;code class=&quot;css-0&quot;&gt;.pem&lt;/code&gt; format to upload certificate via the UI&lt;/p&gt;&lt;pre class=&quot;prism-code language-sh&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;openssl x509 -inform der -in wso2carbon.crt -out wso2carbon.pem&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;Navigate to the Service Provider that we have registered, and under &lt;code class=&quot;css-0&quot;&gt;Basic&lt;/code&gt; Information section, select the &lt;code class=&quot;css-0&quot;&gt;Upload SP certificate&lt;/code&gt; and upload the &lt;code class=&quot;css-0&quot;&gt;.pem&lt;/code&gt; certificate under &lt;code class=&quot;css-0&quot;&gt;Application Certificate&lt;/code&gt;. Once uploaded, click on &lt;code class=&quot;css-0&quot;&gt;Update&lt;/code&gt; to update the configurations.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Now, let’s move to WSO2 API Manager and configure the API Manager to initiate and perform the SAML2 Web SSO with WSO2 Identity Server from the Devportal.&lt;/p&gt;&lt;h2 id=&quot;-WSO2-API-Manager-1&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-WSO2-API-Manager-1&quot; aria-label=&quot; WSO2 API Manager 1 permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;🌐 WSO2 API Manager&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;As we have already registered an IDP in the API Manager server providing the URLs of the WSO2 IS, let’s open the same and make a few more adjustments for our SAML Web SSO requirement.&lt;/p&gt;&lt;h3 id=&quot;-Identity-Provider-wso2is&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-Identity-Provider-wso2is&quot; aria-label=&quot; Identity Provider wso2is permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;✋ Identity Provider: wso2is&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Log in to the Carbon Management console of the API Manager server and navigate to &lt;code class=&quot;css-0&quot;&gt;Identity Providers&lt;/code&gt; &amp;gt; &lt;code class=&quot;css-0&quot;&gt;List&lt;/code&gt; &amp;gt; &lt;code class=&quot;css-0&quot;&gt;Edit&lt;/code&gt; the registered &lt;code class=&quot;css-0&quot;&gt;wso2is&lt;/code&gt; IDP.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Expand the &lt;code class=&quot;css-0&quot;&gt;Federated Authenticators&lt;/code&gt; &amp;gt; &lt;code class=&quot;css-0&quot;&gt;SAML2 Web SSO Configuration&lt;/code&gt; and perform the following&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Enable Authentication Request Signing: &lt;code class=&quot;css-0&quot;&gt;true&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Enable Assertion Signing: &lt;code class=&quot;css-0&quot;&gt;true&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Enable Logout Request Signing: &lt;code class=&quot;css-0&quot;&gt;true&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Enable Authentication Response Signing: &lt;code class=&quot;css-0&quot;&gt;true&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Signature Algorithm: &lt;code class=&quot;css-0&quot;&gt;RSA with SHA1&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Digest Algorithm: &lt;code class=&quot;css-0&quot;&gt;MD5&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;click on &lt;code class=&quot;css-0&quot;&gt;Update&lt;/code&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Next, we’ll configure the Devportal’s Service Provider to perform a Federated Authentication with WSO2 Identity Server.&lt;/p&gt;&lt;h3 id=&quot;-Service-Provider-1&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-Service-Provider-1&quot; aria-label=&quot; Service Provider 1 permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;✋ Service Provider&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Navigate to &lt;code class=&quot;css-0&quot;&gt;Service Providers&lt;/code&gt; &amp;gt; &lt;code class=&quot;css-0&quot;&gt;List&lt;/code&gt;. Select and &lt;code class=&quot;css-0&quot;&gt;Edit&lt;/code&gt; the Service Provider that is registered for the Devportal, &lt;code class=&quot;css-0&quot;&gt;apim_devportal&lt;/code&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Expand the &lt;code class=&quot;css-0&quot;&gt;Local &amp;amp; Outbound Authentication Configuration&lt;/code&gt; and tick the &lt;code class=&quot;css-0&quot;&gt;Federated Authentication&lt;/code&gt; and select the registered IDP from the list, &lt;code class=&quot;css-0&quot;&gt;wso2is&lt;/code&gt;. Click on &lt;code class=&quot;css-0&quot;&gt;Update&lt;/code&gt; and save the configurations.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Let’s make the configurations work!! &lt;br/&gt;
Open up the browser, and install the SAML Tracer extension to capture the SAML Responses while performing the SAML SSO. After installing the extension, hit &lt;code class=&quot;css-0&quot;&gt;https://localhost:9443/devportal&lt;/code&gt; to go to Devportal. Click on the &lt;code class=&quot;css-0&quot;&gt;SIGN-IN&lt;/code&gt; button at the top-right corner.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;Please make sure that the SAML Tracer extension is started and listening to the SAML transactions made in the browser.&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;This will take you to the WSO2 Identity Server’s login page, as you will be able to see and confirm the behaviour by inspecting the URLs in the browser. Sign in with your user’s credential and capture the successful SAML Response using the SAML Tracer.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Given below is a screenshot of the SAML Tracer and the SAML Response captured&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/b03a2223d48422420282c000b4e80e2b/4a2a8/saml_tracer_extension.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:78.37837837837837%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAYAAAAWGF8bAAAACXBIWXMAAAsTAAALEwEAmpwYAAADa0lEQVQ4y62Sz2/jRBTHLXFE4uQTXFZmD4gLIhFwWK5Ie0RaetmqB8QfwAlVCCFxQYgLywEJaVu1Iqp2K9I2AkGbpWGXpmRTJ3HiH0kaO7aTOL+cNI4TO9mmScePGTeptndG+uj7ffNm3rOfTVHUV1Qx8/R1TmFvyxWdMeoaA+d5BmYY+4TpVTJMguOZlMAzf8WPmMPjOMMKOSYtiUxKFK6QhDcxt36LHrxCffnNz6+pBS5TbpSnjU5voDY7zp+FobMnDJ1fEk3nCac5p3LJUfSKYzRbTr3ddqyh49juCOPOGbl4bxg9jL1N3bt3hy7VeN3oFkGuxUGpJeFEYeHfUhISmgRCS4W6pcN08gLAQxgPAKE5l3MQXE4vILK7E6Q+uXuLPjOL8sguQM94ctlvxJDTiiG3HUOjzjEatOPIaieQ02GRjZX4XvMZslpxZJvPfYbdlNcr7XmhB58HqHc/eoeumVWl0a9BtppCQj0LQj0H2VoGkwbeSANXZUHpnsL4woFzzIuLIYwnQ+xdgjeZjsAZWfDocShI3b77Fl1sKUrRUuGweoye1hLwj5GEeO0EjvDrH1WTcGyw8LyegWSdgwRukGrkMFlIN3nINAUv184Dj/13D78NUh/eeZ9+FC8pEVaHX5+l0eO/0xBJyvC72Ie93BlEBAsifM9nJ9fBmLAj9DE27IoDgrcrOmDIafhj7esg9dnHH9Ddlq70OjU40zk0xk/h4u6uKcHYFHx12+KVmnO1DHDtFrj9JlbTI35sVWFn62GQWl75lDYkXbG659Doj1DftuGsZ8FgMADXdWE2m+GP6N3kcjZnCmg29TzsJ5MJhMP4Ky/fv0/zR5yiCzJUdBWVywqoqgrlchlkWQZN00DX9Wtd5FRVw3sk1jxtnt/c3MQFl5fpnMgr+OeFQqGAJEmCfD4PRHHsk89LsNhf5F7yHlFybn19/apgKpVS8pKf9AsWi0UQRfH6EjlMYsLLDedNvcUdv+DS0hLNsuwpz/OAucDMBEGYcRx3TSaT8SE+m83e2Mc6JZ7cW1tbC1ArKys07mySuSiK4lOpVKBarfozI34xvwVkjou5LnLk3MbGxntUIBB4NRQKfbG9vf3T1tbWD+Fw+EE0GvU5ODi49oT9/f0bMcnP+TEWi32/urr6BkUWAPwvkPUfWycFE5L4Wy8AAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;SAML Tracer Extension with sample SAML Response&quot; title=&quot;SAML Tracer Extension with sample SAML Response&quot; src=&quot;/static/b03a2223d48422420282c000b4e80e2b/6d370/saml_tracer_extension.png&quot; srcSet=&quot;/static/b03a2223d48422420282c000b4e80e2b/c5084/saml_tracer_extension.png 148w,/static/b03a2223d48422420282c000b4e80e2b/60cc9/saml_tracer_extension.png 295w,/static/b03a2223d48422420282c000b4e80e2b/6d370/saml_tracer_extension.png 590w,/static/b03a2223d48422420282c000b4e80e2b/540ae/saml_tracer_extension.png 885w,/static/b03a2223d48422420282c000b4e80e2b/4a2a8/saml_tracer_extension.png 912w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Next, copy the raw SAML Response from the SAML Tracer extension (from &lt;code class=&quot;css-0&quot;&gt;Parameters&lt;/code&gt; tab and not &lt;code class=&quot;css-0&quot;&gt;SAML tab&lt;/code&gt;) and Base64 decode it.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;Do not perform any prettifying or beautifying process on the XML response. If the XML response is prettified, you might encounter unmarshalling errors and unexpected behaviours when trying to generate the Access Token&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;Extract the &lt;code class=&quot;css-0&quot;&gt;saml2:Assertion&lt;/code&gt; content (including the opening and closing tags: &lt;code class=&quot;css-0&quot;&gt;&amp;lt;saml2:Assertion ...&amp;gt;&lt;/code&gt;, &lt;code class=&quot;css-0&quot;&gt;&amp;lt;/saml2:Assertion&amp;gt;&lt;/code&gt;) from the decoded content and Base64 URL encode it. As of final step, let’s prepare the Token request with the required inputs&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;CLIENT_ID: The OAuth Client Key copied from the saml-bearer-sp&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;CLIENT_SECRET: The OAuth Client Secret copied from the saml-bearer-sp&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;ENCODED_SAML_ASSERTION: The SAML Assertion section that is extracted from the SAML Response and Base64 URL encoded&lt;/li&gt;&lt;/ul&gt;&lt;pre class=&quot;prism-code language-sh&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;curl -u &amp;lt;CLIENT_ID&amp;gt;:&amp;lt;CLIENT_SECRET&amp;gt; \ &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;-X POST https://localhost:8243/token \&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;--header &amp;#x27;Content-Type: application/x-www-form-urlencoded&amp;#x27; \&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;--data-urlencode &amp;#x27;grant_type=urn:ietf:params:oauth:grant-type:saml2-bearer&amp;#x27; \&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;--data-urlencode &amp;#x27;assertion=&amp;lt;ENCODED_SAML_ASSERTION&amp;gt;&amp;#x27; \&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;-k&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;and &lt;strong class=&quot;css-0&quot;&gt;HIT&lt;/strong&gt;!!! &lt;em class=&quot;css-0&quot;&gt;(make sure you hit the request prior to the expiration of the SAML Assertion, else, you will get an error indicating that the assertion is not valid).&lt;/em&gt;&lt;/p&gt;&lt;h2 id=&quot;Voila-&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Voila-&quot; aria-label=&quot;Voila  permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Voila!!! 🎉&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;We have now successfully configured our environments and performed the SAML Bearer Grant and generated an Access Token from the API Manager using the SAML Assertion acquired from the WSO2 Identity Server.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;strong class=&quot;css-0&quot;&gt;Happy Stacking!!!&lt;/strong&gt; 😃 ✌️&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Preview Deck | Troubleshoot Guide]]></title><link>https://stackcheats.github.io/throttling-troubleshooting-guide/content/</link><guid isPermaLink="false">https://stackcheats.github.io/throttling-troubleshooting-guide/content/</guid><pubDate>Tue, 18 May 2021 00:00:00 GMT</pubDate><content:encoded>&lt;style data-emotion-css=&quot;sa2dbt&quot;&gt;body{color:text;background-color:var(--theme-ui-colors-background,#fff);}&lt;/style&gt;&lt;style data-emotion-css=&quot;0&quot;&gt;&lt;/style&gt;&lt;h1 id=&quot;-Preview-Deck&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-Preview-Deck&quot; aria-label=&quot; Preview Deck permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;👋 Preview Deck&lt;/h1&gt;&lt;p class=&quot;css-0&quot;&gt;—h—&lt;/p&gt;&lt;h2 id=&quot;Troubleshoot-Throttling&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Troubleshoot-Throttling&quot; aria-label=&quot;Troubleshoot Throttling permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Troubleshoot Throttling&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;This reveal deck contains the fundamental steps and instructions to troubleshoot few well-known issues in API Throttling of WSO2 API Manager.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;This deck is drafted based on API Manager v3.2.0, however, this can referenced for v3.1.0, and v3.0.0 versions&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;em class=&quot;css-0&quot;&gt;Move across the deck using either arrow key on the keyboard, of by clicking the arrow icons in the bottom-right corner&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;Let’s get started!!!&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;reveal-note:&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;Use the arrow keys (&lt;code class=&quot;css-0&quot;&gt;up&lt;/code&gt;,&lt;code class=&quot;css-0&quot;&gt;right&lt;/code&gt;, &lt;code class=&quot;css-0&quot;&gt;down&lt;/code&gt;, and &lt;code class=&quot;css-0&quot;&gt;left&lt;/code&gt;) on the keyboard to navigate through the deck&lt;/p&gt;&lt;br/&gt;&lt;br/&gt;Press `o` to show an overview of the deck&lt;br/&gt;&lt;br/&gt;Press `f` for full-screen mode&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;—h—&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Are you having any issues while publishing a (custom) policy from the &lt;code class=&quot;css-0&quot;&gt;Admin&lt;/code&gt; portal?&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;If &lt;strong class=&quot;css-0&quot;&gt;yes&lt;/strong&gt;, go through the &lt;code class=&quot;css-0&quot;&gt;below&lt;/code&gt;-given steps to verify the configurations in your environment.
If &lt;strong class=&quot;css-0&quot;&gt;no&lt;/strong&gt;, move to the &lt;code class=&quot;css-0&quot;&gt;right&lt;/code&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;—v—&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;A probable cause for this behavior can be a misconfiguration of the &lt;code class=&quot;css-0&quot;&gt;Service URL&lt;/code&gt; of the &lt;code class=&quot;css-0&quot;&gt;Policy Deployer&lt;/code&gt;. Open the &lt;code class=&quot;css-0&quot;&gt;&amp;lt;publisher&amp;gt;/repository/conf/deployment.toml&lt;/code&gt; and validate the following&lt;/p&gt;&lt;pre class=&quot;prism-code language-toml&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;[apim.throttling]&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;service_url = &amp;quot;https://tm-lb-hostname:9443/services/&amp;quot;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;The &lt;code class=&quot;css-0&quot;&gt;service_url&lt;/code&gt; must point to the Traffic Manager’s &lt;code class=&quot;css-0&quot;&gt;services&lt;/code&gt; endpoint. This is used to publish and deploy the execution policies in Traffic Manager. If the endpoint is not reachable or misconfigured, there will be errors logged in the Publisher.&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;—v—&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Further, if you are using different user credentials (&lt;code class=&quot;css-0&quot;&gt;username&lt;/code&gt; and &lt;code class=&quot;css-0&quot;&gt;password&lt;/code&gt;) for each node, please perform the following configurations in the Publisher’s &lt;code class=&quot;css-0&quot;&gt;deployment.toml&lt;/code&gt; to authenticate with the Traffic Manager without any failures.&lt;/p&gt;&lt;pre class=&quot;prism-code language-toml&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;[apim.throttling.policy_deploy]&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;username = &amp;quot;traffic-manager-admin-username&amp;quot;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;password = &amp;quot;traffic-manager-admin-password&amp;quot;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;—h—&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;We assume that you don’t have any issues with creating or publishing (custom) policies from the Admin portal. But, experiencing inconsistent behavior during the runtime.&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;If you are experiencing errors in the Gateway node during runtime, scroll &lt;code class=&quot;css-0&quot;&gt;down&lt;/code&gt;. If not, move to the &lt;code class=&quot;css-0&quot;&gt;right&lt;/code&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;reveal-note:&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Advanced Throttling enables an async communication between Gateway and Traffic Manager. During runtime, the Gateway collects and sends events to the Traffic Manager to process decisions.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;If the API resource is unsecured, a default &lt;code class=&quot;css-0&quot;&gt;Unauthenticated&lt;/code&gt; subscription policy will be used to evaluate the subscription level throttling nevertheless the assigned.&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;—v—&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Are you seeing any of the following error-traces in the Gateway node?&lt;/p&gt;&lt;pre class=&quot;prism-code language-javascript&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token constant&quot; style=&quot;color:rgb(100, 102, 149)&quot;&gt;ERROR&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token maybe-class-name&quot;&gt;DataEndpointConnectionWorker&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token known-class-name class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;Error&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;while&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; trying to connect to the endpoint&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token property-access maybe-class-name&quot;&gt;Cannot&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; borrow client &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; ssl&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;traffic&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;manager&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;host&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token number&quot; style=&quot;color:rgb(181, 206, 168)&quot;&gt;9711&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;org&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token property-access&quot;&gt;wso2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token property-access&quot;&gt;carbon&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token property-access&quot;&gt;databridge&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token property-access&quot;&gt;agent&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token property-access&quot;&gt;exception&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token property-access maybe-class-name&quot;&gt;DataEndpointAuthenticationException&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token maybe-class-name&quot;&gt;Cannot&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; borrow client &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; ssl&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;traffic&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;manager&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;host&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token number&quot; style=&quot;color:rgb(181, 206, 168)&quot;&gt;9711&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token spread operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;...&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token maybe-class-name&quot;&gt;Caused&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; by&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; org&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token property-access&quot;&gt;wso2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token property-access&quot;&gt;carbon&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token property-access&quot;&gt;databridge&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token property-access&quot;&gt;agent&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token property-access&quot;&gt;exception&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token property-access maybe-class-name&quot;&gt;DataEndpointException&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token known-class-name class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;Error&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;while&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; opening socket to traffic&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;manager&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;host&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token number&quot; style=&quot;color:rgb(181, 206, 168)&quot;&gt;9711.&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token maybe-class-name&quot;&gt;Connection&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;refused&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token maybe-class-name&quot;&gt;Connection&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; refused&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token spread operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;...&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token maybe-class-name&quot;&gt;Caused&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; by&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; java&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token property-access&quot;&gt;net&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token property-access maybe-class-name&quot;&gt;ConnectException&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token maybe-class-name&quot;&gt;Connection&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;refused&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token maybe-class-name&quot;&gt;Connection&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; refused&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;strong class=&quot;css-0&quot;&gt;Yes&lt;/strong&gt;? proceed &lt;code class=&quot;css-0&quot;&gt;down&lt;/code&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;—v—&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;The mentioned errors are logged due to connectivity issues between Gateway and Traffic Manager. Gateway establishes a Binary transport communication link with Traffic Manager to publish throttle data events.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Check whether all required ports related to Binary communication (&lt;code class=&quot;css-0&quot;&gt;9711&lt;/code&gt; and &lt;code class=&quot;css-0&quot;&gt;9611&lt;/code&gt;) are opened and not blocked by any firewall. You can use the following &lt;code class=&quot;css-0&quot;&gt;telnet&lt;/code&gt; from Gateway instance to check the connectivity between Traffic Manager.&lt;/p&gt;&lt;pre class=&quot;prism-code language-shell&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;telnet traffic-manager-host 9611&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;—h—&lt;/p&gt;&lt;h2 id=&quot;Happy-Stacking-&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Happy-Stacking-&quot; aria-label=&quot;Happy Stacking  permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Happy Stacking!!! 👌👌👌&lt;/h2&gt;</content:encoded></item><item><title><![CDATA[Preserve Authorization Header in WSO2 API Manager]]></title><link>https://stackcheats.github.io/preserve-authorization-header/content/</link><guid isPermaLink="false">https://stackcheats.github.io/preserve-authorization-header/content/</guid><pubDate>Sat, 03 Apr 2021 00:00:00 GMT</pubDate><content:encoded>&lt;style data-emotion-css=&quot;sa2dbt&quot;&gt;body{color:text;background-color:var(--theme-ui-colors-background,#fff);}&lt;/style&gt;&lt;style data-emotion-css=&quot;0&quot;&gt;&lt;/style&gt;&lt;h2 id=&quot;Greetings-Everyone-&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Greetings-Everyone-&quot; aria-label=&quot;Greetings Everyone  permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Greetings Everyone!!! 👋&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;In this medium, I will be walking-through a solution to preserve and send the Authorization Header to the Backend service at the (per) API level.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;APIs that are published through the WSO2 API Manager is protected by either OAuth2, Basic, or API Key tokens. As out-of-the-box, the API Manager server removes the incoming Authorization Header during the token validation process, so that the Backend services will never know the actual Access Token used to invoke the API in the API Manager.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;The API Manager has a global configuration to enable and disable the removal of the Authorization Header. The configuration can be found under the &lt;code class=&quot;css-0&quot;&gt;api-manager.xml&lt;/code&gt; of the API Manager server.&lt;/p&gt;&lt;pre class=&quot;prism-code language-xml&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;RemoveOAuthHeadersFromOutMessage&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;RemoveOAuthHeadersFromOutMessage&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;and the respective TOML configuration will be as following&lt;/p&gt;&lt;pre class=&quot;prism-code language-toml&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;[apim.oauth_config]&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;enable_outbound_auth_header = false&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;But, let’s say, we have a requirement, where we only need to pass the Authorization Header presented for a specific API and not for others. In such scenarios, as out-of-the-box, there is no direct solution to achieve this requirement. So, let’s see how we can achieve this requirement with minimal customizations.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;To make it easy, I have already developed a custom handler to extract and preserve the Authorization header in the message context. Given below is the custom handler implementation to preserve the Authorization header in the message context and then to pass it to the Backend service with the help of a mediation sequence.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Let’s get more understanding on how they work…&lt;/p&gt;&lt;div title=&quot;Preserve Auth Header Handler&quot; class=&quot;css-0&quot;&gt;&lt;/div&gt;&lt;h2 id=&quot;-How-does-it-work&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-How-does-it-work&quot; aria-label=&quot; How does it work permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;✋ How does it work?&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;The custom handler is implemented to engage and extract the Authorization header during an API invocation through the WSO2 API Manager Gateway. The handler extracts the Authorization header from the Transport Headers and saves it to the Message Context with a custom Key-Value pair.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Then, a global-in-mediation-sequence is added to the Gateway node, to check whether the custom Key-Value pair exists in the context. If exists, the value is retrieved from the context and set back as an Authorization header, and sent to the Backend service.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;You can find a sample global-in mediation sequence under the &lt;code class=&quot;css-0&quot;&gt;example&lt;/code&gt; directory of the above-shared repository &lt;a href=&quot;https://github.com/athiththan11/Preserve-Auth-Header-Handler/blob/main/example/global--in.xml&quot; class=&quot;css-0&quot;&gt;Global Sequence&lt;/a&gt;. 👌&lt;/p&gt;&lt;h2 id=&quot;-Configure-API-Manager&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-Configure-API-Manager&quot; aria-label=&quot; Configure API Manager permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;✋ Configure API Manager&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;Let’s go through how to configure the WSO2 API Manager to engage this handler and perform the trick.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;First, clone the shared repository, and build the project using the following command&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;The repository contains the source and dependencies supported to WSO2 API Manager v3.1.0&lt;/p&gt;&lt;/blockquote&gt;&lt;div title=&quot;Preserve Auth Header Handler&quot; class=&quot;css-0&quot;&gt;&lt;/div&gt;&lt;pre class=&quot;prism-code language-shell&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;mvn clean package&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;Once, the build is done successfully, copy the built JAR artifact from the &lt;code class=&quot;css-0&quot;&gt;&amp;lt;project&amp;gt;/target&lt;/code&gt; directory and place it inside &lt;code class=&quot;css-0&quot;&gt;&amp;lt;apim&amp;gt;/repository/components/lib&lt;/code&gt; directory.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Next, we have to configure the &lt;code class=&quot;css-0&quot;&gt;velocity_template.xml&lt;/code&gt; of the API Manager to engage the handler when the API is published to the Gateway nodes. To do so, we need to alter the existing &lt;code class=&quot;css-0&quot;&gt;&amp;lt;apim&amp;gt;/repository/resources/api_templates/velocity_template.xml&lt;/code&gt; with the following segment.&lt;/p&gt;&lt;pre class=&quot;prism-code language-xml&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;...&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;handlers&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;xmlns&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;http://ws.apache.org/ns/synapse&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;#foreach($handler in $handlers)&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  #if($handler.className == &amp;#x27;org.wso2.carbon.apimgt.gateway.handlers.security.APIAuthenticationHandler&amp;#x27;)      &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    #if($apiObj.additionalProperties.get(&amp;#x27;PreserveAuthHeader&amp;#x27;) == true)&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;handler&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;com.sample.handlers.PreserveAuthHeaderHandler&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;            &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    #if($handler.hasProperties())&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    #set ($tempMap = $handler.getProperties() )&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;      #foreach($property in $tempMap.entrySet())&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        #if($property.key == &amp;#x27;AuthorizationHeader&amp;#x27;)&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;property&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;$!property.key&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;value&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;$!property.value&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;                &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        #end&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;      #end&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    #end&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;handler&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    #end&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  #end&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;...&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;The above-segment introduces a condition to check whether an API Custom Property has been introduced with the name of &lt;code class=&quot;css-0&quot;&gt;PreserveAuthHeader&lt;/code&gt;. If yes, then the custom handler will be engaged and listed under the handlers section along with the default shipped handlers.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Next, we have to add a global-in mediation sequence to read the custom key-value pair property from the context and to set the Authorization header back. Given below is a sample global-in mediation sequence and you can find the exact sequence inside the &lt;code class=&quot;css-0&quot;&gt;example&lt;/code&gt; directory of the shared repository.&lt;/p&gt;&lt;pre class=&quot;prism-code language-xml&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;sequence&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;xmlns&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;http://ws.apache.org/ns/synapse&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;WSO2AM--Ext--In&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;&amp;lt;!-- a custom log to print the header content --&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;level&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;custom&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;property&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;Extracted Auth Header&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;expression&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;get-property(&amp;#x27;PRESERVE_AUTH_HEADER_HANDLER_TOKEN&amp;#x27;)&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;&amp;lt;!-- setting back the Auth header if property exists--&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;filter&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;xpath&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;get-property(&amp;#x27;PRESERVE_AUTH_HEADER_HANDLER_TOKEN&amp;#x27;)&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;property&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;Authorization&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;scope&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;transport&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;expression&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;get-property(&amp;#x27;PRESERVE_AUTH_HEADER_HANDLER_TOKEN&amp;#x27;)&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;     &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;filter&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;sequence&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;Once the configurations are done, start the API Manager server and perform the following&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Log-in to the Publisher portal&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Create a new API or edit an existing API that needs to pass the Authorization header to the Backend&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Navigate to the &lt;code class=&quot;css-0&quot;&gt;Properties&lt;/code&gt; menu of the respective API and add the following custom property&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;PreserveAuthHeader&lt;/code&gt; : &lt;code class=&quot;css-0&quot;&gt;true&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;And save the API&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;With the above-made configurations, now we will be able to see that our custom handler getting engaged with the respective API.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;We can verify this by navigating to the &lt;code class=&quot;css-0&quot;&gt;&amp;lt;apim&amp;gt;/repository/deployment/server/syanpse-configs/default/api&lt;/code&gt; directory and opening up the respective API Synapse artifact. There, under the handlers section, our custom &lt;code class=&quot;css-0&quot;&gt;PreserveAuthHandler&lt;/code&gt; will be engaged prior to the default &lt;code class=&quot;css-0&quot;&gt;APIAuthenticationHandler&lt;/code&gt;.&lt;/p&gt;&lt;h2 id=&quot;Voila---&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Voila---&quot; aria-label=&quot;Voila    permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Voila!!! 🎉 🎊 🎉&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;We have now successfully configured the API Manager server to preserve and send the Authorization header to the Backend service (per) API level.&lt;/p&gt;&lt;h2 id=&quot;Happy-Stacking-&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Happy-Stacking-&quot; aria-label=&quot;Happy Stacking  permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Happy Stacking!!! 😎&lt;/h2&gt;</content:encoded></item><item><title><![CDATA[Log4j2 Appenders]]></title><link>https://stackcheats.github.io/log4j2-appender/</link><guid isPermaLink="false">https://stackcheats.github.io/log4j2-appender/</guid><pubDate>Sat, 13 Mar 2021 00:00:00 GMT</pubDate><content:encoded>&lt;style data-emotion-css=&quot;sa2dbt&quot;&gt;body{color:text;background-color:var(--theme-ui-colors-background,#fff);}&lt;/style&gt;&lt;style data-emotion-css=&quot;0&quot;&gt;&lt;/style&gt;&lt;h2 id=&quot;Stratagem&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Stratagem&quot; aria-label=&quot;Stratagem permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Stratagem&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;WSO2 API Manager now supports (from &lt;code class=&quot;css-0&quot;&gt;v3.0.0&lt;/code&gt; onwards) Log4j2 to manage logs and appenders. In this cheat, we will be looking at how to configure a custom appender for a simple requirement.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;The requirement is to log the Synapse Wire logs in a seperate log file. So, first, lets enable the &lt;code class=&quot;css-0&quot;&gt;Synapse Wire&lt;/code&gt; &lt;code class=&quot;css-0&quot;&gt;DEBUG&lt;/code&gt; logs in the API Manager server.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;The following configurations and steps are verified in API Manager &lt;code class=&quot;css-0&quot;&gt;v3.0.0&lt;/code&gt;, &lt;code class=&quot;css-0&quot;&gt;v3.1.0&lt;/code&gt;, and &lt;code class=&quot;css-0&quot;&gt;v3.2.0&lt;/code&gt; environments&lt;/p&gt;&lt;/blockquote&gt;&lt;div class=&quot;css-0&quot;&gt;&lt;pre class=&quot;prism-code language-yaml&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;logger.synapse&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;wire.name = org.apache.synapse.transport.http.wire&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;logger.synapse&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;wire.level = DEBUG&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;# add to the loggers&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;loggers = synapse&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;wire&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;...&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;To enable the Synapse Wire logs in API Manager server, navigate to &lt;code class=&quot;css-0&quot;&gt;&amp;lt;apim&amp;gt;/repository/conf&lt;/code&gt; directory and open the &lt;code class=&quot;css-0&quot;&gt;log4j2.properties&lt;/code&gt;. Then, add the mentioned properties (if not already exist) and set the &lt;code class=&quot;css-0&quot;&gt;DEBUG&lt;/code&gt; level.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Then, add the &lt;code class=&quot;css-0&quot;&gt;synapse-wire&lt;/code&gt; keyword to the &lt;code class=&quot;css-0&quot;&gt;loggers&lt;/code&gt; as mentioned. Refer to &lt;a href=&quot;https://apim.docs.wso2.com/en/latest/administer/logging-and-monitoring/logging/setting-up-logging/#enable-gateway-wire-logs&quot; class=&quot;css-0&quot;&gt;Enable Gateway Wire Logs&lt;/a&gt; for more info.&lt;/p&gt;&lt;pre class=&quot;prism-code language-yaml&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;appender.WIRE_LOG.type = RollingFile&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;appender.WIRE_LOG.name = WIRE_LOG&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;appender.WIRE_LOG.fileName &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    = $&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;sys&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;carbon.home&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;/repository/logs/wire.log&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;appender.WIRE_LOG.filePattern &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    = $&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;sys&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;carbon.home&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;/repository/logs/wire&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;%d&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;MM&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;dd&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;yyyy&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;.log&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;appender.WIRE_LOG.layout.type = PatternLayout&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;appender.WIRE_LOG.layout.pattern &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    = TID&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;%tenantId&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;%appName&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;%d&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; %5p &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;%c&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; %m%ex%n&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;appender.WIRE_LOG.policies.type = Policies&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;appender.WIRE_LOG.policies.time.type = TimeBasedTriggeringPolicy&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;appender.WIRE_LOG.policies.time.interval = 1&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;appender.WIRE_LOG.policies.time.modulate = true&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;appender.WIRE_LOG.policies.size.type = SizeBasedTriggeringPolicy&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;appender.WIRE_LOG.policies.size.size = 10MB&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;# add to the appenders&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;appenders = WIRE_LOG&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;...&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;Now, let’s introduce a Log4j2 appender to log the &lt;code class=&quot;css-0&quot;&gt;Synapse Wire&lt;/code&gt; to a separate log file.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Given is a sample Log4j2 Appender configuration with RollingFile. The presented configuration contains the basic set of patterns and layouts to print logs. You can further enhance the configurations according to your need.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Once the appender is configured, the Appender name needs to be added to the &lt;code class=&quot;css-0&quot;&gt;appenders&lt;/code&gt; property in the &lt;code class=&quot;css-0&quot;&gt;log4j2.properties&lt;/code&gt;.&lt;/p&gt;&lt;pre class=&quot;prism-code language-yaml&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;logger.synapse&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;wire.name = org.apache.synapse.transport.http.wire&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;logger.synapse&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;wire.level = DEBUG&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;# configure with the appender&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;logger.synapse&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;wire.appenderRef.WIRE_LOG.ref = WIRE_LOG&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;logger.synapse&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;wire.additivity = false&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;At last, configure the &lt;code class=&quot;css-0&quot;&gt;synapse-wire&lt;/code&gt; logger configuration with the created &lt;code class=&quot;css-0&quot;&gt;WIRE_LOG&lt;/code&gt; appender as given.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Once the configurations are saved, we will see a new log file created with the name &lt;code class=&quot;css-0&quot;&gt;wire.log&lt;/code&gt; inside the &lt;code class=&quot;css-0&quot;&gt;&amp;lt;apim&amp;gt;/repository/logs&lt;/code&gt; directory containing the Wire logs.&lt;/p&gt;&lt;/div&gt;&lt;p class=&quot;css-0&quot;&gt;We have now successfully configured a Log4j2 Appender to create and log the &lt;code class=&quot;css-0&quot;&gt;Synapse Wire&lt;/code&gt; &lt;code class=&quot;css-0&quot;&gt;DEBUG&lt;/code&gt; logs in a separate file named &lt;code class=&quot;css-0&quot;&gt;wire&lt;/code&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;The complete set of log4j2 configurations that we introduced and used in this cheat is given below.&lt;/p&gt;&lt;pre class=&quot;prism-code language-yaml&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;# appender declaration&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;appenders = WIRE_LOG&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;...&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;# custom appender&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;appender.WIRE_LOG.type = RollingFile&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;appender.WIRE_LOG.name = WIRE_LOG&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;appender.WIRE_LOG.fileName = $&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;sys&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;carbon.home&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;/repository/logs/wire.log&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;appender.WIRE_LOG.filePattern = $&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;sys&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;carbon.home&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;/repository/logs/wire&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;%d&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;MM&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;dd&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;yyyy&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;.log&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;appender.WIRE_LOG.layout.type = PatternLayout&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;appender.WIRE_LOG.layout.pattern = TID&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;%tenantId&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;%appName&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;%d&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; %5p &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;%c&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; %m%ex%n&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;appender.WIRE_LOG.policies.type = Policies&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;appender.WIRE_LOG.policies.time.type = TimeBasedTriggeringPolicy&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;appender.WIRE_LOG.policies.time.interval = 1&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;appender.WIRE_LOG.policies.time.modulate = true&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;appender.WIRE_LOG.policies.size.type = SizeBasedTriggeringPolicy&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;appender.WIRE_LOG.policies.size.size = 10MB&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;# engaging the synapse-wire logger&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;loggers = synapse&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;wire&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;...&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;# enabling Synapse Wire DEBUG&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;logger.synapse&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;wire.name = org.apache.synapse.transport.http.wire&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;logger.synapse&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;wire.level = DEBUG&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;# configuring the logger with the appender&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;logger.synapse&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;wire.appenderRef.WIRE_LOG.ref = WIRE_LOG&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;logger.synapse&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;wire.additivity = false&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;</content:encoded></item><item><title><![CDATA[Key & Subscription Validation]]></title><link>https://stackcheats.github.io/key-subscription-validation-320/content/</link><guid isPermaLink="false">https://stackcheats.github.io/key-subscription-validation-320/content/</guid><pubDate>Tue, 02 Mar 2021 00:00:00 GMT</pubDate><content:encoded>&lt;style data-emotion-css=&quot;sa2dbt&quot;&gt;body{color:text;background-color:var(--theme-ui-colors-background,#fff);}&lt;/style&gt;&lt;style data-emotion-css=&quot;0&quot;&gt;&lt;/style&gt;&lt;div class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;img src=&quot;/8e5f14adb013fde272b6a89748054e44/key-validation-subscription-validation-320.svg&quot; alt=&quot;Key and Subscription Validation Flow&quot; class=&quot;css-0&quot;/&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded></item><item><title><![CDATA[Token Revocation: WSO2 API Manager & Keycloak KM]]></title><link>https://stackcheats.github.io/token-revocation-wso2-api-manager-keycloak/content/</link><guid isPermaLink="false">https://stackcheats.github.io/token-revocation-wso2-api-manager-keycloak/content/</guid><pubDate>Wed, 18 Nov 2020 00:00:00 GMT</pubDate><content:encoded>&lt;style data-emotion-css=&quot;sa2dbt&quot;&gt;body{color:text;background-color:var(--theme-ui-colors-background,#fff);}&lt;/style&gt;&lt;style data-emotion-css=&quot;0&quot;&gt;&lt;/style&gt;&lt;h2 id=&quot;Greetings-Everyone-&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Greetings-Everyone-&quot; aria-label=&quot;Greetings Everyone  permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Greetings Everyone!!! 👋&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;In this blog, I will be presenting a custom implementation to achieve the Immediate Token (cache) Revocation in WSO2 API Manager v3.2.0 with Keycloak configured as Key Manager.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;As you all may aware, &lt;strong class=&quot;css-0&quot;&gt;&lt;a href=&quot;https://apim.docs.wso2.com/en/3.2.0/&quot; class=&quot;css-0&quot;&gt;WSO2 API Manager v3.2.0&lt;/a&gt;&lt;/strong&gt; got released!!! 🎉🎊🎉 &lt;br/&gt;and it is packed with a lot of new features and functionalities to support various use-cases and requirements. One of the praised features is the immediate Token (cache) revocation. &lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;The API Manager v3.2.0 now also supports configuring third-party Key Managers with less hassle through the Admin portal. You can learn more about the out-of-the-box key-manager connectors and the respective instructions below.&lt;/p&gt;&lt;div title=&quot;Overview - WSO2 API Manager Key Managers&quot; class=&quot;css-0&quot;&gt;&lt;/div&gt;&lt;div title=&quot;Configure a Third-Party Key Manager&quot; class=&quot;css-0&quot;&gt;&lt;/div&gt;&lt;p class=&quot;css-0&quot;&gt;As out-of-the-box, the Token cache revocation is supported by the WSO2 API Manager when using the in-built Resident Key Manager or when using the WSO2 Identity Server as Key Manager. But, this feature was made as an extension to other supported Key Managers to achieve the requirement if required.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;You can learn more about the default Token (cache) Revocation flow the WSO2 API Manager v3.2.0 at &lt;a href=&quot;https://stackcheats.github.io/token-revocation/content/&quot; class=&quot;css-0&quot;&gt;Token Revocation&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;Hence, in this writing, we will be going through a sample implementation on achieving the Token (cache) revocation feature with Keycloak &amp;amp; WSO2 API Manager.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;strong class=&quot;css-0&quot;&gt;Let’s get started …&lt;/strong&gt;&lt;/p&gt;&lt;h2 id=&quot;-Implementation--Execution-Flow&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-Implementation--Execution-Flow&quot; aria-label=&quot; Implementation  Execution Flow permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;✋ Implementation &amp;amp; Execution Flow&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;First, let me brief you on the presented implementation and the requirement around it and then will explain how it works.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;The custom implementation is an extension for the Keycloak server to introduce and expose a custom Token Revocation endpoint. The extension implements the &lt;code class=&quot;css-0&quot;&gt;RealmResourceProvider&lt;/code&gt; to expose the custom revocation endpoint per Realm basis.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;You may wonder why a custom revocation endpoint is needed in the Keycloak server; Well, Keycloak’s default Revocation endpoint only supports revoking the Refresh tokens and not the JWT Access Tokens.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;The above-statement is made considering the Keycloak v11 as the latest version in the community while delivering this blog 😃&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;The best-practice and security measure followed by the Keycloak community is to generate JWT Access Tokens with smaller validity. &lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;But let’s assume that we have a requirement and we need to generate tokens with an hour validity. Further, the JWT tokens can be revoked by the client, and once the token is revoked the API Manager Gateway nodes needs to be aware of these in order to block the API requests that are associated with them.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Hence, to achieve the above requirement, I have come up with an extension introducing a custom revoke endpoint to verify the JWT and to send the notifications to the API Manager servers.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;If you are eager to try out the solution, the complete source and instructions on applying those are available in the following Git repository 👏 👏 👌&lt;/p&gt;&lt;div title=&quot;Token Revocation Resource&quot; class=&quot;css-0&quot;&gt;&lt;/div&gt;&lt;p class=&quot;css-0&quot;&gt;Let’s get some more insights into the execution flow and the data flow of our custom implementation to understand the complete picture of the solution.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Given below is the HTTP definition of our custom Token Revocation endpoint in the Keycloak.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;The &lt;code class=&quot;css-0&quot;&gt;{realm-name}&lt;/code&gt; needs to be replaced with the realm name of the Keycloak that you are using to generate the JWT Tokens. Basically the Realm of the Keycloak clietns presented&lt;/p&gt;&lt;/blockquote&gt;&lt;pre class=&quot;prism-code language-http&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;POST /auth/realms/{realm-name}/revoke-token&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;Authorization: Basic (base64&amp;lt;consumerkey:consumersecret&amp;gt;)&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;Content-Type: application/x-www-form-urlencoded&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;token=&amp;lt;JWTToken&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;As soon our custom revocation endpoint receives a request with an active JWT token, the endpoint (implementation) verifies the passed JWT token’s signature, and validity.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;If the token is found active and not expired, the following data are extracted from the presented JWT token to send the notification to the API Manager&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;JTI: JWT Token Identifier&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Expiry Time of the token&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Consumer Key&lt;/li&gt;&lt;/ul&gt;&lt;br/&gt;&lt;p class=&quot;css-0&quot;&gt;👉 Once the required data are extracted, those are composed and passed to the Event Sender to publish them to the Traffic Manager node. The data publishing is handled asynchronously and it is done by invoking the newly introduced Notification endpoint of Internal API of the Traffic Manager node.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Please find the HTTP definition of the Notification endpoint of the Traffic Manager node which is called from our custom extension&lt;/p&gt;&lt;pre class=&quot;prism-code language-http&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;POST /internal/data/v1/notify&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;Host: traffic-manager:9443&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;Authorization: Basic (base64&amp;lt;username:password&amp;gt;)&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;Content-Type: application/json&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &amp;quot;accessToken&amp;quot;: &amp;lt;JTI&amp;gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &amp;quot;expiryTime&amp;quot;: &amp;lt;expiry time&amp;gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &amp;quot;user&amp;quot;: &amp;lt;username&amp;gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &amp;quot;tokenType&amp;quot;: &amp;quot;JWT&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &amp;quot;timeStamp&amp;quot;: &amp;lt;current timestamp&amp;gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &amp;quot;type&amp;quot;: &amp;quot;token_revocation&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &amp;quot;tenantId&amp;quot;: -1234,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &amp;quot;tenantDomain&amp;quot;: &amp;quot;carbon.super&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &amp;quot;consumerKey&amp;quot;: &amp;lt;consumer key&amp;gt;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &amp;quot;eventId&amp;quot;: &amp;lt;random UUID&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;Once the Traffic Manager receives the request, the data is sent to the &lt;strong class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;Token Revocation JMS Event Publisher&lt;/code&gt;&lt;/strong&gt; through a set of pre-defined &lt;strong class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;Event Streams&lt;/code&gt;&lt;/strong&gt; deployed in the Traffic Manager server. And from the &lt;strong class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;Event Publisher&lt;/code&gt;&lt;/strong&gt;, a Token Revocation message is pushed to all subscribed Gateway nodes to mark the specific JTI (JWT) as revoked.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;The Gateway node processes the received JMS message and persists the JTI record along with the Token expiry value in a temporary map named RevokedJWTDataHolder and clears the respective token entries from all other Token caches of the Gateway. This process ensures that the Gateway to not allow API requests if any of the revoked JWT tokens are used.&lt;/p&gt;&lt;br/&gt;&lt;p class=&quot;css-0&quot;&gt;I know that it is hard to visualize the flow that I have explained above in my own words 😕 😟 … &lt;br/&gt;But, I believe you all may be familiar with the following saying&lt;/p&gt;&lt;br/&gt;&lt;p class=&quot;text-center h2 text-muted css-0&quot;&gt;&amp;quot;A Picture Speaks a Thousand Words&amp;quot;&lt;/p&gt;&lt;br/&gt;&lt;p class=&quot;css-0&quot;&gt;Therefore, I have created a high-level diagram plotting the communications and data flows between the servers and components for an easier understanding …👌 👏&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;img src=&quot;/779b310a38d0b6f075c6b4d35c32a150/token-revocation-flow--keycloak.svg&quot; alt=&quot;Token Revocation Flow with Keycloak KM&quot; class=&quot;css-0&quot;/&gt;&lt;/p&gt;&lt;h2 id=&quot;-Voila-&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-Voila-&quot; aria-label=&quot; Voila  permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;🎉 Voila!!! 🎉&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;Hope this blog presented you with a little bit of information and insight on the Token Revocation feature of the WSO2 API Manager and how possible it is to make an extension and to achieve them through other supported Key Managers. 👌&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;Clone the source &amp;gt;  build &amp;gt;  deploy and test the scenarios&lt;/code&gt; and share your experience&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;As this is a custom implementation, there can be bugs. Warmly welcome your contributions to the Repo if you find anything that needs to be fixed or improved. Issues and PRs are welcome 😃&lt;/p&gt;&lt;/blockquote&gt;&lt;h2 id=&quot;Happy-Stacking---️&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Happy-Stacking---%EF%B8%8F&quot; aria-label=&quot;Happy Stacking   ️ permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Happy Stacking !!!! 🤘 ✌️&lt;/h2&gt;</content:encoded></item><item><title><![CDATA[Token Revocation]]></title><link>https://stackcheats.github.io/token-revocation/content/</link><guid isPermaLink="false">https://stackcheats.github.io/token-revocation/content/</guid><pubDate>Sun, 25 Oct 2020 00:00:00 GMT</pubDate><content:encoded>&lt;style data-emotion-css=&quot;sa2dbt&quot;&gt;body{color:text;background-color:var(--theme-ui-colors-background,#fff);}&lt;/style&gt;&lt;style data-emotion-css=&quot;0&quot;&gt;&lt;/style&gt;&lt;div class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;img src=&quot;/9571695a2724e33f64ee02f88946ffb5/token-revocation.svg&quot; alt=&quot;Token Revocation Flow&quot; class=&quot;css-0&quot;/&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded></item><item><title><![CDATA[Blocking Conditions]]></title><link>https://stackcheats.github.io/blocking-conditions/content/</link><guid isPermaLink="false">https://stackcheats.github.io/blocking-conditions/content/</guid><pubDate>Mon, 12 Oct 2020 00:00:00 GMT</pubDate><content:encoded>&lt;style data-emotion-css=&quot;sa2dbt&quot;&gt;body{color:text;background-color:var(--theme-ui-colors-background,#fff);}&lt;/style&gt;&lt;style data-emotion-css=&quot;0&quot;&gt;&lt;/style&gt;&lt;div class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;img src=&quot;/fe6c2c40f47095e15904fef7e90d614b/blocking-condition-flow.svg&quot; alt=&quot;Blocking Conditions Execution Flows&quot; class=&quot;css-0&quot;/&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded></item><item><title><![CDATA[Throttling Execution Flow]]></title><link>https://stackcheats.github.io/throttling-execution-flow/content/</link><guid isPermaLink="false">https://stackcheats.github.io/throttling-execution-flow/content/</guid><pubDate>Sun, 11 Oct 2020 00:00:00 GMT</pubDate><content:encoded>&lt;style data-emotion-css=&quot;sa2dbt&quot;&gt;body{color:text;background-color:var(--theme-ui-colors-background,#fff);}&lt;/style&gt;&lt;style data-emotion-css=&quot;0&quot;&gt;&lt;/style&gt;&lt;div class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;img src=&quot;/2589158b524270fc32c75df964bac7e9/throttling-execution-flow.svg&quot; alt=&quot;Throttling Execution Flow&quot; class=&quot;css-0&quot;/&gt;&lt;/p&gt;&lt;/div&gt;</content:encoded></item><item><title><![CDATA[Retrieve (Custom) API Properties]]></title><link>https://stackcheats.github.io/access-api-custom-properties/</link><guid isPermaLink="false">https://stackcheats.github.io/access-api-custom-properties/</guid><pubDate>Sat, 26 Sep 2020 00:00:00 GMT</pubDate><content:encoded>&lt;style data-emotion-css=&quot;sa2dbt&quot;&gt;body{color:text;background-color:var(--theme-ui-colors-background,#fff);}&lt;/style&gt;&lt;style data-emotion-css=&quot;0&quot;&gt;&lt;/style&gt;&lt;h2 id=&quot;Stratagem&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Stratagem&quot; aria-label=&quot;Stratagem permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Stratagem&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;As out-of-the-box, the WSO2 API Manager supports adding and creating custom API properties. You can learn more about managing custom API properties from &lt;a href=&quot;https://docs.wso2.com/display/AM260/Adding+Custom+Properties+to+APIs&quot; class=&quot;css-0&quot;&gt;here&lt;/a&gt;. In this cheat, we will be looking at how to access these custom API properties from mediation sequences.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;For demo, we have introduced a custom property named &lt;code class=&quot;css-0&quot;&gt;transparent-token&lt;/code&gt; in one of our published API, and we have a requirement to log this property in the logs whenever this API is invoked.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;strong class=&quot;css-0&quot;&gt;Quick Note&lt;/strong&gt; &lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;The following illustrations are developed considering an All-In-One deployment environment of the API Manager server. In a distributed environment, the Gateway component will not have access to the registry space of the Publisher component unless it is shared and configured under the &lt;code class=&quot;css-0&quot;&gt;master-datasources.xml&lt;/code&gt; and &lt;code class=&quot;css-0&quot;&gt;registry.xml&lt;/code&gt;.&lt;/p&gt;&lt;/blockquote&gt;&lt;div class=&quot;css-0&quot;&gt;&lt;pre class=&quot;prism-code language-xml&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;sequence&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;custom-sequence&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;xmlns&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;http://ws.apache.org/ns/synapse&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;level&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;custom&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;      &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;property&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;prop&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;value&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;value-to-be-printed&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;      &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;sequence&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;All introduced custom API properties are stored and persisted inside the local &lt;code class=&quot;css-0&quot;&gt;registry&lt;/code&gt; of the API Manager. We are going to implement a mediation sequence to retrieve our &lt;code class=&quot;css-0&quot;&gt;transparent-token&lt;/code&gt; custom property from the local &lt;code class=&quot;css-0&quot;&gt;registry&lt;/code&gt; space of the API Manager. &lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Since, our requirement is to only log the property, we are going to start implementing a custom mediation sequence with a simple log mediator.&lt;/p&gt;&lt;pre class=&quot;prism-code language-xml&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;sequence&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;custom-sequence&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;xmlns&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;http://ws.apache.org/ns/synapse&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;level&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;custom&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;      &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;property&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;prop&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;expression&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;get-property(&amp;#x27;registry&amp;#x27;)&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;      &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;sequence&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;Change the log mediator to use &lt;code class=&quot;css-0&quot;&gt;expression&lt;/code&gt; in order to use the &lt;code class=&quot;css-0&quot;&gt;get-property()&lt;/code&gt; method to retrieve our custom API property. As the introduced custom property is available in the &lt;code class=&quot;css-0&quot;&gt;registry&lt;/code&gt; space, we are going to specify the scope of our &lt;code class=&quot;css-0&quot;&gt;get-property()&lt;/code&gt; with the &lt;code class=&quot;css-0&quot;&gt;registry&lt;/code&gt; scope.&lt;/p&gt;&lt;pre class=&quot;prism-code language-xml&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;fn:concat(&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &amp;#x27;gov:/apimgt/applicationdata/provider/&amp;#x27;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  $ctx:api.ut.apiPublisher, &amp;#x27;/&amp;#x27;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  $ctx:api.ut.api, &amp;#x27;/&amp;#x27;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  $ctx:api.ut.version, &amp;#x27;/&amp;#x27;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &amp;#x27;api@api_meta.transparent-token&amp;#x27;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;Now let’s construct the registry path to access our &lt;code class=&quot;css-0&quot;&gt;transparent-token&lt;/code&gt; custom property. The registry path is constructed with the use of existing context properties. The &lt;code class=&quot;css-0&quot;&gt;fn:concat&lt;/code&gt; function is used to join the strings and the properties to build a complete registry path.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Following are the usages of the specified context properties&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;$ctx:api.ut.apiPublisher&lt;/code&gt;: Publisher of the API&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;$ctx:api.ut.api&lt;/code&gt;: API name&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;$ctx:api.ut.version&lt;/code&gt;: API version&lt;/li&gt;&lt;/ul&gt;&lt;pre class=&quot;prism-code language-xml&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;sequence&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;custom-sequence&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;xmlns&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;http://ws.apache.org/ns/synapse&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;level&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;custom&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;      &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;property&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;prop&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;expression&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;get-property(&amp;#x27;registry&amp;#x27;, &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;          fn:concat(&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;            &amp;#x27;gov:/apimgt/applicationdata/provider/&amp;#x27;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;            $ctx:api.ut.apiPublisher, &amp;#x27;/&amp;#x27;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;            $ctx:api.ut.api, &amp;#x27;/&amp;#x27;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;            $ctx:api.ut.version, &amp;#x27;/&amp;#x27;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;            &amp;#x27;api@api_meta.transparent-token&amp;#x27;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;          ))&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;      &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;sequence&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;We have now successfully developed a custom mediation sequence to retrieve our custom API property from the &lt;code class=&quot;css-0&quot;&gt;registry&lt;/code&gt; space and to print the value in the logs. &lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Upload the sequence as an &lt;code class=&quot;css-0&quot;&gt;in-mediation&lt;/code&gt; sequence to the API from the Publisher portal and, Save and Publish, Invoke and check the logs.&lt;/p&gt;&lt;/div&gt;&lt;p class=&quot;css-0&quot;&gt;Given below is the complete Synapse sequence (&lt;code class=&quot;css-0&quot;&gt;in-sequence&lt;/code&gt;), we developed to access our custom property named &lt;code class=&quot;css-0&quot;&gt;transparent-token&lt;/code&gt; from the local &lt;code class=&quot;css-0&quot;&gt;registry&lt;/code&gt; space of the API Manager.&lt;/p&gt;&lt;pre class=&quot;prism-code language-xml&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;sequence&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;custom-sequence&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;xmlns&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;http://ws.apache.org/ns/synapse&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;level&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;custom&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;      &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;property&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;prop&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;expression&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;get-property(&amp;#x27;registry&amp;#x27;, &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;          fn:concat(&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;            &amp;#x27;gov:/apimgt/applicationdata/provider/&amp;#x27;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;            $ctx:api.ut.apiPublisher, &amp;#x27;/&amp;#x27;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;            $ctx:api.ut.api, &amp;#x27;/&amp;#x27;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;            $ctx:api.ut.version, &amp;#x27;/&amp;#x27;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;            &amp;#x27;api@api_meta.transparent-token&amp;#x27;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;          ))&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;sequence&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;</content:encoded></item><item><title><![CDATA[WSO2 API Manager & Azure AD (OIDC) SSO]]></title><link>https://stackcheats.github.io/wso2-api-manager-azure-ad-oidc-sso/content/</link><guid isPermaLink="false">https://stackcheats.github.io/wso2-api-manager-azure-ad-oidc-sso/content/</guid><pubDate>Mon, 27 Apr 2020 00:00:00 GMT</pubDate><content:encoded>&lt;style data-emotion-css=&quot;sa2dbt&quot;&gt;body{color:text;background-color:var(--theme-ui-colors-background,#fff);}&lt;/style&gt;&lt;style data-emotion-css=&quot;0&quot;&gt;&lt;/style&gt;&lt;h2 id=&quot;Greetings-Everyone--&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Greetings-Everyone--&quot; aria-label=&quot;Greetings Everyone   permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Greetings Everyone !!! 👋&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;In this medium, I will be running over on how to configure Federated OpenID Connect SSO flow between WSO2 API Manager and Azure AD service.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;I will be using the WSO2 API Manager 3.1 to illustrate the configurations and the flows.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;You can refer to one of my OIDC SSO mediums along with this to configure older versions of WSO2 API Manager.&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;a href=&quot;https://medium.com/@athiththan11/wso2-api-manager-gluu-sso-oidc-8e0bc3f59b18&quot; class=&quot;css-0&quot;&gt;OIDC SSO flow with Gluu&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;a href=&quot;https://medium.com/@athiththan11/wso2-api-manager-keycloak-sso-50bffa2353c7&quot; class=&quot;css-0&quot;&gt;OIDC SSO with Keycloak&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;a href=&quot;https://medium.com/@athiththan11/wso2-api-manager-okta-sso-f04e9c6141e1&quot; class=&quot;css-0&quot;&gt;OIDC SSO with Okta&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;I hope you’ll find this one useful and illustrative enough to go through the configurations … 👐&lt;/p&gt;&lt;h2 id=&quot;Azure&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Azure&quot; aria-label=&quot;Azure permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Azure&lt;/h2&gt;&lt;h3 id=&quot;-App-Registration&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-App-Registration&quot; aria-label=&quot; App Registration permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;✋ App Registration&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;I hope you have an active Azure account to continue with the demo. If not, click &lt;a href=&quot;https://portal.azure.com/#home&quot; class=&quot;css-0&quot;&gt;here&lt;/a&gt; and register for a trial account to continue with the demonstrations.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Once, you are done with the registration, direct to the &lt;a href=&quot;https://portal.azure.com/#home&quot; class=&quot;css-0&quot;&gt;Azure portal&lt;/a&gt; and log-in with your credentials. After a successful login, you will find a similar screen as prompted below&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;If you can’t find the Azure Active Directory, search for it using the search bar presented at the top&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/bc8266d4dc580cc9e802a8cae69a640e/3643c/azure_portal_services.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:12.837837837837837%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAADCAIAAAAcOLh5AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAf0lEQVQI112OSw7CMAwFc/8LsoANRFUaSFvS5mMT28FEXTF6ku15G5sYYx+wdNH0XxQZQ87rj1Maref00e36rAn5tYNdK7FcXFE5LTciCDnHWhrxUqALYbIislc2iHB/2Nba7H0uJeVypAwAdnIqt/eGiCEEfVBb5z0TxSEP4C/Fma3zeIvdfwAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Azure Portal Services&quot; title=&quot;Azure Portal Services&quot; src=&quot;/static/bc8266d4dc580cc9e802a8cae69a640e/6d370/azure_portal_services.png&quot; srcSet=&quot;/static/bc8266d4dc580cc9e802a8cae69a640e/c5084/azure_portal_services.png 148w,/static/bc8266d4dc580cc9e802a8cae69a640e/60cc9/azure_portal_services.png 295w,/static/bc8266d4dc580cc9e802a8cae69a640e/6d370/azure_portal_services.png 590w,/static/bc8266d4dc580cc9e802a8cae69a640e/540ae/azure_portal_services.png 885w,/static/bc8266d4dc580cc9e802a8cae69a640e/2561a/azure_portal_services.png 1180w,/static/bc8266d4dc580cc9e802a8cae69a640e/3643c/azure_portal_services.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Select the &lt;strong class=&quot;css-0&quot;&gt;Azure Active Directory&lt;/strong&gt;. Then, click on &lt;strong class=&quot;css-0&quot;&gt;Create Directory&lt;/strong&gt; in the top-bar to create a Directory.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;This is because we don’t have any registered Active Directory to continue with our demo. Hence, we will be creating a new Directory.&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/f2825a4176e1fed7b985b5f6b1dad2dd/9d567/create_directory_nav.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:5.405405405405405%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAABCAIAAABR8BlyAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAOklEQVQI1w3KSRKAMAgEQP//V4qZIAmLUdPnvvr9aDdUCa5Yh7vP6fXsYQaAhEdj2DlVFb1VVUQy8wfXAzlRKTfJ2AAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Create AD Nav&quot; title=&quot;Create AD Nav&quot; src=&quot;/static/f2825a4176e1fed7b985b5f6b1dad2dd/6d370/create_directory_nav.png&quot; srcSet=&quot;/static/f2825a4176e1fed7b985b5f6b1dad2dd/c5084/create_directory_nav.png 148w,/static/f2825a4176e1fed7b985b5f6b1dad2dd/60cc9/create_directory_nav.png 295w,/static/f2825a4176e1fed7b985b5f6b1dad2dd/6d370/create_directory_nav.png 590w,/static/f2825a4176e1fed7b985b5f6b1dad2dd/540ae/create_directory_nav.png 885w,/static/f2825a4176e1fed7b985b5f6b1dad2dd/2561a/create_directory_nav.png 1180w,/static/f2825a4176e1fed7b985b5f6b1dad2dd/9d567/create_directory_nav.png 1360w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;On the following form, select the &lt;strong class=&quot;css-0&quot;&gt;Azure Active Directory&lt;/strong&gt; and click on &lt;strong class=&quot;css-0&quot;&gt;Next&lt;/strong&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/f3e4ebfdda06353ddc6bde845b26dde4/f97d7/create_active_directory.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:22.2972972972973%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAECAIAAAABPYjBAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAV0lEQVQI15WOSwrAIAxEc//LVkXzMYmpWuiqIH08htkMDJRFbhtZMBHxI+/OYiM+gYbSkKUbT0VJelc3j6M+AipyyjO0VLpSmU3U1eLo3MP7AbuzevzhBunP69igitBvAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Create Active Directory&quot; title=&quot;Create Active Directory&quot; src=&quot;/static/f3e4ebfdda06353ddc6bde845b26dde4/6d370/create_active_directory.png&quot; srcSet=&quot;/static/f3e4ebfdda06353ddc6bde845b26dde4/c5084/create_active_directory.png 148w,/static/f3e4ebfdda06353ddc6bde845b26dde4/60cc9/create_active_directory.png 295w,/static/f3e4ebfdda06353ddc6bde845b26dde4/6d370/create_active_directory.png 590w,/static/f3e4ebfdda06353ddc6bde845b26dde4/540ae/create_active_directory.png 885w,/static/f3e4ebfdda06353ddc6bde845b26dde4/2561a/create_active_directory.png 1180w,/static/f3e4ebfdda06353ddc6bde845b26dde4/f97d7/create_active_directory.png 2000w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Enter the following&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Organization Name: &lt;code class=&quot;css-0&quot;&gt;Demo OIDC Organization&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Initial Domain Name: &lt;code class=&quot;css-0&quot;&gt;demooidcorg&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Country/Region: &lt;code class=&quot;css-0&quot;&gt;United States&lt;/code&gt; (you choose any)&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/8e0cafe7f0fe0ca51925d967c7f09840/f97d7/ad_configuration_section.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:22.2972972972973%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAECAIAAAABPYjBAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAW0lEQVQI14XPwRKAIAgEUP//Z1PAFYyB9NJ0qd7smV1Ka+04aM7T3TMytvzOrfBGmQFRqnKq/8YwwVBYAaBD1xmixixm6n9s2sAwtXJvWP211vWFCPcu8dz34gICBusedPGrtwAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Active Directory Configuration&quot; title=&quot;Active Directory Configuration&quot; src=&quot;/static/8e0cafe7f0fe0ca51925d967c7f09840/6d370/ad_configuration_section.png&quot; srcSet=&quot;/static/8e0cafe7f0fe0ca51925d967c7f09840/c5084/ad_configuration_section.png 148w,/static/8e0cafe7f0fe0ca51925d967c7f09840/60cc9/ad_configuration_section.png 295w,/static/8e0cafe7f0fe0ca51925d967c7f09840/6d370/ad_configuration_section.png 590w,/static/8e0cafe7f0fe0ca51925d967c7f09840/540ae/ad_configuration_section.png 885w,/static/8e0cafe7f0fe0ca51925d967c7f09840/2561a/ad_configuration_section.png 1180w,/static/8e0cafe7f0fe0ca51925d967c7f09840/f97d7/ad_configuration_section.png 2000w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;and &lt;strong class=&quot;css-0&quot;&gt;Review + Create&lt;/strong&gt;, then select &lt;strong class=&quot;css-0&quot;&gt;Create&lt;/strong&gt;. It will take a moment to create an Active Directory in your environment. After successful creation, you will receive a notification. Click on the link to direct to the created Active Directory.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;On the left navigation panel, select the &lt;strong class=&quot;css-0&quot;&gt;App Registration&lt;/strong&gt; to register an OpenID Connect client.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;The following screen can be different to you, if you have any registered Apps&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/769a0e69e8b2dea58ce16df3144fa137/f97d7/app_registration.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:56.75675675675676%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA7UlEQVQoz52S3W7DMAiF8/6PuC5dW6lrbSf+NzFOjEdUqWq2i21B34VlODqA6BKAHWUwg9Gj1SPmMpeZyVgKP+aFWZbKcLRGT6hSp523zlei6wCHi7rc9PlzON/0VRrjwUNxEQFpKg2wWSCTKmOhOqidCwFzJiI2gmlCzIhYcFLG93f3IcNReKYX/iQDp6jWB+zd2RCC9/zbNkE65Ld77EV6F5E5iHhUked4LVrFUoiUUvt/dELpQUrumTvfWLdW16Vs+C62zllr1+ofud+dYwxa63k7zF/Fzo5KDev2dohjgseq97TNF8IHtU/8BVKNhaw0FvZmAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;App Registration&quot; title=&quot;App Registration&quot; src=&quot;/static/769a0e69e8b2dea58ce16df3144fa137/6d370/app_registration.png&quot; srcSet=&quot;/static/769a0e69e8b2dea58ce16df3144fa137/c5084/app_registration.png 148w,/static/769a0e69e8b2dea58ce16df3144fa137/60cc9/app_registration.png 295w,/static/769a0e69e8b2dea58ce16df3144fa137/6d370/app_registration.png 590w,/static/769a0e69e8b2dea58ce16df3144fa137/540ae/app_registration.png 885w,/static/769a0e69e8b2dea58ce16df3144fa137/2561a/app_registration.png 1180w,/static/769a0e69e8b2dea58ce16df3144fa137/f97d7/app_registration.png 2000w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Click on the &lt;strong class=&quot;css-0&quot;&gt;New Registration&lt;/strong&gt; and input the following&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Name: &lt;code class=&quot;css-0&quot;&gt;WSO2APIM&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Supported Account Types: &lt;code class=&quot;css-0&quot;&gt;Personal Microsoft Accounts Only&lt;/code&gt; (I have chosen this as per demo purposes)&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Redirect URI: &lt;code class=&quot;css-0&quot;&gt;Web&lt;/code&gt; &amp;amp; &lt;code class=&quot;css-0&quot;&gt;https://localhost:9443/commonauth&lt;/code&gt; (change the hostname according to your environment)&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/291a543da0ffef4481e74ae3b17db6b9/3643c/app_create.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:60.810810810810814%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAIAAADtbgqsAAAACXBIWXMAAAsTAAALEwEAmpwYAAABNElEQVQoz51S2XKDMAzk/78xeUhbAgYMvi2fyRpemCbtTLujEUJjWauVuxSDVurxL3TOOcbGbd2EEEorKWULECktNmGMaafqd6vAo3aBIp9WI01wkVxwxsO8JW/IaU82JMqvFn0suaCY0EprjZ7Wut9YnpsftLWxjLFlnodh4JzjItyScy6lHB5IKcG/mVm5MPN15Sifp2nC/MuyrEhwfnhcZ62NMb4phtpGS6P1tkOIphxEQ6yUPHIQFfUQz+7AjETUikOu0idLuZaaf0B6AZJ751wophDbf9P/T3sGrev1ervdLpfLOI5iJ41p8V23VSqplALhtvg9gJwHf3TqEEHtY2BIxUY29uPXR99/3u/9oIQiR+RD83sA5U60oVgIbYuNc82ptHdi8VTc8WBKqifLZ9pPGJS415ZUQWgAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;App Registration&quot; title=&quot;App Registration&quot; src=&quot;/static/291a543da0ffef4481e74ae3b17db6b9/6d370/app_create.png&quot; srcSet=&quot;/static/291a543da0ffef4481e74ae3b17db6b9/c5084/app_create.png 148w,/static/291a543da0ffef4481e74ae3b17db6b9/60cc9/app_create.png 295w,/static/291a543da0ffef4481e74ae3b17db6b9/6d370/app_create.png 590w,/static/291a543da0ffef4481e74ae3b17db6b9/540ae/app_create.png 885w,/static/291a543da0ffef4481e74ae3b17db6b9/2561a/app_create.png 1180w,/static/291a543da0ffef4481e74ae3b17db6b9/3643c/app_create.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;and &lt;strong class=&quot;css-0&quot;&gt;Register&lt;/strong&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;After successful creation, you will be directed to a general info page of the registered application. On the following screen copy and save the Client ID as we will be in need to configure the WSO2 API Manager.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Then, click on the &lt;strong class=&quot;css-0&quot;&gt;Certificates &amp;amp; Secrets&lt;/strong&gt; section in the left-sidebar, and select the &lt;strong class=&quot;css-0&quot;&gt;New Client Secret&lt;/strong&gt; to generate a secret for our &lt;code class=&quot;css-0&quot;&gt;WSO2APIM&lt;/code&gt; app&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/2c01522d86734c16d4310a8bc8feecf3/3643c/certs_secrets.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:41.891891891891895%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAIAAAB2/0i6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAt0lEQVQY04WQ2xKDIAxE/f+/tA94aZ2SBBVEodtQnTrjjOcpsNlkoSKWeZqyYhXv/bSDelZCCDHGdV3zH9VgCVo5iHPGGBFB36KMSqnRhvpkfg3PR10zEWSsIqKyCjshR6W0ppSO+mcmkaYxIfiUM7LBs23bquQ7qjc7ZsJIeBC4bVtmLk8dd5DoqE9mK06YIRdz13XoKBGSgimQcHOxmYj7vnfOlRcu+lVfq5pvYk8hkLWXg2/5AOSq1IixihyMAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Certificates &amp;amp; Secrets&quot; title=&quot;Certificates &amp;amp; Secrets&quot; src=&quot;/static/2c01522d86734c16d4310a8bc8feecf3/6d370/certs_secrets.png&quot; srcSet=&quot;/static/2c01522d86734c16d4310a8bc8feecf3/c5084/certs_secrets.png 148w,/static/2c01522d86734c16d4310a8bc8feecf3/60cc9/certs_secrets.png 295w,/static/2c01522d86734c16d4310a8bc8feecf3/6d370/certs_secrets.png 590w,/static/2c01522d86734c16d4310a8bc8feecf3/540ae/certs_secrets.png 885w,/static/2c01522d86734c16d4310a8bc8feecf3/2561a/certs_secrets.png 1180w,/static/2c01522d86734c16d4310a8bc8feecf3/3643c/certs_secrets.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Enter the following in the prompted modal&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Description: &lt;code class=&quot;css-0&quot;&gt;WSO2APIM OIDC Secret&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Expires: &lt;code class=&quot;css-0&quot;&gt;Never&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/6e31f72b600bda44162264c7bcd47155/3643c/create_client_secret.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:22.2972972972973%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAECAIAAAABPYjBAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAQUlEQVQI153LwQ3AIAwEQfffWV6pIfwTQJaFLYc7aoDRflfq1+rbMnLm3Ao/RFV9OElsIijd3Dx4RK7H7tIR42BelPDstFPS7GoAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Add Client Secret&quot; title=&quot;Add Client Secret&quot; src=&quot;/static/6e31f72b600bda44162264c7bcd47155/6d370/create_client_secret.png&quot; srcSet=&quot;/static/6e31f72b600bda44162264c7bcd47155/c5084/create_client_secret.png 148w,/static/6e31f72b600bda44162264c7bcd47155/60cc9/create_client_secret.png 295w,/static/6e31f72b600bda44162264c7bcd47155/6d370/create_client_secret.png 590w,/static/6e31f72b600bda44162264c7bcd47155/540ae/create_client_secret.png 885w,/static/6e31f72b600bda44162264c7bcd47155/2561a/create_client_secret.png 1180w,/static/6e31f72b600bda44162264c7bcd47155/3643c/create_client_secret.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;and &lt;strong class=&quot;css-0&quot;&gt;Add&lt;/strong&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Copy and save the generated Client Secret.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;After making the note, click on the &lt;strong class=&quot;css-0&quot;&gt;API Permissions&lt;/strong&gt; section in the left navigation panel to configure the OpenID and Profile scope permissions to our App.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;You will see a similar screen as follows after clicking on the &lt;strong class=&quot;css-0&quot;&gt;API Permissions&lt;/strong&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/4f9efa16fd88bdf4d35390106ddf48ee/3643c/api_permission.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:22.972972972972975%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAIAAADKYVtkAAAACXBIWXMAAAsTAAALEwEAmpwYAAAApElEQVQY02VPWw7DIAzj/rcsEoXxWFW1QHiMziVSPzYLRcFxEkccx3FN1FrDBJjee+uf2u7Y5wP6H0SMkZtzJinlIhetV22MtmF9eWW8cQGaNEFEnDAjnPOYwf0grPX5xl3etndOqZQyxkC1tXaeJ/rhkfVCKQWrcAUFlWa3XCpkFTr4R8SkMYEdGIQaEnzRIuB03/dCBBbD5o6LL3zu5M0/APkFJYgiThDfvOgAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;API Permission&quot; title=&quot;API Permission&quot; src=&quot;/static/4f9efa16fd88bdf4d35390106ddf48ee/6d370/api_permission.png&quot; srcSet=&quot;/static/4f9efa16fd88bdf4d35390106ddf48ee/c5084/api_permission.png 148w,/static/4f9efa16fd88bdf4d35390106ddf48ee/60cc9/api_permission.png 295w,/static/4f9efa16fd88bdf4d35390106ddf48ee/6d370/api_permission.png 590w,/static/4f9efa16fd88bdf4d35390106ddf48ee/540ae/api_permission.png 885w,/static/4f9efa16fd88bdf4d35390106ddf48ee/2561a/api_permission.png 1180w,/static/4f9efa16fd88bdf4d35390106ddf48ee/3643c/api_permission.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Select the &lt;strong class=&quot;css-0&quot;&gt;Add a Permission&lt;/strong&gt; button arranged in the top to add new permissions to the existing tree. Once you click on the &lt;strong class=&quot;css-0&quot;&gt;Add a Permission&lt;/strong&gt; button, you will see a side-window popped-up with the following options&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/e9772283c6469355be0b5522b82a32d9/3643c/api_permission_list.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:42.567567567567565%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAIAAAC9o5sfAAAACXBIWXMAAAsTAAALEwEAmpwYAAABBElEQVQoz4WR206FMBBF+f8nE3/DRP0Nc14kvghyLS2tnEBvgGDb49DiJSbkrKTNps2mM3sijBvG6LouxphPTxDW2ss1IkRYQzshpRCi7/thGKZp4pyv63rdLCVXgp+/+fE45448UFS4jR6f0P2pbQnOsqwoinEcl2X58MzzDFWEHT7hHDQI69nMt3enm4eXtsVxHJdlSSnFEEPTYA8hJGjqAcEYg2d3s7PmAiv8zG1YBxe/Nf+rPzh3c3XWpKXvjCGEuq4z1qnymeEKE2hle1lrHZr8yx7YW15Bt1Bwnud1XUNLBFVJ8pokSZqmsEspD9NWUoTZBkArpWFi3AOTg5yOkv8CQNYDrLFpx0YAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;API Permission List&quot; title=&quot;API Permission List&quot; src=&quot;/static/e9772283c6469355be0b5522b82a32d9/6d370/api_permission_list.png&quot; srcSet=&quot;/static/e9772283c6469355be0b5522b82a32d9/c5084/api_permission_list.png 148w,/static/e9772283c6469355be0b5522b82a32d9/60cc9/api_permission_list.png 295w,/static/e9772283c6469355be0b5522b82a32d9/6d370/api_permission_list.png 590w,/static/e9772283c6469355be0b5522b82a32d9/540ae/api_permission_list.png 885w,/static/e9772283c6469355be0b5522b82a32d9/2561a/api_permission_list.png 1180w,/static/e9772283c6469355be0b5522b82a32d9/3643c/api_permission_list.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;choose the &lt;strong class=&quot;css-0&quot;&gt;Microsoft Graph&lt;/strong&gt;. On the following screen, select the following permissions&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;email&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;openid&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;profile&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/6d267bf36ad0b9ea30af48546c856fcc/3643c/required_permissions.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:63.51351351351351%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAIAAAAmMtkJAAAACXBIWXMAAAsTAAALEwEAmpwYAAABUklEQVQoz5VRbW+EIBjj//+/2y7ZUOb5goCI+IaK3Op58cN2mVnTENSntFTSutUMy7qu3q/3f4JE3F4/vyL6EVGqpOz6sXfz6rfjzsXKNPSWsaxI8jLJ+Y3LhMtcVrzaA4UQ7tv6Uixtd3m7XK/vlNI8z7IsBdP0xnlR6OaWpowxzrkxxlrbdl3bttiMo9vEuhtyoQqphK5lbaQ2WAVW01Tt2DSbBM7L4nfO8wJOs1/DneBjKRUXsh9GHwKSPulBvNjgUeYDR3rrFlRDhmEoy3KaphC2ylG698tB4LF5oqoqpaQQZWsbzJN5niHuug4OGA2vq3lifgBOmNzujGmUkSSJUqquNYIcPuEXjlP2R4KsEMMcl4ey73sUiiDY7z/qDxA4wFMIgRJ/ZA5nIPCJ6CeLI17koFbK1PqUta6QkDjnGItZHFuLf9ogrXPjKcdxQHHf4Mvu8Y+NIXkAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Required Permissions&quot; title=&quot;Required Permissions&quot; src=&quot;/static/6d267bf36ad0b9ea30af48546c856fcc/6d370/required_permissions.png&quot; srcSet=&quot;/static/6d267bf36ad0b9ea30af48546c856fcc/c5084/required_permissions.png 148w,/static/6d267bf36ad0b9ea30af48546c856fcc/60cc9/required_permissions.png 295w,/static/6d267bf36ad0b9ea30af48546c856fcc/6d370/required_permissions.png 590w,/static/6d267bf36ad0b9ea30af48546c856fcc/540ae/required_permissions.png 885w,/static/6d267bf36ad0b9ea30af48546c856fcc/2561a/required_permissions.png 1180w,/static/6d267bf36ad0b9ea30af48546c856fcc/3643c/required_permissions.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;and &lt;strong class=&quot;css-0&quot;&gt;Add Permission&lt;/strong&gt; (leave the existing permissions as it is). You will end up in a similar screen as below with all the configured API Permissions&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/ae263fe24e6910c4cd19015cecd2197a/3643c/configured_permissions.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:35.13513513513513%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAIAAACHqfpvAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA1ElEQVQY03VQ0RKDIAzj/z9yO3bqHEMK6Bwo4CLdeFuOcr0WkrQihEBE3vt1XY/jKCUjjnoDuSKl1JKWoyuIzOVylfLWdf04jg9tRk2DMndl1ETzPC8VrwokXMENFoGAsn4+0bPWToZwlDbakHUe9NVOYcHq5qwwBML6ZVBEbobLbYsxBDDXP+z9/AlejAYBjInW1zb6ccvvLYMQj5xz7BNPY4z5B5Yqv0WwkVP5HRMtO1ooSSkxed/3WmsWaWtrtltFINv3tITEfBDkfcAC9p//gJU/w1OWqX133HkAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Configured Permissions&quot; title=&quot;Configured Permissions&quot; src=&quot;/static/ae263fe24e6910c4cd19015cecd2197a/6d370/configured_permissions.png&quot; srcSet=&quot;/static/ae263fe24e6910c4cd19015cecd2197a/c5084/configured_permissions.png 148w,/static/ae263fe24e6910c4cd19015cecd2197a/60cc9/configured_permissions.png 295w,/static/ae263fe24e6910c4cd19015cecd2197a/6d370/configured_permissions.png 590w,/static/ae263fe24e6910c4cd19015cecd2197a/540ae/configured_permissions.png 885w,/static/ae263fe24e6910c4cd19015cecd2197a/2561a/configured_permissions.png 1180w,/static/ae263fe24e6910c4cd19015cecd2197a/3643c/configured_permissions.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;h3 id=&quot;-Group-Registration&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-Group-Registration&quot; aria-label=&quot; Group Registration permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;✋ Group Registration&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Since we are using a trial account to experiment and configure the SSO flow with Azure AD, we will be creating a &lt;strong class=&quot;css-0&quot;&gt;Security Group&lt;/strong&gt; named &lt;strong class=&quot;css-0&quot;&gt;Subscriber&lt;/strong&gt; to represent the Subscriber role in the Azure service.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;If you have an active paid subscription, then you can follow on creating Roles in the Azure service and assign them to the Users. In addition, you can also create Groups in the Azure AD and assign it to your Users&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;Go to our &lt;strong class=&quot;css-0&quot;&gt;Demo OIDC Organization&lt;/strong&gt; and click on the &lt;strong class=&quot;css-0&quot;&gt;Groups&lt;/strong&gt;. You will find a similar window&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/84f73219a8981dc3b339773e4748de22/f97d7/azure_ad_groups.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:14.18918918918919%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAADCAIAAAAcOLh5AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAfUlEQVQI1zXJgQ7DIAgE0P7/by5dTbVaSxUB0ZF1Ixfycrfs6+Hf0b32wyW3xrAlv8XgUnAnJDw94MUNhEDaP3T/sEAuWFqrVKDmdEG+uQneKCTKg1Fs6qxWCnWDfbPBssQYe+9zTiJiYYOqVqxjDHOpxWIQYdX+rMw0v/cBUKetj7jnNfgAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Azure AD Groups&quot; title=&quot;Azure AD Groups&quot; src=&quot;/static/84f73219a8981dc3b339773e4748de22/6d370/azure_ad_groups.png&quot; srcSet=&quot;/static/84f73219a8981dc3b339773e4748de22/c5084/azure_ad_groups.png 148w,/static/84f73219a8981dc3b339773e4748de22/60cc9/azure_ad_groups.png 295w,/static/84f73219a8981dc3b339773e4748de22/6d370/azure_ad_groups.png 590w,/static/84f73219a8981dc3b339773e4748de22/540ae/azure_ad_groups.png 885w,/static/84f73219a8981dc3b339773e4748de22/2561a/azure_ad_groups.png 1180w,/static/84f73219a8981dc3b339773e4748de22/f97d7/azure_ad_groups.png 2000w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Click on the New Group placed in the top and fill the following on the prompted window&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Group Type: &lt;code class=&quot;css-0&quot;&gt;Security&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Group Name: &lt;code class=&quot;css-0&quot;&gt;Subscriber&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Group Description: &lt;code class=&quot;css-0&quot;&gt;Group for Subscriber&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/32e5d662fb532d51d6b7e618b23a2fad/3643c/create_new_group.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:60.13513513513513%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAIAAADtbgqsAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAvElEQVQoz5WR27KDIAxF+f/fdKaiVqT2cEmyA02dvh9csxnysggEByDlXEtpd+gXjoimaYoxNlWMoapmWeGoVj/P+75TIQwjInaEo8Lz5Pc1cBYuo6HMYLharPPiH35btppJpYH13whBoY5J1nl9Ls/Vb/mvDMsCgbPbv2I8zzOlZO/nYWzmzrZ4BAj3pt9BDEYu2Uof3mfRI0P094GDfDuHI1a+K16yAEt4H4leRRPrPdkWWhftjIZ7bv8AKPDB/8OnK0sAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Create New Group&quot; title=&quot;Create New Group&quot; src=&quot;/static/32e5d662fb532d51d6b7e618b23a2fad/6d370/create_new_group.png&quot; srcSet=&quot;/static/32e5d662fb532d51d6b7e618b23a2fad/c5084/create_new_group.png 148w,/static/32e5d662fb532d51d6b7e618b23a2fad/60cc9/create_new_group.png 295w,/static/32e5d662fb532d51d6b7e618b23a2fad/6d370/create_new_group.png 590w,/static/32e5d662fb532d51d6b7e618b23a2fad/540ae/create_new_group.png 885w,/static/32e5d662fb532d51d6b7e618b23a2fad/2561a/create_new_group.png 1180w,/static/32e5d662fb532d51d6b7e618b23a2fad/3643c/create_new_group.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Then click on the &lt;strong class=&quot;css-0&quot;&gt;No owners selected&lt;/strong&gt;. On the prompted side-window, select our Azure account and &lt;strong class=&quot;css-0&quot;&gt;Add Owner&lt;/strong&gt;. Then click on the &lt;strong class=&quot;css-0&quot;&gt;No members selected&lt;/strong&gt; and perform the same as described above and click on &lt;strong class=&quot;css-0&quot;&gt;Create&lt;/strong&gt; to create the Subscriber Group.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/7b75ce68826b95ebf751008a0fd6a572/3643c/create_group.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:60.13513513513513%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAIAAADtbgqsAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAuUlEQVQoz5WSzQ6DIBCE9/1f06QiClKrwP5hVw+9Fr8MgcvMwgQQkSPnWkp7wnkDiDgMQ0qpqUofqmouOwDW6sYxhIAFpRtmtgjAQuPggo+UmUqvMJOQQC02eXIvN09zzajchPSvGEVFgZD96Jdp8W7Oe+k2s7CA3f6d0rZtx3HY+6kb6xxsS2sUxtbU0nrFt9mqm9O+ZvlUPR9yTY5rqkjtfMw12a973Gmr1t+zBLAl7SRtJL9v18sXPB3CHpq/ZTYAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Group Creation&quot; title=&quot;Group Creation&quot; src=&quot;/static/7b75ce68826b95ebf751008a0fd6a572/6d370/create_group.png&quot; srcSet=&quot;/static/7b75ce68826b95ebf751008a0fd6a572/c5084/create_group.png 148w,/static/7b75ce68826b95ebf751008a0fd6a572/60cc9/create_group.png 295w,/static/7b75ce68826b95ebf751008a0fd6a572/6d370/create_group.png 590w,/static/7b75ce68826b95ebf751008a0fd6a572/540ae/create_group.png 885w,/static/7b75ce68826b95ebf751008a0fd6a572/2561a/create_group.png 1180w,/static/7b75ce68826b95ebf751008a0fd6a572/3643c/create_group.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/d5f4e293c6128d7ac7f069ebe68728b5/f97d7/subscriber_group.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:10.135135135135135%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAACCAIAAADXZGvcAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAVklEQVQI1yWLSQ7AIAwD+f87q7Y3KJCg7I3A8mFkjcuA3md3N2ZqrY4xRAQAzCwi5pzJCcx8FmFOIXbK811vvcNDVVNdayEAIvpW80lECaZ6Fj5n9+wPwWx04LWdpN8AAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Subscriber Group&quot; title=&quot;Subscriber Group&quot; src=&quot;/static/d5f4e293c6128d7ac7f069ebe68728b5/6d370/subscriber_group.png&quot; srcSet=&quot;/static/d5f4e293c6128d7ac7f069ebe68728b5/c5084/subscriber_group.png 148w,/static/d5f4e293c6128d7ac7f069ebe68728b5/60cc9/subscriber_group.png 295w,/static/d5f4e293c6128d7ac7f069ebe68728b5/6d370/subscriber_group.png 590w,/static/d5f4e293c6128d7ac7f069ebe68728b5/540ae/subscriber_group.png 885w,/static/d5f4e293c6128d7ac7f069ebe68728b5/2561a/subscriber_group.png 1180w,/static/d5f4e293c6128d7ac7f069ebe68728b5/f97d7/subscriber_group.png 2000w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Select our &lt;strong class=&quot;css-0&quot;&gt;Subscriber&lt;/strong&gt; group from the list and make a note of the &lt;strong class=&quot;css-0&quot;&gt;Object ID&lt;/strong&gt; value.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;This is to map the Groups with the API Manager’s internal roles. As of the demo (for simplicity), we will be using the Object IDs of the groups to map the roles in the API Manager&lt;/p&gt;&lt;/blockquote&gt;&lt;h3 id=&quot;-Add-Groups-Claim&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-Add-Groups-Claim&quot; aria-label=&quot; Add Groups Claim permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;👉 Add Groups Claim&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Now we have to configure our Azure app to populate the Groups claim in the ID Token. Go to our Azure app &lt;code class=&quot;css-0&quot;&gt;WSO2APIM&lt;/code&gt; and click on &lt;strong class=&quot;css-0&quot;&gt;Token Configurations&lt;/strong&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/0a4667fd713e122fd6d85062c0b4dbd2/f97d7/token_configuration.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:19.594594594594593%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAECAIAAAABPYjBAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAbUlEQVQI13WOQQ6AIAwE+f9L1SpwgCKUghswMTFhTk2z26mxzhMd3ns6z1JK/9NW1FpNiFFVkXLOEREzhxBSSjnnGxTR1voCc1krIphiHDVmOzb68lWhwmtwQjB9Zt83CJGGaq7aQjWPjSsyMw+1l+sIYHaTLgAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Token Configuration&quot; title=&quot;Token Configuration&quot; src=&quot;/static/0a4667fd713e122fd6d85062c0b4dbd2/6d370/token_configuration.png&quot; srcSet=&quot;/static/0a4667fd713e122fd6d85062c0b4dbd2/c5084/token_configuration.png 148w,/static/0a4667fd713e122fd6d85062c0b4dbd2/60cc9/token_configuration.png 295w,/static/0a4667fd713e122fd6d85062c0b4dbd2/6d370/token_configuration.png 590w,/static/0a4667fd713e122fd6d85062c0b4dbd2/540ae/token_configuration.png 885w,/static/0a4667fd713e122fd6d85062c0b4dbd2/2561a/token_configuration.png 1180w,/static/0a4667fd713e122fd6d85062c0b4dbd2/f97d7/token_configuration.png 2000w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Click on the &lt;strong class=&quot;css-0&quot;&gt;Add Groups Claim&lt;/strong&gt; and tick the &lt;strong class=&quot;css-0&quot;&gt;Security Groups&lt;/strong&gt;. Then, expand the &lt;strong class=&quot;css-0&quot;&gt;ID&lt;/strong&gt; section and choose the &lt;strong class=&quot;css-0&quot;&gt;Group ID&lt;/strong&gt; and enable &lt;strong class=&quot;css-0&quot;&gt;Emit groups as role claims&lt;/strong&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/2d7777d2c2163ac97e1be3e72128a006/77666/group_claim_configuration.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:81.75675675675677%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAIAAACZeshMAAAACXBIWXMAAAsTAAALEwEAmpwYAAABZUlEQVQoz51SSXKDMBDk/y/KJ3LLJQfHxqZcbJJAu0CgNBrCJRU7SZdqqgXTs2mKENe7sHIclFLjOMJKKUG01iDGGLqqDOMmExacZV1TSkVYUi3DOAil9eEEYq0FIQv9MAxCcGmc8ovyMZI4rUswUmujtUKePUMmOoejiDHG9A0F09PL6/lelafTR1mWjLG+7znnLKPrurZtYUMI8F6/zi42IZatFHzzQ23pLyjmaRo4y9HbPgO5KPmRn74jNCwKQVO7eJpmIQZywg9MBaSua/SJ38s21w1Ejusu3jpZ1/QvFPM8V1V1vV5vtxvI5XIh7r2nuD9hz4xJ4iUP16O2x9jFgPZR22CtgfKo6mk7BTmMNjQdx8RpN345hT1z8A5TbpqmzTuBbXbOoRfq/InYOd/1PV5oe9W8VW3TIBzG+Vw8Bc85VB29Ni0m9gVTeCRecndvd/NeMcFQ8rZbqB/75JxF8Q/En/eVoK7Zq2dgAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Group Claim Configuration&quot; title=&quot;Group Claim Configuration&quot; src=&quot;/static/2d7777d2c2163ac97e1be3e72128a006/6d370/group_claim_configuration.png&quot; srcSet=&quot;/static/2d7777d2c2163ac97e1be3e72128a006/c5084/group_claim_configuration.png 148w,/static/2d7777d2c2163ac97e1be3e72128a006/60cc9/group_claim_configuration.png 295w,/static/2d7777d2c2163ac97e1be3e72128a006/6d370/group_claim_configuration.png 590w,/static/2d7777d2c2163ac97e1be3e72128a006/540ae/group_claim_configuration.png 885w,/static/2d7777d2c2163ac97e1be3e72128a006/77666/group_claim_configuration.png 1170w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;and &lt;strong class=&quot;css-0&quot;&gt;Add&lt;/strong&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Now we are all set with the Azure configurations. But before moving forward, we’ll make a note on the Authorization and Token endpoint of our Azure application. We will need these endpoints when configuring an Identity Provider in the API Manager.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:360px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/f4c82033bfd6d913ec723b8803c146eb/53918/azure_endpoints.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:19.594594594594593%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAECAIAAAABPYjBAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAkUlEQVQI14WOyw6CMBRE+f8/YocrbGxaZWE3suDRFwkKTcALfWCJW4yT2c2c5CQ+hNjtKPPqrT+evkloM+F6XhYoy4cQoq4qIWXw/m1DysYrh3F4tW2rtRacd51WSkkpnXM7TCLczABACKGUnvMcIWTXBdyWsuEm4Nn3jN0xvpyyDGNcFEW8GWN2OIr9cvur/QEMceIHEmBD0wAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Azure Endpoints&quot; title=&quot;Azure Endpoints&quot; src=&quot;/static/f4c82033bfd6d913ec723b8803c146eb/53918/azure_endpoints.png&quot; srcSet=&quot;/static/f4c82033bfd6d913ec723b8803c146eb/c5084/azure_endpoints.png 148w,/static/f4c82033bfd6d913ec723b8803c146eb/60cc9/azure_endpoints.png 295w,/static/f4c82033bfd6d913ec723b8803c146eb/53918/azure_endpoints.png 360w&quot; sizes=&quot;(max-width: 360px) 100vw, 360px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Go to the &lt;strong class=&quot;css-0&quot;&gt;Overview&lt;/strong&gt; page of our Azure App and click on the Endpoints button. This will pop a side-window with all the necessary endpoints of our application. Make a note on the Authorization v2 and Token v2 endpoints. In addition to the above-set, also make a note on the &lt;strong class=&quot;css-0&quot;&gt;OpenID Connect metadata document&lt;/strong&gt; endpoint.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;If you go to the endpoint URL mentioned in the &lt;strong class=&quot;css-0&quot;&gt;OpenID Connect metadata document&lt;/strong&gt;, you will find a set of metadata to configure an Identity Provider in the API Manager.&lt;/p&gt;&lt;h2 id=&quot;WSO2-API-Manager&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#WSO2-API-Manager&quot; aria-label=&quot;WSO2 API Manager permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;WSO2 API Manager&lt;/h2&gt;&lt;h3 id=&quot;-Configure-Email-Username&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-Configure-Email-Username&quot; aria-label=&quot; Configure Email Username permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;✋ Configure Email Username&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Before starting our configurations with the Identity Provider creation and Service Provider registrations, we will be enabling a property called EnableEmailUsername in the API Manager server.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;This is because of the &lt;code class=&quot;css-0&quot;&gt;preferred_username&lt;/code&gt; claims in the Azure ID Tokens are represented with the email usernames. Hence, as for this demo, we will be enabling email username in our API Manager server to provision and log-in to the Store nodes.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Without &lt;code class=&quot;css-0&quot;&gt;preferred_username&lt;/code&gt;, we can also make use of the &lt;code class=&quot;css-0&quot;&gt;sub&lt;/code&gt; claim presented in the Azure ID Token, which will be a unique ID value. If you are planning to use the sub claim as the User ID in the API Manager, then you may have to increase the number of characters of the Username Regex Pattern in the &lt;code class=&quot;css-0&quot;&gt;user-mgt.xml&lt;/code&gt; (you scroll to the very bottom for the full configurations)&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;Navigate to &lt;code class=&quot;css-0&quot;&gt;&amp;lt;apim&amp;gt;/repository/conf&lt;/code&gt; and open and add the following configurations in the &lt;code class=&quot;css-0&quot;&gt;deployment.toml&lt;/code&gt; file&lt;/p&gt;&lt;pre class=&quot;prism-code language-toml&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;[tenant_mgt]&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;enable_email_domain = true&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;After making the change, fire-up the server to configure the required Identity Provider and the Service Provider to demo our OIDC SSO.&lt;/p&gt;&lt;h3 id=&quot;-Identity-Provider-Configurations&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-Identity-Provider-Configurations&quot; aria-label=&quot; Identity Provider Configurations permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;✋ Identity Provider Configurations&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Direct to the Carbon Management console, and log-in with the admin credentials. Select the Add under the Identity Providers and input the following&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Identity Provider Name: &lt;code class=&quot;css-0&quot;&gt;AzureADIDP&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Display Name: &lt;code class=&quot;css-0&quot;&gt;Azure AD IDP&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Choose IDP Certificate Type: &lt;code class=&quot;css-0&quot;&gt;Use IDP JWKS Endpoint&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Identity Provider’s JWKS Endpoint: &lt;em class=&quot;css-0&quot;&gt;the&lt;/em&gt; &lt;code class=&quot;css-0&quot;&gt;JWKS URI&lt;/code&gt; &lt;em class=&quot;css-0&quot;&gt;found in the OpenID Connect metadata document&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/a2a9b88060618114616940552a931eb3/3643c/idp_basic_configuration.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:37.16216216216216%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAIAAACHqfpvAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAlklEQVQY042P3Q6DMAhGff8H3WZbrQoWWvozmsXtaqnfFSEcOEwpJRFprYmk1Xs8T8STiNqNTDHGUopWusU5t/pt23divgsrlnvE+9UtHT8AmLnWOoBDCACg5qVkADwOUBIRtf8xGlzWOdHPc7Z2Mcaq8xD7wXpWpVOKs5kfz5exLgTqb1z55z99q1oKM6kFE/d1IkP4DYxRnDpHOP2bAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Identity Provider Basic Configuration&quot; title=&quot;Identity Provider Basic Configuration&quot; src=&quot;/static/a2a9b88060618114616940552a931eb3/6d370/idp_basic_configuration.png&quot; srcSet=&quot;/static/a2a9b88060618114616940552a931eb3/c5084/idp_basic_configuration.png 148w,/static/a2a9b88060618114616940552a931eb3/60cc9/idp_basic_configuration.png 295w,/static/a2a9b88060618114616940552a931eb3/6d370/idp_basic_configuration.png 590w,/static/a2a9b88060618114616940552a931eb3/540ae/idp_basic_configuration.png 885w,/static/a2a9b88060618114616940552a931eb3/2561a/idp_basic_configuration.png 1180w,/static/a2a9b88060618114616940552a931eb3/3643c/idp_basic_configuration.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Next, expand the &lt;strong class=&quot;css-0&quot;&gt;Claim Configurations&lt;/strong&gt; &amp;gt; &lt;strong class=&quot;css-0&quot;&gt;Define Custom Claim Dialect&lt;/strong&gt; &amp;gt; &lt;strong class=&quot;css-0&quot;&gt;Add Claim Mapping&lt;/strong&gt; and add the following mappings&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;preferred_username&lt;/code&gt; : &lt;code class=&quot;css-0&quot;&gt;http://wso2.org/claims/displayName&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;roles&lt;/code&gt; : &lt;code class=&quot;css-0&quot;&gt;http://wso2.org/claims/role&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;and&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;User ID Claim URI: &lt;code class=&quot;css-0&quot;&gt;preferred_username&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Role Claim URI: &lt;code class=&quot;css-0&quot;&gt;roles&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/f73d238dcb41f3d189f0f079f8d84d0a/f97d7/idp_claim_configuration.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:22.972972972972975%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAIAAADKYVtkAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAqklEQVQY022N2Q6DIBBF/f9/7IOSFEGWCswwbFrUJvrQm5NZc3OHaXrx90g5mM+iFPde14qdUqCTc+j85rOW83IxAGBKubTK+DwyLhcVAlCk1rbOtu1d1/y8XBqu1lqTQgohfPCAQETOOcaYlFIbgxgTkfU0ywUQbzOeS6tFiNkYo12MRCklADicWuecj7RtT2WPlEttt7n/zuRqjLLWzmpdV+e87+Aj5K++y2QhqE5AYG4AAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Identity Provider Claim Configurations&quot; title=&quot;Identity Provider Claim Configurations&quot; src=&quot;/static/f73d238dcb41f3d189f0f079f8d84d0a/6d370/idp_claim_configuration.png&quot; srcSet=&quot;/static/f73d238dcb41f3d189f0f079f8d84d0a/c5084/idp_claim_configuration.png 148w,/static/f73d238dcb41f3d189f0f079f8d84d0a/60cc9/idp_claim_configuration.png 295w,/static/f73d238dcb41f3d189f0f079f8d84d0a/6d370/idp_claim_configuration.png 590w,/static/f73d238dcb41f3d189f0f079f8d84d0a/540ae/idp_claim_configuration.png 885w,/static/f73d238dcb41f3d189f0f079f8d84d0a/2561a/idp_claim_configuration.png 1180w,/static/f73d238dcb41f3d189f0f079f8d84d0a/f97d7/idp_claim_configuration.png 2000w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Expand the &lt;strong class=&quot;css-0&quot;&gt;Role configurations&lt;/strong&gt; and click on the &lt;strong class=&quot;css-0&quot;&gt;Add Role Mapping&lt;/strong&gt;. Paste the Object ID acquired from the Subscriber group in the Azure service and map it with our internal subscriber role&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;The &lt;code class=&quot;css-0&quot;&gt;Object ID&lt;/code&gt; of Subscriber Group : &lt;code class=&quot;css-0&quot;&gt;Internal/subscriber&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;Given below is a sample Role mapping configuration …&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/4cad0b2145693f0fe246ecbcf6b272ad/f97d7/idp_role_configuration.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:14.864864864864865%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAADCAIAAAAcOLh5AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAbElEQVQI102N4QrDMAiE8/6vWddBN2icZo3RkB0pK/0UufPHXdq2FxGpFsx7551FYcp3cgDcc08ui00R0XsfY7i3heixPkXU3fHOOYsWyGlD9WOtjRsJPbVWRFo9VISZUasTaDPrf5ARs+biB6q9rbL83c5YAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Identity Provider Role Configuration&quot; title=&quot;Identity Provider Role Configuration&quot; src=&quot;/static/4cad0b2145693f0fe246ecbcf6b272ad/6d370/idp_role_configuration.png&quot; srcSet=&quot;/static/4cad0b2145693f0fe246ecbcf6b272ad/c5084/idp_role_configuration.png 148w,/static/4cad0b2145693f0fe246ecbcf6b272ad/60cc9/idp_role_configuration.png 295w,/static/4cad0b2145693f0fe246ecbcf6b272ad/6d370/idp_role_configuration.png 590w,/static/4cad0b2145693f0fe246ecbcf6b272ad/540ae/idp_role_configuration.png 885w,/static/4cad0b2145693f0fe246ecbcf6b272ad/2561a/idp_role_configuration.png 1180w,/static/4cad0b2145693f0fe246ecbcf6b272ad/f97d7/idp_role_configuration.png 2000w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Then, expand the &lt;strong class=&quot;css-0&quot;&gt;Federated Authenticators&lt;/strong&gt; &amp;gt; &lt;strong class=&quot;css-0&quot;&gt;OAuth2/OpenID Connect Configurations&lt;/strong&gt; and perform the following&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Enable OAuth2 / OpenID Connect: &lt;code class=&quot;css-0&quot;&gt;true&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Default: &lt;code class=&quot;css-0&quot;&gt;true&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Client ID: &lt;em class=&quot;css-0&quot;&gt;the&lt;/em&gt; &lt;code class=&quot;css-0&quot;&gt;Client ID&lt;/code&gt; &lt;em class=&quot;css-0&quot;&gt;of our&lt;/em&gt; &lt;code class=&quot;css-0&quot;&gt;WSO2APIM&lt;/code&gt; &lt;em class=&quot;css-0&quot;&gt;Azure app&lt;/em&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Client Secret: &lt;em class=&quot;css-0&quot;&gt;the generated secret of our&lt;/em&gt; &lt;code class=&quot;css-0&quot;&gt;WSO2APIM&lt;/code&gt; &lt;em class=&quot;css-0&quot;&gt;Azure app&lt;/em&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Authorization Endpoint URL: &lt;em class=&quot;css-0&quot;&gt;the&lt;/em&gt; &lt;code class=&quot;css-0&quot;&gt;authorization_endpoint&lt;/code&gt; &lt;em class=&quot;css-0&quot;&gt;in the OpenID Connect metadata document&lt;/em&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Token Endpoint URL: &lt;em class=&quot;css-0&quot;&gt;the&lt;/em&gt; &lt;code class=&quot;css-0&quot;&gt;token_endpoint&lt;/code&gt; &lt;em class=&quot;css-0&quot;&gt;in the OpenID Connect metadata document&lt;/em&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Userinfo Endpoint URL: &lt;em class=&quot;css-0&quot;&gt;the&lt;/em&gt; &lt;code class=&quot;css-0&quot;&gt;userinfo_endpoint&lt;/code&gt; &lt;em class=&quot;css-0&quot;&gt;in the OpenID Connect metadata document&lt;/em&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Additional Query Parameters: &lt;code class=&quot;css-0&quot;&gt;scope=openid%20profile%20email&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/8d43bd902889143b7bfb336fa687e97b/3643c/federated_authenticator_configuration.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:51.35135135135135%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAIAAAA7N+mxAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA0ElEQVQoz42RWQ6DMAxEc/+DVg2QfXViaIfQqv2hdCQiK/Jjxo7IKXPndV1xWGOU1tbYlFLv3Mf941yCiLZtQ9WoKqBay0XbEH9jL7gObXBuNC+7bnJWxjH3S16UUhAScGtVTpPEN03ee9wz8wWM2IdDI5JS3kEvC8i/YgNG6w4fsZWeB/z4Q6IBIkLFvfngfQjOhxjTZebPzNhZqZh5RnKllHMOY++7GA9xCqMj5wx/OGutkNtYG2PET/sQInwX37sQcDhaEb6Wl/K5kLG99QSC2UmMY8D/IQAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Federated Authenticator Configuration&quot; title=&quot;Federated Authenticator Configuration&quot; src=&quot;/static/8d43bd902889143b7bfb336fa687e97b/6d370/federated_authenticator_configuration.png&quot; srcSet=&quot;/static/8d43bd902889143b7bfb336fa687e97b/c5084/federated_authenticator_configuration.png 148w,/static/8d43bd902889143b7bfb336fa687e97b/60cc9/federated_authenticator_configuration.png 295w,/static/8d43bd902889143b7bfb336fa687e97b/6d370/federated_authenticator_configuration.png 590w,/static/8d43bd902889143b7bfb336fa687e97b/540ae/federated_authenticator_configuration.png 885w,/static/8d43bd902889143b7bfb336fa687e97b/2561a/federated_authenticator_configuration.png 1180w,/static/8d43bd902889143b7bfb336fa687e97b/3643c/federated_authenticator_configuration.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;And finally, expand the &lt;strong class=&quot;css-0&quot;&gt;Just-In-Time Provisioning&lt;/strong&gt; accordion and configure as follows&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/d5d924be1841fc13d4114911417ef2b5/f97d7/jit_configuration.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:12.837837837837837%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAADCAIAAAAcOLh5AAAACXBIWXMAAAsTAAALEwEAmpwYAAAARklEQVQI15WNSw7AIAgFuf8xUVlomgh+IGws6QXaTuZtZvOAiDozi3QO55jB2qqvqhmknBAxVtsly55o5xtQSo4vdz//uQHNwa7U6lj3NQAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;JIT Configuration&quot; title=&quot;JIT Configuration&quot; src=&quot;/static/d5d924be1841fc13d4114911417ef2b5/6d370/jit_configuration.png&quot; srcSet=&quot;/static/d5d924be1841fc13d4114911417ef2b5/c5084/jit_configuration.png 148w,/static/d5d924be1841fc13d4114911417ef2b5/60cc9/jit_configuration.png 295w,/static/d5d924be1841fc13d4114911417ef2b5/6d370/jit_configuration.png 590w,/static/d5d924be1841fc13d4114911417ef2b5/540ae/jit_configuration.png 885w,/static/d5d924be1841fc13d4114911417ef2b5/2561a/jit_configuration.png 1180w,/static/d5d924be1841fc13d4114911417ef2b5/f97d7/jit_configuration.png 2000w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;and &lt;strong class=&quot;css-0&quot;&gt;Register&lt;/strong&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Given below is a complete snap of the &lt;code class=&quot;css-0&quot;&gt;AzureADIDP&lt;/code&gt; Identity Provider’s configuration in the API Manager server&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/db1493d66220b8e00337816a52ae4434/3643c/idp_complete_configuration.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:141.2162162162162%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAcCAIAAADuuAg3AAAACXBIWXMAAAsTAAALEwEAmpwYAAADIUlEQVQ4y4VU2W7TQBT1/38LH8IDQgWptIE2beMktmffF6+csVFbkQaujkaz3bnbuVPt72++fvm0u/t8eLrd778/Pd0/v+yu4eHx9uHxx6/dt5+3X3b3N9XPx2cpndZBSs25sjYY4wtssBfQxuv1SNvIdaie6mfjYkyD9yEEvyyzs1YppY0JMc5Fpg8xTXN1bE82pJiHlPI4jsuyGKM7QqAO5eW6TPNSHc5HZQMsxxi999DvczJ/xKaU/qUsJZPW5X5MuS9+TpN1gRBqrc05w7l/KVNCpILJlBMuZwSDaOvjqetIzn25Na+4kBnKbdN2VCOTPiCTCjnz3hqLF3QZt4nR2I8xFKRXpIpJpoxL/Yh75/NBKmacJqQxRuTs+j6MYxqGiEnf+2EI/RBSLhMpRUUEE6ha6vt+gOcIEuYOx0ZrjbdRglKzEMvxMLqAjX5zW2kNy1waj1Llcjxg1xqNUFCCnBPS1rYtyoajYZysR1HfKXPSEW5CGqyzUnLEpiQnlHSUYwlYa1IqdQRSgunCJYyc80rghkU8EyHk4WF3Or50pAEIORPaUNoy1mGkrIBhXDdX0IoKAe2VJAkMhT8I8tRSzIdxzHmAIXgMIKz3nEH0JWYq9cZtAE846xiDtw5LJG8N+I8yMofIx7EQG/Pq3HVUWOcSZ2T/eHes90I0SnVStFI0gJIdlhu07spyBRe0ajtmTfQOiTWct8bApsTUWRGCztki5dOU/sKyZKlExY3rVABJUKqNyaAYIYww+OPh3jxfErNsaW0qhnp5sKO0JHKDxvDOMsYawqQ2oPols9+UOQipUb0BbbAlE8RomhaVwwQ7l6bflA1iBZdKGUpXbcoteorSeOUzeFMGacdxLj9JzjEEnKBinAsA/9IHEV9VjhEFRZ5glguBn2z7W/6jjISBH3AYS1AXAUMZSygjlv6dvL5VGqP0WlEeGRd1XcOmRKcKuQn/SMQqlPFX5QFMrOtjB8JRItHha4vPVwSWcaFCn4IayDbcPhyOp9MJZPbrJ44UpCuCWJCayoe1GVxEaV9e6hZ0RarRqGUUW9o/hJDqN1LBROukEfqFAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;IDP Complete Configuration&quot; title=&quot;IDP Complete Configuration&quot; src=&quot;/static/db1493d66220b8e00337816a52ae4434/6d370/idp_complete_configuration.png&quot; srcSet=&quot;/static/db1493d66220b8e00337816a52ae4434/c5084/idp_complete_configuration.png 148w,/static/db1493d66220b8e00337816a52ae4434/60cc9/idp_complete_configuration.png 295w,/static/db1493d66220b8e00337816a52ae4434/6d370/idp_complete_configuration.png 590w,/static/db1493d66220b8e00337816a52ae4434/540ae/idp_complete_configuration.png 885w,/static/db1493d66220b8e00337816a52ae4434/2561a/idp_complete_configuration.png 1180w,/static/db1493d66220b8e00337816a52ae4434/3643c/idp_complete_configuration.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;h3 id=&quot;-Service-Provider-Configurations&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-Service-Provider-Configurations&quot; aria-label=&quot; Service Provider Configurations permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;✋ Service Provider Configurations&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;From API Manager 3.x onwards, both Publisher and Devportal (A.K.A Store) nodes are configured with &lt;strong class=&quot;css-0&quot;&gt;OIDC SSO&lt;/strong&gt; flows as default.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Hence, go to both Publisher and Devportal nodes and click on the Sign-in button to automatically create and register a Service Provider for the OIDC SSO flow. You don’t have to log-in to the portals, the above-mentioned process is to create the respective Service Providers in the API Manager.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Navigate to the &lt;strong class=&quot;css-0&quot;&gt;Carbon Management&lt;/strong&gt; console and sign-in with the Admin credentials.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Click on &lt;strong class=&quot;css-0&quot;&gt;List&lt;/strong&gt; under &lt;strong class=&quot;css-0&quot;&gt;Service Providers&lt;/strong&gt; section to list the automatically created Service Providers respective to Publisher &lt;code class=&quot;css-0&quot;&gt;apim_publisher&lt;/code&gt; and Devportal &lt;code class=&quot;css-0&quot;&gt;apim_devportal&lt;/code&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/410ec0bfca7b78aaa757f7ca96b302d7/f97d7/service_providers.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:14.18918918918919%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAADCAIAAAAcOLh5AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAcUlEQVQI1zWNiQrDMAxD+/8f2kBh5KrvJJvSMlkW4oHxka9Prf0mZXHzCaPH+MIe6yUwesRC+p+ojeNMiYhUxMwiIuec0tlaK6WAg7g7ku7eifeIbrQVR8llTGjtXYuZ6yMciwjIfKQqrL7fmL8wYvwAMyGuMYGf6TYAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Service Providers&quot; title=&quot;Service Providers&quot; src=&quot;/static/410ec0bfca7b78aaa757f7ca96b302d7/6d370/service_providers.png&quot; srcSet=&quot;/static/410ec0bfca7b78aaa757f7ca96b302d7/c5084/service_providers.png 148w,/static/410ec0bfca7b78aaa757f7ca96b302d7/60cc9/service_providers.png 295w,/static/410ec0bfca7b78aaa757f7ca96b302d7/6d370/service_providers.png 590w,/static/410ec0bfca7b78aaa757f7ca96b302d7/540ae/service_providers.png 885w,/static/410ec0bfca7b78aaa757f7ca96b302d7/2561a/service_providers.png 1180w,/static/410ec0bfca7b78aaa757f7ca96b302d7/f97d7/service_providers.png 2000w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Click the &lt;strong class=&quot;css-0&quot;&gt;Edit&lt;/strong&gt; of the &lt;code class=&quot;css-0&quot;&gt;apim_devportal&lt;/code&gt; and expand the &lt;strong class=&quot;css-0&quot;&gt;Claim Configurations&lt;/strong&gt; and make the following changes&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;preferred_username&lt;/code&gt; : &lt;code class=&quot;css-0&quot;&gt;http://wso2.org/claims/displayName&lt;/code&gt; : &lt;code class=&quot;css-0&quot;&gt;Requested&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/da9e288fd656a1b6fa7707cbfae63350/f97d7/sp_claim_configuration.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:25%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAIAAADKYVtkAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAlElEQVQY042PyQ7EIAxD+f8PbWcOQNgDCWVMe5tTLUvYT4TFWOuO4yQKKRcKIaXcHjFvN67bu/8Z0Ag0RFRtSM4HZr5uqapsrHPOu05U5IdgBTTjFpJ17vx8a6kxt1xbiNF5T0Q5J+7DxVZqxdGlFNybAIeYulFfa8WAnSSju8ii13oh03vHMB6DDyJfc+YmY+ib4R/FCiPj4jl9aAAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Service Provider Claim Configuration&quot; title=&quot;Service Provider Claim Configuration&quot; src=&quot;/static/da9e288fd656a1b6fa7707cbfae63350/6d370/sp_claim_configuration.png&quot; srcSet=&quot;/static/da9e288fd656a1b6fa7707cbfae63350/c5084/sp_claim_configuration.png 148w,/static/da9e288fd656a1b6fa7707cbfae63350/60cc9/sp_claim_configuration.png 295w,/static/da9e288fd656a1b6fa7707cbfae63350/6d370/sp_claim_configuration.png 590w,/static/da9e288fd656a1b6fa7707cbfae63350/540ae/sp_claim_configuration.png 885w,/static/da9e288fd656a1b6fa7707cbfae63350/2561a/sp_claim_configuration.png 1180w,/static/da9e288fd656a1b6fa7707cbfae63350/f97d7/sp_claim_configuration.png 2000w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Next, expand the Local &amp;amp; Outbound Authentication Configuration and select the &lt;code class=&quot;css-0&quot;&gt;AzureADIDP&lt;/code&gt; as the Federated Authentication and make the following changes&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/b8140d91d9faf2eb11cd94e332378471/f97d7/sp_local_outbound_configuration.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:31.756756756756754%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAIAAABM9SnKAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAgklEQVQY05WPwQ7CIBBE+//fqCalUcAusOmWleqy2HDx2DqZ63uTGWqtqtpaQ2KIads+TescqbzbYYY5oPeemTO/Vi7SRdKVx3BKyTkXY0TElUhPMD84Z049AIFoFal/wLgQwHNZsBQW2Y/uy3KmqjJ4fx/HyzTdjLlaa0KwAI9ztV/xfl0VCQGSXwAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Service Provider Local &amp;amp; Outbound Configuration&quot; title=&quot;Service Provider Local &amp;amp; Outbound Configuration&quot; src=&quot;/static/b8140d91d9faf2eb11cd94e332378471/6d370/sp_local_outbound_configuration.png&quot; srcSet=&quot;/static/b8140d91d9faf2eb11cd94e332378471/c5084/sp_local_outbound_configuration.png 148w,/static/b8140d91d9faf2eb11cd94e332378471/60cc9/sp_local_outbound_configuration.png 295w,/static/b8140d91d9faf2eb11cd94e332378471/6d370/sp_local_outbound_configuration.png 590w,/static/b8140d91d9faf2eb11cd94e332378471/540ae/sp_local_outbound_configuration.png 885w,/static/b8140d91d9faf2eb11cd94e332378471/2561a/sp_local_outbound_configuration.png 1180w,/static/b8140d91d9faf2eb11cd94e332378471/f97d7/sp_local_outbound_configuration.png 2000w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;and &lt;strong class=&quot;css-0&quot;&gt;Update&lt;/strong&gt;.&lt;/p&gt;&lt;h2 id=&quot;-Voila-&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-Voila-&quot; aria-label=&quot; Voila  permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;🎉 Voila!!! 🎉&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;We have now successfully configured OpenID Connect Federated Authentication between Azure AD and Single Sign-On with OpenID Connect with API Devportal (Store).&lt;/p&gt;&lt;h2 id=&quot;--&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#--&quot; aria-label=&quot;   permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;👏 👏 👏&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;I hope you find this one useful to try-out and configure Federated Authentication &amp;amp; SSO between WSO2 API Manager and Azure Server.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Next, we’ll do a small test…&lt;/p&gt;&lt;h2 id=&quot;Test-Drive&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Test-Drive&quot; aria-label=&quot;Test Drive permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Test Drive&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;Direct to the Store portal using &lt;code class=&quot;css-0&quot;&gt;https://localhost:9443/devportal/&lt;/code&gt; and click on &lt;code class=&quot;css-0&quot;&gt;Sign-In&lt;/code&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;You will be redirected to the Microsoft’s login page to enter the credentials. Enter the credentials of our Microsoft User and then allow the attributes on the consent screen to continue with the federation and provision of the Gluu users to the WSO2 API Manager.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;Login to the &lt;strong class=&quot;css-0&quot;&gt;Carbon Management&lt;/strong&gt; console of WSO2 API Manager and list the Users. If the Federation is successful and JIT Provisioned performed without any errors, you will be able to see our user in the prompted list.&lt;/p&gt;&lt;/blockquote&gt;&lt;h3 id=&quot;Happy-Stacking---️&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Happy-Stacking---%EF%B8%8F&quot; aria-label=&quot;Happy Stacking   ️ permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Happy Stacking !!!! 🤘 ✌️&lt;/h3&gt;&lt;h2 id=&quot;Troubleshooting&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Troubleshooting&quot; aria-label=&quot;Troubleshooting permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Troubleshooting&lt;/h2&gt;&lt;h3 id=&quot;Username-Regex&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Username-Regex&quot; aria-label=&quot;Username Regex permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Username Regex&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;If you are planning to use the default &lt;code class=&quot;css-0&quot;&gt;sub&lt;/code&gt; claim value as the Username in the API Manager then, it is required to change the regex pattern of the Username in the &lt;code class=&quot;css-0&quot;&gt;user-mgt.xml&lt;/code&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;API Manager 3.x series follows a new configuration model; a &lt;code class=&quot;css-0&quot;&gt;deployment.toml&lt;/code&gt; file to configure the entire server. Following are the TOML configurations related to the Regex patterns in the &lt;code class=&quot;css-0&quot;&gt;user-mgt.xml&lt;/code&gt;.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;In the following, I have increased the length from 30 to 50. if the value recieved via &lt;code class=&quot;css-0&quot;&gt;sub&lt;/code&gt; claim is less than 30 characters, you don’t have to perform the following changes&lt;/p&gt;&lt;/blockquote&gt;&lt;pre class=&quot;prism-code language-toml&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;# deployment.toml configurations&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;[user_store.properties]&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;UsernameJavaRegEx = &amp;quot;^[\\S]{3,50}$&amp;quot;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;h3 id=&quot;JIT-Provisioning--Authentication-Framework&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#JIT-Provisioning--Authentication-Framework&quot; aria-label=&quot;JIT Provisioning  Authentication Framework permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;JIT Provisioning &amp;amp; Authentication Framework&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;If you want to enable the debug logs for the JIT Provisioning flow and the Federated authentication flows, then open and add the following property in the &lt;code class=&quot;css-0&quot;&gt;&amp;lt;server&amp;gt;/repository/conf/log4j2.properties&lt;/code&gt;&lt;/p&gt;&lt;pre class=&quot;prism-code language-properties&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;# to enable DEBUG logs in the authentication framework&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;logger.authentication_framework.name=org.wso2.carbon.identity.application.authentication.framework&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;logger.authentication_framework.level=DEBUG&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;And specify the &lt;code class=&quot;css-0&quot;&gt;authentication_framework&lt;/code&gt; name in the loggers property as follows (you mention the logger anywhere in the loggers property)&lt;/p&gt;&lt;pre class=&quot;prism-code language-properties&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;loggers = authentication_framework, AUDIT_LOG, ...&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;It is not required to restart the server after making the changes in the &lt;code class=&quot;css-0&quot;&gt;log4j2.properties&lt;/code&gt;. It is hot-applied 😍&lt;/p&gt;&lt;/blockquote&gt;</content:encoded></item><item><title><![CDATA[WSO2 API Manager & Gluu SSO (OIDC)]]></title><link>https://stackcheats.github.io/wso2-api-manager-gluu-sso-oidc/content/</link><guid isPermaLink="false">https://stackcheats.github.io/wso2-api-manager-gluu-sso-oidc/content/</guid><pubDate>Sun, 19 Apr 2020 00:00:00 GMT</pubDate><content:encoded>&lt;style data-emotion-css=&quot;sa2dbt&quot;&gt;body{color:text;background-color:var(--theme-ui-colors-background,#fff);}&lt;/style&gt;&lt;style data-emotion-css=&quot;0&quot;&gt;&lt;/style&gt;&lt;h2 id=&quot;Greetings-Everyone-&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Greetings-Everyone-&quot; aria-label=&quot;Greetings Everyone  permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Greetings Everyone!!! 👋&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;In this medium, I will be 🚶 ‍walking through on how to Federate and configure OpenID Connect SSO flow between the WSO2 API Manager and the Gluu Identity Server.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;I will be using WSO2 API Manager v2.6 with WSO2 Identity Server as Key Manager v5.7 and Gluu Server v3.1.7 and performing SSO to the API Store node&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;I hope you enjoy it and find it useful 🙌&lt;/p&gt;&lt;h2 id=&quot;Gluu-Identity-Server&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Gluu-Identity-Server&quot; aria-label=&quot;Gluu Identity Server permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Gluu Identity Server&lt;/h2&gt;&lt;h3 id=&quot;Quick-Installation--Start&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Quick-Installation--Start&quot; aria-label=&quot;Quick Installation  Start permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Quick Installation &amp;amp; Start&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Let’s start the demo with the Gluu Identity Server installation. You can refer here for quick installation on the Google Cloud Platform.&lt;/p&gt;&lt;div title=&quot;Gluu Google Cloud Platform&quot; class=&quot;css-0&quot;&gt;&lt;/div&gt;&lt;p class=&quot;css-0&quot;&gt;Following are the commands executed to install and configure the Gluu server in the above-given reference …&lt;/p&gt;&lt;pre class=&quot;prism-code language-bash&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;# add the sources&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;echo&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;deb https://repo.gluu.org/ubuntu/ xenial main&amp;quot;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; /etc/apt/sources.list.d/gluu-repo.list&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;# download key&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;curl&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; https://repo.gluu.org/ubuntu/gluu-apt.key &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; apt-key &lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; -&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;# udpate the existing packages&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;apt-get&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; update&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;# install gluu-server 3.1.7&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;apt-get&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;install&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; gluu-server-3.1.7&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;# start the gluu-server&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;service&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; gluu-server-3.1.7 start&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;# login to the gluu-server&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;service&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; gluu-server-3.1.7 login&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;# execute the following to setup the gluu-server&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;cd&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; /install/community-edition-setup/&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;./setup.py&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;h3 id=&quot;-OpenID-Connect-Configurations--Metadata&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-OpenID-Connect-Configurations--Metadata&quot; aria-label=&quot; OpenID Connect Configurations  Metadata permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;✋ OpenID Connect Configurations &amp;amp; Metadata&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Once the installation is done and the server is up and running as expected, log-in to the Gluu’s management console using the Admin credentials.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:460px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/403c4c1093138301d3fe29380e681476/610aa/gluu_json_configurations.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:52.02702702702703%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAIAAAA7N+mxAAAACXBIWXMAAAsTAAALEwEAmpwYAAABgUlEQVQoz4WP2U7DMBBF8w2IF5a2IIoaN3G6Zd+cxUmcuKZOWVoQCPUBHvj/D2DaAkKAhHQ18tzx8R0rhywYTz07oYOJacZpVNZmlNokCygznKCr6r/VQ3gwNrsIKwe17/kpdkM0s6OizpurarEkjNO5nAVJV9W2GnzUzk7A941pR9WVU5Z0L4anKu4h4+QSHfVVqMd9dHyJOgO9NzTAPxuO9vVcn+x1po3O8URBbmzSxinFJKn8pt1JhvNrl13ZlLts4fPWLuYBby3K9SDdCwfp0COK5hEjokZMR6SwSmGVc7PkNryVsWnGZnnj1tKphNdIyPiC9T0MyTZtfCZwmBGxjHnrFNwpmqBezNIKfDOvNT+BqxDzE1adyKtExKWV1/Jxs3jcFMsVXz89vLyJh+fbzWuzfhpFOfDfyQ9464YZyIhysBAkQM726taEs+anMIK9/oBhbQv2rAT8M13eJ+0aFIobIldErom8gzaWd+Ok/BH+mQzN5wCHOd6t8K8AfgdXnIboU4lCJAAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Gluu JSON Configurations&quot; title=&quot;Gluu JSON Configurations&quot; src=&quot;/static/403c4c1093138301d3fe29380e681476/610aa/gluu_json_configurations.png&quot; srcSet=&quot;/static/403c4c1093138301d3fe29380e681476/c5084/gluu_json_configurations.png 148w,/static/403c4c1093138301d3fe29380e681476/60cc9/gluu_json_configurations.png 295w,/static/403c4c1093138301d3fe29380e681476/610aa/gluu_json_configurations.png 460w&quot; sizes=&quot;(max-width: 460px) 100vw, 460px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Click on the &lt;strong class=&quot;css-0&quot;&gt;Configuration&lt;/strong&gt; section in the navigation panel and select the &lt;strong class=&quot;css-0&quot;&gt;JSON Configurations&lt;/strong&gt; to list all required configurations and metadata of the Gluu Server.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;In the following screen, move to the &lt;strong class=&quot;css-0&quot;&gt;oxAuth Configuration&lt;/strong&gt; tab and scroll down to the bottom or search for &lt;code class=&quot;css-0&quot;&gt;legacyIdTokenClaims&lt;/code&gt;. Change the configuration to true. This is to enable the Gluu Identity Server to pass the requested claims and information via the ID Tokens.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/10ecc7e160825a8651e28cfa0db84f3a/f97d7/legacy_id_token_claim.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:8.783783783783782%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAACCAIAAADXZGvcAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIklEQVQI12N49vz5+/fvf/z8+YNEANTB8BkMvn379p10AACE0HOfo/ebzwAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Legacy ID Token Claim&quot; title=&quot;Legacy ID Token Claim&quot; src=&quot;/static/10ecc7e160825a8651e28cfa0db84f3a/6d370/legacy_id_token_claim.png&quot; srcSet=&quot;/static/10ecc7e160825a8651e28cfa0db84f3a/c5084/legacy_id_token_claim.png 148w,/static/10ecc7e160825a8651e28cfa0db84f3a/60cc9/legacy_id_token_claim.png 295w,/static/10ecc7e160825a8651e28cfa0db84f3a/6d370/legacy_id_token_claim.png 590w,/static/10ecc7e160825a8651e28cfa0db84f3a/540ae/legacy_id_token_claim.png 885w,/static/10ecc7e160825a8651e28cfa0db84f3a/2561a/legacy_id_token_claim.png 1180w,/static/10ecc7e160825a8651e28cfa0db84f3a/f97d7/legacy_id_token_claim.png 2000w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Scroll to the top and make a note on the following endpoints. We need the following endpoint URIs when configuring the WSO2 servers&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;authorizationEndpoint&lt;/code&gt; : &lt;em class=&quot;css-0&quot;&gt;will look like &lt;code class=&quot;css-0&quot;&gt;&amp;lt;host&amp;gt;/oxauth/restv1/authorize&lt;/code&gt;&lt;/em&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;tokenEndpoint&lt;/code&gt; : &lt;em class=&quot;css-0&quot;&gt;will look like &lt;code class=&quot;css-0&quot;&gt;&amp;lt;host&amp;gt;/oxauth/restv1/token&lt;/code&gt;&lt;/em&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;userInfoEndpoint&lt;/code&gt; : &lt;em class=&quot;css-0&quot;&gt;will look like &lt;code class=&quot;css-0&quot;&gt;&amp;lt;host&amp;gt;/oxauth/restv1/userinfo&lt;/code&gt;&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;After taking the notes, click on &lt;strong class=&quot;css-0&quot;&gt;Certificates&lt;/strong&gt; listed under the Configurations section and download the &lt;strong class=&quot;css-0&quot;&gt;IDP Signing&lt;/strong&gt; certificate and store it.&lt;/p&gt;&lt;h3 id=&quot;-OpenID-Connect-Client-Registration&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-OpenID-Connect-Client-Registration&quot; aria-label=&quot; OpenID Connect Client Registration permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;✋ OpenID Connect Client Registration&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Next, we will be configuring an OpenID Connect client in the Gluu Identity Server to communicate and perform SSO flow with the WSO2 servers.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Expand the &lt;strong class=&quot;css-0&quot;&gt;OpenID Connect&lt;/strong&gt; section in the left navigation panel and select the &lt;strong class=&quot;css-0&quot;&gt;Clients&lt;/strong&gt; to list and create new clients.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/c90c77171f9ed4d11533efa4caca5e62/3643c/openid_connect_clients_gluu.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:31.08108108108108%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAIAAABM9SnKAAAACXBIWXMAAAsTAAALEwEAmpwYAAABA0lEQVQY022Ny0rEMBSG8xY64MoW7AjOMOIFdKMbn0EQdYRh8Aq+qK67ceMN09raS+45STztYpyFP18OgfzfCYm3JoNo43Q6e355T98+s6r5ZhyplSz6y/+0jFYN2dw7GMTDs9n102tFW+WC1x6Q9KtixkAA6xH3R+gmYM0BmRyfrI93r+4flRGt5AIMwq1OadVaY0K3SDq7AJ8EgjVjyOjwaG04urx5qJnS2oQ+SiowSkslBR4VlsI5N1qDxcWWJNv7q1FyPr9tbCgESOuwwRjL8jzLMkppURTe+4UshHCu61hwJB7vrETJxfzuR/qPWjfK9jJHJ+9TluWyjD8DQCdb+AVRcDRFQrmQbAAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;OpenID Connect Client in Gluu Server&quot; title=&quot;OpenID Connect Client in Gluu Server&quot; src=&quot;/static/c90c77171f9ed4d11533efa4caca5e62/6d370/openid_connect_clients_gluu.png&quot; srcSet=&quot;/static/c90c77171f9ed4d11533efa4caca5e62/c5084/openid_connect_clients_gluu.png 148w,/static/c90c77171f9ed4d11533efa4caca5e62/60cc9/openid_connect_clients_gluu.png 295w,/static/c90c77171f9ed4d11533efa4caca5e62/6d370/openid_connect_clients_gluu.png 590w,/static/c90c77171f9ed4d11533efa4caca5e62/540ae/openid_connect_clients_gluu.png 885w,/static/c90c77171f9ed4d11533efa4caca5e62/2561a/openid_connect_clients_gluu.png 1180w,/static/c90c77171f9ed4d11533efa4caca5e62/3643c/openid_connect_clients_gluu.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Click on the &lt;strong class=&quot;css-0&quot;&gt;Add Client&lt;/strong&gt;, and on the next screen input the following&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Client Secret: &lt;em class=&quot;css-0&quot;&gt;Click on the &lt;strong class=&quot;css-0&quot;&gt;Generate Client Secret&lt;/strong&gt; to generate one&lt;/em&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Client Name: &lt;code class=&quot;css-0&quot;&gt;WSO2ISKM&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Redirect Login URIs: &lt;code class=&quot;css-0&quot;&gt;https://localhost:9444/commonauth&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Scopes: &lt;code class=&quot;css-0&quot;&gt;openid&lt;/code&gt; &amp;amp; &lt;code class=&quot;css-0&quot;&gt;profile&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Response Types: &lt;code class=&quot;css-0&quot;&gt;code&lt;/code&gt; &lt;code class=&quot;css-0&quot;&gt;token&lt;/code&gt; &amp;amp; &lt;code class=&quot;css-0&quot;&gt;id_token&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Grant Types: &lt;code class=&quot;css-0&quot;&gt;authorization_code&lt;/code&gt; &amp;amp; &lt;code class=&quot;css-0&quot;&gt;password&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;and &lt;strong class=&quot;css-0&quot;&gt;Add&lt;/strong&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Next, move to the &lt;strong class=&quot;css-0&quot;&gt;Advanced Settings&lt;/strong&gt; tab of our OpenID Connect client and enable the &lt;strong class=&quot;css-0&quot;&gt;Include Claims In Id Token&lt;/strong&gt; option by selecting true from the dropdown selection.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;Please note that you have to enable the &lt;code class=&quot;css-0&quot;&gt;legacyIdTokenClaims&lt;/code&gt; in the &lt;strong class=&quot;css-0&quot;&gt;JSON Configuration&lt;/strong&gt; of the Gluu Server to make changes in the &lt;strong class=&quot;css-0&quot;&gt;Include Claims In Id Token&lt;/strong&gt; property in the Advanced Settings&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/a9835a89ba573af14e793838ca208661/3643c/client_advance_settings.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:22.2972972972973%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAECAIAAAABPYjBAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAmklEQVQI13VLOQ6DQAzk/y9Jl+QVocsPKEgRCZBYge211/ZuLKDNaDQazdF9N3y+x1s/DEsSV1LJVsTtYvPSPAxfiZbW4DNOj3vqX93GtDMEoWRQSRk3yWgS3EtOBCsBWiEroVAYVciNWsNqHRFN80w5twMioqrm7rVm5nVdl2WJTVSRResHTJWZu5gCACLWWs+z2fmt4c/wH34PT+eBOAE4QQAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;OpenID Connect Client Advance Settings&quot; title=&quot;OpenID Connect Client Advance Settings&quot; src=&quot;/static/a9835a89ba573af14e793838ca208661/6d370/client_advance_settings.png&quot; srcSet=&quot;/static/a9835a89ba573af14e793838ca208661/c5084/client_advance_settings.png 148w,/static/a9835a89ba573af14e793838ca208661/60cc9/client_advance_settings.png 295w,/static/a9835a89ba573af14e793838ca208661/6d370/client_advance_settings.png 590w,/static/a9835a89ba573af14e793838ca208661/540ae/client_advance_settings.png 885w,/static/a9835a89ba573af14e793838ca208661/2561a/client_advance_settings.png 1180w,/static/a9835a89ba573af14e793838ca208661/3643c/client_advance_settings.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;and &lt;strong class=&quot;css-0&quot;&gt;Update&lt;/strong&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Click on the &lt;strong class=&quot;css-0&quot;&gt;Client Config Summary&lt;/strong&gt; on the top and copy and save the Client ID and the Secret of our &lt;code class=&quot;css-0&quot;&gt;WSO2ISKM&lt;/code&gt; OpenID Connect client.&lt;/p&gt;&lt;h3 id=&quot;-User-Registration&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-User-Registration&quot; aria-label=&quot; User Registration permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;✋ User Registration&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Next, click on the &lt;strong class=&quot;css-0&quot;&gt;Users&lt;/strong&gt; section and &lt;strong class=&quot;css-0&quot;&gt;Add person&lt;/strong&gt; to register a new User for this demo.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/039246ba0e349bacc7366ccb40a9c5f2/3643c/add_person_gluu.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:54.72972972972974%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABZ0lEQVQoz52P3UoCQRTH9yn6oLzRxLQPgzQqIQryom67iaxAslDqJupBvAmCki666AF6iSj1DaJLs5XddXdmd772bMcPhCQCO/xmOAPzO/8ZLVQupW+uww9Xmy+3x/Wnvfrj1ttdtlrJ1irb1d+odane7zyXtWh8aWw6vH+QNyyq26RNGaHcIcx2vF6DYNODEu7aAiEWc9pMm1vJTMXmc4WiJwSl1PVcBYpxZlqWD+AxxqVQvpJKQQBMyi+T6BZCES2xmpmMzKLctHnLIpwxAFBS4iDf9znnQgjVrQACLpVu0pbVR0tnd6Op9fzFpe4GNveDbjHGUMYpnocPEjgFZTwOywtrG6FE8ujsvOXhq/oyBhqGIaUcJEvZCefipxxZXB4Px3InxU8CTUe6wpf4VwB0cEcfuoXhuIaTZ5KpiUj8sNCRG7YI/qzh5IHcIGC4Em/AyPJpUXeh7al/yYVS7cN8fddHkr8BqxYjt0pFl9kAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Add Person in Gluu&quot; title=&quot;Add Person in Gluu&quot; src=&quot;/static/039246ba0e349bacc7366ccb40a9c5f2/6d370/add_person_gluu.png&quot; srcSet=&quot;/static/039246ba0e349bacc7366ccb40a9c5f2/c5084/add_person_gluu.png 148w,/static/039246ba0e349bacc7366ccb40a9c5f2/60cc9/add_person_gluu.png 295w,/static/039246ba0e349bacc7366ccb40a9c5f2/6d370/add_person_gluu.png 590w,/static/039246ba0e349bacc7366ccb40a9c5f2/540ae/add_person_gluu.png 885w,/static/039246ba0e349bacc7366ccb40a9c5f2/2561a/add_person_gluu.png 1180w,/static/039246ba0e349bacc7366ccb40a9c5f2/3643c/add_person_gluu.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Add the following&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Username: &lt;code class=&quot;css-0&quot;&gt;gluuuser&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;First Name: &lt;code class=&quot;css-0&quot;&gt;Gluu&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Display Name: &lt;code class=&quot;css-0&quot;&gt;UserGluu&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Last Name: &lt;code class=&quot;css-0&quot;&gt;User&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Email: &lt;code class=&quot;css-0&quot;&gt;user@gluu.org&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Password: &lt;em class=&quot;css-0&quot;&gt;any preferred passwords for your user&lt;/em&gt; 😃&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;User Status: &lt;code class=&quot;css-0&quot;&gt;Active&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;select and include the &lt;code class=&quot;css-0&quot;&gt;Preferred Username&lt;/code&gt; and &lt;code class=&quot;css-0&quot;&gt;Organization&lt;/code&gt; fields from the list displayed in the left-side&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Preferred Username: &lt;code class=&quot;css-0&quot;&gt;gluuuser&lt;/code&gt; &lt;em class=&quot;css-0&quot;&gt;(same as Username)&lt;/em&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Organization: &lt;code class=&quot;css-0&quot;&gt;Subscriber&lt;/code&gt; &lt;em class=&quot;css-0&quot;&gt;(to demo SSO with the API Manager Store node)&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/f720817db0bd2132b2f2985030ae8f21/58c38/gluu_person.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:81.75675675675677%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAIAAACZeshMAAAACXBIWXMAAAsTAAALEwEAmpwYAAABB0lEQVQoz42SSZaDMAxEuf9FmefJI52fVEKvDGjBA1tfVUjKxnHM87zv+79PxBiXZTHGHOkgR8nZtm2Q8zxzyncIYZqmfd9jOshRcoZO27boqxgXKvQIJrWua3iqyDYn67o+grHddR2kc04wLuAfwYigDH/algUVurd9/rAAGsYhjki6b9gwDLzpmye1OMGR9/5euSxL8VJmTre2tQjfUQE3TYNVGGttyvAJq7v/MD1TPWD5vwhy3srYrqoKWf0GQTkspPZETaEd31GhyYbKCXeQ1+vJrfXBxd8/A6uYlkS1UjAKJsTVxYypFkUBT895cqc5Xa53MP4D82p/ocFiW/24CB8PF44X/3yqtrk1HNAAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Add Person in Gluu&quot; title=&quot;Add Person in Gluu&quot; src=&quot;/static/f720817db0bd2132b2f2985030ae8f21/6d370/gluu_person.png&quot; srcSet=&quot;/static/f720817db0bd2132b2f2985030ae8f21/c5084/gluu_person.png 148w,/static/f720817db0bd2132b2f2985030ae8f21/60cc9/gluu_person.png 295w,/static/f720817db0bd2132b2f2985030ae8f21/6d370/gluu_person.png 590w,/static/f720817db0bd2132b2f2985030ae8f21/540ae/gluu_person.png 885w,/static/f720817db0bd2132b2f2985030ae8f21/2561a/gluu_person.png 1180w,/static/f720817db0bd2132b2f2985030ae8f21/58c38/gluu_person.png 1260w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;and &lt;strong class=&quot;css-0&quot;&gt;Add&lt;/strong&gt;.&lt;/p&gt;&lt;h3 id=&quot;-Scope--Claim-Configurations&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-Scope--Claim-Configurations&quot; aria-label=&quot; Scope  Claim Configurations permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;✋ Scope &amp;amp; Claim Configurations&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;We are almost done configuring the Gluu server. As final steps in the Gluu Server, go to the OpenID Connect and select the Scopes.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/a0daee93a873597d5d65e6731c812d85/3643c/gluu_scope.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:54.72972972972974%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABn0lEQVQoz3VR3S4DURDepxARbtRvaPyEkAiJBHHpuoSISlpuJLwHNxIXFRFP4DEoDyAuBV1q2z179uz5m1mzu0UlTCaTbybzzXznjNNzUpo+Peq9OFy6Odu8vVqrXi5WK8t350vV1O/+8Wpl9frY6R8a7+juLaxv3z+4j8/vUiqjwSgAA2gxwalrZVtYJVgrE0njjM4t9AzmC8XyU1P7QsdxDAgUa03x8OITQIz/NEB0JhdXchMzW/sHkeJ+GETWSLASjCeiNx4pJGwpMimE0VTnSvoiDGSkrHXys/NdAyMbu3tMWq0NIoRh6Ps+85uRCAFASsk5V0pZSBQJIahBaw2AzsD4dGff8HqxLJGUxAhAzEaj8UHmeYhIZM/ziJypJQDplITcNzaVkRXGlsgIjLFGal4b+Zuf7vxNLhRLRKavsdZSX71ef08tk00iaKIx5q/NOdpcYiZWNpFNra7rvtZqNdelzfRCSumpNJc4NCsD7eRy9vtJtJkZckxORQNbpTg7HX6dqiV7pyS1ZTwKQhkIxb88SUNFleAnbTnj8hN5FyQdsI2TzwAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Scopes in Gluu&quot; title=&quot;Scopes in Gluu&quot; src=&quot;/static/a0daee93a873597d5d65e6731c812d85/6d370/gluu_scope.png&quot; srcSet=&quot;/static/a0daee93a873597d5d65e6731c812d85/c5084/gluu_scope.png 148w,/static/a0daee93a873597d5d65e6731c812d85/60cc9/gluu_scope.png 295w,/static/a0daee93a873597d5d65e6731c812d85/6d370/gluu_scope.png 590w,/static/a0daee93a873597d5d65e6731c812d85/540ae/gluu_scope.png 885w,/static/a0daee93a873597d5d65e6731c812d85/2561a/gluu_scope.png 1180w,/static/a0daee93a873597d5d65e6731c812d85/3643c/gluu_scope.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Open the profile scope and click on Add Claim and include the following claims along with the existing&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Preferred Username&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Organization&lt;/li&gt;&lt;/ul&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;For demo purposes, I have configured and included all required claims to the available scopes. As a best practice, try creating a new scope and including all additionally required claims into it. If so, then we have to include the newly created scope in our OpenID Connect client in the Gluu Server to serve the tokens.&lt;/p&gt;&lt;/blockquote&gt;&lt;h2 id=&quot;WSO2-Identity-Server-as-Key-Manager&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#WSO2-Identity-Server-as-Key-Manager&quot; aria-label=&quot;WSO2 Identity Server as Key Manager permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;WSO2 Identity Server as Key Manager&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;We are done with the Gluu configurations. Our next stop is on the WSO2 Identity Server as Key Manager.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;I will be using WSO2 API Manager 2.6 and WSO2 Identity Server as Key Manager 5.7 on this demo. You can refer &lt;a href=&quot;https://docs.wso2.com/display/AM260/Configuring+WSO2+Identity+Server+as+a+Key+Manager&quot; class=&quot;css-0&quot;&gt;here&lt;/a&gt; to configure IS-KM in your environment.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;As a bonus bonanza, you can use the &lt;a href=&quot;https://github.com/athiththan11/hydrogen-cli&quot; class=&quot;css-0&quot;&gt;Hydrogen&lt;/a&gt; (deprecated version can be found &lt;a href=&quot;https://github.com/athiththan11/hydrogen&quot; class=&quot;css-0&quot;&gt;here&lt;/a&gt;) to configure the environment within minutes&lt;/p&gt;&lt;/blockquote&gt;&lt;h3 id=&quot;-Identity-Provider-Configurations&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-Identity-Provider-Configurations&quot; aria-label=&quot; Identity Provider Configurations permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;✋ Identity Provider Configurations&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Let’s start the journey 🚀 by configuring an Identity Provider to Federate with the Gluu Server.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Start the IS-KM server and sign-in to the Carbon Management console. Select the &lt;strong class=&quot;css-0&quot;&gt;Add&lt;/strong&gt; under the &lt;strong class=&quot;css-0&quot;&gt;Identity Providers&lt;/strong&gt; section to register an Identity Provider.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;On the following screen, add the followings&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Identity Provider Name: &lt;code class=&quot;css-0&quot;&gt;GluuIDP&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Display Name: &lt;code class=&quot;css-0&quot;&gt;Gluu Identity Provider&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Identity Provider Public Certificat: upload the certificate we downloaded from the Gluu Server &lt;code class=&quot;css-0&quot;&gt;IDP Signing Cert&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/ea9422f60f4654c8a2258ea0d9021580/f97d7/add_identity_provider.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:36.486486486486484%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAIAAACHqfpvAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAmUlEQVQY042Q2xLCIAxE+/8/agUtVUhIuLqVGX3xwj5BmMPuZkkp5Zx77zkn55z3IQSKMfYJLapaax2wsdbYy3VzxDwLw7yUUmu57ft2yN29lxhba39gESGiATNTIEJwZsZ8JPoFox5KHs1LWY1d1xNIXJFoKjYWBuecFJXPxqAzcxSVsUvoW/7ldUJI2Inq+zvs8MnjqX3SA27NnBGbElzYAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Add Identity Provider&quot; title=&quot;Add Identity Provider&quot; src=&quot;/static/ea9422f60f4654c8a2258ea0d9021580/6d370/add_identity_provider.png&quot; srcSet=&quot;/static/ea9422f60f4654c8a2258ea0d9021580/c5084/add_identity_provider.png 148w,/static/ea9422f60f4654c8a2258ea0d9021580/60cc9/add_identity_provider.png 295w,/static/ea9422f60f4654c8a2258ea0d9021580/6d370/add_identity_provider.png 590w,/static/ea9422f60f4654c8a2258ea0d9021580/540ae/add_identity_provider.png 885w,/static/ea9422f60f4654c8a2258ea0d9021580/2561a/add_identity_provider.png 1180w,/static/ea9422f60f4654c8a2258ea0d9021580/f97d7/add_identity_provider.png 2000w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Next, expand the &lt;strong class=&quot;css-0&quot;&gt;Claim Configuration&lt;/strong&gt; and the &lt;strong class=&quot;css-0&quot;&gt;Basic Claim Configuration&lt;/strong&gt; and click on the &lt;strong class=&quot;css-0&quot;&gt;Define Custom Claim Dialect&lt;/strong&gt; and make the following&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;preferred_username&lt;/code&gt; : &lt;code class=&quot;css-0&quot;&gt;http://wso2.org/claims/displayName&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;o&lt;/code&gt; : &lt;code class=&quot;css-0&quot;&gt;http://wso2.org/claims/role&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;The organization claim from the Gluu Server is passed as &lt;code class=&quot;css-0&quot;&gt;o&lt;/code&gt; in the ID Token&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/8e864becf413c5359cba01293a81e404/f97d7/claim_configurations.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:23.64864864864865%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAIAAADKYVtkAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAqUlEQVQY032O2w6CMBBE+//f6INgAOkivdFtu73gCjExJjqZh8lmTmZF31/GsYvRKQPrevde5eyJtpTcH3PBbUp4j0SZSr4OU3ebpFwQQ0rU2s7+0ucl5yzOVEqR8wwg3eY8YoxRKTUMgwTJIRwC5ZcFciknQkQCEU8Yjt7DhhBj4s+cAwC+8EJrrdaG1FIK9b3+gokSp1qLVqvWen4YYyyT1lre33+L4SebOyFzo/l4EAAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Claim Configurations&quot; title=&quot;Claim Configurations&quot; src=&quot;/static/8e864becf413c5359cba01293a81e404/6d370/claim_configurations.png&quot; srcSet=&quot;/static/8e864becf413c5359cba01293a81e404/c5084/claim_configurations.png 148w,/static/8e864becf413c5359cba01293a81e404/60cc9/claim_configurations.png 295w,/static/8e864becf413c5359cba01293a81e404/6d370/claim_configurations.png 590w,/static/8e864becf413c5359cba01293a81e404/540ae/claim_configurations.png 885w,/static/8e864becf413c5359cba01293a81e404/2561a/claim_configurations.png 1180w,/static/8e864becf413c5359cba01293a81e404/f97d7/claim_configurations.png 2000w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Next, expand the &lt;strong class=&quot;css-0&quot;&gt;Role Configuration&lt;/strong&gt; section and map the &lt;code class=&quot;css-0&quot;&gt;Subscriber&lt;/code&gt; organization retrieved from the Gluu Server with our &lt;code class=&quot;css-0&quot;&gt;Internal/subscriber&lt;/code&gt; role as follows&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/8cdf913706c16ca0743f8760c9434a7a/f97d7/role_configuration.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:15.54054054054054%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAADCAIAAAAcOLh5AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAaUlEQVQI13WNyQqAMAxE+//fWT1YxSWrNalGQfDiYw4ZkkfSMJScMyAhY5mXaQYMiImFJaIcw0+SmbnZ2ZrZ0fVdGaew91rd27puAHA8xBmJiNbzQ4o138iuihgNiAgfQlZVf7H7j3/lC63trb+Xf84UAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Role Configuration&quot; title=&quot;Role Configuration&quot; src=&quot;/static/8cdf913706c16ca0743f8760c9434a7a/6d370/role_configuration.png&quot; srcSet=&quot;/static/8cdf913706c16ca0743f8760c9434a7a/c5084/role_configuration.png 148w,/static/8cdf913706c16ca0743f8760c9434a7a/60cc9/role_configuration.png 295w,/static/8cdf913706c16ca0743f8760c9434a7a/6d370/role_configuration.png 590w,/static/8cdf913706c16ca0743f8760c9434a7a/540ae/role_configuration.png 885w,/static/8cdf913706c16ca0743f8760c9434a7a/2561a/role_configuration.png 1180w,/static/8cdf913706c16ca0743f8760c9434a7a/f97d7/role_configuration.png 2000w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Expand the &lt;strong class=&quot;css-0&quot;&gt;Federated Authenticators&lt;/strong&gt; &amp;gt; &lt;strong class=&quot;css-0&quot;&gt;OAuth2/OpenID Connect Configuration&lt;/strong&gt; and make the following changes&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Enable OAuth2 / OpenIDConnect: &lt;code class=&quot;css-0&quot;&gt;true&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Default: &lt;code class=&quot;css-0&quot;&gt;true&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Client ID: &lt;em class=&quot;css-0&quot;&gt;the&lt;/em&gt; Client ID &lt;em class=&quot;css-0&quot;&gt;of the&lt;/em&gt; &lt;code class=&quot;css-0&quot;&gt;WSO2ISKM&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Client Secret: &lt;em class=&quot;css-0&quot;&gt;the&lt;/em&gt; Client Secret &lt;em class=&quot;css-0&quot;&gt;of the&lt;/em&gt; &lt;code class=&quot;css-0&quot;&gt;WSO2ISKM&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Authorization Endpoint URL: &lt;em class=&quot;css-0&quot;&gt;the&lt;/em&gt; &lt;code class=&quot;css-0&quot;&gt;authorizationEndpoint&lt;/code&gt; &lt;em class=&quot;css-0&quot;&gt;from the configurations&lt;/em&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Token Endpoint URL: &lt;em class=&quot;css-0&quot;&gt;the&lt;/em&gt; &lt;code class=&quot;css-0&quot;&gt;tokenEndpoint&lt;/code&gt; &lt;em class=&quot;css-0&quot;&gt;from the configurations&lt;/em&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Userinfo Endpoint URL: &lt;em class=&quot;css-0&quot;&gt;the&lt;/em&gt; &lt;code class=&quot;css-0&quot;&gt;userInfoEndpoint&lt;/code&gt; &lt;em class=&quot;css-0&quot;&gt;from the configurations&lt;/em&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;OpenID Connect User ID Location: &lt;code class=&quot;css-0&quot;&gt;User ID found among claims&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Additional Query Parameters: &lt;code class=&quot;css-0&quot;&gt;scope=openid profile&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;if you have introduced a new scope to include the &lt;code class=&quot;css-0&quot;&gt;preferred_username&lt;/code&gt; and &lt;code class=&quot;css-0&quot;&gt;organization&lt;/code&gt; claims, then append that scope as well&lt;/p&gt;&lt;/blockquote&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Enable HTTP Basic Auth for Client Authentication: &lt;code class=&quot;css-0&quot;&gt;true&lt;/code&gt; &lt;em class=&quot;css-0&quot;&gt;(as default Gluu server expects Basic auth header for authentication)&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/e748e6d85618a6640c413baa23b1737b/3643c/openid_configurations.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:52.02702702702703%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAIAAAA7N+mxAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA2UlEQVQoz41S2ZKDIBD0/z90V8NAEBiuQdxGK3lIVXS7lJoH+xjaKTI3aRvQOzM7FziEyFGkHdj275hKKb13TCJlXR0eMva5+m1r+x0GOecMY6lFESlFP4sydgX5FL0ip5SQFuRay+OhfudZawohcGQRuSHDFpthAlkpNS8LaQ1FyP0zdnqRCeYIn3Le7zIPcgWpFExNqvfe+eDwBj7j3JBjRFkMq1YLHRdG+knaulEaX4cfO2PDegA7G2PgDGuIytH1x/mWQxeTtRZ3O8JXOWu7Br45/x4I/QFcmkpQh7HE1AAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;OpenID Configurations&quot; title=&quot;OpenID Configurations&quot; src=&quot;/static/e748e6d85618a6640c413baa23b1737b/6d370/openid_configurations.png&quot; srcSet=&quot;/static/e748e6d85618a6640c413baa23b1737b/c5084/openid_configurations.png 148w,/static/e748e6d85618a6640c413baa23b1737b/60cc9/openid_configurations.png 295w,/static/e748e6d85618a6640c413baa23b1737b/6d370/openid_configurations.png 590w,/static/e748e6d85618a6640c413baa23b1737b/540ae/openid_configurations.png 885w,/static/e748e6d85618a6640c413baa23b1737b/2561a/openid_configurations.png 1180w,/static/e748e6d85618a6640c413baa23b1737b/3643c/openid_configurations.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Expand the &lt;strong class=&quot;css-0&quot;&gt;Just-In-Time Provisioning&lt;/strong&gt; and select the &lt;code class=&quot;css-0&quot;&gt;PRIMARY&lt;/code&gt; as the provisioning User Store Domain&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/8efa437e1f55f4c32920cd02d62dcc22/f97d7/jit_configuration.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:12.837837837837837%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAADCAIAAAAcOLh5AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAQUlEQVQI15XLMQ4AIQgFUe9/TE0o1gb4KIZGjbHf3ZdpJxERsyggoqwG27Xe/TX3kcqVn1rVhh/zmz1nwCJi/rcAxaSuv6K1VTEAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Just In Time Provisioning Configuration&quot; title=&quot;Just In Time Provisioning Configuration&quot; src=&quot;/static/8efa437e1f55f4c32920cd02d62dcc22/6d370/jit_configuration.png&quot; srcSet=&quot;/static/8efa437e1f55f4c32920cd02d62dcc22/c5084/jit_configuration.png 148w,/static/8efa437e1f55f4c32920cd02d62dcc22/60cc9/jit_configuration.png 295w,/static/8efa437e1f55f4c32920cd02d62dcc22/6d370/jit_configuration.png 590w,/static/8efa437e1f55f4c32920cd02d62dcc22/540ae/jit_configuration.png 885w,/static/8efa437e1f55f4c32920cd02d62dcc22/2561a/jit_configuration.png 1180w,/static/8efa437e1f55f4c32920cd02d62dcc22/f97d7/jit_configuration.png 2000w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;and &lt;strong class=&quot;css-0&quot;&gt;Register&lt;/strong&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Attached is a complete-snap of our &lt;code class=&quot;css-0&quot;&gt;GluuIDP&lt;/code&gt; configurations in the Identity Server as Key Manager server 👌👌&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/f34052d33c7a6c9e8f1970ee4cac5a08/3643c/idp_complete_configurations.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:157.43243243243242%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAfCAIAAABoLHqZAAAACXBIWXMAAAsTAAALEwEAmpwYAAADeklEQVQ4y4VVTXPbNhDl/z/11lPG1/bUurEcRbXdg2fsum3GntQTW44iWaIYghRAEsQXv5UHopZlT6TuvMGsMFjs24ddynvz4w/vfvnp3a8/j//95/Pth+ndzdfZffg4doC/hXHkf4mWU7KYhPMHsvjs3dx+bNbWirLKhWpa60hdKFMWZY2f26ibzqK1aLvO+3h7o41p6toYXRQGtwiRx3GUZZlWat11Xds+o3sB7+7hk0Jw01S9dd3aGBXDVquMc+ysd5t3ff2XKgpLuyiQra7rqiqzjOe50FqXZbkveHD8m1BaSolzOA0KSpsojrHT9LYv+P1omArNhQRDJG/bVilpSVOK7LhCae0oNC8NJ73Ts1NVtohUSgTBnFKidZ7nTKmsLKVDUQiHsod1SiEE994OjlaMJYwhHnmwIt2jHzDGjDGVlaBqn2y7EGTwTv4YFbU17GLFrtbK1qwMwhBPomi1WlnmVcUylKG2gk/fo6qqrJxgVnajKaWrRMjewM9dCsPjduvO+dj3Ts5GSIpNztPp9MH3p3G8jOMginxCfBIu4DMa0h6MEfrkUxp7v5+NKkjXNCAEeoUxKc8CEkNqbTSarxdcOQgpUEjRG/ja4LKu275gSAI+SimwFgIilziJhrHv0jckur37j/UaZXqD4TFXSKGTNJnNJsvlPElWaUpZsnJIM5bxxIE7J+vBM290clrVjdFGqTwIpoQgmAhBASkZAAc3a51uA8WlGfUuLy+tjG0LGlVlVYXwGAnb3rbtoGb73d60al9cXLhg157wMZtoToL+zPh6U+J3gzeZIRgqhyxY+8YAc6utU/F/gt082w5TihAbjMfZM1Wvg21m0NaWNqWYDbVnHl/TRs1ol6o0Vi5YjgEyu5K/CIbaaCY0BhKGIWEsTVIuBUaynyrbhG0/xZ0T0Q6GC8aGlHkY+gmLs4xyznLO7JonQqRYN8BPpThmPkme3rm/id19+nP65ZqEY57NRe7nu8AXgqOXwk3mtZTJePx3GN5rFQqxBKRF8BrSQqkgTclzMEje33+YzW7TdAEkyZwx4HEHZpR+3dDukjSdTCa+70dRROIVJgPG9xgEc+2J98C/zMJfBkGAJxZS47vU7v3u4l2f1cZwzxd+GKJg+7nHg+FzJXcbzngHBwdXV1fn5+fD4fDw8PBoMHh7dOSw3wbHx98AO7DR333ai7oAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Identity Provider Complete Configurations&quot; title=&quot;Identity Provider Complete Configurations&quot; src=&quot;/static/f34052d33c7a6c9e8f1970ee4cac5a08/6d370/idp_complete_configurations.png&quot; srcSet=&quot;/static/f34052d33c7a6c9e8f1970ee4cac5a08/c5084/idp_complete_configurations.png 148w,/static/f34052d33c7a6c9e8f1970ee4cac5a08/60cc9/idp_complete_configurations.png 295w,/static/f34052d33c7a6c9e8f1970ee4cac5a08/6d370/idp_complete_configurations.png 590w,/static/f34052d33c7a6c9e8f1970ee4cac5a08/540ae/idp_complete_configurations.png 885w,/static/f34052d33c7a6c9e8f1970ee4cac5a08/2561a/idp_complete_configurations.png 1180w,/static/f34052d33c7a6c9e8f1970ee4cac5a08/3643c/idp_complete_configurations.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;h3 id=&quot;-Service-Provider-Configurations&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-Service-Provider-Configurations&quot; aria-label=&quot; Service Provider Configurations permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;✋ Service Provider Configurations&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Next, we need a Service Provider to communicate with the API Store node. Click on &lt;strong class=&quot;css-0&quot;&gt;Add&lt;/strong&gt; under the &lt;strong class=&quot;css-0&quot;&gt;Service Providers&lt;/strong&gt; and do the following&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/c1c3b1470ee0c2f6dfb8604da0103131/f97d7/service_provider_basic_configuration.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:24.324324324324326%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAIAAADKYVtkAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAbUlEQVQY05WOgQqAIAxE9/8fKqSYprZKnXYQRQQRPY6xYzc2GgadUtq2/FelFFJKxRhzhr+zXnoDIQohYG/yXmvj/TSOjnnBIH9RayWR1nuf52iMcc5Za1GZubUmIkig6S8QDuL7I3chJw/7YAcTcCPA9S8zeQAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Service Provider Basic Configuration&quot; title=&quot;Service Provider Basic Configuration&quot; src=&quot;/static/c1c3b1470ee0c2f6dfb8604da0103131/6d370/service_provider_basic_configuration.png&quot; srcSet=&quot;/static/c1c3b1470ee0c2f6dfb8604da0103131/c5084/service_provider_basic_configuration.png 148w,/static/c1c3b1470ee0c2f6dfb8604da0103131/60cc9/service_provider_basic_configuration.png 295w,/static/c1c3b1470ee0c2f6dfb8604da0103131/6d370/service_provider_basic_configuration.png 590w,/static/c1c3b1470ee0c2f6dfb8604da0103131/540ae/service_provider_basic_configuration.png 885w,/static/c1c3b1470ee0c2f6dfb8604da0103131/2561a/service_provider_basic_configuration.png 1180w,/static/c1c3b1470ee0c2f6dfb8604da0103131/f97d7/service_provider_basic_configuration.png 2000w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;and &lt;strong class=&quot;css-0&quot;&gt;Register&lt;/strong&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;On the next screen, expand the &lt;strong class=&quot;css-0&quot;&gt;Claim Configurations&lt;/strong&gt; and select the Define Custom Claim Dialect to and define the following to pass the &lt;code class=&quot;css-0&quot;&gt;preferred_username&lt;/code&gt; claim to the Store node&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;preferred_username&lt;/code&gt; : &lt;code class=&quot;css-0&quot;&gt;http://wso2.org/claims/displayName&lt;/code&gt; : &lt;code class=&quot;css-0&quot;&gt;Requested&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/caf64a2ad172a107ab52660b636d3535/f97d7/sp_claim_configuration.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:25%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAIAAADKYVtkAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAlklEQVQY041OOQ7DMAzL/7+ZtoNPyYd821UcFOgYggNFiQIPIeR5vpQ2iF5rDYAx0kXa3DrEG/RPNo9aayml9S4AlQEimnOMOfvG2Jg8jnGPP7OzeYUZrISS5/vjfQAMzgdrrVLKGOMcplwkEDrPr3nFhRCBzSOEkHNeayFYPq0lS+Qi6wkOTqaUWmuJiDX3wVhLfZT+As1wIqRDa+UuAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Service Provider Claim Configuration&quot; title=&quot;Service Provider Claim Configuration&quot; src=&quot;/static/caf64a2ad172a107ab52660b636d3535/6d370/sp_claim_configuration.png&quot; srcSet=&quot;/static/caf64a2ad172a107ab52660b636d3535/c5084/sp_claim_configuration.png 148w,/static/caf64a2ad172a107ab52660b636d3535/60cc9/sp_claim_configuration.png 295w,/static/caf64a2ad172a107ab52660b636d3535/6d370/sp_claim_configuration.png 590w,/static/caf64a2ad172a107ab52660b636d3535/540ae/sp_claim_configuration.png 885w,/static/caf64a2ad172a107ab52660b636d3535/2561a/sp_claim_configuration.png 1180w,/static/caf64a2ad172a107ab52660b636d3535/f97d7/sp_claim_configuration.png 2000w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Next, expand the &lt;strong class=&quot;css-0&quot;&gt;OAuth2/OpenID Connect Configuration&lt;/strong&gt; under the &lt;strong class=&quot;css-0&quot;&gt;Inbound Authentication Configuration&lt;/strong&gt; and click on Configure. On the following screen add&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Callback URL: &lt;code class=&quot;css-0&quot;&gt;https://localhost:9443/store/jagg/jaggery_oidc_acs.jag&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;and &lt;strong class=&quot;css-0&quot;&gt;Add&lt;/strong&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Finally, expand the &lt;strong class=&quot;css-0&quot;&gt;Local &amp;amp; Outbound Authentication Configuration&lt;/strong&gt; and select the &lt;code class=&quot;css-0&quot;&gt;GluuIDP&lt;/code&gt; as the &lt;strong class=&quot;css-0&quot;&gt;Federated Authentication&lt;/strong&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/62081562f8312cb58e8182d241a8f5af/f97d7/sp_outbound_configuration.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:25%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAIAAADKYVtkAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAb0lEQVQY05WNQQ7DMAgE/f+HtrECNiUYo6a2u+oDonTEgZVgJxFxzpmZH8+NiHoP927mRwvsF9OapzHGBGvJ4UX0fX6AmvdzXTPnSKUwhKr6UkXfr+cWsCZ3F5Faa2E2M2j/eK6itO8wRwTyug2Ov4KuJTqWuIaXAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Service Provider Outbound Authentication Configuration&quot; title=&quot;Service Provider Outbound Authentication Configuration&quot; src=&quot;/static/62081562f8312cb58e8182d241a8f5af/6d370/sp_outbound_configuration.png&quot; srcSet=&quot;/static/62081562f8312cb58e8182d241a8f5af/c5084/sp_outbound_configuration.png 148w,/static/62081562f8312cb58e8182d241a8f5af/60cc9/sp_outbound_configuration.png 295w,/static/62081562f8312cb58e8182d241a8f5af/6d370/sp_outbound_configuration.png 590w,/static/62081562f8312cb58e8182d241a8f5af/540ae/sp_outbound_configuration.png 885w,/static/62081562f8312cb58e8182d241a8f5af/2561a/sp_outbound_configuration.png 1180w,/static/62081562f8312cb58e8182d241a8f5af/f97d7/sp_outbound_configuration.png 2000w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;and &lt;strong class=&quot;css-0&quot;&gt;Update&lt;/strong&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;As always, a complete-snip of the &lt;code class=&quot;css-0&quot;&gt;API_STORE&lt;/code&gt; Service Provider configuration is given below👌 🤓&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/efc62ba98fc1b990118dd8c02f7291ab/3643c/sp_complete_configurations.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:85.13513513513513%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAARCAIAAABSJhvpAAAACXBIWXMAAAsTAAALEwEAmpwYAAACL0lEQVQ4y41SPW/UQBDdX8QfoEGkQSINokH8ARokIihSQEFBSUPBR5EQREcQCITujguRaE7HhSIh0ZFEOiSjA+l0tte7Xu96P/xxPNsKgog78fS0tsczOzNvhjy8ubxx68K9q2fuXzv74Pq5RzfOP1lZeryCs+HSn1xfXV5bvbhx+9Lzu1ee3blMXmxu7u19GQ6/BgENglBra4yzLrMWdAY0oK1P2POKNjMwWUcODg+yspzNZmmqOY8z5/I85zFnjDPORSJVqvFLG5Nl+OkczqwC3Mj+cF9pnZ18l/VFIkloGCY18iyDpbGfAjkeHSltiqIwNRonpEPmpjZrrcbDueJvlGVBer2P2jrEKKWCIMCJ/pSSaZqq00h/o3knr1+9DMIopBHyVAZtQhbzOEYTZVE0vTSp8IKOG8KmtSYftrupK00jAtQq8snUjxjHLSo1QgjOOe5EQCwNZKukM7pJTlrttlBVnbo2o/445nCR2mlXzOYDzuTtuzcBDRljiZRT3w98n4YUY6IRi1gMtYX4NzFX0t3uQDD0E0Xs8Oh4NPrmed8ppVAbluqK+STvu+1mEoivplnOoliKREEtiQVwC8vudluIK6BeqqKIVgrFAlt54lPOYR3c2WprZ6G0NpZW1TDEZ/VWLQaWh7S3WqaaW46Y8dibTH6G4VSIKEnYAkoJiSlpddrKYfpOSul53vjH2Pf9aqflYgrsGFlbf7q7u/d5Z2cwGPR6vX6//+m/8Qt7TaBTAh+X8gAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Service Provider Complete Configurations&quot; title=&quot;Service Provider Complete Configurations&quot; src=&quot;/static/efc62ba98fc1b990118dd8c02f7291ab/6d370/sp_complete_configurations.png&quot; srcSet=&quot;/static/efc62ba98fc1b990118dd8c02f7291ab/c5084/sp_complete_configurations.png 148w,/static/efc62ba98fc1b990118dd8c02f7291ab/60cc9/sp_complete_configurations.png 295w,/static/efc62ba98fc1b990118dd8c02f7291ab/6d370/sp_complete_configurations.png 590w,/static/efc62ba98fc1b990118dd8c02f7291ab/540ae/sp_complete_configurations.png 885w,/static/efc62ba98fc1b990118dd8c02f7291ab/2561a/sp_complete_configurations.png 1180w,/static/efc62ba98fc1b990118dd8c02f7291ab/3643c/sp_complete_configurations.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;👉 Before moving to the next part, make a note or copy the &lt;code class=&quot;css-0&quot;&gt;client_id&lt;/code&gt; and the &lt;code class=&quot;css-0&quot;&gt;client_secret&lt;/code&gt; which are generated in our Service Provider as we need ’em when configuring the site.json.&lt;/p&gt;&lt;h2 id=&quot;WSO2-API-Manager&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#WSO2-API-Manager&quot; aria-label=&quot;WSO2 API Manager permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;WSO2 API Manager&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;We are almost done with our configurations. As of the final steps, we have to configure the &lt;code class=&quot;css-0&quot;&gt;site.json&lt;/code&gt; which is related to the API Manager’s Store node to initiate the SSO flow.&lt;/p&gt;&lt;h3 id=&quot;-Store-Sitejson&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-Store-Sitejson&quot; aria-label=&quot; Store Sitejson permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;✋ Store: Site.json&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Open-up the WSO2 API Manager’s directory and move to &lt;code class=&quot;css-0&quot;&gt;&amp;lt;apim&amp;gt;/repository/deployment/server/jaggeryapps/store/site/conf&lt;/code&gt; and open the &lt;strong class=&quot;css-0&quot;&gt;site.json&lt;/strong&gt; to configure the OIDC&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Given below is a complete segment of the &lt;strong class=&quot;css-0&quot;&gt;OpenID Connect&lt;/strong&gt; configuration model in the site.json. You can refer to the following to configure your site.json in your environment.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;Replace the &lt;code class=&quot;css-0&quot;&gt;Client ID&lt;/code&gt; and &lt;code class=&quot;css-0&quot;&gt;Client Secret&lt;/code&gt; with the credentials acquired from the API_STORE Service Provider&lt;/p&gt;&lt;/blockquote&gt;&lt;pre class=&quot;prism-code language-json&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;oidcConfiguration&amp;quot;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;enabled&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;issuer&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;API_STORE&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;identityProviderURI&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;https://localhost:9444/oauth2/token&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;authorizationEndpointURI&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;https://localhost:9444/oauth2/authorize&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;tokenEndpointURI&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;https://localhost:9444/oauth2/token&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;userInfoURI&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;https://localhost:9444/oauth2/userinfo&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;jwksURI&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;https://localhost:9444/oauth2/jwks&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;logoutEndpointURI&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;https://localhost:9444/oidc/logout&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;authHttpMethod&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;POST&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;clientConfiguration&amp;quot;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;clientId&amp;quot;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;Client ID&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;clientSecret&amp;quot;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;Client Secret&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;responseType&amp;quot;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;code&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;authorizationType&amp;quot;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;authorization_code&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;scope&amp;quot;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;phone email address openid profile&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;redirectURI&amp;quot;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;https://localhost:9443/store/jagg/jaggery_oidc_acs.jag&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;postLogoutRedirectURI&amp;quot;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;https://localhost:9443/store/&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;clientAlgorithm&amp;quot;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;RS256&amp;quot;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;h2 id=&quot;-Voila-&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-Voila-&quot; aria-label=&quot; Voila  permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;🎉 Voila!!! 🎉&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;We have now successfully configured OpenID Connect Federated Authentication between Gluu and Single Sign-On with OpenID Connect with API Store.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;👏 👏 👏&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;I hope you find this one useful to try-out and configure Federated Authentication &amp;amp; SSO between WSO2 API Manager and Gluu Server.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Next, a small (alpha) test drive…&lt;/p&gt;&lt;h3 id=&quot;Test-Drive&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Test-Drive&quot; aria-label=&quot;Test Drive permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Test Drive&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Direct to the Store portal using &lt;code class=&quot;css-0&quot;&gt;https://localhost:9443/store/&lt;/code&gt; and click on Sign-In.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;You will be redirected to the Gluu’s login page to enter the credentials. Enter the credentials of our Gluu User and then allow the attributes on the consent screen to continue with the federation and provision of the Gluu users to the WSO2 API Manager.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;Login to the Carbon Management console of WSO2 API Manager and list the Users. If the Federation is successful and JIT Provisioned performed without any errors, you will be able to see our Gluu User in the prompted list.&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;strong class=&quot;css-0&quot;&gt;Happy Stacking !!!!&lt;/strong&gt; 🤘 ✌️&lt;/p&gt;&lt;h2 id=&quot;Troubleshooting&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Troubleshooting&quot; aria-label=&quot;Troubleshooting permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Troubleshooting&lt;/h2&gt;&lt;h3 id=&quot;SSL-Handshake--PKIX&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#SSL-Handshake--PKIX&quot; aria-label=&quot;SSL Handshake  PKIX permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;SSL Handshake | PKIX&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;If you encounter any SSL Handshake related issues or more precisely any PKIX Exceptions, then download the Public Certificate of the Gluu Server’s domain and add it to the WSO2 Identity Server as Key Manager’s trust-store.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;You can download the Public certificate of the Gluu Server’s domain from the Browser. For example in Chrome, you can click on the padlock 🔒 icon near the URL and can download the certificate.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;After successfully acquiring the certificate execute the following keytool command against the trust-store inside the &lt;code class=&quot;css-0&quot;&gt;&amp;lt;iskm&amp;gt;/repository/resources/security&lt;/code&gt; directory&lt;/p&gt;&lt;pre class=&quot;prism-code language-bash&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;# execute the following command and wso2carbon for the password&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;keytool -import -alias gluu -file &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;path-of-the-cert&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; -storetype JKS -keystore client-truststore.jks&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;After a successful import, try the SSO flow again in a new window.&lt;/p&gt;&lt;h3 id=&quot;JIT-Provisioning--Authentication-Framework&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#JIT-Provisioning--Authentication-Framework&quot; aria-label=&quot;JIT Provisioning  Authentication Framework permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;JIT Provisioning &amp;amp; Authentication Framework&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;If you want to enable the debug logs for the JIT Provisioning flow and the Federated authentication flows, then open and add the following property in the &lt;code class=&quot;css-0&quot;&gt;&amp;lt;server&amp;gt;/repository/conf/log4j.properties&lt;/code&gt;&lt;/p&gt;&lt;pre class=&quot;prism-code language-bash&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;# to enable DEBUG logs in the authentication framework&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;log4j.logger.org.wso2.carbon.identity.application.authentication.framework &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; DEBUG&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;And the JIT Provisioning is handled by &lt;code class=&quot;css-0&quot;&gt;org.wso2.carbon.identity.application.authentication.framework.handler.request.impl.JITProvisionningPostAuthenticationHandler&lt;/code&gt;.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[WSO2 API Manager & Keycloak SAML SSO]]></title><link>https://stackcheats.github.io/wso2-api-manager-keycloak-saml-sso/content/</link><guid isPermaLink="false">https://stackcheats.github.io/wso2-api-manager-keycloak-saml-sso/content/</guid><pubDate>Sun, 12 Apr 2020 00:00:00 GMT</pubDate><content:encoded>&lt;style data-emotion-css=&quot;sa2dbt&quot;&gt;body{color:text;background-color:var(--theme-ui-colors-background,#fff);}&lt;/style&gt;&lt;style data-emotion-css=&quot;0&quot;&gt;&lt;/style&gt;&lt;h2 id=&quot;Greetings-Everyone--&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Greetings-Everyone--&quot; aria-label=&quot;Greetings Everyone   permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Greetings Everyone !!! 👋&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;In this medium, I will be 🚶walking through on how to configure SAML Federated Authentication &amp;amp; SSO flow between WSO2 API Manager and Keycloak including JIT (User) Provisioning.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;In my previous mediums, I have used WSO2 API Manager 2.6 &amp;amp; WSO2 Identity Server as Key Manager 5.7 to achieve the SAML2 SSO Federated authentication flows.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Today, I will be using only the API Manager 2.6 pack and the Out-Of-The-Box features to achieve the requirement&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;As out-of-the-box, the WSO2 API Manager 2.6 provides a platform to configure SAML2 Federation.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;But, please note that it is advised (best-practice) to use WSO2 Identity Server as Key Manager to perform Federated Authentication with External Identity Providers in Production grade environments.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Let’s break-in…&lt;/p&gt;&lt;h2 id=&quot;-Keycloak&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-Keycloak&quot; aria-label=&quot; Keycloak permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;🔐 Keycloak&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;Let’s start our configurations from the External Identity Provider.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;I hope you already have an active Keycloak server up and running. If not please follow the below section to download and start a Keycloak server in your environment.&lt;/p&gt;&lt;h3 id=&quot;Starting-Up-Keycloak&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Starting-Up-Keycloak&quot; aria-label=&quot;Starting Up Keycloak permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Starting-Up Keycloak&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Click &lt;a href=&quot;https://www.keycloak.org/downloads.html&quot; class=&quot;css-0&quot;&gt;Here&lt;/a&gt; to download the Keycloak standalone distribution to your environment. Extract the archive and navigate to the &lt;code class=&quot;css-0&quot;&gt;&amp;lt;keycloak&amp;gt;/bin&lt;/code&gt; directory and execute the following command to start the Keycloak server …&lt;/p&gt;&lt;div title=&quot;Keycloak&quot; class=&quot;css-0&quot;&gt;&lt;/div&gt;&lt;pre class=&quot;prism-code language-bash&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;# move to bin directory and execute the following&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;# unix&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;sh standalone.sh&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;# windows&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;standalone.bat&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;Then, fire-up your favorite browser and go to &lt;code class=&quot;css-0&quot;&gt;http://localhost:8080/auth&lt;/code&gt;. In the prompted page, register an admin user for our Keycloak server.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&amp;amp; Done … simple as that 👏 👏&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;👉 You can follow up on the following Doc to get started with the Keycloak server …&lt;/p&gt;&lt;/blockquote&gt;&lt;div title=&quot;Getting Started Guide&quot; class=&quot;css-0&quot;&gt;&lt;/div&gt;&lt;h3 id=&quot;-SAML-20-Metadata&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-SAML-20-Metadata&quot; aria-label=&quot; SAML 20 Metadata permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;✋ SAML 2.0 Metadata&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;After a successful log-in to the Keycloak server with our admin user, you will be looking into a similar UI as follows&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/06d0459891ed90c75a83f23845c9f62a/3643c/master_realm.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:38.513513513513516%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAIAAAB2/0i6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA0klEQVQY05WQywqCQBSGfYGidYR20YxaRVQgEVGLFl7Ah0mSknreghlpvA3m2MGSMt34LYY5cD7+n8MNJLnRbIni0DAMVVV1Xddy9B+0IrBsmiY3nSuCOLada5qmcRyndeDW231PmtinCwyEeL7nEULCMAwywhxKKWPsX1bWu05XPhzPMCCEiB88/ODtRlH0zIFS1TLfH1mZ7GJ8c737I4B/abOq9myxaguSZTswQBqlEUYIYwxV4yIVyQtl0+Y/MtRLkgTawstKVCUvv8kg17r2C1PGgd8zU9ohAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Master Realm&quot; title=&quot;Master Realm&quot; src=&quot;/static/06d0459891ed90c75a83f23845c9f62a/6d370/master_realm.png&quot; srcSet=&quot;/static/06d0459891ed90c75a83f23845c9f62a/c5084/master_realm.png 148w,/static/06d0459891ed90c75a83f23845c9f62a/60cc9/master_realm.png 295w,/static/06d0459891ed90c75a83f23845c9f62a/6d370/master_realm.png 590w,/static/06d0459891ed90c75a83f23845c9f62a/540ae/master_realm.png 885w,/static/06d0459891ed90c75a83f23845c9f62a/2561a/master_realm.png 1180w,/static/06d0459891ed90c75a83f23845c9f62a/3643c/master_realm.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Click on the &lt;strong class=&quot;css-0&quot;&gt;SAML 2.0 Identity Provider Metadata&lt;/strong&gt; to get the required configurations metadata.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Save the metadata as we will be using that in the following sections to configure Federated Identity Provider.&lt;/p&gt;&lt;h3 id=&quot;-SAML2-Client-Registration&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-SAML2-Client-Registration&quot; aria-label=&quot; SAML2 Client Registration permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;✋ SAML2 Client Registration&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Click on the &lt;strong class=&quot;css-0&quot;&gt;Clients&lt;/strong&gt; under &lt;strong class=&quot;css-0&quot;&gt;Configure&lt;/strong&gt; to list all the existing registered clients of Keycloak Server. You will be looking into a similar screen as follows&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;We will be using the existing Master realm to create required Clients, Users, and Roles in the Keycloak server&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/16c42158765a62b7085a5d097349bfbd/3643c/clients_keycloak.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:20.27027027027027%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAECAIAAAABPYjBAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAp0lEQVQI142N3QqCQBCF92GMDMpKiraMSuhlC7Syp1p1W/bfIp0mhK77mIvDnDNzyHyZRDENwii/3gGgbVv4G0J3x1VyGI7j7FJ0AFpr55wxxlorldbWGYsL34OqD6CrlCLL9Z5u08Foespub4A+iAZeMy65tA9ljfPP5gtadV0zxsqyREFmiw1N0iCcnPPi1QHeYAab8YuQ2OxxnG9+CCGqquKco/gAd8TIkz5gcuYAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Clients in Keycloak&quot; title=&quot;Clients in Keycloak&quot; src=&quot;/static/16c42158765a62b7085a5d097349bfbd/6d370/clients_keycloak.png&quot; srcSet=&quot;/static/16c42158765a62b7085a5d097349bfbd/c5084/clients_keycloak.png 148w,/static/16c42158765a62b7085a5d097349bfbd/60cc9/clients_keycloak.png 295w,/static/16c42158765a62b7085a5d097349bfbd/6d370/clients_keycloak.png 590w,/static/16c42158765a62b7085a5d097349bfbd/540ae/clients_keycloak.png 885w,/static/16c42158765a62b7085a5d097349bfbd/2561a/clients_keycloak.png 1180w,/static/16c42158765a62b7085a5d097349bfbd/3643c/clients_keycloak.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Select the &lt;strong class=&quot;css-0&quot;&gt;Create&lt;/strong&gt; button to add a new client. Set the following&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Client ID: &lt;code class=&quot;css-0&quot;&gt;wso2apim-saml&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Client Protocol: &lt;code class=&quot;css-0&quot;&gt;saml&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;and &lt;strong class=&quot;css-0&quot;&gt;Save&lt;/strong&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/2816602665ad040f590e439b7f0a03d1/3643c/add_client.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:33.108108108108105%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAIAAACHqfpvAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAgklEQVQY052PMQ7DMAhFuf+ReoKOuUHVyVIiO3YdQ4DYKUnUrrX6BsTy+Q9Aopxza20/+S49QIwREfe/ABFRVZvryThOpfTegkv1lRLTgXMuxlRr3To4wqbtvbdaES5luVx+wsxgbSEECxMh67aKmkhPreXhY1hN4f6Yb8NzSXPnz2/XMpxBzAyZqQAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Add Client — Keycloak&quot; title=&quot;Add Client — Keycloak&quot; src=&quot;/static/2816602665ad040f590e439b7f0a03d1/6d370/add_client.png&quot; srcSet=&quot;/static/2816602665ad040f590e439b7f0a03d1/c5084/add_client.png 148w,/static/2816602665ad040f590e439b7f0a03d1/60cc9/add_client.png 295w,/static/2816602665ad040f590e439b7f0a03d1/6d370/add_client.png 590w,/static/2816602665ad040f590e439b7f0a03d1/540ae/add_client.png 885w,/static/2816602665ad040f590e439b7f0a03d1/2561a/add_client.png 1180w,/static/2816602665ad040f590e439b7f0a03d1/3643c/add_client.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;In the next screen, add the following to configure our &lt;code class=&quot;css-0&quot;&gt;wso2apim-saml&lt;/code&gt; client in the Keycloak&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Name: &lt;code class=&quot;css-0&quot;&gt;WSO2 APIM SAML Client&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Enabled: &lt;code class=&quot;css-0&quot;&gt;true&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Client Protocol: &lt;code class=&quot;css-0&quot;&gt;saml&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Include AuthnStatement: &lt;code class=&quot;css-0&quot;&gt;true&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Sign Documents: &lt;code class=&quot;css-0&quot;&gt;true&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Signature Algorithm: &lt;code class=&quot;css-0&quot;&gt;RSA_SHA1&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;SAML Signature Key Name: &lt;code class=&quot;css-0&quot;&gt;NONE&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Canonicalization Method: &lt;code class=&quot;css-0&quot;&gt;EXCLUSIVE&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Force POST Binding: &lt;code class=&quot;css-0&quot;&gt;true&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Front Channel Logout: &lt;code class=&quot;css-0&quot;&gt;true&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Force Name ID Format: &lt;code class=&quot;css-0&quot;&gt;true&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Name ID Format: &lt;code class=&quot;css-0&quot;&gt;username&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Valid Redirect URIs: &lt;code class=&quot;css-0&quot;&gt;https://localhost:9443/commonauth&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Master SAML Processing URL: &lt;code class=&quot;css-0&quot;&gt;https://localhost:9443/commonauth&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;and under &lt;strong class=&quot;css-0&quot;&gt;Fine Grain SAML Endpoint Configuration&lt;/strong&gt;&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Assertion Consumer Service POST Binding URL: &lt;code class=&quot;css-0&quot;&gt;https://localhost:9443/commonauth&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Assertion Consumer Service Redirect Binding URL: &lt;code class=&quot;css-0&quot;&gt;https://localhost:9443/commonauth&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;and &lt;strong class=&quot;css-0&quot;&gt;Save&lt;/strong&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/4915118dcaaac3632e37f3825242c141/3643c/saml_client_configurations.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:139.1891891891892%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAcCAIAAADuuAg3AAAACXBIWXMAAAsTAAALEwEAmpwYAAACHUlEQVQ4y51U227aQBT0D6SfkKYQFIgFJS0mEGgUVc0H9yHBGNrvqFQpL32g+H7d9QXbneyWyGDTmM6Dvevd0Zwz5xwLrW7/7F3j5OTNRbszHo8lSbr+i2EZ/Cvu4OZkMhF6V9ed3qBx0f36IIdRbOh6GIZpmm4A/twFjrIsSxmE4acv07v7c7E/U5Z5nhOA0iiKGZKIrcLtHm/w8y0EafoZ5Ea7pyy/Y++4bkQC0zAopUmSFDUhmO9C6H4YTe7um+3efPENe8s0fmiearkhJSCnBVSQ3w9uBqPbs5bIyZ7n+SRE8linu6gmXw2np80OJ9u2ZZGIRnFaZdU+uS/dfBzdnjYvZ/MFjm3T/Gn4Dglxti9Uwr6yrqlPNvXCuBYZRRb7w7fnoqwssDcMwycUtclrYEtuiTLC3mwsy6IUlaZpqUMqDONkuP3wKHO3afiMpIR/kWeyghvPykEA5SPDZu3pe+6TRY40jOUM5cCxlV/ub5+VKqvt9nyxZG7rK5e4Ac3qGwaywuqMwdjEke/7cA62xVvwOTmszHIGB+OHueTMF6uxLg5jRc7Ym6aFGSYMnFArbN6eqqq+/CiOaBLUGSRd14MgQPBQzko4GDZrkhhkeOM4MM5F/PXCZk2CeBE295bb+8rPoJgzjtfr9dE5s5FEqTJN0/7HsEdZQZKr1YqPFJ7Za/1ZMIzV2bZtuA2rK6UOhX3J25P3Rh1Z4A8EnWxiGX4zGAAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;WSO2 APIM SAML Client Configurations — Keycloak&quot; title=&quot;WSO2 APIM SAML Client Configurations — Keycloak&quot; src=&quot;/static/4915118dcaaac3632e37f3825242c141/6d370/saml_client_configurations.png&quot; srcSet=&quot;/static/4915118dcaaac3632e37f3825242c141/c5084/saml_client_configurations.png 148w,/static/4915118dcaaac3632e37f3825242c141/60cc9/saml_client_configurations.png 295w,/static/4915118dcaaac3632e37f3825242c141/6d370/saml_client_configurations.png 590w,/static/4915118dcaaac3632e37f3825242c141/540ae/saml_client_configurations.png 885w,/static/4915118dcaaac3632e37f3825242c141/2561a/saml_client_configurations.png 1180w,/static/4915118dcaaac3632e37f3825242c141/3643c/saml_client_configurations.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Next, click on the &lt;strong class=&quot;css-0&quot;&gt;Roles&lt;/strong&gt; tab to create a role in Keycloak server representing the Subscriber role in the WSO2 API Manager&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/1da53f07db738ab116c3f930d51fe3cf/3643c/roles_of_saml_client.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:15.54054054054054%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAADCAIAAAAcOLh5AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAT0lEQVQI15WOOxaAMAgEc//DUvAJ5AEqJkZr51FMsSw00YGIZnb+p4kIS7+HuSpsfKjqK+5e6WOTmRHR+FkWACCiyvXJEp0ssU3V1cn69wIVT6975A8BGwAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Roles of WSO2 APIM SAML Client — Keycloak&quot; title=&quot;Roles of WSO2 APIM SAML Client — Keycloak&quot; src=&quot;/static/1da53f07db738ab116c3f930d51fe3cf/6d370/roles_of_saml_client.png&quot; srcSet=&quot;/static/1da53f07db738ab116c3f930d51fe3cf/c5084/roles_of_saml_client.png 148w,/static/1da53f07db738ab116c3f930d51fe3cf/60cc9/roles_of_saml_client.png 295w,/static/1da53f07db738ab116c3f930d51fe3cf/6d370/roles_of_saml_client.png 590w,/static/1da53f07db738ab116c3f930d51fe3cf/540ae/roles_of_saml_client.png 885w,/static/1da53f07db738ab116c3f930d51fe3cf/2561a/roles_of_saml_client.png 1180w,/static/1da53f07db738ab116c3f930d51fe3cf/3643c/roles_of_saml_client.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Click on &lt;strong class=&quot;css-0&quot;&gt;Add Role&lt;/strong&gt; to create a new Role and fill the following …&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Role Name: &lt;code class=&quot;css-0&quot;&gt;subscriber&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;and &lt;strong class=&quot;css-0&quot;&gt;Save&lt;/strong&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/9dadaa6437fa02037626c08140032d8e/3643c/subscriber_role.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:33.108108108108105%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAIAAACHqfpvAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAhElEQVQY052QOw4DIQxEff8r5QIpc4JI6VLAsgJM1h8g1pJiO1BeZ2tmPDJ8uIYi+RAkjTGWUvoyELaNifpfAJ+klISZmO24qsoCJgMLqLU65zBnIvLeI2Jrrc4wBYwCFjPmYZsWNh2pwHV1sJLW3iaYEoXeuP/M56bfn+H2eGHcFx/2BQRHnY3JMXJaAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Subscriber Role — Keycloak&quot; title=&quot;Subscriber Role — Keycloak&quot; src=&quot;/static/9dadaa6437fa02037626c08140032d8e/6d370/subscriber_role.png&quot; srcSet=&quot;/static/9dadaa6437fa02037626c08140032d8e/c5084/subscriber_role.png 148w,/static/9dadaa6437fa02037626c08140032d8e/60cc9/subscriber_role.png 295w,/static/9dadaa6437fa02037626c08140032d8e/6d370/subscriber_role.png 590w,/static/9dadaa6437fa02037626c08140032d8e/540ae/subscriber_role.png 885w,/static/9dadaa6437fa02037626c08140032d8e/2561a/subscriber_role.png 1180w,/static/9dadaa6437fa02037626c08140032d8e/3643c/subscriber_role.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;h3 id=&quot;User-Registration&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#User-Registration&quot; aria-label=&quot;User Registration permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;User Registration&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;We have now successfully configured our APIM SAML Client &lt;code class=&quot;css-0&quot;&gt;wso2apim-saml&lt;/code&gt; in the Keycloak Server. Next, we will be creating a new user to do our test runs.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Select the &lt;strong class=&quot;css-0&quot;&gt;Users&lt;/strong&gt; under the &lt;strong class=&quot;css-0&quot;&gt;Manage&lt;/strong&gt; section in the Left Navigation Panel and you will find a similar screen as follows&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/b0f86710f96d3613163d6ae499ee96d8/3643c/users_keycloak.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:27.7027027027027%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAIAAABM9SnKAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAn0lEQVQY052OXQrCMBCEc5WIEcVSQRBqi0VRTyFKsYIn90GxNjFk8/MQ3TQX0A7LMgz7sUPSeUZZcqwu2ljv/QfnZ5Gs2AxGyeFUSwXGmMezvd1bNFpr0wkA4tYQEqUUes5507xIvtrSAJ8VWAmGCynE2zmHsLU2XqMJcJcIIaTEmyCSlzs2meHn2MT/VXuxLCmb9oSL9X44Tqv62gP+AqNoOmGGzNPEAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Users List — Keycloak&quot; title=&quot;Users List — Keycloak&quot; src=&quot;/static/b0f86710f96d3613163d6ae499ee96d8/6d370/users_keycloak.png&quot; srcSet=&quot;/static/b0f86710f96d3613163d6ae499ee96d8/c5084/users_keycloak.png 148w,/static/b0f86710f96d3613163d6ae499ee96d8/60cc9/users_keycloak.png 295w,/static/b0f86710f96d3613163d6ae499ee96d8/6d370/users_keycloak.png 590w,/static/b0f86710f96d3613163d6ae499ee96d8/540ae/users_keycloak.png 885w,/static/b0f86710f96d3613163d6ae499ee96d8/2561a/users_keycloak.png 1180w,/static/b0f86710f96d3613163d6ae499ee96d8/3643c/users_keycloak.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Smash the &lt;strong class=&quot;css-0&quot;&gt;Add User&lt;/strong&gt; button and feed the following&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Username: &lt;code class=&quot;css-0&quot;&gt;keycloakuser&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Email: &lt;code class=&quot;css-0&quot;&gt;key@cloak.com&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;First Name: &lt;code class=&quot;css-0&quot;&gt;Keycloak&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Last Name: &lt;code class=&quot;css-0&quot;&gt;User&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;User Enabled: &lt;code class=&quot;css-0&quot;&gt;true&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Email Verified: &lt;code class=&quot;css-0&quot;&gt;true&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;and &lt;strong class=&quot;css-0&quot;&gt;Save&lt;/strong&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/686a93c10ac76636b6a322283d037615/3643c/add_user_keycloak.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:55.4054054054054%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAvklEQVQoz5VSuw7DIAzM/39Xhy4dOleNOlQdSAhJAGMwpL1WVTKGnMTLcPbZpmEpRMTM7+NovHPTNKWUVtNShy8ZSykFOxGBC8xcBzxu1oDjOIYQ4AjWUgFE3cjOOYT23mutY4yyh5zzRrbWeiLnfNf3IOdS8h42MsoG2YkpcsDFgcg4IOec4uU5t2pGyXN9zhCsVCeRT4/5puyvYRV9xoBaaDbGINXBUqcNOiF7yv+y16YD53a43l8pUM0P+wB28IbtL6jmzwAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Add User — Keycloak&quot; title=&quot;Add User — Keycloak&quot; src=&quot;/static/686a93c10ac76636b6a322283d037615/6d370/add_user_keycloak.png&quot; srcSet=&quot;/static/686a93c10ac76636b6a322283d037615/c5084/add_user_keycloak.png 148w,/static/686a93c10ac76636b6a322283d037615/60cc9/add_user_keycloak.png 295w,/static/686a93c10ac76636b6a322283d037615/6d370/add_user_keycloak.png 590w,/static/686a93c10ac76636b6a322283d037615/540ae/add_user_keycloak.png 885w,/static/686a93c10ac76636b6a322283d037615/2561a/add_user_keycloak.png 1180w,/static/686a93c10ac76636b6a322283d037615/3643c/add_user_keycloak.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Move to the &lt;strong class=&quot;css-0&quot;&gt;Credentials&lt;/strong&gt; tab and enter a password for the created user. Disable the &lt;strong class=&quot;css-0&quot;&gt;Temporary Password&lt;/strong&gt; and click on the &lt;strong class=&quot;css-0&quot;&gt;Set Password&lt;/strong&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/0abaa261cc0cdd0dd019f150625f3888/3643c/user_credentials.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:45.94594594594595%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAIAAAC9o5sfAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAo0lEQVQoz5WRUQ7DIAxDuf9hKQIKSSB0hoifCWnrk0Atje2QukKcUuq9P+9xUF5XyPdNbYg0ZmoLwfrl6GKMIUyxtM4LqLATs0z5xOzsQUT6xkGJcFkQkX2rtZZSrBRMLyIzxblsnKriCNVt53yh2okYZYe2sSBGOCyx43WMoYuxWRYnMTJzzpaP+7+btskQC3u73rF/5J/bhtJ7j5HYMP7/5x/hbRM6DcU6ywAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;User Credentials — Keycloak&quot; title=&quot;User Credentials — Keycloak&quot; src=&quot;/static/0abaa261cc0cdd0dd019f150625f3888/6d370/user_credentials.png&quot; srcSet=&quot;/static/0abaa261cc0cdd0dd019f150625f3888/c5084/user_credentials.png 148w,/static/0abaa261cc0cdd0dd019f150625f3888/60cc9/user_credentials.png 295w,/static/0abaa261cc0cdd0dd019f150625f3888/6d370/user_credentials.png 590w,/static/0abaa261cc0cdd0dd019f150625f3888/540ae/user_credentials.png 885w,/static/0abaa261cc0cdd0dd019f150625f3888/2561a/user_credentials.png 1180w,/static/0abaa261cc0cdd0dd019f150625f3888/3643c/user_credentials.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Then, move to the &lt;strong class=&quot;css-0&quot;&gt;Role Mappings&lt;/strong&gt; tab to map our Subscriber role with the newly created User.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Select the &lt;code class=&quot;css-0&quot;&gt;wso2apim-saml&lt;/code&gt; client in the &lt;strong class=&quot;css-0&quot;&gt;Client Roles&lt;/strong&gt; dropdown and then select the &lt;code class=&quot;css-0&quot;&gt;subscriber&lt;/code&gt; roles under the &lt;strong class=&quot;css-0&quot;&gt;Available Roles&lt;/strong&gt; section and click on the &lt;strong class=&quot;css-0&quot;&gt;Add Selected&lt;/strong&gt; to assign it.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/8f8ec4a224bb688925c10293c60781da/3643c/role_mapping_select_client.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:29.72972972972973%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAIAAABM9SnKAAAACXBIWXMAAAsTAAALEwEAmpwYAAAApUlEQVQY05VPQQ7DIAzr/7+y9g/d3rHjxnqhqigQElI2F6ZJlXpZFCFbsRPTxcTruqrq+//qQvDOOe99Sok4R9Gcs4gkZgAoSinbtp2b2wxO3LfznBWsgBpjiAgKhLLWYiq1DuYfgkjrKVRb1/4CTBQDEnrf1h3MOM7MIdKyLJqRW7IwxImoURE+Tf41470/3DA+h9t0GV/o/jr1Fex4NC5IVR7MHx5cXAptr+/sAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Role Mapping — Keycloak&quot; title=&quot;Role Mapping — Keycloak&quot; src=&quot;/static/8f8ec4a224bb688925c10293c60781da/6d370/role_mapping_select_client.png&quot; srcSet=&quot;/static/8f8ec4a224bb688925c10293c60781da/c5084/role_mapping_select_client.png 148w,/static/8f8ec4a224bb688925c10293c60781da/60cc9/role_mapping_select_client.png 295w,/static/8f8ec4a224bb688925c10293c60781da/6d370/role_mapping_select_client.png 590w,/static/8f8ec4a224bb688925c10293c60781da/540ae/role_mapping_select_client.png 885w,/static/8f8ec4a224bb688925c10293c60781da/2561a/role_mapping_select_client.png 1180w,/static/8f8ec4a224bb688925c10293c60781da/3643c/role_mapping_select_client.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/b7c13e90b19acc1d103bdfdb860573b6/3643c/role_mapping.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:20.27027027027027%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAECAIAAAABPYjBAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAeklEQVQI11WOSQ7FIAxDuf9FERILIMx86H8tKlK9yOA4TlRKqZSSc9ZahxDGGL13IqT3Hr4/gKG21lJfL9Rai1Rrdc6xQDvnJMYYjTGttcNgzQERQYySkdoe2+JgL1xfoOZN7qcH7Ksz4EniMbqZEETiPrvteP73gvYPFv3p7JO1h20AAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Role Mapping — Keycloak&quot; title=&quot;Role Mapping — Keycloak&quot; src=&quot;/static/b7c13e90b19acc1d103bdfdb860573b6/6d370/role_mapping.png&quot; srcSet=&quot;/static/b7c13e90b19acc1d103bdfdb860573b6/c5084/role_mapping.png 148w,/static/b7c13e90b19acc1d103bdfdb860573b6/60cc9/role_mapping.png 295w,/static/b7c13e90b19acc1d103bdfdb860573b6/6d370/role_mapping.png 590w,/static/b7c13e90b19acc1d103bdfdb860573b6/540ae/role_mapping.png 885w,/static/b7c13e90b19acc1d103bdfdb860573b6/2561a/role_mapping.png 1180w,/static/b7c13e90b19acc1d103bdfdb860573b6/3643c/role_mapping.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Now, we have successfully created a temp user to perform our test runs. Next, we want to configure the scopes which are related to SAML in the Keycloak server to send all assigned Roles.&lt;/p&gt;&lt;h3 id=&quot;SAML-Scope-for-Roles&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#SAML-Scope-for-Roles&quot; aria-label=&quot;SAML Scope for Roles permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;SAML Scope for Roles&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Select the &lt;strong class=&quot;css-0&quot;&gt;Client Scopes&lt;/strong&gt; listed under &lt;strong class=&quot;css-0&quot;&gt;Configure&lt;/strong&gt; section and Edit the &lt;code class=&quot;css-0&quot;&gt;role_list&lt;/code&gt; scope.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/0f7737ba51f90d1435f95db459622e55/3643c/client_scopes_keycloak.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:25%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAIAAADKYVtkAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAyUlEQVQY041P2QrCMBDMn9QTKSKKeKCFKqj/KmLBev1QX3of2qZNCsZpg312CMtm9phZMp4uh+N5q6seT0acvC3LCoIgSZLXHyDzlb5cb9v94fX2FEKkaUop5ZwXNfgPzbchsywjK/2g6bveYGSY9/JTDYPN8zwMQ9u2kdAakgdc142iCNH3fTJdaNpmr3TU8+XxEYJisigYY3DueR4SqYktMuKoOI5RwnYyma3xlK5qmJVtNDDGy7LESehDIk1ii4wQhLLjOKh+Aeti+BX1JTxeAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Client Scopes List — Keycloak&quot; title=&quot;Client Scopes List — Keycloak&quot; src=&quot;/static/0f7737ba51f90d1435f95db459622e55/6d370/client_scopes_keycloak.png&quot; srcSet=&quot;/static/0f7737ba51f90d1435f95db459622e55/c5084/client_scopes_keycloak.png 148w,/static/0f7737ba51f90d1435f95db459622e55/60cc9/client_scopes_keycloak.png 295w,/static/0f7737ba51f90d1435f95db459622e55/6d370/client_scopes_keycloak.png 590w,/static/0f7737ba51f90d1435f95db459622e55/540ae/client_scopes_keycloak.png 885w,/static/0f7737ba51f90d1435f95db459622e55/2561a/client_scopes_keycloak.png 1180w,/static/0f7737ba51f90d1435f95db459622e55/3643c/client_scopes_keycloak.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Go to the &lt;strong class=&quot;css-0&quot;&gt;Mappers&lt;/strong&gt; section and click on &lt;strong class=&quot;css-0&quot;&gt;Edit&lt;/strong&gt; to edit the default configured Mapper to send the Roles which are assigned to the User and the application as SAML Response&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/e3208eeb872b02fa5d4ca630f6b683be/3643c/role_list_scope.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:14.864864864864865%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAADCAIAAAAcOLh5AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAVElEQVQI15WOOw6AQAgF9/5H3UK+Aiau+tRsY+cUZAJT0AyssY8DnD9pZiqerObu26SqXsnMiPjsMZlFVRuJVt703vEEBDcigkNQMHNOlgcRQYzmAty1rh1mu2bTAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Role List Scope — Keycloak&quot; title=&quot;Role List Scope — Keycloak&quot; src=&quot;/static/e3208eeb872b02fa5d4ca630f6b683be/6d370/role_list_scope.png&quot; srcSet=&quot;/static/e3208eeb872b02fa5d4ca630f6b683be/c5084/role_list_scope.png 148w,/static/e3208eeb872b02fa5d4ca630f6b683be/60cc9/role_list_scope.png 295w,/static/e3208eeb872b02fa5d4ca630f6b683be/6d370/role_list_scope.png 590w,/static/e3208eeb872b02fa5d4ca630f6b683be/540ae/role_list_scope.png 885w,/static/e3208eeb872b02fa5d4ca630f6b683be/2561a/role_list_scope.png 1180w,/static/e3208eeb872b02fa5d4ca630f6b683be/3643c/role_list_scope.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Make the &lt;strong class=&quot;css-0&quot;&gt;Single Role Attribute&lt;/strong&gt; to true and Save.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;This is because, as default Keycloak server will send back the SAML Response with multiple Role attributes.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;If we enable the &lt;strong class=&quot;css-0&quot;&gt;Single Role Attribute&lt;/strong&gt;, a single attribute named Role will be passed along with the associated roles as its child element.&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/a1bb391b3357eef9aeaa4774cf3f8657/3643c/role_list_mapper.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:51.35135135135135%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAIAAAA7N+mxAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAt0lEQVQoz5WRWQ7DIAxEc//T9RD5qRKI2ELM1j4Uqe1HldKRMBgx9oyZQgjee0Jr7fEnplJKSinn7JwXSSISY5QBQJxeZUgogQql1LZtWmultLUufAPP4L/J+76TE40xxHCJNxm3zrllWci55XwMAJnTKZhu67r2O3yndFq4RvfMxoRoiE94WQ4UU6T8Qq21T9tay5CYUE5ym82sHFaGvopFjdNGq/Vuo3ahtTpK/kTj26VrHiE/AfZ0SdV0Z8IIAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Role List Mapper — Keycloak&quot; title=&quot;Role List Mapper — Keycloak&quot; src=&quot;/static/a1bb391b3357eef9aeaa4774cf3f8657/6d370/role_list_mapper.png&quot; srcSet=&quot;/static/a1bb391b3357eef9aeaa4774cf3f8657/c5084/role_list_mapper.png 148w,/static/a1bb391b3357eef9aeaa4774cf3f8657/60cc9/role_list_mapper.png 295w,/static/a1bb391b3357eef9aeaa4774cf3f8657/6d370/role_list_mapper.png 590w,/static/a1bb391b3357eef9aeaa4774cf3f8657/540ae/role_list_mapper.png 885w,/static/a1bb391b3357eef9aeaa4774cf3f8657/2561a/role_list_mapper.png 1180w,/static/a1bb391b3357eef9aeaa4774cf3f8657/3643c/role_list_mapper.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;and as one last step in the Keycloak server, we need to get the public certificate of the Keycloak server.&lt;/p&gt;&lt;h3 id=&quot;-Keycloak-Cert&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-Keycloak-Cert&quot; aria-label=&quot; Keycloak Cert permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;🔒 Keycloak Cert&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Go to the &lt;strong class=&quot;css-0&quot;&gt;Realm Settings&lt;/strong&gt; under &lt;strong class=&quot;css-0&quot;&gt;Configure&lt;/strong&gt; and select the Keys tab. Click on the &lt;strong class=&quot;css-0&quot;&gt;Certificate&lt;/strong&gt; of the &lt;strong class=&quot;css-0&quot;&gt;RS256 Algorithm&lt;/strong&gt; and copy the cert value to a text editor.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/68a4a3b3ad969e14226a3e92d5dcc288/f97d7/keys_keycloak.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:17.567567567567565%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAECAIAAAABPYjBAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAqUlEQVQI12WMzQrCMBCE+ygqWvAP8SQo9NQ3UotVxOdNau2mTdJN0qjboCD4nWZmdyZarjfDeJ7lV2NMi9h53wV8L7xzjoQL9vVHtE3SyXR1utzoKJWSqiWoQ31rHSJaa2mXkmfA/xDtknQwnh2ys1RS1HVZlo8ACSlp7QNUFYDg94oyIeix1lr35VG82B9z2iZPhaIoOOeMMQCwXyjXiAwkGttvATRN8wYTSc8ucsm8PgAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Keys — Keycloak&quot; title=&quot;Keys — Keycloak&quot; src=&quot;/static/68a4a3b3ad969e14226a3e92d5dcc288/6d370/keys_keycloak.png&quot; srcSet=&quot;/static/68a4a3b3ad969e14226a3e92d5dcc288/c5084/keys_keycloak.png 148w,/static/68a4a3b3ad969e14226a3e92d5dcc288/60cc9/keys_keycloak.png 295w,/static/68a4a3b3ad969e14226a3e92d5dcc288/6d370/keys_keycloak.png 590w,/static/68a4a3b3ad969e14226a3e92d5dcc288/540ae/keys_keycloak.png 885w,/static/68a4a3b3ad969e14226a3e92d5dcc288/2561a/keys_keycloak.png 1180w,/static/68a4a3b3ad969e14226a3e92d5dcc288/f97d7/keys_keycloak.png 2000w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Add the &lt;code class=&quot;css-0&quot;&gt;-----BEGIN CERTIFICATE-----&lt;/code&gt; and &lt;code class=&quot;css-0&quot;&gt;-----END CERTIFICATE-----&lt;/code&gt; to the copied value respectively at the beginning and at the end and save it as &lt;code class=&quot;css-0&quot;&gt;keycloak.cert&lt;/code&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Following is the default Keycloak server’s Public Cert&lt;/p&gt;&lt;pre class=&quot;prism-code language-txt&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;-----BEGIN CERTIFICATE-----&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;MIICmzCCAYMCBgFxK7QtbzANBgkqhkiG9w0BAQsFADARMQ8wDQYDVQQDDAZtYXN0ZXIwHhcNMjAwMzMwMTM0NzQwWhcNMzAwMzMwMTM0OTIwWjARMQ8wDQYDVQQDDAZtYXN0ZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCNH2xuTvfh4+GMhXnawavMi+Ro02XmtH5GDYR9MU+ERV1tm5ZqEDEERD7XPAMh5xjZn7iN0Wqp8x8j68Cy+k3Z8o3HanO/YShd+QBzU4JQ4VuhS8Kvn/KRiIUPA7NkD/o/TmopWWrxho/hj3HfJm82mKAMGKUsfMLOH8Iy+8Q106QrgeN0FWaseiqfBMAlaRrGDI4VsPAlHvT+JbL8NNgQB1gEIn6hhwFVbzHcofOXrRj1kpO9Vmd5VmdDtMorGrxrLyBhE4/opl22jvHgS8Ae3/R0kCiw81NZpxYieiz+kpUxDU95BG0twkwdMMJYt7YAm48qyD5knoOKmkLtLpqxAgMBAAEwDQYJKoZIhvcNAQELBQADggEBACLoLH+DiVVcngWGcGMdaLHjBt/DwmMHbfBlcwZZJ8q3W8vFB6CZQqVUtaEDPolj6FpdSzHUxZGEDuRINr1I/n9QIoofhgZNXuUpn0FMjH5RZa1kkvkxbTOOjSzuLh76gqpJchmbthUBPwrOtZ5oE8y2LenF4TzrZsDuEiSgwFtQNpbvoJbZ7iofVuV+C7evzwIZUmAI14jQ1EcPGJtb7aSzP2GkVH3zmXO48wLWUKcKXYIt7kJYiZPjwN0m0v/cwAI7Td1VtlA0hc4FIGhc8ouVoYd9DMDDklKJOgGeM9xK0nH6URtutQsmf+3cn19XA1VIS12C0eLkJpqK5Bw/lWY=&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;-----END CERTIFICATE-----&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;👏 👏 👏 one domain is done.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Next, we will be moving to the WSO2 API Manager to configure an Identity Provider and a Service Provider to perform Federated SAML2 SSO.&lt;/p&gt;&lt;h2 id=&quot;WSO2-API-Manager&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#WSO2-API-Manager&quot; aria-label=&quot;WSO2 API Manager permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;WSO2 API Manager&lt;/h2&gt;&lt;h3 id=&quot;-Identity-Provider-for-Keycloak&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-Identity-Provider-for-Keycloak&quot; aria-label=&quot; Identity Provider for Keycloak permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;✋ Identity Provider for Keycloak&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Fire-up the &lt;strong class=&quot;css-0&quot;&gt;WSO2 API Manager&lt;/strong&gt; server and navigate to the Carbon Management console and login with your admin credentials.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Click on &lt;strong class=&quot;css-0&quot;&gt;Add&lt;/strong&gt; under &lt;strong class=&quot;css-0&quot;&gt;Identity Providers&lt;/strong&gt; section and feed the following Basic Information&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Identity Provider Name: &lt;code class=&quot;css-0&quot;&gt;KeycloakSAMLIDP&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Display Name: &lt;code class=&quot;css-0&quot;&gt;Keycloak SAML IDP&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/b1ba6cb26984f0f25b3f39a5d53aa3ee/f97d7/idp_basic_configuration.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:34.45945945945946%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAIAAACHqfpvAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAmUlEQVQY042Q2w7CIBBE+/9/2ZgUUJB2txSWq2Oivpn2vEGYmRMmrbUxJoTATA9rvV8BEYUzjuOYSimttTFGFlFq2Zg2ohjjuMAkIr+wVtpa59ftahjvIJBzrrV4754efLR77yfhlNK+7xivrSLDjFNAI4zOlzHLzCIpSZ7nm1oW3KDxUrjW2t+MnJMx+Pm7dQ7O8QuK/vm/AOlAmSODCBtFAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Identity Provider — API Manager&quot; title=&quot;Identity Provider — API Manager&quot; src=&quot;/static/b1ba6cb26984f0f25b3f39a5d53aa3ee/6d370/idp_basic_configuration.png&quot; srcSet=&quot;/static/b1ba6cb26984f0f25b3f39a5d53aa3ee/c5084/idp_basic_configuration.png 148w,/static/b1ba6cb26984f0f25b3f39a5d53aa3ee/60cc9/idp_basic_configuration.png 295w,/static/b1ba6cb26984f0f25b3f39a5d53aa3ee/6d370/idp_basic_configuration.png 590w,/static/b1ba6cb26984f0f25b3f39a5d53aa3ee/540ae/idp_basic_configuration.png 885w,/static/b1ba6cb26984f0f25b3f39a5d53aa3ee/2561a/idp_basic_configuration.png 1180w,/static/b1ba6cb26984f0f25b3f39a5d53aa3ee/f97d7/idp_basic_configuration.png 2000w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Select the &lt;strong class=&quot;css-0&quot;&gt;IDP Certificate&lt;/strong&gt; as &lt;strong class=&quot;css-0&quot;&gt;Upload IDP Certificate&lt;/strong&gt; and upload the &lt;code class=&quot;css-0&quot;&gt;keycloak.cert&lt;/code&gt; that we have created in the previous steps.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Next, expand the &lt;code class=&quot;css-0&quot;&gt;Claim Configurations&lt;/code&gt; and map our Role claim with the Internal Role claim.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Select the &lt;code class=&quot;css-0&quot;&gt;Define Custom Claim Dialect&lt;/code&gt; and click on &lt;code class=&quot;css-0&quot;&gt;Add Claim Mapping&lt;/code&gt; and enter the following&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;Role&lt;/code&gt; : &lt;code class=&quot;css-0&quot;&gt;http://wso2.org/claims/role&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;Select the &lt;strong class=&quot;css-0&quot;&gt;Role&lt;/strong&gt; in the &lt;strong class=&quot;css-0&quot;&gt;Role Claim URI&lt;/strong&gt; dropdown as well&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/6b2e7c4cdfa41bb1e8cb5d6c610acd9a/f97d7/idp_claim_configuration.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:24.324324324324326%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAIAAADKYVtkAAAACXBIWXMAAAsTAAALEwEAmpwYAAAArUlEQVQY01WM6w7CIAxG9/7vZ2KW+MdNBWYpG+uUW7ESrycnpE2/j67vd4fDHkA5Z6zViKap0eq2frWv4RmQE5HvjFFiiPcJ7flytgg5h1xiraVWbm9+W5hT+Vhyx1xFQRl9HE5KaefmdSXvVwBLRNt2e0rbPM8p5fqGmTvvfSnyfdXqchwGRKQGAIzj6JxLKcUYQwgbrTn/lyXXyowI03SV9LIsviGF+g//IK0HQeAfB/QYPbIAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Claim Configuration — API Manager&quot; title=&quot;Claim Configuration — API Manager&quot; src=&quot;/static/6b2e7c4cdfa41bb1e8cb5d6c610acd9a/6d370/idp_claim_configuration.png&quot; srcSet=&quot;/static/6b2e7c4cdfa41bb1e8cb5d6c610acd9a/c5084/idp_claim_configuration.png 148w,/static/6b2e7c4cdfa41bb1e8cb5d6c610acd9a/60cc9/idp_claim_configuration.png 295w,/static/6b2e7c4cdfa41bb1e8cb5d6c610acd9a/6d370/idp_claim_configuration.png 590w,/static/6b2e7c4cdfa41bb1e8cb5d6c610acd9a/540ae/idp_claim_configuration.png 885w,/static/6b2e7c4cdfa41bb1e8cb5d6c610acd9a/2561a/idp_claim_configuration.png 1180w,/static/6b2e7c4cdfa41bb1e8cb5d6c610acd9a/f97d7/idp_claim_configuration.png 2000w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Then, expand the Role Configuration accordion and enter the following to map the &lt;code class=&quot;css-0&quot;&gt;subscriber&lt;/code&gt; role of the Keycloak with the &lt;code class=&quot;css-0&quot;&gt;Internal/subscriber&lt;/code&gt; role of the API Manager&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;subscriber&lt;/code&gt; : &lt;code class=&quot;css-0&quot;&gt;Internal/subscriber&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/5711e44e83f0142fd84989310a521b87/f97d7/idp_role_mapping.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:15.54054054054054%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAADCAIAAAAcOLh5AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAdklEQVQI102NyQ7DIAxE+f+/TNVcSAmbwWAbUpNKVZ5GXg4zY6y12/aKMUGBj/dnSDknACil1Ioq3T/drx5/qhljiMicU4Te+26PQ929dxb2IWgIMxORzpxiJ7oeGC2pKxQbYtDiZYB845xDRM0di9lbY5an+Qt5ma0tDrAPzAAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Role Mapping — API Manager&quot; title=&quot;Role Mapping — API Manager&quot; src=&quot;/static/5711e44e83f0142fd84989310a521b87/6d370/idp_role_mapping.png&quot; srcSet=&quot;/static/5711e44e83f0142fd84989310a521b87/c5084/idp_role_mapping.png 148w,/static/5711e44e83f0142fd84989310a521b87/60cc9/idp_role_mapping.png 295w,/static/5711e44e83f0142fd84989310a521b87/6d370/idp_role_mapping.png 590w,/static/5711e44e83f0142fd84989310a521b87/540ae/idp_role_mapping.png 885w,/static/5711e44e83f0142fd84989310a521b87/2561a/idp_role_mapping.png 1180w,/static/5711e44e83f0142fd84989310a521b87/f97d7/idp_role_mapping.png 2000w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Next, click and expand the Federated Authenticators section and SAML SSO to configure the Federated authentication with our Keycloak Server&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Put the following in the respective fields&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Enable SAML2 Web SSO: &lt;code class=&quot;css-0&quot;&gt;true&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Service Provider Entity ID: &lt;code class=&quot;css-0&quot;&gt;wso2apim-saml&lt;/code&gt; &lt;em class=&quot;css-0&quot;&gt;(our client name in the Keycloak Server)&lt;/em&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;NameID Format: &lt;code class=&quot;css-0&quot;&gt;urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Identity Provider Entity ID: &lt;code class=&quot;css-0&quot;&gt;http://localhost:8080/auth/realms/master&lt;/code&gt; &lt;em class=&quot;css-0&quot;&gt;(Entity ID can be found in the &lt;strong class=&quot;css-0&quot;&gt;SAML Metadata&lt;/strong&gt; of the Keycloak)&lt;/em&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;SSO URL: &lt;code class=&quot;css-0&quot;&gt;http://localhost:8080/auth/realms/master/protocol/saml&lt;/code&gt; &lt;em class=&quot;css-0&quot;&gt;(SSO URL can be found in the &lt;strong class=&quot;css-0&quot;&gt;SAML Metadata&lt;/strong&gt; of the Keycloak)&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;Finally, expand the &lt;strong class=&quot;css-0&quot;&gt;Just-In-Time Provisioning&lt;/strong&gt; and select the &lt;code class=&quot;css-0&quot;&gt;Always Provision&lt;/code&gt; to &lt;code class=&quot;css-0&quot;&gt;User Store Domain&lt;/code&gt; to &lt;code class=&quot;css-0&quot;&gt;PRIMARY&lt;/code&gt; and &lt;code class=&quot;css-0&quot;&gt;Provision Silently&lt;/code&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/776911ae3165724f61739d2e7d2a7252/f97d7/jit_provisioning.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:14.18918918918919%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAADCAIAAAAcOLh5AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAT0lEQVQI142JsQ6AMAhE+f+f7EAruNSCWroUZXQyfblcXu4gpURER2u11mhRFdHzCu7/mBkgYi4Fcw5RVRsjVnd/FoCNdmbu3eac38MXeAFKc626/3dO7QAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;JIT Provisioning — API Manager&quot; title=&quot;JIT Provisioning — API Manager&quot; src=&quot;/static/776911ae3165724f61739d2e7d2a7252/6d370/jit_provisioning.png&quot; srcSet=&quot;/static/776911ae3165724f61739d2e7d2a7252/c5084/jit_provisioning.png 148w,/static/776911ae3165724f61739d2e7d2a7252/60cc9/jit_provisioning.png 295w,/static/776911ae3165724f61739d2e7d2a7252/6d370/jit_provisioning.png 590w,/static/776911ae3165724f61739d2e7d2a7252/540ae/jit_provisioning.png 885w,/static/776911ae3165724f61739d2e7d2a7252/2561a/jit_provisioning.png 1180w,/static/776911ae3165724f61739d2e7d2a7252/f97d7/jit_provisioning.png 2000w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;and &lt;strong class=&quot;css-0&quot;&gt;Save&lt;/strong&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Attached is a full-snap of the configurations 😍 👌&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/dba27a80eed886f1a0bfe8e285f6e4c6/3643c/idp_complete_configurations.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:241.89189189189187%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAwCAIAAACe1s16AAAACXBIWXMAAAsTAAALEwEAmpwYAAAExElEQVRIx42WCXOjOBCF+f9/bmorx2RmJ5dtzC0EQgcY8H6SEm/iOMmoujDGtPr1e90tJzfXdw/3d0+PD9vH9P7uXz6zXGZ56614Y3m729e7tOK6z9ttJh42VXJ997MWWg+HTvbZLmsqMWjTK/3GBkwNmucvNujw1Sb3m/tGKmMnbVyveq31PM9SiizLWj5E23Wds+4wH87WNM3Jn+d7qayxB2PdNI7ruh6PR3bJQN/1Sg3Wunlejh/WvKzJ4+6xFJ3Wo7Hj6MZpmpZlsUZXVdW2sut6KSUPLzs/P/4uajnoybpxIPdhIDjbEBPr+x5/58bLzkW+E3KwhpwtyxhDZPbYbrdt2xLTOWDPl52zbQo1TaMH5amKsIlXVmXTNOAWQigFgh5QbEcAvnoWxynZ52lZtUo52I5ssRCjqpq6EcNg8DLGjX5BaEh+XQkwz8Buy6KR2kyDsXmePj8/NKLsuqZtK4GJkitPghWyq/kpWI3SSV7t67YzdiZyXee79KnvhDISRLjNs51ntyyAGpdlDF9fnkzTmDRVJnsDKUi1LOvh4LmRvXza7PIcCOxrqRxkg3NfHLg6nhgPu63ztJCDmawdSTWqgkpFXiAVbvDPFnXdUC0h1TlIMB5wLvfZw3PWSENkY5Qx/cinkT69XpBe3wsMjo/Hw7pO0Y7HiQJNyrbEVekRnYtyn6ZPZZ11faMG0avm1bgXPIwW7gNh+7KgkQYFZhOKsQN2I8XjJq1qfAbkARXwLbkGG8K9b4xdmjfN0Euk19CxzGS1sBkVomPRORfaS8SEQ+X7HZflmOR1Uwqj9YQzVVVWhRCNL2qqSgEFsmiuDpCEfzEHKT56UktZdTQFUrmiTJ83f8oq1Rp/ny3XcEOGQpv2ZIMR2g6Jr8Iex0PcMBYgwGhJJgEGgPFiSyIVPSB9CrP1UlEtjh+AzDBoGlFVNb0RK+eD85KEjluJjDPqx95w1viWkpIr/XRqmHNnmuV/55E6szQNBBZFSVh4VlpDOEKcbfHOOY6h+AYdm+73eVHss4zGtJfmwbkzsEPlz8wwTxby0v5SwpkOC5E/dVZK+VkByNHCIwuZGSCncfuFs2O0x0F5mBiAqg9DkID00PJh+l6AHQtwdNbH7fpYZaw4GL9wdrwEbB/K6j7gDqO3U+ol57e0nZyPXqow8eMbNEaUCmuE8Pp9rvPR2gNNBiXQY3wj6S4QRtgYcwiLFz4tEv16YjC2Os+zdztRDaK3dXLuTKnyFWKctbSkAr2Pp4H9TZFEZ0KF+WbofshDLbI41fxXzjZMWd6iSKRsXw9newb4sjOSQBJCHyZ/H+W92FKXYfN2rO2qKuu6DuUVDyq/LhJ2jM6rX76MTDjcPey+t58dse8qzDjPrB5CfCagLywvu59N41/BDlKtwG6aOvDtF8l/L5UNczrUmWIAo1aM/FdS8VKoh4WZEsa170oaiz2/cH4hLBz6gbRwFJ4KM3qu79e7yJxA9FCeF69nsvHsnWw4Nwh+A9uNRZ5ttzv++6Vp6msryH42A94NfefH6qoNVHMams1mg8KxmZYvF22WcEaTEXRy3IB5n+X0f/hPYD5CfWu8n9ze3v769fvn3a+b258/fvxzdXV9dXXjr9c339p/6NLM+nkBHJMAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Keycloak SAML IDP Configuration — API Manager&quot; title=&quot;Keycloak SAML IDP Configuration — API Manager&quot; src=&quot;/static/dba27a80eed886f1a0bfe8e285f6e4c6/6d370/idp_complete_configurations.png&quot; srcSet=&quot;/static/dba27a80eed886f1a0bfe8e285f6e4c6/c5084/idp_complete_configurations.png 148w,/static/dba27a80eed886f1a0bfe8e285f6e4c6/60cc9/idp_complete_configurations.png 295w,/static/dba27a80eed886f1a0bfe8e285f6e4c6/6d370/idp_complete_configurations.png 590w,/static/dba27a80eed886f1a0bfe8e285f6e4c6/540ae/idp_complete_configurations.png 885w,/static/dba27a80eed886f1a0bfe8e285f6e4c6/2561a/idp_complete_configurations.png 1180w,/static/dba27a80eed886f1a0bfe8e285f6e4c6/3643c/idp_complete_configurations.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;h3 id=&quot;-Service-Provider&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-Service-Provider&quot; aria-label=&quot; Service Provider permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;✋ Service Provider&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;We are done with the Identity Provider configurations. Now, we have to create and register a Service Provider to SSO with the API Store node.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Log-in to the &lt;strong class=&quot;css-0&quot;&gt;Carbon Management&lt;/strong&gt; console and click on the Add under the Service Providers section and enter the following in the following screen&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Service Provider Name: &lt;code class=&quot;css-0&quot;&gt;API_STORE&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/412c562565a49f5556e5147175907f61/3643c/new_service_provider.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:29.054054054054056%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAIAAABM9SnKAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAg0lEQVQY042O6wrCMAxG8/4v6RhbN+rGmjat6Y0aL+gPlXo4BAJfPgLzuMzjqtedfHIU/9RYXs4OpkmZw1wE5pfMsWtKCU7DsO2b3Ibgn96Gf68/FADRxBi9J601oj3kC+ZSSu4hGai1ttZyThaRHAlSKXXljoQega+AUiqEIInP4i5Xxf9bw8UuMN0AAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Service Provider — API Manager&quot; title=&quot;Service Provider — API Manager&quot; src=&quot;/static/412c562565a49f5556e5147175907f61/6d370/new_service_provider.png&quot; srcSet=&quot;/static/412c562565a49f5556e5147175907f61/c5084/new_service_provider.png 148w,/static/412c562565a49f5556e5147175907f61/60cc9/new_service_provider.png 295w,/static/412c562565a49f5556e5147175907f61/6d370/new_service_provider.png 590w,/static/412c562565a49f5556e5147175907f61/540ae/new_service_provider.png 885w,/static/412c562565a49f5556e5147175907f61/2561a/new_service_provider.png 1180w,/static/412c562565a49f5556e5147175907f61/3643c/new_service_provider.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;and &lt;strong class=&quot;css-0&quot;&gt;Register&lt;/strong&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;On the following screen, expand the &lt;strong class=&quot;css-0&quot;&gt;Inbound Authentication Configuration&lt;/strong&gt; and select the &lt;strong class=&quot;css-0&quot;&gt;OAuth/OpenID Connect Configuration&lt;/strong&gt; to configure an OAuth app.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/0e988528eafbff4f5524de42ff174841/f97d7/openid_connect_configuration.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:11.486486486486488%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAACCAIAAADXZGvcAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAJ0lEQVQI12N4++7F4ye3Xry89+r1g2/fXn//Tjx6w/D3738gIg8AADRedBRjr/vEAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;OpenID Connect Configuration — API Manager&quot; title=&quot;OpenID Connect Configuration — API Manager&quot; src=&quot;/static/0e988528eafbff4f5524de42ff174841/6d370/openid_connect_configuration.png&quot; srcSet=&quot;/static/0e988528eafbff4f5524de42ff174841/c5084/openid_connect_configuration.png 148w,/static/0e988528eafbff4f5524de42ff174841/60cc9/openid_connect_configuration.png 295w,/static/0e988528eafbff4f5524de42ff174841/6d370/openid_connect_configuration.png 590w,/static/0e988528eafbff4f5524de42ff174841/540ae/openid_connect_configuration.png 885w,/static/0e988528eafbff4f5524de42ff174841/2561a/openid_connect_configuration.png 1180w,/static/0e988528eafbff4f5524de42ff174841/f97d7/openid_connect_configuration.png 2000w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;As default the WSO2 API Manager doesn’t support the &lt;strong class=&quot;css-0&quot;&gt;SAML2 Web SSO Configurations&lt;/strong&gt; in Service Provider. Hence, we are configuring an OAuth service provider to perform SSO with the API Store&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;On the prompted screen add the following&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Callback URL: &lt;code class=&quot;css-0&quot;&gt;https://localhost:9443/store/jagg/jaggery_oidc_acs.jag&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;and &lt;strong class=&quot;css-0&quot;&gt;Save&lt;/strong&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Next, expand the &lt;strong class=&quot;css-0&quot;&gt;Local &amp;amp; Outbound Authentication Configuration&lt;/strong&gt; and select our &lt;code class=&quot;css-0&quot;&gt;KeycloakSAMLIDP&lt;/code&gt; as the &lt;strong class=&quot;css-0&quot;&gt;Federated Authentication&lt;/strong&gt; and Register (Save).&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/4a5c2e71b31eb7da44b92386d83ef961/f97d7/outbound_authentication_configuration.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:24.324324324324326%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAIAAADKYVtkAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAaUlEQVQY05XO6wqAIAyGYe//MguigyudTddEzewCrOfXx+CFqWEY52WZmrNB54j82eN9ULk8PIsxGALXrbVGdKUn56IAgIgOiwYpsNRrSinG+CHOam7qzzvAJVI+e+JtXa21zCx/yje+Abs3JHmKBGY8AAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Outbound Authentication Configuration — API Manager&quot; title=&quot;Outbound Authentication Configuration — API Manager&quot; src=&quot;/static/4a5c2e71b31eb7da44b92386d83ef961/6d370/outbound_authentication_configuration.png&quot; srcSet=&quot;/static/4a5c2e71b31eb7da44b92386d83ef961/c5084/outbound_authentication_configuration.png 148w,/static/4a5c2e71b31eb7da44b92386d83ef961/60cc9/outbound_authentication_configuration.png 295w,/static/4a5c2e71b31eb7da44b92386d83ef961/6d370/outbound_authentication_configuration.png 590w,/static/4a5c2e71b31eb7da44b92386d83ef961/540ae/outbound_authentication_configuration.png 885w,/static/4a5c2e71b31eb7da44b92386d83ef961/2561a/outbound_authentication_configuration.png 1180w,/static/4a5c2e71b31eb7da44b92386d83ef961/f97d7/outbound_authentication_configuration.png 2000w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;As always, I have attached the full-snap of the Service Provider configuration below 🤓&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/bf0bcd5ed1526e32b7af0b4ec04fe216/3643c/sp_complete_configurations.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:111.48648648648648%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAWCAIAAABPIytRAAAACXBIWXMAAAsTAAALEwEAmpwYAAACh0lEQVQ4y5WT6W6jMBSF/f7vNf+aaVN1JlsJJBCMjfedJWRuSKuqVVtNrz4R23AuxOcY/Xla77N1ke/Los42z/CLG4UbiclHqppVpxaudSNLLPbHFj2tV0x47watDD41rOXOB2OdNldg8IqH9Rectw6mEWXHjCsb4uBDcs7GGMfx7KzhnBtjtNYhRCDGNLyvvh/R8yFTNoI4xNR1HaxeLpdxHKBRCAFW+r6/fFbjeUJ5lVOhve9CSMZYeBpuxJQ4F9Y56AVq4Nb0o/iQbwlTzvfw4mEczucz3EgxSCngs8Ncca70rmDaI9JUXLkYBqXtZrNbPj7tnvcYE0oZIS0hjNCZ6/iNpqFSGoTLE8ZScG+0KQ6r1Xqx3ixO9VaoksujkEc+I1Up5ukNLgpjBaqbE22ltZ33kfGW0FpIZq0Cv4RopeI+WBcsuY4Z2KesMlZaJ1OXEBGUcHi0C6njoq7rjLHKB5Y6GSIPgcMgJsENdZ65wK2HdtyFNkSHmrZmUoc4+hiL43K1+ZUXi32xaOhfoXZcbm9ItRNy+8qOibU2FPEWSwNvPTsXqqosy0NDakKxlBASbeyMUfojEqKGJGtO5GZVP/s0Qfq41P0wwtQ5dzPvk5CME6I13h8wV1c7BWeQR2jLpermYEE2pmn6Wiwp5tq6LsQOlHIurRQk9ivZm7imhAkIcgf/GWRwHiCVkKnvlS/i6tRw7oyKxrgaF3mxKasMNwVsprHtlxjqvUUN41T44HsQ53mRZXvgVGMh4CvEVzDGtbaIKdVqOBSj98nDnkc4RhM4l9L4PTGNiLKWQUbiYF30Aa49AM79Dwj2yoRhGKcQwerzj0D397+Xy0fg/uHh7m7xI/4BxqfYEkDt4U0AAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;API Store Service Provider Configuration — API Manager&quot; title=&quot;API Store Service Provider Configuration — API Manager&quot; src=&quot;/static/bf0bcd5ed1526e32b7af0b4ec04fe216/6d370/sp_complete_configurations.png&quot; srcSet=&quot;/static/bf0bcd5ed1526e32b7af0b4ec04fe216/c5084/sp_complete_configurations.png 148w,/static/bf0bcd5ed1526e32b7af0b4ec04fe216/60cc9/sp_complete_configurations.png 295w,/static/bf0bcd5ed1526e32b7af0b4ec04fe216/6d370/sp_complete_configurations.png 590w,/static/bf0bcd5ed1526e32b7af0b4ec04fe216/540ae/sp_complete_configurations.png 885w,/static/bf0bcd5ed1526e32b7af0b4ec04fe216/2561a/sp_complete_configurations.png 1180w,/static/bf0bcd5ed1526e32b7af0b4ec04fe216/3643c/sp_complete_configurations.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;👉 Before moving to the next part, make a note or copy the &lt;code class=&quot;css-0&quot;&gt;client_id&lt;/code&gt; and the &lt;code class=&quot;css-0&quot;&gt;client_secret&lt;/code&gt; which are generated in our Service Provider as we need ’em when configuring the site.json.&lt;/p&gt;&lt;h3 id=&quot;-Store-Sitejson&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-Store-Sitejson&quot; aria-label=&quot; Store Sitejson permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;✋ Store: Site.json&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;We are in the latter part of our demo flow.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;As the last part, now we have to configure the &lt;code class=&quot;css-0&quot;&gt;site.json&lt;/code&gt; related to the Store node to communicate with our Service Provider.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;The Store will start to communicate with our Service Provider and it will start to communicate with our Identity Provider and finally, our Identity Provider Federates with the Keycloak Server&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;strong class=&quot;css-0&quot;&gt;Phew ….&lt;/strong&gt; 🤓😅😅&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Open-up the WSO2 API Manager’s directory and move to &lt;code class=&quot;css-0&quot;&gt;&amp;lt;apim&amp;gt;/repository/deployment/server/jaggeryapps/store/site/conf&lt;/code&gt; and open the &lt;code class=&quot;css-0&quot;&gt;site.json&lt;/code&gt; to configure the OIDC&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Given below is a complete segment of the OpenID Connect configuration model in the &lt;code class=&quot;css-0&quot;&gt;site.json&lt;/code&gt;. You can refer to the following to configure your &lt;code class=&quot;css-0&quot;&gt;site.json&lt;/code&gt; in your environment.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;Replace the Client ID and Client Secret with the credentials acquired from the API_STORE Service Provider&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Also, if you notice, I have used &lt;code class=&quot;css-0&quot;&gt;usernameClaim&lt;/code&gt; property in the &lt;strong class=&quot;css-0&quot;&gt;OIDC Configuration&lt;/strong&gt; to look for the &lt;code class=&quot;css-0&quot;&gt;sub&lt;/code&gt; claim to acquire the username for our Store node. As default it will be referred to the &lt;code class=&quot;css-0&quot;&gt;preferred_username&lt;/code&gt; field. In &lt;strong class=&quot;css-0&quot;&gt;SAML2 SSO&lt;/strong&gt; Federation the &lt;code class=&quot;css-0&quot;&gt;preferred_username&lt;/code&gt; field is not guaranteed when provisioning the Users. Hence, it is required to configure the &lt;code class=&quot;css-0&quot;&gt;usernameClaim&lt;/code&gt; property in the OIDC configuration&lt;/p&gt;&lt;/blockquote&gt;&lt;pre class=&quot;prism-code language-json&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;oidcConfiguration&amp;quot;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;enabled&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;issuer&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;API_STORE&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;identityProviderURI&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;https://localhost:9443/oauth2/token&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;authorizationEndpointURI&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;https://localhost:9443/oauth2/authorize&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;tokenEndpointURI&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;https://localhost:9443/oauth2/token&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;userInfoURI&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;https://localhost:9443/oauth2/userinfo&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;jwksURI&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;https://localhost:9443/oauth2/jwks&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;logoutEndpointURI&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;https://localhost:9443/oidc/logout&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;authHttpMethod&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;POST&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;usernameClaim&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;sub&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;clientConfiguration&amp;quot;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;clientId&amp;quot;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;Client ID&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;clientSecret&amp;quot;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;Client Secret&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;responseType&amp;quot;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;code&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;authorizationType&amp;quot;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;authorization_code&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;scope&amp;quot;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;phone email address openid profile&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;redirectURI&amp;quot;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;https://localhost:9443/store/jagg/jaggery_oidc_acs.jag&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;postLogoutRedirectURI&amp;quot;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;https://localhost:9443/store/&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;clientAlgorithm&amp;quot;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;RS256&amp;quot;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;h2 id=&quot;-Voila-&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-Voila-&quot; aria-label=&quot; Voila  permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;🎉 Voila!!! 🎉&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;We have successfully configured SAML2 Federated Authentication between Keycloak and Single Sign-On with OpenID Connect with API Store. Next, we will be doing a small test drive…&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;👏 👏 👏&lt;/p&gt;&lt;h2 id=&quot;Test-Drive&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Test-Drive&quot; aria-label=&quot;Test Drive permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Test Drive&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;Direct to the Store portal using &lt;code class=&quot;css-0&quot;&gt;https://localhost:9443/store/&lt;/code&gt; and click on Sign-In.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;You will be redirected to the Keycloak’s login page to enter the credentials. Enter the credentials of our Keycloak User and then allow the attributes on the consent screen to continue with the federation and provision of the Keycloak users to the WSO2 API Manager.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;Login to the &lt;strong class=&quot;css-0&quot;&gt;Carbon Management&lt;/strong&gt; console of WSO2 API Manager and list the Users. If the Federation is successful and JIT Provisioned performed without any errors, you will be able to see our &lt;strong class=&quot;css-0&quot;&gt;Keycloak User&lt;/strong&gt; in the prompted list.&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;strong class=&quot;css-0&quot;&gt;Happy Stacking !!!!&lt;/strong&gt; 🤘 ✌️&lt;/p&gt;</content:encoded></item><item><title><![CDATA[WSO2 API Manager & Keycloak SSO]]></title><link>https://stackcheats.github.io/wso2-api-manager-keycloak-sso/content/</link><guid isPermaLink="false">https://stackcheats.github.io/wso2-api-manager-keycloak-sso/content/</guid><pubDate>Sun, 05 Apr 2020 00:00:00 GMT</pubDate><content:encoded>&lt;style data-emotion-css=&quot;sa2dbt&quot;&gt;body{color:text;background-color:var(--theme-ui-colors-background,#fff);}&lt;/style&gt;&lt;style data-emotion-css=&quot;0&quot;&gt;&lt;/style&gt;&lt;p class=&quot;css-0&quot;&gt;In this medium, I will be 🚶 walking through on how to configure OpenID Connect SSO flow between WSO2 API Manager and Keycloak including JIT (User) Provisioning.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;I will be using WSO2 API Manager 2.6 along with Identity Server as Key Manager 5.7 to instruct and configure the SSO flow with Keycloak&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;I have broken the guide into 3 tiers and we will be going through them as follows …&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Keycloak Configurations&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;WSO2 IS-KM Configurations&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;WSO2 API Manager Configurations&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;Keycloak-&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Keycloak-&quot; aria-label=&quot;Keycloak  permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Keycloak 🔑&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;Let’s start our journey by downloading and configuring the Keycloak server in our local environments.&lt;/p&gt;&lt;h3 id=&quot;-Downloading--Starting-Up-the-Keycloak&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-Downloading--Starting-Up-the-Keycloak&quot; aria-label=&quot; Downloading  Starting Up the Keycloak permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;🚧 Downloading &amp;amp; Starting-Up the Keycloak&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;You can click on Here to download the Standalone Keycloak server distribution to your environment. If you already have a Keycloak server up and running you can ignore these steps and move on to the creation of realms.&lt;/p&gt;&lt;div title=&quot;Keycloak&quot; class=&quot;css-0&quot;&gt;&lt;/div&gt;&lt;p class=&quot;css-0&quot;&gt;Extract the archive and execute the following command from the bin directory to start the Keycloak server&lt;/p&gt;&lt;pre class=&quot;prism-code language-bash&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;# move to bin directory and execute the following&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;# unix&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;sh standalone.sh&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;# windows&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;standalone.bat&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;After a successful server start, fire-up your favorite browser and go to &lt;code class=&quot;css-0&quot;&gt;http://localhost:8080/auth&lt;/code&gt; and register an Admin User for our Keycloak Server.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;👉 You can follow up on the following Doc to get started with the Keycloak server …&lt;/p&gt;&lt;div title=&quot;Getting Started Guide&quot; class=&quot;css-0&quot;&gt;&lt;/div&gt;&lt;h3 id=&quot;OpenIDConnect-Endpoint-URLs&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#OpenIDConnect-Endpoint-URLs&quot; aria-label=&quot;OpenIDConnect Endpoint URLs permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;OpenIDConnect Endpoint URLs&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;After a successful log-in to the Keycloak server, you will be looking into a similar UI as follows&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/d2d2d5cff43e59be0817606d5855a66f/3643c/master_realm.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:43.24324324324324%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAIAAAC9o5sfAAAACXBIWXMAAAsTAAALEwEAmpwYAAABF0lEQVQoz5WQXU+DMBSG+QczcRe6RDQBhUbw48IlToNuLlH/j5Eo0SX+Ua8RUKEtH6VQD1Sibtz4JOe0b9O370kV3TAHg7X14RAh0zAMswU1JVuD3JgdcM2yLNu2lf2j8Whn78710pxF7x9ZlqVpSilN5UJpgjEI6HBQdOQtyvn0WkeH3uJFCMGKgpclY4xX33DOG8nhuBQrKM7sZktDrrcA4fs+5OL4kxCCW2CQsn0OStT1svlyfquZB/cPTyAITpKchRTymQScvKMn+WRyoWpImqMw8GP6Giairqo2p/5Fj/l4fLah6u7jMwiMCSvyKHgLgiCO4/Ivq35l4sxH27vSDLNBIHxj1QT3RC2bT52rTfXHLP7DF0IFrbO7qtTCAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Master Realm - Keycloak&quot; title=&quot;Master Realm - Keycloak&quot; src=&quot;/static/d2d2d5cff43e59be0817606d5855a66f/6d370/master_realm.png&quot; srcSet=&quot;/static/d2d2d5cff43e59be0817606d5855a66f/c5084/master_realm.png 148w,/static/d2d2d5cff43e59be0817606d5855a66f/60cc9/master_realm.png 295w,/static/d2d2d5cff43e59be0817606d5855a66f/6d370/master_realm.png 590w,/static/d2d2d5cff43e59be0817606d5855a66f/540ae/master_realm.png 885w,/static/d2d2d5cff43e59be0817606d5855a66f/2561a/master_realm.png 1180w,/static/d2d2d5cff43e59be0817606d5855a66f/3643c/master_realm.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Click on the &lt;strong class=&quot;css-0&quot;&gt;OpenID Endpoint Configuration&lt;/strong&gt; to list all required Endpoint URLs and data to configure OpenID Connect in our Identity Providers.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Make a note of the Endpoint URLs and continue forward with the demo. We will be using these endpoint URLs to configure the Federated Authenticator in the WSO2 Identity Server as Key Manager.&lt;/p&gt;&lt;h3 id=&quot;OIDC-Client-Registration&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#OIDC-Client-Registration&quot; aria-label=&quot;OIDC Client Registration permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;OIDC Client Registration&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Next, we will be creating and registering an OIDC Client in the Keycloak server to represent our WSO2 Identity Server as Key Manager.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;We will be using the existing Master realm to create required Clients, Users, and Roles in the Keycloak server&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;Click on the &lt;strong class=&quot;css-0&quot;&gt;Clients&lt;/strong&gt; under Configure to list all the existing registered clients. You will see a similar screen as follows&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/ef4a439d3225e9d15e277fd4fd86b64e/3643c/clients_keycloak.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:22.2972972972973%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAECAIAAAABPYjBAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAq0lEQVQI10WODwuCMBDF92UEozCyUCz7Q0Qf1mBEfirN6dztZgzKbkr54xgP3t7dY8Eqni83nh9kN26tBQBENA6cBifMD9Jse7om+7O/CPk9//S91kAGvVpjqzSgAfe/GyGllNJkA5Bg6ziNkqM3CzL+sG8Ka1oppVQARSWrVouWVuD/WlmWxYAQgoVRujtcXG2eo+0pSheG8ubZqEYZ6ap0rwGyKDOG67r+AtYVxjYn7m36AAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Clients in Keycloak&quot; title=&quot;Clients in Keycloak&quot; src=&quot;/static/ef4a439d3225e9d15e277fd4fd86b64e/6d370/clients_keycloak.png&quot; srcSet=&quot;/static/ef4a439d3225e9d15e277fd4fd86b64e/c5084/clients_keycloak.png 148w,/static/ef4a439d3225e9d15e277fd4fd86b64e/60cc9/clients_keycloak.png 295w,/static/ef4a439d3225e9d15e277fd4fd86b64e/6d370/clients_keycloak.png 590w,/static/ef4a439d3225e9d15e277fd4fd86b64e/540ae/clients_keycloak.png 885w,/static/ef4a439d3225e9d15e277fd4fd86b64e/2561a/clients_keycloak.png 1180w,/static/ef4a439d3225e9d15e277fd4fd86b64e/3643c/clients_keycloak.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Click on the &lt;strong class=&quot;css-0&quot;&gt;Create&lt;/strong&gt; button to add a new client. Set the following&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Client ID: &lt;code class=&quot;css-0&quot;&gt;wso2is-km&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Client Protocol: &lt;code class=&quot;css-0&quot;&gt;openid-connect&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;and &lt;strong class=&quot;css-0&quot;&gt;Save&lt;/strong&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/b77a595612d67b13761cc4ed6cf2be99/3643c/add_client_keycloak.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:35.810810810810814%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAIAAACHqfpvAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAg0lEQVQY05WQTQvCMAxA+///oXhVylDapUtrvlYNsnkQlO6dcsgjvAQkXbAi4vM4AZcCAETUe1/fqKrPQ/JnqrUyUyklxmhmB2QRAZjNPAFzzswsA2xyay2l5E438ZAHkR/Xv/jyJnuk/8z3TxNebrMKr/sLfuFK+Mo4T3i9gx8daX4Bn+acyIbP4DQAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Add new client Keycloak&quot; title=&quot;Add new client Keycloak&quot; src=&quot;/static/b77a595612d67b13761cc4ed6cf2be99/6d370/add_client_keycloak.png&quot; srcSet=&quot;/static/b77a595612d67b13761cc4ed6cf2be99/c5084/add_client_keycloak.png 148w,/static/b77a595612d67b13761cc4ed6cf2be99/60cc9/add_client_keycloak.png 295w,/static/b77a595612d67b13761cc4ed6cf2be99/6d370/add_client_keycloak.png 590w,/static/b77a595612d67b13761cc4ed6cf2be99/540ae/add_client_keycloak.png 885w,/static/b77a595612d67b13761cc4ed6cf2be99/2561a/add_client_keycloak.png 1180w,/static/b77a595612d67b13761cc4ed6cf2be99/3643c/add_client_keycloak.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;In the following prompted screen add the following to configure our &lt;code class=&quot;css-0&quot;&gt;wso2is-km&lt;/code&gt; client in the Keycloak&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;The IS KM server is configured with the port offset of 1. Hence, the common-auth URLs are presented with &lt;code class=&quot;css-0&quot;&gt;https://localhost:9444&lt;/code&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Name: &lt;code class=&quot;css-0&quot;&gt;WSO2 IS KM&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Enabled: &lt;code class=&quot;css-0&quot;&gt;true&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Access Type: &lt;code class=&quot;css-0&quot;&gt;confidential&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Standard Flow Enabled: &lt;code class=&quot;css-0&quot;&gt;true&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Implicit Flow Enabled: &lt;code class=&quot;css-0&quot;&gt;true&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Direct Access Grants Enabled: &lt;code class=&quot;css-0&quot;&gt;true&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Root URL: &lt;code class=&quot;css-0&quot;&gt;https://localhost:9444/commonauth&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Valid Redirect URIs: &lt;code class=&quot;css-0&quot;&gt;https://localhost:9444/commonauth/*&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Admin URL: &lt;code class=&quot;css-0&quot;&gt;https://localhost:9444/commonauth&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;and click on &lt;strong class=&quot;css-0&quot;&gt;Save&lt;/strong&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/da5ca4fdc3c68a985d7e11282d1627aa/3643c/wso2iskm_configurations.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:88.51351351351352%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAIAAADUsmlHAAAACXBIWXMAAAsTAAALEwEAmpwYAAABvUlEQVQ4y42TS0/bQBSFvW/7E4oEqYAYx8YKhKfCAvqjW6kSUkOa2KFS9+y6QnE8fsQz47E902NHEJwH9dEomij3m3Nf0Q7M4887Ox8+ftrd3TOOjnRdbzeQYRiWZWkdu7dv2F/a1vcf94QE0+k0SZL5FsWvlxgn1s76dxf927Z5MnYflVKcsTwvsizPskyILM9xaiqKAp/4VUqpnd98vby5g7n7+Bsw3hMsYYzmZRBiljCiVV2adXIJ533ddipn4vtPhEWUy8rhrTbAx6dX3fM+al7AKPc5piwVuBeyJrWmEja7F3sHHXdSph1FkcoFo0m2JlS7Ctu9a5zWoTkaO0KIgPh/niMvmislq+4stSFtu3eFsivY5SmPAvLt79yjZdqbMq3DunWK02pbI8fF9yAIpjHlVc3/Y5WGCQNGw36NHcRj+ilnaZpWzrIRDGfHmShZBGGIUWPPZrMZVk28iHOOnm2BD01nUo4Kq4cgXgn+r63GHaPeCi9GRQihlMIW/k3hsuaRs3BGtpg2nni7Xsj8PfjnYIjnZ76PhodhiLTXO1RfObmEBw9Dkaae57Hyj5XLBlpNG+Si4aqB/gH7HG38MYbzRwAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;WSO2ISKM Configurations&quot; title=&quot;WSO2ISKM Configurations&quot; src=&quot;/static/da5ca4fdc3c68a985d7e11282d1627aa/6d370/wso2iskm_configurations.png&quot; srcSet=&quot;/static/da5ca4fdc3c68a985d7e11282d1627aa/c5084/wso2iskm_configurations.png 148w,/static/da5ca4fdc3c68a985d7e11282d1627aa/60cc9/wso2iskm_configurations.png 295w,/static/da5ca4fdc3c68a985d7e11282d1627aa/6d370/wso2iskm_configurations.png 590w,/static/da5ca4fdc3c68a985d7e11282d1627aa/540ae/wso2iskm_configurations.png 885w,/static/da5ca4fdc3c68a985d7e11282d1627aa/2561a/wso2iskm_configurations.png 1180w,/static/da5ca4fdc3c68a985d7e11282d1627aa/3643c/wso2iskm_configurations.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Next, go to the &lt;strong class=&quot;css-0&quot;&gt;Credentials&lt;/strong&gt; tab of our &lt;code class=&quot;css-0&quot;&gt;WSO2IS-KM&lt;/code&gt; client in the Keycloak server and make a copy of the &lt;code class=&quot;css-0&quot;&gt;client-secret&lt;/code&gt; value for later usage.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;If you want you can regenerate the secret and make a copy of it to configure Keycloak IDP in the WSO2 IS KM server&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/14dcc4b81d093411c5c9d888315a2a31/3643c/credentials_wso2iskm_client.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:31.756756756756754%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAIAAABM9SnKAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAmElEQVQY05WQ2xLDIAhE/f9vbdSA4L3tGpq2melLzwODyC6oE0lElFIqpTz+xKnmEAJJ8VLLoqoqc6q17kSIoopIzCsXyTlDQsRIHAxaa/tB7x0leDFzO8Dt/Qfn5PcO1o2xMUYYxcWOIxwx87Zt3gfkl7Xhcy6z+qz1G1RgGmAVoi2I5o8YMrwVpTHGnHNcsQqnF/YdJn4CxmBegcB+da4AAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Credentials of WSO2ISKM Client&quot; title=&quot;Credentials of WSO2ISKM Client&quot; src=&quot;/static/14dcc4b81d093411c5c9d888315a2a31/6d370/credentials_wso2iskm_client.png&quot; srcSet=&quot;/static/14dcc4b81d093411c5c9d888315a2a31/c5084/credentials_wso2iskm_client.png 148w,/static/14dcc4b81d093411c5c9d888315a2a31/60cc9/credentials_wso2iskm_client.png 295w,/static/14dcc4b81d093411c5c9d888315a2a31/6d370/credentials_wso2iskm_client.png 590w,/static/14dcc4b81d093411c5c9d888315a2a31/540ae/credentials_wso2iskm_client.png 885w,/static/14dcc4b81d093411c5c9d888315a2a31/2561a/credentials_wso2iskm_client.png 1180w,/static/14dcc4b81d093411c5c9d888315a2a31/3643c/credentials_wso2iskm_client.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;After noting down the Secrets, click on the &lt;strong class=&quot;css-0&quot;&gt;Roles&lt;/strong&gt; tab to create a Subscriber Role.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;We will be creating a Subscriber role in the &lt;code class=&quot;css-0&quot;&gt;WSO2IS-KM&lt;/code&gt; client to federate and give permissions to access the Store portal of WSO2 API Manager.&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;You will find a similar UI under the Roles tab&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/0a7203278797dc1906048728f8036d27/3643c/roles_wso2iskm_client.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:14.18918918918919%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAADCAIAAAAcOLh5AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAWElEQVQI152LAQrAIAwD/f9LnXQKtc5akS3WH+woRxJoqO0Rqe8vQmuC6111TFWdEx5mNrYMFcZu3k4+n2utkFISkVxKjFfOmYiYK9ijVwRmhouD0Byi+wMCEK5VHzo9QwAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Roles of WSO2ISKM Client&quot; title=&quot;Roles of WSO2ISKM Client&quot; src=&quot;/static/0a7203278797dc1906048728f8036d27/6d370/roles_wso2iskm_client.png&quot; srcSet=&quot;/static/0a7203278797dc1906048728f8036d27/c5084/roles_wso2iskm_client.png 148w,/static/0a7203278797dc1906048728f8036d27/60cc9/roles_wso2iskm_client.png 295w,/static/0a7203278797dc1906048728f8036d27/6d370/roles_wso2iskm_client.png 590w,/static/0a7203278797dc1906048728f8036d27/540ae/roles_wso2iskm_client.png 885w,/static/0a7203278797dc1906048728f8036d27/2561a/roles_wso2iskm_client.png 1180w,/static/0a7203278797dc1906048728f8036d27/3643c/roles_wso2iskm_client.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Click on &lt;strong class=&quot;css-0&quot;&gt;Add Role&lt;/strong&gt; to create a new Role and input the following …&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Role Name: &lt;code class=&quot;css-0&quot;&gt;subscriber&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;and &lt;strong class=&quot;css-0&quot;&gt;Save&lt;/strong&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/ef948445406ee15c9574c1b2ac0b2fd5/3643c/add_role_client.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:32.43243243243243%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAIAAABM9SnKAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAcUlEQVQY05WOSwrDMAxEff9b9QZZl66zSWuLCPyRRkoNgRQCDc5bzO7NTGBeY4wist0nmBkAVSVKKlJKYWYMoEDYO9ydiGptXe5Heu6lF9gh/3AfOeybcytn+c0tcYaK/cfNBFjyepYfz8/0mqXmkf0vU/ZiUGHdnpIAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Add Role to the Client&quot; title=&quot;Add Role to the Client&quot; src=&quot;/static/ef948445406ee15c9574c1b2ac0b2fd5/6d370/add_role_client.png&quot; srcSet=&quot;/static/ef948445406ee15c9574c1b2ac0b2fd5/c5084/add_role_client.png 148w,/static/ef948445406ee15c9574c1b2ac0b2fd5/60cc9/add_role_client.png 295w,/static/ef948445406ee15c9574c1b2ac0b2fd5/6d370/add_role_client.png 590w,/static/ef948445406ee15c9574c1b2ac0b2fd5/540ae/add_role_client.png 885w,/static/ef948445406ee15c9574c1b2ac0b2fd5/2561a/add_role_client.png 1180w,/static/ef948445406ee15c9574c1b2ac0b2fd5/3643c/add_role_client.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;And finally, click on the &lt;strong class=&quot;css-0&quot;&gt;Mappers&lt;/strong&gt; tab, to configure a claim mapping to send and expose our created Roles through the OIDC SSO flow (incl. ID Token) and via the User Info endpoint.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;You’ll find a similar UI under the &lt;strong class=&quot;css-0&quot;&gt;Mappers&lt;/strong&gt; section …&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/c2d251a41c24dab1e00091ded14a452a/3643c/mappers_wso2iskm.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:15.54054054054054%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAADCAIAAAAcOLh5AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAT0lEQVQI15XMwQ6AIAwDUP7/Z4XFtRuDIBCjB0++w9r0sCQnRKS1Nv5LUAUIwN1Jmhk8Zrdl5bPbLrXW3vu8EZFkU1W+7A7j1/pOHjmXIhcNsK9KO91m8wAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Mappers of WSO2ISKM Client - Keycloak&quot; title=&quot;Mappers of WSO2ISKM Client - Keycloak&quot; src=&quot;/static/c2d251a41c24dab1e00091ded14a452a/6d370/mappers_wso2iskm.png&quot; srcSet=&quot;/static/c2d251a41c24dab1e00091ded14a452a/c5084/mappers_wso2iskm.png 148w,/static/c2d251a41c24dab1e00091ded14a452a/60cc9/mappers_wso2iskm.png 295w,/static/c2d251a41c24dab1e00091ded14a452a/6d370/mappers_wso2iskm.png 590w,/static/c2d251a41c24dab1e00091ded14a452a/540ae/mappers_wso2iskm.png 885w,/static/c2d251a41c24dab1e00091ded14a452a/2561a/mappers_wso2iskm.png 1180w,/static/c2d251a41c24dab1e00091ded14a452a/3643c/mappers_wso2iskm.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Select the &lt;strong class=&quot;css-0&quot;&gt;Add Builtin&lt;/strong&gt;, and enable the client roles in the prompted screen and Save&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/6df5f3156892203b9c0bf5c4e7ed1075/f97d7/builtin_mappers.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:4.72972972972973%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAABCAIAAABR8BlyAAAACXBIWXMAAAsTAAALEwEAmpwYAAAALUlEQVQI12N48+bN169ff6CCV69effjw4efPn0D2t2/fXr58CedCwIdP34AkANNVOV1q+2UWAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Builtin Mappers - Keycloak&quot; title=&quot;Builtin Mappers - Keycloak&quot; src=&quot;/static/6df5f3156892203b9c0bf5c4e7ed1075/6d370/builtin_mappers.png&quot; srcSet=&quot;/static/6df5f3156892203b9c0bf5c4e7ed1075/c5084/builtin_mappers.png 148w,/static/6df5f3156892203b9c0bf5c4e7ed1075/60cc9/builtin_mappers.png 295w,/static/6df5f3156892203b9c0bf5c4e7ed1075/6d370/builtin_mappers.png 590w,/static/6df5f3156892203b9c0bf5c4e7ed1075/540ae/builtin_mappers.png 885w,/static/6df5f3156892203b9c0bf5c4e7ed1075/2561a/builtin_mappers.png 1180w,/static/6df5f3156892203b9c0bf5c4e7ed1075/f97d7/builtin_mappers.png 2000w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Edit the &lt;strong class=&quot;css-0&quot;&gt;Client Roles&lt;/strong&gt; mapper with the following properties …&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Client ID: &lt;code class=&quot;css-0&quot;&gt;wso2is-km&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Multivalued: &lt;code class=&quot;css-0&quot;&gt;true&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Token Claim Name: &lt;code class=&quot;css-0&quot;&gt;roles&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Claim JSON Type: &lt;code class=&quot;css-0&quot;&gt;String&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Add to ID token: &lt;code class=&quot;css-0&quot;&gt;true&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Add to access token: &lt;code class=&quot;css-0&quot;&gt;true&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Add to userinfo: &lt;code class=&quot;css-0&quot;&gt;true&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;and &lt;strong class=&quot;css-0&quot;&gt;Save&lt;/strong&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/a7feb1a5c90b3603b879aae46ed91d02/3643c/client_roles_mapping.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:69.5945945945946%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAOCAIAAACgpqunAAAACXBIWXMAAAsTAAALEwEAmpwYAAABFUlEQVQoz5WTzU7DMBCE8/5vxIEH4AZSuSCkSpUKFXH8l934P2GahNKoAsx3iKK1Z2c9cRr2kYZALrhYfCrO+5zzVEfDTNYaa0zOaZpGlMrMsjz+SnNpQ0QhBGYWQhhj+r631qI4/My3OM5A3HWdmdFao8Xf4pQStsIZJaXUtSFfQVtWMWTQwJmY21Zgl3MOSvcF3jFF2tIsqXjvMSeeOeHYOHwMW7AEfd6yOqPrR9uWFB7f+NDxOfObbG/DP4vRA8G2QsDupEhaHkvJFaxjIy2EjPFsT3jH4ccKVjHGlkpNJd2/6uejnosVN2yJGm5SQhzvXuTuqP4hBviGWhs4P73ToaNpuaiV4ovVw17t9qfoh5of4xPmJDLmzrGJwQAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Client Roles Mapping&quot; title=&quot;Client Roles Mapping&quot; src=&quot;/static/a7feb1a5c90b3603b879aae46ed91d02/6d370/client_roles_mapping.png&quot; srcSet=&quot;/static/a7feb1a5c90b3603b879aae46ed91d02/c5084/client_roles_mapping.png 148w,/static/a7feb1a5c90b3603b879aae46ed91d02/60cc9/client_roles_mapping.png 295w,/static/a7feb1a5c90b3603b879aae46ed91d02/6d370/client_roles_mapping.png 590w,/static/a7feb1a5c90b3603b879aae46ed91d02/540ae/client_roles_mapping.png 885w,/static/a7feb1a5c90b3603b879aae46ed91d02/2561a/client_roles_mapping.png 1180w,/static/a7feb1a5c90b3603b879aae46ed91d02/3643c/client_roles_mapping.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;h3 id=&quot;User-Registration&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#User-Registration&quot; aria-label=&quot;User Registration permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;User Registration&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;As the first step, we are done configuring our WSO2 IS-KM Client in the Keycloak. Next, we will be creating a new User in the Keycloak server for our demo.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Select the &lt;strong class=&quot;css-0&quot;&gt;Users&lt;/strong&gt; under the &lt;strong class=&quot;css-0&quot;&gt;Manage&lt;/strong&gt; section in your Left Navigation Panel. You will find the created Admin user in the prompted screen&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/ddcbd2f4cf732ac75c838c6759a8b2dc/3643c/users_keycloak.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:27.027027027027025%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAIAAADKYVtkAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAi0lEQVQY05XN2wrCMAwG4L6LDtzNHHZsTNabvfIcnoav1BJiG6E0xomgd/MnBBLyEbWrO6ksLw/jiZkR0TpHRCEEoofEey99HumzJwBAvCuRujHrTTGMx8Ts4IXlmt70F0uHOdbKlVMiW9MLPl8m+Rxj5MVRpd5vdbv6wimlpbju+qoxeVFdp9u/n59ASv9/As99hwAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Users in Keycloak&quot; title=&quot;Users in Keycloak&quot; src=&quot;/static/ddcbd2f4cf732ac75c838c6759a8b2dc/6d370/users_keycloak.png&quot; srcSet=&quot;/static/ddcbd2f4cf732ac75c838c6759a8b2dc/c5084/users_keycloak.png 148w,/static/ddcbd2f4cf732ac75c838c6759a8b2dc/60cc9/users_keycloak.png 295w,/static/ddcbd2f4cf732ac75c838c6759a8b2dc/6d370/users_keycloak.png 590w,/static/ddcbd2f4cf732ac75c838c6759a8b2dc/540ae/users_keycloak.png 885w,/static/ddcbd2f4cf732ac75c838c6759a8b2dc/2561a/users_keycloak.png 1180w,/static/ddcbd2f4cf732ac75c838c6759a8b2dc/3643c/users_keycloak.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Click on &lt;strong class=&quot;css-0&quot;&gt;Add User&lt;/strong&gt; and prompt the following …&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Username: &lt;code class=&quot;css-0&quot;&gt;keycloakuser&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Email: &lt;code class=&quot;css-0&quot;&gt;key@cloak.com&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;First Name: &lt;code class=&quot;css-0&quot;&gt;Keycloak&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Last Name: &lt;code class=&quot;css-0&quot;&gt;User&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;User Enabled: &lt;code class=&quot;css-0&quot;&gt;true&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Email Verified: &lt;code class=&quot;css-0&quot;&gt;true&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;and &lt;strong class=&quot;css-0&quot;&gt;Save&lt;/strong&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/6438c60b117521e9407f7f464adbe285/3643c/user_creation.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:64.1891891891892%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAIAAAAmMtkJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA90lEQVQoz5WS627DIAyF8/6vs2eZpv7f1CahlHAzBkJ3ClvSVqqSflKIiTjOwXbn42yMVUqVUq5v0kEm5QUYY3LOpTJXlnhZn8WWoiHWWhPwhBTMUanJWnv7QsE5h1dbISh3dEuaXMEheJmmSVeQgplDCFwJj6xiOMceYgSQxRhTJb9mFbefeO/PUmKlLXBmFTdvSCGEQJy2gLU/MW5/s41aBU/ewesbYkSjEJHp0JteOWTL8zZd6x46dOr7a+KPr/Pnj6pedgwJHlQYvUGDcorf0o4Xnf5LvW0bES6M9mJP1pyORxRzmbNXrK1q++rfDsMYAu2Z7V81tPmJm1LWAQAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;User Creation - Keycloak&quot; title=&quot;User Creation - Keycloak&quot; src=&quot;/static/6438c60b117521e9407f7f464adbe285/6d370/user_creation.png&quot; srcSet=&quot;/static/6438c60b117521e9407f7f464adbe285/c5084/user_creation.png 148w,/static/6438c60b117521e9407f7f464adbe285/60cc9/user_creation.png 295w,/static/6438c60b117521e9407f7f464adbe285/6d370/user_creation.png 590w,/static/6438c60b117521e9407f7f464adbe285/540ae/user_creation.png 885w,/static/6438c60b117521e9407f7f464adbe285/2561a/user_creation.png 1180w,/static/6438c60b117521e9407f7f464adbe285/3643c/user_creation.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Move to the &lt;strong class=&quot;css-0&quot;&gt;Credentials&lt;/strong&gt; tab our created user and enter a password. Disable the &lt;strong class=&quot;css-0&quot;&gt;Temporary Password&lt;/strong&gt; and click on &lt;strong class=&quot;css-0&quot;&gt;Set Password&lt;/strong&gt; to save.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/34641a66c069244fe8c048dfe5931fbb/3643c/user_credentials.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:48.64864864864865%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAIAAAA7N+mxAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAzUlEQVQoz5WQ226DMBBE/f9fGTVppYjaBRvb62t7AgmRSB/IeRqBZ2d2VUjVOWet7b3/vokaf+7gL7WV1ltrpZT2oNa66b3Zex9jtM7FKJ4WUlNK4ziFeEMk+RBExPuQUn5JHu/ZlH+7ttaawoTM8xyWLKZM00Takh3RvAlhrfKE78oYMwwD5ZnUF1hyt3POuf2H4h2/8ZCcF/CunpVtxA7CFYFUojlrcyq0cJkD3GpjZjAeY7SkfPqyH9dDl6Os2hRNEMO3Pl8+GXzE/wfeYkrEY4aYGgAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;User Credentials&quot; title=&quot;User Credentials&quot; src=&quot;/static/34641a66c069244fe8c048dfe5931fbb/6d370/user_credentials.png&quot; srcSet=&quot;/static/34641a66c069244fe8c048dfe5931fbb/c5084/user_credentials.png 148w,/static/34641a66c069244fe8c048dfe5931fbb/60cc9/user_credentials.png 295w,/static/34641a66c069244fe8c048dfe5931fbb/6d370/user_credentials.png 590w,/static/34641a66c069244fe8c048dfe5931fbb/540ae/user_credentials.png 885w,/static/34641a66c069244fe8c048dfe5931fbb/2561a/user_credentials.png 1180w,/static/34641a66c069244fe8c048dfe5931fbb/3643c/user_credentials.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Next, move to the &lt;strong class=&quot;css-0&quot;&gt;Role Mappings&lt;/strong&gt; tab to map the Subscriber (which we created earlier) with our User.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Select the &lt;code class=&quot;css-0&quot;&gt;WSO2IS-KM&lt;/code&gt; client in the &lt;strong class=&quot;css-0&quot;&gt;Client Roles&lt;/strong&gt; dropdown and then it will list all the associated roles under the &lt;strong class=&quot;css-0&quot;&gt;Available Roles&lt;/strong&gt; section. Select the &lt;code class=&quot;css-0&quot;&gt;subscriber&lt;/code&gt; role and click on &lt;strong class=&quot;css-0&quot;&gt;Add Selected&lt;/strong&gt; to assign it …&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/0d1401b350896a2ccae5eacf211c93d9/3643c/select_iskm_client.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:37.83783783783784%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAIAAAB2/0i6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA40lEQVQY051Qy3LDIAzk/w+9tfmGnpp+TW6tHc944nhSY/OQxDPCxM6lvXRHgCS0aJGQUlpr878gpmlalsU5F2NMKYWYyhEfqO6fZKYZYwBQKWWBpHGWAgIQEect8A3m9ID3PoSwRUnwA7BCa911HRFypnYbx7FpGkSs/ZnZ9/0wDLWe82LXEFbsIVdzWL+zF7AWvYF9sdMc0TxL5yjn0ogXgFVqQYRU5lAseF+VVxQyIrGGm9Rf5+twM9Uum/O0H9Nf1azxObBcGiXeT616OzaHz/PrR/urHY7ty/s3l62UQr4Df3LKGkVYPG8AAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Select IS KM Client&quot; title=&quot;Select IS KM Client&quot; src=&quot;/static/0d1401b350896a2ccae5eacf211c93d9/6d370/select_iskm_client.png&quot; srcSet=&quot;/static/0d1401b350896a2ccae5eacf211c93d9/c5084/select_iskm_client.png 148w,/static/0d1401b350896a2ccae5eacf211c93d9/60cc9/select_iskm_client.png 295w,/static/0d1401b350896a2ccae5eacf211c93d9/6d370/select_iskm_client.png 590w,/static/0d1401b350896a2ccae5eacf211c93d9/540ae/select_iskm_client.png 885w,/static/0d1401b350896a2ccae5eacf211c93d9/2561a/select_iskm_client.png 1180w,/static/0d1401b350896a2ccae5eacf211c93d9/3643c/select_iskm_client.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/d911c8dd826eab9169afc52918cee612/3643c/assign_subscriber_role.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:36.486486486486484%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAIAAACHqfpvAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA7UlEQVQY03WQzWrDMBCE/f7P03sOhd5KSg/tocRQYkht42LLknb1s1LHkuOc+iGEJHZ2Z9TEGFNK1tppmuq5Yozp+15rnXM+XsZxXJYFxXhn5iYXQozMPgSJksoSNPKFWgCxc46I7B1cGzTYShzb9TcLSlPOkpIQsVKr1iYUYgFiEalG0LEh5iTx+7Y8PV9O5/HlU53e5/Zmyeh+GGAVSgzBDsNd12GmFF/Yd9uDCh9X/9by+WJfv2z7w8XCA4zCWH1nXddHZkNs9CyyJ3RR2LktGdHxhTXzAbLuYuf8PCtiLynHLVSGNfSGIP/PH2AZlm/aigW7AAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Assign Subscriber Role - Keycloak&quot; title=&quot;Assign Subscriber Role - Keycloak&quot; src=&quot;/static/d911c8dd826eab9169afc52918cee612/6d370/assign_subscriber_role.png&quot; srcSet=&quot;/static/d911c8dd826eab9169afc52918cee612/c5084/assign_subscriber_role.png 148w,/static/d911c8dd826eab9169afc52918cee612/60cc9/assign_subscriber_role.png 295w,/static/d911c8dd826eab9169afc52918cee612/6d370/assign_subscriber_role.png 590w,/static/d911c8dd826eab9169afc52918cee612/540ae/assign_subscriber_role.png 885w,/static/d911c8dd826eab9169afc52918cee612/2561a/assign_subscriber_role.png 1180w,/static/d911c8dd826eab9169afc52918cee612/3643c/assign_subscriber_role.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;And that’s all, we are done with the Keycloak initialization and configurations. 👏&lt;/p&gt;&lt;br/&gt;&lt;h2 id=&quot;-WSO2-Identity-Server-as-Key-Manager&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-WSO2-Identity-Server-as-Key-Manager&quot; aria-label=&quot; WSO2 Identity Server as Key Manager permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;🔐 WSO2 Identity Server as Key Manager&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;We have successfully configured our Keycloak Server to send required claims and the roles to perform SSO and User Federation.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;You can find &lt;a href=&quot;https://docs.wso2.com/display/AM260/Configuring+WSO2+Identity+Server+as+a+Key+Manager&quot; class=&quot;css-0&quot;&gt;Docs&lt;/a&gt; to configure WSO2 Identity Server as Key Manager with API Manager. The IS-KM server will be running with a port offset of 1&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;💡 Bonus &lt;br/&gt;
You can use the &lt;a href=&quot;https://github.com/athiththan11/hydrogen-cli&quot; class=&quot;css-0&quot;&gt;Hydrogen CLI&lt;/a&gt; tool to configure both WSO2 API Manager &amp;amp; Identity Server as Key Manager within seconds&lt;/p&gt;&lt;/blockquote&gt;&lt;div title=&quot;Hydrogen CLI&quot; class=&quot;css-0&quot;&gt;&lt;/div&gt;&lt;h3 id=&quot;Registering-an-Identity-Provider&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Registering-an-Identity-Provider&quot; aria-label=&quot;Registering an Identity Provider permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Registering an Identity Provider&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Now we have to register an Identity Provider in the WSO2 IS KM to represent our Keycloak server. Let’s fire up the WSO2 IS-KM Server and log-in to the Carbon Management console.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Click on Add under the Identity Provider section to register an Identity Provider&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/7ac0c34776165a60e2cde2a9663348b0/3643c/identity_provider_add.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:59.45945945945946%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAIAAADtbgqsAAAACXBIWXMAAAsTAAALEwEAmpwYAAACBElEQVQoz3WRz2vUQBTH5+jJ7dV/w4Ngu3gU/A9EUIpQl7rFKnjy5NGTB0FhQVEPXr2I6EmsClat220tW7e1bpNtdpJJ5lcmM5M02dS3Gy2l4JcPj+88+OaF91Dr5oVX92+8mDvz8vrZO+dPXTp9onluqjFTuzZ9sjFdW6hPLdRrzZkJ9eOgxbnLt5tXFxtXbs3Pzs9efHDvbnflY+fzu7XlpfUvSz+W3298/dBd+QRNMMdArcdPfvX7m73tnb7jDLyIiVhbqQyTSigtlNE2O/iP0Ju3r2UquYiLIod3URSURiA6EWMsmgiMtSZNbSUwANrsbrj+IIwYhLMsy4ucUU4pB2t0akyFher7ISERmCTRSo1B7dXvmOE40aPRCMZC5Uw4/T0aCa1SnfzF6H08JLu/XagqtvCEJlpb7wSCGJuVZZnn+TjMpevsBTg0kPmH1RnxI2+Ah14QEsphJbFBq502jRllXGtdTaYRcx2PszhR1ur9itTk2COBH4WEkYDChyLCUG/rJxa+iJMiz2E4hAWXu/1BlY+lPoRRGYV8nCQUhoNB7W/LMnC9gMIyi4kY547jSjiZNkcJQ1g/tzar9gegh49aO8Owt00wVvkkLHg8cLFgiRQw0FTAknwcEp8paWNhKtDzZ0/LzDKVluUB/DacGq7a621hjMHAVQ4RUiZaH+38AfuMao9+eMI9AAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Identity Provider Add&quot; title=&quot;Identity Provider Add&quot; src=&quot;/static/7ac0c34776165a60e2cde2a9663348b0/6d370/identity_provider_add.png&quot; srcSet=&quot;/static/7ac0c34776165a60e2cde2a9663348b0/c5084/identity_provider_add.png 148w,/static/7ac0c34776165a60e2cde2a9663348b0/60cc9/identity_provider_add.png 295w,/static/7ac0c34776165a60e2cde2a9663348b0/6d370/identity_provider_add.png 590w,/static/7ac0c34776165a60e2cde2a9663348b0/540ae/identity_provider_add.png 885w,/static/7ac0c34776165a60e2cde2a9663348b0/2561a/identity_provider_add.png 1180w,/static/7ac0c34776165a60e2cde2a9663348b0/3643c/identity_provider_add.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Enter the Basic Informations&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Identity Provider Name: &lt;code class=&quot;css-0&quot;&gt;KeycloakIDP&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Display Name: &lt;code class=&quot;css-0&quot;&gt;Keycloak Identity Provider&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Description: &lt;code class=&quot;css-0&quot;&gt;Identity Provider for Keycloak&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Alias: &lt;code class=&quot;css-0&quot;&gt;https://localhost:9444/oauth2/token&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/db737cb211e4925c9a7e225f549e4b74/3643c/idp_basic_configuration.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:36.486486486486484%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAIAAACHqfpvAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAmklEQVQY042QyQ7DIAxE8/8/mhAgiwnOYhs65VD10CqZA7JGjObZ3dVUaxUR78dlWWlNOXN9oO48TzNt4WsYnHPjPC/M+9MwpKpmMk3R+4jwSrQzl1JuwsxMRGBGf8JE72fbNvhmdhM+jgNfUS5aQpxDCHAaiD3CRq2oYufRub4fsHnOGczNhi//+LvPVIohk1IC8PWldtHfFC/3Y5ujc+rk1AAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;IDP Basic Information Configuration&quot; title=&quot;IDP Basic Information Configuration&quot; src=&quot;/static/db737cb211e4925c9a7e225f549e4b74/6d370/idp_basic_configuration.png&quot; srcSet=&quot;/static/db737cb211e4925c9a7e225f549e4b74/c5084/idp_basic_configuration.png 148w,/static/db737cb211e4925c9a7e225f549e4b74/60cc9/idp_basic_configuration.png 295w,/static/db737cb211e4925c9a7e225f549e4b74/6d370/idp_basic_configuration.png 590w,/static/db737cb211e4925c9a7e225f549e4b74/540ae/idp_basic_configuration.png 885w,/static/db737cb211e4925c9a7e225f549e4b74/2561a/idp_basic_configuration.png 1180w,/static/db737cb211e4925c9a7e225f549e4b74/3643c/idp_basic_configuration.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Expand the &lt;strong class=&quot;css-0&quot;&gt;Claim Configurations&lt;/strong&gt; to map User ID and Role claims with the associated claims exposed by the Keycloak server. Click on &lt;strong class=&quot;css-0&quot;&gt;Define Custom Claim Dialect&lt;/strong&gt; and &lt;strong class=&quot;css-0&quot;&gt;Add Claim Mapping&lt;/strong&gt; to add custom claim mappings. Add the following …&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;preferred_username&lt;/code&gt; : &lt;code class=&quot;css-0&quot;&gt;http://wso2.org/claims/displayName&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;roles&lt;/code&gt; : &lt;code class=&quot;css-0&quot;&gt;http://wso2.org/claims/role&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;Then, define the &lt;strong class=&quot;css-0&quot;&gt;User ID Claim URI&lt;/strong&gt; as &lt;code class=&quot;css-0&quot;&gt;preferred_username&lt;/code&gt; and the &lt;strong class=&quot;css-0&quot;&gt;Role Claim URI&lt;/strong&gt; as &lt;code class=&quot;css-0&quot;&gt;roles&lt;/code&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/9a8045c4105abad88e077687e0e4c865/3643c/idp_claim_configuration.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:27.027027027027025%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAIAAADKYVtkAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAqklEQVQY022O4Q6DIAyEff9X9JdjaIQhAQcUWnRVZrYl+3Jprk0P2llrpBzmWab8VItSeorR1QpEiWszb7GvgBgvpY6IEKnWDYkGOd7EqPXDOQ+QQ0wpQSnYlCHnXPaLbdu7I4vITa10vwutFcCxxQgh+r6XUnrv13W1i7HL8hXeOn48hMANURFiGKfJGONOrLWcqXzVh/0njCc85aXjSgCu7Wf2PGx7f3kBrWUhvWSCdjgAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;IDP Claim Mapping Configuration&quot; title=&quot;IDP Claim Mapping Configuration&quot; src=&quot;/static/9a8045c4105abad88e077687e0e4c865/6d370/idp_claim_configuration.png&quot; srcSet=&quot;/static/9a8045c4105abad88e077687e0e4c865/c5084/idp_claim_configuration.png 148w,/static/9a8045c4105abad88e077687e0e4c865/60cc9/idp_claim_configuration.png 295w,/static/9a8045c4105abad88e077687e0e4c865/6d370/idp_claim_configuration.png 590w,/static/9a8045c4105abad88e077687e0e4c865/540ae/idp_claim_configuration.png 885w,/static/9a8045c4105abad88e077687e0e4c865/2561a/idp_claim_configuration.png 1180w,/static/9a8045c4105abad88e077687e0e4c865/3643c/idp_claim_configuration.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Next, expand the &lt;strong class=&quot;css-0&quot;&gt;Role Configuration&lt;/strong&gt; accordion to map our Keycloak’s Subscriber role with the &lt;code class=&quot;css-0&quot;&gt;Internal/subscriber&lt;/code&gt; role respectively in the WSO2 IS KM.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Click on &lt;strong class=&quot;css-0&quot;&gt;Add Role Mapping&lt;/strong&gt; and add the following&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;subscriber&lt;/code&gt; : &lt;code class=&quot;css-0&quot;&gt;Internal/subscriber&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/e015ea324eaccc1365ecb06b3a01d21c/3643c/idp_role_claim_configuration.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:15.54054054054054%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAADCAIAAAAcOLh5AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAc0lEQVQI102N2w6AIAxD+f+/1OiDEgG3MZCLWvXFphnNWVbMsqzDMO47cRTr/OaRiEUkRtUE4/38ZFXwzyCmvzrPq7U6zfNqLTOX4wAMISDXWkspmMKUc75+Mljrq5xS8B4H+JWIwJ1z4GhpUO9oRMn/+AZxlK0WDMR29AAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;IDP Role Claim Mapping Configuration&quot; title=&quot;IDP Role Claim Mapping Configuration&quot; src=&quot;/static/e015ea324eaccc1365ecb06b3a01d21c/6d370/idp_role_claim_configuration.png&quot; srcSet=&quot;/static/e015ea324eaccc1365ecb06b3a01d21c/c5084/idp_role_claim_configuration.png 148w,/static/e015ea324eaccc1365ecb06b3a01d21c/60cc9/idp_role_claim_configuration.png 295w,/static/e015ea324eaccc1365ecb06b3a01d21c/6d370/idp_role_claim_configuration.png 590w,/static/e015ea324eaccc1365ecb06b3a01d21c/540ae/idp_role_claim_configuration.png 885w,/static/e015ea324eaccc1365ecb06b3a01d21c/2561a/idp_role_claim_configuration.png 1180w,/static/e015ea324eaccc1365ecb06b3a01d21c/3643c/idp_role_claim_configuration.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Expand the &lt;strong class=&quot;css-0&quot;&gt;Federated Authenticators&lt;/strong&gt; and &lt;strong class=&quot;css-0&quot;&gt;OAuth2/OpenID Connect Configuration&lt;/strong&gt; accordion to configure federated authentication with the Keycloak Server&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Enter the following respective to the secrets and information retrieved from the &lt;code class=&quot;css-0&quot;&gt;WSO2IS-KM&lt;/code&gt; client in the Keycloak&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Enable OAuth2/OpenIDConnect: &lt;code class=&quot;css-0&quot;&gt;true&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Client ID: &lt;code class=&quot;css-0&quot;&gt;wso2is-km&lt;/code&gt; &lt;em class=&quot;css-0&quot;&gt;(our client name in the Keycloak Server)&lt;/em&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Client Secret: &lt;em class=&quot;css-0&quot;&gt;Paste the secret we acquired under credentials&lt;/em&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Authorization Endpoint URL: *Authorization Endpoint URL collected from the &lt;strong class=&quot;css-0&quot;&gt;OpenID Connect Endpoint Configuration*&lt;/strong&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Token Endpoint URL: *Token Endpoint URL collected from the &lt;strong class=&quot;css-0&quot;&gt;OpenID Connect Endpoint Configuration*&lt;/strong&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Callback URL: &lt;code class=&quot;css-0&quot;&gt;https://localhost:9444/commonauth&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Userinfo Endpoint URL: *Userinfo Endpoint URL collected from the &lt;strong class=&quot;css-0&quot;&gt;OpenID Connect Endpoint Configuration*&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/ceb10e916ad855e4aa6f228ab8298399/3643c/federated_authenticator_configuration.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:56.08108108108109%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABDElEQVQoz41RSW7DMAz0/x9Y9FKgSGKtsfZopZ1SSlO0B8cdCIQgcYYcclKafp7eTud3yj6Mmb0nzhGM3lM8IbAYxc65TjHGWtvasRnrrHXOB+9DjDmlgl/3HWzbfSqlAPQMaJVzJuWVCSkWhe9Dcd0nb1PO+Xa7tdZQgnNOCD0TOjPhnIs5wwqvyLXWlBLeVgDG2GUmGCmll3lGC7W1V2Rsr42MFZqUknOxLGp4Tvn5dVC5mwPgghPKKOMMJZTCyZVS/+vZaKO1McYqpX0IfdYAB21jZZRAulJWDzZCaY0zO2gb9xywSF8MeGexLG7a2h6HZrf9Gz/L+257lG3DNeAI8P6ID9S/wJztiS9GhX+VQRkUPAAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Federated Authenticator Configuration&quot; title=&quot;Federated Authenticator Configuration&quot; src=&quot;/static/ceb10e916ad855e4aa6f228ab8298399/6d370/federated_authenticator_configuration.png&quot; srcSet=&quot;/static/ceb10e916ad855e4aa6f228ab8298399/c5084/federated_authenticator_configuration.png 148w,/static/ceb10e916ad855e4aa6f228ab8298399/60cc9/federated_authenticator_configuration.png 295w,/static/ceb10e916ad855e4aa6f228ab8298399/6d370/federated_authenticator_configuration.png 590w,/static/ceb10e916ad855e4aa6f228ab8298399/540ae/federated_authenticator_configuration.png 885w,/static/ceb10e916ad855e4aa6f228ab8298399/2561a/federated_authenticator_configuration.png 1180w,/static/ceb10e916ad855e4aa6f228ab8298399/3643c/federated_authenticator_configuration.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Finally, expand the &lt;strong class=&quot;css-0&quot;&gt;Just-In-Time Provisioning&lt;/strong&gt; accordion and select the &lt;code class=&quot;css-0&quot;&gt;Always Provision to User Store Domain&lt;/code&gt; to &lt;code class=&quot;css-0&quot;&gt;PRIMARY&lt;/code&gt; and make it &lt;strong class=&quot;css-0&quot;&gt;Provision silently&lt;/strong&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/e1ebb028d9c04e987d0741765fcf16d9/f97d7/jit_configuration.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:13.513513513513512%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAADCAIAAAAcOLh5AAAACXBIWXMAAAsTAAALEwEAmpwYAAAATUlEQVQI142LMRKAIAzA+v8vqkOFylmBUh2kDiqrk+Ry2QLDOCHOvMWUckuWIs2iuh+/QgiL956InHPMq5nVel5mTwfAURBRVe073B281dKs2izZeiYAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Just In Time Configuration&quot; title=&quot;Just In Time Configuration&quot; src=&quot;/static/e1ebb028d9c04e987d0741765fcf16d9/6d370/jit_configuration.png&quot; srcSet=&quot;/static/e1ebb028d9c04e987d0741765fcf16d9/c5084/jit_configuration.png 148w,/static/e1ebb028d9c04e987d0741765fcf16d9/60cc9/jit_configuration.png 295w,/static/e1ebb028d9c04e987d0741765fcf16d9/6d370/jit_configuration.png 590w,/static/e1ebb028d9c04e987d0741765fcf16d9/540ae/jit_configuration.png 885w,/static/e1ebb028d9c04e987d0741765fcf16d9/2561a/jit_configuration.png 1180w,/static/e1ebb028d9c04e987d0741765fcf16d9/f97d7/jit_configuration.png 2000w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;and &lt;strong class=&quot;css-0&quot;&gt;Save&lt;/strong&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Given below is a full-snap of the &lt;code class=&quot;css-0&quot;&gt;KeycloakIDP&lt;/code&gt; configurations in the WSO2 Identity Server as Key Manager 😍&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/8f8dd2deceba3d3bdfe66e1bfc4cbef6/3643c/identity_provider_configurations.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:187.16216216216216%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAlCAIAAADNzV5SAAAACXBIWXMAAAsTAAALEwEAmpwYAAAEYUlEQVRIx41VW0/cRhj1T66Q+tInSqU8Vq146VPTQhGBhkRRUiBV1TRqmkRpKRAIIbtcdn0bj8eX8W08vm7P2EACLE1GR2Z2PMff7Xwf2q0vPrv97a1vvvz83uJ3O3893nr6y7utp1NxtPv8+PULPIfbfw63nw13nmmPft0I0kzIsmpayvyAx3U7Keu2qNqynhR1WzWTHmWDE4VuP8E17dXWyzTPmqqqyiIXmcxFU9dJHBLbCoMA6E6quirrqjqH2uNQe/73iyTPqrIEvSiKtm0nk4kQGXEc3w/iJKnrenLD0v7d/SdKk7IocUkIkec5NoXMPQ8xBCHnSZriu9PJT35/LGSO17CZqZU2TVMWMgAz5FEcgwyPppN/WvwBN8IwhE0pJdid/5IxxqNIyqKL4wa3l5YWHC8wiQsabPaneS4oZa7rwTYSVNdIolrt5S9pDx6sIaAavLYJAo84VhSFacJ55EdR0IPzAD/xjGOeZrFCGok80xYWFgllpmkmSeL5VNePGbMzwYPQCTnNZVyU6RmKBJBniH2facurS2HMA99HVuBhV61JKpKjka4bNhzIMlEUZaHK0fTANVQWGdV+vr8iIA9UqOmUUpZdnYVN7D55CDWKIrhGKcUJLkBLCNDzQV5bziQuC1xCtvFJlTCReZ6XdCtFiKocvH91sVAg7e7d5ULZK2GCEMMwjk1rZNsj2zo1AVM9DfOEkDFjFnXNDpZDDUJMbfXeHQlZq4Crk9Pj/YM9w9Rtx7QcQl2HeZQxqp4edZlzDuyJh4StrN3JiryQUlVTLVVJJGxsWHBV5AK1RThQWtO/Vj/zApHnubZ6f0U2XdtUFXKLGBXiOEB3hjzs4HuoBtqr6CEypEimaap9/+NtwgLLtpEV0xwPBm/G4yOX2cyzXWah5qzbez5hHmB3IN2Jqz18+Ah+9v54njnWDwxrwLxRkpIODhCnJE6IyF2Rsx6ZQBZsbWNjoydjiQztVU/aSdF3FY+jKEab1hUk0FzpCiWSD8ldM5/VGV2FnjQojGTn99sPcZVcdjns1JJjkhCHWo6LTr3eT1MsS5Rbyr4lCdgOiuwhs1OHwTWylP09kaXQmmlaLvMuBttHyJ3hHD/x1w9RaTWK+lb5JMtdzPhK7kMZoRq+qD8Or8/Aq2SEl3bj7rxUkBymZ4JziPAjZBiBNtGXKJUanVHMuTrDPADQmz36veuy92RkxSZHg+HW6emuaR0E4Sjk45CPFMJRcBl+cEJd44yMOEEeG3vbO78dn75y6D7zDng0DPlgGoZBeOiy8SUyDL7e/8Mwd5L0hEdH/wN8wmX6JbdHo72d3SeH715S960CuwmHjvuGOKfvydAgJsnh4YGujzA9KIU6bwRx0Jjswm2l3iDwLct2XRcvkWXIA5K7+DdyZalJsr6+jh3u9SN2OBzoug6FgCzUyJgOiB8i0DY3N3u38XQohZ4pdfECQze+ecGMsjwzMzM/P/91t2ZnZ+fm5r765PUfaBUAnmIBAikAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Complete Identity Provider Configurations&quot; title=&quot;Complete Identity Provider Configurations&quot; src=&quot;/static/8f8dd2deceba3d3bdfe66e1bfc4cbef6/6d370/identity_provider_configurations.png&quot; srcSet=&quot;/static/8f8dd2deceba3d3bdfe66e1bfc4cbef6/c5084/identity_provider_configurations.png 148w,/static/8f8dd2deceba3d3bdfe66e1bfc4cbef6/60cc9/identity_provider_configurations.png 295w,/static/8f8dd2deceba3d3bdfe66e1bfc4cbef6/6d370/identity_provider_configurations.png 590w,/static/8f8dd2deceba3d3bdfe66e1bfc4cbef6/540ae/identity_provider_configurations.png 885w,/static/8f8dd2deceba3d3bdfe66e1bfc4cbef6/2561a/identity_provider_configurations.png 1180w,/static/8f8dd2deceba3d3bdfe66e1bfc4cbef6/3643c/identity_provider_configurations.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;br/&gt;&lt;h3 id=&quot;Registering-a-Service-Provider&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Registering-a-Service-Provider&quot; aria-label=&quot;Registering a Service Provider permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Registering a Service Provider&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Since we are focusing on configuring the SSO flow for the API Store portal of the API Manager server, we will be creating and registering a Service Provider in the WSO2 Identity Server as Key Manager.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Log-in to the Carbon Management console of the WSO2 IS KM Server and click on the &lt;strong class=&quot;css-0&quot;&gt;Add&lt;/strong&gt; under the &lt;strong class=&quot;css-0&quot;&gt;Service Provider&lt;/strong&gt; section.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Enter the following in the initial screen&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Service Provider Name: &lt;code class=&quot;css-0&quot;&gt;API_STORE&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Description: &lt;code class=&quot;css-0&quot;&gt;A Service Provider for API Store&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;and click on &lt;strong class=&quot;css-0&quot;&gt;Register&lt;/strong&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/8da28f6837471bb6779da0429894fbd6/3643c/add_new_service_provider.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:38.513513513513516%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAIAAAB2/0i6AAAACXBIWXMAAAsTAAALEwEAmpwYAAABE0lEQVQY04WPOUoEQRSG6whGbmfwBIbCYOwBzExNRjAxE0QQBU0MDTzCBCYeQANFHEEEB5R2HLqqW7u27qqu1WfPuIDLfPxB1f/eFzx0vL50tDy3sTi7Mj/Rbs2sLky2W9Nr75kaG3S4v3uws7W3vXl60rm7uepenl9fnPVuu4PH3vPD/f9BTEkuVYjRh1gwUSqtjbM+eGjGBeX8Rek6BG+tfRrgJEmklM4580H9EzMKYiUFzTkLJSE4TVOQKWMFpYxzeHDO5R+gPsFZRmtjhr7WOoYgOE8xBhNQSoUQ3DfgGxtQP81xVlnrvXewBzNoVSUJIXmeCSHKsqyq6tO0zepIppS8FhRKGOCG5oqv1SHuN94A58KdcynOGo4AAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Add New Service Provider&quot; title=&quot;Add New Service Provider&quot; src=&quot;/static/8da28f6837471bb6779da0429894fbd6/6d370/add_new_service_provider.png&quot; srcSet=&quot;/static/8da28f6837471bb6779da0429894fbd6/c5084/add_new_service_provider.png 148w,/static/8da28f6837471bb6779da0429894fbd6/60cc9/add_new_service_provider.png 295w,/static/8da28f6837471bb6779da0429894fbd6/6d370/add_new_service_provider.png 590w,/static/8da28f6837471bb6779da0429894fbd6/540ae/add_new_service_provider.png 885w,/static/8da28f6837471bb6779da0429894fbd6/2561a/add_new_service_provider.png 1180w,/static/8da28f6837471bb6779da0429894fbd6/3643c/add_new_service_provider.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;
On the next screen, expand the &lt;strong class=&quot;css-0&quot;&gt;Claim Configuration&lt;/strong&gt; accordion and a custom claim mapping for the Display Name as follows&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;preferred_username&lt;/code&gt; : &lt;code class=&quot;css-0&quot;&gt;http://wso2.org/claims/displayName&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/10712b5a0a4b6ff3203e96da280a0973/3643c/sp_claim_configuration.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:25.675675675675674%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAIAAADKYVtkAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAkUlEQVQY042P2w7CIBBE+f/fxCix3HbZtlgoONLU+GCM52Eys5tlgrLWaq2tdUTsHJTmD2T+hdoOSvEsgXhd19baPoDpvbcBYq31rW1sVR3A3afpcr0RJ2JOIs55YwyGIUaUhMhYwfBLhWLMj00how0N3rsQwrIsMsvRuZ/v9m9grHLOOC6lMOO/hOOUEmL/gyfARSJMVysphgAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;API_STORE SP Claim Configuration&quot; title=&quot;API_STORE SP Claim Configuration&quot; src=&quot;/static/10712b5a0a4b6ff3203e96da280a0973/6d370/sp_claim_configuration.png&quot; srcSet=&quot;/static/10712b5a0a4b6ff3203e96da280a0973/c5084/sp_claim_configuration.png 148w,/static/10712b5a0a4b6ff3203e96da280a0973/60cc9/sp_claim_configuration.png 295w,/static/10712b5a0a4b6ff3203e96da280a0973/6d370/sp_claim_configuration.png 590w,/static/10712b5a0a4b6ff3203e96da280a0973/540ae/sp_claim_configuration.png 885w,/static/10712b5a0a4b6ff3203e96da280a0973/2561a/sp_claim_configuration.png 1180w,/static/10712b5a0a4b6ff3203e96da280a0973/3643c/sp_claim_configuration.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Then, expand the &lt;strong class=&quot;css-0&quot;&gt;Inbound Authentication Configuration &amp;gt; OAuth/OpenID Connect Configuration&lt;/strong&gt; and register a provider. On the following screen input the following&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;? The following callback URL is the OIDC ACS URL of the API Store&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Callback URL: &lt;code class=&quot;css-0&quot;&gt;https:/localhost:9443/store/jagg/jaggery_oidc_acs.jag&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;and &lt;strong class=&quot;css-0&quot;&gt;Register&lt;/strong&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/4c05ec209d6bda33e22da68dabee2716/3643c/openid_connect_configuration.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:98.64864864864865%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsTAAALEwEAmpwYAAACGklEQVQ4y5VTy27TQBT1PyCxg7IsK4S64QPYsUEqbIAFD/EB/AASElSiEi0PsWOHVNRNG8ekThBkWRaFiocQYhMpCYqMjR0/ZzyeGYdjD0GmOI04uopkZ84959y51h7dPPPsxtLKuaO3zh65s7xw+/yxlYsnUHeXj9+7sFCt+5cWV6+cXL28uHbt9Pr1pQdXT2mPnzxttV9tN4wvX79ZP9zvI8vzAz+IMy5ZJqqFN5nIUSnjKcvwRnu7t0s5y/NcSOE4ju/7jDFCSBiG2d9g01LgnGvvPuzFlAgu8DCZQkoZBAF+J7MBPe39p/04BZkLIUgJ9cd4PI7jeA754+d9PwqLBELkJZSy67rwP4fcfdOmjCkmSZKMMdXC8zy3BMKrjjXkjY3ntmNblhXHkes6o9EIaaMowuTAh/NZyQuyYWz7MXG8gGcMTXq93nA4HAwG0JyfudPZYflEyDyXMgqDnyUwLYgnSVK9ghryi81NLEa/3w+jyLZtyMJwmqaUUqRVw59JbrYaMU2gg5lBCoGhpmYmS6hzMzKbepIW14tzUFNuWTnz6rl68stWI6G/yfAJ/7BdLOP0zg6zDTLjxa4e2DBYgJE5A2uaOj4MljJFVqcVGY9pCXT510JJ3tEJo1hP0HBJ4MA/GsFLWgEvl/8AtC1jK6A0SQhCKtofyApEHTTdaGZyQgg9/AOshba2/vB1t9vptE3T1P8TvwA6jEy6abxmiQAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;SP OpenID Connect Configuration&quot; title=&quot;SP OpenID Connect Configuration&quot; src=&quot;/static/4c05ec209d6bda33e22da68dabee2716/6d370/openid_connect_configuration.png&quot; srcSet=&quot;/static/4c05ec209d6bda33e22da68dabee2716/c5084/openid_connect_configuration.png 148w,/static/4c05ec209d6bda33e22da68dabee2716/60cc9/openid_connect_configuration.png 295w,/static/4c05ec209d6bda33e22da68dabee2716/6d370/openid_connect_configuration.png 590w,/static/4c05ec209d6bda33e22da68dabee2716/540ae/openid_connect_configuration.png 885w,/static/4c05ec209d6bda33e22da68dabee2716/2561a/openid_connect_configuration.png 1180w,/static/4c05ec209d6bda33e22da68dabee2716/3643c/openid_connect_configuration.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Copy and make a note of the generated &lt;em class=&quot;css-0&quot;&gt;Client ID&lt;/em&gt; and the &lt;em class=&quot;css-0&quot;&gt;Client Secret&lt;/em&gt; to configure the Store Site JSON in the API Manager server.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Expand the &lt;strong class=&quot;css-0&quot;&gt;Local &amp;amp; Outbound Authentication Configuration&lt;/strong&gt; and select the &lt;strong class=&quot;css-0&quot;&gt;Federated Authentication&lt;/strong&gt; as the &lt;code class=&quot;css-0&quot;&gt;KeycloakIDP&lt;/code&gt; we have registered earlier and click on Update to update the configuration of the Service Provider.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/499ef4254caf4a078be515ccf183694c/3643c/outbound_authentication_configuration.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:24.324324324324326%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAIAAADKYVtkAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAZklEQVQY05XNUQ6AIAwDUO5/S0IcBiE6cDoNbKInwJd+9KepsdYCwATgnEPEUkrOb0YY/Vx33XIhOnpH3DodYFJKRIR5X3E/+RbR1lqtdWgcPt7DEgLzqSo6zMyzjzH2c2YW+bHsHmTZJBFlyflFAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;SP Outbound Authentication Configuration&quot; title=&quot;SP Outbound Authentication Configuration&quot; src=&quot;/static/499ef4254caf4a078be515ccf183694c/6d370/outbound_authentication_configuration.png&quot; srcSet=&quot;/static/499ef4254caf4a078be515ccf183694c/c5084/outbound_authentication_configuration.png 148w,/static/499ef4254caf4a078be515ccf183694c/60cc9/outbound_authentication_configuration.png 295w,/static/499ef4254caf4a078be515ccf183694c/6d370/outbound_authentication_configuration.png 590w,/static/499ef4254caf4a078be515ccf183694c/540ae/outbound_authentication_configuration.png 885w,/static/499ef4254caf4a078be515ccf183694c/2561a/outbound_authentication_configuration.png 1180w,/static/499ef4254caf4a078be515ccf183694c/3643c/outbound_authentication_configuration.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Given below is a full-snap of the &lt;code class=&quot;css-0&quot;&gt;API_STORE&lt;/code&gt; SP configuration in the WSO2 Identity Server as Key Manager 😍😍&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/4f0efe22d21fcc73645f6747345dbf0d/3643c/service_provider_configurations.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:122.2972972972973%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAYCAIAAAB1KUohAAAACXBIWXMAAAsTAAALEwEAmpwYAAADM0lEQVQ4y41US3PURhDWT84ll1xcuXAmB7YMh4AXXF4bDEUBdopDEgrKTiV2zJrFj13vQ4ve0jz0HD1GUj5JxklRtitdX3WNuvub6e7pkXLnh+8e/nTn7o/fP3+yOtx7e/juzfnhu3GLq0WHi+H+9Hj/Yrg3OXo/Ofow+fhBefN2l0VxkuZFWdkeJcyXVZ3LKi2qTNYZdAdZ5WUFO1CUdV7WCFP+PPwjEnFZFEWeiSSGKmURR4FtWZQSzlmSxEIkqRCyKL4ih0aYsvfXfijiIs9Bz7IMuq5r7OR5HmMsz3MYq6qqrxPl7+GBH4V5S46iqCPj0/f9OI5h7VBIeQ35t19/iVMBL7ZHNPhSSuRJkTRlQRCGYRTCGket91/gAOXJ40d+ECBD+ChjhBA42miUikrTNM2Abt1+NhYIQpT19T6arJkOPoQQZVlGSeRR9CnpcoPlvzXjs0sTAcrLl9uoUpYVrMgE1iCKTNtFvtgOinOfMY4WIBqHclwA52EY+H6g9PuPEappGoqDG7uiNMabPiM9KUu0AEmC1qXQZQGNupSNrXUWcDQHbpTdXhiWAm4pCxDqG6RJ++mLzSTPUpGCNpvNx+OLyWRqGJZtu4BlOTfB84jydHsjTrFLgvTU5fjk7OD07FBdnhC29KhKqOq1oGxJaAsGI1wLx9WVZ882MsxXnoOMm7Jsg3EShjwRIece4x4WgMM8ykkQ+X7oQwcRdVxb2Xo+SDHWTW+k7Syns5GmTQjRfN9k3KBM576JteniWI1Q3SU6tEdUy9GUze1BnAn0COTZ4nj46fez8f7p+Z66PLKcz6Y9Mq0GtvPZsjuMYDesY8OcKlsvNnEJErMr5XyBhp2r6lxdzg1Td13HdW2ng/MtCPGUnx89NJGKbuDev96BQH1Zfjntt13Vq1evu6GDNG+BUow6YTxtX+LVYHwjl+Td3d0rchAEIOORYARx5i0Tcg3Z9zljFBMt2gmrb5WGvLOz0/46GrmYnn0aHZycfhxPRl/0qW7Ob4JmzExTuzxZtj8KTTdm88VCXZqmhcrxlG4CCmtOXllZGQwGa2tr/f5ar3ev1+s9eHB/9f7q/5F/AL1LJuNa0ZSwAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;API_STORE Service Provider Configurations&quot; title=&quot;API_STORE Service Provider Configurations&quot; src=&quot;/static/4f0efe22d21fcc73645f6747345dbf0d/6d370/service_provider_configurations.png&quot; srcSet=&quot;/static/4f0efe22d21fcc73645f6747345dbf0d/c5084/service_provider_configurations.png 148w,/static/4f0efe22d21fcc73645f6747345dbf0d/60cc9/service_provider_configurations.png 295w,/static/4f0efe22d21fcc73645f6747345dbf0d/6d370/service_provider_configurations.png 590w,/static/4f0efe22d21fcc73645f6747345dbf0d/540ae/service_provider_configurations.png 885w,/static/4f0efe22d21fcc73645f6747345dbf0d/2561a/service_provider_configurations.png 1180w,/static/4f0efe22d21fcc73645f6747345dbf0d/3643c/service_provider_configurations.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;And we are done with the configurations on the WSO2 Identity Server as Key Manager 😎🙂&lt;/p&gt;&lt;br/&gt;&lt;h2 id=&quot;WSO2-API-Manager&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#WSO2-API-Manager&quot; aria-label=&quot;WSO2 API Manager permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;WSO2 API Manager&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;Now we are in the last tier of our guide. In this section, we will be configuring the site.json of the Store node to initiate the SSO flow with the WSO2 Identity Server as Key Manager and then to Federate the flow with the Keycloak server.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;WSO2 API Manager is running on the same server with the default port offset of 0&lt;/p&gt;&lt;/blockquote&gt;&lt;h3 id=&quot;API-Store-Site-JSON&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#API-Store-Site-JSON&quot; aria-label=&quot;API Store Site JSON permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;API Store Site JSON&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Open-up the WSO2 API Manager’s directory and move to &lt;code class=&quot;css-0&quot;&gt;&amp;lt;apim&amp;gt;/repository/deployment/server/jaggeryapps/store/site/conf&lt;/code&gt; and open the &lt;code class=&quot;css-0&quot;&gt;site.json&lt;/code&gt; to edit and configure the required params.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Given below is a complete segment of the OIDC Configuration model in the &lt;code class=&quot;css-0&quot;&gt;site.json&lt;/code&gt;. You can refer to the following object to configure your site.json in your environment&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;Replace the &lt;code class=&quot;css-0&quot;&gt;Client ID&lt;/code&gt; and &lt;code class=&quot;css-0&quot;&gt;Client Secret&lt;/code&gt; with the credentials acquired from the &lt;code class=&quot;css-0&quot;&gt;API_STORE&lt;/code&gt; Service Provider&lt;/p&gt;&lt;/blockquote&gt;&lt;pre class=&quot;prism-code language-json&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;oidcConfiguration&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;enabled&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;issuer&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;API_STORE&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;identityProviderURI&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;https://localhost:9444/oauth2/token&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;authorizationEndpointURI&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;https://localhost:9444/oauth2/authorize&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;tokenEndpointURI&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;https://localhost:9444/oauth2/token&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;userInfoURI&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;https://localhost:9444/oauth2/userinfo&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;jwksURI&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;https://localhost:9444/oauth2/jwks&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;logoutEndpointURI&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;https://localhost:9444/oidc/logout&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;authHttpMethod&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;POST&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;clientConfiguration&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;clientId&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;{{Client ID}}&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;clientSecret&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;{{Client Secret}}&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;responseType&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;code&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;authorizationType&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;authorization_code&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;scope&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;phone email address openid profile&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;redirectURI&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;https://localhost:9443/store/jagg/jaggery_oidc_acs.jag&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;postLogoutRedirectURI&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;https://localhost:9443/store/&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;clientAlgorithm&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;RS256&amp;quot;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;h2 id=&quot;-Voila-&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-Voila-&quot; aria-label=&quot; Voila  permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;🎉 Voila!!! 🎉&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;We have successfully configured Single Sign-On with OpenID Connect between WSO2 API Manager and Keycloak. Next, we will be doing a small test drive…&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;👏 👌 👏&lt;/p&gt;&lt;h3 id=&quot;Test-Drive&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Test-Drive&quot; aria-label=&quot;Test Drive permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Test Drive&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Direct to the Store portal using &lt;code class=&quot;css-0&quot;&gt;https://localhost:9443/store/&lt;/code&gt; and click on Sign-In.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;You will be redirected to the Keycloak’s login page to perform SSO. Enter the credentials of our Keycloak User and then allow the attributes on the consent screen to continue with the federation and provision of the Keycloak users to the WSO2 IS KM and API Manager.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;Login to the Carbon Management console of either the WSO2 API Manager or the WSO2 Identity Server as Key Manager and list the Users. &lt;br/&gt;
If the Federation is successful and JIT Provisioned performed without any errors, then you will be able to see our Keycloak User in the prompted list.&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;strong class=&quot;css-0&quot;&gt;Happy Stacking !!!!&lt;/strong&gt; 🤘 ✌️&lt;/p&gt;</content:encoded></item><item><title><![CDATA[WSO2 API Manager & OAuth2 Protected Endpoint]]></title><link>https://stackcheats.github.io/wso2-api-manager-oauth2-protected-endpoint/content/</link><guid isPermaLink="false">https://stackcheats.github.io/wso2-api-manager-oauth2-protected-endpoint/content/</guid><pubDate>Sun, 29 Mar 2020 00:00:00 GMT</pubDate><content:encoded>&lt;style data-emotion-css=&quot;sa2dbt&quot;&gt;body{color:text;background-color:var(--theme-ui-colors-background,#fff);}&lt;/style&gt;&lt;style data-emotion-css=&quot;0&quot;&gt;&lt;/style&gt;&lt;h2 id=&quot;Intro&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Intro&quot; aria-label=&quot;Intro permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Intro&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;As out-of-the-box 📦, the WSO2 API Manager supports Basic Auth and Digest Auth Protocol protected APIs and Backend services to integrate through. But, what if we have an OAuth2 Protected service and want to integrate and expose the service through API Manager? 🤔🤔🤔&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;In this medium, we will be going through a couple of custom mediation sequence and custom mediator implementations to fulfill our requirements on integrating OAuth2 protected APIs and Backends.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;WSO2 Products, to be more specific the underlying Carbon Kernal platform provides extension points to plug and play custom sequences and mediation implementations to achieve customize requirements. We will be going through a custom mediation sequence and a custom mediator implementation today to achieve our requirements.&lt;/p&gt;&lt;h2 id=&quot;Custom-Mediation-Sequence&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Custom-Mediation-Sequence&quot; aria-label=&quot;Custom Mediation Sequence permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Custom Mediation Sequence&lt;/h2&gt;&lt;h3 id=&quot;Simple-Mediation-Sequence&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Simple-Mediation-Sequence&quot; aria-label=&quot;Simple Mediation Sequence permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Simple Mediation Sequence&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;We can make use of the Synapse engine and the Synapse mediation sequences in WSO2 API Manager to achieve our ultimate requirement. Given below is a sample mediation in-sequence developed to call the respective OAuth2 token endpoint and use the generated Bearer Token to access the Backend.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;Please note that the below-given Synapse mediation sequence is a sample and it needs some tweaks to make it work with other customized use-cases&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;div id=&quot;gist101929428&quot; class=&quot;gist css-0&quot;&gt;
    &lt;div class=&quot;gist-file css-0&quot;&gt;
      &lt;div class=&quot;gist-data css-0&quot;&gt;
        &lt;div class=&quot;js-gist-file-update-container js-task-list-container file-box css-0&quot;&gt;
  &lt;div id=&quot;file-oauth2-sequence-xml&quot; class=&quot;file my-2 css-0&quot;&gt;
    
  &lt;div itemProp=&quot;text&quot; class=&quot;Box-body p-0 blob-wrapper data type-xml css-0&quot;&gt;

      
&lt;div class=&quot;js-check-bidi js-blob-code-container blob-code-content css-0&quot;&gt;

  &lt;template class=&quot;js-file-alert-template&quot;&gt;&lt;/template&gt;&lt;template class=&quot;js-line-alert-template&quot;&gt;&lt;/template&gt;

  &lt;table class=&quot;highlight tab-size js-file-line-container js-code-nav-container js-tagsearch-file css-0&quot; data-tab-size=&quot;8&quot; data-paste-markdown-skip=&quot;&quot; data-tagsearch-lang=&quot;XML&quot; data-tagsearch-path=&quot;oauth2-sequence.xml&quot;&gt;
        &lt;tbody&gt;&lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-L1&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;1&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-LC1&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&amp;lt;?&lt;span class=&quot;pl-ent&quot;&gt;xml&lt;/span&gt;&lt;span class=&quot;pl-e&quot;&gt; version&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;1.0&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pl-e&quot;&gt; encoding&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;UTF-8&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;?&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-L2&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;2&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-LC2&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;sequence&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;name&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;oauth2-sequence&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;xmlns&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;http://ws.apache.org/ns/synapse&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-L3&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;3&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-LC3&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&amp;lt;!--&lt;/span&gt; token generation to the oauth server&amp;#x27;s token endpoint &lt;span class=&quot;pl-c&quot;&gt;--&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-L4&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;4&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-LC4&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&amp;lt;!--&lt;/span&gt; add the base64 encoded credentials &lt;span class=&quot;pl-c&quot;&gt;--&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-L5&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;5&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-LC5&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;property&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;name&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;client-authorization-header&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;scope&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;default&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;type&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;STRING&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;value&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;MDZsZ3BTMnh0enRhOXBsaXZGUzliMnk4aEZFYTpmdE4yWTdLcnE2SWRsenBmZ1RuTVU1bkxjUFFh&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; /&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-L6&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;6&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-LC6&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;property&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;name&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;request-body&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;expression&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;json-eval($)&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;scope&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;default&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;type&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;STRING&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; /&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-L7&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;7&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-LC7&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;property&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;name&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;resource&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;expression&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;get-property(&amp;#x27;axis2&amp;#x27;, &amp;#x27;REST_URL_POSTFIX&amp;#x27;)&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;scope&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;default&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;type&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;STRING&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; /&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-L8&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;8&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-LC8&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-L9&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;9&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-LC9&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&amp;lt;!--&lt;/span&gt; creating a request payload for client_credentials &lt;span class=&quot;pl-c&quot;&gt;--&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-L10&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;10&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-LC10&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;payloadFactory&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;media-type&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;xml&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-L11&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;11&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-LC11&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;        &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;format&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-L12&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;12&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-LC12&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;            &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;soapenv&lt;/span&gt;&lt;span class=&quot;pl-ent&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;pl-ent&quot;&gt;Envelope&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;xmlns&lt;/span&gt;&lt;span class=&quot;pl-e&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;pl-e&quot;&gt;soapenv&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;http://schemas.xmlsoap.org/soap/envelope/&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-L13&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;13&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-LC13&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;                &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;soapenv&lt;/span&gt;&lt;span class=&quot;pl-ent&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;pl-ent&quot;&gt;Body&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-L14&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;14&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-LC14&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;                    &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;root&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;xmlns&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-L15&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;15&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-LC15&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;                        &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;grant_type&lt;/span&gt;&amp;gt;client_credentials&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;grant_type&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-L16&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;16&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-LC16&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;                    &amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;root&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-L17&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;17&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-LC17&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;                &amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;soapenv&lt;/span&gt;&lt;span class=&quot;pl-ent&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;pl-ent&quot;&gt;Body&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-L18&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;18&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-LC18&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;            &amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;soapenv&lt;/span&gt;&lt;span class=&quot;pl-ent&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;pl-ent&quot;&gt;Envelope&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-L19&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;19&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-LC19&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;        &amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;format&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-L20&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;20&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-LC20&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;        &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;args&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;args&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-L21&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;21&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-LC21&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;payloadFactory&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-L22&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;22&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-LC22&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-L23&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;23&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-LC23&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&amp;lt;!--&lt;/span&gt; set related headers to call the token endpoint &lt;span class=&quot;pl-c&quot;&gt;--&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-L24&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;24&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-LC24&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;header&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;name&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;Authorization&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;expression&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;fn:concat(&amp;#x27;Basic &amp;#x27;, get-property(&amp;#x27;client-authorization-header&amp;#x27;))&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;scope&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;transport&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; /&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-L25&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;25&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-LC25&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;header&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;name&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;Content-Type&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;value&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;application/x-www-form-urlencoded&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;scope&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;transport&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; /&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-L26&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;26&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-LC26&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;property&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;name&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;messageType&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;value&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;application/x-www-form-urlencoded&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;scope&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;axis2&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;type&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;STRING&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; /&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-L27&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;27&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-LC27&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;property&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;name&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;REST_URL_POSTFIX&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;value&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;scope&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;axis2&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;type&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;STRING&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; /&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-L28&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;28&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-LC28&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-L29&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;29&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-LC29&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&amp;lt;!--&lt;/span&gt; change the token endpoint &lt;span class=&quot;pl-c&quot;&gt;--&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-L30&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;30&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-LC30&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;call&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;blocking&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;true&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-L31&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;31&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-LC31&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;        &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;endpoint&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-L32&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;32&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-LC32&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;            &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;http&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;method&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;POST&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;uri-template&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;https://localhost:9443/oauth2/token&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; /&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-L33&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;33&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-LC33&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;        &amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;endpoint&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-L34&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;34&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-LC34&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;call&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-L35&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;35&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-LC35&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-L36&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;36&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-LC36&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&amp;lt;!--&lt;/span&gt; append the acquired access token and make the call to the backend service &lt;span class=&quot;pl-c&quot;&gt;--&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-L37&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;37&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-LC37&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;property&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;name&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;bearer-token&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;expression&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;json-eval($.access_token)&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;scope&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;default&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;type&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;STRING&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; /&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-L38&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;38&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-LC38&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;property&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;name&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;REST_URL_POSTFIX&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;expression&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;get-property(&amp;#x27;resource&amp;#x27;)&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;scope&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;axis2&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;type&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;STRING&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; /&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-L39&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;39&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-LC39&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;header&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;name&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;Authorization&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;expression&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;fn:concat(&amp;#x27;Bearer &amp;#x27;, get-property(&amp;#x27;bearer-token&amp;#x27;))&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;scope&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;transport&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; /&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-L40&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;40&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-LC40&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;payloadFactory&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;media-type&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;json&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-L41&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;41&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-LC41&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;        &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;format&lt;/span&gt;&amp;gt;$1&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;format&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-L42&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;42&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-LC42&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;        &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;args&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-L43&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;43&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-LC43&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;            &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;arg&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;evaluator&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;xml&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;expression&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;get-property(&amp;#x27;request-body&amp;#x27;)&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; /&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-L44&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;44&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-LC44&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;        &amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;args&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-L45&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;45&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-LC45&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;payloadFactory&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-L46&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;46&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-sequence-xml-LC46&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;sequence&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
  &lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;


  &lt;/div&gt;

  &lt;/div&gt;&lt;/div&gt;

      &lt;/div&gt;
      &lt;div class=&quot;gist-meta css-0&quot;&gt;
        &lt;a href=&quot;https://gist.github.com/athiththan11/3173086e7f30110424bf1aafbfdfb4b7/raw/7af3d835d70789ca648f6805afe4c613ed5ec42d/oauth2-sequence.xml&quot; style=&quot;css-float:right&quot; class=&quot;css-0&quot;&gt;view raw&lt;/a&gt;
        &lt;a href=&quot;https://gist.github.com/athiththan11/3173086e7f30110424bf1aafbfdfb4b7#file-oauth2-sequence-xml&quot; class=&quot;css-0&quot;&gt;
          oauth2-sequence.xml
        &lt;/a&gt;
        hosted with ❤ by &lt;a href=&quot;https://github.com&quot; class=&quot;css-0&quot;&gt;GitHub&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;&lt;/div&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Now you have given us a sample mediation sequence to call the token endpoint and then to invoke the actual endpoint. But wait ✋, I noticed that the mediation is going to perform a Token call each and every time, and that is going to be an extra call for the API Manager.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Hmmm … 🙄🤔&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Yes true, as per the sample mediation, yes, it will perform Token call each and every time. Well, we can minimize that by storing the acquired access token and the validity period in a temporary location (probably a Registry location) and make use of it.&lt;/p&gt;&lt;h2 id=&quot;Enhanced-Mediation-Sequence-with-Registry-Access&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Enhanced-Mediation-Sequence-with-Registry-Access&quot; aria-label=&quot;Enhanced Mediation Sequence with Registry Access permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;🚧Enhanced Mediation Sequence with Registry Access&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;Given-below is an enhanced sample mediation sequence to store and retrieve the access token and the generated time from a custom Registry location and based on the validity to perform the Token call. 👌&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;If you are willing to continue with the enhanced mediation sequence, then it is required to create the necessary Registry resource in the API Manager server prior to the usage for a flawless experience.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;I will be creating the following two Registry resources in a custom Governance Registry location&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;access_token&lt;/code&gt; : To store the acquired Access Token&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;generated_time&lt;/code&gt; : To store the Generated time of the Access token&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;You can create the necessary Registry collections and resources by navigating to the &lt;strong class=&quot;css-0&quot;&gt;Carbon Management Console &amp;gt; Browse &amp;gt; Registry &amp;gt; _system &amp;gt; governance &lt;/strong&gt; and add a registry collection named &lt;code class=&quot;css-0&quot;&gt;oauth_endpoint&lt;/code&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;After successfully creating the Registry collection (&lt;code class=&quot;css-0&quot;&gt;oauth_endpoint&lt;/code&gt;), create the above-mentioned two registry resources with the following content&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;access_token&lt;/code&gt; : Leave the content as empty&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;generated_time&lt;/code&gt; : 0 (this is because we will be referring to this as Long type)&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;div id=&quot;gist101932239&quot; class=&quot;gist css-0&quot;&gt;
    &lt;div class=&quot;gist-file css-0&quot;&gt;
      &lt;div class=&quot;gist-data css-0&quot;&gt;
        &lt;div class=&quot;js-gist-file-update-container js-task-list-container file-box css-0&quot;&gt;
  &lt;div id=&quot;file-oauth2-enhanced-sequence-xml&quot; class=&quot;file my-2 css-0&quot;&gt;
    
  &lt;div itemProp=&quot;text&quot; class=&quot;Box-body p-0 blob-wrapper data type-xml css-0&quot;&gt;

      
&lt;div class=&quot;js-check-bidi js-blob-code-container blob-code-content css-0&quot;&gt;

  &lt;template class=&quot;js-file-alert-template&quot;&gt;&lt;/template&gt;&lt;template class=&quot;js-line-alert-template&quot;&gt;&lt;/template&gt;

  &lt;table class=&quot;highlight tab-size js-file-line-container js-code-nav-container js-tagsearch-file css-0&quot; data-tab-size=&quot;8&quot; data-paste-markdown-skip=&quot;&quot; data-tagsearch-lang=&quot;XML&quot; data-tagsearch-path=&quot;oauth2-enhanced-sequence.xml&quot;&gt;
        &lt;tbody&gt;&lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L1&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;1&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC1&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&amp;lt;?&lt;span class=&quot;pl-ent&quot;&gt;xml&lt;/span&gt;&lt;span class=&quot;pl-e&quot;&gt; version&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;1.0&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pl-e&quot;&gt; encoding&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;UTF-8&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;?&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L2&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;2&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC2&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;sequence&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;name&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;oauth2-enhanced-sequence&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;xmlns&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;http://ws.apache.org/ns/synapse&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L3&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;3&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC3&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&amp;lt;!--&lt;/span&gt; retreiving the access token and the generated time if exists in the registry location &lt;span class=&quot;pl-c&quot;&gt;--&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L4&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;4&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC4&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;property&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;name&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;stored-token&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;expression&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;get-property(&amp;#x27;registry&amp;#x27;, &amp;#x27;gov:/oauth_endpoint/access_token&amp;#x27;)&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;scope&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;default&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;type&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;STRING&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; /&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L5&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;5&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC5&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;property&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;name&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;generated-time&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;expression&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;get-property(&amp;#x27;registry&amp;#x27;, &amp;#x27;gov:/oauth_endpoint/generated_time&amp;#x27;)&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;scope&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;default&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;type&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;LONG&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; /&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L6&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;6&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC6&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L7&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;7&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC7&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&amp;lt;!--&lt;/span&gt; token generation to the oauth server&amp;#x27;s token endpoint &lt;span class=&quot;pl-c&quot;&gt;--&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L8&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;8&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC8&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&amp;lt;!--&lt;/span&gt; add the base64 encoded credentials &lt;span class=&quot;pl-c&quot;&gt;--&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L9&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;9&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC9&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;property&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;name&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;client-authorization-header&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;scope&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;default&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;type&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;STRING&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;value&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;MDZsZ3BTMnh0enRhOXBsaXZGUzliMnk4aEZFYTpmdE4yWTdLcnE2SWRsenBmZ1RuTVU1bkxjUFFh&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; /&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L10&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;10&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC10&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;property&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;name&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;request-body&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;expression&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;json-eval($)&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;scope&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;default&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;type&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;STRING&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; /&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L11&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;11&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC11&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;property&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;name&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;resource&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;expression&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;get-property(&amp;#x27;axis2&amp;#x27;, &amp;#x27;REST_URL_POSTFIX&amp;#x27;)&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;scope&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;default&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;type&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;STRING&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; /&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L12&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;12&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC12&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L13&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;13&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC13&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&amp;lt;!--&lt;/span&gt; enhanced to perform subtract function &lt;span class=&quot;pl-c&quot;&gt;--&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L14&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;14&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC14&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;property&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;name&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;CURRENT_SYSTEM_TIME&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;expression&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;get-property(&amp;#x27;SYSTEM_TIME&amp;#x27;)&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;type&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;STRING&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; /&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L15&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;15&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC15&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;property&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;name&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;token_generated_time&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;expression&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;get-property(&amp;#x27;generated-time&amp;#x27;)&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;type&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;STRING&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; /&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L16&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;16&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC16&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L17&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;17&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC17&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&amp;lt;!--&lt;/span&gt; filter and based on the validity condition make the token call &lt;span class=&quot;pl-c&quot;&gt;--&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L18&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;18&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC18&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;filter&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;xpath&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;get-property(&amp;#x27;CURRENT_SYSTEM_TIME&amp;#x27;) - get-property(&amp;#x27;token_generated_time&amp;#x27;) &amp;gt; 3600000 or get-property(&amp;#x27;stored-token&amp;#x27;) = &amp;#x27;&amp;#x27;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L19&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;19&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC19&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;        &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;then&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L20&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;20&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC20&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;            &lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&amp;lt;!--&lt;/span&gt; creating a request payload for client_credentials &lt;span class=&quot;pl-c&quot;&gt;--&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L21&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;21&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC21&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;            &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;payloadFactory&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;media-type&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;xml&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L22&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;22&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC22&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;                &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;format&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L23&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;23&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC23&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;                    &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;soapenv&lt;/span&gt;&lt;span class=&quot;pl-ent&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;pl-ent&quot;&gt;Envelope&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;xmlns&lt;/span&gt;&lt;span class=&quot;pl-e&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;pl-e&quot;&gt;soapenv&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;http://schemas.xmlsoap.org/soap/envelope/&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L24&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;24&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC24&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;                        &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;soapenv&lt;/span&gt;&lt;span class=&quot;pl-ent&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;pl-ent&quot;&gt;Body&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L25&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;25&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC25&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;                            &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;root&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;xmlns&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L26&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;26&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC26&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;                                &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;grant_type&lt;/span&gt;&amp;gt;client_credentials&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;grant_type&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L27&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;27&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC27&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;                            &amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;root&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L28&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;28&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC28&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;                        &amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;soapenv&lt;/span&gt;&lt;span class=&quot;pl-ent&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;pl-ent&quot;&gt;Body&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L29&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;29&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC29&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;                    &amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;soapenv&lt;/span&gt;&lt;span class=&quot;pl-ent&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;pl-ent&quot;&gt;Envelope&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L30&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;30&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC30&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;                &amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;format&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L31&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;31&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC31&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;                &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;args&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;args&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L32&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;32&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC32&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;            &amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;payloadFactory&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L33&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;33&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC33&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L34&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;34&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC34&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;            &lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&amp;lt;!--&lt;/span&gt; set related headers to call the token endpoint &lt;span class=&quot;pl-c&quot;&gt;--&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L35&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;35&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC35&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;            &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;header&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;name&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;Authorization&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;expression&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;fn:concat(&amp;#x27;Basic &amp;#x27;, get-property(&amp;#x27;client-authorization-header&amp;#x27;))&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;scope&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;transport&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; /&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L36&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;36&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC36&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;            &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;header&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;name&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;Content-Type&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;value&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;application/x-www-form-urlencoded&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;scope&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;transport&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; /&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L37&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;37&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC37&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;            &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;property&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;name&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;messageType&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;value&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;application/x-www-form-urlencoded&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;scope&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;axis2&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;type&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;STRING&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; /&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L38&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;38&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC38&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;            &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;property&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;name&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;REST_URL_POSTFIX&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;value&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;scope&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;axis2&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;type&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;STRING&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; /&amp;gt; &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L39&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;39&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC39&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L40&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;40&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC40&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;            &lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&amp;lt;!--&lt;/span&gt; change the token endpoint &lt;span class=&quot;pl-c&quot;&gt;--&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L41&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;41&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC41&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;            &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;call&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;blocking&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;true&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L42&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;42&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC42&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;                &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;endpoint&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L43&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;43&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC43&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;                    &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;http&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;method&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;POST&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;uri-template&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;https://localhost:9443/oauth2/token&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; /&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L44&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;44&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC44&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;                &amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;endpoint&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L45&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;45&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC45&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;            &amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;call&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L46&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;46&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC46&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L47&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;47&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC47&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;            &lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&amp;lt;!--&lt;/span&gt; extract the access token from the response &lt;span class=&quot;pl-c&quot;&gt;--&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L48&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;48&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC48&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;            &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;property&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;name&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;bearer-token&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;expression&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;json-eval($.access_token)&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;scope&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;default&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;type&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;STRING&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; /&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L49&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;49&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC49&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L50&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;50&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC50&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;            &lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&amp;lt;!--&lt;/span&gt; store the generated token and the time &lt;span class=&quot;pl-c&quot;&gt;--&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L51&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;51&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC51&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;            &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;property&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;name&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;gov:/oauth_endpoint/access_token&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;expression&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;get-property(&amp;#x27;bearer-token&amp;#x27;)&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;scope&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;registry&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;type&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;STRING&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; /&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L52&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;52&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC52&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;            &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;property&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;name&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;gov:/oauth_endpoint/generated_time&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;expression&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;get-property(&amp;#x27;SYSTEM_TIME&amp;#x27;)&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;scope&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;registry&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;type&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;LONG&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; /&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L53&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;53&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC53&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L54&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;54&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC54&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;            &lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&amp;lt;!--&lt;/span&gt; append the acquired access token and make the call to the backend service &lt;span class=&quot;pl-c&quot;&gt;--&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L55&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;55&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC55&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;            &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;property&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;name&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;REST_URL_POSTFIX&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;expression&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;get-property(&amp;#x27;resource&amp;#x27;)&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;scope&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;axis2&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;type&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;STRING&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; /&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L56&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;56&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC56&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;            &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;header&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;name&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;Authorization&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;expression&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;fn:concat(&amp;#x27;Bearer &amp;#x27;, get-property(&amp;#x27;bearer-token&amp;#x27;))&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;scope&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;transport&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; /&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L57&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;57&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC57&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L58&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;58&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC58&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;            &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;payloadFactory&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;media-type&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;json&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L59&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;59&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC59&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;                &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;format&lt;/span&gt;&amp;gt;$1&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;format&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L60&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;60&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC60&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;                &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;args&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L61&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;61&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC61&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;                    &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;arg&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;evaluator&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;xml&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;expression&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;get-property(&amp;#x27;request-body&amp;#x27;)&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; /&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L62&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;62&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC62&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;                &amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;args&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L63&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;63&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC63&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;            &amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;payloadFactory&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L64&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;64&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC64&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;        &amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;then&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L65&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;65&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC65&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;        &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;else&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L66&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;66&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC66&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;            &lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&amp;lt;!--&lt;/span&gt; the stored access token is still active, so we will be using that to invoke the endpoint &lt;span class=&quot;pl-c&quot;&gt;--&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L67&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;67&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC67&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;            &amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;header&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;expression&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;fn:concat(&amp;#x27;Bearer &amp;#x27;, get-property(&amp;#x27;stored-token&amp;#x27;))&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;name&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;Authorization&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;scope&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;transport&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; /&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L68&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;68&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC68&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;        &amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;else&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L69&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;69&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC69&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;filter&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-L70&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;70&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-oauth2-enhanced-sequence-xml-LC70&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;sequence&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
  &lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;


  &lt;/div&gt;

  &lt;/div&gt;&lt;/div&gt;

      &lt;/div&gt;
      &lt;div class=&quot;gist-meta css-0&quot;&gt;
        &lt;a href=&quot;https://gist.github.com/athiththan11/debc349f8dee97d1b550d22bf8b0b438/raw/4b7e5e8f0a3bcac3c313ec5a512bd88f5da52b35/oauth2-enhanced-sequence.xml&quot; style=&quot;css-float:right&quot; class=&quot;css-0&quot;&gt;view raw&lt;/a&gt;
        &lt;a href=&quot;https://gist.github.com/athiththan11/debc349f8dee97d1b550d22bf8b0b438#file-oauth2-enhanced-sequence-xml&quot; class=&quot;css-0&quot;&gt;
          oauth2-enhanced-sequence.xml
        &lt;/a&gt;
        hosted with ❤ by &lt;a href=&quot;https://github.com&quot; class=&quot;css-0&quot;&gt;GitHub&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;&lt;/div&gt;&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;🚩 Note: &lt;br/&gt;
The above-given mediation sequence needs access to the Registry DB to store and retrieve the access token related data. Therefore, if you are using a Distributed deployment (separate Gateway node), we do not recommend this approach as it is required to configure the GW nodes with the Registry DB which can impact the performance.&lt;/p&gt;&lt;/blockquote&gt;&lt;br/&gt;&lt;h2 id=&quot;Class-Mediator-OAuth-Mediator&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Class-Mediator-OAuth-Mediator&quot; aria-label=&quot;Class Mediator OAuth Mediator permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Class Mediator: OAuth Mediator&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;In this section, we will be looking into a custom class mediator implementation developed especially to cater to the requirement on integrating OAuth2 Protected endpoint with the WSO2 API Manager.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;You can find the complete implementation and the source of the OAuth Mediator (class mediator) in &lt;a href=&quot;https://github.com/athiththan11/wso2-oauth-mediator&quot; class=&quot;css-0&quot;&gt;GitHub&lt;/a&gt;.&lt;/p&gt;&lt;div title=&quot;WSO2 OAuth Mediator&quot; class=&quot;css-0&quot;&gt;&lt;/div&gt;&lt;p class=&quot;css-0&quot;&gt;Clone the project and build it by executing the following command from the root directory of the project&lt;/p&gt;&lt;pre class=&quot;prism-code language-bash&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;mvn clean package&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;Copy and place the built JAR Artifact inside the &lt;code class=&quot;css-0&quot;&gt;&amp;lt;APIM&amp;gt;/repository/components/lib&lt;/code&gt; directory. Then create a JSON file named &lt;code class=&quot;css-0&quot;&gt;wso2-oauth-mediator.json&lt;/code&gt; with the following structure and configure the Authorization server’s Token endpoint and the credentials&lt;/p&gt;&lt;pre class=&quot;prism-code language-json&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;     &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;         &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;id&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;EP1&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;         &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;tokenApiUrl&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;https://localhost:9443/oauth2/token&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;         &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;apiKey&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;1234567890&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;         &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;apiSecret&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;0987654321&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;         &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;username&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;admin&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;         &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;password&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;admin&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;         &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;grantType&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;client_credentials&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;         &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;scope&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;default&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;         &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;tokenRefreshInterval&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token number&quot; style=&quot;color:rgb(181, 206, 168)&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;     &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;Place the &lt;code class=&quot;css-0&quot;&gt;wso2-oauth-mediator.json&lt;/code&gt; inside the &lt;code class=&quot;css-0&quot;&gt;&amp;lt;APIM&amp;gt;/repository/conf&lt;/code&gt; directory and restart the server to take effect on the changes.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;🚀 After a successful restart, create an in-sequence for the protected API and define the class mediator inside the sequence to execute and acquire the token&lt;/p&gt;&lt;pre class=&quot;prism-code language-xml&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;sequence&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;xmlns&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;http://ws.apache.org/ns/synapse&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;oauth-sequence&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;org.wso2.apim.mediators.oauth.OAuthMediator&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;property&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;endpointId&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;value&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;EP1&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;sequence&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;h2 id=&quot;-Voila-&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-Voila-&quot; aria-label=&quot; Voila  permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;🎉 Voila!!! 🎉&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;We have now successfully slid through the approaches on integrating OAuth2 Protected endpoint with the WSO2 API Manager 👏&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;strong class=&quot;css-0&quot;&gt;Happy Stacking !!!&lt;/strong&gt; 🤘 ✌️&lt;/p&gt;&lt;div title=&quot;WSO2 OAuth Mediator&quot; class=&quot;css-0&quot;&gt;&lt;/div&gt;</content:encoded></item><item><title><![CDATA[WSO2 API Manager & Okta SAML2 SSO]]></title><link>https://stackcheats.github.io/wso2-api-manager-okta-saml2-sso/content/</link><guid isPermaLink="false">https://stackcheats.github.io/wso2-api-manager-okta-saml2-sso/content/</guid><pubDate>Sun, 19 Jan 2020 00:00:00 GMT</pubDate><content:encoded>&lt;style data-emotion-css=&quot;sa2dbt&quot;&gt;body{color:text;background-color:var(--theme-ui-colors-background,#fff);}&lt;/style&gt;&lt;style data-emotion-css=&quot;0&quot;&gt;&lt;/style&gt;&lt;h2 id=&quot;Greetings-Everyone-&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Greetings-Everyone-&quot; aria-label=&quot;Greetings Everyone  permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Greetings Everyone! 👋&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;In this medium, I will be 🚶with you all on how to configure SAML2 SSO (Single-Sign-On) between Okta Cloud Identity Provider 🔒 and WSO2 API Manager.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;The demonstrations are made using WSO2 API Manager v2.6 and WSO2 Identity Server as Key Manager v5.7 &lt;br/&gt;
Sensitive data are masked in all attached screenshots [Therefore, don’t waste your time investigating 🕵 blank spaces]&lt;/p&gt;&lt;/blockquote&gt;&lt;h2 id=&quot;-Configuring-Okta&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-Configuring-Okta&quot; aria-label=&quot; Configuring Okta permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;🔐 Configuring Okta&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;We’ll start the demo by setting up the Okta and creating a SAML2 Provider.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;We need an Okta account to continue. So, go to the Okta Developer portal, and sign-up for a developer account (it’s FREE 🎉 🙌 👌) if you don’t have one. After a successful creation and verification, log-in to your developer account and follow me …&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Change the appearance of the Developer Console to Classic UI&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/84280421c9a5adf6c77b0ebc3dac086d/3643c/okta_classic_ui.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:18.91891891891892%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAECAIAAAABPYjBAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAtElEQVQI12Nomrigpnduw4QFdX3zGyYutPRP1LQP1nYMUbTwVbIEIQhDEYyULHw0Lf20LQOULHwVLHwYlq5cM3/xssXLVy5ZsRqIzJ09lQ3MNUxsVAws1I2tNU1tVQwttczsNIyt1YyttExs2m1CFznFm+laSusYM6zdtHXd5m1rNm4BIiB72+59O/ce2AFEe/YjEEgEwti/f9/Bg/sO7QSLM/z8+fP3r59///z+9+/vfxIBAOf7jYnE6UK9AAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Okta Classic UI&quot; title=&quot;Okta Classic UI&quot; src=&quot;/static/84280421c9a5adf6c77b0ebc3dac086d/6d370/okta_classic_ui.png&quot; srcSet=&quot;/static/84280421c9a5adf6c77b0ebc3dac086d/c5084/okta_classic_ui.png 148w,/static/84280421c9a5adf6c77b0ebc3dac086d/60cc9/okta_classic_ui.png 295w,/static/84280421c9a5adf6c77b0ebc3dac086d/6d370/okta_classic_ui.png 590w,/static/84280421c9a5adf6c77b0ebc3dac086d/540ae/okta_classic_ui.png 885w,/static/84280421c9a5adf6c77b0ebc3dac086d/2561a/okta_classic_ui.png 1180w,/static/84280421c9a5adf6c77b0ebc3dac086d/3643c/okta_classic_ui.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Next, select the &lt;code class=&quot;css-0&quot;&gt;Add Application&lt;/code&gt; as shown below&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/25ae39936946c5022db19f9cbba565fa/3643c/okta_add_application.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:31.756756756756754%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAIAAABM9SnKAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAp0lEQVQY022P4QrDIAyEff9n7C8pY1C7aU01Wq27mckG6ydEornkoiKz9z6EkFLKneMK/CKiLMYoNYhKBLXWE6dTOni01qI0dUQzz7PW2iyLMYaZFepaa2drnJMMlxdE5xwR5cFRiqd9te7pvCfC8F9x/hdv2/ZdhzkRMazvEb7hUR39etseSCp78oeIBvtjvU3TonV2tnVUHZRBvQJN4eBuw0oJiYhf/theKatSN3YAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Okta Add Application&quot; title=&quot;Okta Add Application&quot; src=&quot;/static/25ae39936946c5022db19f9cbba565fa/6d370/okta_add_application.png&quot; srcSet=&quot;/static/25ae39936946c5022db19f9cbba565fa/c5084/okta_add_application.png 148w,/static/25ae39936946c5022db19f9cbba565fa/60cc9/okta_add_application.png 295w,/static/25ae39936946c5022db19f9cbba565fa/6d370/okta_add_application.png 590w,/static/25ae39936946c5022db19f9cbba565fa/540ae/okta_add_application.png 885w,/static/25ae39936946c5022db19f9cbba565fa/2561a/okta_add_application.png 1180w,/static/25ae39936946c5022db19f9cbba565fa/3643c/okta_add_application.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Select the &lt;code class=&quot;css-0&quot;&gt;Create New App&lt;/code&gt; in the displayed UI, and select &lt;code class=&quot;css-0&quot;&gt;SAML 2.0&lt;/code&gt; and click on &lt;code class=&quot;css-0&quot;&gt;Create&lt;/code&gt; as following&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/397421ad93610bbe57fa96cfac88f415/64756/okta_create_application.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:64.86486486486486%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAIAAAAmMtkJAAAACXBIWXMAAAsTAAALEwEAmpwYAAABYklEQVQoz41Ry07CQBTt5+jCxJi48BE/yfgCEo0moh9iEBFXulURTEh0oaEFjNElrlosfbfT6RDxlLYDRTSe3Lk5uXPPfcwI83u3a8f3S4fV1XxtJV8DXwY/Csniwd1M9no2N2kIzu3eLOxXhM2imD1v7ZSa22dSptTMxETKlVu4Wi80ptrGqbhVFAUWUMexfUKCgAaUwjMc6ruuC9JnI0PmGA9NIITIsmxZFmOMJkCw2+3Cg/sJUI6mISCKJM/zHMfh0TDV81zHjfTjCIaIxZApiqKqKjw0cWefKOqnIsumaXppoD98LMZhCUblaYAM04LWNAzDHQKjcTIS81HHOTRYu9fraZqG4f0fSIknFkP5SAmP/rZt41G5jyafLuZvzrtwSz0Y+R2REAT/OugPQmNf/ApesP4EBsanPX+8F6RquV2/en3EzAjiCnv9S/zUeTtpVC7a9cuXB2yMZ9B1HVW+AWqOuHC4C7o3AAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Okta Create New Application&quot; title=&quot;Okta Create New Application&quot; src=&quot;/static/397421ad93610bbe57fa96cfac88f415/6d370/okta_create_application.png&quot; srcSet=&quot;/static/397421ad93610bbe57fa96cfac88f415/c5084/okta_create_application.png 148w,/static/397421ad93610bbe57fa96cfac88f415/60cc9/okta_create_application.png 295w,/static/397421ad93610bbe57fa96cfac88f415/6d370/okta_create_application.png 590w,/static/397421ad93610bbe57fa96cfac88f415/540ae/okta_create_application.png 885w,/static/397421ad93610bbe57fa96cfac88f415/2561a/okta_create_application.png 1180w,/static/397421ad93610bbe57fa96cfac88f415/64756/okta_create_application.png 1200w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Prompt the following in the next screen (which will a step-progress form)&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;App Name: &lt;code class=&quot;css-0&quot;&gt;OktaSAMLApplication&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Single Sign-On URL: &lt;code class=&quot;css-0&quot;&gt;https://localhost:9444/commonauth&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Audience URI: &lt;code class=&quot;css-0&quot;&gt;OktaSAML&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;img src=&quot;/4f504e0de60e7eca1463ae46ece32a9b/okta_saml_application_creation.gif&quot; alt=&quot;Okta SAML Application Creation&quot; class=&quot;css-0&quot;/&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Now go to the &lt;code class=&quot;css-0&quot;&gt;Assignments&lt;/code&gt; tab and click on &lt;code class=&quot;css-0&quot;&gt;Assign&lt;/code&gt; to assign people and groups to the created SAML2 Provider.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;strong class=&quot;css-0&quot;&gt;Tip:&lt;/strong&gt; &lt;br/&gt;
Assign the default profile to continue with the demo. If you don’t assign any people or group of people (Everyone), then at the point of SSO execution, Okta will throw an Error message&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;Go back to the &lt;code class=&quot;css-0&quot;&gt;Sign On&lt;/code&gt; tab and select &lt;code class=&quot;css-0&quot;&gt;View Setup Instructions&lt;/code&gt; as follows to download the Okta’s public Certificate and Metadata to configure Identity Provider in the WSO2 Identity Server.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/f550210a7226a30271d14c9d00f25f63/3643c/okta_saml2_metadata.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:89.1891891891892%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAIAAADUsmlHAAAACXBIWXMAAAsTAAALEwEAmpwYAAABtklEQVQ4y41Tu3LbMBDkH+cLXLnMuHeb2n+UwvGMbYWyCBzeDwEQswBIirFdaAViBBCL27tbDjHGaZqEEPZmOOeMMSAOIYTjODLGrDH6ZhARiEPO2XgnnOFGam/TOZ2/IK5jj5RSJZMUJ84wGOdSCLlCKSXa0hoNWc4a7PTIEL+QsZBCKlmPQo9YQe134oKUIW1JWed9WFHJeHANrkQN/Aq3g7JeaCeNwwxqbLiSQ8Bpi/3ckP4HNsoyrq/AR9oDMm+UopVCwsH7+QaAUMkpF6f/BPua8qVGqfeU1ILkHT7JWSLnMsuXB/P+qIWzxLySljh63p2wtwQCXlb06ypZPN+bl58aThkPdPxL4yGwqZ8opfQZy29k58tMv3/o5ztDkY1H+vjgx5MV5FtXMPfa9i5ACGg7cpnV2y8zPoU0uxD9ObmYfIhbq3rnthaCAxU98wHapc/MRWEVWYUw59bJT7WpJm1/upClz9WeBGdOnPjEGIzVX3dvQmdcsfGBKxnuhSvRZPi0FxaonpXStLJv2D7JLq06DBE45z1mD4sZGfav4mr1FRC1kPPOD1ue4G9F+haIjzP/ADCWDWNNF2AqAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Okta SAML2 Metadata&quot; title=&quot;Okta SAML2 Metadata&quot; src=&quot;/static/f550210a7226a30271d14c9d00f25f63/6d370/okta_saml2_metadata.png&quot; srcSet=&quot;/static/f550210a7226a30271d14c9d00f25f63/c5084/okta_saml2_metadata.png 148w,/static/f550210a7226a30271d14c9d00f25f63/60cc9/okta_saml2_metadata.png 295w,/static/f550210a7226a30271d14c9d00f25f63/6d370/okta_saml2_metadata.png 590w,/static/f550210a7226a30271d14c9d00f25f63/540ae/okta_saml2_metadata.png 885w,/static/f550210a7226a30271d14c9d00f25f63/2561a/okta_saml2_metadata.png 1180w,/static/f550210a7226a30271d14c9d00f25f63/3643c/okta_saml2_metadata.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Scroll down to the bottom, and you’ll find a &lt;code class=&quot;css-0&quot;&gt;Download Certificate&lt;/code&gt; button and a section named &lt;code class=&quot;css-0&quot;&gt;Optional&lt;/code&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Download and save them both in your environment for future references …&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;Note:&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Configure Okta User Profile with Roles and add the &lt;code class=&quot;css-0&quot;&gt;Subscriber&lt;/code&gt; role. You can follow &lt;a href=&quot;https://medium.com/@athiththan11/wso2-api-manager-okta-sso-f04e9c6141e1&quot; class=&quot;css-0&quot;&gt;WSO2 API Manager &amp;amp; Okta SSO&lt;/a&gt; to configure &lt;code class=&quot;css-0&quot;&gt;Roles&lt;/code&gt; attribute. &lt;br/&gt;
Or, scroll to the very bottom (this article) to find the instructions …&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;😐 😐 🤐&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;Another Note: &lt;br/&gt;
If you want to change the &lt;code class=&quot;css-0&quot;&gt;Username&lt;/code&gt; pattern of the Okta User, refer &lt;code class=&quot;css-0&quot;&gt;Okta Username Format&lt;/code&gt; section in &lt;a href=&quot;https://medium.com/@athiththan11/wso2-api-manager-okta-sso-f04e9c6141e1&quot; class=&quot;css-0&quot;&gt;here&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;We are done with Okta&lt;/p&gt;&lt;h2 id=&quot;WSO2-Server-Configurations-&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#WSO2-Server-Configurations-&quot; aria-label=&quot;WSO2 Server Configurations  permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;WSO2 Server Configurations 🛠&lt;/h2&gt;&lt;h3 id=&quot;WSO2-API-Manager--IS-Key-Manager&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#WSO2-API-Manager--IS-Key-Manager&quot; aria-label=&quot;WSO2 API Manager  IS Key Manager permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;WSO2 API Manager &amp;amp; IS Key Manager&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;To get a fully-fledged SAML2 SSO experience, and User Provisioning features, we need to configure WSO2 Identity Server as Key Manager with the WSO2 API Manager.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;You can follow up on this official Doc to configure WSO2 API Manager &amp;amp; IS Key Manager.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;But, if you are too lazy to follow up on the docs (no hard feelings though), then I have a little SURPRISE for you …&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;May I introduce you to the one and only “Hydrogen CLI”, an interactive CLI tool to configure WSO2 Servers&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;Clone or download the latest release and fire up configuring WSO2 API Manager with WSO2 Identity Server as Key Manager.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;Brief instructions on how to use hydrogen is given at the tail of this article&lt;/p&gt;&lt;/blockquote&gt;&lt;h2 id=&quot;Identity-Provider-Configurations&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Identity-Provider-Configurations&quot; aria-label=&quot;Identity Provider Configurations permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Identity Provider Configurations&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;I hope you all are good to continue the demo with a working environment… Yes ??? 🤔&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;If all are good, then we are good to go …&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Fire up the WSO2 IS as Key Manager and navigate to the Carbon management console [https://localhost:9444/carbon]&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;I assume that you have configured port offset 0 to WSO2 API Manager &amp;amp; offset 1 to IS KM&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;Go to &lt;code class=&quot;css-0&quot;&gt;Main &amp;gt; Identity &amp;gt; Identity Providers &amp;gt; Add&lt;/code&gt; and enter the following to create an Identity Provider in the IS KM for our Okta Cloud IdP&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Identity Provider Name: &lt;code class=&quot;css-0&quot;&gt;OktaSAMLIDP&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Display Name &amp;amp; Description&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Alias: &lt;code class=&quot;css-0&quot;&gt;https://localhost:9444/oauth2/token&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/e94c3cc589bec4f1790b54e4055022e9/3643c/add_idp_configuration.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:36.486486486486484%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAIAAACHqfpvAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAlUlEQVQY042QWw6FIAxE2f9KRbhRkHdbdIjm/hlsmqZpepgpqrVWaz17F2FrrfMeGUI8P4QCzMzoUD1INzKl9AmGLKSJCNLe7ds2EnzOufc+gbEEQeiLiBsB2+44AsQxmcCllBgjKouY326szbkIy1T2uRkB20xkzLosWusVHwbZez4uenlI/TtswGoIMJwfiOjm3+ALasScDq+MFZMAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Add IDP Configuration&quot; title=&quot;Add IDP Configuration&quot; src=&quot;/static/e94c3cc589bec4f1790b54e4055022e9/6d370/add_idp_configuration.png&quot; srcSet=&quot;/static/e94c3cc589bec4f1790b54e4055022e9/c5084/add_idp_configuration.png 148w,/static/e94c3cc589bec4f1790b54e4055022e9/60cc9/add_idp_configuration.png 295w,/static/e94c3cc589bec4f1790b54e4055022e9/6d370/add_idp_configuration.png 590w,/static/e94c3cc589bec4f1790b54e4055022e9/540ae/add_idp_configuration.png 885w,/static/e94c3cc589bec4f1790b54e4055022e9/2561a/add_idp_configuration.png 1180w,/static/e94c3cc589bec4f1790b54e4055022e9/3643c/add_idp_configuration.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Expand the &lt;code class=&quot;css-0&quot;&gt;Federated Authenticators&lt;/code&gt; and expand the &lt;code class=&quot;css-0&quot;&gt;SAML2 Web SSO Configuration&lt;/code&gt; accordion to register a SAML IDP.&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Enable SAML2 Web SSO: &lt;code class=&quot;css-0&quot;&gt;true&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Service Provider Entity ID: &lt;code class=&quot;css-0&quot;&gt;OktaSAML&lt;/code&gt; (which is the same value given when creating a SAML application in Okta)&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;Select the &lt;code class=&quot;css-0&quot;&gt;Metadata File Configuration&lt;/code&gt; for the &lt;code class=&quot;css-0&quot;&gt;Select Mode&lt;/code&gt; and upload the downloaded Okta metadata and click &lt;code class=&quot;css-0&quot;&gt;Register&lt;/code&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/69a9ca58e46156debb83368b4a0c35ab/3643c/federated_authenticator_configurations.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:33.108108108108105%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAIAAACHqfpvAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAqElEQVQY05WQ3QrCMAyF+/4vJ4h4M/HG/bdp0sV1zdY6I16LevgghwOHhJjT6XA+H2/11drW2ubNONaKGufaT4y2NoguRl43uc9M5JCACJhJQ5FYyvqJnMUsS9q2bd/3QIQUponDxCnJ/oO0vLzm4+HBdV0/DLbteucgpaTpl3Ip5e1ivCN6CwE8hkA55++bvTYQAUBPEJEkevKvMlV1aRr9qmPm+U89AcbdkvWghZFFAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Federated Authenticator Configurations&quot; title=&quot;Federated Authenticator Configurations&quot; src=&quot;/static/69a9ca58e46156debb83368b4a0c35ab/6d370/federated_authenticator_configurations.png&quot; srcSet=&quot;/static/69a9ca58e46156debb83368b4a0c35ab/c5084/federated_authenticator_configurations.png 148w,/static/69a9ca58e46156debb83368b4a0c35ab/60cc9/federated_authenticator_configurations.png 295w,/static/69a9ca58e46156debb83368b4a0c35ab/6d370/federated_authenticator_configurations.png 590w,/static/69a9ca58e46156debb83368b4a0c35ab/540ae/federated_authenticator_configurations.png 885w,/static/69a9ca58e46156debb83368b4a0c35ab/2561a/federated_authenticator_configurations.png 1180w,/static/69a9ca58e46156debb83368b4a0c35ab/3643c/federated_authenticator_configurations.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;After making the above-changes as the last step, expand the &lt;code class=&quot;css-0&quot;&gt;Just-In-Time Provisioning&lt;/code&gt; and select and mark the &lt;code class=&quot;css-0&quot;&gt;Always provision to User Store Domain&lt;/code&gt; to &lt;code class=&quot;css-0&quot;&gt;PRIMARY&lt;/code&gt; and make &lt;code class=&quot;css-0&quot;&gt;Provision Silently&lt;/code&gt; and Save.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;strong class=&quot;css-0&quot;&gt;Ohh, wait I forgot one thing…&lt;/strong&gt; 😱😱😱&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;If we are doing User Provisioning then we have to map the Roles and Claims. Go back again to the Identity Provider Configurations [So sorry for that 😢] and expand the &lt;code class=&quot;css-0&quot;&gt;Claim Configurations &amp;gt; Basic Claim Configuration&lt;/code&gt; and &lt;code class=&quot;css-0&quot;&gt;Define a Custom Claim Dialect&lt;/code&gt;&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;roles&lt;/code&gt; : &lt;code class=&quot;css-0&quot;&gt;http://wso2.org/claims/role&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;Next, expand the &lt;code class=&quot;css-0&quot;&gt;Role Configurations&lt;/code&gt; and &lt;code class=&quot;css-0&quot;&gt;Add Role Mapping&lt;/code&gt;&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;subscriber&lt;/code&gt; : &lt;code class=&quot;css-0&quot;&gt;Internal/subscriber&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/231b03a7f89d64b0d991d62de54471b1/3643c/claim_role_configurations.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:52.70270270270271%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABdElEQVQoz3WRWXODIBSF/f+/ru1LpzFWY0CWKItEBJfYg2a6PPTMN8wF7oXLIauq4lycpGRK3ZS+ad1q0yLudtT/dKrNCCnqOgd+1M6huAGIY7QhmPGJ3vmemhBt17Gs73tr+2Hw27YRQYuK1oRZa8MY53ne/pfWJtu2xyHMxU00XHAhDap7O3hv+76+1kIIY4y73xPDYLRSquuUypA2juNxmOBNWZZSyvt9OIQansS89/M8TVNMxDGEoJRG226enu1JwfK8aChDSwa3mx5jSpiXtP14sne5peKqei/L91P+hoDzT8aKhp0JPVGaU3rGSGjOeMGw9QtkVpeP7PXtBZTVZ329XEh9pZTgak4bRmlDAAJCr7/B4hFk+/P83smDt/xChWwV7AohrusDDcc4Leu6LD/EacaIgmxNWmDFsiywSgrhnPPwMAQs4mBCCAwIMbmUjIqxuzHTu1SMf4aTSIoh+MHhTsilz7e7aUk49+8fH5ZtXyHWa+w/exeNAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Claim &amp;amp; Role Configurations&quot; title=&quot;Claim &amp;amp; Role Configurations&quot; src=&quot;/static/231b03a7f89d64b0d991d62de54471b1/6d370/claim_role_configurations.png&quot; srcSet=&quot;/static/231b03a7f89d64b0d991d62de54471b1/c5084/claim_role_configurations.png 148w,/static/231b03a7f89d64b0d991d62de54471b1/60cc9/claim_role_configurations.png 295w,/static/231b03a7f89d64b0d991d62de54471b1/6d370/claim_role_configurations.png 590w,/static/231b03a7f89d64b0d991d62de54471b1/540ae/claim_role_configurations.png 885w,/static/231b03a7f89d64b0d991d62de54471b1/2561a/claim_role_configurations.png 1180w,/static/231b03a7f89d64b0d991d62de54471b1/3643c/claim_role_configurations.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Again I made your life easy with the following screenshot… I hope you have the same thing as mine or maybe more enhanced … 😏&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/e143333a7450241bcfdd2c43bcee0a86/3643c/okta_saml_idp_configurations.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:258.78378378378375%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAA0CAIAAAAFR49sAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFtElEQVRIx41W3W4TRxTet+ANitQrVKk/6gP0ok9QpF60pWrv+wqtVG5KW3rTiwqo1EoBCtwQIiFAQRApQUAgFKjjOPbGa3v/Z3b2Z2Z2vd5+M9M4cYiTHh2N1rtz/r9zjq0fzrz/65l3v/34xDcfnTj76dvffXLy+9Mnz55+a5bx5uS5z06d++Kdc5+f+vmrD85//eFPX75n/Xj+l9t3l28u3f6ntUVoRpKsqptx3dSTZmy4birN492zrCbgajyxHq4+KCdVg0vjcRAEURTxomAswQOllBCapmkxS5zjSiGltFYfr7IiH1dVWZZCCKhomibP0+FoFMVxkjC8b+aQtfb0ESuyqqwghnuTyQRvOc9Hrut6PiFECGleHiL85OkaTRl8gDCcyfO8ApUSnsMsTfBRfT1cePHmDS4F7kPYBAM7pRSIGQFzLozew4UvXvzN8/3RaMQYg3CWZbjNi9xxHMjDETiAXJRlJRRJaBOKVXasv65dTrmMUaFqLzEqel6MpRRZKpBOKco8lzyXRSHyTCI4RrkQ1o0b1/i40fkC1UZYcB6FcRjGaZrBJlRJIUtZjivt/6RBaACCden3S/3hsNvt0iSB+91u2/MGjIWE+IqpZuLHxIvVzyBhEZipk1hXr1+GN3mW13Udx8Fw2I9jvxDMD90gdIVEOAhPIIl1jcyp52osmqYKo8C6em0h40oYCa81KZAUWQ/+uD5Ahpwh55QmClpCgBXEuAjDEAlbyIUCHSIWqi6ljrmwbTsIQkjiE6Di9B0o0vEDBIhfhlGshOW4NAhLEkJpXBRZQqNOpz0Y9MPQN4xPMGkYaIAC3/esK9cvFwrUCift9qv19bVWa8Peabvezsi1h6PuYLiteLDddzrOLvedrcHARsKu8ErWulQKj5Qhdpax/tDzA9UYnKvqIuCCC8O5ClqiitafV/6gBU/TXGqQVmN1FDz3fI+hGXFL4l6K9OjYoBkozk1nWgsLC1mee54HeAKkjtP3PDeKAoQExrPrjnDiGd09ZUIJwGstLS0pPAJc9QTwsO32aGTTxE8YkoQTqAjwk6Xhfk6z0PUH1q1btyBsiqx8EcDDpKokiVVXoUimSU39DZn2VpaNsLZcq9oLoKcB8jEKQngfhOiqKeaPEp627m4/q8DiOD7Qz3OFYdw8hFGIWZIxZloXnk+H0Vxh8wHjKAqDJI5pHENdqekYYSTMDFopeKpmmCK8UYjXsxX2DxfGK9xDtfVUqBBvjHRTNbfNhDsqZrxCVaBe+y+QJ5WrmBiNOKfycy3juvJT8CxVPjP2n/cYjKbgc2PGN50enAXQCXyi2uhog5CJprmWIQwfc9U1uQKwJjgCm6kmM/3nIgz38IBpCS16m6HICptmuM61bIQNSATPkSqmSQUipYn2GJCY3QmDKBPkk12EHd8YuKcnIZwskWaYRZKNuv2Lcm6pkCHdgBXDRKKQT8x+nqZ6ruW9tSY5pgcGC3RxPYkMTWt2iPBUN2Y7OhmMjtyfqmMsI0IVeZ6ZXWE27v5sHdVVIL0TuYG2wQli2f/n4KgxpP4iFLlqjCgy8IbG/1sqGIZppNr0o9Ab7HhhgwV8Qv9iN+pFobgsVSlRQcP4iWtI54zwcLS12X7c6Tyz7ReE9CjtUX3GcY/EXUL2mNKu6/ZmhPvOi40Xd1ubK93eozB8mSSblLYUJ+DN/Zywlud1ZoQd59Wz5/fsnacs7RACyfY8hl7P254RHgxe/v1y2d55AmuEKJvEWKabBzhJWq67a9l0bGf79fPnq69erw9HneEQGxj7fctx2o6z+Qa3nMFszNiIfWcAUGpsRugoTBFAG+k9wMg5hpq1uLio9ktZwnSWpb1uF1sWaxXw0P+ED2JzWmeAd2/F4sSYtnd2PM+HVj2SCs1A+CGshC9cuNDpdDY2NtbX1+/cuXP33r3l5eX79+8/mKGHb/LKysq/33VUxNesUw8AAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Okta SAML IDP Configurations&quot; title=&quot;Okta SAML IDP Configurations&quot; src=&quot;/static/e143333a7450241bcfdd2c43bcee0a86/6d370/okta_saml_idp_configurations.png&quot; srcSet=&quot;/static/e143333a7450241bcfdd2c43bcee0a86/c5084/okta_saml_idp_configurations.png 148w,/static/e143333a7450241bcfdd2c43bcee0a86/60cc9/okta_saml_idp_configurations.png 295w,/static/e143333a7450241bcfdd2c43bcee0a86/6d370/okta_saml_idp_configurations.png 590w,/static/e143333a7450241bcfdd2c43bcee0a86/540ae/okta_saml_idp_configurations.png 885w,/static/e143333a7450241bcfdd2c43bcee0a86/2561a/okta_saml_idp_configurations.png 1180w,/static/e143333a7450241bcfdd2c43bcee0a86/3643c/okta_saml_idp_configurations.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;😫 😓 Let’s meet again after a short commercial break …&lt;/p&gt;&lt;h2 id=&quot;Service-Provider-Configurations&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Service-Provider-Configurations&quot; aria-label=&quot;Service Provider Configurations permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Service Provider Configurations&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;Now, we’ll start configuring a Service Provider for our API Manager.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Direct (again) to the Carbon management console of the WSO2 Identity Server as Key Manager and route to &lt;code class=&quot;css-0&quot;&gt;Main &amp;gt; Identity &amp;gt; Service Providers &amp;gt; Add&lt;/code&gt; to create a Service Provider.&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Service Provider Name: &lt;code class=&quot;css-0&quot;&gt;API_STORE&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;SaaS Application: &lt;code class=&quot;css-0&quot;&gt;true&lt;/code&gt; (enable it after registering the provider)&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/98a434c9dd3d58715f804f3ecd200515/3643c/add_service_provider.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:40.54054054054054%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAIAAAB2/0i6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAs0lEQVQY042Q6Q6DIBCEef93tKFWQDkiyFEOtV2lafxjwpfJJjC77AQ0vUaGiaRSEC6Ycj61C3G1PPBTKjUbE2L0PrQLhZCllNM0vt9hO1i3ZpCQouu6vu/1PGtdSysoxuS9t9bmnEvJnHOtF+e8BVkHz+/7frsZRlJKnxPITOkwDIRSSk6UUuCuF0opMFb7ERyqfW5YFwPJfxhjoDrnygUIWJsBBB0YY8YYGP/bK8cf3vAFAY3M4s5ebJsAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Add Service Provider&quot; title=&quot;Add Service Provider&quot; src=&quot;/static/98a434c9dd3d58715f804f3ecd200515/6d370/add_service_provider.png&quot; srcSet=&quot;/static/98a434c9dd3d58715f804f3ecd200515/c5084/add_service_provider.png 148w,/static/98a434c9dd3d58715f804f3ecd200515/60cc9/add_service_provider.png 295w,/static/98a434c9dd3d58715f804f3ecd200515/6d370/add_service_provider.png 590w,/static/98a434c9dd3d58715f804f3ecd200515/540ae/add_service_provider.png 885w,/static/98a434c9dd3d58715f804f3ecd200515/2561a/add_service_provider.png 1180w,/static/98a434c9dd3d58715f804f3ecd200515/3643c/add_service_provider.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Expand &lt;code class=&quot;css-0&quot;&gt;Inbound Authentication Configuration &amp;gt; SAML2 Web SSO Configuration&lt;/code&gt; and click on &lt;code class=&quot;css-0&quot;&gt;Configure&lt;/code&gt;.&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Issuer: &lt;code class=&quot;css-0&quot;&gt;API_STORE&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Assertion Consumer URLs: &lt;code class=&quot;css-0&quot;&gt;https://localhost:9443/store/jagg/jaggery_acs.jag&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/a36ebd428c2efbf972fb8fbc2709fb52/3643c/register_service_provider.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:95.27027027027027%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAATCAIAAAAf7rriAAAACXBIWXMAAAsTAAALEwEAmpwYAAACK0lEQVQ4y5VSOWtUURh9tZWgYhMrG630H9gKUUEtBK30D9hbRCESDKLzB1JoRGdzJqRKO4LFTJgYmB/gMAt5s7x9uffddzfPy4saMzPEHD4udzuc8y1G4enNjWc31m6ff37r3Mq9yy+WL726e/HlnQsryydj9f7S6wdXVh8urT++tv7k+tqjq8a7t2+2t2qlz5/au01rbB4M+6ODoT0dB57ju/bxCH0vDDysQX70HKPxvUEF10pLKS3b9v2AMpYKwRhPWMqV4lJykYf4HdlRKmW09lpRQnDBgTRNkgQ7rbUQghBCCYnjGAtPGb7rf2E095oBidMUYsKyLMdxGGN4iKKo2+0OBoP+YIC9OsRJ8o/9XT8K08ypsG17PB5TSvAQhuHPQ/T7fYgjKT0DY2dnO+FIRCglXdc1TdNzXa0UyKD1ej2Iw46eB+Pjh42pZZnmCN48zxsOh9BH5pQiaJ7CrOEjcqXyxQ3jqePjHzi+78MFHqTgNEMCz/nNHPJWvZpInaZcZu1hcIuqQwrlDYMAdvKbBbY3N4fmCLnhE2qOFXL4LbNGqrlF/ksu14oRjcGBN9CCIID5PM/jmE+u1ssxoyQmQma2MRizGS4mfy0SllUGPrGi4DCv/w9GtVZMJQaT57ZBhv4fqVNsl+slyrMm5cOMOUGfsckLdopypVYiLMF4osKTyQTMrLnJ0YTwxYCYUd4qJ0pjr88O432h0Gy2Go1v7Xa70+nsnwW/ACMEEsRjwvnnAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Register Service Provider&quot; title=&quot;Register Service Provider&quot; src=&quot;/static/a36ebd428c2efbf972fb8fbc2709fb52/6d370/register_service_provider.png&quot; srcSet=&quot;/static/a36ebd428c2efbf972fb8fbc2709fb52/c5084/register_service_provider.png 148w,/static/a36ebd428c2efbf972fb8fbc2709fb52/60cc9/register_service_provider.png 295w,/static/a36ebd428c2efbf972fb8fbc2709fb52/6d370/register_service_provider.png 590w,/static/a36ebd428c2efbf972fb8fbc2709fb52/540ae/register_service_provider.png 885w,/static/a36ebd428c2efbf972fb8fbc2709fb52/2561a/register_service_provider.png 1180w,/static/a36ebd428c2efbf972fb8fbc2709fb52/3643c/register_service_provider.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Expand &lt;code class=&quot;css-0&quot;&gt;Local &amp;amp; Outbound Authentication Configuration&lt;/code&gt; and do the following …&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Federated Authentication: &lt;code class=&quot;css-0&quot;&gt;OktaSAMLIDP&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Use user store domain in roles: &lt;code class=&quot;css-0&quot;&gt;true&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/1c59233219fa8c84754318bb2b03f84d/3643c/service_provider_configurations.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:97.97297297297297%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsTAAALEwEAmpwYAAACwUlEQVQ4y41TO28TQRBeaIAeClp+AR0VUAAdFPwAOio6JGigiZAQokAUFAgKREGPFPIgGBwlKFGAkBfYZyd3tuO72Hd7d3u753s/bL6zQ4QgAT59Ws/M7ezMzn4mT6+ffnnt1INLR2+cIbfOH7559tDtc2Rf3rlw5O7FY1jHrpy4d/Xk2OXj5NHD+69ePH/25PHH8kxbkZqbFUNrGlpjl+oudbVBd7bNnTbtbI9cQ22SpZXPfpLm/X6WZdS0He4GUeIFkR/GIGwQRpRk8R7TgmmWk/Xquh+FeZanaRpFUZ7nPVc4Du8NgUiSJHEcZznO/x1ko/otiCOUHSVj7ecZ9ic/gU2DA0Aq9e/C62Ez8rEvH1YY/B/I1y+LQRSj7REQCgOfc+77fhiGaLh/MMj4+GvmOIyxIAjQNuoHvi+EC9fz/OERURCEBYK9JUQkjhPydmaKMqFT2/O8qlRbXl6uVKrb7bauG4BuUBhdXQcRGNq7rkEpWVicTwYD3DTPs05XVVVF0xqMdd2exZgOOtzgggrXZI7h8MIA3Z5p2jqZmJjsUrvb7aAyYzZzmHAFF9ztCVSm1EBQwHWFZVEQX2F7nmualEyXpphwkIULa1qlKi0oyrKqrjO2JYQCcg7KoOC/2GJLpzIpz5f8OCpkkKWKsrKxMSsrn2RlqdPdsCzpQNrVjl4n5bmSFwZRWOQ3Gg1ZlltN/OLmml4MppjUvsClSLk8Ew2VNBIJ3hnP4HARJ5Babts2Pu2rEBQjH+ZKMaSZpMUL44l9D5mGhbF50NvwRCin/weRHJHS7LtR21A1Y45l2Rz/CtdN0+zv2iwqv58rQVb9vI/2Op1Wq1XrdFvU1FyX+j6UY+1L37ccbpI30xMWdyk10bFUk1bX1lbXViVJ0nY0VVMPYlttY5ZkcnISo1MUBSOu1er1zU1ZHjqN5j/5A94eMEsRVO/nAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Complete Service Provider Configurations&quot; title=&quot;Complete Service Provider Configurations&quot; src=&quot;/static/1c59233219fa8c84754318bb2b03f84d/6d370/service_provider_configurations.png&quot; srcSet=&quot;/static/1c59233219fa8c84754318bb2b03f84d/c5084/service_provider_configurations.png 148w,/static/1c59233219fa8c84754318bb2b03f84d/60cc9/service_provider_configurations.png 295w,/static/1c59233219fa8c84754318bb2b03f84d/6d370/service_provider_configurations.png 590w,/static/1c59233219fa8c84754318bb2b03f84d/540ae/service_provider_configurations.png 885w,/static/1c59233219fa8c84754318bb2b03f84d/2561a/service_provider_configurations.png 1180w,/static/1c59233219fa8c84754318bb2b03f84d/3643c/service_provider_configurations.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;h2 id=&quot;WSO2-API-Manager--Site-JSON&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#WSO2-API-Manager--Site-JSON&quot; aria-label=&quot;WSO2 API Manager  Site JSON permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;WSO2 API Manager &amp;amp; Site JSON&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;We have come to the last episode of our configurations (a new beginning). With all the above-mentioned guides and configurations, we have successfully created both Identity Provider as well as a Service Provider&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;In this section, we will be configuring the Store node of the WSO2 API Manager to contact the Identity Providers and Service Providers to federate with Okta. Route to &lt;code class=&quot;css-0&quot;&gt;&amp;lt;APIM&amp;gt;/repository/deployment/server/jaggeryapps/store/site/conf&lt;/code&gt; directory and edit the &lt;code class=&quot;css-0&quot;&gt;site.json&lt;/code&gt; file as follows…&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;Replace and configure the &lt;code class=&quot;css-0&quot;&gt;keyStoreName&lt;/code&gt; by pointing to the &lt;strong class=&quot;css-0&quot;&gt;WSO2 Carbon JKS&lt;/strong&gt; of the WSO2 IS KM pack. It has to be an actual path and not a relative path&lt;/p&gt;&lt;/blockquote&gt;&lt;pre class=&quot;prism-code language-json&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;ssoConfiguration&amp;quot;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;enabled&amp;quot;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;issuer&amp;quot;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;API_STORE&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;identityProviderURL&amp;quot;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;https://localhost:9444/samlsso&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;keyStorePassword&amp;quot;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;wso2carbon&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;identityAlias&amp;quot;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;wso2carbon&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;responseSigningEnabled&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;assertionSigningEnabled&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;verifyAssertionValidityPeriod&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;timestampSkewInSeconds&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;300&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;audienceRestrictionsEnabled&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;keyStoreName&amp;quot;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;/Users/foo/wso2is-km-5.7.0/repository/resources/security/wso2carbon.jks&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;passive&amp;quot;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;signRequests&amp;quot;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;assertionEncryptionEnabled&amp;quot;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;false&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;idpInit&amp;quot;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;false&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;idpInitSSOURL&amp;quot;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;https://localhost:9444/samlsso?spEntityID=API_STORE&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;loginUserNameAttribute&amp;quot;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;h2 id=&quot;-Voila-&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-Voila-&quot; aria-label=&quot; Voila  permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;🎉 Voila!!! 🎉&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;We have now successfully configured SAML2 SSO between Okta &amp;amp; WSO2 API Manager [more precisely with the API Store Portal] 👏 👏 👏&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;strong class=&quot;css-0&quot;&gt;Happy Stacking !!!!&lt;/strong&gt; 🤘 ✌️&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Next, we’ll do a simple UAT to verify the reliability …&lt;/p&gt;&lt;h3 id=&quot;User-Acceptance-Testing&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#User-Acceptance-Testing&quot; aria-label=&quot;User Acceptance Testing permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;User Acceptance Testing&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Fire up both the WSO2 API Manager &amp;amp; WSO2 Identity Server as Key Manager and direct to the Store portal [https://localhost:9443/store/] and click on Sign-In.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;You will be redirected to the Okta’s login page to perform SSO with the Okta user. Enter the Okta credentials and then allow the attributes on the consent screen to continue with the federation and provisioning of the Okta users to the WSO2 API Manager &amp;amp; IS Key Manager.&lt;/p&gt;&lt;h2 id=&quot;-Bonus&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-Bonus&quot; aria-label=&quot; Bonus permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;💡 Bonus&lt;/h2&gt;&lt;h3 id=&quot;Hydrogen-&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Hydrogen-&quot; aria-label=&quot;Hydrogen  permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Hydrogen 🔥🔥🔥&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Hydrogen is an interactive CLI tool to configure WSO2 Servers (🚧 under construction &amp;amp; active development).&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;To configure WSO2 API Manager &amp;amp; WSO2 Identity Server as Key Manager, clone or download the hydrogen-cli from here, and follow the given instructions …&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;strong class=&quot;css-0&quot;&gt;Toll-Free Tips:&lt;/strong&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;I would recommend you to use NodeJS v8.9.0 to build the packages without any dependency conflicts &lt;br/&gt;
Please install and start your Docker environment, to create Databases and to persist&lt;/p&gt;&lt;/blockquote&gt;&lt;div title=&quot;Hydrogen&quot; class=&quot;css-0&quot;&gt;&lt;/div&gt;&lt;p class=&quot;css-0&quot;&gt;Download both WSO2 API Manager &amp;amp; WSO2 IS KM packs and unzip and place them inside a new folder (ex: &lt;code class=&quot;css-0&quot;&gt;Setup&lt;/code&gt;)&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Navigate to the &lt;code class=&quot;css-0&quot;&gt;Setup&lt;/code&gt; folder and execute the following command (from inside of the folder) to configure IS KM with API Manager including Database creations and configurations&lt;/p&gt;&lt;pre class=&quot;prism-code language-bash&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;hydrogen distribute:am --is-km --datasource postgres --container --generate&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;This will configure both the WSO2 API Manager &amp;amp; IS KM packs with appropriate configurations. Download and place the Postgre (or relative) JDBC driver in &lt;code class=&quot;css-0&quot;&gt;&amp;lt;APIM&amp;gt;/repository/components/lib&lt;/code&gt; directory and start the servers and continue hacking … 🙌 👌&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;You can find more interesting examples and guides about hydrogen in here as well as from here&lt;/p&gt;&lt;/blockquote&gt;&lt;h3 id=&quot;-Okta-User-Profile--Roles&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-Okta-User-Profile--Roles&quot; aria-label=&quot; Okta User Profile  Roles permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;👨 Okta User Profile &amp;amp; Roles&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;To login to the WSO2 API Manager Store portal, Okta users need to have the &lt;code class=&quot;css-0&quot;&gt;Internal/subscriber&lt;/code&gt; roles assigned to them. As well as the Okta has to pass the assigned Roles with the SAML Assertion response to the WSO2 API Manager at the point of the federation to sign-in the Okta user to the Store portal.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;In the Okta Developer portal (Developer console view and not Classic UI), navigate to &lt;code class=&quot;css-0&quot;&gt;Users &amp;gt; Profile Editor&lt;/code&gt; and select the Okta user profile to edit. On the following, select &lt;code class=&quot;css-0&quot;&gt;Add Attribute&lt;/code&gt; and make the following changes and &lt;code class=&quot;css-0&quot;&gt;Save&lt;/code&gt; the attribute&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/014eebbc726f9f03f74773b72b1258e5/d3b48/role_attribute.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:79.05405405405406%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAIAAACZeshMAAAACXBIWXMAAAsTAAALEwEAmpwYAAABmUlEQVQoz4VSuU7DQBT0r0BBSYP4MJBokBAtNKAUQIdER41RDCJpqEgiIqDIQRBSEhAYX/G1vtY2E6/tGCfAaLR6+/bNO3aXW92+Wd+tr+3UVrauljaE5c2c1YK9mNxBtVe5fj4Uevt8Z+8iI9/Zv+zOtr+QC33iWXpI/TiO4jhMGfnUteKYJluaMgoyT0pON4wvSdYN07IJcVxGbGRFhccmTs5iACNnGIYsy5qmTSYTLwMhBP7gT7iuy5mmqSgKxKqq5mLHcWzbppSyOGb4P5GKJUnSdR3VipXhsSzLTIAukK4kRti0bVEU0TMyFcVoB73gFGKcwsMEZbGUAAZrBit6RkbIEMGSYoUT9d0MUzFC2WBeAeysNOeCCytmYkAcm3Z+yFKBWeXiMUnw/1OxmfHUpXfGbeftuAsJMeLYY+A+imJ0zsS+58dBCEYBxa9N7OkaBpSDhinzVwWsBDDgFTW5Mew1R/2Ht5en99fWqH8/HmDb/Rjik1jskxhzgBMfevA5rtzxR03hrF0/f7w9aQmn7dpxS+A7jW8lRGYRO7e9LgAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Role Attribute - Okta&quot; title=&quot;Role Attribute - Okta&quot; src=&quot;/static/014eebbc726f9f03f74773b72b1258e5/6d370/role_attribute.png&quot; srcSet=&quot;/static/014eebbc726f9f03f74773b72b1258e5/c5084/role_attribute.png 148w,/static/014eebbc726f9f03f74773b72b1258e5/60cc9/role_attribute.png 295w,/static/014eebbc726f9f03f74773b72b1258e5/6d370/role_attribute.png 590w,/static/014eebbc726f9f03f74773b72b1258e5/540ae/role_attribute.png 885w,/static/014eebbc726f9f03f74773b72b1258e5/2561a/role_attribute.png 1180w,/static/014eebbc726f9f03f74773b72b1258e5/d3b48/role_attribute.png 1340w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;After the above, move to &lt;code class=&quot;css-0&quot;&gt;Users &amp;gt; People&lt;/code&gt; and select the current User and on the following screen select the &lt;code class=&quot;css-0&quot;&gt;Profile&lt;/code&gt; tab and click on &lt;code class=&quot;css-0&quot;&gt;Edit&lt;/code&gt; to add the &lt;code class=&quot;css-0&quot;&gt;subscriber&lt;/code&gt; role in the &lt;code class=&quot;css-0&quot;&gt;Roles&lt;/code&gt; field …&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/aa22df772478193d6a2ebbbd1f934933/3643c/roles_attribute_okta_user.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:21.62162162162162%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAECAIAAAABPYjBAAAACXBIWXMAAAsTAAALEwEAmpwYAAAASklEQVQI132OSwrAMAhEc/+buhN/WNNFbQMlCOathmEezBARADCziLg27o/Zk/uhqsxczISIVt+Rm1dGxGK6ez5ad07ynwpdv/MAFDLpNSw/21YAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Roles Attribute - Okta User&quot; title=&quot;Roles Attribute - Okta User&quot; src=&quot;/static/aa22df772478193d6a2ebbbd1f934933/6d370/roles_attribute_okta_user.png&quot; srcSet=&quot;/static/aa22df772478193d6a2ebbbd1f934933/c5084/roles_attribute_okta_user.png 148w,/static/aa22df772478193d6a2ebbbd1f934933/60cc9/roles_attribute_okta_user.png 295w,/static/aa22df772478193d6a2ebbbd1f934933/6d370/roles_attribute_okta_user.png 590w,/static/aa22df772478193d6a2ebbbd1f934933/540ae/roles_attribute_okta_user.png 885w,/static/aa22df772478193d6a2ebbbd1f934933/2561a/roles_attribute_okta_user.png 1180w,/static/aa22df772478193d6a2ebbbd1f934933/3643c/roles_attribute_okta_user.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Even though we have introduced the &lt;code class=&quot;css-0&quot;&gt;Roles&lt;/code&gt; attribute to the Okta Users, still, we are missing one part which is we haven’t configured to add the &lt;code class=&quot;css-0&quot;&gt;Roles&lt;/code&gt; in the SAML Response Assertion&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Switch back to &lt;code class=&quot;css-0&quot;&gt;Classic UI&lt;/code&gt; and navigate to &lt;code class=&quot;css-0&quot;&gt;Applications &amp;gt; Applications&lt;/code&gt; and select and edit [from the &lt;code class=&quot;css-0&quot;&gt;General &amp;gt; SAML Setting&lt;/code&gt;] our SAML2 Application. On the &lt;code class=&quot;css-0&quot;&gt;Configure SAML&lt;/code&gt; screen of the &lt;code class=&quot;css-0&quot;&gt;Progress-Form&lt;/code&gt;, make the following changes and save …&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/8ea34c73818420e28fdc4d122651af34/3643c/roles_saml_settings.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:28.37837837837838%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAIAAABM9SnKAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAn0lEQVQY032O3Q6DIAyFef8HnRcKCP1DysWOLjNzLvvSNPTQ0zawqZiyCqkgswnK7S/aGquptZCprkKISAU5c0Wcfa21L2fv20r6iDVVCTmlDmnr3l1FUoxQSilykHPuaL/5h+9yQJ+7jzGQISzLMk1TrdXMmBlmLPcrUNQMUwIf2FEAbCMiVfzuoERuV17KbsbseZ6x/31SP+/8fP/kCarqWuJHpJUfAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Roles SAML Settings - Okta&quot; title=&quot;Roles SAML Settings - Okta&quot; src=&quot;/static/8ea34c73818420e28fdc4d122651af34/6d370/roles_saml_settings.png&quot; srcSet=&quot;/static/8ea34c73818420e28fdc4d122651af34/c5084/roles_saml_settings.png 148w,/static/8ea34c73818420e28fdc4d122651af34/60cc9/roles_saml_settings.png 295w,/static/8ea34c73818420e28fdc4d122651af34/6d370/roles_saml_settings.png 590w,/static/8ea34c73818420e28fdc4d122651af34/540ae/roles_saml_settings.png 885w,/static/8ea34c73818420e28fdc4d122651af34/2561a/roles_saml_settings.png 1180w,/static/8ea34c73818420e28fdc4d122651af34/3643c/roles_saml_settings.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[WSO2 API Manager & Custom Grant Handler]]></title><link>https://stackcheats.github.io/wso2-api-manager-custom-grant-handler/content/</link><guid isPermaLink="false">https://stackcheats.github.io/wso2-api-manager-custom-grant-handler/content/</guid><pubDate>Sat, 11 Jan 2020 00:00:00 GMT</pubDate><content:encoded>&lt;style data-emotion-css=&quot;sa2dbt&quot;&gt;body{color:text;background-color:var(--theme-ui-colors-background,#fff);}&lt;/style&gt;&lt;style data-emotion-css=&quot;0&quot;&gt;&lt;/style&gt;&lt;h2 id=&quot;Greetings-Everyone-&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Greetings-Everyone-&quot; aria-label=&quot;Greetings Everyone  permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Greetings Everyone! 👋&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;In this medium, I will be 🚶 with you all on how to implement a custom Grant Handler for WSO2 Servers, especially for WSO2 API Manager when you are highly in need to introduce your own …&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;The demonstrations are presented and guided using WSO2 API Manager v2.6&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;Hmmm… alright. But,&lt;/p&gt;&lt;h2 id=&quot;Am-I-in-need-of-one-&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Am-I-in-need-of-one-&quot; aria-label=&quot;Am I in need of one  permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Am I in need of one??? 🤔&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;Depends, maybe Yes, probably you are 💁.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Let me tell you a simple story, where a Goe-Location Startup needed to implement a custom grant to fulfill their security concerns and requirements.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;strong class=&quot;css-0&quot;&gt;Locus&lt;/strong&gt; is a Geo-Location 🌏 service startup and it has been using the WSO2 API Manager to manage all of their exposed REST APIs and legacy SOAP services. Due to the increased demand for Geodata and analytics, one day the Locus team gathered to design a new architecture for their certified devices.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;The 👮 platform security team and a group of Architectures 🤓 proposed Locus to isolate their certified devices from all registered devices by introducing a unique pattern for Access tokens 🔑.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;When further breaking-down the features and analyzing the possibilities of implementing customized Tokens (you can refer to &lt;a href=&quot;https://medium.com/@athiththan11/customizing-opaque-access-token-generation-58ec7e493405&quot; class=&quot;css-0&quot;&gt;Customizing Opaque Access Token Generation&lt;/a&gt;), the devs found out that the WSO2 API Manager has extensions to develop and plug custom grants 🔐 and handlers.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;👏 👏 👏 well-done guys… kudos for the effort and idea.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;They re-engineered their architecture and introduced a custom grant named &lt;code class=&quot;css-0&quot;&gt;locus&lt;/code&gt; with the following required fields to fulfill their requirements&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;strong class=&quot;css-0&quot;&gt;name&lt;/strong&gt;: the unique ID name of the certified device&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;strong class=&quot;css-0&quot;&gt;location&lt;/strong&gt;: a regional code where the device has permissions and its current accessible location&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;strong class=&quot;css-0&quot;&gt;key&lt;/strong&gt;: a unique hash key embed to the certified device upon certification&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;I hope I made a good story to explain the case…&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Let’s keep the stories aside and dive into implementations.&lt;/p&gt;&lt;h2 id=&quot;-Implementation&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-Implementation&quot; aria-label=&quot; Implementation permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;🚧 Implementation&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;The &lt;strong class=&quot;css-0&quot;&gt;WSO2 API Manager&lt;/strong&gt;, or more likely to say the WSO2 Carbon platform is built in a way to extend and plug and play with the functions if required.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;strong class=&quot;css-0&quot;&gt;On a Personal Note&lt;/strong&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;It is always good to &lt;strong class=&quot;css-0&quot;&gt;think twice&lt;/strong&gt; before introducing any customizations or extensions to the platform&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;So to achieve our needs, We have to extend the implementation of &lt;strong class=&quot;css-0&quot;&gt;AbstractAuthorizationGrantHandler&lt;/strong&gt; and push our enhancements to it.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Let’s start by setting up a Maven project …
Create a new Maven project and the following dependencies in the POM&lt;/p&gt;&lt;pre class=&quot;prism-code language-xml&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;dependency&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;groupId&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;org.wso2.carbon.identity.inbound.auth.oauth2&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;groupId&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;artifactId&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;org.wso2.carbon.identity.oauth&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;artifactId&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;version&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;6.0.53&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;version&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;dependency&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;If you encounter any dependency resolution errors or if you are not able to resolve the dependencies, add the following repositories to fetch ‘em&lt;/p&gt;&lt;pre class=&quot;prism-code language-xml&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;repositories&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;repository&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;wso2-nexus&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;http://maven.wso2.org/nexus/content/groups/wso2-public/&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;releases&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;enabled&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;enabled&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;updatePolicy&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;daily&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;updatePolicy&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;checksumPolicy&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;ignore&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;checksumPolicy&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;releases&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;repository&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;repositories&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;pluginRepositories&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;pluginRepository&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;wso2-nexus&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;http://maven.wso2.org/nexus/content/groups/wso2-public/&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;releases&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;enabled&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;enabled&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;updatePolicy&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;daily&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;updatePolicy&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;checksumPolicy&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;ignore&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;checksumPolicy&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;releases&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;pluginRepository&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;pluginRepositories&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;With success, let’s dive into the implementation of Grant Handlers. Grant Handlers are responsible to validate the Grant type and to issue Access Tokens.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Since we don’t want to do any customizations to our Access Tokens, we will be only overriding the &lt;code class=&quot;css-0&quot;&gt;validateGrant()&lt;/code&gt; method to validate the inputs.&lt;/p&gt;&lt;h2 id=&quot;-Locus-Grant-Handler&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-Locus-Grant-Handler&quot; aria-label=&quot; Locus Grant Handler permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;🌏 Locus Grant Handler&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;I’ve made it simple 🙌 for you all to save your precious time. You can find the complete development at the bottom of this story, but if you have time go through it (I’ve spent my time to write this one 😢)…&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Given below is the complete implementation of the Locus Grant Handler. I’ve introduced a couple of isValid() methods to mock the validation and service calls to any defined data sources.&lt;/p&gt;&lt;pre class=&quot;prism-code language-java&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;package&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;com&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;grant&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;sample&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;handler&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;java&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;util&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;ArrayList&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;java&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;util&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;com&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;grant&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;sample&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;utils&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;LocusGrantConstants&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;org&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;apache&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;commons&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;logging&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;Log&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;org&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;apache&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;commons&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;logging&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;LogFactory&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;org&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;wso2&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;carbon&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;identity&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;application&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;authentication&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;framework&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;model&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;AuthenticatedUser&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;org&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;wso2&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;carbon&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;identity&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;oauth2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;IdentityOAuth2Exception&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;org&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;wso2&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;carbon&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;identity&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;oauth2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;ResponseHeader&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;org&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;wso2&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;carbon&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;identity&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;oauth2&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;model&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;RequestParameter&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;org&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;wso2&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;carbon&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;identity&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;oauth2&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;token&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;OAuthTokenReqMessageContext&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;org&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;wso2&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;carbon&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;identity&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;oauth2&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;token&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;handlers&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;grant&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;AbstractAuthorizationGrantHandler&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;public&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;LocusGrantHandler&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;extends&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;AbstractAuthorizationGrantHandler&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;private&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;static&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;final&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;Log&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; log &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;LogFactory&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;getLog&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;LocusGrantHandler&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token annotation punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;@Override&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;public&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;boolean&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;validateGrant&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;OAuthTokenReqMessageContext&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; tokReqMsgCtx&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;throws&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;IdentityOAuth2Exception&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        log&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;info&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;Locus Grant Handler : Starting to validate grant&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;boolean&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; isGrantValid &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token boolean&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;RequestParameter&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; reqParams &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; tokReqMsgCtx&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;getOauth2AccessTokenReqDTO&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;getRequestParameters&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; nameValue &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; locationValue &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; keyValue &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;RequestParameter&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; param &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; reqParams&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;switch&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;param&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;getKey&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;                &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;case&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;LocusGrantConstants&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;LOCUS_NAME_GRANT_PARAM&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;                    nameValue &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; param&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;getValue&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;!=&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; param&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;getValue&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;length &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token number&quot; style=&quot;color:rgb(181, 206, 168)&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;?&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; param&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;getValue&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot; style=&quot;color:rgb(181, 206, 168)&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;                    &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;                &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;case&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;LocusGrantConstants&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;LOCUS_LOCATION_GRANT_PARAM&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;                    locationValue &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; param&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;getValue&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;!=&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; param&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;getValue&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;length &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token number&quot; style=&quot;color:rgb(181, 206, 168)&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;?&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; param&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;getValue&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot; style=&quot;color:rgb(181, 206, 168)&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;                    &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;                &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;case&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;LocusGrantConstants&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;LOCUS_KEY_GRANT_PARAM&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;                    keyValue &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; param&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;getValue&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;!=&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; param&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;getValue&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;length &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token number&quot; style=&quot;color:rgb(181, 206, 168)&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;?&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; param&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;getValue&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot; style=&quot;color:rgb(181, 206, 168)&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;                    &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;nameValue &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;!=&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; locationValue &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;!=&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; keyValue &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;!=&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;            isGrantValid &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;isValidName&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;nameValue&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;isValidLocation&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;locationValue&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;isValidKey&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;keyValue&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;isGrantValid&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;                &lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;AuthenticatedUser&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; locusUser &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;AuthenticatedUser&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;                locusUser&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;setUserName&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;keyValue&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;                tokReqMsgCtx&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;setAuthorizedUser&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;locusUser&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;                tokReqMsgCtx&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;setScope&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;tokReqMsgCtx&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;getOauth2AccessTokenReqDTO&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;getScope&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;                &lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;ResponseHeader&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; responseHeader &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;ResponseHeader&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;                responseHeader&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;setKey&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;LocusGrantError&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;                responseHeader&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;setValue&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;Invalid Credentials&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;                tokReqMsgCtx&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;addProperty&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;RESPONSE_HEADERS&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;ResponseHeader&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; responseHeader &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;isDebugEnabled&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;            log&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;debug&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;Locus Grant Handler : isGrantValid = &amp;quot;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; isGrantValid&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; isGrantValid&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;private&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;boolean&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;isValidName&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; name&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;// mocking database call with a sample list&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token generics class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token generics punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; validNames &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;ArrayList&lt;/span&gt;&lt;span class=&quot;token generics punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token generics punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        validNames&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;locus-10-09874&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        validNames&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;locus-10-01219&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; validNames&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;contains&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;private&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;boolean&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;isValidLocation&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; location&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;// mocking the database with a sample list&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token generics class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token generics punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; validLocations &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;ArrayList&lt;/span&gt;&lt;span class=&quot;token generics punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token generics punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        validLocations&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;LK-COLOMBO&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        validLocations&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;LK-KANDY&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; validLocations&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;contains&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;location&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;private&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;boolean&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;isValidKey&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; key&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;// mocking database call with a sample list&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token generics class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token generics punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; validKeys &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;ArrayList&lt;/span&gt;&lt;span class=&quot;token generics punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token generics punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        validKeys&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;0987654321&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        validKeys&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;1234567890&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; validKeys&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;contains&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;key&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;Find the util class implementation from here&lt;/p&gt;&lt;/blockquote&gt;&lt;h3 id=&quot;A-Toll-Free-Tip-&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#A-Toll-Free-Tip-&quot; aria-label=&quot;A Toll Free Tip  permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;A Toll-Free Tip 💪&lt;/h3&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;It is required to create and set an AuthenticatedUser in the success flow to generate an access token and to bind it to that particular user. Otherwise, we’ll end up in a broken flow.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Due to that, I have introduced and configured the key value of the Device to bound the generated access tokens&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;And that’s all about the Grant handler …&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Now let’s configure our API Manager server to support the custom grant&lt;/p&gt;&lt;h2 id=&quot;WSO2-API-Manager-Configurations&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#WSO2-API-Manager-Configurations&quot; aria-label=&quot;WSO2 API Manager Configurations permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;WSO2 API Manager Configurations&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;Before configuring our API Manager pack, we have to build our Maven project. Execute the following command to build the project&lt;/p&gt;&lt;pre class=&quot;prism-code language-bash&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;mvn clean package&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;And copy and place the built JAR artifact inside the &lt;code class=&quot;css-0&quot;&gt;&amp;lt;APIM&amp;gt;/repository/components/lib directory&lt;/code&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Now direct to the &lt;code class=&quot;css-0&quot;&gt;&amp;lt;APIM&amp;gt;/repository/conf/identity&lt;/code&gt; directory and open up the &lt;code class=&quot;css-0&quot;&gt;identity.xml&lt;/code&gt; to add and support our &lt;code class=&quot;css-0&quot;&gt;locus&lt;/code&gt; grant with API Manager&lt;/p&gt;&lt;pre class=&quot;prism-code language-xml&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;SupportedGrantTypes&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  ...&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;SupportedGrantType&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;GrantTypeName&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;locus&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;GrantTypeName&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;GrantTypeHandlerImplClass&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;com.grant.sample.handler.LocusGrantHandler&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;GrantTypeHandlerImplClass&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;GrantTypeValidatorImplClass&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;com.grant.sample.validator.LocusGrantValidator&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;GrantTypeValidatorImplClass&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;IdTokenAllowed&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;IdTokenAllowed&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;SupportedGrantType&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  ...&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;SupportedGrantTypes&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;and that’s all … 🎉&lt;/p&gt;&lt;h3 id=&quot;-Voila-&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-Voila-&quot; aria-label=&quot; Voila  permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;👏 Voila!!! 🙌&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;It is time to do an examination&lt;/p&gt;&lt;h2 id=&quot;Examine-&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Examine-&quot; aria-label=&quot;Examine  permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Examine 🕵&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;Fire up the WSO2 API Manager server, and execute the request using either cURL or Postman or from your favorite REST client and take a note ✅&lt;/p&gt;&lt;pre class=&quot;prism-code language-bash&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;curl&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; --location --request POST &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;#x27;https://localhost:8243/token&amp;#x27;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; \&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;   --header &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;#x27;Authorization: Basic {base64&amp;lt;ClientID:Client Secret&amp;gt;}&amp;#x27;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;\&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;   --header &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;#x27;Content-Type: application/x-www-form-urlencoded&amp;#x27;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; \&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;   --data-urlencode &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;#x27;grant_type=locus&amp;#x27;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; \&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;   --data-urlencode &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;#x27;name=locus-10-09874&amp;#x27;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; \&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;   --data-urlencode &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;#x27;location=LK-COLOMBO&amp;#x27;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; \&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;   --data-urlencode &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;#x27;key=0987654321&amp;#x27;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;div title=&quot;LocusGrantHandler&quot; class=&quot;css-0&quot;&gt;&lt;/div&gt;</content:encoded></item><item><title><![CDATA[Customizing Opaque Access Token Generation]]></title><link>https://stackcheats.github.io/customizing-opaque-access-token-generation/content/</link><guid isPermaLink="false">https://stackcheats.github.io/customizing-opaque-access-token-generation/content/</guid><pubDate>Thu, 26 Dec 2019 00:00:00 GMT</pubDate><content:encoded>&lt;style data-emotion-css=&quot;sa2dbt&quot;&gt;body{color:text;background-color:var(--theme-ui-colors-background,#fff);}&lt;/style&gt;&lt;style data-emotion-css=&quot;0&quot;&gt;&lt;/style&gt;&lt;h2 id=&quot;Hola-&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Hola-&quot; aria-label=&quot;Hola  permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Hola 👋&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;strong class=&quot;css-0&quot;&gt;Greetings&lt;/strong&gt; Everyone 😊 …&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;This is another medium on walking 🚶 and swimming 🏊🏼 through customizing the opaque access tokens using APIM Token Issuer when we do have a requirement issue&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;The demo is presented and walked-through using WSO2 API Manager v2.6&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;strong class=&quot;css-0&quot;&gt;Whaaaaat? wait… Why?&lt;/strong&gt; 🤔&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;You probably now have a question on why do we need to do that and does it actually matter… Let me give you a simple stupid occasion on when and where I actually need that.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;RepoDeWS is a developer-management system which has a set of in-built management services in SOAP. These SOAP services are exposed as REST APIs with the help of WSO2 API Manager. Now the RepoDeWS team is having an undergoing process of security maintenance and they are expecting their users to invoke the APIs using access tokens with a “&lt;strong class=&quot;css-0&quot;&gt;Dev-Hash&lt;/strong&gt;” value appended to it.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;This “Dev-Hash” value will be passed as a Header (devhash) when requesting an Access Token and will be appended during the generation of the opaque access token&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;Oh… I forgot to mention that the &lt;strong class=&quot;css-0&quot;&gt;Dev-Hash&lt;/strong&gt; value is a unique hash value given to a set of top-rated developers to enrich their API responses with the last accessed timestamps 😅&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Let’s just focus on the implementation and enhancements and will keep our use-cases behind that.&lt;/p&gt;&lt;h2 id=&quot;Implementation&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Implementation&quot; aria-label=&quot;Implementation permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Implementation&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;To accomplish my simple requirement, We have to extend the implementation of APIMTokenIssuer and push our enhancements.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;The &lt;strong class=&quot;css-0&quot;&gt;APIMTokenIssuer&lt;/strong&gt; is responsible for generating opaque access tokens and JWT tokens in the WSO2 API Manager platform&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;First, create a simple maven project and add the following dependency to the POM. This will help us to resolve most of the dependency issues when extending the APIMTokenIssuer class.&lt;/p&gt;&lt;pre class=&quot;prism-code language-xml&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;dependencies&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;dependency&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;groupId&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;org.wso2.carbon.apimgt&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;groupId&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;artifactId&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;org.wso2.carbon.apimgt.keymgt&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;artifactId&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;version&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;6.5.222&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;version&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;dependency&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;dependencies&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;But, if you encounter any dependency problems or if you are not able to resolve the dependencies in the POM, then add the following as well …&lt;/p&gt;&lt;pre class=&quot;prism-code language-xml&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;repositories&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;repository&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;wso2-nexus&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;http://maven.wso2.org/nexus/content/groups/wso2-public/&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;releases&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;enabled&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;enabled&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;updatePolicy&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;daily&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;updatePolicy&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;checksumPolicy&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;ignore&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;checksumPolicy&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;releases&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;repository&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;repositories&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;pluginRepositories&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;pluginRepository&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;wso2-nexus&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;http://maven.wso2.org/nexus/content/groups/wso2-public/&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;releases&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;enabled&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;enabled&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;updatePolicy&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;daily&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;updatePolicy&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;checksumPolicy&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;ignore&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;checksumPolicy&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;releases&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;pluginRepository&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;pluginRepositories&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;strong class=&quot;css-0&quot;&gt;Phew&lt;/strong&gt; 😅&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Managing dependencies is harder than managing expenses bruh 😬😬😭 …&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Now let’s jump into the extended implementation. Given below is the piece of code (I) developed to solve my own problem [Am I overreacting 😳 ? I think I am 😒]&lt;/p&gt;&lt;pre class=&quot;prism-code language-java&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;package&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;com&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;sample&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;token&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;org&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;wso2&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;carbon&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;apimgt&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;impl&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;APIConstants&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;org&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;wso2&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;carbon&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;apimgt&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;impl&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;utils&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;APIUtil&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;org&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;wso2&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;carbon&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;apimgt&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;keymgt&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;issuers&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;APIMTokenIssuer&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;org&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;wso2&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;carbon&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;identity&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;oauth2&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;token&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;OAuthTokenReqMessageContext&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;org&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;wso2&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;carbon&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;identity&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;oauth2&lt;/span&gt;&lt;span class=&quot;token namespace punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token namespace&quot;&gt;model&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;RequestParameter&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;public&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;MyAPIMTokenIssuer&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;extends&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;APIMTokenIssuer&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;private&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;static&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;final&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;Log&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; log &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;LoggerFactory&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;getLog&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;MyAPIMTokenIssuer&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token annotation punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;@Override&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;public&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;accessToken&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;OAuthTokenReqMessageContext&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; tokReqMsgCtx&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;throws&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;OAuthSystemException&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;// generate access token using super method&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; accessToken &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;accessToken&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;tokReqMsgCtx&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; clientId &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; tokReqMsgCtx&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;getOauth2AccessTokenReqDTO&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;getClientId&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;Application&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; application&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;try&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;            application &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;APIUtil&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;getApplicationByClientId&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;clientId&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; tokenType &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; application&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;getTokenType&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;// only acceptable for opaque access tokens and not JWT tokens&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;APIConstants&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;JWT&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;equals&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;tokenType&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;                &lt;/span&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;// retrieve all request parameters sent to the token request&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;                &lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;RequestParameter&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; reqParams &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; tokReqMsgCtx&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;getOauth2AccessTokenreqDTO&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;getRequestParameters&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;                &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; i &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token number&quot; style=&quot;color:rgb(181, 206, 168)&quot;&gt;0l&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; i &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; reqParams&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;length&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; i&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;                    &lt;/span&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;// check for devhash from the request parameters&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;                    &lt;/span&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;// and append it to the access token&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;                    &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;devhash&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;equals&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;reqParams&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;getKey&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;                        accessToken &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;+=&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; reqParams&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;getValue&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot; style=&quot;color:rgb(181, 206, 168)&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;                        &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;                    &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;                &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;catch&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;APIManagementException&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; e&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;            log&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;error&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;Exception occured &amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; e&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; accessToken&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;I know right, it’s really hard to follow these things up 😐&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Therefore, I give you a golden opportunity… Please go and find the sample implementation (gist) from &lt;a href=&quot;https://gist.github.com/athiththan11/905f0c875c619630327cd869ca1b01f9&quot; class=&quot;css-0&quot;&gt;GitHub Gist&lt;/a&gt; (save your time on reading this medium) and enjoy enriching it 😍&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;div id=&quot;gist100234340&quot; class=&quot;gist css-0&quot;&gt;
    &lt;div class=&quot;gist-file css-0&quot;&gt;
      &lt;div class=&quot;gist-data css-0&quot;&gt;
        &lt;div class=&quot;js-gist-file-update-container js-task-list-container file-box css-0&quot;&gt;
  &lt;div id=&quot;file-myapimtokenissuer-java&quot; class=&quot;file my-2 css-0&quot;&gt;
    
  &lt;div itemProp=&quot;text&quot; class=&quot;Box-body p-0 blob-wrapper data type-java css-0&quot;&gt;

      
&lt;div class=&quot;js-check-bidi js-blob-code-container blob-code-content css-0&quot;&gt;

  &lt;template class=&quot;js-file-alert-template&quot;&gt;&lt;/template&gt;&lt;template class=&quot;js-line-alert-template&quot;&gt;&lt;/template&gt;

  &lt;table class=&quot;highlight tab-size js-file-line-container js-code-nav-container js-tagsearch-file css-0&quot; data-tab-size=&quot;8&quot; data-paste-markdown-skip=&quot;&quot; data-tagsearch-lang=&quot;Java&quot; data-tagsearch-path=&quot;MyAPIMTokenIssuer.java&quot;&gt;
        &lt;tbody&gt;&lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-L1&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;1&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-LC1&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;package&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;com&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;sample&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;token&lt;/span&gt;;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-L2&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;2&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-LC2&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-L3&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;3&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-LC3&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;org&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;apache&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;oltu&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;oauth2&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;common&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;exception&lt;/span&gt;.&lt;span class=&quot;pl-c1&quot;&gt;OAuthSystemException&lt;/span&gt;;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-L4&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;4&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-LC4&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;org&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;wso2&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;carbon&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;apimgt&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;api&lt;/span&gt;.&lt;span class=&quot;pl-c1&quot;&gt;APIManagementException&lt;/span&gt;;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-L5&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;5&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-LC5&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;org&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;wso2&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;carbon&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;apimgt&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;api&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;model&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;Application&lt;/span&gt;;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-L6&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;6&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-LC6&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;org&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;wso2&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;carbon&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;apimgt&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;impl&lt;/span&gt;.&lt;span class=&quot;pl-c1&quot;&gt;APIConstants&lt;/span&gt;;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-L7&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;7&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-LC7&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;org&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;wso2&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;carbon&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;apimgt&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;impl&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;utils&lt;/span&gt;.&lt;span class=&quot;pl-c1&quot;&gt;APIUtil&lt;/span&gt;;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-L8&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;8&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-LC8&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;org&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;wso2&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;carbon&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;apimgt&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;keymgt&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;issuers&lt;/span&gt;.&lt;span class=&quot;pl-c1&quot;&gt;APIMTokenIssuer&lt;/span&gt;;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-L9&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;9&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-LC9&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;org&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;wso2&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;carbon&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;identity&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;oauth2&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;token&lt;/span&gt;.&lt;span class=&quot;pl-c1&quot;&gt;OAuthTokenReqMessageContext&lt;/span&gt;;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-L10&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;10&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-LC10&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;org&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;wso2&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;carbon&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;identity&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;oauth2&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;model&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;RequestParameter&lt;/span&gt;;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-L11&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;11&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-LC11&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-L12&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;12&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-LC12&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;org&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;apache&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;commons&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;logging&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;Log&lt;/span&gt;;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-L13&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;13&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-LC13&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;org&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;apache&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;commons&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;logging&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;LogFactory&lt;/span&gt;;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-L14&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;14&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-LC14&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-L15&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;15&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-LC15&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;MyAPIMTokenIssuer&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;APIMTokenIssuer&lt;/span&gt; {&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-L16&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;16&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-LC16&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-L17&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;17&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-LC17&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&lt;span class=&quot;pl-k&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;final&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;Log&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;log&lt;/span&gt; = &lt;span class=&quot;pl-s1&quot;&gt;LogFactory&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;getLog&lt;/span&gt;(&lt;span class=&quot;pl-smi&quot;&gt;MyAPIMTokenIssuer&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;class&lt;/span&gt;);&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-L18&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;18&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-LC18&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-L19&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;19&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-LC19&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&lt;span class=&quot;pl-c1&quot;&gt;@&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;Override&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-L20&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;20&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-LC20&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&lt;span class=&quot;pl-k&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;String&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;accessToken&lt;/span&gt;(&lt;span class=&quot;pl-smi&quot;&gt;OAuthTokenReqMessageContext&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;tokReqMsgCtx&lt;/span&gt;) &lt;span class=&quot;pl-k&quot;&gt;throws&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;OAuthSystemException&lt;/span&gt; {&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-L21&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;21&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-LC21&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-L22&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;22&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-LC22&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&lt;span class=&quot;pl-c&quot;&gt;// generate access token using super method&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-L23&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;23&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-LC23&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&lt;span class=&quot;pl-smi&quot;&gt;String&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;accessToken&lt;/span&gt; = &lt;span class=&quot;pl-en&quot;&gt;super&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;accessToken&lt;/span&gt;(&lt;span class=&quot;pl-s1&quot;&gt;tokReqMsgCtx&lt;/span&gt;);&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-L24&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;24&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-LC24&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-L25&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;25&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-LC25&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&lt;span class=&quot;pl-smi&quot;&gt;String&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;clientId&lt;/span&gt; = &lt;span class=&quot;pl-s1&quot;&gt;tokReqMsgCtx&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;getOauth2AccessTokenReqDTO&lt;/span&gt;().&lt;span class=&quot;pl-en&quot;&gt;getClientId&lt;/span&gt;();&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-L26&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;26&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-LC26&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&lt;span class=&quot;pl-smi&quot;&gt;Application&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;application&lt;/span&gt;;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-L27&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;27&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-LC27&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&lt;span class=&quot;pl-k&quot;&gt;try&lt;/span&gt; {&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-L28&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;28&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-LC28&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;			&lt;span class=&quot;pl-s1&quot;&gt;application&lt;/span&gt; = &lt;span class=&quot;pl-c1&quot;&gt;APIUtil&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;getApplicationByClientId&lt;/span&gt;(&lt;span class=&quot;pl-s1&quot;&gt;clientId&lt;/span&gt;);&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-L29&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;29&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-LC29&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;			&lt;span class=&quot;pl-smi&quot;&gt;String&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;tokenType&lt;/span&gt; = &lt;span class=&quot;pl-s1&quot;&gt;application&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;getTokenType&lt;/span&gt;();&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-L30&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;30&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-LC30&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-L31&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;31&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-LC31&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;			&lt;span class=&quot;pl-c&quot;&gt;// only acceptable for opaque access tokens and not JWT tokens&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-L32&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;32&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-LC32&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;			&lt;span class=&quot;pl-k&quot;&gt;if&lt;/span&gt; (!&lt;span class=&quot;pl-smi&quot;&gt;APIConstants&lt;/span&gt;.&lt;span class=&quot;pl-c1&quot;&gt;JWT&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;equals&lt;/span&gt;(&lt;span class=&quot;pl-s1&quot;&gt;tokenType&lt;/span&gt;)) {&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-L33&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;33&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-LC33&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;				&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-L34&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;34&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-LC34&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;				&lt;span class=&quot;pl-c&quot;&gt;// retrieve all request parameters sent to the token request&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-L35&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;35&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-LC35&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;				&lt;span class=&quot;pl-smi&quot;&gt;RequestParameter&lt;/span&gt;[] &lt;span class=&quot;pl-s1&quot;&gt;reqParams&lt;/span&gt; = &lt;span class=&quot;pl-s1&quot;&gt;tokReqMsgCtx&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;getOauth2AccessTokenReqDTO&lt;/span&gt;().&lt;span class=&quot;pl-en&quot;&gt;getRequestParameters&lt;/span&gt;();&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-L36&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;36&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-LC36&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;				&lt;span class=&quot;pl-k&quot;&gt;for&lt;/span&gt; (&lt;span class=&quot;pl-smi&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;i&lt;/span&gt; = &lt;span class=&quot;pl-c1&quot;&gt;0&lt;/span&gt;; &lt;span class=&quot;pl-s1&quot;&gt;i&lt;/span&gt; &amp;lt; &lt;span class=&quot;pl-s1&quot;&gt;reqParams&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;length&lt;/span&gt;; &lt;span class=&quot;pl-s1&quot;&gt;i&lt;/span&gt;++) {&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-L37&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;37&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-LC37&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-L38&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;38&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-LC38&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;					&lt;span class=&quot;pl-c&quot;&gt;// check for devhash parameter from the request parameters and append it to the&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-L39&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;39&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-LC39&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;					&lt;span class=&quot;pl-c&quot;&gt;// access token&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-L40&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;40&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-LC40&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;					&lt;span class=&quot;pl-k&quot;&gt;if&lt;/span&gt; (&lt;span class=&quot;pl-s&quot;&gt;&amp;quot;devhash&amp;quot;&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;equals&lt;/span&gt;(&lt;span class=&quot;pl-s1&quot;&gt;reqParams&lt;/span&gt;[&lt;span class=&quot;pl-s1&quot;&gt;i&lt;/span&gt;].&lt;span class=&quot;pl-en&quot;&gt;getKey&lt;/span&gt;())) {&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-L41&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;41&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-LC41&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;						&lt;span class=&quot;pl-s1&quot;&gt;accessToken&lt;/span&gt; += &lt;span class=&quot;pl-s1&quot;&gt;reqParams&lt;/span&gt;[&lt;span class=&quot;pl-s1&quot;&gt;i&lt;/span&gt;].&lt;span class=&quot;pl-en&quot;&gt;getValue&lt;/span&gt;()[&lt;span class=&quot;pl-c1&quot;&gt;0&lt;/span&gt;];&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-L42&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;42&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-LC42&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;						&lt;span class=&quot;pl-k&quot;&gt;break&lt;/span&gt;;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-L43&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;43&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-LC43&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;					}&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-L44&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;44&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-LC44&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;				}&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-L45&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;45&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-LC45&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;			}&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-L46&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;46&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-LC46&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		} &lt;span class=&quot;pl-k&quot;&gt;catch&lt;/span&gt; (&lt;span class=&quot;pl-smi&quot;&gt;APIManagementException&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;e&lt;/span&gt;) {&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-L47&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;47&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-LC47&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;			&lt;span class=&quot;pl-s1&quot;&gt;log&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;error&lt;/span&gt;(&lt;span class=&quot;pl-s&quot;&gt;&amp;quot;Exception occured in my piece of code &amp;quot;&lt;/span&gt;, &lt;span class=&quot;pl-s1&quot;&gt;e&lt;/span&gt;);&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-L48&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;48&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-LC48&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		}&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-L49&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;49&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-LC49&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-L50&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;50&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-LC50&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&lt;span class=&quot;pl-k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;accessToken&lt;/span&gt;;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-L51&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;51&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-LC51&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	}&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-L52&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;52&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-myapimtokenissuer-java-LC52&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;}&lt;/td&gt;
        &lt;/tr&gt;
  &lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;


  &lt;/div&gt;

  &lt;/div&gt;&lt;/div&gt;

      &lt;/div&gt;
      &lt;div class=&quot;gist-meta css-0&quot;&gt;
        &lt;a href=&quot;https://gist.github.com/athiththan11/905f0c875c619630327cd869ca1b01f9/raw/ccf293700506d39696b4ffe8bb0e246ea349b80b/MyAPIMTokenIssuer.java&quot; style=&quot;css-float:right&quot; class=&quot;css-0&quot;&gt;view raw&lt;/a&gt;
        &lt;a href=&quot;https://gist.github.com/athiththan11/905f0c875c619630327cd869ca1b01f9#file-myapimtokenissuer-java&quot; class=&quot;css-0&quot;&gt;
          MyAPIMTokenIssuer.java
        &lt;/a&gt;
        hosted with ❤ by &lt;a href=&quot;https://github.com&quot; class=&quot;css-0&quot;&gt;GitHub&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;&lt;/div&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;div id=&quot;gist100234340&quot; class=&quot;gist css-0&quot;&gt;
    &lt;div class=&quot;gist-file css-0&quot;&gt;
      &lt;div class=&quot;gist-data css-0&quot;&gt;
        &lt;div class=&quot;js-gist-file-update-container js-task-list-container file-box css-0&quot;&gt;
  &lt;div id=&quot;file-pom-xml&quot; class=&quot;file my-2 css-0&quot;&gt;
    
  &lt;div itemProp=&quot;text&quot; class=&quot;Box-body p-0 blob-wrapper data type-maven-pom css-0&quot;&gt;

      
&lt;div class=&quot;js-check-bidi js-blob-code-container blob-code-content css-0&quot;&gt;

  &lt;template class=&quot;js-file-alert-template&quot;&gt;&lt;/template&gt;&lt;template class=&quot;js-line-alert-template&quot;&gt;&lt;/template&gt;

  &lt;table class=&quot;highlight tab-size js-file-line-container js-code-nav-container js-tagsearch-file css-0&quot; data-tab-size=&quot;8&quot; data-paste-markdown-skip=&quot;&quot; data-tagsearch-lang=&quot;Maven POM&quot; data-tagsearch-path=&quot;pom.xml&quot;&gt;
        &lt;tbody&gt;&lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L1&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;1&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC1&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&amp;lt;?&lt;span class=&quot;pl-ent&quot;&gt;xml&lt;/span&gt;&lt;span class=&quot;pl-e&quot;&gt; version&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;1.0&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pl-e&quot;&gt; encoding&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;UTF-8&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;?&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L2&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;2&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC2&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L3&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;3&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC3&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;project&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;xmlns&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;http://maven.apache.org/POM/4.0.0&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L4&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;4&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC4&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	xmlns:xsi=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;http://www.w3.org/2001/XMLSchema-instance&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-e&quot;&gt;xsi&lt;/span&gt;&lt;span class=&quot;pl-e&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;pl-e&quot;&gt;schemaLocation&lt;/span&gt;=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L5&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;5&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC5&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;modelVersion&lt;/span&gt;&amp;gt;4.0.0&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;modelVersion&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L6&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;6&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC6&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L7&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;7&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC7&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;groupId&lt;/span&gt;&amp;gt;com.sample.token&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;groupId&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L8&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;8&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC8&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;artifactId&lt;/span&gt;&amp;gt;custom-token-issuer&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;artifactId&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L9&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;9&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC9&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;version&lt;/span&gt;&amp;gt;1.0.0&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;version&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L10&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;10&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC10&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L11&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;11&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC11&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&amp;lt;!--&lt;/span&gt; change the packaging to bundle (from jar) to support OSGi &lt;span class=&quot;pl-c&quot;&gt;--&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L12&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;12&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC12&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;packaging&lt;/span&gt;&amp;gt;jar&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;packaging&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L13&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;13&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC13&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L14&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;14&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC14&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;properties&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L15&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;15&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC15&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;project&lt;/span&gt;.build.sourceEncoding&amp;gt;UTF-8&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;project&lt;/span&gt;.build.sourceEncoding&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L16&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;16&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC16&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;maven&lt;/span&gt;.compiler.source&amp;gt;1.8&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;maven&lt;/span&gt;.compiler.source&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L17&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;17&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC17&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;maven&lt;/span&gt;.compiler.target&amp;gt;1.8&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;maven&lt;/span&gt;.compiler.target&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L18&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;18&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC18&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;properties&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L19&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;19&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC19&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L20&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;20&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC20&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;dependencies&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L21&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;21&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC21&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;dependency&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L22&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;22&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC22&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;			&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;groupId&lt;/span&gt;&amp;gt;org.wso2.carbon.apimgt&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;groupId&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L23&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;23&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC23&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;			&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;artifactId&lt;/span&gt;&amp;gt;org.wso2.carbon.apimgt.keymgt&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;artifactId&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L24&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;24&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC24&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;			&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;version&lt;/span&gt;&amp;gt;6.5.222&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;version&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L25&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;25&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC25&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;dependency&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L26&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;26&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC26&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt; &amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;dependencies&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L27&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;27&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC27&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L28&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;28&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC28&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;repositories&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L29&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;29&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC29&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;repository&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L30&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;30&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC30&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;			&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;id&lt;/span&gt;&amp;gt;wso2-nexus&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;id&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L31&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;31&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC31&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;			&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;url&lt;/span&gt;&amp;gt;http://maven.wso2.org/nexus/content/groups/wso2-public/&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;url&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L32&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;32&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC32&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;			&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;releases&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L33&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;33&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC33&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;				&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;enabled&lt;/span&gt;&amp;gt;true&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;enabled&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L34&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;34&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC34&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;				&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;updatePolicy&lt;/span&gt;&amp;gt;daily&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;updatePolicy&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L35&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;35&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC35&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;				&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;checksumPolicy&lt;/span&gt;&amp;gt;ignore&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;checksumPolicy&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L36&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;36&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC36&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;			&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;releases&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L37&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;37&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC37&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;repository&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L38&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;38&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC38&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;repositories&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L39&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;39&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC39&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L40&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;40&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC40&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;pluginRepositories&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L41&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;41&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC41&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;pluginRepository&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L42&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;42&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC42&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;			&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;id&lt;/span&gt;&amp;gt;wso2-nexus&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;id&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L43&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;43&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC43&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;			&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;url&lt;/span&gt;&amp;gt;http://maven.wso2.org/nexus/content/groups/wso2-public/&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;url&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L44&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;44&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC44&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;			&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;releases&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L45&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;45&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC45&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;				&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;enabled&lt;/span&gt;&amp;gt;true&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;enabled&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L46&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;46&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC46&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;				&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;updatePolicy&lt;/span&gt;&amp;gt;daily&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;updatePolicy&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L47&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;47&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC47&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;				&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;checksumPolicy&lt;/span&gt;&amp;gt;ignore&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;checksumPolicy&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L48&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;48&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC48&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;			&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;releases&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L49&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;49&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC49&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;pluginRepository&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L50&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;50&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC50&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;pluginRepositories&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L51&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;51&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC51&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L52&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;52&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC52&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;build&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L53&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;53&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC53&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;plugins&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L54&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;54&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC54&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L55&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;55&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC55&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;			&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;plugin&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L56&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;56&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC56&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;				&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;groupId&lt;/span&gt;&amp;gt;org.apache.maven.plugins&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;groupId&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L57&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;57&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC57&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;				&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;artifactId&lt;/span&gt;&amp;gt;maven-compiler-plugin&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;artifactId&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L58&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;58&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC58&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;				&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;version&lt;/span&gt;&amp;gt;2.0&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;version&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L59&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;59&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC59&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;				&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;configuration&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L60&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;60&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC60&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;					&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;source&lt;/span&gt;&amp;gt;1.8&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;source&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L61&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;61&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC61&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;					&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;target&lt;/span&gt;&amp;gt;1.8&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;target&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L62&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;62&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC62&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;				&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;configuration&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L63&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;63&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC63&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;			&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;plugin&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L64&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;64&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC64&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L65&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;65&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC65&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;			&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&amp;lt;!--&lt;/span&gt; build plugin for OSGi Bundle support &lt;span class=&quot;pl-c&quot;&gt;--&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L66&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;66&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC66&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;			&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;plugin&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L67&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;67&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC67&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;				&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;groupId&lt;/span&gt;&amp;gt;org.apache.felix&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;groupId&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L68&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;68&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC68&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;				&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;artifactId&lt;/span&gt;&amp;gt;maven-bundle-plugin&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;artifactId&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L69&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;69&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC69&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;				&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;version&lt;/span&gt;&amp;gt;2.3.4&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;version&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L70&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;70&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC70&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;				&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;extensions&lt;/span&gt;&amp;gt;true&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;extensions&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L71&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;71&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC71&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;				&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;configuration&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L72&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;72&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC72&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;					&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;instructions&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L73&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;73&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC73&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;						&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;Bundle-SymbolicName&lt;/span&gt;&amp;gt;com.sample.token&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;Bundle-SymbolicName&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L74&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;74&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC74&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;						&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;Bundle-Name&lt;/span&gt;&amp;gt;com.sample.token&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;Bundle-Name&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L75&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;75&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC75&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;						&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;Export-Package&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L76&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;76&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC76&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;                            com.sample.token.*,&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L77&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;77&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC77&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;						&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;Export-Package&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L78&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;78&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC78&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;						&amp;lt;&lt;span class=&quot;pl-ent&quot;&gt;Import-Package&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L79&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;79&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC79&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;                            *; resolution:=optional&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L80&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;80&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC80&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;						&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;Import-Package&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L81&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;81&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC81&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;					&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;instructions&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L82&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;82&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC82&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;				&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;configuration&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L83&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;83&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC83&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;			&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;plugin&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L84&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;84&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC84&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L85&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;85&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC85&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;plugins&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L86&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;86&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC86&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;build&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-pom-xml-L87&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;87&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-pom-xml-LC87&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&amp;lt;/&lt;span class=&quot;pl-ent&quot;&gt;project&lt;/span&gt;&amp;gt;&lt;/td&gt;
        &lt;/tr&gt;
  &lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;


  &lt;/div&gt;

  &lt;/div&gt;&lt;/div&gt;

      &lt;/div&gt;
      &lt;div class=&quot;gist-meta css-0&quot;&gt;
        &lt;a href=&quot;https://gist.github.com/athiththan11/905f0c875c619630327cd869ca1b01f9/raw/ccf293700506d39696b4ffe8bb0e246ea349b80b/pom.xml&quot; style=&quot;css-float:right&quot; class=&quot;css-0&quot;&gt;view raw&lt;/a&gt;
        &lt;a href=&quot;https://gist.github.com/athiththan11/905f0c875c619630327cd869ca1b01f9#file-pom-xml&quot; class=&quot;css-0&quot;&gt;
          pom.xml
        &lt;/a&gt;
        hosted with ❤ by &lt;a href=&quot;https://github.com&quot; class=&quot;css-0&quot;&gt;GitHub&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;&lt;/div&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;strong class=&quot;css-0&quot;&gt;Your inner voice&lt;/strong&gt;: Hmmm… Thanks for that. I have gone through the samples and copied everything from the given sources. Now, what should I do next? Where should I put these implementations???&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;strong class=&quot;css-0&quot;&gt;Me&lt;/strong&gt;: Ummm… I think I heard your inner voice. But thank you for the question.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;As of next steps we have to build-up the maven project by executing the following command from a terminal&lt;/p&gt;&lt;pre class=&quot;prism-code language-shell&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;mvn clean package&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;And then copy and place the built JAR artifact from the &lt;code class=&quot;css-0&quot;&gt;target&lt;/code&gt; folder to the &lt;code class=&quot;css-0&quot;&gt;&amp;lt;APIM&amp;gt;/repository/components/lib directory&lt;/code&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;And at last [Whoa…. the magical keyword 🤗😍], change the &lt;code class=&quot;css-0&quot;&gt;APIMTokenIssuer&lt;/code&gt; class representation to the &lt;code class=&quot;css-0&quot;&gt;MyAPIMTokenIssuer&lt;/code&gt; class by editing the &lt;code class=&quot;css-0&quot;&gt;&amp;lt;IdentityOAuthTokenGenerator&amp;gt;&lt;/code&gt; property in the &lt;code class=&quot;css-0&quot;&gt;&amp;lt;APIM&amp;gt;/repository/conf/identity/identity.xml&lt;/code&gt;.&lt;/p&gt;&lt;pre class=&quot;prism-code language-xml&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;IdentityOAuthTokenGenerator&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;com.sample.token.MyAPIMTokenIssuer&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;IdentityOAuthTokenGenerator&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/86bfeb318de583d30afd2a6501c02292/3643c/identity_xml_configuration.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:22.2972972972973%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAECAIAAAABPYjBAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAeUlEQVQI12WOUQ7EIAgFexERARXB9v7HW7bqx2bJxADxhbkw50KoT63G3aUtpogyd5JAOWNOCSBBOqy6MKqgKG12YMfWkltB+n6LM4voIb9hqo2Hy/B42xju5tPvZwZqyt3EpviUYST0EyapoQuvFRyf3Zxxq/5pfwC01SBHQMocPgAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;identity.xml configuration&quot; title=&quot;identity.xml configuration&quot; src=&quot;/static/86bfeb318de583d30afd2a6501c02292/6d370/identity_xml_configuration.png&quot; srcSet=&quot;/static/86bfeb318de583d30afd2a6501c02292/c5084/identity_xml_configuration.png 148w,/static/86bfeb318de583d30afd2a6501c02292/60cc9/identity_xml_configuration.png 295w,/static/86bfeb318de583d30afd2a6501c02292/6d370/identity_xml_configuration.png 590w,/static/86bfeb318de583d30afd2a6501c02292/540ae/identity_xml_configuration.png 885w,/static/86bfeb318de583d30afd2a6501c02292/2561a/identity_xml_configuration.png 1180w,/static/86bfeb318de583d30afd2a6501c02292/3643c/identity_xml_configuration.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;h3 id=&quot;-Voila-&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-Voila-&quot; aria-label=&quot; Voila  permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;🎉 Voila!!! 🎉&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Let’s do a test-run with our piece of code…&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;strong class=&quot;css-0&quot;&gt;Keep Stacking!!!&lt;/strong&gt;&lt;/p&gt;&lt;h2 id=&quot;Test-Drive&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Test-Drive&quot; aria-label=&quot;Test Drive permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Test Drive&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;Fire up the &lt;strong class=&quot;css-0&quot;&gt;WSO2 API Manager&lt;/strong&gt; server with the artifacts and the above-mentioned configuration changes.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Execute the following CURL command to generate an Opaque Access Token and let’s verify whether it got generated with the specified &lt;strong class=&quot;css-0&quot;&gt;Dev-Hash&lt;/strong&gt; value or not…&lt;/p&gt;&lt;pre class=&quot;prism-code language-bash&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;curl&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; --location --request POST &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;#x27;https://localhost:8243/token&amp;#x27;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; \&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;--header &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;#x27;Content-Type: application/x-www-form-urlencoded&amp;#x27;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; \&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;--header &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;#x27;Authorization: Basic {Base64&amp;lt;ClientID&amp;gt;:&amp;lt;ClientSecret&amp;gt;}&amp;#x27;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; \&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;--data-urlencode &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;#x27;grant_type=password&amp;#x27;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; \&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;--data-urlencode &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;#x27;username=admin&amp;#x27;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; \&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;--data-urlencode &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;#x27;password=admin&amp;#x27;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; \&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;--data-urlencode &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;#x27;scope=default&amp;#x27;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; \&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;--data-urlencode &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;#x27;devhash=af1c4ca13ab7d6c8d2a887d7ce8250a2&amp;#x27;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;And the response should be as follows with the Dev-Hash value appended to the Access Token&lt;/p&gt;&lt;pre class=&quot;prism-code language-json&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;access_token&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;25b9ded7-7441-3b69-bb6b-b1f1828bfff9af1c4ca13ab7d6c8d2a887d7ce8250a2&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;refresh_token&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;d86ac9b8-a3aa-3664-9d39-090ca49a9435&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;scope&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;default&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;token_type&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;Bearer&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;expires_in&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token number&quot; style=&quot;color:rgb(181, 206, 168)&quot;&gt;3600&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;div title=&quot;Sample APIMTokenIssuer&quot; class=&quot;css-0&quot;&gt;&lt;/div&gt;</content:encoded></item><item><title><![CDATA[WSO2 API Manager & Okta]]></title><link>https://stackcheats.github.io/wso2-api-manager-okta/content/</link><guid isPermaLink="false">https://stackcheats.github.io/wso2-api-manager-okta/content/</guid><pubDate>Sat, 21 Dec 2019 00:00:00 GMT</pubDate><content:encoded>&lt;style data-emotion-css=&quot;sa2dbt&quot;&gt;body{color:text;background-color:var(--theme-ui-colors-background,#fff);}&lt;/style&gt;&lt;style data-emotion-css=&quot;0&quot;&gt;&lt;/style&gt;&lt;h2 id=&quot;Intro&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Intro&quot; aria-label=&quot;Intro permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Intro&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;This medium walks-through how to configure Okta IdP as third-party Key Manager with WSO2 API Manager&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;NOTE: Tested versions are WSO2 APIM v2.6&lt;/p&gt;&lt;/blockquote&gt;&lt;h2 id=&quot;Guide&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Guide&quot; aria-label=&quot;Guide permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Guide&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;We will be swimming through the following steps&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Create an Okta Developer account&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Create an Authorization Server in Okta&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Create an Okta Application&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Configure Okta Extensions with WSO2 API Manager&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;Okta&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Okta&quot; aria-label=&quot;Okta permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Okta&lt;/h2&gt;&lt;h3 id=&quot;Okta-Developer-Account&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Okta-Developer-Account&quot; aria-label=&quot;Okta Developer Account permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Okta Developer Account&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Our very first step will be to create an Okta Developer account to test and trial our Key Manager configurations.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Navigate to &lt;a href=&quot;https://developer.okta.com&quot; class=&quot;css-0&quot;&gt;https://developer.okta.com&lt;/a&gt; and create a new Developer account to enjoy free trial on using Okta cloud IdP.&lt;/p&gt;&lt;h3 id=&quot;Okta-Authorization-Server&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Okta-Authorization-Server&quot; aria-label=&quot;Okta Authorization Server permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Okta Authorization Server&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;After successful account creation, now we have to create and register an Authorization server in Okta to communicate and to perform authorization flows.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;In the Okta developer portal navigate to &lt;code class=&quot;css-0&quot;&gt;API&lt;/code&gt; &amp;gt; &lt;code class=&quot;css-0&quot;&gt;Authorization Servers&lt;/code&gt; (refer to the attached screen-shot)&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/3c14a68e9c1e4a04d74db82c3a5cfedf/d9349/okta-authorization-server-navigation.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:41.21621621621622%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAIAAAB2/0i6AAAACXBIWXMAAAsTAAALEwEAmpwYAAABwUlEQVQY001R227TQBD1b9AWaHyJTUO83rVT73qd2InjJiFJUweB2iJUwhcgPoUXHopUFSR44RN44NaqKQmJ7TiVoBK/QAWofYhqtlSqGB2NzlyOZkbD0foacupLuKwUSpJuy0bplul6q/dV6suFEsuzDCMisnmNXEIA5Cm9+4R2uVEYj6OY+TiZhpMkSqaMDEbhp/2DvYPD/uBrGCfR5CiaJGE8ucKP6bfj+IgbjqN37z9++LzfH44OhyPWPRhHZ2enaXqepulsNmNhf8BK4/+x92U4/X7Mtde35hUkQrIIcAbgGzkjh92fJyfpP/v1+89tUllY0jPAXFQvkFFNXsPXZBg8eMx1Nh5dzxmiZvF5LCB6U8U50332/MX2yzc7r99u777SyzVFL2aRLWqYzeDVZQkSJlld3+I6m715GallDzRqCFqkQJFbz9Mq1JGxrEtaBeE7RquuVauiURX0EvS7eae5oEAm5NY2e3NZaLaa5F5gY9cvVky/bTcCz3NWVpyC09Vx0wxaRqOWL7YV07ODh8jvzsngQtzZ6LEdsoiKKhF0m0dUYP9g90Oa0aiIiICIBCwRWBIj0BKAebk2u/cvIyDAP4ekZAYAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Okta Authorization Server&quot; title=&quot;Okta Authorization Server&quot; src=&quot;/static/3c14a68e9c1e4a04d74db82c3a5cfedf/6d370/okta-authorization-server-navigation.png&quot; srcSet=&quot;/static/3c14a68e9c1e4a04d74db82c3a5cfedf/c5084/okta-authorization-server-navigation.png 148w,/static/3c14a68e9c1e4a04d74db82c3a5cfedf/60cc9/okta-authorization-server-navigation.png 295w,/static/3c14a68e9c1e4a04d74db82c3a5cfedf/6d370/okta-authorization-server-navigation.png 590w,/static/3c14a68e9c1e4a04d74db82c3a5cfedf/540ae/okta-authorization-server-navigation.png 885w,/static/3c14a68e9c1e4a04d74db82c3a5cfedf/2561a/okta-authorization-server-navigation.png 1180w,/static/3c14a68e9c1e4a04d74db82c3a5cfedf/d9349/okta-authorization-server-navigation.png 2040w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;We will be looking at a similar page as follows with a default Authorization server created in Okta.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;For security concerns, all attached screenshots are masked&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;We can either create a new Authorization server or we can continue using the default Authorization server to configure Okta. Therefore, we will be continuing our configurations with the Default Authorization Server created by Okta…&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/b5c293c9670aa01c628b065beebebfee/45416/authorization-server-list.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:57.432432432432435%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAiklEQVQoz+WPUQvDIAyE8///6SopmkZn1NrdJg5GGQz6uO8hGHIXL5RSijHWWvuktXb8BqVqrGFVycVgw5ZSSpvs38E3FEJYlptzjplFBK33fpvIJ5iqas4ZeVFJYwqyrcwIj3448R5qiO4nxt6nue0dEZAWSXDGu5YXyHY+1cwwgoaOC/yluV/gAVB0igsvxskDAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Default Authorization Server&quot; title=&quot;Default Authorization Server&quot; src=&quot;/static/b5c293c9670aa01c628b065beebebfee/6d370/authorization-server-list.png&quot; srcSet=&quot;/static/b5c293c9670aa01c628b065beebebfee/c5084/authorization-server-list.png 148w,/static/b5c293c9670aa01c628b065beebebfee/60cc9/authorization-server-list.png 295w,/static/b5c293c9670aa01c628b065beebebfee/6d370/authorization-server-list.png 590w,/static/b5c293c9670aa01c628b065beebebfee/540ae/authorization-server-list.png 885w,/static/b5c293c9670aa01c628b065beebebfee/2561a/authorization-server-list.png 1180w,/static/b5c293c9670aa01c628b065beebebfee/45416/authorization-server-list.png 2080w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Select the default Authorization server and click on the &lt;code class=&quot;css-0&quot;&gt;Scopes&lt;/code&gt; tab to create a Default Scope for the defined Authorization Server. Click on &lt;code class=&quot;css-0&quot;&gt;Add Scope&lt;/code&gt; and prompt the following&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Name: &lt;code class=&quot;css-0&quot;&gt;default&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Description: &lt;code class=&quot;css-0&quot;&gt;Default Scope&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Default Scope: &lt;code class=&quot;css-0&quot;&gt;true&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Metadata: &lt;code class=&quot;css-0&quot;&gt;true&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;and click &lt;code class=&quot;css-0&quot;&gt;Create&lt;/code&gt; to create the Default scope.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/75c38ed8ed1fb70c6479b488109cc5d3/64756/create-default-scope.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:73.64864864864865%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAIAAABr+ngCAAAACXBIWXMAAAsTAAALEwEAmpwYAAABrElEQVQoz5WSQU7cMBiFfS4KXSBVLBDn6DVooQIW5QSVuoJKPUKlMiNgWQl12k1VumA6AyPixHZsx47tZPpid6JBUyrx6Vf0x/Hz+/MSsvlmsHU43DoaPt87W9v9/OzVE4q8ODzffnu5c3y5eTBcfz3Y2HtCkVzojEkqdCE0K6u+cqFQWCzKR4v42rKcNsG1TWiD70uW3Bo9B23zz2q8I8aYoig452jqBdbaMqKUwq1zzq+APZ04z3Pol8UAShHBvgY2j4mzCGMMDp1PXVfGMMFZwXAopTQdbR+CncmZYeyqqpKnq11lKi4eoLWuVyDQTKdjTI5JXAQNnLsYMEy8pPdyS/wVWzXR432rbqSyWiMglXLSSleRro+gkVJiCszctm10Ln8W33YEHd3e0dvpZDabwZJGYJjiSM5pBVdsCCHAnxg1Fj9eKn7NuMaMfbxhQdc3wQfvgveLFdCJrUVkGpP0L2NX8M7P2/m86QqPje2Sh4ykf6H/qqBcArdG6dHk1/ursw/fL05H5xlnWqpSSqRAyv+SxF9/X7/78unj6OLkanBfUHz9+yxDeH8Ai0sgIq1mucoAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Create Defualt Scope&quot; title=&quot;Create Defualt Scope&quot; src=&quot;/static/75c38ed8ed1fb70c6479b488109cc5d3/6d370/create-default-scope.png&quot; srcSet=&quot;/static/75c38ed8ed1fb70c6479b488109cc5d3/c5084/create-default-scope.png 148w,/static/75c38ed8ed1fb70c6479b488109cc5d3/60cc9/create-default-scope.png 295w,/static/75c38ed8ed1fb70c6479b488109cc5d3/6d370/create-default-scope.png 590w,/static/75c38ed8ed1fb70c6479b488109cc5d3/540ae/create-default-scope.png 885w,/static/75c38ed8ed1fb70c6479b488109cc5d3/2561a/create-default-scope.png 1180w,/static/75c38ed8ed1fb70c6479b488109cc5d3/64756/create-default-scope.png 1200w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Next, select the &lt;code class=&quot;css-0&quot;&gt;Tokens&lt;/code&gt; tab to create a new API Token for WSO2 API Manager to communicate with our Okta server.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/eacae5989ac7e3368d04bc05cab7037d/45416/authorization-server-tokens.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:18.243243243243242%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAECAIAAAABPYjBAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAR0lEQVQI142ONw7AMAwD9f/XWhACFaukGc4Y3XDgRBIQsaoyc/sNHYCZV4xb/lA9wMxUdbqPg9hURL663+WBSETXalTs201OJYLtcggpKi8AAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Authorization Server Tokens&quot; title=&quot;Authorization Server Tokens&quot; src=&quot;/static/eacae5989ac7e3368d04bc05cab7037d/6d370/authorization-server-tokens.png&quot; srcSet=&quot;/static/eacae5989ac7e3368d04bc05cab7037d/c5084/authorization-server-tokens.png 148w,/static/eacae5989ac7e3368d04bc05cab7037d/60cc9/authorization-server-tokens.png 295w,/static/eacae5989ac7e3368d04bc05cab7037d/6d370/authorization-server-tokens.png 590w,/static/eacae5989ac7e3368d04bc05cab7037d/540ae/authorization-server-tokens.png 885w,/static/eacae5989ac7e3368d04bc05cab7037d/2561a/authorization-server-tokens.png 1180w,/static/eacae5989ac7e3368d04bc05cab7037d/45416/authorization-server-tokens.png 2080w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Click on &lt;code class=&quot;css-0&quot;&gt;Create Token&lt;/code&gt; and enter a name for the Token and copy and save the generated token value for future references. From now onwards, We will be referring to the token as &lt;code class=&quot;css-0&quot;&gt;Okta API Token&lt;/code&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/57c833743e74aa8cf07862942fed8dde/d9349/authorization-server-token-list.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:45.94594594594595%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAIAAAC9o5sfAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAvklEQVQoz72RTQrCMBBGc3u34hk8gCtx7w1c2I1SEGpt0vxNmqRN09apVcGFSDc+hkDge8NMQhrvG+9iaLCMMZxzADAv4BPGmBACM1JKay255GWSZueMp7ngQjJKMeScqx4opaZemMYrnihPXUZ5vT8tNofl9rjaJVkJlJWubtoQuq4bvuO9xwAZ+xtjK1MZiDHWbQxYIfR9P/yCSKVuBRVSgR7lYQ6ES30tcFkNoGfLdpz6+bCzZVz5/RN/le+r8QrVRIbAzwAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Authorization Server Token List&quot; title=&quot;Authorization Server Token List&quot; src=&quot;/static/57c833743e74aa8cf07862942fed8dde/6d370/authorization-server-token-list.png&quot; srcSet=&quot;/static/57c833743e74aa8cf07862942fed8dde/c5084/authorization-server-token-list.png 148w,/static/57c833743e74aa8cf07862942fed8dde/60cc9/authorization-server-token-list.png 295w,/static/57c833743e74aa8cf07862942fed8dde/6d370/authorization-server-token-list.png 590w,/static/57c833743e74aa8cf07862942fed8dde/540ae/authorization-server-token-list.png 885w,/static/57c833743e74aa8cf07862942fed8dde/2561a/authorization-server-token-list.png 1180w,/static/57c833743e74aa8cf07862942fed8dde/d9349/authorization-server-token-list.png 2040w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;h3 id=&quot;Okta-Application&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Okta-Application&quot; aria-label=&quot;Okta Application permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Okta Application&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Next, we have to create a client application in the Okta IdP to acquire the Consumer secrets to communicate with the Server.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Select the &lt;code class=&quot;css-0&quot;&gt;Applications&lt;/code&gt; from the top navigation bar and then select &lt;code class=&quot;css-0&quot;&gt;Add Application&lt;/code&gt; to create one.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/08f9ca0dda0bab2de7678b8cdc3ddaaa/1b198/add-okta-application.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:35.810810810810814%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAIAAACHqfpvAAAACXBIWXMAAAsTAAALEwEAmpwYAAABJUlEQVQY02OQtwhQsg5Usw/RcAhXdwgDkqq2obouUVpOkWAUoWoXKmPmJ2fuL2vuJwskLQLADD85C38GbXNHj+Bo14AITXN7DTN7bQtHVSMbDVN7VWMbHUsnQ1s3LXNHdRNbIAJytcwdVAytgWqAbA1TOwZLVx/f8DjvsFhLFx8zJ08gaeLgYebkZWLvYenqa+3ub+7kbezgYWzvYe7sDVRgbO9u4ewNRKYOngyv37x59uLFi1evXr95++bt29dvgeAdBIG4IMF3b9+B0BuQCEQczHj3nuHD+/fPnzz99vnL10+fv3z4+OXT53///v0nDjB8/P712stHN149vvX6yZWXD59/egcUJVI3w803T7tPbOw5uWnCqa2Nh1fvuX8JKPqXOMsBiXoN2wcTHZgAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Okta Application&quot; title=&quot;Okta Application&quot; src=&quot;/static/08f9ca0dda0bab2de7678b8cdc3ddaaa/6d370/add-okta-application.png&quot; srcSet=&quot;/static/08f9ca0dda0bab2de7678b8cdc3ddaaa/c5084/add-okta-application.png 148w,/static/08f9ca0dda0bab2de7678b8cdc3ddaaa/60cc9/add-okta-application.png 295w,/static/08f9ca0dda0bab2de7678b8cdc3ddaaa/6d370/add-okta-application.png 590w,/static/08f9ca0dda0bab2de7678b8cdc3ddaaa/540ae/add-okta-application.png 885w,/static/08f9ca0dda0bab2de7678b8cdc3ddaaa/1b198/add-okta-application.png 1120w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;On the next UI, select the platform as &lt;code class=&quot;css-0&quot;&gt;Web&lt;/code&gt; and click &lt;code class=&quot;css-0&quot;&gt;Next&lt;/code&gt;. Enter the Application name and tick the &lt;code class=&quot;css-0&quot;&gt;Client Credentials&lt;/code&gt; under &lt;code class=&quot;css-0&quot;&gt;Grant Type Allowed&lt;/code&gt; section and &lt;code class=&quot;css-0&quot;&gt;Done&lt;/code&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;img src=&quot;/dca09c8f15f7defa84f403739a816723/create-okta-application.gif&quot; alt=&quot;Create Okta Application&quot; class=&quot;css-0&quot;/&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;After the successful creation of the Application, copy both the Consumer Key and Consumer Secret for future references.&lt;/p&gt;&lt;h2 id=&quot;WSO2-API-Manager&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#WSO2-API-Manager&quot; aria-label=&quot;WSO2 API Manager permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;WSO2 API Manager&lt;/h2&gt;&lt;h3 id=&quot;Okta-Extension&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Okta-Extension&quot; aria-label=&quot;Okta Extension permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Okta Extension&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Clone or download the WSO2 API Manager Okta extension implementation from &lt;a href=&quot;https://github.com/athiththan11/apim-keymanager-okta&quot; class=&quot;css-0&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;div title=&quot;APIM Keymanager Okta&quot; class=&quot;css-0&quot;&gt;&lt;/div&gt;&lt;p class=&quot;css-0&quot;&gt;Navigate to the &lt;code class=&quot;css-0&quot;&gt;/artifacts&lt;/code&gt; folder in the root of the project to find the pre-built okta extension JAR artifacts and other related configuration artifacts. Moreover, you are welcomed to build the okta extension JAR artifact by building the project.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Copy and place the &lt;code class=&quot;css-0&quot;&gt;oktaoauthclient-x.x.x.jar&lt;/code&gt; inside the &lt;code class=&quot;css-0&quot;&gt;&amp;lt;APIM&amp;gt;/repository/components/lib&lt;/code&gt; directory.&lt;/p&gt;&lt;h3 id=&quot;API-Manager-XML&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#API-Manager-XML&quot; aria-label=&quot;API Manager XML permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;API Manager XML&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Download the WSO2 APIM v2.6 pack, extract and navigate to &lt;code class=&quot;css-0&quot;&gt;&amp;lt;APIM&amp;gt;/repostiry/conf/api-manager.xml&lt;/code&gt; to configure third-party Key Manager.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Uncomment the &lt;code class=&quot;css-0&quot;&gt;APIKeyManager&lt;/code&gt; configuration block in the &lt;code class=&quot;css-0&quot;&gt;api-manager.xml&lt;/code&gt; and edit/add the following&lt;/p&gt;&lt;pre class=&quot;prism-code language-xml&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;APIKeyManager&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;KeyManagerClientImpl&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;org.wso2.okta.client.OktaOAuthClient&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;KeyManagerClientImpl&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;Configuration&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;oktaInstanceUrl&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;{Okta Instance URL}&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;oktaInstanceUrl&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;authorizationServerId&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;{Okta Authorization Server Name/ID}&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;authorizationServerId&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;apiKey&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;{Okta Authorization Server API Token}&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;apiKey&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;client_id&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;{Okta Application Client ID}&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;client_id&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;client_secret&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;{Okta Application Client Secret}&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;client_secret&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;Configuration&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;APIKeyManager&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;Given below is a sample configuration&lt;/p&gt;&lt;pre class=&quot;prism-code language-xml&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;APIKeyManager&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;KeyManagerClientImpl&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;org.wso2.okta.client.OktaOAuthClient&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;KeyManagerClientImpl&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;Configuration&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;oktaInstanceUrl&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;https://dev-12345.oktapreview.com&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;oktaInstanceUrl&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;authorizationServerId&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;default&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;authorizationServerId&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;apiKey&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;00adc_bXcT123456789&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;apiKey&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;client_id&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;0o2fg123456789gfL0h7&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;client_id&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;client_secret&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;BwhHU123456789_wpKQg&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;client_secret&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;Configuration&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;APIKeyManager&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;h3 id=&quot;Store-Sub-Theme&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Store-Sub-Theme&quot; aria-label=&quot;Store Sub Theme permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Store Sub-Theme&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;As of the next step, we will be configuring the Store portal theme to revamp the Application generation UI to support Okta connected parameters and input fields.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Navigate to the &lt;code class=&quot;css-0&quot;&gt;&amp;lt;OktaProject&amp;gt;/artifacts/store&lt;/code&gt; directory and copy and place/replace the &lt;code class=&quot;css-0&quot;&gt;locale_default.json&lt;/code&gt; into &lt;code class=&quot;css-0&quot;&gt;&amp;lt;APIM&amp;gt;/repository/deployment/server/jaggeryapps/store/site/conf/locales/jaggery&lt;/code&gt; directory.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Copy the &lt;code class=&quot;css-0&quot;&gt;okta&lt;/code&gt; theme folder and place it inside the &lt;code class=&quot;css-0&quot;&gt;&amp;lt;APIM&amp;gt;/repository/deployment/server/jaggeryapps/store/site/themes/wso2/subthemes&lt;/code&gt; directory.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Open up the &lt;code class=&quot;css-0&quot;&gt;&amp;lt;APIM&amp;gt;/repository/deployment/server/jaggeryapps/store/site/conf/site.json&lt;/code&gt; and declare the &lt;code class=&quot;css-0&quot;&gt;okta&lt;/code&gt; as a sub-theme by making the following changes&lt;/p&gt;&lt;pre class=&quot;prism-code language-json&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;theme&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;base&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;wso2&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;subtheme&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;okta&amp;quot;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  ...&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;h2 id=&quot;-Voila-&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-Voila-&quot; aria-label=&quot; Voila  permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;🎉 Voila!!! 🎉&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;Now we have successfully configured Okta as a third-party Key Manager with the WSO2 API Manager. Let’s dive into a test-drive.&lt;/p&gt;&lt;h3 id=&quot;Test-Drive-with-Okta&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Test-Drive-with-Okta&quot; aria-label=&quot;Test Drive with Okta permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Test Drive with Okta&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Let’s start the WSO2 API Manager server by navigating to &lt;code class=&quot;css-0&quot;&gt;&amp;lt;APIM&amp;gt;/bin&lt;/code&gt; directory and executing the following based on your environment&lt;/p&gt;&lt;pre class=&quot;prism-code language-shell&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;# linux&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;./wso2server.sh&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;# windows&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;wso2server.bat&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;After a successful startup, direct to &lt;code class=&quot;css-0&quot;&gt;https://&amp;lt;ip&amp;gt;:9443/publisher&lt;/code&gt; and log in with the admin credentials&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Username: &lt;code class=&quot;css-0&quot;&gt;admin&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Password: &lt;code class=&quot;css-0&quot;&gt;admin&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;and deploy a sample API for our test drive (let’s deploy the one and only PizzaShack API).&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Next, direct to the Store portal by routing to &lt;code class=&quot;css-0&quot;&gt;https://&amp;lt;ip&amp;gt;:9443/store&lt;/code&gt; and let’s sign-in with the above-mentioned admin credentials.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Steer to &lt;code class=&quot;css-0&quot;&gt;Applications&lt;/code&gt; &amp;gt; &lt;code class=&quot;css-0&quot;&gt;Add Application&lt;/code&gt; to create a new Store Application.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;By default, there will be a Default Application created (once logged in) for each and every user who has the &lt;code class=&quot;css-0&quot;&gt;internal/subscriber&lt;/code&gt; role and permissions&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/2a8f08ec0c6f72dc6156a5ba2fdce679/a91f8/store-add-application.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:34.45945945945946%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAIAAACHqfpvAAAACXBIWXMAAAsTAAALEwEAmpwYAAABVklEQVQY02MwVFPwt9CO9bQ1NDC2MDO3MLfQ1tKWkZaRl5OVk5OVx4sY1FXkLfVVvZzMtfV0tfW09YwMNLU05RXkFRSVFZSU5RSUkBFQRBEJMaSuKQlZnB67tCBxeUHSisKk5YUB8xP9FyY41K8IaDzlUHHQruyQXfkh27JDDhWHDHP362Tt082GIobShR3Jc4sTF+QmLyiAoIjZaaEzk9PnHqhd8apw4YPCBQ/zFzwsWPCwcOHDjNn3U2beT4Uhhll5Rwui21LTk0JDQ/38/AICAoICgwL8A44dPfbly9d37959RAKfPoHQxw9A8B6IGLblNdZExEfGxsRERQfBgH8AUPPRHz++P3/27AkYPH0KIZ8+e/r0zevXIN3v3zPc7wrtS3JPyczNyc4ODg6GaAbafxSk+cfDhw/37t178ODBU6dOAUVOnjx5/Pjxu3fvfvr0CegoALpPy1PQ3/heAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Add Store Application&quot; title=&quot;Add Store Application&quot; src=&quot;/static/2a8f08ec0c6f72dc6156a5ba2fdce679/6d370/store-add-application.png&quot; srcSet=&quot;/static/2a8f08ec0c6f72dc6156a5ba2fdce679/c5084/store-add-application.png 148w,/static/2a8f08ec0c6f72dc6156a5ba2fdce679/60cc9/store-add-application.png 295w,/static/2a8f08ec0c6f72dc6156a5ba2fdce679/6d370/store-add-application.png 590w,/static/2a8f08ec0c6f72dc6156a5ba2fdce679/540ae/store-add-application.png 885w,/static/2a8f08ec0c6f72dc6156a5ba2fdce679/a91f8/store-add-application.png 960w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Give inputs to all required fields and click on Add to create the Application.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/3bf705b5b17b96865665510f84ff10e4/a8177/store-application-create.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:44.5945945945946%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAIAAAC9o5sfAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAz0lEQVQoz41QSQ7CMAzM/1/AN3gGEmfECYkrSkLUpM4eGMUotBEHppLrujMe2+LVUWv1RK3WmFKMMYSASmsofNE2YJXgF74hSilpraWU1tpSyiANzg8xNMYY51zKWSmFhKnQhw7vPeLQj3aCZ4YeVETYwtx0PDt0B4/DjcDfjQ1lzpm78M4DqPNfXmR2BoiI90TjdV2pAzkiip+d+0M5Slp2Ynh20nyh6VTIYsk2+p0YZs5aZez5coMhhuSDTQefILYm1/vjcDwti8Xarz/wBtJbEGuECqFwAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Store Application&quot; title=&quot;Store Application&quot; src=&quot;/static/3bf705b5b17b96865665510f84ff10e4/6d370/store-application-create.png&quot; srcSet=&quot;/static/3bf705b5b17b96865665510f84ff10e4/c5084/store-application-create.png 148w,/static/3bf705b5b17b96865665510f84ff10e4/60cc9/store-application-create.png 295w,/static/3bf705b5b17b96865665510f84ff10e4/6d370/store-application-create.png 590w,/static/3bf705b5b17b96865665510f84ff10e4/540ae/store-application-create.png 885w,/static/3bf705b5b17b96865665510f84ff10e4/2561a/store-application-create.png 1180w,/static/3bf705b5b17b96865665510f84ff10e4/a8177/store-application-create.png 1710w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;After the successful creation of our demo application, let’s direct to &lt;code class=&quot;css-0&quot;&gt;Production Keys&lt;/code&gt; tab to generate Consumer Secrets and Access Tokens using Okta third-party Key Manager.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;strong class=&quot;css-0&quot;&gt;A Quick Glance on the Generation Flow&lt;/strong&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;At the generation of &lt;code class=&quot;css-0&quot;&gt;Production Keys&lt;/code&gt; and &lt;code class=&quot;css-0&quot;&gt;Sandbox Keys&lt;/code&gt; of an Application, the APIM will communicate with the configured Okta IdP to create a dynamic-client using the DCR (Dynamic Client Registration) endpoint. Upon successful creation, Okta responds back to the APIM Server with the populated metadata to store and to communicate again with Okta to generate the access tokens to invoke the APIs.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Please follow the given instructions in &lt;a href=&quot;https://github.com/wso2-extensions/apim-keymanager-okta/blob/master/docs/config.md&quot; class=&quot;css-0&quot;&gt;here&lt;/a&gt; to change the endpoints of Token, and Revoke endpoints to point to the Okta server.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;All created dynamic-clients will follow the naming structure as &lt;code class=&quot;css-0&quot;&gt;{ApplicationName_[PRODUCTION|SANDBOX]}&lt;/code&gt; to keep track of the created clients based on the Key Type&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;Provide the following at the prompted UI to generate the Consumer keys&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Callback URL: &lt;code class=&quot;css-0&quot;&gt;https://localhost&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Application Type: &lt;code class=&quot;css-0&quot;&gt;web&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Response Type: &lt;code class=&quot;css-0&quot;&gt;code,token,id_token&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Token Endpoint Auth Method: &lt;code class=&quot;css-0&quot;&gt;client_secret_basic&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Token Scope: &lt;code class=&quot;css-0&quot;&gt;default&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Token Grant Type: &lt;code class=&quot;css-0&quot;&gt;client_credentials&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/3d819d224f881e34b4b78c1940c810cf/6e199/production-key-generate.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:80.4054054054054%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAIAAACZeshMAAAACXBIWXMAAAsTAAALEwEAmpwYAAABO0lEQVQoz5WSy07DMBBF8/+/wZ4NW1as2LMBgZSSqG3iJH7E41fzKBNP0iKBKvfIssaWr++MPVlZlqyurTFa97uNPM/3CWSMi0bK3hhAfb+gtQYAm0DWaehUL6PILP4ad4ebnDYypVTDWNs0XdeNwzDP8ziO0zTR/Du4LPHMOZJxLg6HI16B3pSMi3jvjXWYi4s7OPUaKEbPVfz+3dWtDN7RGstFGcVfe8UVUCwh7I7qfJ5WUxKDcTpeSWX4CMV2sQ/bfsBxKXgTA+Df1FWFBy8Jr0Ecf8HSqOxFXFWV4NxHWUgAj13FjDEpxCkE5/91uumcx5bCzLHPfAKoX8X4GW2Evuo+Z2ypoiiklPiSIY2rs7VGSw5K0DvflzZrxcPTy+PzK7aHs0lgpVvaYN4+i4/dAfM5pYEFUpP8ALtpmNs3tO5WAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Production Key Generation&quot; title=&quot;Production Key Generation&quot; src=&quot;/static/3d819d224f881e34b4b78c1940c810cf/6d370/production-key-generate.png&quot; srcSet=&quot;/static/3d819d224f881e34b4b78c1940c810cf/c5084/production-key-generate.png 148w,/static/3d819d224f881e34b4b78c1940c810cf/60cc9/production-key-generate.png 295w,/static/3d819d224f881e34b4b78c1940c810cf/6d370/production-key-generate.png 590w,/static/3d819d224f881e34b4b78c1940c810cf/540ae/production-key-generate.png 885w,/static/3d819d224f881e34b4b78c1940c810cf/2561a/production-key-generate.png 1180w,/static/3d819d224f881e34b4b78c1940c810cf/6e199/production-key-generate.png 2282w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Upon successful generation of the key, the APIM server will prompt a similar UI as following&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;Please make sure to note the generated Consumer Key and Consumer Secret because as this will be only displayed one time&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/d9cc35884afef19443cc8be12f690eab/36aa2/store-production-keys.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:74.32432432432432%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAIAAABr+ngCAAAACXBIWXMAAAsTAAALEwEAmpwYAAABUElEQVQoz5WSTW7DIBCFff8D9BC9Qrddd9tl5Sb+aWxiMDbDgDF9QBJVXTlPCM0M/jTDw9UwDF3XWWuZ2R6Wcy7GWF2FaJtmVoogY9IiQzeV9JGZskPgE0zWrsaw9z6EPcYjK8TIpTMr6aRkMVg50XU042CGC4mRxiHvFxpHmnB0fdQNikKEbatoWUhro2dal8C8sQ1pcY5LysG54FCxuXI72ve9atu2ruu26xDgRpgH1lF2BXFKrUXdFkthKjOuvoWQxp4mKYQo7jnvlZrhx7bhNIBG6r0rKfzSWsMcpGib4GWlh3t+C3LW6BSzAOtliXcZsiDjH1XzPP/0PXg0x1Qui+/6G/9TgpVSTdPgtcvdjisZJqXs+x797ZNKMDoDltPksrFPwlKevuvz+YyfnLJzT8Bikl/1CSTmv73ncfj94/Pl9c3knx77ekDlY7j9C9UOYxY80SMeAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Production Keys&quot; title=&quot;Production Keys&quot; src=&quot;/static/d9cc35884afef19443cc8be12f690eab/6d370/store-production-keys.png&quot; srcSet=&quot;/static/d9cc35884afef19443cc8be12f690eab/c5084/store-production-keys.png 148w,/static/d9cc35884afef19443cc8be12f690eab/60cc9/store-production-keys.png 295w,/static/d9cc35884afef19443cc8be12f690eab/6d370/store-production-keys.png 590w,/static/d9cc35884afef19443cc8be12f690eab/540ae/store-production-keys.png 885w,/static/d9cc35884afef19443cc8be12f690eab/2561a/store-production-keys.png 1180w,/static/d9cc35884afef19443cc8be12f690eab/36aa2/store-production-keys.png 2160w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;If we navigate to the Okta Dev portal, there we can see a new application with the name &lt;code class=&quot;css-0&quot;&gt;OktaDemoApplication_PRODUCTION&lt;/code&gt; as follows&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/98975eff93b9312cac33bdc5bdcf8061/42cbc/okta-demo-application.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:103.37837837837837%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAVCAIAAADJt1n/AAAACXBIWXMAAAsTAAALEwEAmpwYAAABb0lEQVQ4y42UbbOCIBBG/f//selbU/mWIgihck/slUtmdzyTSosP++zCWIQQnHPLsnjv53leVkJYQhxIUO7hnUImTqfT4/FAX9d10zRt2/Ksm1YpRYQpIsaYHTGP8/mstWaAchzHUndqtL1x0zwTXL1sKbjUMPjJC7iw1vppCgco5mVujBqclRoRT9OUF/8PL9tUdb/dLpcLA70yfIdG9H1PgoKr6zppCSF9ANG/xGQere2t0Xak5ueK/+CZIbv7EvdKVVUlfXYReoaXJoIj7qRyGbzwmxnb1+sVPSGZYxXEZgWrad2tmFUlA8WkOREwkLt750/Me+Qhf/LGHGvdImVZknxfzMWfvBNJXEZk/76KP10BXu6RvJGHxFigChHjOe3T0cxoyIltLMiRgqNiglRbRVgCCzSPRuyIn26HMSK7ldhuFfP88pJS5e4L2SEZhrprOe9sSX7Ido/HVszBojfyAUJAQtlnIrRtN7+IfwBWmsLXsBBpMgAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Okta Demo Application&quot; title=&quot;Okta Demo Application&quot; src=&quot;/static/98975eff93b9312cac33bdc5bdcf8061/6d370/okta-demo-application.png&quot; srcSet=&quot;/static/98975eff93b9312cac33bdc5bdcf8061/c5084/okta-demo-application.png 148w,/static/98975eff93b9312cac33bdc5bdcf8061/60cc9/okta-demo-application.png 295w,/static/98975eff93b9312cac33bdc5bdcf8061/6d370/okta-demo-application.png 590w,/static/98975eff93b9312cac33bdc5bdcf8061/540ae/okta-demo-application.png 885w,/static/98975eff93b9312cac33bdc5bdcf8061/2561a/okta-demo-application.png 1180w,/static/98975eff93b9312cac33bdc5bdcf8061/42cbc/okta-demo-application.png 1600w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;As of next step, copy the generated access token and invoke the deployed sample PizzaShack API.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;strong class=&quot;css-0&quot;&gt;Keep Stacking !!!&lt;/strong&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[WSO2 API Manager & Okta SSO]]></title><link>https://stackcheats.github.io/wso2-api-manager-okta-sso/content/</link><guid isPermaLink="false">https://stackcheats.github.io/wso2-api-manager-okta-sso/content/</guid><pubDate>Fri, 20 Dec 2019 00:00:00 GMT</pubDate><content:encoded>&lt;style data-emotion-css=&quot;sa2dbt&quot;&gt;body{color:text;background-color:var(--theme-ui-colors-background,#fff);}&lt;/style&gt;&lt;style data-emotion-css=&quot;0&quot;&gt;&lt;/style&gt;&lt;h2 id=&quot;-Intro&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-Intro&quot; aria-label=&quot; Intro permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;🔑 Intro&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;This medium illustrates and walk-through on how to configure OpenID Connect SSO between WSO2 API Manager and Okta Identity Provider as well as to provision users from Okta to the WSO2 API Manager.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;We will be using WSO2 API Manager v2.6 for this demo&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;We will be going through flows and the configurations with the following breakdowns&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Okta Developer Account Creation&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Okta Authorization Server&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Okta Application&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Okta User &amp;amp; Claims&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;WSO2 API Manager: Identity Provider&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;WSO2 API Manager: Service Provider&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;WSO2 API Manager: Store Configurations&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;Let’s get started…&lt;/p&gt;&lt;h2 id=&quot;Okta&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Okta&quot; aria-label=&quot;Okta permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Okta&lt;/h2&gt;&lt;h3 id=&quot;Okta-Developer-Account&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Okta-Developer-Account&quot; aria-label=&quot;Okta Developer Account permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Okta Developer Account&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;As of our very first step, we need an Okta Cloud IDP account. Therefore, for demo purposes, we will be creating an Okta Developer account for trial and error scenarios.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Open up your favorite browser and direct to &lt;a href=&quot;https://developer.okta.com&quot; class=&quot;css-0&quot;&gt;https://developer.okta.com&lt;/a&gt; and register for a new Developer account to enjoy free trial on using Okta Cloud IDP.&lt;/p&gt;&lt;h3 id=&quot;Okta-Authorization-Server&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Okta-Authorization-Server&quot; aria-label=&quot;Okta Authorization Server permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Okta Authorization Server&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;After creating an Okta developer account, sign-in to the developer console and navigate to &lt;code class=&quot;css-0&quot;&gt;API&lt;/code&gt; &amp;gt; &lt;code class=&quot;css-0&quot;&gt;Authorization Server&lt;/code&gt; to list down the default Okta Authorization server.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/3c14a68e9c1e4a04d74db82c3a5cfedf/d9349/okta-authorization-server.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:41.21621621621622%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAIAAAB2/0i6AAAACXBIWXMAAAsTAAALEwEAmpwYAAABwUlEQVQY001R227TQBD1b9AWaHyJTUO83rVT73qd2InjJiFJUweB2iJUwhcgPoUXHopUFSR44RN44NaqKQmJ7TiVoBK/QAWofYhqtlSqGB2NzlyOZkbD0foacupLuKwUSpJuy0bplul6q/dV6suFEsuzDCMisnmNXEIA5Cm9+4R2uVEYj6OY+TiZhpMkSqaMDEbhp/2DvYPD/uBrGCfR5CiaJGE8ucKP6bfj+IgbjqN37z9++LzfH44OhyPWPRhHZ2enaXqepulsNmNhf8BK4/+x92U4/X7Mtde35hUkQrIIcAbgGzkjh92fJyfpP/v1+89tUllY0jPAXFQvkFFNXsPXZBg8eMx1Nh5dzxmiZvF5LCB6U8U50332/MX2yzc7r99u777SyzVFL2aRLWqYzeDVZQkSJlld3+I6m715GallDzRqCFqkQJFbz9Mq1JGxrEtaBeE7RquuVauiURX0EvS7eae5oEAm5NY2e3NZaLaa5F5gY9cvVky/bTcCz3NWVpyC09Vx0wxaRqOWL7YV07ODh8jvzsngQtzZ6LEdsoiKKhF0m0dUYP9g90Oa0aiIiICIBCwRWBIj0BKAebk2u/cvIyDAP4ekZAYAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Okta Authorization Server&quot; title=&quot;Okta Authorization Server&quot; src=&quot;/static/3c14a68e9c1e4a04d74db82c3a5cfedf/6d370/okta-authorization-server.png&quot; srcSet=&quot;/static/3c14a68e9c1e4a04d74db82c3a5cfedf/c5084/okta-authorization-server.png 148w,/static/3c14a68e9c1e4a04d74db82c3a5cfedf/60cc9/okta-authorization-server.png 295w,/static/3c14a68e9c1e4a04d74db82c3a5cfedf/6d370/okta-authorization-server.png 590w,/static/3c14a68e9c1e4a04d74db82c3a5cfedf/540ae/okta-authorization-server.png 885w,/static/3c14a68e9c1e4a04d74db82c3a5cfedf/2561a/okta-authorization-server.png 1180w,/static/3c14a68e9c1e4a04d74db82c3a5cfedf/d9349/okta-authorization-server.png 2040w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;We will be looking at a similar page as follows with a default Authorization server created in Okta.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;For security concerns, all attached screenshots are masked&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;We can either create a new Authorization server or we can continue using the default Authorization server to configure Okta. As for this demo, we will be continuing our configurations with the Default Authorization Server created by Okta…&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/b5c293c9670aa01c628b065beebebfee/45416/default-authorization-server.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:57.432432432432435%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAiklEQVQoz+WPUQvDIAyE8///6SopmkZn1NrdJg5GGQz6uO8hGHIXL5RSijHWWvuktXb8BqVqrGFVycVgw5ZSSpvs38E3FEJYlptzjplFBK33fpvIJ5iqas4ZeVFJYwqyrcwIj3448R5qiO4nxt6nue0dEZAWSXDGu5YXyHY+1cwwgoaOC/yluV/gAVB0igsvxskDAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Default Authorization Server&quot; title=&quot;Default Authorization Server&quot; src=&quot;/static/b5c293c9670aa01c628b065beebebfee/6d370/default-authorization-server.png&quot; srcSet=&quot;/static/b5c293c9670aa01c628b065beebebfee/c5084/default-authorization-server.png 148w,/static/b5c293c9670aa01c628b065beebebfee/60cc9/default-authorization-server.png 295w,/static/b5c293c9670aa01c628b065beebebfee/6d370/default-authorization-server.png 590w,/static/b5c293c9670aa01c628b065beebebfee/540ae/default-authorization-server.png 885w,/static/b5c293c9670aa01c628b065beebebfee/2561a/default-authorization-server.png 1180w,/static/b5c293c9670aa01c628b065beebebfee/45416/default-authorization-server.png 2080w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;h3 id=&quot;Okta-OIDC-Application&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Okta-OIDC-Application&quot; aria-label=&quot;Okta OIDC Application permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Okta OIDC Application&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Next, we will be creating an Okta application for our OpenID Connect SSO flow. In the Okta developer portal, select &lt;code class=&quot;css-0&quot;&gt;Applications&lt;/code&gt; from the top navigation bar as follows…&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/2ef8ccec74f4669717dc4c112ba735f8/78d47/okta-application-navigation.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:41.21621621621622%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAIAAAB2/0i6AAAACXBIWXMAAAsTAAALEwEAmpwYAAABqUlEQVQY003P327TMBQG8D4EXIwwpjVJkzVZE9tJHdtNVqdtsqVNYCiaisY0NLiH5+JmF23HWhq4QEJCQrwB7A9jXafBM+BqYkL6XXw+Op/kU+JpTjop9CPT47jVzfde0Sir4o11EtZoyyTcIPxNM38d5ApimuPf0d2g9P3H6cnJ2enZ+a/L2dX8+ub3n9l8LrJ43bm5uhYuLmf/O/95Ufr46fPbw8Hh8N1oUozGxfB4KsLR5MPRpBiOp6PxdBEmxWBcLBb+GRy///L1W6m7s3dfXl8xXamKHq5BQRJ0uKTZhtc0MF+q2NLtcA1JiwW0bDj3ZDPJd0vbz18+Ml0VMLlGZMRWAdUdX5xqBTHdfMriDASdmhfqKFCAp0IqW1gFdMWsZ/19UT6QNGi3OzDrOoD69QYKExo/2QhYyJlFeggnqBfbUbuCI8VtOps7Fs8k3c76LxblBxXgbiV4OyO4yRuhEya4nfqBz7kPWArwVj1NYBwZLNHqIek9A63HknZb3j1YrqIKbCgWlVGjDJlsk7LllQFbtZkCiaCKYFHxZ0GxPBUQcXba3/8LFPyw30VmkJQAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Okta Application Navigation&quot; title=&quot;Okta Application Navigation&quot; src=&quot;/static/2ef8ccec74f4669717dc4c112ba735f8/6d370/okta-application-navigation.png&quot; srcSet=&quot;/static/2ef8ccec74f4669717dc4c112ba735f8/c5084/okta-application-navigation.png 148w,/static/2ef8ccec74f4669717dc4c112ba735f8/60cc9/okta-application-navigation.png 295w,/static/2ef8ccec74f4669717dc4c112ba735f8/6d370/okta-application-navigation.png 590w,/static/2ef8ccec74f4669717dc4c112ba735f8/78d47/okta-application-navigation.png 800w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Then, click on &lt;code class=&quot;css-0&quot;&gt;Add Application&lt;/code&gt; to create a new Okta application.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/9924f514d199f999b98a379e0c382a05/78d47/okta-add-application.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:35.810810810810814%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAIAAACHqfpvAAAACXBIWXMAAAsTAAALEwEAmpwYAAABKElEQVQY02OQtwxQtA5Usw9RdwjXcAgHkiq2oTquUVrOkVpOEVpOkWp2oTJmfnLm/rLmfrIgMgDM8JOz8GfQMnf0CI52CYjQNLMHIm0LR1VjGw0ze1UjGx1LJwNbN00zB3UTWyACcrXMHVQMrYFqgGwNUzsGS1cfn/A4n7BYSxcfMycvIGni4AFkAElLV18bd39zMNvY3sPc2dvMydPY3t3C2cfCxcfU0ZPh9Zu3z168ePHq9eu3b9+8fQck371///bdOyACct+8fQtmvwehtyDBt++hUm/fvmf48P7988ePv336/PXT5y8fPn759Pnvv3//iQMMH79/ufLi4bWXj66/enzpxf1nH98CRYnUzXDr7dOe4xt7Tm6ccGpL4+FVe+5dBIoSaTkAjxcN1RG2z1cAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Okta Add Application&quot; title=&quot;Okta Add Application&quot; src=&quot;/static/9924f514d199f999b98a379e0c382a05/6d370/okta-add-application.png&quot; srcSet=&quot;/static/9924f514d199f999b98a379e0c382a05/c5084/okta-add-application.png 148w,/static/9924f514d199f999b98a379e0c382a05/60cc9/okta-add-application.png 295w,/static/9924f514d199f999b98a379e0c382a05/6d370/okta-add-application.png 590w,/static/9924f514d199f999b98a379e0c382a05/78d47/okta-add-application.png 800w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;On the next UI, select the platform as &lt;code class=&quot;css-0&quot;&gt;Web&lt;/code&gt; and click on &lt;code class=&quot;css-0&quot;&gt;Next&lt;/code&gt;. Enter the Application Name and tick the &lt;code class=&quot;css-0&quot;&gt;Client Credentials&lt;/code&gt; under the &lt;code class=&quot;css-0&quot;&gt;Grant Type Allowed&lt;/code&gt; section and &lt;code class=&quot;css-0&quot;&gt;Done&lt;/code&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;img src=&quot;/33e2906107e3c6c91169b39653f9adfc/okta-create-application.gif&quot; alt=&quot;Okta Create Application&quot; class=&quot;css-0&quot;/&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;After successful creation of our Okta Application, click on Edit and make the following changes&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Login Redirect URI: &lt;code class=&quot;css-0&quot;&gt;https://localhost:9443/commonauth&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Logout Redirect URI: &lt;code class=&quot;css-0&quot;&gt;https://localhost:9443/commonauth&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Initiate Login URI: &lt;code class=&quot;css-0&quot;&gt;https://localhost:9443/store/&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/4dce0435592485b928aeb9482ad00394/3643c/okta-application-configuration.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:45.94594594594595%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAIAAAC9o5sfAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAx0lEQVQoz2WSURKDIAxEuf9RQRFBEKmd6ZPUlLH7FWJ2s0k0ue6x5FdHa+240f5wDJCMSSlZ5+Z5nqaJWIpqraljXdcQQoxx27ZRqJSy77uhLudcbogwH7z3zjmhAWpGslAusjKJhUwAjZ4ip/kHLtt0wLO1FpNKXpYFsu8goOx14zxPvFydebw7SOlWsI0Qitr50VwyBg2KaK7bEjJGcD4ueZzra5vRQ4esRMlilSTqPKXb43K/meUY6koUmZwrIsFQ8iOM5A9LcAeBo6doMgAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Okta Application Configuration&quot; title=&quot;Okta Application Configuration&quot; src=&quot;/static/4dce0435592485b928aeb9482ad00394/6d370/okta-application-configuration.png&quot; srcSet=&quot;/static/4dce0435592485b928aeb9482ad00394/c5084/okta-application-configuration.png 148w,/static/4dce0435592485b928aeb9482ad00394/60cc9/okta-application-configuration.png 295w,/static/4dce0435592485b928aeb9482ad00394/6d370/okta-application-configuration.png 590w,/static/4dce0435592485b928aeb9482ad00394/540ae/okta-application-configuration.png 885w,/static/4dce0435592485b928aeb9482ad00394/2561a/okta-application-configuration.png 1180w,/static/4dce0435592485b928aeb9482ad00394/3643c/okta-application-configuration.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;h3 id=&quot;Okta-User--Claims&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Okta-User--Claims&quot; aria-label=&quot;Okta User  Claims permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Okta User &amp;amp; Claims&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;To login to the WSO2 API Manager Store portal, the Okta users need to have the &lt;code class=&quot;css-0&quot;&gt;internal/subscriber&lt;/code&gt; roles assigned to them. As well as the Okta has to pass the assigned Roles with the JWT to the WSO2 API Manager at the point of the federation to sign-in the Okta user to the Store portal.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Navigate to &lt;code class=&quot;css-0&quot;&gt;Users&lt;/code&gt; &amp;gt; &lt;code class=&quot;css-0&quot;&gt;Profile Editor&lt;/code&gt; and select the Okta user profile to edit it. On the following screen, select &lt;code class=&quot;css-0&quot;&gt;Add Attribute&lt;/code&gt; and make the following changes and &lt;code class=&quot;css-0&quot;&gt;Save&lt;/code&gt; the attribute&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/eff20a6c37c2a77968dbf3e14c49b95d/dc057/okta-role-attribute.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:78.37837837837837%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAYAAAAWGF8bAAAACXBIWXMAAA7DAAAOwwHHb6hkAAABuElEQVQ4y52TyUoDQRCG+6TPqYIHz3oQEcWDF+/iSygiLiiIiSIIbqDgjh7UgE5mMkv3rIm/VT12MpOEKB4+qrq75u/qqhohZioYmqtieP4QYvoAYnIfYmo/t/9hfP0OExv3mrG1W4ys3hS4xejanbZm3ctNCYFmgmYkgSwG0CSyDl8ZvmI6a6XaL9FKcosyIpAKH58WnIYL9sMobqPCCJ9WHT7tS/KlCnPCUMfyeSmeECEdOo6DRqOhbRwnRIw4SRBFJCIl0jT9E/wdCSrYtg3HdrTlCxISYzhAKYksy0r8Ihjq7DzP1xnxZlEwCAINZyrpmexz3O+Cvt8WMaJG0KczI8r+QEGlFKx6XT+XhY1Q8lNDy7Lgum7nsiS/kMXNi4qI4qJfhnlN03YZGJNRd217BLvFOXvP8zqd/wOCPyx2rvvJLDqos31rWKcamlns1+XiKEW0NwjBWXTGQvbUkC8s7iFrFWj2rIURMpi560YSjufi6PUB1dd7nLw/4az2jKO3Bxy/PWp7Xnuhf5kDaWR4NHjGuAn9kH6Amm1h/nQLs6ebWLrcw/JVBQvn21i82CW7g5XrKr4BZ8OeASrzhH0AAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Okta Role Attribute&quot; title=&quot;Okta Role Attribute&quot; src=&quot;/static/eff20a6c37c2a77968dbf3e14c49b95d/6d370/okta-role-attribute.png&quot; srcSet=&quot;/static/eff20a6c37c2a77968dbf3e14c49b95d/c5084/okta-role-attribute.png 148w,/static/eff20a6c37c2a77968dbf3e14c49b95d/60cc9/okta-role-attribute.png 295w,/static/eff20a6c37c2a77968dbf3e14c49b95d/6d370/okta-role-attribute.png 590w,/static/eff20a6c37c2a77968dbf3e14c49b95d/dc057/okta-role-attribute.png 678w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Then move to &lt;code class=&quot;css-0&quot;&gt;API&lt;/code&gt; &amp;gt; &lt;code class=&quot;css-0&quot;&gt;Authorization Server&lt;/code&gt; and select our default Authorization server. Direct to &lt;code class=&quot;css-0&quot;&gt;Claims&lt;/code&gt; tab and click on &lt;code class=&quot;css-0&quot;&gt;Add Claim&lt;/code&gt; to create a new claim for our Role attribute.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Do the following configurations and save…&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/331bb0b71948b347b245ad1d9e621779/dbf98/okta-role-claim.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:89.1891891891892%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAYAAABb0P4QAAAACXBIWXMAAA7DAAAOwwHHb6hkAAACKklEQVQ4y6VUy4oVMRCNGxd+kK4EwY+anYgg+AmCA+5d6UKYleBjIzgzzuDiiigIw9WhX+lO0o90N+U5uZ2+zczlMuDiUEmqUnXqkahbj97LnScf5fbjD6IO3v0/7r84lYcvz+TB4ancfX58Dfd2nO2Dsq4WbazYupG6aWc0LWUj1rkgl7p9UM5ayfNc+r7fwHvpui6gpUPoB5xHjOMg4zBs7afzzT06BEM6zLJMkiTBupC27QLqGroil0Jr7Fs4d8GuKGCDgM2UCcFMKBUv0aAsy8DGQREZRp0uNS43YW+MCXZc8yyCewZVdMCodOindKmgpC5NUyAL66UDOqWkbQTvqHhJI62ts42BZ2NMhehuqqGf0QMkEBHvKkahU1KOh8TQd/KnsPJ9nUtaGMkrJ5eQfwFK45rZ0dzEpcOYUlR4SG1rSbSRCnUrMVqlcVKhiQaor6S7TRm1YA2ZNrs4swxjU4tFyqFpLMkUyC8YXWNYI1qWpaF7TGEZLRSfzNAwjpdHHZdl2QUVOxZr2E0K33kprZEkzyRLUsmn+TNgvItdhLpKecnQcbCrKtRPV3hRugz128twV5R2qpPBS/i2LmSVoNupk/OLQtZ28/x6Pj8+w3EMGLAPDPdFix/EEj1KAU8ifghoF8MeGFZI6SYoqxJDbmV1eSGvfnyRNz+/yttfZ1Lg3Ew2bKxiB28CDbQYq0+/V3Lw+bU8PTmSZ8dHmFN8Hhk+F3wwdPgP/cEz7MZ9kUwAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Role Claim&quot; title=&quot;Role Claim&quot; src=&quot;/static/331bb0b71948b347b245ad1d9e621779/6d370/okta-role-claim.png&quot; srcSet=&quot;/static/331bb0b71948b347b245ad1d9e621779/c5084/okta-role-claim.png 148w,/static/331bb0b71948b347b245ad1d9e621779/60cc9/okta-role-claim.png 295w,/static/331bb0b71948b347b245ad1d9e621779/6d370/okta-role-claim.png 590w,/static/331bb0b71948b347b245ad1d9e621779/dbf98/okta-role-claim.png 612w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;At last, move to &lt;code class=&quot;css-0&quot;&gt;Users&lt;/code&gt; &amp;gt; &lt;code class=&quot;css-0&quot;&gt;People&lt;/code&gt; and select the current User and on the following screen select the &lt;code class=&quot;css-0&quot;&gt;Profile&lt;/code&gt; tab and click on &lt;code class=&quot;css-0&quot;&gt;Edit&lt;/code&gt; to add the &lt;code class=&quot;css-0&quot;&gt;subscriber&lt;/code&gt; role in the &lt;code class=&quot;css-0&quot;&gt;Role&lt;/code&gt; field.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/683ac7a6f7066acd5c9bb17a40985d78/f91ec/okta-role-attribute-user.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:29.054054054054056%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAArUlEQVQY042QzQ7CIBCEeXx9GW+a6DP4F48etCeNTVB+S4HGEUhp6MGmhy8Lu8PsBFLXNaSUsNaibdtEPsfqvYdzbpKsiW8IpRRa65FhiTFmMJ8i6wljbHAvh7HG5OzD0r1MlDQ9tuxFw5zgH6MlfQ++A7pvorNupCcxxVyEEGiUwv5xw/p+wSZQ0RdM+LI4V2FGOOeYCwsYqbC6HrA47bA8bnF+VtBcgL5pWvgDKQXOQwAJ1wwAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Role Attribute Okta User&quot; title=&quot;Role Attribute Okta User&quot; src=&quot;/static/683ac7a6f7066acd5c9bb17a40985d78/6d370/okta-role-attribute-user.png&quot; srcSet=&quot;/static/683ac7a6f7066acd5c9bb17a40985d78/c5084/okta-role-attribute-user.png 148w,/static/683ac7a6f7066acd5c9bb17a40985d78/60cc9/okta-role-attribute-user.png 295w,/static/683ac7a6f7066acd5c9bb17a40985d78/6d370/okta-role-attribute-user.png 590w,/static/683ac7a6f7066acd5c9bb17a40985d78/f91ec/okta-role-attribute-user.png 714w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;h2 id=&quot;WSO2-API-Manager&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#WSO2-API-Manager&quot; aria-label=&quot;WSO2 API Manager permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;WSO2 API Manager&lt;/h2&gt;&lt;h3 id=&quot;OpenID-Connect-Federated-Extension&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#OpenID-Connect-Federated-Extension&quot; aria-label=&quot;OpenID Connect Federated Extension permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;OpenID Connect Federated Extension&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;By default as Out-Of-The-Box, the WSO2 API Manager is only shipped wit the SAML2 Federated Authentication configurations and artifacts. Therefore, to enable OpenID Connect, download the following &lt;a href=&quot;https://drive.google.com/file/d/1ZawWbWCjsx_Z3u6Bpg3OztLqrdDq_N7v/view?usp=sharing&quot; class=&quot;css-0&quot;&gt;OpenID Connect Authenticator artifact from here&lt;/a&gt; and place it inside the &lt;code class=&quot;css-0&quot;&gt;&amp;lt;APIM&amp;gt;/repository/components/dropins&lt;/code&gt; directory.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;Please note that adding the above-mentioned artifact to the WSO2 API Manager to enable OpenID Connect features is not a best practice and not recommended in production environments. Since this is a demo, we have configured it by dropping the artifact inside the &lt;code class=&quot;css-0&quot;&gt;dropins&lt;/code&gt; folder.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;If you want to enable OpenID Connect features in a Production environment, please setup and use WSO2 Identity Server as Key Manager for the WSO2 API Manager and follow the configurations on the WSO2 IS-KM&lt;/p&gt;&lt;/blockquote&gt;&lt;h3 id=&quot;Identity-Provider&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Identity-Provider&quot; aria-label=&quot;Identity Provider permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Identity Provider&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;After ensuring the OpenID Connect features in the WSO2 API Manager, we will be creating an Identity Provider to federate with our Okta Cloud provider.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Fire up the WSO2 API Manager server, and navigate to the Carbon management console and select &lt;code class=&quot;css-0&quot;&gt;Add&lt;/code&gt; under the &lt;code class=&quot;css-0&quot;&gt;Identity Providers&lt;/code&gt; section to register an Identity Provider.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Enter a name for the Identity Provider (for example OktaIDP) and select the &lt;code class=&quot;css-0&quot;&gt;OAuth2/OpenID Connect Configurations&lt;/code&gt; under the &lt;code class=&quot;css-0&quot;&gt;Federated Authenticators&lt;/code&gt; accordion.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/e06b581081bfe3955e69f85790aeabd0/78d47/add-identity-provider.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:35.810810810810814%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAIAAACHqfpvAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAmElEQVQY042QwRLDIAhE8///2Q52jIpaowG1m/TcqXtiGB7Lslm7E1FOKeccAn8VY3wvaGvnebY25+xdDZFzHigWzQVtYFX1hjtzgHmMqZSyBNdaMdpaG11zZh/4MmdGc4zxF24pJRHBqPfeeY/45TiwdAWuiA4f1b67YK1FLaJrmUWQto+hKi9DjyeRMbgFv6i3rkQ/TvgAWGGZp3q3dCgAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Create Identity Provider&quot; title=&quot;Create Identity Provider&quot; src=&quot;/static/e06b581081bfe3955e69f85790aeabd0/6d370/add-identity-provider.png&quot; srcSet=&quot;/static/e06b581081bfe3955e69f85790aeabd0/c5084/add-identity-provider.png 148w,/static/e06b581081bfe3955e69f85790aeabd0/60cc9/add-identity-provider.png 295w,/static/e06b581081bfe3955e69f85790aeabd0/6d370/add-identity-provider.png 590w,/static/e06b581081bfe3955e69f85790aeabd0/78d47/add-identity-provider.png 800w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Make the following configurations&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;Specifies if OAuth2/OpenID Connect is enabled for this Identity Provider&lt;/code&gt;: &lt;code class=&quot;css-0&quot;&gt;enable&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;Client ID&lt;/code&gt;: Paste the Consumer Key obtained from the Okta Application&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;Client Secret&lt;/code&gt;: Paste the Consumer Secret obtained from the Okta Application&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;Authorization Endpoint URL&lt;/code&gt;: &lt;code class=&quot;css-0&quot;&gt;https://&amp;lt;your-okta&amp;gt;.com/oauth2/default/v1/authorize&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;Token Endpoint URL&lt;/code&gt;: &lt;code class=&quot;css-0&quot;&gt;https://&amp;lt;your-okta&amp;gt;.com/oauth2/default/v1/token&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;Callback URL&lt;/code&gt;: &lt;code class=&quot;css-0&quot;&gt;https://localhost:9443/commonauth&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;Userinfo Endpoint URL&lt;/code&gt;: &lt;code class=&quot;css-0&quot;&gt;https://&amp;lt;your-okta&amp;gt;.com/oauth2/default/v1/userinfo&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;Additional Query Parameters&lt;/code&gt;: &lt;code class=&quot;css-0&quot;&gt;scope=openid profile&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/4220504211e46648be8892b1a2269266/78d47/openid-connect-configurations.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:52.70270270270271%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABEklEQVQoz4WRS1PDMAyE8/9/GlwKJ+BAhyapbSXyu3HzZkmmtBRKd/bgaPxlZSl7en7cbB627y9K7YgKony1Wq128oaF/Mjy4jXP34TcVpw7VxpbWgfvnRfO75tUHY985ZS4bTWbIuu7YV6UmmSt8z7GcEipHccZnqb5t6alGkPM+r5bK95bDRlbUJ1Smv7kLuAQQnZchIIxWilSRKWktkXyeIs/w03TdN1XOHO9FxKuqgrJ+CP4O/BKQkZrISSSnXMgh2G43zZC+r7Hh9YsJQkh6rr+h/wBHxbhdsWaiEAya2b23uPl99+MJqfTwLAtrCuE+D2zK51XFWOmlDLGAPDO8iLsC/n6QnwSzggEhmYx108TFnjONl6AfAAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;OpenID Connect Configurations&quot; title=&quot;OpenID Connect Configurations&quot; src=&quot;/static/4220504211e46648be8892b1a2269266/6d370/openid-connect-configurations.png&quot; srcSet=&quot;/static/4220504211e46648be8892b1a2269266/c5084/openid-connect-configurations.png 148w,/static/4220504211e46648be8892b1a2269266/60cc9/openid-connect-configurations.png 295w,/static/4220504211e46648be8892b1a2269266/6d370/openid-connect-configurations.png 590w,/static/4220504211e46648be8892b1a2269266/78d47/openid-connect-configurations.png 800w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Next, expand the &lt;code class=&quot;css-0&quot;&gt;Claim Configuration&lt;/code&gt; &amp;gt; &lt;code class=&quot;css-0&quot;&gt;Basic Claim Configuration&lt;/code&gt; and select &lt;code class=&quot;css-0&quot;&gt;Define Custom Claim Dialect&lt;/code&gt; to add a custom mapping for the &lt;code class=&quot;css-0&quot;&gt;Roles&lt;/code&gt; claims for the Okta and WSO2 API Manager.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/1051ea120815f3cfd58f64de6fbb38eb/13bda/identity-provider-role-claim-mapping.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:25.675675675675674%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAIAAADKYVtkAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAq0lEQVQY032OyQ7CMAxE+/8fiMSllUKSJs1Ks9gNpWBa9QY8zcGWPZrptGaMXfv+YiwDDN5zZ1mMEheP6AEdwE91pdSUy5zytm0zwMDHm5iMJWdrbd1e/+ieH1YSLYCVSylHZYyJMYYQKoDWelSK5nyS0uysQVwouaSU1nU31zIMPefce1926DRNhgvhnKMmywFiLbm1R3c8UWcyIxYphFLKWkvJ9xP6/1r7DZE6He7va/qSAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Claim Configuration&quot; title=&quot;Claim Configuration&quot; src=&quot;/static/1051ea120815f3cfd58f64de6fbb38eb/6d370/identity-provider-role-claim-mapping.png&quot; srcSet=&quot;/static/1051ea120815f3cfd58f64de6fbb38eb/c5084/identity-provider-role-claim-mapping.png 148w,/static/1051ea120815f3cfd58f64de6fbb38eb/60cc9/identity-provider-role-claim-mapping.png 295w,/static/1051ea120815f3cfd58f64de6fbb38eb/6d370/identity-provider-role-claim-mapping.png 590w,/static/1051ea120815f3cfd58f64de6fbb38eb/540ae/identity-provider-role-claim-mapping.png 885w,/static/1051ea120815f3cfd58f64de6fbb38eb/2561a/identity-provider-role-claim-mapping.png 1180w,/static/1051ea120815f3cfd58f64de6fbb38eb/13bda/identity-provider-role-claim-mapping.png 2220w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;After making the above configurations, expand the &lt;code class=&quot;css-0&quot;&gt;Role Configuraiton&lt;/code&gt; and select the &lt;code class=&quot;css-0&quot;&gt;Add Role Mapping&lt;/code&gt; and enter the following to map the &lt;code class=&quot;css-0&quot;&gt;subscriber&lt;/code&gt; role with the &lt;code class=&quot;css-0&quot;&gt;internal/subscriber&lt;/code&gt; role of the WSO2 API Manager.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/7889a294cdd97553ea569926dc5436ac/13bda/identity-provider-role-configuration.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:18.243243243243242%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAECAIAAAABPYjBAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAjUlEQVQI102O2Q6CMBBF+/9/KJEHQNKoXelGKB28pVE5nUzu8jBlt6679702Fk8oIZVR2pqKtcuCacA0ew1Z3vdSylEhYcQwP2f+QuGcQ4HJOW/bVqg0ewkz209QUyHxFo9pklIGEGNKaV1XpfUwjtjQ6QTCuYXzmbkT730MIUVfT/pqEeL+T3x/94eIPnvJ5RMAIHYvAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Role Configuration&quot; title=&quot;Role Configuration&quot; src=&quot;/static/7889a294cdd97553ea569926dc5436ac/6d370/identity-provider-role-configuration.png&quot; srcSet=&quot;/static/7889a294cdd97553ea569926dc5436ac/c5084/identity-provider-role-configuration.png 148w,/static/7889a294cdd97553ea569926dc5436ac/60cc9/identity-provider-role-configuration.png 295w,/static/7889a294cdd97553ea569926dc5436ac/6d370/identity-provider-role-configuration.png 590w,/static/7889a294cdd97553ea569926dc5436ac/540ae/identity-provider-role-configuration.png 885w,/static/7889a294cdd97553ea569926dc5436ac/2561a/identity-provider-role-configuration.png 1180w,/static/7889a294cdd97553ea569926dc5436ac/13bda/identity-provider-role-configuration.png 2220w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;And at last, expand the &lt;code class=&quot;css-0&quot;&gt;Just-In-Time Provisioning&lt;/code&gt; and select the &lt;code class=&quot;css-0&quot;&gt;Always Provision to User Store Domain&lt;/code&gt; with the &lt;code class=&quot;css-0&quot;&gt;PRIMARY&lt;/code&gt; user store to provision the Okta users to the Primary user-store of the WSO2 API Manager. Please refer to the attached screenshot…&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/c2f375bb620b945dbe5e9cfe4f1328df/74cb2/just-in-time-provisioning-configuration.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:25%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAIAAADKYVtkAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAnUlEQVQY042OwQ7CIBBE+f8fNEYKTSsoUJa2lKYRtI7ESy/Gl1kyl7cLM8byRnCONBfeaH0PYSQaQ5i8p8GTG/xQg+LcIcz4BU7btkrreZ49DArOOaVUXJa0rqWURyXn8jrCphivShljbl80etd1UkoUIsJGfAPEGPcjDFNKllL0fQ8BL0xrbUoJ1/affGQ35dOZSyEgb9v2rOx/8AZtzhuKcX1/fgAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Just-In-Time Provisioning Configuration&quot; title=&quot;Just-In-Time Provisioning Configuration&quot; src=&quot;/static/c2f375bb620b945dbe5e9cfe4f1328df/6d370/just-in-time-provisioning-configuration.png&quot; srcSet=&quot;/static/c2f375bb620b945dbe5e9cfe4f1328df/c5084/just-in-time-provisioning-configuration.png 148w,/static/c2f375bb620b945dbe5e9cfe4f1328df/60cc9/just-in-time-provisioning-configuration.png 295w,/static/c2f375bb620b945dbe5e9cfe4f1328df/6d370/just-in-time-provisioning-configuration.png 590w,/static/c2f375bb620b945dbe5e9cfe4f1328df/540ae/just-in-time-provisioning-configuration.png 885w,/static/c2f375bb620b945dbe5e9cfe4f1328df/2561a/just-in-time-provisioning-configuration.png 1180w,/static/c2f375bb620b945dbe5e9cfe4f1328df/74cb2/just-in-time-provisioning-configuration.png 1450w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;And save all the configurations.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Given below is a full rollover screenshot of the configurations of the created &lt;code class=&quot;css-0&quot;&gt;OktaIDP&lt;/code&gt; Identity Provider…&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/a5c043646e25a7c4153b08851235e86a/ec6d1/identity-provider-configurations.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:161.48648648648648%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAgCAIAAACdAM/hAAAACXBIWXMAAAsTAAALEwEAmpwYAAADyElEQVQ4y3VVCXLjNhDk/z+SF+QLW5XKJrWOvJJtWabEEyCJizgInkqD9DqOLY/bKklEY2Z6DkXH+90f3377/v3358P+8fDn/vDjeHw8nt7jacPh4ef+cH94uN/f3/3c3e12d9E/94embgW3lLDLc0LyWrWdXKFWSOU+ou2EchW30TE+1lw6Nxjbcc6VVF3nlZJCBhNSWWu7/5tzDv++89Hz+SQ0Pk3ho3PjMFyvV92qqkYILTBN0/WWTfMSndKYKWPd6Lp+HMdlWfAA1wgh21ZrbYb1utvk8/lEG2Fs33U9IjTGwNXQdypYK6XCN7j0NjlPXxqhu24E2a0WPHvHGINj3we7GXkg14TUTdu23hjrvYdz+IEgyBmRQ4zrdfky7DzNSiKEcFq7eZ63B8i1LAkhFRcS4nuPpDwuGoYJRzZM0xIRTismnR1RKloVSfrCeKW1MEboFa1mSv1C+x8YZyBXlEkEi1JxXhVFqrUE55zElJbem2F0ywLBUYhhnl9xXYaqohGtCy4hWKhz0HkIwiqt0rysawYx0COQnVKEY9bu6IzGn6lrHklOmbJQ1IVSOWi7NUmR5wp96NBRHgVvGoZ387xM0zytFshNWcQJFQrHeoTNGJGy4bykNK2qomnKhpV4bVuQW+tkgEUVZFmWUdPUadm0utfG7ve7u7u/TqfHNHvJ8kuWnbMsXnFOszhd3wB5fsGBvMijkpNKaGvRIWtJfAhbapUUhHFMRTeOs+8HfA85NuDkOE5whvZMKZG8Nkpqv1rve6M1OgwN40LOHdqAMz5v2c5zZ00/jNa4CH1USdf5ETcll3Mcn4oiaxqCOq0oCCkIRfKUsfodKrRg1EjRtPAHtbsse3p8+juOd4QehbxweREyeUOr8zconZY0jWpWN8HzZB0a0KGxUY9hQHlgoaAIG3l+Hqy6biKUtLX9WmcPNV7n2Xdhj6iWcOXXyn+2QMYzzAdGEnWGVEjguizG6AJWkktBtnC2S2+Rp1dy2E/W4gHIZYEuINAc5P6W849k5LZ5wEIhhEJQ7DCU9LPbLzw7zBDIusLUVBVa+qsd9pGMhEHGaewyBM2wikVYwdgNt9V+I3erZxiCROrIFnNn1qW91i/Y2mDhFWfekX3YJPCWZRmlFN3IMDE1uqiivywk8s7yonxPdufz+SWOcUURNhhF0Fg2Kqxv8wEwzuUrGbsNYwORUd1qNTxe1lA/S7WJjysi1AcHfB/WEBw+PDwkSQKfcLj+WinxhaEQURDT4LfPNA1/OcWXJE3TLM9De20obwN5Vf8CH2UZ6IEv5XwAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Identity Provider Configurations&quot; title=&quot;Identity Provider Configurations&quot; src=&quot;/static/a5c043646e25a7c4153b08851235e86a/6d370/identity-provider-configurations.png&quot; srcSet=&quot;/static/a5c043646e25a7c4153b08851235e86a/c5084/identity-provider-configurations.png 148w,/static/a5c043646e25a7c4153b08851235e86a/60cc9/identity-provider-configurations.png 295w,/static/a5c043646e25a7c4153b08851235e86a/6d370/identity-provider-configurations.png 590w,/static/a5c043646e25a7c4153b08851235e86a/540ae/identity-provider-configurations.png 885w,/static/a5c043646e25a7c4153b08851235e86a/2561a/identity-provider-configurations.png 1180w,/static/a5c043646e25a7c4153b08851235e86a/ec6d1/identity-provider-configurations.png 2884w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;h3 id=&quot;Service-Provider&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Service-Provider&quot; aria-label=&quot;Service Provider permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Service Provider&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Now we have created an Identity Provider successfully to perform federated authentication with the Okta. As of the next step, we will be creating a Service Provider for the Store portal of the WSO2 API Manager.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Direct to the Carbon management console of the WSO2 API Manager server, and select &lt;code class=&quot;css-0&quot;&gt;Add&lt;/code&gt; under the &lt;code class=&quot;css-0&quot;&gt;Service Providers&lt;/code&gt; section to register a Service Provider.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Enter &lt;code class=&quot;css-0&quot;&gt;API_STORE&lt;/code&gt; as the name of the Service Provider and click on &lt;code class=&quot;css-0&quot;&gt;Register&lt;/code&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/f640a0499969f71785c1397041560f91/feb83/register-service-provider.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:40.54054054054054%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAIAAAB2/0i6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAs0lEQVQY05WOjQ7CIAyEef93dCHOgYOSAYOB/GkzY5wxLvPLpSFtrxwZ+yunA3CQg5AcnE/HRYSaO3oGpbSxIUbvl+MiS0gASogxhNBaq/9AAKDrTn3fa62NMVj0BrMLifHmnJutzSnlnKSUxlrnF9TsXK1tJw5BS4zxvlJr4Wy4XAbGOGMMH0qplFL5BG3PfZJzwXFdv0DzbPU0vTNjxVzli7ZCcINSyjnPeObV3YJ3yw8eegnNYlRtGmMAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Register Service Provider&quot; title=&quot;Register Service Provider&quot; src=&quot;/static/f640a0499969f71785c1397041560f91/6d370/register-service-provider.png&quot; srcSet=&quot;/static/f640a0499969f71785c1397041560f91/c5084/register-service-provider.png 148w,/static/f640a0499969f71785c1397041560f91/60cc9/register-service-provider.png 295w,/static/f640a0499969f71785c1397041560f91/6d370/register-service-provider.png 590w,/static/f640a0499969f71785c1397041560f91/540ae/register-service-provider.png 885w,/static/f640a0499969f71785c1397041560f91/2561a/register-service-provider.png 1180w,/static/f640a0499969f71785c1397041560f91/feb83/register-service-provider.png 1880w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;On the following screen, expand the &lt;code class=&quot;css-0&quot;&gt;Inbound Authentication Configuration&lt;/code&gt; and select &lt;code class=&quot;css-0&quot;&gt;Configure&lt;/code&gt; under the &lt;code class=&quot;css-0&quot;&gt;OAuth/OpenID Connect Configuration&lt;/code&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;And prompt the following&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;Callback URL&lt;/code&gt;: &lt;code class=&quot;css-0&quot;&gt;https://localhost:9443/store/jagg/jaggery_oidc_acs.jag&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/14d59aa566100c15a9b7a86d93b32060/92aea/oauth2-openid-connect-configurations.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:111.48648648648648%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAWCAIAAABPIytRAAAACXBIWXMAAAsTAAALEwEAmpwYAAABhUlEQVQ4y52TiW6DMBBE8/8fmVBEsLlvME6APrwNalMS1I4EAuPZmVkvJ2NM13X3+31ZlnlZ0fZWRdkyy9s7nH4vdePih6kxwzFZlIdhmB9S/TiruKiq0t5ux+S+7yFP0yRLrZn9a5ok0TCYP9tG+aozO5p/ZTZzoLI0iauqrrjq9S4dfSYnWaWUNlg0RmKTIXOI4ziKoiRJyLWvTNXz+ex5HpvathWd0qF2uL1u20r2HBBBSmuNZuFArYPMeVF63gfwff9yueAiCAJkIXMEB2RrOqJpHUk8xJVSMA89r+SiKGGmaYrhPM/pGW6bpuGBRebnre08h4YgsjLk0jC+HZPR0Q6byeFxbOiP4/iOjJQ0FsKWcP6JyWGHzKrMNmTu+OThaZOU2P8x8Ew8us0JU0jI35Vf2uYb3QrDkBKyj5z0zDyAF2vtPpmtMlLbDpLzWjnQM9Z3/wo3JNYS9fswoE/nRfaV5hcZpozEtjSM/JJp29RSt3fAPPen/KfdkhuHIxTaLvkTE/EGGUElXKUAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;OAuth2/OpenID Connect Configurations&quot; title=&quot;OAuth2/OpenID Connect Configurations&quot; src=&quot;/static/14d59aa566100c15a9b7a86d93b32060/6d370/oauth2-openid-connect-configurations.png&quot; srcSet=&quot;/static/14d59aa566100c15a9b7a86d93b32060/c5084/oauth2-openid-connect-configurations.png 148w,/static/14d59aa566100c15a9b7a86d93b32060/60cc9/oauth2-openid-connect-configurations.png 295w,/static/14d59aa566100c15a9b7a86d93b32060/6d370/oauth2-openid-connect-configurations.png 590w,/static/14d59aa566100c15a9b7a86d93b32060/540ae/oauth2-openid-connect-configurations.png 885w,/static/14d59aa566100c15a9b7a86d93b32060/2561a/oauth2-openid-connect-configurations.png 1180w,/static/14d59aa566100c15a9b7a86d93b32060/92aea/oauth2-openid-connect-configurations.png 1720w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;And register and save the configurations.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;As a result, a Consumer Key and a Secret. Copy these credentials and store them as we will need them when configuring the &lt;code class=&quot;css-0&quot;&gt;site.json&lt;/code&gt; of the Store node.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Next, expand the &lt;code class=&quot;css-0&quot;&gt;Local &amp;amp; Outbound Authentication&lt;/code&gt; Configuration and select &lt;code class=&quot;css-0&quot;&gt;Federated Authentication&lt;/code&gt; with our created Identity Provider &lt;code class=&quot;css-0&quot;&gt;OktaIDP&lt;/code&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Proceeding further, expand the &lt;code class=&quot;css-0&quot;&gt;Local &amp;amp; Outbound Authentication Configuration&lt;/code&gt; and select the &lt;code class=&quot;css-0&quot;&gt;Federated Authentication&lt;/code&gt; along with created &lt;code class=&quot;css-0&quot;&gt;OktaIDP&lt;/code&gt; Identity Provider.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/710cfcb319b3d3137efa9f424a079dca/5b89d/local-outbound-authentication-configuration.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:45.27027027027027%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAIAAAC9o5sfAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA8ElEQVQoz4WQi26DMAxF+f8fLIRKiKEAISMP8oQEUgNbVSptPbKs2PJNbpwRQlF5v91yiLK8I1RCmecFQqgnAxeC8T24kEJIxvhZnpE557QxkGfv05YA772UMoS4LGHbjlZKMGCMSVey1wJG45paaiilA6VkIFrrU951XVEU8zxfxOu6xhghP1vKBaG9UH6UVtuf6RACOHod28VKjlVV1XXNGJPTjpT7f7an47/JwrLAOtjB98H4C3h+e+pd7JzHGMOX2rbt+x4fwBluUUqB/j8xEWHkk1KTuGKtTR9tE+brLwzvNk0DVkED+zs3/1H8AL75BzHBg7A/AAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Local &amp;amp; Outbound Authentication Configuration&quot; title=&quot;Local &amp;amp; Outbound Authentication Configuration&quot; src=&quot;/static/710cfcb319b3d3137efa9f424a079dca/6d370/local-outbound-authentication-configuration.png&quot; srcSet=&quot;/static/710cfcb319b3d3137efa9f424a079dca/c5084/local-outbound-authentication-configuration.png 148w,/static/710cfcb319b3d3137efa9f424a079dca/60cc9/local-outbound-authentication-configuration.png 295w,/static/710cfcb319b3d3137efa9f424a079dca/6d370/local-outbound-authentication-configuration.png 590w,/static/710cfcb319b3d3137efa9f424a079dca/540ae/local-outbound-authentication-configuration.png 885w,/static/710cfcb319b3d3137efa9f424a079dca/2561a/local-outbound-authentication-configuration.png 1180w,/static/710cfcb319b3d3137efa9f424a079dca/5b89d/local-outbound-authentication-configuration.png 1410w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;And at last, expand the &lt;code class=&quot;css-0&quot;&gt;Claim Configuration&lt;/code&gt; and select the &lt;code class=&quot;css-0&quot;&gt;Define Custom Claim Dialect&lt;/code&gt; and make the following changes to extract the &lt;code class=&quot;css-0&quot;&gt;preferred_username&lt;/code&gt; from the generated JWT to make it as the username and Display Name of the provisioned user.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/ba3f620053fe439398e76a25e2933670/13433/service-provider-claim-configuration.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:24.324324324324326%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAIAAADKYVtkAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAh0lEQVQY042P3Q7CIAyFef/HNOwChnS2RSKg9TC8NdkXKE3/DnV+20KILEo5E9HzAqX8rGutjdEPLXsmUX2fDIR6X/7npI/JSq24mc1m5B7MN+8zHSzMgssBxLinhIngTqxacGQ+gvpX6w4fwAyEU0rw0QZNO1ma9h9Xa4U4VsDC8CECa9f4AvUMIp3LHYu4AAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Claim Configuration&quot; title=&quot;Claim Configuration&quot; src=&quot;/static/ba3f620053fe439398e76a25e2933670/6d370/service-provider-claim-configuration.png&quot; srcSet=&quot;/static/ba3f620053fe439398e76a25e2933670/c5084/service-provider-claim-configuration.png 148w,/static/ba3f620053fe439398e76a25e2933670/60cc9/service-provider-claim-configuration.png 295w,/static/ba3f620053fe439398e76a25e2933670/6d370/service-provider-claim-configuration.png 590w,/static/ba3f620053fe439398e76a25e2933670/540ae/service-provider-claim-configuration.png 885w,/static/ba3f620053fe439398e76a25e2933670/2561a/service-provider-claim-configuration.png 1180w,/static/ba3f620053fe439398e76a25e2933670/13433/service-provider-claim-configuration.png 2740w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;And save and register all the configurations to create a Service Provider for the Store portal.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Given below is a full rollover screenshot of the configurations of the created &lt;code class=&quot;css-0&quot;&gt;API_STORE&lt;/code&gt; Service Provider…&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/53b423f3c13666ebf43ebba380015b98/ec6d1/service-provider-configuration.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:123.64864864864865%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAZCAIAAAC+dZmEAAAACXBIWXMAAAsTAAALEwEAmpwYAAAC80lEQVQ4y31Ui3LbNhDE9+dT+gnNpOl0OskoaRwrkiybth4kxSdIAMSDD5CiuyBTt1NbullxxBsusbd3R+J9/+O3D+8Wi1+89WKz+bha/7ndft0+vIHV+tNq8xnX5Zf3y8WvP25+J9v7XRIlcZRHQXbwDlFIi7Kmpf4/Cp1RmeUS17w0CdWnVJKn416Itq57KXWWZIJXUmlAaaOUQXKG1saY+gXutm7JIfKl6eqmr5tWG91by1hBi6IsGaJpmm6KYRjO/4nxfEZmIuvOGNu0Xdu2SCkpKc2rqsJx1trnCzGcR+LHAauMIzfdfA4IeMs4js9Xw5HDcM8rlAFWP2dBm0Ve5ztylkZcgIzDXGHgKiU453oKZHuEtdPF9hPsz9ueRMcoTWVZSHjrPOJcTuaihHoKYyafX/78Gw2JaMyFqxm9AVVpNElzUeFpZ6jTP+LnMJxfLMcfHEHiMiuYQs1wG2KGoWcVmq0ga34OyqFz6H/yZkVd10plSEJjAcNqOGynmp9LxrOcogxglkNpQSnFHRSiKOWi4kISmkfK9ckNCUoaxzNj5WwYHr3ittY1oWka5Wh0Z+oGL4XI+YRZ3lTIm+HGmeRR7MdMact4tbm7W63Wm80mDMMojh0uxOl0StKcJCzLS6mNRS92++8P3pfd7luee1L6ojpWF8DFLskCEkZJWWrBjNbS8z6t1h/3h4UffGVsK8Q9F/dCPLyCx9hdGD8RP4xKZipRw6TV+q/N5sZ7XHneDz/w4ngfxftTtHuNMHyM4xPJK8W07exQ1+00pJbzCkBGmwbN7IfR9ufXcH3OMJkaBffTRrllQs+EqjH3sBqeX2oVRoAU6KqyWCk0pqA5nQJfAuzJP1s1vglHbtqm6zF0Fn0WohJCyEoabTDS1/dZm5q47RogtcdABcHj0ffSzKdFpHShL0MpfCcpmfbmubNnUcnl8vZ2eXtz8+3p6TEMgyDwL+F4PKRpRjiEClWWghYsSfIsx9ePFSVH5jqKgv8NRguCuFJ+HFoAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Service Provider Configuration&quot; title=&quot;Service Provider Configuration&quot; src=&quot;/static/53b423f3c13666ebf43ebba380015b98/6d370/service-provider-configuration.png&quot; srcSet=&quot;/static/53b423f3c13666ebf43ebba380015b98/c5084/service-provider-configuration.png 148w,/static/53b423f3c13666ebf43ebba380015b98/60cc9/service-provider-configuration.png 295w,/static/53b423f3c13666ebf43ebba380015b98/6d370/service-provider-configuration.png 590w,/static/53b423f3c13666ebf43ebba380015b98/540ae/service-provider-configuration.png 885w,/static/53b423f3c13666ebf43ebba380015b98/2561a/service-provider-configuration.png 1180w,/static/53b423f3c13666ebf43ebba380015b98/ec6d1/service-provider-configuration.png 2884w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;h3 id=&quot;Store-SiteJSON&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Store-SiteJSON&quot; aria-label=&quot;Store SiteJSON permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Store Site.JSON&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;We have come to the last steps of our configurations. With all the above-mentioned guides and configurations, we have successfully created both Identity Provider as well as a Service Provider the OpenID Connect SSO flow.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;In this section, we will be configuring the Store node of the WSO2 API Manager to contact the Identity Providers and Service Providers to federate with Okta. Route to &lt;code class=&quot;css-0&quot;&gt;&amp;lt;APIM&amp;gt;/repository/deployment/server/jaggeryapps/store/site/conf&lt;/code&gt; directory and edit the site.json file as follows…&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;Replace the &lt;code class=&quot;css-0&quot;&gt;API_STORE SP OIDC Client ID&lt;/code&gt; and &lt;code class=&quot;css-0&quot;&gt;API_STORE SP OIDC Client Secret&lt;/code&gt; with the consumer credentials created by the &lt;code class=&quot;css-0&quot;&gt;API_STORE&lt;/code&gt; service provider&lt;/p&gt;&lt;/blockquote&gt;&lt;pre class=&quot;prism-code language-json&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;oidcConfiguration&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;enabled&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;issuer&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;API_STORE&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;identityProviderURI&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;https://localhost:9443/oauth2/token&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;authorizationEndpointURI&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;https://localhost:9443/oauth2/authorize&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;tokenEndpointURI&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;https://localhost:9443/oauth2/token&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;userInfoURI&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;https://localhost:9443/oauth2/userinfo&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;jwksURI&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;https://localhost:9443/oauth2/jwks&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;logoutEndpointURI&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;https://localhost:9443/oidc/logout&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;authHttpMethod&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;POST&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;clientConfiguration&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;      &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;clientId&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;&amp;lt;API_STORE SP OIDC Client ID&amp;gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;      &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;clientSecret&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;&amp;lt;API_STORE SP OIDC Client Secret&amp;gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;      &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;responseType&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;code&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;      &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;authorizationType&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;authorization_code&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;      &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;scope&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;phone email address openid profile&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;      &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;redirectURI&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;https://localhost:9443/store/jagg/jaggery_oidc_acs.jag&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;      &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;postLogoutRedirectURI&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;https://localhost:9443/store/&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;      &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;clientAlgorithm&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;RS256&amp;quot;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;h2 id=&quot;-Voila-&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-Voila-&quot; aria-label=&quot; Voila  permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;🎉 Voila!!! 🎉&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;We have successfully configured Single Sign-On with OpenID Connect between WSO2 API Manager and Okta Cloud Identity Provider. Next, we will be doing a small test drive…&lt;/p&gt;&lt;h3 id=&quot;Test-Drive&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Test-Drive&quot; aria-label=&quot;Test Drive permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Test Drive&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Direct to the Store portal using &lt;a href=&quot;https://localhost:9443/store/&quot; class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;https://localhost:9443/store/&lt;/code&gt;&lt;/a&gt; and click on &lt;code class=&quot;css-0&quot;&gt;Sign-In&lt;/code&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;You will be redirected to the Okta’s login page to perform SSO with the Okta user. Enter the Okta credentials and then allow the attributes on the consent screen to continue with the federation and provisioning of the Okta users to the WSO2 API Manager.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;The federated IDP authentication happens in &lt;code class=&quot;css-0&quot;&gt;org.wso2.carbon.identity.application.authenticator.oidc.OpenIDConnectAuthenticator&lt;/code&gt; class&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;JIT Provisioning makes way in the &lt;code class=&quot;css-0&quot;&gt;org.wso2.carbon.identity.application.authentication.framework.handler.request.impl.JITProvisionningPostAuthenticationHandler&lt;/code&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;strong class=&quot;css-0&quot;&gt;Happy Stacking !!!!&lt;/strong&gt; 🤘 ✌️&lt;/p&gt;&lt;h2 id=&quot;-Troubleshooting&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#-Troubleshooting&quot; aria-label=&quot; Troubleshooting permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;🚧 Troubleshooting&lt;/h2&gt;&lt;h3 id=&quot;Okta-Trusted-Origins&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Okta-Trusted-Origins&quot; aria-label=&quot;Okta Trusted Origins permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Okta Trusted Origins&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;If you encounter any Cross-Origin errors when accessing the Okta Cloud IDP, sign-in to the Okta developer portal and navigate &lt;code class=&quot;css-0&quot;&gt;API&lt;/code&gt; &amp;gt; &lt;code class=&quot;css-0&quot;&gt;Trusted Origins&lt;/code&gt; to add our Domain as a trusted origin in the Okta.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/e4929d4133f200f7fd742f273132099a/88e66/okta-trusted-origins-navigation.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:44.5945945945946%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAYAAAAywQxIAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAB40lEQVQoz62SzU8TURTFZ+HWBQohNNR2+mFLP6adGYa2M1PqdAq0JaXSIDRGDUKtacNCFyQmrkzcyFI3LI2JgYSaYOJaEGmVxKVB4l/Sro73zUxEwtaXnPxu7nv35uaex5m1u0gXF8FLGiYyJrxJFR5SQJmGX87a8eQ0gkoOXlFDKGWAJ7ondRSEPDrSKtrxMoYmJLgiCriD4284dPSl+/1cPUcUHxz38Plr14q7Jz/O74lHvRMcEQ+71IPI4T8frrX5HLcfNLG81sadtdZfLT1kbOP07DcGgwH6/T76RHa23myjXF/FSmPjQg0Tl8yVcNUbxUhIxPDNJIaDSYvXgwmiiJ+/zi5N0Xz6DFdG/Rih+2sBgd7adYxcdn4J40Iaflq8T8rCJ9viHW693sbOh3282+3gfWcfex8/4X7rCSJqAVFtBlEiM80n69Z7Ti3V4Ioq5LJuueghMae9ou22O5Gx8xTzTo45HdNnSdSQxJp5rBrNaRibgjuSRv7FOoR6FWI8g5fFebjCEuqNNhbvNeBLyHi7IcMvKTDMdZRmHmNMkHHrVRMhIwdeqyC08OifCUUdSqWKcNZEmP6cWajgBq1CNMqI0xRsOmNulqbPIKbOIa4WaS06UtUaAlP0T1N5qi3iD/Erm97ujivyAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Trusted Origins&quot; title=&quot;Trusted Origins&quot; src=&quot;/static/e4929d4133f200f7fd742f273132099a/6d370/okta-trusted-origins-navigation.png&quot; srcSet=&quot;/static/e4929d4133f200f7fd742f273132099a/c5084/okta-trusted-origins-navigation.png 148w,/static/e4929d4133f200f7fd742f273132099a/60cc9/okta-trusted-origins-navigation.png 295w,/static/e4929d4133f200f7fd742f273132099a/6d370/okta-trusted-origins-navigation.png 590w,/static/e4929d4133f200f7fd742f273132099a/88e66/okta-trusted-origins-navigation.png 790w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;On the following screen select &lt;code class=&quot;css-0&quot;&gt;Add Origin&lt;/code&gt; and make the following…&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/b761b1dc9012b14901eaff9720d8bd55/c8388/create-trusted-origin.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:31.756756756756754%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAhElEQVQY062PQQ4DIQhFvf9JXdaq4IBChYZmuunMopAXiMIPP+Wc9VmrXoWIqKf8Js05lYgc69daysxexxiODYboVSRbpC1gIiFotdGhuT0c4MPUdMmNC3Ev1gFKk7+ueFs82b1JMkvQuyKiAoBz7oO+ZwIE/LzFf9u9aSVbLqW45X/EC9zn2YaK9YSOAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Add Origin&quot; title=&quot;Add Origin&quot; src=&quot;/static/b761b1dc9012b14901eaff9720d8bd55/6d370/create-trusted-origin.png&quot; srcSet=&quot;/static/b761b1dc9012b14901eaff9720d8bd55/c5084/create-trusted-origin.png 148w,/static/b761b1dc9012b14901eaff9720d8bd55/60cc9/create-trusted-origin.png 295w,/static/b761b1dc9012b14901eaff9720d8bd55/6d370/create-trusted-origin.png 590w,/static/b761b1dc9012b14901eaff9720d8bd55/c8388/create-trusted-origin.png 795w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/445f05c80f2700afaf40cc1367674175/ff08e/add-trusted-origin.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:62.16216216216216%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAYAAABiDJ37AAAACXBIWXMAAA7DAAAOwwHHb6hkAAABOklEQVQoz6WRPU7EMBCFXVBwYUCCBq6wwAU4ARI1EgKRBdGBREPDZmk2cew4if/Crh4eJ0FENPtTfBrPjPVmns3YyR32zx6wd3oPdngLdrAj50mKy6c5LqYpJskMk8dAkm7JDAwrj5WpAHwHljvDGm2Q8wKiVOBCQlU1nG9hnV8f30VtLJi1FlJKyChWwYemc25roiDnHHmWIc9zVL1o27YbMSzCnLPQWncF60ADNhUbiILGaPCigDEmihF0HmHN/1p/nxYZtqPIdGhkgkfb9JZlWUISdFZlzJVSMXbI2Bexr8JH6F/h3rJDVdeoA2R9RBj2Nzd97o3DKvzqkp5Id9sOm7KmacYifU71EX2NBD7FAq+LFG/ZHJmSsEFw6DOysy5k1TcaV+8Jjl9ucPR8jenXB4yqUYgiuvwBPeZxl7aGUJMAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Add Trusted Origin&quot; title=&quot;Add Trusted Origin&quot; src=&quot;/static/445f05c80f2700afaf40cc1367674175/6d370/add-trusted-origin.png&quot; srcSet=&quot;/static/445f05c80f2700afaf40cc1367674175/c5084/add-trusted-origin.png 148w,/static/445f05c80f2700afaf40cc1367674175/60cc9/add-trusted-origin.png 295w,/static/445f05c80f2700afaf40cc1367674175/6d370/add-trusted-origin.png 590w,/static/445f05c80f2700afaf40cc1367674175/ff08e/add-trusted-origin.png 676w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;Save&lt;/code&gt; the configurations.&lt;/p&gt;&lt;h3 id=&quot;Okta-Username-Format&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Okta-Username-Format&quot; aria-label=&quot;Okta Username Format permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Okta Username Format&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;If you encounter any error related to Username format as email while performing SSO, please follow the given instructions to change the Username format from Email pattern to any other…&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Login to the Okta developer portal and navigate to &lt;code class=&quot;css-0&quot;&gt;Users&lt;/code&gt; &amp;gt; &lt;code class=&quot;css-0&quot;&gt;Profile Editor&lt;/code&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/817f49efe0c23bdc688394fa0bdaa94e/f8d10/okta-profile-editor-navigation.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:50.67567567567568%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAA7DAAAOwwHHb6hkAAACRklEQVQoz61TSWtTYRR9O124cehgqya1SZrBJC99medmIomtRoxQqKCooGih0CK4cFFwUwx1qBtt1TRVk9pobLS1Lt2IooKISHBYiSiKFLIxk/F439dK/AF+cLiHd+8993Hu93G8N4pQfD/adRZIDQ5s09vQqjKiVW3EFq2VYEGLUkCLSsBWyom8TWNaqSPerDPDrrBjWtOP68o4uGQ6i9TsHVy9kSHMYmoms8ozEHPJ9BzDtZu3MTmTxmTqFiFNdSv8CsXkdBr5VBbzBA7/+XCPnzxDJpdHNr+IufkF3H3wEF+/fUe5XEalWkWlUkW9XseP5WXcW3xE+SXkFpao5z7jf5FbBdd/ZBDrJGrm2yaFgcWnz1+iQoLFYhE/SyU2+c3bAvN0g0xPdTx4bwTNXd3YKOfRRLGpy8DAHRwcwWYyWWbyoKPbCbnZgxevXuNXrYYSidUoiqfw/iPkVNMpuJhY38Bh8J4IOo1utiCJwc76uQMnhtkGt1OhhKePvAOFdx+YyO9/vPn0+QsE/05o3RGYw3uZqCnQy6LWFYLWEYKMxBuCpC5OUfT4MXR6FGPjE5hInMfo2DmcvXQZZxIXoLIHYXR5YPO4obD6oHdEoHNGoLT5oAtHIbd7G4Lin3VY3IhNjaDN5oCCvEn0+LBeqoHBF8XQyVNYKxVwfJ8FFw/xWCMTEN81jHDwKHmqg3/8GPiB3Q1B8VLLzV5YemM03YsdjgB84RjzTE3cHOxDOy1F7/LD5A3QQxB5BGprgPVaonugdgbwB+/b4PS0Bsx4AAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Profile Editor Navigation&quot; title=&quot;Profile Editor Navigation&quot; src=&quot;/static/817f49efe0c23bdc688394fa0bdaa94e/6d370/okta-profile-editor-navigation.png&quot; srcSet=&quot;/static/817f49efe0c23bdc688394fa0bdaa94e/c5084/okta-profile-editor-navigation.png 148w,/static/817f49efe0c23bdc688394fa0bdaa94e/60cc9/okta-profile-editor-navigation.png 295w,/static/817f49efe0c23bdc688394fa0bdaa94e/6d370/okta-profile-editor-navigation.png 590w,/static/817f49efe0c23bdc688394fa0bdaa94e/f8d10/okta-profile-editor-navigation.png 705w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Select the &lt;code class=&quot;css-0&quot;&gt;Profile&lt;/code&gt; of the Okta User. On the following screen, select the info icon of the Username attribute to edit it.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/1d4fb44ec9ae13cc295b7fd1079e0624/583a7/okta-profile-editor.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:56.75675675675676%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAA7DAAAOwwHHb6hkAAABYElEQVQoz4VTy07DMBD0zyNx5S84cOEKiAs3uFTqpeIphBCtGuXhxIkdOxl2rLhKERCro+16d8ez9kbpuoZzLmIcRwzD8C+Yk/KAMSKEAZ3zcH2A6roOfd/Dex/tEnhw0zQIvsdOWzzujRB5qe+F2EMZCVJlIiWstbEw+XMkUhJ+VS02Oy3qpHaqV7WQaa0PybRUzX2CauY2HeQkdxRFGPxRrTLGoKoq0Ka2SMjCxfYnJD8Ssr2/7nHuz1v+LXYgbEyLStdoO4uW5FaUTa+ekO5tCZHQO1FXl/B1AbhGfhp5nqMsy3gVtD/9oiiO9vkGjLFbtXrf4/zhDZfrT1ysPnD/skWe7SVBx3tlMQv5IMkntMSzLIv7JCWoUl1vdji5ecLZ3StOb59xtdnC2y7K5/AyiSdzeEMI8f98fLjSRDCuWsM2K2nXALbBYFu5Rxu/Bq40l2mRiAexmDEuKie49w2ghlU0z5JfyQAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;User Profile Editor&quot; title=&quot;User Profile Editor&quot; src=&quot;/static/1d4fb44ec9ae13cc295b7fd1079e0624/6d370/okta-profile-editor.png&quot; srcSet=&quot;/static/1d4fb44ec9ae13cc295b7fd1079e0624/c5084/okta-profile-editor.png 148w,/static/1d4fb44ec9ae13cc295b7fd1079e0624/60cc9/okta-profile-editor.png 295w,/static/1d4fb44ec9ae13cc295b7fd1079e0624/6d370/okta-profile-editor.png 590w,/static/1d4fb44ec9ae13cc295b7fd1079e0624/540ae/okta-profile-editor.png 885w,/static/1d4fb44ec9ae13cc295b7fd1079e0624/583a7/okta-profile-editor.png 1013w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Change the &lt;code class=&quot;css-0&quot;&gt;Format Restrictions&lt;/code&gt; from &lt;code class=&quot;css-0&quot;&gt;Email Format&lt;/code&gt; to &lt;code class=&quot;css-0&quot;&gt;None&lt;/code&gt; or &lt;code class=&quot;css-0&quot;&gt;Custom Character Restrictions&lt;/code&gt; and &lt;code class=&quot;css-0&quot;&gt;Save Attribute&lt;/code&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:584px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/a663279296d773f7237bcfdfb0cadeb1/f5818/username-attribute.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:88.51351351351352%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAYAAABb0P4QAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAB/ElEQVQ4y41Uu44TQRDckIDfOUiQkO6nDgICRIREQuSTEHzIBUboAhLuoRMRoS8A27uz75192UVX74PxcnvyWuVeT09XV/f02PPefMPTd5d48vYS3uuv8M6W8F71OFse/j4GLz5d4/TLLV5+vsHz8yucLK7wbMB5j8VxOFn8gFeWJbI8R1EUqKvqH+oKlfhKaw/X59Dv90jkb7eIoghN06ASJ5PQ5pIolnW+P45yjFNCYwziOFabpGnnFNAXyXoqa2XZBcyjgpVqPH4ZE6iSMAyRZdmY2dpCE6VpNqoerAvXJwpz+L4PExhspXRjwnEjSw4CSZbEY8ARhFKyBBlRx3c3iJYVTNVNSf8nlN6xXNfxkJI50gNClsVTJuFms1VFw0b20w989bEtSZIcJHThKLQ6MtxMS8UDId95KNNWzMEpOVAylk7FrsIp4RxGQquEISIpK3TmUMem768GOAf0EPL+tukcUh2V0LpzqIMtawxodzs89vCWkVRLDqThbDpnzu0TBzsTxbwp3Meguq7RtC32/Ow78GllTRUOszbA7UmnMNbMWdYR53Jr2qruZAnXfteRNpJIFfJ0p2D5tDpK6834b2RlIkyWYBX5uBesQhm3NNF1xsRxAq97mceQIJReWlH3ffUL768v8PFuiQ83F/j5e4UiTvFnvdYK/gJeXzcmSY5lHAAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Profile Editor Username Attribute&quot; title=&quot;Profile Editor Username Attribute&quot; src=&quot;/static/a663279296d773f7237bcfdfb0cadeb1/f5818/username-attribute.png&quot; srcSet=&quot;/static/a663279296d773f7237bcfdfb0cadeb1/c5084/username-attribute.png 148w,/static/a663279296d773f7237bcfdfb0cadeb1/60cc9/username-attribute.png 295w,/static/a663279296d773f7237bcfdfb0cadeb1/f5818/username-attribute.png 584w&quot; sizes=&quot;(max-width: 584px) 100vw, 584px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Filter Request Headers]]></title><link>https://stackcheats.github.io/filter-request-headers/</link><guid isPermaLink="false">https://stackcheats.github.io/filter-request-headers/</guid><pubDate>Fri, 15 Nov 2019 00:00:00 GMT</pubDate><content:encoded>&lt;style data-emotion-css=&quot;sa2dbt&quot;&gt;body{color:text;background-color:var(--theme-ui-colors-background,#fff);}&lt;/style&gt;&lt;style data-emotion-css=&quot;0&quot;&gt;&lt;/style&gt;&lt;h2 id=&quot;Stratagem&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Stratagem&quot; aria-label=&quot;Stratagem permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Stratagem&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;A Quick-Peak on using &lt;code class=&quot;css-0&quot;&gt;Filter&lt;/code&gt; mediators to filter and execute custom executions based on presented request header.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;For example, check for the &lt;code class=&quot;css-0&quot;&gt;mycustomheader&lt;/code&gt; header value in the request and print the value using &lt;code class=&quot;css-0&quot;&gt;Log&lt;/code&gt; mediator.&lt;/p&gt;&lt;div class=&quot;css-0&quot;&gt;&lt;pre class=&quot;prism-code language-xml&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;sequence&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;custom-sequence&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;xmlns&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;http://ws.apache.org/ns/synapse&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;filter&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;then&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;then&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;filter&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;sequence&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;Given is a simple Synapse sequence with a &lt;code class=&quot;css-0&quot;&gt;Filter&lt;/code&gt; mediator skeleton.&lt;/p&gt;&lt;pre class=&quot;prism-code language-xml&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;sequence&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;custom-sequence&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;xmlns&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;http://ws.apache.org/ns/synapse&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;filter&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;source&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;get-property(&amp;#x27;mycustomheader&amp;#x27;, &amp;#x27;transport&amp;#x27;)&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;then&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;then&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;filter&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;sequence&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;We can use the &lt;code class=&quot;css-0&quot;&gt;get-property()&lt;/code&gt; method to access and retrieve properties from the Synapse context.
We will be using &lt;code class=&quot;css-0&quot;&gt;get-property(&amp;#x27;mycustomheader&amp;#x27;, &amp;#x27;transport&amp;#x27;)&lt;/code&gt; to retrieve our &lt;code class=&quot;css-0&quot;&gt;mycustomheader&lt;/code&gt; value from the Synapse context using the scope as &lt;code class=&quot;css-0&quot;&gt;transport&lt;/code&gt;.&lt;/p&gt;&lt;pre class=&quot;prism-code language-xml&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;sequence&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;custom-sequence&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;xmlns&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;http://ws.apache.org/ns/synapse&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;filter&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;source&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;get-property(&amp;#x27;mycustomheader&amp;#x27;, &amp;#x27;transport&amp;#x27;)&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;then&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;      &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;level&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;custom&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;property&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;          &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;message&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;          &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;value&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;Header is presented&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;      &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;then&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;      &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;level&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;custom&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;property&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;          &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;message&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;          &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;value&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;Header is not presented&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;      &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;filter&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;sequence&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;Next we will add some &lt;code class=&quot;css-0&quot;&gt;Log&lt;/code&gt; mediators in both &lt;code class=&quot;css-0&quot;&gt;then&lt;/code&gt; and &lt;code class=&quot;css-0&quot;&gt;else&lt;/code&gt; sections of the &lt;code class=&quot;css-0&quot;&gt;Filter&lt;/code&gt; mediator to print and log success and failure messages.&lt;/p&gt;&lt;pre class=&quot;prism-code language-xml&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;sequence&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;custom-sequence&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;xmlns&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;http://ws.apache.org/ns/synapse&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;filter&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;source&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;get-property(&amp;#x27;mycustomheader&amp;#x27;, &amp;#x27;transport&amp;#x27;)&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;then&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;      &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;level&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;custom&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;property&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;          &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;message&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;          &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;value&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;Header is presented&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;      &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;then&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;      &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;level&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;custom&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;property&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;          &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;message&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;          &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;value&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;Header is not presented&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;      &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;filter&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;sequence&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;Now we have successfully written and modified our code to capture and retrieve the &lt;code class=&quot;css-0&quot;&gt;someHeaders&lt;/code&gt; value from the request headers. We will now print some custom message on success as well as on failure methods to prompt in the carbon logs&lt;/p&gt;&lt;/div&gt;&lt;p class=&quot;css-0&quot;&gt;Given below is the complete sample Synapse sequence (&lt;code class=&quot;css-0&quot;&gt;in-sequence&lt;/code&gt;) used to filter request Headers using &lt;code class=&quot;css-0&quot;&gt;Filter&lt;/code&gt; mediator&lt;/p&gt;&lt;pre class=&quot;prism-code language-xml&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;sequence&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;custom-sequence&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;xmlns&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;http://ws.apache.org/ns/synapse&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;filter&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;source&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;get-property(&amp;#x27;mycustomheader&amp;#x27;, &amp;#x27;transport&amp;#x27;)&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;then&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;level&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;custom&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;                &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;property&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;message&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;value&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;Header is presented&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;then&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;level&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;custom&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;                &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;property&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;message&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;value&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;Header is not presented&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;filter&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;sequence&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;</content:encoded></item><item><title><![CDATA[Subscribe APIs Using Store REST APIs]]></title><link>https://stackcheats.github.io/subscribe-apis-using-store-rest-apis/content/</link><guid isPermaLink="false">https://stackcheats.github.io/subscribe-apis-using-store-rest-apis/content/</guid><pubDate>Sun, 29 Sep 2019 00:00:00 GMT</pubDate><content:encoded>&lt;style data-emotion-css=&quot;sa2dbt&quot;&gt;body{color:text;background-color:var(--theme-ui-colors-background,#fff);}&lt;/style&gt;&lt;style data-emotion-css=&quot;0&quot;&gt;&lt;/style&gt;&lt;h2 id=&quot;Intro&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Intro&quot; aria-label=&quot;Intro permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Intro&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;We will be creating APIs and subscribing and consuming them using RESTful APIs which are exposed by the &lt;strong class=&quot;css-0&quot;&gt;WSO2 API Manager&lt;/strong&gt; (2.6) platform.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;The RESTful APIs of API Manager gives an extended platform to the end-users and developers to create APIs, create an application and to subscribe to them using REST clients without touching any UIs of API Manager. This simply makes life easier when creating hundreds of APIs and testing the platform.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;In this demo, we will be covering and performing the following subjects …&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Dynamic Client Registration&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Create REST API&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Create Application&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Subscribe&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Generate Keys and Access Token&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Consume API&lt;/li&gt;&lt;/ul&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;You can find more details on exposed APIs and Docs &lt;a href=&quot;https://docs.wso2.com/display/AM260/RESTful+APIs&quot; class=&quot;css-0&quot;&gt;here&lt;/a&gt;. We will be using API Docs of API Manager v2.6. Also please find the &lt;strong class=&quot;css-0&quot;&gt;Postman collection&lt;/strong&gt; used for this demo at the end of this article&lt;/p&gt;&lt;/blockquote&gt;&lt;h2 id=&quot;Dynamic-Client-Registration&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Dynamic-Client-Registration&quot; aria-label=&quot;Dynamic Client Registration permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Dynamic Client Registration&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;Before executing any of the REST API, we have to invoke the dynamic client registration endpoint and want to get an &lt;code class=&quot;css-0&quot;&gt;Access Token&lt;/code&gt; to further continue and use the exposed APIs.&lt;/p&gt;&lt;h3 id=&quot;Server-Startup&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Server-Startup&quot; aria-label=&quot;Server Startup permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Server Startup&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Download and start the WSO2 API Manager by directing to &lt;code class=&quot;css-0&quot;&gt;&amp;lt;APIM&amp;gt;/bin&lt;/code&gt; folder and executing the following&lt;/p&gt;&lt;pre class=&quot;prism-code language-bash&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;# linux env&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;foo@bar:~$ sh wso2server.sh&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;# windows env&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;wso2server.bat&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;h3 id=&quot;Client-Registration&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Client-Registration&quot; aria-label=&quot;Client Registration permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Client Registration&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;After a successful startup, use the following endpoint reference to register a dynamic client&lt;/p&gt;&lt;pre class=&quot;prism-code language-http&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;POST: https://localhost:9443/client-registration/v0.14/register&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;Authorization: Basic &amp;lt;Base64(admin:admin)&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;Content-Type: application/json&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &amp;quot;callbackUrl&amp;quot;: &amp;quot;localhost&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &amp;quot;clientName&amp;quot;: &amp;quot;rest_api_demo&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &amp;quot;owner&amp;quot;: &amp;quot;admin&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &amp;quot;grantType&amp;quot;: &amp;quot;password refresh_token&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &amp;quot;saasApp&amp;quot;: true&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;curl command&lt;/p&gt;&lt;pre class=&quot;prism-code language-bash&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;curl&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; -X POST \&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  https://localhost:9443/client-registration/v0.14/register \&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  -H &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;#x27;Authorization: Basic YWRtaW46YWRtaW4=&amp;#x27;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; \&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  -H &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;#x27;Content-Type: application/json&amp;#x27;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; \&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  -d &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;#x27;{&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;    &amp;quot;callbackUrl&amp;quot;: &amp;quot;localhost&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;    &amp;quot;clientName&amp;quot;: &amp;quot;rest_api_demo&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;    &amp;quot;owner&amp;quot;: &amp;quot;admin&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;    &amp;quot;grantType&amp;quot;: &amp;quot;password refresh_token&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;    &amp;quot;saasApp&amp;quot;: true&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;}&amp;#x27;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;Markdown the &lt;code class=&quot;css-0&quot;&gt;clientId&lt;/code&gt; and &lt;code class=&quot;css-0&quot;&gt;clientSecret&lt;/code&gt; values from the response to generate an access token using the token endpoint.&lt;/p&gt;&lt;h3 id=&quot;Token-Generation&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Token-Generation&quot; aria-label=&quot;Token Generation permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Token Generation&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Execute the following endpoint reference to generate an access token using the obtained &lt;code class=&quot;css-0&quot;&gt;clientId&lt;/code&gt; and &lt;code class=&quot;css-0&quot;&gt;clientSecret&lt;/code&gt; values.&lt;/p&gt;&lt;pre class=&quot;prism-code language-http&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;POST: https://localhost:8243/token&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;Authorization: Basic &amp;lt;Base64(ClientID:ClientSecret)&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;Content-Type: application/x-www-form-urlencoded&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;grant_type=password&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;username=admin&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;password=admin&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;scope=apim:api_view apim:api_create apim:api_publish apim:subscribe&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;curl command&lt;/p&gt;&lt;pre class=&quot;prism-code language-bash&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;curl&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; -X POST \&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  https://localhost:8243/token \&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  -H &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;#x27;Authorization: Basic &amp;lt;Base64(ClientID:ClientSecret)&amp;gt;&amp;#x27;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; \&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  -H &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;#x27;Content-Type: application/x-www-form-urlencoded&amp;#x27;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; \&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  -d &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;#x27;grant_type=password&amp;amp;username=admin&amp;amp;password=admin&amp;amp;scope=apim%3Aapi_view%20apim%3Aapi_create%20apim%3Aapi_publish%20apim%3Asubscribe&amp;#x27;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;Now we have successfully generated an access token to use with our Store and Publisher REST APIs. Copy the generated access token from the response and keep it for future executions.&lt;/p&gt;&lt;h2 id=&quot;Create-REST-API&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Create-REST-API&quot; aria-label=&quot;Create REST API permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Create REST API&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;We will be using the exact request as defined &lt;a href=&quot;https://docs.wso2.com/display/AM260/apidocs/publisher/#!/operations#APIIndividual#apisPost&quot; class=&quot;css-0&quot;&gt;here&lt;/a&gt; to create a test API for our demo. Our demo API will be the default shipped &lt;code class=&quot;css-0&quot;&gt;PizzaShackAPI&lt;/code&gt;. Please find the request endpoint reference below&lt;/p&gt;&lt;pre class=&quot;prism-code language-http&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;POST: https://localhost:9443/api/am/publisher/v0.14/apis&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;Authorization: Bearer &amp;lt;Access Token&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;Content-Type: application/json&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &amp;quot;name&amp;quot;: &amp;quot;PizzaShackAPI&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &amp;quot;description&amp;quot;: &amp;quot;This document describe a RESTFul API for Pizza Shack online pizza delivery store.\r\n&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &amp;quot;context&amp;quot;: &amp;quot;/pizzashack&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &amp;quot;version&amp;quot;: &amp;quot;1.0.0&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &amp;quot;provider&amp;quot;: &amp;quot;admin&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &amp;quot;apiDefinition&amp;quot;: &amp;quot;{\&amp;quot;paths\&amp;quot;:{\&amp;quot;/order\&amp;quot;:{\&amp;quot;post\&amp;quot;:{\&amp;quot;x-auth-type\&amp;quot;:\&amp;quot;Application &amp;amp; Application User\&amp;quot;,\&amp;quot;x-throttling-tier\&amp;quot;:\&amp;quot;Unlimited\&amp;quot;,\&amp;quot;description\&amp;quot;:\&amp;quot;Create a new Order\&amp;quot;,\&amp;quot;parameters\&amp;quot;:[{\&amp;quot;schema\&amp;quot;:{\&amp;quot;$ref\&amp;quot;:\&amp;quot;#/definitions/Order\&amp;quot;},\&amp;quot;description\&amp;quot;:\&amp;quot;Order object that needs to be added\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;body\&amp;quot;,\&amp;quot;required\&amp;quot;:true,\&amp;quot;in\&amp;quot;:\&amp;quot;body\&amp;quot;}],\&amp;quot;responses\&amp;quot;:{\&amp;quot;201\&amp;quot;:{\&amp;quot;headers\&amp;quot;:{\&amp;quot;Location\&amp;quot;:{\&amp;quot;description\&amp;quot;:\&amp;quot;The URL of the newly created resource.\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;string\&amp;quot;}},\&amp;quot;schema\&amp;quot;:{\&amp;quot;$ref\&amp;quot;:\&amp;quot;#/definitions/Order\&amp;quot;},\&amp;quot;description\&amp;quot;:\&amp;quot;Created.\&amp;quot;}}}},\&amp;quot;/menu\&amp;quot;:{\&amp;quot;get\&amp;quot;:{\&amp;quot;x-auth-type\&amp;quot;:\&amp;quot;Application &amp;amp; Application User\&amp;quot;,\&amp;quot;x-throttling-tier\&amp;quot;:\&amp;quot;Unlimited\&amp;quot;,\&amp;quot;description\&amp;quot;:\&amp;quot;Return a list of available menu items\&amp;quot;,\&amp;quot;parameters\&amp;quot;:[],\&amp;quot;responses\&amp;quot;:{\&amp;quot;200\&amp;quot;:{\&amp;quot;headers\&amp;quot;:{},\&amp;quot;schema\&amp;quot;:{\&amp;quot;title\&amp;quot;:\&amp;quot;Menu\&amp;quot;,\&amp;quot;properties\&amp;quot;:{\&amp;quot;list\&amp;quot;:{\&amp;quot;items\&amp;quot;:{\&amp;quot;$ref\&amp;quot;:\&amp;quot;#/definitions/MenuItem\&amp;quot;},\&amp;quot;type\&amp;quot;:\&amp;quot;array\&amp;quot;}},\&amp;quot;type\&amp;quot;:\&amp;quot;object\&amp;quot;},\&amp;quot;description\&amp;quot;:\&amp;quot;OK.\&amp;quot;}}}}},\&amp;quot;schemes\&amp;quot;:[\&amp;quot;https\&amp;quot;],\&amp;quot;produces\&amp;quot;:[\&amp;quot;application/json\&amp;quot;],\&amp;quot;swagger\&amp;quot;:\&amp;quot;2.0\&amp;quot;,\&amp;quot;definitions\&amp;quot;:{\&amp;quot;MenuItem\&amp;quot;:{\&amp;quot;title\&amp;quot;:\&amp;quot;Pizza menu Item\&amp;quot;,\&amp;quot;properties\&amp;quot;:{\&amp;quot;price\&amp;quot;:{\&amp;quot;type\&amp;quot;:\&amp;quot;string\&amp;quot;},\&amp;quot;description\&amp;quot;:{\&amp;quot;type\&amp;quot;:\&amp;quot;string\&amp;quot;},\&amp;quot;name\&amp;quot;:{\&amp;quot;type\&amp;quot;:\&amp;quot;string\&amp;quot;},\&amp;quot;image\&amp;quot;:{\&amp;quot;type\&amp;quot;:\&amp;quot;string\&amp;quot;}},\&amp;quot;required\&amp;quot;:[\&amp;quot;name\&amp;quot;]},\&amp;quot;Order\&amp;quot;:{\&amp;quot;title\&amp;quot;:\&amp;quot;Pizza Order\&amp;quot;,\&amp;quot;properties\&amp;quot;:{\&amp;quot;customerName\&amp;quot;:{\&amp;quot;type\&amp;quot;:\&amp;quot;string\&amp;quot;},\&amp;quot;delivered\&amp;quot;:{\&amp;quot;type\&amp;quot;:\&amp;quot;boolean\&amp;quot;},\&amp;quot;address\&amp;quot;:{\&amp;quot;type\&amp;quot;:\&amp;quot;string\&amp;quot;},\&amp;quot;pizzaType\&amp;quot;:{\&amp;quot;type\&amp;quot;:\&amp;quot;string\&amp;quot;},\&amp;quot;creditCardNumber\&amp;quot;:{\&amp;quot;type\&amp;quot;:\&amp;quot;string\&amp;quot;},\&amp;quot;quantity\&amp;quot;:{\&amp;quot;type\&amp;quot;:\&amp;quot;number\&amp;quot;},\&amp;quot;orderId\&amp;quot;:{\&amp;quot;type\&amp;quot;:\&amp;quot;string\&amp;quot;}},\&amp;quot;required\&amp;quot;:[\&amp;quot;orderId\&amp;quot;]}},\&amp;quot;consumes\&amp;quot;:[\&amp;quot;application/json\&amp;quot;],\&amp;quot;info\&amp;quot;:{\&amp;quot;title\&amp;quot;:\&amp;quot;PizzaShackAPI\&amp;quot;,\&amp;quot;description\&amp;quot;:\&amp;quot;This document describe a RESTFul API for Pizza Shack online pizza delivery store.\\n\&amp;quot;,\&amp;quot;license\&amp;quot;:{\&amp;quot;name\&amp;quot;:\&amp;quot;Apache 2.0\&amp;quot;,\&amp;quot;url\&amp;quot;:\&amp;quot;http://www.apache.org/licenses/LICENSE-2.0.html\&amp;quot;},\&amp;quot;contact\&amp;quot;:{\&amp;quot;email\&amp;quot;:\&amp;quot;architecture@pizzashack.com\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;John Doe\&amp;quot;,\&amp;quot;url\&amp;quot;:\&amp;quot;http://www.pizzashack.com\&amp;quot;},\&amp;quot;version\&amp;quot;:\&amp;quot;1.0.0\&amp;quot;}}&amp;quot;,    &lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &amp;quot;wsdlUri&amp;quot;: null,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &amp;quot;status&amp;quot;: &amp;quot;CREATED&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &amp;quot;responseCaching&amp;quot;: &amp;quot;Disabled&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &amp;quot;cacheTimeout&amp;quot;: 300,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &amp;quot;destinationStatsEnabled&amp;quot;: false,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &amp;quot;isDefaultVersion&amp;quot;: false,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &amp;quot;type&amp;quot;: &amp;quot;HTTP&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &amp;quot;transport&amp;quot;:[&amp;quot;http&amp;quot;,&amp;quot;https&amp;quot;],&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &amp;quot;tags&amp;quot;: [&amp;quot;pizza&amp;quot;],&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &amp;quot;tiers&amp;quot;: [&amp;quot;Unlimited&amp;quot;],&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &amp;quot;maxTps&amp;quot;:{&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &amp;quot;sandbox&amp;quot;: 5000,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &amp;quot;production&amp;quot;: 1000&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  },&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &amp;quot;visibility&amp;quot;: &amp;quot;PUBLIC&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &amp;quot;visibleRoles&amp;quot;: [],&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &amp;quot;endpointConfig&amp;quot;: &amp;quot;{\&amp;quot;production_endpoints\&amp;quot;:{\&amp;quot;url\&amp;quot;:\&amp;quot;https://localhost:9443/am/sample/pizzashack/v1/api/\&amp;quot;,\&amp;quot;config\&amp;quot;:null},\&amp;quot;sandbox_endpoints\&amp;quot;:{\&amp;quot;url\&amp;quot;:\&amp;quot;https://localhost:9443/am/sample/pizzashack/v1/api/\&amp;quot;,\&amp;quot;config\&amp;quot;:null},\&amp;quot;endpoint_type\&amp;quot;:\&amp;quot;http\&amp;quot;}&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &amp;quot;endpointSecurity&amp;quot;:{&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &amp;quot;username&amp;quot;: &amp;quot;user&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &amp;quot;type&amp;quot;: &amp;quot;basic&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &amp;quot;password&amp;quot;: &amp;quot;pass&amp;quot;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  },&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &amp;quot;gatewayEnvironments&amp;quot;: &amp;quot;Production and Sandbox&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &amp;quot;sequences&amp;quot;:[&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    {&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;      &amp;quot;name&amp;quot;:&amp;quot;json_validator&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;      &amp;quot;type&amp;quot;: &amp;quot;in&amp;quot;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    },&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    {&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;      &amp;quot;name&amp;quot;:&amp;quot;log_out_message&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;      &amp;quot;type&amp;quot;: &amp;quot;out&amp;quot;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    }&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  ],&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &amp;quot;subscriptionAvailability&amp;quot;: null,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &amp;quot;subscriptionAvailableTenants&amp;quot;: [],&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &amp;quot;businessInformation&amp;quot;:{&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &amp;quot;businessOwnerEmail&amp;quot;: &amp;quot;marketing@pizzashack.com&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &amp;quot;technicalOwnerEmail&amp;quot;: &amp;quot;architecture@pizzashack.com&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &amp;quot;technicalOwner&amp;quot;: &amp;quot;John Doe&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &amp;quot;businessOwner&amp;quot;: &amp;quot;Jane Roe&amp;quot;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  },&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &amp;quot;corsConfiguration&amp;quot;:{&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &amp;quot;accessControlAllowOrigins&amp;quot;: [&amp;quot;*&amp;quot;],&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &amp;quot;accessControlAllowHeaders&amp;quot;:[&amp;quot;authorization&amp;quot;,&amp;quot;Access-Control-Allow-Origin&amp;quot;,&amp;quot;Content-Type&amp;quot;,&amp;quot;SOAPAction&amp;quot;],&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &amp;quot;accessControlAllowMethods&amp;quot;:[&amp;quot;GET&amp;quot;,&amp;quot;PUT&amp;quot;,&amp;quot;POST&amp;quot;,&amp;quot;DELETE&amp;quot;,&amp;quot;PATCH&amp;quot;,&amp;quot;OPTIONS&amp;quot;],&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &amp;quot;accessControlAllowCredentials&amp;quot;: false,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &amp;quot;corsConfigurationEnabled&amp;quot;: false&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  }&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;curl command&lt;/p&gt;&lt;pre class=&quot;prism-code language-bash&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;curl&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; -X POST \&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  https://localhost:9443/api/am/publisher/v0.14/apis \&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  -H &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;#x27;Authorization: Bearer &amp;lt;Access Token&amp;gt;&amp;#x27;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; \&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  -H &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;#x27;Content-Type: application/json&amp;#x27;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; \&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  -d &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;#x27;{&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;   &amp;quot;name&amp;quot;: &amp;quot;PizzaShackAPI&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;   &amp;quot;description&amp;quot;: &amp;quot;This document describe a RESTFul API for Pizza Shack online pizza delivery store.\r\n&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;   &amp;quot;context&amp;quot;: &amp;quot;/pizzashack&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;   &amp;quot;version&amp;quot;: &amp;quot;1.0.0&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;   &amp;quot;provider&amp;quot;: &amp;quot;admin&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;   &amp;quot;apiDefinition&amp;quot;: &amp;quot;{\&amp;quot;paths\&amp;quot;:{\&amp;quot;/order\&amp;quot;:{\&amp;quot;post\&amp;quot;:{\&amp;quot;x-auth-type\&amp;quot;:\&amp;quot;Application &amp;amp; Application User\&amp;quot;,\&amp;quot;x-throttling-tier\&amp;quot;:\&amp;quot;Unlimited\&amp;quot;,\&amp;quot;description\&amp;quot;:\&amp;quot;Create a new Order\&amp;quot;,\&amp;quot;parameters\&amp;quot;:[{\&amp;quot;schema\&amp;quot;:{\&amp;quot;&lt;/span&gt;&lt;span class=&quot;token string variable&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;$ref&lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;\&amp;quot;:\&amp;quot;#/definitions/Order\&amp;quot;},\&amp;quot;description\&amp;quot;:\&amp;quot;Order object that needs to be added\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;body\&amp;quot;,\&amp;quot;required\&amp;quot;:true,\&amp;quot;in\&amp;quot;:\&amp;quot;body\&amp;quot;}],\&amp;quot;responses\&amp;quot;:{\&amp;quot;201\&amp;quot;:{\&amp;quot;headers\&amp;quot;:{\&amp;quot;Location\&amp;quot;:{\&amp;quot;description\&amp;quot;:\&amp;quot;The URL of the newly created resource.\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;string\&amp;quot;}},\&amp;quot;schema\&amp;quot;:{\&amp;quot;&lt;/span&gt;&lt;span class=&quot;token string variable&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;$ref&lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;\&amp;quot;:\&amp;quot;#/definitions/Order\&amp;quot;},\&amp;quot;description\&amp;quot;:\&amp;quot;Created.\&amp;quot;}}}},\&amp;quot;/menu\&amp;quot;:{\&amp;quot;get\&amp;quot;:{\&amp;quot;x-auth-type\&amp;quot;:\&amp;quot;Application &amp;amp; Application User\&amp;quot;,\&amp;quot;x-throttling-tier\&amp;quot;:\&amp;quot;Unlimited\&amp;quot;,\&amp;quot;description\&amp;quot;:\&amp;quot;Return a list of available menu items\&amp;quot;,\&amp;quot;parameters\&amp;quot;:[],\&amp;quot;responses\&amp;quot;:{\&amp;quot;200\&amp;quot;:{\&amp;quot;headers\&amp;quot;:{},\&amp;quot;schema\&amp;quot;:{\&amp;quot;title\&amp;quot;:\&amp;quot;Menu\&amp;quot;,\&amp;quot;properties\&amp;quot;:{\&amp;quot;list\&amp;quot;:{\&amp;quot;items\&amp;quot;:{\&amp;quot;&lt;/span&gt;&lt;span class=&quot;token string variable&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;$ref&lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;\&amp;quot;:\&amp;quot;#/definitions/MenuItem\&amp;quot;},\&amp;quot;type\&amp;quot;:\&amp;quot;array\&amp;quot;}},\&amp;quot;type\&amp;quot;:\&amp;quot;object\&amp;quot;},\&amp;quot;description\&amp;quot;:\&amp;quot;OK.\&amp;quot;}}}}},\&amp;quot;schemes\&amp;quot;:[\&amp;quot;https\&amp;quot;],\&amp;quot;produces\&amp;quot;:[\&amp;quot;application/json\&amp;quot;],\&amp;quot;swagger\&amp;quot;:\&amp;quot;2.0\&amp;quot;,\&amp;quot;definitions\&amp;quot;:{\&amp;quot;MenuItem\&amp;quot;:{\&amp;quot;title\&amp;quot;:\&amp;quot;Pizza menu Item\&amp;quot;,\&amp;quot;properties\&amp;quot;:{\&amp;quot;price\&amp;quot;:{\&amp;quot;type\&amp;quot;:\&amp;quot;string\&amp;quot;},\&amp;quot;description\&amp;quot;:{\&amp;quot;type\&amp;quot;:\&amp;quot;string\&amp;quot;},\&amp;quot;name\&amp;quot;:{\&amp;quot;type\&amp;quot;:\&amp;quot;string\&amp;quot;},\&amp;quot;image\&amp;quot;:{\&amp;quot;type\&amp;quot;:\&amp;quot;string\&amp;quot;}},\&amp;quot;required\&amp;quot;:[\&amp;quot;name\&amp;quot;]},\&amp;quot;Order\&amp;quot;:{\&amp;quot;title\&amp;quot;:\&amp;quot;Pizza Order\&amp;quot;,\&amp;quot;properties\&amp;quot;:{\&amp;quot;customerName\&amp;quot;:{\&amp;quot;type\&amp;quot;:\&amp;quot;string\&amp;quot;},\&amp;quot;delivered\&amp;quot;:{\&amp;quot;type\&amp;quot;:\&amp;quot;boolean\&amp;quot;},\&amp;quot;address\&amp;quot;:{\&amp;quot;type\&amp;quot;:\&amp;quot;string\&amp;quot;},\&amp;quot;pizzaType\&amp;quot;:{\&amp;quot;type\&amp;quot;:\&amp;quot;string\&amp;quot;},\&amp;quot;creditCardNumber\&amp;quot;:{\&amp;quot;type\&amp;quot;:\&amp;quot;string\&amp;quot;},\&amp;quot;quantity\&amp;quot;:{\&amp;quot;type\&amp;quot;:\&amp;quot;number\&amp;quot;},\&amp;quot;orderId\&amp;quot;:{\&amp;quot;type\&amp;quot;:\&amp;quot;string\&amp;quot;}},\&amp;quot;required\&amp;quot;:[\&amp;quot;orderId\&amp;quot;]}},\&amp;quot;consumes\&amp;quot;:[\&amp;quot;application/json\&amp;quot;],\&amp;quot;info\&amp;quot;:{\&amp;quot;title\&amp;quot;:\&amp;quot;PizzaShackAPI\&amp;quot;,\&amp;quot;description\&amp;quot;:\&amp;quot;This document describe a RESTFul API for Pizza Shack online pizza delivery store.\\n\&amp;quot;,\&amp;quot;license\&amp;quot;:{\&amp;quot;name\&amp;quot;:\&amp;quot;Apache 2.0\&amp;quot;,\&amp;quot;url\&amp;quot;:\&amp;quot;http://www.apache.org/licenses/LICENSE-2.0.html\&amp;quot;},\&amp;quot;contact\&amp;quot;:{\&amp;quot;email\&amp;quot;:\&amp;quot;architecture@pizzashack.com\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;John Doe\&amp;quot;,\&amp;quot;url\&amp;quot;:\&amp;quot;http://www.pizzashack.com\&amp;quot;},\&amp;quot;version\&amp;quot;:\&amp;quot;1.0.0\&amp;quot;}}&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;   &amp;quot;wsdlUri&amp;quot;: null,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;   &amp;quot;status&amp;quot;: &amp;quot;CREATED&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;   &amp;quot;responseCaching&amp;quot;: &amp;quot;Disabled&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;   &amp;quot;cacheTimeout&amp;quot;: 300,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;   &amp;quot;destinationStatsEnabled&amp;quot;: false,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;   &amp;quot;isDefaultVersion&amp;quot;: false,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;   &amp;quot;type&amp;quot;: &amp;quot;HTTP&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;   &amp;quot;transport&amp;quot;:    [&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;      &amp;quot;http&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;      &amp;quot;https&amp;quot;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;   ],&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;   &amp;quot;tags&amp;quot;: [&amp;quot;pizza&amp;quot;],&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;   &amp;quot;tiers&amp;quot;: [&amp;quot;Unlimited&amp;quot;],&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;   &amp;quot;maxTps&amp;quot;:    {&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;      &amp;quot;sandbox&amp;quot;: 5000,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;      &amp;quot;production&amp;quot;: 1000&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;   },&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;   &amp;quot;visibility&amp;quot;: &amp;quot;PUBLIC&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;   &amp;quot;visibleRoles&amp;quot;: [],&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;   &amp;quot;endpointConfig&amp;quot;: &amp;quot;{\&amp;quot;production_endpoints\&amp;quot;:{\&amp;quot;url\&amp;quot;:\&amp;quot;https://localhost:9443/am/sample/pizzashack/v1/api/\&amp;quot;,\&amp;quot;config\&amp;quot;:null},\&amp;quot;sandbox_endpoints\&amp;quot;:{\&amp;quot;url\&amp;quot;:\&amp;quot;https://localhost:9443/am/sample/pizzashack/v1/api/\&amp;quot;,\&amp;quot;config\&amp;quot;:null},\&amp;quot;endpoint_type\&amp;quot;:\&amp;quot;http\&amp;quot;}&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;   &amp;quot;endpointSecurity&amp;quot;:    {&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;      &amp;quot;username&amp;quot;: &amp;quot;user&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;      &amp;quot;type&amp;quot;: &amp;quot;basic&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;      &amp;quot;password&amp;quot;: &amp;quot;pass&amp;quot;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;   },&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;   &amp;quot;gatewayEnvironments&amp;quot;: &amp;quot;Production and Sandbox&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;   &amp;quot;sequences&amp;quot;: [{&amp;quot;name&amp;quot;:&amp;quot;json_validator&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;in&amp;quot;},{&amp;quot;name&amp;quot;:&amp;quot;log_out_message&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;out&amp;quot;}],&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;   &amp;quot;subscriptionAvailability&amp;quot;: null,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;   &amp;quot;subscriptionAvailableTenants&amp;quot;: [],&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;   &amp;quot;businessInformation&amp;quot;:    {&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;      &amp;quot;businessOwnerEmail&amp;quot;: &amp;quot;marketing@pizzashack.com&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;      &amp;quot;technicalOwnerEmail&amp;quot;: &amp;quot;architecture@pizzashack.com&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;      &amp;quot;technicalOwner&amp;quot;: &amp;quot;John Doe&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;      &amp;quot;businessOwner&amp;quot;: &amp;quot;Jane Roe&amp;quot;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;   },&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;   &amp;quot;corsConfiguration&amp;quot;:    {&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;      &amp;quot;accessControlAllowOrigins&amp;quot;: [&amp;quot;*&amp;quot;],&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;      &amp;quot;accessControlAllowHeaders&amp;quot;:       [&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;         &amp;quot;authorization&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;         &amp;quot;Access-Control-Allow-Origin&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;         &amp;quot;Content-Type&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;         &amp;quot;SOAPAction&amp;quot;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;      ],&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;      &amp;quot;accessControlAllowMethods&amp;quot;:       [&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;         &amp;quot;GET&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;         &amp;quot;PUT&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;         &amp;quot;POST&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;         &amp;quot;DELETE&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;         &amp;quot;PATCH&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;         &amp;quot;OPTIONS&amp;quot;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;      ],&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;      &amp;quot;accessControlAllowCredentials&amp;quot;: false,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;      &amp;quot;corsConfigurationEnabled&amp;quot;: false&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;   }&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;}&amp;#x27;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;After successful execution, copy the &lt;code class=&quot;css-0&quot;&gt;id&lt;/code&gt; value from the response. We will be using the &lt;code class=&quot;css-0&quot;&gt;id&lt;/code&gt; value to identify our Pizza Shack API when subscribing to an application.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Now we have to change the status of our created API from &lt;code class=&quot;css-0&quot;&gt;CREATED&lt;/code&gt; to &lt;code class=&quot;css-0&quot;&gt;PUBLISHED&lt;/code&gt; state.&lt;/p&gt;&lt;pre class=&quot;prism-code language-http&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;POST: https://localhost:9443/api/am/publisher/v0.14/apis/change-lifecycle?apiId=&amp;lt;API Id Value&amp;gt;&amp;amp;action=Publish&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;Authorization: Bearer &amp;lt;Access Token&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;curl command&lt;/p&gt;&lt;pre class=&quot;prism-code language-bash&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;curl&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; -X POST \&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;#x27;https://localhost:9443/api/am/publisher/v0.14/apis/change-lifecycle?apiId=&amp;lt;API ID&amp;gt;&amp;amp;action=Publish&amp;#x27;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; \&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  -H &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;#x27;Authorization: Bearer &amp;lt;Access Token&amp;gt;&amp;#x27;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; \&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;h2 id=&quot;Create-Application&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Create-Application&quot; aria-label=&quot;Create Application permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Create Application&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;Before subscribing an API, we have to create an application for it with the appropriate throttling tiers/subscription level.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;We can also use the DefaultApplication from the Store to subscribe to an API, but for the demo, we will be creating a new application&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;Below presented is the request endpoint reference to create a new application.&lt;/p&gt;&lt;pre class=&quot;prism-code language-http&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;POST: https://localhost:9443/api/am/store/v0.14/applications&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;Authorization: Bearer &amp;lt;Access Token&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;Content-Type: application/json&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &amp;quot;throttlingTier&amp;quot;: &amp;quot;Unlimited&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &amp;quot;description&amp;quot;: &amp;quot;Demo App&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &amp;quot;name&amp;quot;: &amp;quot;DemoApp&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &amp;quot;callbackUrl&amp;quot;: &amp;quot;http://localhost&amp;quot;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;curl command&lt;/p&gt;&lt;pre class=&quot;prism-code language-bash&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;curl&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; -X POST \&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  https://localhost:9443/api/am/store/v0.14/applications \&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  -H &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;#x27;Authorization: Bearer &amp;lt;Access Token&amp;gt;&amp;#x27;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; \&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  -H &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;#x27;Content-Type: application/json&amp;#x27;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; \&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  -d &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;#x27;{&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;    &amp;quot;throttlingTier&amp;quot;: &amp;quot;Unlimited&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;    &amp;quot;description&amp;quot;: &amp;quot;Demo App&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;    &amp;quot;name&amp;quot;: &amp;quot;DemoApp&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;    &amp;quot;callbackUrl&amp;quot;: &amp;quot;http://localhost&amp;quot;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;}&amp;#x27;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;Note down the &lt;code class=&quot;css-0&quot;&gt;applicationId&lt;/code&gt; value from the successful response.&lt;/p&gt;&lt;h2 id=&quot;Subscribe&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Subscribe&quot; aria-label=&quot;Subscribe permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Subscribe&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;At last, now we are in the section of subscribing to our created &lt;code class=&quot;css-0&quot;&gt;PizzaShackAPI&lt;/code&gt; with the above-generated &lt;code class=&quot;css-0&quot;&gt;DemoApp&lt;/code&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;For subscription, we can use either the &lt;code class=&quot;css-0&quot;&gt;id&lt;/code&gt; value of our created API or the unique name of our &lt;code class=&quot;css-0&quot;&gt;PizzaShackAPI&lt;/code&gt;. Using the &lt;code class=&quot;css-0&quot;&gt;id&lt;/code&gt; value of an API is a straightforward execution. But sometimes, using the unique name will be more helpful when you know the minimal of an API.&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;If a user called &lt;code class=&quot;css-0&quot;&gt;admin&lt;/code&gt; has created an API named &lt;code class=&quot;css-0&quot;&gt;DemoAPI&lt;/code&gt; with version &lt;code class=&quot;css-0&quot;&gt;v1.0.0&lt;/code&gt; then the unique name will be as &lt;code class=&quot;css-0&quot;&gt;admin-DemoAPI-v1.0.0&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;If a user called &lt;code class=&quot;css-0&quot;&gt;foo&lt;/code&gt; from a tenant named &lt;code class=&quot;css-0&quot;&gt;bar&lt;/code&gt; has created an API named &lt;code class=&quot;css-0&quot;&gt;TenantAPI&lt;/code&gt; with the version &lt;code class=&quot;css-0&quot;&gt;1.0&lt;/code&gt; then the unique name will be as &lt;code class=&quot;css-0&quot;&gt;foo-AT-bar.com-TenantAPI-1.0&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;pre class=&quot;prism-code language-http&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;POST: https://localhost:9443/api/am/store/v0.14/subscriptions&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;Authorization: Bearer &amp;lt;Access Token&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;Content-Type: application/json&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &amp;quot;tier&amp;quot;: &amp;quot;Unlimited&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &amp;quot;apiIdentifier&amp;quot;: &amp;quot;&amp;lt;API ID Value || API Unique Name&amp;gt;&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &amp;quot;applicationId&amp;quot;: &amp;quot;&amp;lt;Application ID Value&amp;gt;&amp;quot;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;curl command&lt;/p&gt;&lt;pre class=&quot;prism-code language-bash&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;curl&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; -X POST \&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  https://localhost:9443/api/am/store/v0.14/subscriptions \&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  -H &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;#x27;Authorization: Bearer &amp;lt;Access Token&amp;gt;&amp;#x27;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; \&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  -H &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;#x27;Content-Type: application/json&amp;#x27;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; \&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  -d &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;#x27;{&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;  &amp;quot;tier&amp;quot;: &amp;quot;Unlimited&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;  &amp;quot;apiIdentifier&amp;quot;: &amp;quot;admin-PizzaShackAPI-1.0.0&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;  &amp;quot;applicationId&amp;quot;: &amp;quot;Application ID&amp;quot;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;}&amp;#x27;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;h2 id=&quot;Generate-Keys&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Generate-Keys&quot; aria-label=&quot;Generate Keys permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Generate Keys&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;Next, we will be generating Production Keys for our &lt;code class=&quot;css-0&quot;&gt;DemoApp&lt;/code&gt; to generate an access token for API consumption.&lt;/p&gt;&lt;pre class=&quot;prism-code language-http&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;POST: https://localhost:9443/api/am/store/v0.14/applications/generate-keys?applicationId=&amp;lt;Application ID Value&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;Authorization: Bearer &amp;lt;Access Token&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;Content-Type: application/json&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &amp;quot;validityTime&amp;quot;: &amp;quot;3600&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &amp;quot;keyType&amp;quot;: &amp;quot;PRODUCTION&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &amp;quot;accessAllowDomains&amp;quot;: [ &amp;quot;ALL&amp;quot; ],&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &amp;quot;scopes&amp;quot;: [ &amp;quot;am_application_scope&amp;quot;, &amp;quot;default&amp;quot; ],&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &amp;quot;supportedGrantTypes&amp;quot;: [ &amp;quot;urn:ietf:params:oauth:grant-type:saml2-bearer&amp;quot;, &amp;quot;iwa:ntlm&amp;quot;, &amp;quot;refresh_token&amp;quot;, &amp;quot;client_credentials&amp;quot;, &amp;quot;password&amp;quot; ]&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;curl command&lt;/p&gt;&lt;pre class=&quot;prism-code language-bash&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;curl&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; -X POST \&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;#x27;https://localhost:9443/api/am/store/v0.14/applications/generate-keys?applicationId=&amp;lt;Application ID&amp;gt;&amp;#x27;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; \&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  -H &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;#x27;Authorization: Bearer &amp;lt;Access Token&amp;gt;&amp;#x27;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; \&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  -H &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;#x27;Content-Type: application/json&amp;#x27;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; \&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  -d &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;#x27;{&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;  &amp;quot;validityTime&amp;quot;: &amp;quot;3600&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;  &amp;quot;keyType&amp;quot;: &amp;quot;PRODUCTION&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;  &amp;quot;accessAllowDomains&amp;quot;: [ &amp;quot;ALL&amp;quot; ],&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;  &amp;quot;scopes&amp;quot;: [ &amp;quot;am_application_scope&amp;quot;, &amp;quot;default&amp;quot; ],&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;  &amp;quot;supportedGrantTypes&amp;quot;: [ &amp;quot;urn:ietf:params:oauth:grant-type:saml2-bearer&amp;quot;, &amp;quot;iwa:ntlm&amp;quot;, &amp;quot;refresh_token&amp;quot;, &amp;quot;client_credentials&amp;quot;, &amp;quot;password&amp;quot; ]&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;}&amp;#x27;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;Note down both the &lt;code class=&quot;css-0&quot;&gt;consumerKey&lt;/code&gt; and &lt;code class=&quot;css-0&quot;&gt;consumerSecret&lt;/code&gt; values to generate an Access Token.&lt;/p&gt;&lt;pre class=&quot;prism-code language-http&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;POST: https://localhost:8243/token&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;Authorization: Basic &amp;lt;Base64(ConsumerKey:ConsumerSecret)&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;Content-Type: application/x-www-form-urlencoded&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;grant_type=password&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;username=admin&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;password=admin&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;scope=default&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;curl command&lt;/p&gt;&lt;pre class=&quot;prism-code language-bash&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;curl&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; -X POST \&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  https://localhost:8243/token \&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  -H &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;#x27;Authorization: Basic &amp;lt;Base64(ConsumerKey:ConsumerSecret)&amp;gt;&amp;#x27;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; \&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  -H &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;#x27;Content-Type: application/x-www-form-urlencoded&amp;#x27;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; \&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  -d &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;#x27;grant_type=password&amp;amp;username=admin&amp;amp;password=admin&amp;amp;scope=default&amp;#x27;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;Note the &lt;code class=&quot;css-0&quot;&gt;access_token&lt;/code&gt; value to invoke and consumer our Pizza Shack API&lt;/p&gt;&lt;h2 id=&quot;Consume--Test&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Consume--Test&quot; aria-label=&quot;Consume  Test permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Consume &amp;amp; Test&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;At last, now we are going to invoke and consume our created Pizza Shack API using the below request endpoint reference with the above-generated access token.&lt;/p&gt;&lt;pre class=&quot;prism-code language-http&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;GET: https://localhost:8243/pizzashack/1.0.0/menu&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;Authorization: Beaer &amp;lt;Access Token&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;curl command&lt;/p&gt;&lt;pre class=&quot;prism-code language-bash&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;curl&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; -X GET \&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  https://localhost:8243/pizzashack/1.0.0/menu \&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;  -H &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;#x27;Authorization: Bearer &amp;lt;Access Token&amp;gt;&amp;#x27;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; \&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;After all these struggles, We have successfully created an API, application and subscribed and invoked them and achieved our goals.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;I know it is hard to manage and remember these curl commands and you need a way to organize them. Therefore, please find the &lt;strong class=&quot;css-0&quot;&gt;Postman REST API collection&lt;/strong&gt; of this demo to make life easier.&lt;/p&gt;&lt;h3 id=&quot;Postman-Collection&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Postman-Collection&quot; aria-label=&quot;Postman Collection permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Postman Collection&lt;/h3&gt;&lt;div title=&quot;Subscribe-API-Using-Store-REST-APIs.postman_collection.json&quot; class=&quot;css-0&quot;&gt;&lt;/div&gt;</content:encoded></item><item><title><![CDATA[Expose SOAP as REST API]]></title><link>https://stackcheats.github.io/expose-soap-as-rest-api/content/</link><guid isPermaLink="false">https://stackcheats.github.io/expose-soap-as-rest-api/content/</guid><pubDate>Sat, 28 Sep 2019 00:00:00 GMT</pubDate><content:encoded>&lt;style data-emotion-css=&quot;sa2dbt&quot;&gt;body{color:text;background-color:var(--theme-ui-colors-background,#fff);}&lt;/style&gt;&lt;style data-emotion-css=&quot;0&quot;&gt;&lt;/style&gt;&lt;h2 id=&quot;Intro&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Intro&quot; aria-label=&quot;Intro permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Intro&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;In this medium, we will be looking on how to expose a legacy web-service / SOAP service as REST APIs using both WSO2 API Manager (2.6.0) and Enterprise Integrator (6.5.0).&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;strong class=&quot;css-0&quot;&gt;Why EI &amp;amp; API Manager? Can’t we do it using either one of them?&lt;/strong&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Of course we can. It is possible to expose a SOAP service as REST APIs using either API Manager or Enterprise Integrator. But, if you have added additional mediations and performing heavy-duty mediations in API sequences, then using both the API Manager and Enterprise Integrator is a best solution. Which is because, EI is scoped and capable to perform heavy-mediations as well as the API Manager is scoped to perform only API management processes.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;This post illustrates how to add an LDAP user-store as a secondary user-store in WSO2 API Manager (in almost every WSO2 Product).&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;For demo purposes, I have implemented a mock &lt;a href=&quot;https://github.com/athiththan11/RepoDeWS&quot; class=&quot;css-0&quot;&gt;Developer Management Web Service&lt;/a&gt; using Spring Boot and will be using that to configure our EI and API Manager instances.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;strong class=&quot;css-0&quot;&gt;Let’s dive into the demo …&lt;/strong&gt;&lt;/p&gt;&lt;div title=&quot;RepoDeWS&quot; class=&quot;css-0&quot;&gt;&lt;/div&gt;&lt;h2 id=&quot;Legacy-Service&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Legacy-Service&quot; aria-label=&quot;Legacy Service permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Legacy Service&lt;/h2&gt;&lt;h3 id=&quot;Entities--Services&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Entities--Services&quot; aria-label=&quot;Entities  Services permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Entities &amp;amp; Services&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;The Developer Management Web Service contains the following entities and services …&lt;/p&gt;&lt;pre class=&quot;prism-code language-text&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;Developer&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    - Add Developer&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    - Get Developer&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    - Delete Developer&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;Repo&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    - Add Repo&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    - Get Repo&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;h3 id=&quot;Build--Run&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Build--Run&quot; aria-label=&quot;Build  Run permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Build &amp;amp; Run&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Clone or download the project from GitHub, and execute the following command from the root folder to start the web-service server&lt;/p&gt;&lt;pre class=&quot;prism-code language-bash&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;mvn spring-boot:run&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;If you don’t have maven installed, then use the following to start the server&lt;/p&gt;&lt;pre class=&quot;prism-code language-bash&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;./mvnw spring-boot:run&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;After a successful startup, navigate to &lt;a href=&quot;https://localhost:8443/ws/developers.wsdl&quot; class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;https://localhost:8443/ws/developers.wsdl&lt;/code&gt;&lt;/a&gt; to access the WSDL definitions of our Developer Management service.&lt;/p&gt;&lt;h2 id=&quot;WSO2-Enterprise-Integrator&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#WSO2-Enterprise-Integrator&quot; aria-label=&quot;WSO2 Enterprise Integrator permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;WSO2 Enterprise Integrator&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;We will be starting from &lt;strong class=&quot;css-0&quot;&gt;WSO2 Enterprise Integrator&lt;/strong&gt; instance to expose the provided legacy service as REST service.&lt;/p&gt;&lt;h3 id=&quot;Truststore--Certificate&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Truststore--Certificate&quot; aria-label=&quot;Truststore  Certificate permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Truststore &amp;amp; Certificate&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Beforehand, we want to export the self-signed certificate of our Developer Management service to our EI instance for a hassle-free SSL connectivity and HTTPS communication.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Follow the given steps to export and import certificates of our legacy service to the EI’s trust-store.&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Export or download the self-signed certificate of our legacy service from the browser.&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;Follow this &lt;code class=&quot;css-0&quot;&gt;https://www.shellhacks.com/get-ssl-certificate-from-server-site-url-export-download/&lt;/code&gt; to export and download the self-signed certificate from the browser&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Execute the following command to import the certificate to our EI instance&lt;/li&gt;&lt;/ul&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;Navigate to &lt;code class=&quot;css-0&quot;&gt;&amp;lt;EI&amp;gt;/repository/resources/security&lt;/code&gt; folder and execute the following command. Enter &lt;code class=&quot;css-0&quot;&gt;wso2carbon&lt;/code&gt; as the password if it prompts&lt;/p&gt;&lt;/blockquote&gt;&lt;pre class=&quot;prism-code language-bash&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;keytool -importcert -file &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;path to crt&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; -keystore client-truststore.jks -alias hydrogen.com&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;h3 id=&quot;Carbon-Artifact&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Carbon-Artifact&quot; aria-label=&quot;Carbon Artifact permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Carbon Artifact&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Start the EI instance by navigating to the &lt;code class=&quot;css-0&quot;&gt;/bin&lt;/code&gt; folder and execute the following command based on your environment …&lt;/p&gt;&lt;pre class=&quot;prism-code language-bash&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;# linux env&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;sh integrator.sh&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;# windows env&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;integrator.bat&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;Fire up your favorite browser and route to &lt;a href=&quot;https://localhost:9443/carbon&quot; class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;https://localhost:9443/carbon&lt;/code&gt;&lt;/a&gt; and log in using the following credentials&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;username: &lt;code class=&quot;css-0&quot;&gt;admin&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;password: &lt;code class=&quot;css-0&quot;&gt;admin&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;I have implemented and provided a carbon archive with configurations related to SOAP to REST services, endpoints, and sequences. You can use the following artifact and deploy it our EI instance without any configurations hassle.&lt;/p&gt;&lt;div title=&quot;DevManagementServiceAPI_1.0-0.car&quot; class=&quot;css-0&quot;&gt;&lt;/div&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/14d96c239daec68693c5b96f81737ae5/42cbc/add_carbon_application.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:12.837837837837837%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAADCAIAAAAcOLh5AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAfklEQVQI122LSxLCIBAFuf8RVQwQICRBkd/MUCTRbLXs6lW/ekwYycV64W7UocT+WCAn4DfBr0OKtWTKCb+MoKQRg7JmYcqq2QXvnsGXmrbzXDJIoe9cLrOH2n6shfRoz9Vqx6aXT3Fv8K7xKGFfJyRqiECIjWj7x9kRcev9A6rkqRmC1R/VAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;WSO2 EI: Add Carbon Application&quot; title=&quot;WSO2 EI: Add Carbon Application&quot; src=&quot;/static/14d96c239daec68693c5b96f81737ae5/6d370/add_carbon_application.png&quot; srcSet=&quot;/static/14d96c239daec68693c5b96f81737ae5/c5084/add_carbon_application.png 148w,/static/14d96c239daec68693c5b96f81737ae5/60cc9/add_carbon_application.png 295w,/static/14d96c239daec68693c5b96f81737ae5/6d370/add_carbon_application.png 590w,/static/14d96c239daec68693c5b96f81737ae5/540ae/add_carbon_application.png 885w,/static/14d96c239daec68693c5b96f81737ae5/2561a/add_carbon_application.png 1180w,/static/14d96c239daec68693c5b96f81737ae5/42cbc/add_carbon_application.png 1600w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Select &lt;code class=&quot;css-0&quot;&gt;Add&lt;/code&gt; under &lt;code class=&quot;css-0&quot;&gt;Carbon Applications&lt;/code&gt; section and upload and deploy the above-provided carbon archive.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Below given is the source code of Developer Management Service API Carbon artifact&lt;/p&gt;&lt;div title=&quot;DevManagementServiceAPI.zip&quot; class=&quot;css-0&quot;&gt;&lt;/div&gt;&lt;h3 id=&quot;Run--Test&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Run--Test&quot; aria-label=&quot;Run  Test permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Run &amp;amp; Test&lt;/h3&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;Before testing, make sure to verify whether the EI instance is running and deploy the provided Carbon archive&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;Test the exposed REST API service using the below cURL commands. Given below are a couple of cURL commands to test the exposed REST APIs.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;Given below is a .http file, can be used with VS Code with REST Client Extension&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;div id=&quot;gist98054147&quot; class=&quot;gist css-0&quot;&gt;
    &lt;div class=&quot;gist-file css-0&quot;&gt;
      &lt;div class=&quot;gist-data css-0&quot;&gt;
        &lt;div class=&quot;js-gist-file-update-container js-task-list-container file-box css-0&quot;&gt;
  &lt;div id=&quot;file-wso2-trilogy-ei-curl-http&quot; class=&quot;file my-2 css-0&quot;&gt;
    
  &lt;div itemProp=&quot;text&quot; class=&quot;Box-body p-0 blob-wrapper data type-http css-0&quot;&gt;

      
&lt;div class=&quot;js-check-bidi js-blob-code-container blob-code-content css-0&quot;&gt;

  &lt;template class=&quot;js-file-alert-template&quot;&gt;&lt;/template&gt;&lt;template class=&quot;js-line-alert-template&quot;&gt;&lt;/template&gt;

  &lt;table class=&quot;highlight tab-size js-file-line-container js-code-nav-container js-tagsearch-file css-0&quot; data-tab-size=&quot;8&quot; data-paste-markdown-skip=&quot;&quot; data-tagsearch-lang=&quot;HTTP&quot; data-tagsearch-path=&quot;wso2-trilogy-ei-curl.http&quot;&gt;
        &lt;tbody&gt;&lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-L1&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;1&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-LC1&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-ii&quot;&gt;@hostname = https://localhost:8243/dev-management&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-L2&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;2&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-LC2&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-ii&quot;&gt;@username = athiththan11&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-L3&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;3&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-LC3&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-L4&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;4&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-LC4&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-ii&quot;&gt;### Get Developer&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-L5&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;5&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-LC5&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-ii&quot;&gt;# @name getDeveloper&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-L6&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;6&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-LC6&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-ii&quot;&gt;curl -k -X GET {{hostname}}/devs/{{username}} \&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-L7&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;7&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-LC7&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &lt;span class=&quot;pl-ii&quot;&gt;-H &amp;quot;Content-Type: application/json&amp;quot;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-L8&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;8&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-LC8&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-L9&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;9&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-LC9&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-ii&quot;&gt;### Get Repos of a Developer&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-L10&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;10&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-LC10&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-ii&quot;&gt;# @name getRepos&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-L11&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;11&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-LC11&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-ii&quot;&gt;curl -k -X GET {{hostname}}/devs/{{username}}/repos \&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-L12&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;12&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-LC12&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &lt;span class=&quot;pl-ii&quot;&gt;-H &amp;quot;Content-Type: application/json&amp;quot;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-L13&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;13&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-LC13&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-L14&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;14&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-LC14&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-ii&quot;&gt;### Delete a Developer&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-L15&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;15&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-LC15&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-ii&quot;&gt;# @name deleteDeveloper&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-L16&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;16&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-LC16&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-ii&quot;&gt;curl -k -X DELETE {{hostname}}/devs/{{username}} \&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-L17&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;17&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-LC17&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &lt;span class=&quot;pl-ii&quot;&gt;-H &amp;quot;Content-Type: application/json&amp;quot;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-L18&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;18&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-LC18&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-L19&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;19&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-LC19&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-ii&quot;&gt;### Create a Developer&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-L20&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;20&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-LC20&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-ii&quot;&gt;# @name addDeveloper&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-L21&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;21&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-LC21&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-ii&quot;&gt;curl -k -X POST {{hostname}}/devs \&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-L22&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;22&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-LC22&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &lt;span class=&quot;pl-ii&quot;&gt;-d &amp;#x27;{ &amp;quot;username&amp;quot;: &amp;quot;athiththan11&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;Athiththan&amp;quot;, &amp;quot;email&amp;quot;: &amp;quot;athiththan11@test.com&amp;quot; }&amp;#x27; \&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-L23&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;23&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-LC23&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &lt;span class=&quot;pl-ii&quot;&gt;-H &amp;quot;Content-Type: application/json&amp;quot;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-L24&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;24&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-LC24&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-L25&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;25&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-LC25&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-ii&quot;&gt;### Create a Repo&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-L26&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;26&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-LC26&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-ii&quot;&gt;# @name addRepo&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-L27&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;27&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-LC27&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-ii&quot;&gt;curl -k -X POST {{hostname}}/repos \&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-L28&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;28&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-LC28&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &lt;span class=&quot;pl-ii&quot;&gt;-d &amp;#x27;{ &amp;quot;name&amp;quot;: &amp;quot;repodews&amp;quot;, &amp;quot;username&amp;quot;: &amp;quot;athiththan11&amp;quot;, &amp;quot;forks&amp;quot;: 0 }&amp;#x27; \&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-L29&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;29&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-ei-curl-http-LC29&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &lt;span class=&quot;pl-ii&quot;&gt;-H &amp;quot;Content-Type: application/json&amp;quot;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
  &lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;


  &lt;/div&gt;

  &lt;/div&gt;&lt;/div&gt;

      &lt;/div&gt;
      &lt;div class=&quot;gist-meta css-0&quot;&gt;
        &lt;a href=&quot;https://gist.github.com/athiththan11/96ef52ab35dea69562119183cd2d3bda/raw/3be9d5a2e31c97ffc99dcd58ba51dcc42d268599/wso2-trilogy-ei-curl.http&quot; style=&quot;css-float:right&quot; class=&quot;css-0&quot;&gt;view raw&lt;/a&gt;
        &lt;a href=&quot;https://gist.github.com/athiththan11/96ef52ab35dea69562119183cd2d3bda#file-wso2-trilogy-ei-curl-http&quot; class=&quot;css-0&quot;&gt;
          wso2-trilogy-ei-curl.http
        &lt;/a&gt;
        hosted with ❤ by &lt;a href=&quot;https://github.com&quot; class=&quot;css-0&quot;&gt;GitHub&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;&lt;/div&gt;&lt;/p&gt;&lt;h2 id=&quot;WSO2-API-Manager&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#WSO2-API-Manager&quot; aria-label=&quot;WSO2 API Manager permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;WSO2 API Manager&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;Thereafter, we’ll configure a WSO2 API Manager instance to manage the API lifecycle, traffic, subscriptions, and analytics of our exposed REST service.&lt;/p&gt;&lt;h3 id=&quot;Port-Offset&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Port-Offset&quot; aria-label=&quot;Port Offset permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Port Offset&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;In advance, we need to configure a port off-set for our API Manager instance, this done because both our EI and API Manager instances will be running on a single machine.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Navigate to &lt;code class=&quot;css-0&quot;&gt;&amp;lt;APIM&amp;gt;/repository/conf/carbon.xml&lt;/code&gt; and change the &lt;code class=&quot;css-0&quot;&gt;&amp;lt;Offset&amp;gt;&lt;/code&gt; value from &lt;code class=&quot;css-0&quot;&gt;0&lt;/code&gt; to &lt;code class=&quot;css-0&quot;&gt;1&lt;/code&gt;. And, start the API Manager instance by navigating to &lt;code class=&quot;css-0&quot;&gt;&amp;lt;APIM&amp;gt;/bin&lt;/code&gt; folder and execute the following command based on your environment …&lt;/p&gt;&lt;pre class=&quot;prism-code language-bash&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;# linux env&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;sh wso2server.sh&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;# windows env&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;wso2server.bat&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;h3 id=&quot;Design--Publish-REST-API&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Design--Publish-REST-API&quot; aria-label=&quot;Design  Publish REST API permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Design &amp;amp; Publish REST API&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;After a successful startup, route to &lt;a href=&quot;https://localhost:9444/publisher&quot; class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;https://localhost:9444/publisher&lt;/code&gt;&lt;/a&gt; and login using admin as both the username and password.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Given below is a complete Swagger definition for our Developer Management REST API.&lt;/p&gt;&lt;div title=&quot;DeveloperManagementServiceSwagger.json&quot; class=&quot;css-0&quot;&gt;&lt;/div&gt;&lt;p class=&quot;css-0&quot;&gt;Click on &lt;code class=&quot;css-0&quot;&gt;Add New API&lt;/code&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/0238ac0f846a8bc3b6be3d1183c690c4/20759/add_new_api.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:25%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAIAAADKYVtkAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAsUlEQVQY02Mwt7QxMLNR1TGWVVSVlJaXlFUSkVbEikRllATEZfVNbZQ09TUNzNT1TBh0bX2VjF1ENazCE3NXbdi5YPXO6St3TcOBpq/aPWnptinLdkxeun3Ksu0Myopy6ipKQvw8He2t//////Pnz3+iAYOSkrKqmpqwiEhdQ8Onn78fP3/56u37b99/EEQ/f/0GalZSVVUVFhaub2g4fePR5gNnj1649ffv33+EANBmAHQ8vg5RWhFYAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;WSO2 APIM: Add New API&quot; title=&quot;WSO2 APIM: Add New API&quot; src=&quot;/static/0238ac0f846a8bc3b6be3d1183c690c4/6d370/add_new_api.png&quot; srcSet=&quot;/static/0238ac0f846a8bc3b6be3d1183c690c4/c5084/add_new_api.png 148w,/static/0238ac0f846a8bc3b6be3d1183c690c4/60cc9/add_new_api.png 295w,/static/0238ac0f846a8bc3b6be3d1183c690c4/6d370/add_new_api.png 590w,/static/0238ac0f846a8bc3b6be3d1183c690c4/540ae/add_new_api.png 885w,/static/0238ac0f846a8bc3b6be3d1183c690c4/2561a/add_new_api.png 1180w,/static/0238ac0f846a8bc3b6be3d1183c690c4/20759/add_new_api.png 3360w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Then select &lt;code class=&quot;css-0&quot;&gt;I Have an Existing API&lt;/code&gt; and upload the provided swagger file.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/a6bbdc2aa9199fee6c0f214fe7190d37/f021b/swagger_upload.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:47.972972972972975%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAIAAAA7N+mxAAAACXBIWXMAAAsTAAALEwEAmpwYAAABDklEQVQoz5XQTU+DMBgH8H4tNfHuUU08elfjzY/lR1g86UEzHMPBMCEBisJ4WW0Z1MIs7FmJiS8szl/+6QHa9P8UHZxe7Z9c7h6d7xye/St7xxcoTEiUvs0yWgip8qEitwki86xY5FUl2rZpf2o2ppHwG42Np6ltmxPT8zyMMay+EgTBbIMkSeBKIQSqBRe8pJSWZVlBASGqT8s+UkrK8uHYKjhH14P7Zy+EDnVdt39pmvVohOY3d0O2KNDg9sGwbN/3oihK0zSO40SJFfhCvpsTwhh95yW0QFPLNM2JruuO43TT4i9g8rAPbOJQW9O0x9EIVsMwXNd9/eWlD+4Od6/Xtc2yDF4u3wJjDGqvANNJCbfPxjAvAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;WSO2 APIM: Swagger Upload&quot; title=&quot;WSO2 APIM: Swagger Upload&quot; src=&quot;/static/a6bbdc2aa9199fee6c0f214fe7190d37/6d370/swagger_upload.png&quot; srcSet=&quot;/static/a6bbdc2aa9199fee6c0f214fe7190d37/c5084/swagger_upload.png 148w,/static/a6bbdc2aa9199fee6c0f214fe7190d37/60cc9/swagger_upload.png 295w,/static/a6bbdc2aa9199fee6c0f214fe7190d37/6d370/swagger_upload.png 590w,/static/a6bbdc2aa9199fee6c0f214fe7190d37/540ae/swagger_upload.png 885w,/static/a6bbdc2aa9199fee6c0f214fe7190d37/2561a/swagger_upload.png 1180w,/static/a6bbdc2aa9199fee6c0f214fe7190d37/f021b/swagger_upload.png 2760w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Add the context as &lt;code class=&quot;css-0&quot;&gt;/dev-management&lt;/code&gt; and click &lt;code class=&quot;css-0&quot;&gt;Next: Implement&lt;/code&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/23294b6960cacdb9196bd3be676e3610/0b3fb/context_configuration.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:51.35135135135135%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAIAAAA7N+mxAAAACXBIWXMAAAsTAAALEwEAmpwYAAABPUlEQVQoz42QzU7DMBCE88Ic4Rm48hJIqLceOHFAPcKJRKiiraCkzl/T5q+J1443DhtbSgO9MBopzmq+7MROVjZsnx8rKAErY+x0/z85D6/J1f3H3ZN/+/h1M1tfz1bvQdlrzMr6k6UcpJAtGUSrFCbHahdndtK2yll9h88v3tvK9zaBu2Humm1ZGMVJGCdBFIfmQI6Mt/7OZ0GU7CmR54XTayqpgTdQ17w4NkUmThUK+GXgnVJa6ziOwyBQbTswWjt6gHsOwOu6KUvRNGoAhG7l2VJoVBRjjHmeh4i9hekhpcyLom44TWmERpfX03XdYrGYz+dpmtrXAUZU1enEQZDoQ8JImZ6jTAyXy6XruofDoZ/WpigqRQwAEE9XaVtY0RIbm2oKI5jNhNmoZUbZ2PR8hu2v2p0j/Kf25eYfm1w93gwKHBkAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;WSO2 APIM: Context Configuration&quot; title=&quot;WSO2 APIM: Context Configuration&quot; src=&quot;/static/23294b6960cacdb9196bd3be676e3610/6d370/context_configuration.png&quot; srcSet=&quot;/static/23294b6960cacdb9196bd3be676e3610/c5084/context_configuration.png 148w,/static/23294b6960cacdb9196bd3be676e3610/60cc9/context_configuration.png 295w,/static/23294b6960cacdb9196bd3be676e3610/6d370/context_configuration.png 590w,/static/23294b6960cacdb9196bd3be676e3610/540ae/context_configuration.png 885w,/static/23294b6960cacdb9196bd3be676e3610/2561a/context_configuration.png 1180w,/static/23294b6960cacdb9196bd3be676e3610/0b3fb/context_configuration.png 2700w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Add &lt;a href=&quot;https://localhost:8243/dev-management&quot; class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;https://localhost:8243/dev-management&lt;/code&gt;&lt;/a&gt; as the &lt;code class=&quot;css-0&quot;&gt;Production Endpoint&lt;/code&gt; and click &lt;code class=&quot;css-0&quot;&gt;Next: Manage&lt;/code&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/4ca76d5806bff72cdc29f15088f0cfa2/0b3fb/production_endpoint.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:47.2972972972973%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAIAAAC9o5sfAAAACXBIWXMAAAsTAAALEwEAmpwYAAABR0lEQVQoz4WPy0vDQBDG84d6VjyKhR7qqfTiXW8i3sQitKIHb+Ijgn1QrWBLsSJt2mxik81m0yT7jKMRRYX248cMLPPNN2sQQmzkAAg5jus67psXhDMcul7gzLAX0IDGMVdS6eyfjP3Dk5X10tb2XqG8s7pZWStUigdmsfZaPn3ZvbBK9WGpNtw4GpgDH6btGbGQz7gAuBDG/eNT/ez8+rZ5aTYub+6uzIbZ6Zvd52Zv1O6Pm/1RC2pvPBzZcNjUdgAbuZMp8v3A+L5BcMY5Z4xFYZDOI61EpmWmhFYyy6AIKaX6LUNrDS1NwQVe8YUQ8J4tFAwYeYNEMMlPwY4kigNMcyKaUBp3Wm1kWTAMST/mPwmQSmk0JyH2MeB7OInTeJ4cV6u97sMSc5wyHEaCMcWZZB9kUmgh7MmEEpJ7FiTLlC3/cG5+BxmX9jUFInOyAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;WSO2 APIM: Production Endpoint&quot; title=&quot;WSO2 APIM: Production Endpoint&quot; src=&quot;/static/4ca76d5806bff72cdc29f15088f0cfa2/6d370/production_endpoint.png&quot; srcSet=&quot;/static/4ca76d5806bff72cdc29f15088f0cfa2/c5084/production_endpoint.png 148w,/static/4ca76d5806bff72cdc29f15088f0cfa2/60cc9/production_endpoint.png 295w,/static/4ca76d5806bff72cdc29f15088f0cfa2/6d370/production_endpoint.png 590w,/static/4ca76d5806bff72cdc29f15088f0cfa2/540ae/production_endpoint.png 885w,/static/4ca76d5806bff72cdc29f15088f0cfa2/2561a/production_endpoint.png 1180w,/static/4ca76d5806bff72cdc29f15088f0cfa2/0b3fb/production_endpoint.png 2700w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Select all applicable throttling tiers and click &lt;code class=&quot;css-0&quot;&gt;Save &amp;amp; Publish&lt;/code&gt; to publish the Developer Management REST API to the Store portal.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/2fb672b4f696a97f2b5e22b03f167d5f/0b3fb/throttling_configurations.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:33.78378378378378%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAIAAACHqfpvAAAACXBIWXMAAAsTAAALEwEAmpwYAAAApUlEQVQY042QWwrDIBBF3f9SmiynSWlTSD9KFCk24gsfo50q/WySg8x4wTvMlYzjOM8zpXTBU6E/2CYhBCKlFEJgXVeptNEV732MMWwCAKSUknO21qJ+shdl3NrvCJRlD9JaAsB6vj0u1/v6Fpxz9B8ypwokcD60KShx7UNm55wxJsY0TVPX9aeuH4ahjcBgGGpn7fZCa7NQhrGVUugM9c/w8s/8AbwhlAsJiJP6AAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;WSO2 APIM: Throttling Configurations&quot; title=&quot;WSO2 APIM: Throttling Configurations&quot; src=&quot;/static/2fb672b4f696a97f2b5e22b03f167d5f/6d370/throttling_configurations.png&quot; srcSet=&quot;/static/2fb672b4f696a97f2b5e22b03f167d5f/c5084/throttling_configurations.png 148w,/static/2fb672b4f696a97f2b5e22b03f167d5f/60cc9/throttling_configurations.png 295w,/static/2fb672b4f696a97f2b5e22b03f167d5f/6d370/throttling_configurations.png 590w,/static/2fb672b4f696a97f2b5e22b03f167d5f/540ae/throttling_configurations.png 885w,/static/2fb672b4f696a97f2b5e22b03f167d5f/2561a/throttling_configurations.png 1180w,/static/2fb672b4f696a97f2b5e22b03f167d5f/0b3fb/throttling_configurations.png 2700w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;h3 id=&quot;Subscribe-API&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Subscribe-API&quot; aria-label=&quot;Subscribe API permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Subscribe API&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;After publishing the REST API from the Publisher portal, navigate to the Store portal by &lt;a href=&quot;https://localhost:9444/store&quot; class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;https://localhost:9444/store&lt;/code&gt;&lt;/a&gt; and log in as &lt;code class=&quot;css-0&quot;&gt;admin&lt;/code&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Select our published API and subscribe to the &lt;code class=&quot;css-0&quot;&gt;DefaultApplication&lt;/code&gt; with &lt;code class=&quot;css-0&quot;&gt;Unlimited Tier&lt;/code&gt;.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;You can create a new application by navigating to the Application section in the Store portal and subscribe to that API with applicable Tier&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/a7758572a1c6895374a2f479ef54a9de/eb2a1/store_overview.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:29.72972972972973%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAIAAABM9SnKAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA6klEQVQY02XQTUsEIRwGcL9vBH2I+gAFfYI9FN3mEkER9AJBl+0UXWJdLXOdZnx3dMd0XaGY2N9FfPCRvwLSsWVLcUsRxnABlwiRqp8QVb8DkKsndH6NLm46TLS1gguty2q990NljKF0VY465+xEyQE+nOGDU7h/YhYk5yyFsNaN4xhjTCmVJISgJA/exf/K7QAdzeDecSlb+LUtc45bw/iQc/orz1/f528wxp+pkoP28eWzuUfN3fcHUUZvn8KFkEpXZTbOeXP7fHb5IKUsW/1LKQXWKem1Z4qvGKOUsqqb6LveOxMGs/thGx6fSi4TmdzCAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;WSO2 APIM: Store Overview&quot; title=&quot;WSO2 APIM: Store Overview&quot; src=&quot;/static/a7758572a1c6895374a2f479ef54a9de/6d370/store_overview.png&quot; srcSet=&quot;/static/a7758572a1c6895374a2f479ef54a9de/c5084/store_overview.png 148w,/static/a7758572a1c6895374a2f479ef54a9de/60cc9/store_overview.png 295w,/static/a7758572a1c6895374a2f479ef54a9de/6d370/store_overview.png 590w,/static/a7758572a1c6895374a2f479ef54a9de/540ae/store_overview.png 885w,/static/a7758572a1c6895374a2f479ef54a9de/2561a/store_overview.png 1180w,/static/a7758572a1c6895374a2f479ef54a9de/eb2a1/store_overview.png 2800w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Select &lt;code class=&quot;css-0&quot;&gt;View Subscriptions&lt;/code&gt; from the alert box and then navigate to the &lt;code class=&quot;css-0&quot;&gt;Production Keys&lt;/code&gt; tab and select &lt;code class=&quot;css-0&quot;&gt;Generate Keys&lt;/code&gt; to generate new consumer keys for our &lt;code class=&quot;css-0&quot;&gt;DefaultApplication&lt;/code&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/b1be21dbbc58cb3e8d5a363825c337d0/20759/store_default_application.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:51.35135135135135%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAIAAAA7N+mxAAAACXBIWXMAAAsTAAALEwEAmpwYAAABSUlEQVQoz32Qu07DMBSG827dGJh4AXYWxIR4AxZeggUBbQUrElJbEEVsXIRA0FYgQZrYx/EtthMnHJeLUqj49Mv5c/lzLtHm1sby2srO7sHR+eveyd3+6UN3MOmeTTqDxTrsPXf6Y1S7P46211dbraXjblsLYCQOSt/x5DAVkCwQSwXDM8Hvo+H1/eXw4mk0ioFlUkLG42mSEsoy/r8osEhLobTmQgit0DhnfVl676sGdV1X8+ATpVREKCUIpXFCtNbWOsaVNcY5l+e5CVjGpTF5URR1gxAGAAaQEnh5S3OtirIiTHlf4mtrLRbxVU25xms9z1c45BkLJZzD35dF4YIJ3s0ov81nw3/DWcYYIamU0hrs2qDBKfIGeIu7+B2mlCopbh4nvatbrdVsTsM5V2GDcyyoTAEyRGqSyTCk99i1a4D9/yy5Gf4APBQtS3qdLXcAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;WSO2 APIM: Store Default Application Productions Keys&quot; title=&quot;WSO2 APIM: Store Default Application Productions Keys&quot; src=&quot;/static/b1be21dbbc58cb3e8d5a363825c337d0/6d370/store_default_application.png&quot; srcSet=&quot;/static/b1be21dbbc58cb3e8d5a363825c337d0/c5084/store_default_application.png 148w,/static/b1be21dbbc58cb3e8d5a363825c337d0/60cc9/store_default_application.png 295w,/static/b1be21dbbc58cb3e8d5a363825c337d0/6d370/store_default_application.png 590w,/static/b1be21dbbc58cb3e8d5a363825c337d0/540ae/store_default_application.png 885w,/static/b1be21dbbc58cb3e8d5a363825c337d0/2561a/store_default_application.png 1180w,/static/b1be21dbbc58cb3e8d5a363825c337d0/20759/store_default_application.png 3360w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;After a successful generation, copy the &lt;code class=&quot;css-0&quot;&gt;Access Token&lt;/code&gt; value to invoke our defined REST APIs.&lt;/p&gt;&lt;h3 id=&quot;Run--Test-1&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Run--Test-1&quot; aria-label=&quot;Run  Test 1 permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Run &amp;amp; Test&lt;/h3&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;Before testing, make sure to verify whether the APIM instance is running and have successfully published the REST API and subscribed&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;Test the exposed REST APIs using the below cURL commands. Given below are a couple of cURL commands to test the exposed REST APIs. We can also test the REST APIs using the integrated Swagger tool in the Store portal.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;You can replace the &lt;code class=&quot;css-0&quot;&gt;consumer-key&lt;/code&gt; and &lt;code class=&quot;css-0&quot;&gt;consumer-secret&lt;/code&gt; fields with the generated values or you can replace the &lt;code class=&quot;css-0&quot;&gt;{{access-token}}&lt;/code&gt; with the copied &lt;code class=&quot;css-0&quot;&gt;Access Token&lt;/code&gt; value and execute the cURL commands&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;div id=&quot;gist98504417&quot; class=&quot;gist css-0&quot;&gt;
    &lt;div class=&quot;gist-file css-0&quot;&gt;
      &lt;div class=&quot;gist-data css-0&quot;&gt;
        &lt;div class=&quot;js-gist-file-update-container js-task-list-container file-box css-0&quot;&gt;
  &lt;div id=&quot;file-wso2-trilogy-apim-curl-http&quot; class=&quot;file my-2 css-0&quot;&gt;
    
  &lt;div itemProp=&quot;text&quot; class=&quot;Box-body p-0 blob-wrapper data type-http css-0&quot;&gt;

      
&lt;div class=&quot;js-check-bidi js-blob-code-container blob-code-content css-0&quot;&gt;

  &lt;template class=&quot;js-file-alert-template&quot;&gt;&lt;/template&gt;&lt;template class=&quot;js-line-alert-template&quot;&gt;&lt;/template&gt;

  &lt;table class=&quot;highlight tab-size js-file-line-container js-code-nav-container js-tagsearch-file css-0&quot; data-tab-size=&quot;8&quot; data-paste-markdown-skip=&quot;&quot; data-tagsearch-lang=&quot;HTTP&quot; data-tagsearch-path=&quot;wso2-trilogy-apim-curl.http&quot;&gt;
        &lt;tbody&gt;&lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-L1&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;1&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-LC1&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-ii&quot;&gt;@consumer-key = &amp;lt;Replace with Consumer Key&amp;gt;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-L2&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;2&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-LC2&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-ii&quot;&gt;@consumer-secret = &amp;lt;Replace with Consumer Secret&amp;gt;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-L3&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;3&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-LC3&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-ii&quot;&gt;@api-hostname = https://10.100.5.220:8244/dev-management/v1.0.0&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-L4&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;4&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-LC4&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-L5&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;5&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-LC5&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-ii&quot;&gt;# Username &amp;amp; Password&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-L6&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;6&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-LC6&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-ii&quot;&gt;@api-username = admin&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-L7&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;7&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-LC7&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-ii&quot;&gt;@api-password = admin&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-L8&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;8&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-LC8&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-L9&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;9&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-LC9&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-ii&quot;&gt;@username = athiththan11&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-L10&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;10&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-LC10&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-L11&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;11&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-LC11&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-ii&quot;&gt;### Token Endpoint&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-L12&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;12&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-LC12&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-ii&quot;&gt;# @name tokenEndpoint&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-L13&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;13&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-LC13&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-ii&quot;&gt;curl -k -d &amp;quot;grant_type=password&amp;amp;username={{api-username}}&amp;amp;password={{api-password}}&amp;amp;scope=default&amp;quot; \&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-L14&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;14&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-LC14&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	    &lt;span class=&quot;pl-ii&quot;&gt;-H &amp;quot;Authorization: Basic &amp;lt;Replace with Base64Encode(ClientID:ClientSecret)&amp;gt;&amp;quot; \&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-L15&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;15&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-LC15&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	      &lt;span class=&quot;pl-ii&quot;&gt;https://localhost:8244/token&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-L16&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;16&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-LC16&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-L17&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;17&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-LC17&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-ii&quot;&gt;@access-token = {{tokenEndpoint.response.body.access_token}}&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-L18&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;18&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-LC18&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-ii&quot;&gt;@authorization = Bearer {{access-token}}&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-L19&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;19&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-LC19&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-L20&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;20&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-LC20&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-ii&quot;&gt;### Get Developer&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-L21&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;21&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-LC21&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-ii&quot;&gt;# @name getDeveloperAPI&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-L22&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;22&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-LC22&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-ii&quot;&gt;curl -k -X GET {{api-hostname}}/devs/{{username}} \&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-L23&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;23&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-LC23&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &lt;span class=&quot;pl-ii&quot;&gt;-H &amp;quot;accept: application/json&amp;quot; \&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-L24&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;24&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-LC24&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &lt;span class=&quot;pl-ii&quot;&gt;-H &amp;quot;Authorization: {{authorization}}&amp;quot;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-L25&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;25&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-LC25&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-L26&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;26&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-LC26&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-ii&quot;&gt;### Get Repos of a Developer&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-L27&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;27&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-LC27&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-ii&quot;&gt;# @name getReposAPI&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-L28&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;28&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-LC28&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-ii&quot;&gt;curl -k -X GET {{api-hostname}}/devs/{{username}}/repos \&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-L29&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;29&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-LC29&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &lt;span class=&quot;pl-ii&quot;&gt;-H &amp;quot;accept: application/json&amp;quot; \&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-L30&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;30&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-LC30&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &lt;span class=&quot;pl-ii&quot;&gt;-H &amp;quot;Authorization: {{authorization}}&amp;quot;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-L31&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;31&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-LC31&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-L32&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;32&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-LC32&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-ii&quot;&gt;### Delete a Developer&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-L33&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;33&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-LC33&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-ii&quot;&gt;# @name deleteDeveloperAPI&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-L34&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;34&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-LC34&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-ii&quot;&gt;curl -k -X DELETE {{api-hostname}}/devs/{{username}} \&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-L35&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;35&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-LC35&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &lt;span class=&quot;pl-ii&quot;&gt;-H &amp;quot;accept: application/json&amp;quot; \&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-L36&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;36&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-LC36&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &lt;span class=&quot;pl-ii&quot;&gt;-H &amp;quot;Authorization: {{authorization}}&amp;quot;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-L37&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;37&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-LC37&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-L38&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;38&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-LC38&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-ii&quot;&gt;### Create a Developer&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-L39&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;39&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-LC39&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-ii&quot;&gt;# @name addDeveloperAPI&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-L40&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;40&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-LC40&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-ii&quot;&gt;curl -k -X POST {{api-hostname}}/devs \&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-L41&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;41&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-LC41&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &lt;span class=&quot;pl-ii&quot;&gt;-d &amp;#x27;{ &amp;quot;username&amp;quot;: &amp;quot;athiththan11&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;Athiththan&amp;quot;, &amp;quot;email&amp;quot;: &amp;quot;athiththan11@test.com&amp;quot; }&amp;#x27; \&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-L42&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;42&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-LC42&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &lt;span class=&quot;pl-ii&quot;&gt;-H &amp;quot;Content-Type: application/json&amp;quot; \&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-L43&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;43&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-LC43&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &lt;span class=&quot;pl-ii&quot;&gt;-H &amp;quot;accept: application/json&amp;quot; \&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-L44&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;44&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-LC44&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &lt;span class=&quot;pl-ii&quot;&gt;-H &amp;quot;Authorization: {{authorization}}&amp;quot;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-L45&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;45&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-LC45&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-L46&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;46&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-LC46&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-ii&quot;&gt;### Create a Repo&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-L47&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;47&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-LC47&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-ii&quot;&gt;# @name addRepoAPI&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-L48&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;48&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-LC48&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-ii&quot;&gt;curl -k -X POST {{api-hostname}}/repos \&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-L49&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;49&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-LC49&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &lt;span class=&quot;pl-ii&quot;&gt;-d &amp;#x27;{ &amp;quot;name&amp;quot;: &amp;quot;repodews&amp;quot;, &amp;quot;username&amp;quot;: &amp;quot;athiththan11&amp;quot;, &amp;quot;forks&amp;quot;: 0 }&amp;#x27; \&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-L50&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;50&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-LC50&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &lt;span class=&quot;pl-ii&quot;&gt;-H &amp;quot;Content-Type: application/json&amp;quot; \&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-L51&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;51&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-LC51&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &lt;span class=&quot;pl-ii&quot;&gt;-H &amp;quot;accept: application/json&amp;quot; \&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-L52&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;52&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-wso2-trilogy-apim-curl-http-LC52&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &lt;span class=&quot;pl-ii&quot;&gt;-H &amp;quot;Authorization: {{authorization}}&amp;quot;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
  &lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;


  &lt;/div&gt;

  &lt;/div&gt;&lt;/div&gt;

      &lt;/div&gt;
      &lt;div class=&quot;gist-meta css-0&quot;&gt;
        &lt;a href=&quot;https://gist.github.com/athiththan11/5d67ee4f67f298c48066556ae7a94a97/raw/5d44b758154b6b8c4ef2f842ac58ba06b8e787f2/wso2-trilogy-apim-curl.http&quot; style=&quot;css-float:right&quot; class=&quot;css-0&quot;&gt;view raw&lt;/a&gt;
        &lt;a href=&quot;https://gist.github.com/athiththan11/5d67ee4f67f298c48066556ae7a94a97#file-wso2-trilogy-apim-curl-http&quot; class=&quot;css-0&quot;&gt;
          wso2-trilogy-apim-curl.http
        &lt;/a&gt;
        hosted with ❤ by &lt;a href=&quot;https://github.com&quot; class=&quot;css-0&quot;&gt;GitHub&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;&lt;/div&gt;&lt;/p&gt;&lt;h3 id=&quot;GitHub&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#GitHub&quot; aria-label=&quot;GitHub permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;GitHub&lt;/h3&gt;&lt;div title=&quot;RepoDeWS&quot; class=&quot;css-0&quot;&gt;&lt;/div&gt;</content:encoded></item><item><title><![CDATA[Configure LDAP as a Secondary User Store]]></title><link>https://stackcheats.github.io/configure-ldap-as-a-secondary-user-store/content/</link><guid isPermaLink="false">https://stackcheats.github.io/configure-ldap-as-a-secondary-user-store/content/</guid><pubDate>Sun, 08 Sep 2019 00:00:00 GMT</pubDate><content:encoded>&lt;style data-emotion-css=&quot;sa2dbt&quot;&gt;body{color:text;background-color:var(--theme-ui-colors-background,#fff);}&lt;/style&gt;&lt;style data-emotion-css=&quot;0&quot;&gt;&lt;/style&gt;&lt;h2 id=&quot;Intro&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Intro&quot; aria-label=&quot;Intro permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Intro&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;This post illustrates how to add an LDAP user-store as a secondary user-store in WSO2 API Manager (in almost every WSO2 Product).&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;For demo purposes, we will be using a pre-configured LDAP user-store which resides in &lt;strong class=&quot;css-0&quot;&gt;WSO2 Identity Server&lt;/strong&gt; and shipped by default&lt;/p&gt;&lt;/blockquote&gt;&lt;h2 id=&quot;Configure&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Configure&quot; aria-label=&quot;Configure permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Configure&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;Download both &lt;a href=&quot;https://wso2.com/api-management/&quot; class=&quot;css-0&quot;&gt;WSO2 API Manager (2.6.0)&lt;/a&gt; and &lt;a href=&quot;https://wso2.com/identity-and-access-management/&quot; class=&quot;css-0&quot;&gt;WSO2 Identity Server (5.7.0)&lt;/a&gt; as binary artifacts from the official download page and follow the given steps to configure port offset on them.&lt;/p&gt;&lt;h3 id=&quot;WSO2-Identity-Server&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#WSO2-Identity-Server&quot; aria-label=&quot;WSO2 Identity Server permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;WSO2 Identity Server&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Extract the binary artifact of WSO2 Identity Server and navigate to &lt;code class=&quot;css-0&quot;&gt;[IS]/bin&lt;/code&gt; folder and execute the following command based on your environment to start the server …&lt;/p&gt;&lt;pre class=&quot;prism-code language-bash&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;# linux env&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;./wso2server.sh&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;# windows env&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;./wso2server.bat&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;h3 id=&quot;WSO2-API-Manager&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#WSO2-API-Manager&quot; aria-label=&quot;WSO2 API Manager permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;WSO2 API Manager&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Extract the binary artifact of WSO2 API Manager and navigate to [APIM]/repository/conf/carbon.xml to edit the port offset configurations of API Manager.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;We will be using the default shipped LDAP user-store of WSO2 Identity Server as the secondary user-store in API Manager. Therefore, we will be running both the server nodes in a single machine. For this reason, we will be port off-setting the API Manager node&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;Open and edit the &lt;code class=&quot;css-0&quot;&gt;&amp;lt;Offset&amp;gt;&lt;/code&gt; element with the following …&lt;/p&gt;&lt;pre class=&quot;prism-code language-xml&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;Offset&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;Offset&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;Start the server by executing the following command based on your environment&lt;/p&gt;&lt;pre class=&quot;prism-code language-bash&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;# linux env&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;./wso2server.sh&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;# windows env&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;./wso2server.bat&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;And login to the management console by directing to &lt;a href=&quot;https://localhost:9444/carbon&quot; class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;https://localhost:9444/carbon&lt;/code&gt;&lt;/a&gt; and enter &lt;code class=&quot;css-0&quot;&gt;admin&lt;/code&gt; as both the username and password. Next select &lt;code class=&quot;css-0&quot;&gt;Add&lt;/code&gt; under &lt;code class=&quot;css-0&quot;&gt;User Stores&lt;/code&gt; section in &lt;code class=&quot;css-0&quot;&gt;Main&lt;/code&gt; tab.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/7273440cac348f0e21705d2dc95241ae/47fb9/add-user-store-api-manager.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:47.972972972972975%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAIAAAA7N+mxAAAACXBIWXMAAAsTAAALEwEAmpwYAAABvklEQVQoz12QSW/bMBCF9f9PRQ699A8UaJpeip6CooAPTe3USh150RLJtkRKXEXSXLQlLutDEWTwzcPDPGAGmEA0T+Xm5+/lx7u7D7PZVZr+UWKkgLU1F1wRiiGqCJMUG86dUMNrgvns9vbr9Zeb9zefr64/vfvx/Vu0ylbz8PE+3D4sVuGv+3ARho/hfP2w3KyieBUl/wmirIKItq1mXFOmCeYAggqAGuGmqRuEfHsPa28wgI1PAKy9QlgH5b6mWDgzatWZk2egREhx4pC3SHDIBBYexbXAsnfj9HIepvM4nfvhHKRpHm+zJDludzlGklFNiPD30+1TkR2f4iJep0mUZHEeR0lRgAoSWLMK0la6QHQ0J5XtzsM49cNzN7wYN0ilMRXU/4lLhDnlCpOWUNEghhAjpMWYa9MHbYv2oPKZsb11k7Wj1M52A2XsWB6ttdoY7euixpefXJxUKgC75S5cgPVOHg6nslTHiue5TxgTqMHO9f/we1/hLhjjAi3KYr9xQo9Kdq3oWnkixBpLCE92+WEPRKulMErYN/h5gDDJCsCF0W462UnbZ6k743oplH9OUyNP5/qhH97Que4vwGkiTvFt0uUAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Add User Store in WSO2 API Manager (2.6.0)&quot; title=&quot;Add User Store in WSO2 API Manager (2.6.0)&quot; src=&quot;/static/7273440cac348f0e21705d2dc95241ae/6d370/add-user-store-api-manager.png&quot; srcSet=&quot;/static/7273440cac348f0e21705d2dc95241ae/c5084/add-user-store-api-manager.png 148w,/static/7273440cac348f0e21705d2dc95241ae/60cc9/add-user-store-api-manager.png 295w,/static/7273440cac348f0e21705d2dc95241ae/6d370/add-user-store-api-manager.png 590w,/static/7273440cac348f0e21705d2dc95241ae/540ae/add-user-store-api-manager.png 885w,/static/7273440cac348f0e21705d2dc95241ae/2561a/add-user-store-api-manager.png 1180w,/static/7273440cac348f0e21705d2dc95241ae/47fb9/add-user-store-api-manager.png 1246w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Enter the inputs as follows …&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;User Store Manager Class: select &lt;code class=&quot;css-0&quot;&gt;ReadWriteLDAPUserStoreManager&lt;/code&gt; or &lt;code class=&quot;css-0&quot;&gt;ReadOnlyLDAPUserStoreManager&lt;/code&gt; based on your preference&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Domain Name: give a related domain name to identify the users from this user-store. We will be using &lt;code class=&quot;css-0&quot;&gt;IS&lt;/code&gt; as the domain name&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Connection URL: &lt;code class=&quot;css-0&quot;&gt;ldap://localhost:10389&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Connection Name: &lt;code class=&quot;css-0&quot;&gt;uid=admin,ou=system&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Connection Password: &lt;code class=&quot;css-0&quot;&gt;admin&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;User Search Based: &lt;code class=&quot;css-0&quot;&gt;ou=Users,dc=wso2,dc=org&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;User Entry Object Class: &lt;code class=&quot;css-0&quot;&gt;identityPerson&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Username Attribute: &lt;code class=&quot;css-0&quot;&gt;uid&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;User Search Filter: &lt;code class=&quot;css-0&quot;&gt;(&amp;amp;(objectClass=person)(uid=?))&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;User List Filter: &lt;code class=&quot;css-0&quot;&gt;(objectClass=person)&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;Please enter relavant configuration values and properties if your LDAP configurations are different from the above-mentioned&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/a8a7ace193dd356e9df5c987d08d45f3/76d9a/user-store-configurations.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:44.5945945945946%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAIAAAC9o5sfAAAACXBIWXMAAAsTAAALEwEAmpwYAAABEklEQVQoz3WQ6Y6EIBCEef93nM16A4LKIZegW2IymR+zlS8BG7v6IFPP+2ac+Wb3tLvjE0SMjV/RJs6LI5zztmmVUtbauYoxTikD67ru/8vtnmitQwjXdeV8SCmQoNSmqhC5/lcpJ1mWRQiBsjDzHj7BP0cIzjtfP903oTaREumywOc8ZyFASsdDjBEBtIZfU0o551R1VKUjE8zWte1ZCjoZRtp0o7beumgd9uea35/X6zVNE8bZtg1G70bgcVceh6HkjORZSCHX3YWYckwlxkCnfoD6nlKqtUofOnImjGO9zFirtcFlHKe6M32zqZlzBtjNzDGCUfCo4E6atmu7DvvSyhhjbxdj8PDwRG7MzTv+8Adu2AC9ORBE3QAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;User Store Configurations&quot; title=&quot;User Store Configurations&quot; src=&quot;/static/a8a7ace193dd356e9df5c987d08d45f3/6d370/user-store-configurations.png&quot; srcSet=&quot;/static/a8a7ace193dd356e9df5c987d08d45f3/c5084/user-store-configurations.png 148w,/static/a8a7ace193dd356e9df5c987d08d45f3/60cc9/user-store-configurations.png 295w,/static/a8a7ace193dd356e9df5c987d08d45f3/6d370/user-store-configurations.png 590w,/static/a8a7ace193dd356e9df5c987d08d45f3/540ae/user-store-configurations.png 885w,/static/a8a7ace193dd356e9df5c987d08d45f3/2561a/user-store-configurations.png 1180w,/static/a8a7ace193dd356e9df5c987d08d45f3/76d9a/user-store-configurations.png 2840w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Click on &lt;code class=&quot;css-0&quot;&gt;Add&lt;/code&gt; to save and add the user-store in WSO2 API Manager. The following alert box will appear if the user-store is added correctly.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/7203239a97e5d03412dabc95de4a2818/53e1c/successful-alert-box.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:50.67567567567568%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAIAAAA7N+mxAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAvUlEQVQoz62Q3QrCMAyF+/7vpYPt0jbpTyYT3OaU4cB2oDBnFB1ScOzCw0co4ZykRCjQUqECRG1ycgjKOlookWbZap2skyRNM9Qa4DmGH0sQiO6D1ZqMIa6I9NV/w/0IAeAijCZy2zzfTRAVDLsjZxxGcLaoivLUHOpJbdt2XVfXjZR2Lsz3qo7ncL3fbtdJwzCM48gTNhvD//8ZVsru91UIwfve+/Civ1x8CH1ZHqQ0s5s5/wIWIGCZ7//hB4YgAf3D5MV6AAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Successful Alert Box&quot; title=&quot;Successful Alert Box&quot; src=&quot;/static/7203239a97e5d03412dabc95de4a2818/6d370/successful-alert-box.png&quot; srcSet=&quot;/static/7203239a97e5d03412dabc95de4a2818/c5084/successful-alert-box.png 148w,/static/7203239a97e5d03412dabc95de4a2818/60cc9/successful-alert-box.png 295w,/static/7203239a97e5d03412dabc95de4a2818/6d370/successful-alert-box.png 590w,/static/7203239a97e5d03412dabc95de4a2818/540ae/successful-alert-box.png 885w,/static/7203239a97e5d03412dabc95de4a2818/2561a/successful-alert-box.png 1180w,/static/7203239a97e5d03412dabc95de4a2818/53e1c/successful-alert-box.png 2200w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;h2 id=&quot;Run--Test&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Run--Test&quot; aria-label=&quot;Run  Test permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Run &amp;amp; Test&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;Direct to &lt;a href=&quot;https://localhost:9444/carbon&quot; class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;https://localhost:9444/carbon&lt;/code&gt;&lt;/a&gt; and select &lt;code class=&quot;css-0&quot;&gt;List&lt;/code&gt; under &lt;code class=&quot;css-0&quot;&gt;Users and Roles&lt;/code&gt; section and select &lt;code class=&quot;css-0&quot;&gt;Users&lt;/code&gt; from the prompted page to list all available users from all defined user-stores.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;You will see a similar page as follows …&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/5fd493fcf2a71e080a7fa9c81df45612/ac7a9/user-list-in-api-manager.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:35.810810810810814%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAIAAACHqfpvAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA0ElEQVQY02WP227EIAxE+f9P3L6moUsWm4Ax5rLZupESRc3RgJDHhsG4J3qfWEbmfhWXweW97/+tUwZ8mCYbVspcE5VTWgGMKj1Qlqt1yiTieZ4RkTMzl36gFWutWo+vBwCMMfoNw0UQARBFpLX2OSCiWmtvzTm3LG7bts8Nk1IOIWhf26kH3nvKWf7qXVfRuw9LdikmhOgBdEwuqAnonxBfgTSzjzx925/XGnGJKy4Q/JpLEaNh9a/3SBqCSsvS9U2u70iUWF/Qkcqlch3a8wvJD5OTjIjUvQAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Users List in WSO2 API Manager&quot; title=&quot;Users List in WSO2 API Manager&quot; src=&quot;/static/5fd493fcf2a71e080a7fa9c81df45612/6d370/user-list-in-api-manager.png&quot; srcSet=&quot;/static/5fd493fcf2a71e080a7fa9c81df45612/c5084/user-list-in-api-manager.png 148w,/static/5fd493fcf2a71e080a7fa9c81df45612/60cc9/user-list-in-api-manager.png 295w,/static/5fd493fcf2a71e080a7fa9c81df45612/6d370/user-list-in-api-manager.png 590w,/static/5fd493fcf2a71e080a7fa9c81df45612/540ae/user-list-in-api-manager.png 885w,/static/5fd493fcf2a71e080a7fa9c81df45612/2561a/user-list-in-api-manager.png 1180w,/static/5fd493fcf2a71e080a7fa9c81df45612/ac7a9/user-list-in-api-manager.png 1920w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Select &lt;code class=&quot;css-0&quot;&gt;View Roles&lt;/code&gt; of &lt;code class=&quot;css-0&quot;&gt;IS/admin&lt;/code&gt; user and click on &lt;code class=&quot;css-0&quot;&gt;Permissions&lt;/code&gt; of &lt;code class=&quot;css-0&quot;&gt;IS/admin&lt;/code&gt; role in the next page. Thereafter, select theLogin permission in the listed permission tree.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/13bf8bcccc30f9bd2750c8547ab65036/ac7a9/permission-tree.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:65.54054054054055%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAIAAAAmMtkJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAzklEQVQoz5WSy47DIAxF+f/fG3W2s2iTNsaAeYTQgEndqtIsW67M8uiYKyt9c5e/CWZ0QGSiAfJuzRuvuX0cZW24zqjBTpMGsA4dUQgph/h5lFjAOLAx5tK4cZfH7buovTYfws14Stu9CtyPr6MaH6U85ehXwZmH4NZr3cHSYqPwIh8y91LKIj2lrY6Qb3Or1Yd4RX/R5GIegF8dsY9p0gTuWdoAzHyklMBQG6nqf21EBBeO8QjM5KP26y7H0cfkCtH+nH7P8yK/ve9jbT8Avif7pdBhTpoAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Permission Tree of IS/admin Role&quot; title=&quot;Permission Tree of IS/admin Role&quot; src=&quot;/static/13bf8bcccc30f9bd2750c8547ab65036/6d370/permission-tree.png&quot; srcSet=&quot;/static/13bf8bcccc30f9bd2750c8547ab65036/c5084/permission-tree.png 148w,/static/13bf8bcccc30f9bd2750c8547ab65036/60cc9/permission-tree.png 295w,/static/13bf8bcccc30f9bd2750c8547ab65036/6d370/permission-tree.png 590w,/static/13bf8bcccc30f9bd2750c8547ab65036/540ae/permission-tree.png 885w,/static/13bf8bcccc30f9bd2750c8547ab65036/2561a/permission-tree.png 1180w,/static/13bf8bcccc30f9bd2750c8547ab65036/ac7a9/permission-tree.png 1920w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;And select Update to update the permission tree. Now, logout from the carbon console and again Sign-in using the following credentials …&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Username: &lt;code class=&quot;css-0&quot;&gt;IS/admin&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Password: &lt;code class=&quot;css-0&quot;&gt;admin&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;The above-mentioned credentials are related to the admin user of the secondary user-store&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;After a successful login, the management console will be displayed with allowed features set and panels (allowed permissions).&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Replace H2 with Postgres]]></title><link>https://stackcheats.github.io/replace-h2-with-postgres/content/</link><guid isPermaLink="false">https://stackcheats.github.io/replace-h2-with-postgres/content/</guid><pubDate>Sat, 03 Aug 2019 00:00:00 GMT</pubDate><content:encoded>&lt;style data-emotion-css=&quot;sa2dbt&quot;&gt;body{color:text;background-color:var(--theme-ui-colors-background,#fff);}&lt;/style&gt;&lt;style data-emotion-css=&quot;0&quot;&gt;&lt;/style&gt;&lt;h2 id=&quot;Docker-Postgres&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Docker-Postgres&quot; aria-label=&quot;Docker Postgres permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Docker: Postgres&lt;/h2&gt;&lt;h3 id=&quot;Pull&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Pull&quot; aria-label=&quot;Pull permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Pull&lt;/h3&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;Prerequisites: Docker installed in your environment. You can follow the &lt;a href=&quot;https://www.docker.com/get-started&quot; class=&quot;css-0&quot;&gt;Docker&lt;/a&gt; docs to get it done.&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;Follow the given steps to set up Postgres using Docker in your dev environments. For this demo, we will be using &lt;strong class=&quot;css-0&quot;&gt;Postgres - 9.6.14&lt;/strong&gt; and &lt;strong class=&quot;css-0&quot;&gt;WSO2 Identity Server 5.7&lt;/strong&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Start the Docker service and execute the following command to pull the Postgres (9.6.14) image from &lt;a href=&quot;https://hub.docker.com/_/postgres&quot; class=&quot;css-0&quot;&gt;DockerHub&lt;/a&gt;&lt;/p&gt;&lt;pre class=&quot;prism-code language-bash&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;docker pull postgres:9.6.14&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;h3 id=&quot;Run&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Run&quot; aria-label=&quot;Run permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Run&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;After a successful pull, execute the below command to create and run a docker container for our pulled Postgres image. Replace the &lt;code class=&quot;css-0&quot;&gt;&amp;lt;CONTAINER_NAME&amp;gt;&lt;/code&gt; tag with your preferred name or use &lt;code class=&quot;css-0&quot;&gt;postgres-9.6.14&lt;/code&gt; as the default value.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;You can change the Postgres password by changing the &lt;code class=&quot;css-0&quot;&gt;POSTGRES_PASSWORD&lt;/code&gt; value from &lt;code class=&quot;css-0&quot;&gt;hydrogen&lt;/code&gt; to any preferred secured password&lt;/p&gt;&lt;/blockquote&gt;&lt;pre class=&quot;prism-code language-bash&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;docker run --name &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;CONTAINER_NAME &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;||&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; postgres-9.6.14&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; -e POSTGRES_PASSWORD&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;hydrogen -p 5432:5432 -d -v &lt;/span&gt;&lt;span class=&quot;token variable&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;$HOME&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;/docker/volumes/postgres:/var/lib/postgresql postgres:9.6.14&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;Basic commands to &lt;code class=&quot;css-0&quot;&gt;start&lt;/code&gt; and &lt;code class=&quot;css-0&quot;&gt;stop&lt;/code&gt; a Docker container&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;docker start &amp;lt;CONTAINER_NAME&amp;gt;&lt;/code&gt; to start a container&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;docker stop &amp;lt;CONTAINER_NAME&amp;gt;&lt;/code&gt; to stop a running container&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;&lt;h3 id=&quot;PSQL-Terminal&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#PSQL-Terminal&quot; aria-label=&quot;PSQL Terminal permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;PSQL Terminal&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Use the following command to hop into the PSQL terminal session.&lt;/p&gt;&lt;pre class=&quot;prism-code language-bash&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;docker &lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;exec&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; -ti &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;CONTAINER_NAME &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;||&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; postgres-9.6.14&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; psql -h localhost -U postgres&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;h2 id=&quot;Configurations&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Configurations&quot; aria-label=&quot;Configurations permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Configurations&lt;/h2&gt;&lt;h3 id=&quot;Postgres&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Postgres&quot; aria-label=&quot;Postgres permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Postgres&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;To replace the default packaged H2 database with Postgres, initially, we have to create the databases and tables in Postgres. Find and execute the following PostgreSQL scripts to create and set up all necessary tables and indexes.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;You can use either any database tools like DBeaver (Jump to &lt;a href=&quot;#dbeaver&quot; class=&quot;css-0&quot;&gt;DBeaver&lt;/a&gt;) or you can straightaway execute them using PSQL terminal (Jump to &lt;a href=&quot;#psql&quot; class=&quot;css-0&quot;&gt;PSQL&lt;/a&gt;)&lt;/p&gt;&lt;/blockquote&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;&amp;lt;IS&amp;gt;/dbscripts/postgresql.sql&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;&amp;lt;IS&amp;gt;/dbscripts/identity/postgresql.sql&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;&amp;lt;IS&amp;gt;/dbscripts/identity/uma/postgresql.sql&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;&amp;lt;IS&amp;gt;/dbscripts/identity/stored-procedures/postgre/postgresql.sql&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;&amp;lt;IS&amp;gt;/dbscripts/consent/postgresql.sql&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;Start the Postgres container (if not started before) using the following command&lt;/p&gt;&lt;pre class=&quot;prism-code language-bash&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;docker start postgres-9.6.14&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;h4 id=&quot;PSQL&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#PSQL&quot; aria-label=&quot;PSQL permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;PSQL&lt;/h4&gt;&lt;p class=&quot;css-0&quot;&gt;Execute the following command to enter the PSQL terminal session and run the create query to create a database named &lt;code class=&quot;css-0&quot;&gt;wso2postgres&lt;/code&gt;&lt;/p&gt;&lt;pre class=&quot;prism-code language-bash&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;docker &lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;exec&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; -ti postgres-9.6.14 psql -h localhost -U postgres&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;pre class=&quot;prism-code language-sql&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;create&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token keyword&quot; style=&quot;color:rgb(86, 156, 214)&quot;&gt;database&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; wso2postgres&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;After successful creation, try to connect to the &lt;code class=&quot;css-0&quot;&gt;wso2postgres&lt;/code&gt; database using the following command&lt;/p&gt;&lt;pre class=&quot;prism-code language-psql&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;\c wso2postgres;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;Next, quite the terminal session using &lt;code class=&quot;css-0&quot;&gt;\q&lt;/code&gt; command and copy the &lt;code class=&quot;css-0&quot;&gt;dbscripts&lt;/code&gt; folder from the &lt;code class=&quot;css-0&quot;&gt;&amp;lt;IS_HOME&amp;gt;&lt;/code&gt; path to our &lt;code class=&quot;css-0&quot;&gt;postgres-9.6.14&lt;/code&gt; container volume to execute all related scripts using the Docker PSQL terminal.&lt;/p&gt;&lt;pre class=&quot;prism-code language-bash&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;docker &lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;cp&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;IS_HOME&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;/dbscripts postgres-9.6.14:/&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;and run the following commands one by one to execute the scripts&lt;/p&gt;&lt;pre class=&quot;prism-code language-bash&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;docker &lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;exec&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; -ti postgres-9.6.14 psql -h localhost -U postgres -d wso2postgres -f /dbscripts/postgresql.sql&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;-----&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;docker &lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;exec&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; -ti postgres-9.6.14 psql -h localhost -U postgres -d wso2postgres -f /dbscripts/identity/postgresql.sql&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;-----&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;docker &lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;exec&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; -ti postgres-9.6.14 psql -h localhost -U postgres -d wso2postgres -f /dbscripts/identity/uma/postgresql.sql&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;-----&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;docker &lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;exec&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; -ti postgres-9.6.14 psql -h localhost -U postgres -d wso2postgres -f /dbscripts/identity/stored-procedures/postgre/postgresql.sql&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;-----&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;docker &lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;exec&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; -ti postgres-9.6.14 psql -h localhost -U postgres -d wso2postgres -f /dbscripts/consent/postgresql.sql&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;After a successful connection, execute the above-mentioned SQL scripts to create related tables and indexes. But, before executing them, we have to copy the &lt;code class=&quot;css-0&quot;&gt;dbscripts&lt;/code&gt; folder to the related container volume to execute the script using PSQL terminal. Execute the following command to copy the &lt;code class=&quot;css-0&quot;&gt;dbscripts&lt;/code&gt; folder from the &lt;code class=&quot;css-0&quot;&gt;&amp;lt;IS_HOME&amp;gt;&lt;/code&gt; path to our &lt;code class=&quot;css-0&quot;&gt;postgres-9.6.14&lt;/code&gt; container volume.&lt;/p&gt;&lt;h4 id=&quot;DBeaver&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#DBeaver&quot; aria-label=&quot;DBeaver permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;DBeaver&lt;/h4&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;Prerequisites: DBeaver installed in your environment. You can follow the &lt;a href=&quot;https://dbeaver.io&quot; class=&quot;css-0&quot;&gt;DBeaver&lt;/a&gt; site.&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;Open DBeaver and create a new database connection. Select &lt;code class=&quot;css-0&quot;&gt;PostgreSQL&lt;/code&gt; from the list and click &lt;code class=&quot;css-0&quot;&gt;Next&lt;/code&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/73b1ea6935a3636ffae7824e88ee80db/51584/select-database.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:108.78378378378379%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAWCAYAAADAQbwGAAAACXBIWXMAABYlAAAWJQFJUiTwAAADV0lEQVQ4y61UyW4TQRScb+MLOHNAiC/gwoEzBxBHxHZAHFgFBziAhIIEhAgIUTAxeIsTj+0hsT37TI89i2cr3uvBTthBoq1Sd4+7q9+ret2K9ukjNnsfoPZVqKoKTdMkhsMh+v0+Go0Gms2m7Bn8/TAGgwo9dUAcGpQBkeyqu5Jse3sbvu8jSRLkeY4syzBPU6SE+Xwuwd8XyAjzNEMUpwjCDBMzgOI4LsajMQzDkNB1HZ7noSxLFEUhkecZ9bkcS3ICEx78n6OkXxJHUHzfQxiGCIIAQgjZz2guqA+mU4RRjLygxUlK6yIsWhRFcj4nkonlQtMdmBSQ0mi1sbe3B8uyYJomHMdBFhMJkZZ08rt+hLO3X+HmqgpdFLh39xYuX70q06c0EMcJRZ3JjKYUgLLVUVGr1SRhTKdGpB+iEPQBFBZWexlOnLuH8w9q0ESJkzdO4ciFY4jSmKJPMdi3pI6LqBV2bmtrSxIyWL+YTp8YOoqywPPtGNdW+rj+cgTNL9AYf0TdaKEgzVii4VCTUXJj6ZRWq4X19XV0u13Ytg3XdVGS0FnOgpdwSbaJSwc4CWIKxJyWqO9MULApZbE0Z0nYbrexubmJer0uCX2KMCQDYqEjTysTgskIuaCDaHz0Tgdnbj2rUqTILG/KUn4b4YKQydkU1w9gjPoosoRcn6K7swuTDuP2qPYZ+6Ynx5yyQxnFZOKSkDVkwo2NDQkmDGcBfJFQYZdIMypaLpGk0onCluKzq1W5Tb/VsNfryRvS6XQILdhOiDB4i0H7OOkj5ML5xUsouztyXOy+R/7iaUUwI0KjizzzDwjZWTaCI2MNPbp6cTzDypPTGO035cLZpSuYf2rIcdp5jWRtpUrZF3DtCdVkeEDI142JFmXD5JbF8xkVKt8YgTEZpdOBAWk21ul6snl0MO8zDN7j/Ui4IJVlI20rltdsaeMf2i8Jua6Y9F/wR8IqsP9EWP5lit83eZcPm2KzMdJpQaJ/fc4I4i/ALw3zSMKFw4zAMzHzDYQE1zZh0JO2eNp+B14zHo8rQq5B3ui5Nt60PDx+H+DhhkBr4NLdtjGiF52l4AgOE/Cc9/KYe37tFf6TF5umRZsdrDU9Igtw/61AkwgFEe6PRsviP5zNzwi/AJaZehF3wqYfAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Select Database&quot; title=&quot;Select Database&quot; src=&quot;/static/73b1ea6935a3636ffae7824e88ee80db/6d370/select-database.png&quot; srcSet=&quot;/static/73b1ea6935a3636ffae7824e88ee80db/c5084/select-database.png 148w,/static/73b1ea6935a3636ffae7824e88ee80db/60cc9/select-database.png 295w,/static/73b1ea6935a3636ffae7824e88ee80db/6d370/select-database.png 590w,/static/73b1ea6935a3636ffae7824e88ee80db/540ae/select-database.png 885w,/static/73b1ea6935a3636ffae7824e88ee80db/2561a/select-database.png 1180w,/static/73b1ea6935a3636ffae7824e88ee80db/51584/select-database.png 1292w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Enter &lt;code class=&quot;css-0&quot;&gt;wso2postgres&lt;/code&gt; for the &lt;code class=&quot;css-0&quot;&gt;Database&lt;/code&gt; field and use &lt;code class=&quot;css-0&quot;&gt;hydrogen&lt;/code&gt; as &lt;code class=&quot;css-0&quot;&gt;Password&lt;/code&gt;.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;Please change and use related values for the &lt;code class=&quot;css-0&quot;&gt;Host&lt;/code&gt;, &lt;code class=&quot;css-0&quot;&gt;Port&lt;/code&gt;, &lt;code class=&quot;css-0&quot;&gt;Database&lt;/code&gt;, &lt;code class=&quot;css-0&quot;&gt;User&lt;/code&gt; and &lt;code class=&quot;css-0&quot;&gt;Password&lt;/code&gt; fields if those are different from mentioned default values.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;If you have not installed any PostgreSQL driver for DBeaver, it will prompt you to follow a couple of instructions to install necessary drivers to work with Postgres databases and connections&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/5eaa50cea597e8b2140287888eca5101/51584/postgres-connection-configurations.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:108.78378378378379%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAWCAYAAADAQbwGAAAACXBIWXMAABYlAAAWJQFJUiTwAAADH0lEQVQ4y4VUWW4TQRCdAyDEBwfhBvzyxR24CGdg/UTiHyQQCEEiEaEoCRJgEsfbjGfGy8SzeMaezbFDSMKjXtsdOcaApeeq6a5+tXWX4R1W8cWuwHEduK6Lfr8Pz/OUdDsd1Go11Ot1HIqk3u314PV7qFkONr43sLnA+0od2zULhicGpmUqMtt2UJQlZrMZTk5OcHZ+jtPTnwucKvz4eQb+7u84uP7gI24++YQbj7Zw7eEWbj3bhjEej+H7PobDIZI4RiwyDEMUeSrHfgnOF3L+O7+4UPJ5a4jbrxq487aFu+9MkSbufWjCiKII4/EISZIgihOEUaKID50Rnm5O8HjjGHXbR0fSN9sOvCMffjhUjqMFQuGgHEhgButlty3UWy72mx6cfgw/nqATlKj3jlETdPwcPT9Fd5DCC3P0I3FidtGRurPWzHBwdKRqb7huB5XKN7TMNppWFw3ThR+lyMoZ8vJYajpFWsyWMEWSyVqWoShy5EUhskQ5mShioydNOTg4kCjbcOy21DLCbDrFdHp8idkCWj/7MZVMhtJMW87Y0sw5yGWwu7wObSFk+JnyXCDP87VIsxyDKMOBFaBaa6LZaKCxAOusamhZFlqtFtggErLz65CmY2lciq19qfPAQxhIg4IAgchA5JHUUaVcqVSUB4bNSOnpX+j3KLt/rkuGBv+Y8t7ensLu7i6q1SpM01SRr4NpCq58z21VDUlIdsdxLsEoKf8X6doImfcyBoOBwur6/8Az6h4uk+jFv2GVZHV9cbFd1ZBms6nwNzI6Y0qsE2W321XQ04k3hDaqy/bS5dQE2nBV13a6zpo4lvevCGmkveqU+YQCdb+uglNIl0Y3k2cJnlH3kClzgLL11Nl+Th6+Cl7ydeAeIyIho2OkPKveMjf4Ckaj0SW4xvmopdZXv5WtOI9jjr+xZBHCUINVFrlJqXX9TUmHy/ocdJygzBJMixgnpZwdLgiZBuuijbV3HTnrl6ap0pnWHAHKfIydRoo3Xwu8/lJi34rmKZOQRvMBkKpolocC97hOneSKMJgTbtczvPxc4MXniRAO8Ru34EGqoaWahQAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Postgres Connection Configurations&quot; title=&quot;Postgres Connection Configurations&quot; src=&quot;/static/5eaa50cea597e8b2140287888eca5101/6d370/postgres-connection-configurations.png&quot; srcSet=&quot;/static/5eaa50cea597e8b2140287888eca5101/c5084/postgres-connection-configurations.png 148w,/static/5eaa50cea597e8b2140287888eca5101/60cc9/postgres-connection-configurations.png 295w,/static/5eaa50cea597e8b2140287888eca5101/6d370/postgres-connection-configurations.png 590w,/static/5eaa50cea597e8b2140287888eca5101/540ae/postgres-connection-configurations.png 885w,/static/5eaa50cea597e8b2140287888eca5101/2561a/postgres-connection-configurations.png 1180w,/static/5eaa50cea597e8b2140287888eca5101/51584/postgres-connection-configurations.png 1292w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Click on &lt;code class=&quot;css-0&quot;&gt;Test Connection&lt;/code&gt; to test the database connection and if successful then click on &lt;code class=&quot;css-0&quot;&gt;Finish&lt;/code&gt; to finish the connection configuration process. The created connection will be listed under the &lt;code class=&quot;css-0&quot;&gt;Database Navigator&lt;/code&gt; panel (on the left-side navigation panel). Navigate to &lt;code class=&quot;css-0&quot;&gt;File&lt;/code&gt; -&amp;gt; &lt;code class=&quot;css-0&quot;&gt;Open File ...&lt;/code&gt; and select and open the above-listed PostgreSQL scripts in the DBeaver.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Select the database connection and the Postgres schema if not selected by default and click &lt;code class=&quot;css-0&quot;&gt;Execute SQL Script&lt;/code&gt; to execute the script. Do this for all above-mentioned &lt;a href=&quot;#postgres&quot; class=&quot;css-0&quot;&gt;PostgreSQL scripts&lt;/a&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/767c077aa62351e23da977cb81d0685e/f97d7/execute-postgres-scripts.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:47.972972972972975%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAABYlAAAWJQFJUiTwAAABV0lEQVQoz52Q/0+CQBjG+f//nH7ot2pza/klBR1ZmqgQQgIKSHoCwqdDq61V1Lrtc++z273P+9wpxmyGuXB57N5iaR0sVdLvMdNU7H5Xcos5nWDaC1zX5XnpSZY/oiymJs7cwjGfsG0H21kQJwnJiyDebKXeScSRSOpoU4+y8wOC+Yxuu01bcn09xhgHFEXJf5ZSbQfJUFUZD++l4QSteYfYCirLoiwoy/LPKN5gwFLXWY9HuPMpSbImzcSXydXlasKx1Bn60syUT1WbN2jaAyPdJPFX+F7CRiTE+4jtfnsy5dT065N3acpNu8nlVY/zsxGDho4/McjyjOyQkR/yTyk+Ev9kuBeCu06HYb9Pq/WI3hriWA5puv+2qS6lIoKAF0noeaxljeOYTRxK7bNarYii6HhWEYYheZbVJ7QaDYzLC4zqHyVTwyBanxrzPCd7q++6LIpaw1f9pfwUj2jTMgAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Execute Postgres Script&quot; title=&quot;Execute Postgres Script&quot; src=&quot;/static/767c077aa62351e23da977cb81d0685e/6d370/execute-postgres-scripts.png&quot; srcSet=&quot;/static/767c077aa62351e23da977cb81d0685e/c5084/execute-postgres-scripts.png 148w,/static/767c077aa62351e23da977cb81d0685e/60cc9/execute-postgres-scripts.png 295w,/static/767c077aa62351e23da977cb81d0685e/6d370/execute-postgres-scripts.png 590w,/static/767c077aa62351e23da977cb81d0685e/540ae/execute-postgres-scripts.png 885w,/static/767c077aa62351e23da977cb81d0685e/2561a/execute-postgres-scripts.png 1180w,/static/767c077aa62351e23da977cb81d0685e/f97d7/execute-postgres-scripts.png 2000w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;h3 id=&quot;WSO2-Identity-Server&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#WSO2-Identity-Server&quot; aria-label=&quot;WSO2 Identity Server permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;WSO2 Identity Server&lt;/h3&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;Below described steps and guides are based on fresh-pack installation. If you have any pre-stored data inside the H2 database, then you have to migrate them to the new data-source which is not covered in this topic.&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;After setting up the databases, now we have to install the Postgres JDBC connector (driver) for our WSO2 Identity Server. Download the Postgres driver from &lt;a href=&quot;https://jdbc.postgresql.org/download.html&quot; class=&quot;css-0&quot;&gt;here&lt;/a&gt;, copy and place the &lt;code class=&quot;css-0&quot;&gt;jar&lt;/code&gt; file inside the &lt;code class=&quot;css-0&quot;&gt;&amp;lt;IS&amp;gt;/repository/components/lib&lt;/code&gt; directory.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Next, we have to configure our database connection settings in the Identity Server to connect to our Postgres source. Make changes to the following XML files to swap the connection from default H2 database to our Postgres database.&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;a href=&quot;#master-datasource&quot; class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;&amp;lt;IS&amp;gt;/repository/conf/datasources/master-datasources.xml&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;a href=&quot;#identity&quot; class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;&amp;lt;IS&amp;gt;/repository/conf/identity/identity.xml&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;a href=&quot;#registry&quot; class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;&amp;lt;IS&amp;gt;/repository/conf/registry.xml&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;Moreover, We will also be swapping the user store from the default LDAP server to the JDBC store&lt;/p&gt;&lt;/blockquote&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;a href=&quot;#user-management&quot; class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;&amp;lt;IS&amp;gt;/repository/conf/user-mgt.xml&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;Replace and change the &lt;code class=&quot;css-0&quot;&gt;host&lt;/code&gt;, &lt;code class=&quot;css-0&quot;&gt;port&lt;/code&gt;, &lt;code class=&quot;css-0&quot;&gt;username&lt;/code&gt;, and &lt;code class=&quot;css-0&quot;&gt;password&lt;/code&gt; segments with respective values if different.&lt;/p&gt;&lt;/blockquote&gt;&lt;h4 id=&quot;Master-DataSource&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Master-DataSource&quot; aria-label=&quot;Master DataSource permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Master DataSource&lt;/h4&gt;&lt;p class=&quot;css-0&quot;&gt;Add the following data source configuration below the default H2 configuration.&lt;/p&gt;&lt;pre class=&quot;prism-code language-xml&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;&amp;lt;!-- master-datasources.xml --&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;datasource&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;WSO2_CARBON_POSTGRES_DB&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;description&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;The datasource used for registry and user manager&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;description&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;jndiConfig&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;jdbc/WSO2CarbonPostgresDB&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;jndiConfig&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;definition&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;RDBMS&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;configuration&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;jdbc:postgresql://localhost:5432/wso2postgres&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;username&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;postgres&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;username&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;password&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;hydrogen&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;password&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;driverClassName&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;org.postgresql.Driver&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;driverClassName&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;maxActive&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;maxActive&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;maxWait&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;60000&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;maxWait&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;minIdle&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;minIdle&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;testOnBorrow&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;testOnBorrow&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;validationQuery&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;SELECT 1; COMMIT&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;validationQuery&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;defaultAutoCommit&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;defaultAutoCommit&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;validationInterval&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;30000&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;validationInterval&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;configuration&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;definition&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;datasource&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;h4 id=&quot;Identity&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Identity&quot; aria-label=&quot;Identity permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Identity&lt;/h4&gt;&lt;p class=&quot;css-0&quot;&gt;Change the data-source in &lt;code class=&quot;css-0&quot;&gt;repository/conf/identity/identity.xml&lt;/code&gt; with the Postgres JNDI configuration name.&lt;/p&gt;&lt;pre class=&quot;prism-code language-xml&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;&amp;lt;!-- identity.xml --&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;JDBCPersistenceManager&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;DataSource&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;&amp;lt;!-- Include a data source name (jndiConfigName) from the set of data&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;                sources defined in master-datasources.xml --&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;&amp;lt;!-- &amp;lt;Name&amp;gt;jdbc/WSO2CarbonDB&amp;lt;/Name&amp;gt; --&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;Name&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;jdbc/WSO2CarbonPostgresDB&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;Name&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;DataSource&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        ...&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;h4 id=&quot;Registry&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Registry&quot; aria-label=&quot;Registry permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Registry&lt;/h4&gt;&lt;p class=&quot;css-0&quot;&gt;The following changes are made to mount the registries with our newly created Postgres data-source.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;Don’t change the default &lt;code class=&quot;css-0&quot;&gt;wso2registry&lt;/code&gt; configurations unless if you want to. Add new registry mounting configurations below the default configurations.&lt;/p&gt;&lt;/blockquote&gt;&lt;pre class=&quot;prism-code language-xml&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;&amp;lt;!-- registry.xml --&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;dbConfig&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;wso2registry&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;dataSource&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;jdbc/WSO2CarbonDB&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;dataSource&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;dbConfig&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;dbConfig&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;govregistry&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;dataSource&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;jdbc/WSO2CarbonPostgresDB&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;dataSource&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;dbConfig&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;remoteInstance&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;https://localhost:9443/registry&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;gov&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;cacheId&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;postgres@jdbc:postgresql://localhost:5432/wso2postgres&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;cacheId&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;dbConfig&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;govregistry&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;dbConfig&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;readOnly&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;readOnly&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;enableCache&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;enableCache&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;registryRoot&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;registryRoot&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;remoteInstance&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;mount&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;/_system/governance&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;overwrite&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;instanceId&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;gov&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;instanceId&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;targetPath&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;/_system/governance&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;targetPath&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;mount&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;mount&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;/_system/config&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;overwrite&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;instanceId&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;gov&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;instanceId&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;targetPath&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;/_system/config&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;targetPath&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;mount&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;h4 id=&quot;User-Management&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#User-Management&quot; aria-label=&quot;User Management permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;User Management&lt;/h4&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;Below described steps are to change the default LDAP user-store to JDBC user-store. You can skip the following changes if you want to keep the default LDAP user-store as out-of-the-box.&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;Comment the existing &lt;code class=&quot;css-0&quot;&gt;WSO2CarbonDB&lt;/code&gt; data source property tag and place the &lt;code class=&quot;css-0&quot;&gt;WSO2CarbonPostgresDB&lt;/code&gt; property tag inside the &lt;code class=&quot;css-0&quot;&gt;&amp;lt;Configuration&amp;gt;&lt;/code&gt; element as described below&lt;/p&gt;&lt;pre class=&quot;prism-code language-xml&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;Configuration&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    ...&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;&amp;lt;!-- &amp;lt;Property name=&amp;quot;dataSource&amp;quot;&amp;gt;jdbc/WSO2CarbonDB&amp;lt;/Property&amp;gt; --&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;Property&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;dataSource&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;jdbc/WSO2CarbonPostgresDB&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;Property&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;Configuration&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;Further, comment the LDAP user store manager configurations and uncomment the JDBC user store manager. This will route our default LDAP user store with JDBC user store.&lt;/p&gt;&lt;h2 id=&quot;Run--Test&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Run--Test&quot; aria-label=&quot;Run  Test permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Run &amp;amp; Test&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;Start the WSO2 Identity Server by navigating to the &lt;code class=&quot;css-0&quot;&gt;&amp;lt;IS&amp;gt;/bin&lt;/code&gt; folder and execute the following command based on your environment&lt;/p&gt;&lt;pre class=&quot;prism-code language-bash&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;# linux env&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;./wso2server.sh&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;# windows env&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;./wso2server.bat&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;The server will start and configure the platform to work with new configurations. After a successful startup, bring up your favorite browser and navigate to &lt;code class=&quot;css-0&quot;&gt;https://localhost:9443/carbon&lt;/code&gt; and enter &lt;code class=&quot;css-0&quot;&gt;admin&lt;/code&gt; as both username and password.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[SAML SSO With Passport]]></title><link>https://stackcheats.github.io/saml-sso-with-passport/content/</link><guid isPermaLink="false">https://stackcheats.github.io/saml-sso-with-passport/content/</guid><pubDate>Sat, 20 Jul 2019 00:00:00 GMT</pubDate><content:encoded>&lt;style data-emotion-css=&quot;sa2dbt&quot;&gt;body{color:text;background-color:var(--theme-ui-colors-background,#fff);}&lt;/style&gt;&lt;style data-emotion-css=&quot;0&quot;&gt;&lt;/style&gt;&lt;h2 id=&quot;Intro&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Intro&quot; aria-label=&quot;Intro permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Intro&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;This post narrates on how-to enable and register a service provider for SAML SSO using WSO2 Identity Server and to develop a simple Express-based web application with Passport-SAML component to support and authenticate the users via SAML SSO.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;Security Assertion Markup Language (SAML) is an XML-based framework for authentication and authorization between a Service Provider and an Identity Provider. SAML is a standard Single-Sign-On (SSO) format. Authentication information is exchanged through digitally signed XML documents.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;a href=&quot;https://auth0.com/blog/how-saml-authentication-works&quot; class=&quot;css-0&quot;&gt;For more on SAML&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;h2 id=&quot;Implementation&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Implementation&quot; aria-label=&quot;Implementation permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Implementation&lt;/h2&gt;&lt;h3 id=&quot;Express-Application&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Express-Application&quot; aria-label=&quot;Express Application permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Express Application&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Create an express application by executing &lt;code class=&quot;css-0&quot;&gt;npm init&lt;/code&gt; command, and provide all necessary properties to start the development.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Install all below-listed dependencies by either running &lt;code class=&quot;css-0&quot;&gt;npm install &amp;lt;module&amp;gt; --save&lt;/code&gt; command or by replacing the dependencies object with the values.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;A complete package.json is given below.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;div id=&quot;gist97088616&quot; class=&quot;gist css-0&quot;&gt;
    &lt;div class=&quot;gist-file css-0&quot;&gt;
      &lt;div class=&quot;gist-data css-0&quot;&gt;
        &lt;div class=&quot;js-gist-file-update-container js-task-list-container file-box css-0&quot;&gt;
  &lt;div id=&quot;file-package-json&quot; class=&quot;file my-2 css-0&quot;&gt;
    
  &lt;div itemProp=&quot;text&quot; class=&quot;Box-body p-0 blob-wrapper data type-json css-0&quot;&gt;

      
&lt;div class=&quot;js-check-bidi js-blob-code-container blob-code-content css-0&quot;&gt;

  &lt;template class=&quot;js-file-alert-template&quot;&gt;&lt;/template&gt;&lt;template class=&quot;js-line-alert-template&quot;&gt;&lt;/template&gt;

  &lt;table class=&quot;highlight tab-size js-file-line-container js-code-nav-container js-tagsearch-file css-0&quot; data-tab-size=&quot;8&quot; data-paste-markdown-skip=&quot;&quot; data-tagsearch-lang=&quot;JSON&quot; data-tagsearch-path=&quot;package.json&quot;&gt;
        &lt;tbody&gt;&lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-package-json-L1&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;1&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-package-json-LC1&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;{&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-package-json-L2&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;2&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-package-json-LC2&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&lt;span class=&quot;pl-ent&quot;&gt;&amp;quot;name&amp;quot;&lt;/span&gt;: &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;expresssaml&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;,&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-package-json-L3&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;3&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-package-json-LC3&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&lt;span class=&quot;pl-ent&quot;&gt;&amp;quot;version&amp;quot;&lt;/span&gt;: &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;1.0.0&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;,&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-package-json-L4&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;4&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-package-json-LC4&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&lt;span class=&quot;pl-ent&quot;&gt;&amp;quot;description&amp;quot;&lt;/span&gt;: &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;Express Application with SAML SSO&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;,&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-package-json-L5&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;5&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-package-json-LC5&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&lt;span class=&quot;pl-ent&quot;&gt;&amp;quot;main&amp;quot;&lt;/span&gt;: &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;server.js&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;,&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-package-json-L6&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;6&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-package-json-LC6&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&lt;span class=&quot;pl-ent&quot;&gt;&amp;quot;scripts&amp;quot;&lt;/span&gt;: {&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-package-json-L7&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;7&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-package-json-LC7&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&lt;span class=&quot;pl-ent&quot;&gt;&amp;quot;test&amp;quot;&lt;/span&gt;: &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;echo &lt;span class=&quot;pl-cce&quot;&gt;\&amp;quot;&lt;/span&gt;Error: no test specified&lt;span class=&quot;pl-cce&quot;&gt;\&amp;quot;&lt;/span&gt; &amp;amp;&amp;amp; exit 1&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-package-json-L8&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;8&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-package-json-LC8&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	},&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-package-json-L9&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;9&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-package-json-LC9&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&lt;span class=&quot;pl-ent&quot;&gt;&amp;quot;author&amp;quot;&lt;/span&gt;: &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;athiththan11&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;,&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-package-json-L10&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;10&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-package-json-LC10&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&lt;span class=&quot;pl-ent&quot;&gt;&amp;quot;homepage&amp;quot;&lt;/span&gt;: &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;https://github.com/athiththan11/Passport-SAML-WSO2&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;,&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-package-json-L11&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;11&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-package-json-LC11&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&lt;span class=&quot;pl-ent&quot;&gt;&amp;quot;keywords&amp;quot;&lt;/span&gt;: [&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-package-json-L12&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;12&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-package-json-LC12&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;wso2-saml-sso&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;,&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-package-json-L13&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;13&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-package-json-LC13&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;passport-saml&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-package-json-L14&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;14&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-package-json-LC14&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	],&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-package-json-L15&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;15&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-package-json-LC15&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&lt;span class=&quot;pl-ent&quot;&gt;&amp;quot;license&amp;quot;&lt;/span&gt;: &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;ISC&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;,&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-package-json-L16&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;16&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-package-json-LC16&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&lt;span class=&quot;pl-ent&quot;&gt;&amp;quot;dependencies&amp;quot;&lt;/span&gt;: {&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-package-json-L17&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;17&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-package-json-LC17&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&lt;span class=&quot;pl-ent&quot;&gt;&amp;quot;body-parser&amp;quot;&lt;/span&gt;: &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;1.19.0&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;,&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-package-json-L18&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;18&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-package-json-LC18&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&lt;span class=&quot;pl-ent&quot;&gt;&amp;quot;dotenv&amp;quot;&lt;/span&gt;: &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;8.0.0&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;,&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-package-json-L19&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;19&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-package-json-LC19&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&lt;span class=&quot;pl-ent&quot;&gt;&amp;quot;ejs&amp;quot;&lt;/span&gt;: &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;2.6.2&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;,&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-package-json-L20&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;20&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-package-json-LC20&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&lt;span class=&quot;pl-ent&quot;&gt;&amp;quot;express&amp;quot;&lt;/span&gt;: &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;4.17.1&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;,&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-package-json-L21&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;21&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-package-json-LC21&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&lt;span class=&quot;pl-ent&quot;&gt;&amp;quot;express-session&amp;quot;&lt;/span&gt;: &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;1.16.2&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;,&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-package-json-L22&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;22&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-package-json-LC22&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&lt;span class=&quot;pl-ent&quot;&gt;&amp;quot;passport&amp;quot;&lt;/span&gt;: &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;0.3.2&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;,&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-package-json-L23&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;23&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-package-json-LC23&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&lt;span class=&quot;pl-ent&quot;&gt;&amp;quot;passport-saml&amp;quot;&lt;/span&gt;: &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;0.15.0&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-package-json-L24&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;24&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-package-json-LC24&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	},&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-package-json-L25&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;25&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-package-json-LC25&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&lt;span class=&quot;pl-ent&quot;&gt;&amp;quot;devDependencies&amp;quot;&lt;/span&gt;: {}&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-package-json-L26&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;26&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-package-json-LC26&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;}&lt;/td&gt;
        &lt;/tr&gt;
  &lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;


  &lt;/div&gt;

  &lt;/div&gt;&lt;/div&gt;

      &lt;/div&gt;
      &lt;div class=&quot;gist-meta css-0&quot;&gt;
        &lt;a href=&quot;https://gist.github.com/athiththan11/dc553a891a27c379515860249caed35c/raw/18721c1fe4498c15dbe19a6187d6a4c296fa46ec/package.json&quot; style=&quot;css-float:right&quot; class=&quot;css-0&quot;&gt;view raw&lt;/a&gt;
        &lt;a href=&quot;https://gist.github.com/athiththan11/dc553a891a27c379515860249caed35c#file-package-json&quot; class=&quot;css-0&quot;&gt;
          package.json
        &lt;/a&gt;
        hosted with ❤ by &lt;a href=&quot;https://github.com&quot; class=&quot;css-0&quot;&gt;GitHub&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;&lt;/div&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Create a Javascript file named &lt;code class=&quot;css-0&quot;&gt;server.js&lt;/code&gt; in the root directory of our express application with the below-given code-segments.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;strong class=&quot;css-0&quot;&gt;Note: EJS template implementations are not covered here&lt;/strong&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Check out the complete implementation of our express application at the end of this blog followed by a &lt;a href=&quot;https://github.com/athiththan11/Passport-SAML-WSO2&quot; class=&quot;css-0&quot;&gt;GitHub&lt;/a&gt; repo. The implementation contains simple EJS templates to render the pages and outputs.&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;div id=&quot;gist97088674&quot; class=&quot;gist css-0&quot;&gt;
    &lt;div class=&quot;gist-file css-0&quot;&gt;
      &lt;div class=&quot;gist-data css-0&quot;&gt;
        &lt;div class=&quot;js-gist-file-update-container js-task-list-container file-box css-0&quot;&gt;
  &lt;div id=&quot;file-server-js&quot; class=&quot;file my-2 css-0&quot;&gt;
    
  &lt;div itemProp=&quot;text&quot; class=&quot;Box-body p-0 blob-wrapper data type-javascript css-0&quot;&gt;

      
&lt;div class=&quot;js-check-bidi js-blob-code-container blob-code-content css-0&quot;&gt;

  &lt;template class=&quot;js-file-alert-template&quot;&gt;&lt;/template&gt;&lt;template class=&quot;js-line-alert-template&quot;&gt;&lt;/template&gt;

  &lt;table class=&quot;highlight tab-size js-file-line-container js-code-nav-container js-tagsearch-file css-0&quot; data-tab-size=&quot;8&quot; data-paste-markdown-skip=&quot;&quot; data-tagsearch-lang=&quot;JavaScript&quot; data-tagsearch-path=&quot;server.js&quot;&gt;
        &lt;tbody&gt;&lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L1&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;1&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC1&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-en&quot;&gt;require&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&amp;#x27;dotenv&amp;#x27;&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-en&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L2&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;2&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC2&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;path&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;require&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&amp;#x27;path&amp;#x27;&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L3&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;3&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC3&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;fs&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;require&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&amp;#x27;fs&amp;#x27;&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L4&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;4&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC4&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L5&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;5&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC5&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;express&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;require&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&amp;#x27;express&amp;#x27;&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L6&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;6&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC6&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;session&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;require&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&amp;#x27;express-session&amp;#x27;&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L7&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;7&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC7&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;passport&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;require&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&amp;#x27;passport&amp;#x27;&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L8&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;8&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC8&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;saml&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;require&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&amp;#x27;passport-saml&amp;#x27;&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;Strategy&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L9&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;9&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC9&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L10&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;10&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC10&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;bodyParser&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;require&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&amp;#x27;body-parser&amp;#x27;&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L11&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;11&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC11&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L12&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;12&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC12&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;userProfile&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L13&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;13&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC13&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;app&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;express&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L14&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;14&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC14&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L15&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;15&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC15&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-s1&quot;&gt;app&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-en&quot;&gt;set&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&amp;#x27;views&amp;#x27;&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-en&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-s1&quot;&gt;__dirname&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;pl-s&quot;&gt;&amp;#x27;views&amp;#x27;&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L16&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;16&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC16&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-s1&quot;&gt;app&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-en&quot;&gt;set&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&amp;#x27;view engine&amp;#x27;&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;pl-s&quot;&gt;&amp;#x27;ejs&amp;#x27;&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L17&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;17&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC17&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L18&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;18&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC18&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-s1&quot;&gt;app&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-en&quot;&gt;use&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-s1&quot;&gt;express&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-en&quot;&gt;static&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-s1&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-en&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-s1&quot;&gt;__dirname&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;pl-s&quot;&gt;&amp;#x27;public&amp;#x27;&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L19&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;19&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC19&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L20&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;20&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC20&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-s1&quot;&gt;app&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-en&quot;&gt;use&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-s1&quot;&gt;bodyParser&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-en&quot;&gt;urlencoded&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;extended&lt;/span&gt;: &lt;span class=&quot;pl-c1&quot;&gt;true&lt;/span&gt; &lt;span class=&quot;pl-kos&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L21&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;21&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC21&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-s1&quot;&gt;app&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-en&quot;&gt;use&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-s1&quot;&gt;session&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;secret&lt;/span&gt;: &lt;span class=&quot;pl-s1&quot;&gt;process&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;env&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;SESSION_SECRET&lt;/span&gt; &lt;span class=&quot;pl-kos&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L22&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;22&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC22&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L23&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;23&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC23&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-s1&quot;&gt;app&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-en&quot;&gt;use&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-s1&quot;&gt;passport&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-en&quot;&gt;initialize&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L24&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;24&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC24&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-s1&quot;&gt;app&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-en&quot;&gt;use&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-s1&quot;&gt;passport&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-en&quot;&gt;session&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L25&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;25&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC25&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L26&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;26&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC26&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-s1&quot;&gt;passport&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-en&quot;&gt;serializeUser&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-s1&quot;&gt;user&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;done&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;pl-kos&quot;&gt;{&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L27&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;27&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC27&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&lt;span class=&quot;pl-s1&quot;&gt;done&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;user&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L28&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;28&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC28&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-kos&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L29&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;29&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC29&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L30&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;30&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC30&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-s1&quot;&gt;passport&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-en&quot;&gt;deserializeUser&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-s1&quot;&gt;user&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;done&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;pl-kos&quot;&gt;{&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L31&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;31&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC31&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&lt;span class=&quot;pl-s1&quot;&gt;done&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;user&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L32&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;32&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC32&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-kos&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L33&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;33&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC33&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L34&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;34&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC34&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;// saml strategy for passport&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L35&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;35&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC35&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;strategy&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;saml&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L36&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;36&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC36&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&lt;span class=&quot;pl-kos&quot;&gt;{&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L37&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;37&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC37&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&lt;span class=&quot;pl-c1&quot;&gt;entryPoint&lt;/span&gt;: &lt;span class=&quot;pl-s1&quot;&gt;process&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;env&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;SAML_ENTRYPOINT&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;,&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L38&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;38&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC38&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&lt;span class=&quot;pl-c1&quot;&gt;issuer&lt;/span&gt;: &lt;span class=&quot;pl-s1&quot;&gt;process&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;env&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;SAML_ISSUER&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;,&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L39&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;39&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC39&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&lt;span class=&quot;pl-c1&quot;&gt;protocol&lt;/span&gt;: &lt;span class=&quot;pl-s1&quot;&gt;process&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;env&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;SAML_PROTOCOL&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;,&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L40&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;40&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC40&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&lt;span class=&quot;pl-c1&quot;&gt;logoutUrl&lt;/span&gt;: &lt;span class=&quot;pl-s1&quot;&gt;process&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;env&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;SAML_LOGOUTURL&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L41&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;41&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC41&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&lt;span class=&quot;pl-kos&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;,&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L42&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;42&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC42&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-s1&quot;&gt;profile&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;done&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;pl-kos&quot;&gt;{&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L43&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;43&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC43&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&lt;span class=&quot;pl-s1&quot;&gt;userProfile&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;profile&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L44&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;44&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC44&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&lt;span class=&quot;pl-s1&quot;&gt;done&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;userProfile&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L45&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;45&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC45&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&lt;span class=&quot;pl-kos&quot;&gt;}&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L46&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;46&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC46&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L47&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;47&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC47&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L48&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;48&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC48&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-s1&quot;&gt;passport&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-en&quot;&gt;use&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-s1&quot;&gt;strategy&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L49&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;49&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC49&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L50&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;50&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC50&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;redirectToLogin&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-s1&quot;&gt;req&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;res&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;next&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;pl-kos&quot;&gt;{&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L51&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;51&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC51&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&lt;span class=&quot;pl-k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;pl-s1&quot;&gt;req&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-en&quot;&gt;isAuthenticated&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;userProfile&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;pl-kos&quot;&gt;{&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L52&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;52&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC52&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&lt;span class=&quot;pl-k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;res&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-en&quot;&gt;redirect&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&amp;#x27;/app/login&amp;#x27;&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L53&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;53&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC53&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&lt;span class=&quot;pl-kos&quot;&gt;}&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L54&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;54&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC54&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&lt;span class=&quot;pl-s1&quot;&gt;next&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L55&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;55&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC55&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-kos&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L56&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;56&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC56&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L57&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;57&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC57&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-s1&quot;&gt;app&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-en&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&amp;#x27;/app&amp;#x27;&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;redirectToLogin&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-s1&quot;&gt;req&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;res&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;pl-kos&quot;&gt;{&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L58&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;58&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC58&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&lt;span class=&quot;pl-s1&quot;&gt;res&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-en&quot;&gt;render&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&amp;#x27;index&amp;#x27;&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;pl-kos&quot;&gt;{&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L59&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;59&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC59&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&lt;span class=&quot;pl-c1&quot;&gt;title&lt;/span&gt;: &lt;span class=&quot;pl-s&quot;&gt;&amp;#x27;Express Web Application&amp;#x27;&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;,&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L60&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;60&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC60&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&lt;span class=&quot;pl-c1&quot;&gt;heading&lt;/span&gt;: &lt;span class=&quot;pl-s&quot;&gt;&amp;#x27;Logged-In to Express Web Application&amp;#x27;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L61&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;61&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC61&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&lt;span class=&quot;pl-kos&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L62&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;62&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC62&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-kos&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L63&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;63&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC63&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L64&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;64&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC64&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-s1&quot;&gt;app&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-en&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L65&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;65&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC65&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&lt;span class=&quot;pl-s&quot;&gt;&amp;#x27;/app/login&amp;#x27;&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;,&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L66&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;66&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC66&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&lt;span class=&quot;pl-s1&quot;&gt;passport&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-en&quot;&gt;authenticate&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&amp;#x27;saml&amp;#x27;&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;pl-kos&quot;&gt;{&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L67&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;67&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC67&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&lt;span class=&quot;pl-c1&quot;&gt;successRedirect&lt;/span&gt;: &lt;span class=&quot;pl-s&quot;&gt;&amp;#x27;/app&amp;#x27;&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;,&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L68&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;68&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC68&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&lt;span class=&quot;pl-c1&quot;&gt;failureRedirect&lt;/span&gt;: &lt;span class=&quot;pl-s&quot;&gt;&amp;#x27;/app/login&amp;#x27;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L69&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;69&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC69&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&lt;span class=&quot;pl-kos&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L70&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;70&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC70&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L71&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;71&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC71&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L72&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;72&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC72&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-s1&quot;&gt;app&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-en&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&amp;#x27;/app/logout&amp;#x27;&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-s1&quot;&gt;req&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;res&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;pl-kos&quot;&gt;{&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L73&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;73&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC73&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&lt;span class=&quot;pl-k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-s1&quot;&gt;req&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;user&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;pl-kos&quot;&gt;{&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L74&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;74&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC74&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&lt;span class=&quot;pl-k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;res&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-en&quot;&gt;redirect&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&amp;#x27;/app/home&amp;#x27;&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L75&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;75&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC75&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&lt;span class=&quot;pl-kos&quot;&gt;}&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L76&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;76&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC76&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L77&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;77&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC77&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&lt;span class=&quot;pl-k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;strategy&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-en&quot;&gt;logout&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-s1&quot;&gt;req&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-s1&quot;&gt;err&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;uri&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;pl-kos&quot;&gt;{&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L78&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;78&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC78&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&lt;span class=&quot;pl-s1&quot;&gt;req&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-en&quot;&gt;logout&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L79&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;79&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC79&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L80&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;80&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC80&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&lt;span class=&quot;pl-s1&quot;&gt;userProfile&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L81&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;81&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC81&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&lt;span class=&quot;pl-k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;res&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-en&quot;&gt;redirect&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-s1&quot;&gt;uri&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L82&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;82&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC82&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&lt;span class=&quot;pl-kos&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L83&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;83&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC83&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-kos&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L84&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;84&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC84&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L85&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;85&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC85&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-s1&quot;&gt;app&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-en&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&amp;#x27;/app/failed&amp;#x27;&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-s1&quot;&gt;req&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;res&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;pl-kos&quot;&gt;{&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L86&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;86&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC86&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&lt;span class=&quot;pl-s1&quot;&gt;res&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-en&quot;&gt;status&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;401&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-en&quot;&gt;send&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&amp;#x27;Login failed&amp;#x27;&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L87&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;87&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC87&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-kos&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L88&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;88&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC88&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L89&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;89&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC89&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-s1&quot;&gt;app&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-en&quot;&gt;post&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L90&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;90&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC90&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&lt;span class=&quot;pl-s&quot;&gt;&amp;#x27;/saml/consume&amp;#x27;&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;,&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L91&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;91&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC91&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&lt;span class=&quot;pl-s1&quot;&gt;passport&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-en&quot;&gt;authenticate&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&amp;#x27;saml&amp;#x27;&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;pl-kos&quot;&gt;{&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L92&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;92&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC92&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&lt;span class=&quot;pl-c1&quot;&gt;failureRedirect&lt;/span&gt;: &lt;span class=&quot;pl-s&quot;&gt;&amp;#x27;/app/failed&amp;#x27;&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;,&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L93&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;93&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC93&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&lt;span class=&quot;pl-c1&quot;&gt;failureFlash&lt;/span&gt;: &lt;span class=&quot;pl-c1&quot;&gt;true&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L94&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;94&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC94&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&lt;span class=&quot;pl-kos&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;,&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L95&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;95&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC95&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-s1&quot;&gt;req&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;res&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;pl-kos&quot;&gt;{&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L96&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;96&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC96&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L97&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;97&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC97&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&lt;span class=&quot;pl-c&quot;&gt;// saml assertion extraction from saml response&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L98&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;98&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC98&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&lt;span class=&quot;pl-c&quot;&gt;// var samlResponse = res.req.body.SAMLResponse;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L99&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;99&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC99&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&lt;span class=&quot;pl-c&quot;&gt;// var decoded = base64decode(samlResponse);&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L100&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;100&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC100&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&lt;span class=&quot;pl-c&quot;&gt;// var assertion =&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L101&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;101&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC101&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&lt;span class=&quot;pl-c&quot;&gt;// 	(&amp;#x27;&amp;lt;saml2:Assertion&amp;#x27; + decoded.split(&amp;#x27;&amp;lt;saml2:Assertion&amp;#x27;)[1]).split(&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L102&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;102&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC102&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&lt;span class=&quot;pl-c&quot;&gt;// 		&amp;#x27;&amp;lt;/saml2:Assertion&amp;gt;&amp;#x27;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L103&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;103&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC103&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&lt;span class=&quot;pl-c&quot;&gt;// 	)[0] + &amp;#x27;&amp;lt;/saml2:Assertion&amp;gt;&amp;#x27;;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L104&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;104&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC104&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&lt;span class=&quot;pl-c&quot;&gt;// var urlEncoded = base64url(assertion);&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L105&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;105&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC105&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L106&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;106&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC106&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&lt;span class=&quot;pl-c&quot;&gt;// success redirection to /app&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L107&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;107&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC107&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&lt;span class=&quot;pl-k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;res&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-en&quot;&gt;redirect&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&amp;#x27;/app&amp;#x27;&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L108&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;108&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC108&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&lt;span class=&quot;pl-kos&quot;&gt;}&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L109&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;109&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC109&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L110&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;110&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC110&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L111&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;111&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC111&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-s1&quot;&gt;app&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-en&quot;&gt;post&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&amp;#x27;/app/home&amp;#x27;&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-s1&quot;&gt;req&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;res&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;pl-kos&quot;&gt;{&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L112&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;112&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC112&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&lt;span class=&quot;pl-s1&quot;&gt;res&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-en&quot;&gt;render&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&amp;#x27;home&amp;#x27;&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;pl-kos&quot;&gt;{&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L113&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;113&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC113&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&lt;span class=&quot;pl-c1&quot;&gt;title&lt;/span&gt;: &lt;span class=&quot;pl-s&quot;&gt;&amp;#x27;Express Web Application&amp;#x27;&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;,&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L114&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;114&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC114&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&lt;span class=&quot;pl-c1&quot;&gt;heading&lt;/span&gt;: &lt;span class=&quot;pl-s&quot;&gt;&amp;#x27;Express Web Application&amp;#x27;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L115&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;115&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC115&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&lt;span class=&quot;pl-kos&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L116&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;116&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC116&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-kos&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L117&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;117&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC117&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-server-js-L118&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;118&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-server-js-LC118&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-s1&quot;&gt;app&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-en&quot;&gt;listen&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-s1&quot;&gt;process&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;env&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;PORT&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;3000&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
  &lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;


  &lt;/div&gt;

  &lt;/div&gt;&lt;/div&gt;

      &lt;/div&gt;
      &lt;div class=&quot;gist-meta css-0&quot;&gt;
        &lt;a href=&quot;https://gist.github.com/athiththan11/9352d62cf837e5d05894a4a521d8bfd2/raw/42033d74658cfc3d52944d7c224c84202114af59/server.js&quot; style=&quot;css-float:right&quot; class=&quot;css-0&quot;&gt;view raw&lt;/a&gt;
        &lt;a href=&quot;https://gist.github.com/athiththan11/9352d62cf837e5d05894a4a521d8bfd2#file-server-js&quot; class=&quot;css-0&quot;&gt;
          server.js
        &lt;/a&gt;
        hosted with ❤ by &lt;a href=&quot;https://github.com&quot; class=&quot;css-0&quot;&gt;GitHub&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;&lt;/div&gt;&lt;/p&gt;&lt;h3 id=&quot;Passport&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Passport&quot; aria-label=&quot;Passport permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Passport&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;a href=&quot;http://www.passportjs.org&quot; class=&quot;css-0&quot;&gt;Passport&lt;/a&gt; is authentication middleware for Node.js and can be used with any Express-based web applications.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;Passport has a comprehensive set of strategies to support different authentication mechanisms with different vendors.&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;For this implementation, we will be using &lt;a href=&quot;http://www.passportjs.org/packages/passport-saml&quot; class=&quot;css-0&quot;&gt;Passport-SAML&lt;/a&gt; (which is an open-built strategy for SAML 2.0 authentication flows) strategy with our express web application to authenticate users.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Given below is a simple &lt;a href=&quot;http://www.passportjs.org/packages/passport-saml&quot; class=&quot;css-0&quot;&gt;Passport-SAML&lt;/a&gt; strategy configuration …&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;div id=&quot;gist97149709&quot; class=&quot;gist css-0&quot;&gt;
    &lt;div class=&quot;gist-file css-0&quot;&gt;
      &lt;div class=&quot;gist-data css-0&quot;&gt;
        &lt;div class=&quot;js-gist-file-update-container js-task-list-container file-box css-0&quot;&gt;
  &lt;div id=&quot;file-strategy-js&quot; class=&quot;file my-2 css-0&quot;&gt;
    
  &lt;div itemProp=&quot;text&quot; class=&quot;Box-body p-0 blob-wrapper data type-javascript css-0&quot;&gt;

      
&lt;div class=&quot;js-check-bidi js-blob-code-container blob-code-content css-0&quot;&gt;

  &lt;template class=&quot;js-file-alert-template&quot;&gt;&lt;/template&gt;&lt;template class=&quot;js-line-alert-template&quot;&gt;&lt;/template&gt;

  &lt;table class=&quot;highlight tab-size js-file-line-container js-code-nav-container js-tagsearch-file css-0&quot; data-tab-size=&quot;8&quot; data-paste-markdown-skip=&quot;&quot; data-tagsearch-lang=&quot;JavaScript&quot; data-tagsearch-path=&quot;strategy.js&quot;&gt;
        &lt;tbody&gt;&lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-strategy-js-L1&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;1&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-strategy-js-LC1&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;passport&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;require&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&amp;#x27;passport&amp;#x27;&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-strategy-js-L2&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;2&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-strategy-js-LC2&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;saml&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;require&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&amp;#x27;passport-saml&amp;#x27;&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;Strategy&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-strategy-js-L3&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;3&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-strategy-js-LC3&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-strategy-js-L4&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;4&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-strategy-js-LC4&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;// saml strategy for passport&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-strategy-js-L5&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;5&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-strategy-js-LC5&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;strategy&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;saml&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-strategy-js-L6&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;6&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-strategy-js-LC6&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&lt;span class=&quot;pl-kos&quot;&gt;{&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-strategy-js-L7&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;7&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-strategy-js-LC7&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&lt;span class=&quot;pl-c1&quot;&gt;entryPoint&lt;/span&gt;: &lt;span class=&quot;pl-c1&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;pl-ent&quot;&gt;provide&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;SAML&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;entry&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;point&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;url&lt;/span&gt; : &lt;span class=&quot;pl-s1&quot;&gt;https&lt;/span&gt;:&lt;span class=&quot;pl-c&quot;&gt;//localhost:9443/samlsso&amp;gt;,&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-strategy-js-L8&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;8&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-strategy-js-LC8&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&lt;span class=&quot;pl-s1&quot;&gt;issuer&lt;/span&gt;: &lt;span class=&quot;pl-c1&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;pl-s1&quot;&gt;provide&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;SAML&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;issuer&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;name&lt;/span&gt; : &lt;span class=&quot;pl-v&quot;&gt;SampleExpressApp&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;&amp;gt;&lt;/span&gt;,&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-strategy-js-L9&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;9&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-strategy-js-LC9&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		protocol: &lt;span class=&quot;pl-c1&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;pl-s1&quot;&gt;provide&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;the&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;protocol&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;used&lt;/span&gt; : &lt;span class=&quot;pl-s1&quot;&gt;http&lt;/span&gt;:&lt;span class=&quot;pl-c&quot;&gt;//&amp;gt;,&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-strategy-js-L10&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;10&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-strategy-js-LC10&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&lt;span class=&quot;pl-s1&quot;&gt;logoutUrl&lt;/span&gt;: &lt;span class=&quot;pl-c1&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;pl-s1&quot;&gt;provide&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;the&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;logout&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;url&lt;/span&gt; : &lt;span class=&quot;pl-s1&quot;&gt;https&lt;/span&gt;:&lt;span class=&quot;pl-c&quot;&gt;//localhost:9443/samlsso&amp;gt;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-strategy-js-L11&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;11&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-strategy-js-LC11&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&lt;span class=&quot;pl-kos&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;,&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-strategy-js-L12&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;12&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-strategy-js-LC12&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;profile&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;done&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;pl-kos&quot;&gt;{&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-strategy-js-L13&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;13&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-strategy-js-LC13&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&lt;span class=&quot;pl-c&quot;&gt;// your body implementation on success&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-strategy-js-L14&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;14&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-strategy-js-LC14&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&lt;span class=&quot;pl-kos&quot;&gt;}&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-strategy-js-L15&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;15&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-strategy-js-LC15&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-strategy-js-L16&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;16&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-strategy-js-LC16&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-strategy-js-L17&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;17&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-strategy-js-LC17&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;// register the strategy with passport&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-strategy-js-L18&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;18&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-strategy-js-LC18&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;passport&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;use&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;strategy&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
  &lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;


  &lt;/div&gt;

  &lt;/div&gt;&lt;/div&gt;

      &lt;/div&gt;
      &lt;div class=&quot;gist-meta css-0&quot;&gt;
        &lt;a href=&quot;https://gist.github.com/athiththan11/9c1c2fa4a7948ae1b320cde8c089c7cb/raw/916522dae5eac1b147736ad3c8841d631176309d/strategy.js&quot; style=&quot;css-float:right&quot; class=&quot;css-0&quot;&gt;view raw&lt;/a&gt;
        &lt;a href=&quot;https://gist.github.com/athiththan11/9c1c2fa4a7948ae1b320cde8c089c7cb#file-strategy-js&quot; class=&quot;css-0&quot;&gt;
          strategy.js
        &lt;/a&gt;
        hosted with ❤ by &lt;a href=&quot;https://github.com&quot; class=&quot;css-0&quot;&gt;GitHub&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;&lt;/div&gt;&lt;/p&gt;&lt;h2 id=&quot;Configurations&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Configurations&quot; aria-label=&quot;Configurations permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Configurations&lt;/h2&gt;&lt;h3 id=&quot;WSO2-Identity-Server&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#WSO2-Identity-Server&quot; aria-label=&quot;WSO2 Identity Server permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;WSO2 Identity Server&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Create a new Service Provider in the WSO2 Identity Server to register our express application as one. Follow the given step by step guide to create new Service Provider and to register our express application enabling SAML SSO.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Navigate to &lt;em class=&quot;css-0&quot;&gt;Main (Tab) -&amp;gt; Identity (Section) -&amp;gt; Service Providers&lt;/em&gt; (Sub-section) and select &lt;em class=&quot;css-0&quot;&gt;Add&lt;/em&gt;. The management console will display you the following screen to add a new service provider.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Provide …&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Service Provider Name: SampleExpressApp&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Description: Any valid description of the service provider&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/c3cae11c8052e11a17acf9489db63826/3643c/add_new_service_provider.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:54.05405405405405%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA9ElEQVQoz6WQ226DMBBE/f//14e+0JLU+BInxsbgO3ScSFUaFQmph8U20o6ZHeJD1GNDa327aefcdhgCTd/3dGCcC0qHy0XlXFLKR4r4kN/eO0q/ILN28iG4eT5YpNRtNE5BqlQpZf2LXdvLspz6z677kFIaYzD81LDmiXEHklK63kFiKUbYYQMepjVucRgE9tIOBK6wNcO1wklKQQouhFTqivCxGmN3bUPsvYf48R2j54xyzhkbeIMJITAGep7/Ge+QWqudptEYDF/XtZQcY0Dm4LHGEOZlQWup9VeVQvBSSk/nM4JZm7i+RI3bfw4vkO0ffAMrnX3NUBObzgAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Add New Service Provider&quot; title=&quot;Add New Service Provider&quot; src=&quot;/static/c3cae11c8052e11a17acf9489db63826/6d370/add_new_service_provider.png&quot; srcSet=&quot;/static/c3cae11c8052e11a17acf9489db63826/c5084/add_new_service_provider.png 148w,/static/c3cae11c8052e11a17acf9489db63826/60cc9/add_new_service_provider.png 295w,/static/c3cae11c8052e11a17acf9489db63826/6d370/add_new_service_provider.png 590w,/static/c3cae11c8052e11a17acf9489db63826/540ae/add_new_service_provider.png 885w,/static/c3cae11c8052e11a17acf9489db63826/2561a/add_new_service_provider.png 1180w,/static/c3cae11c8052e11a17acf9489db63826/3643c/add_new_service_provider.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;And click &lt;em class=&quot;css-0&quot;&gt;Register&lt;/em&gt; to register and create a new service provider. Afterward, the management console will display you the following screen to configure claim configuration, inbound authentication configurations and etc.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Expand the &lt;em class=&quot;css-0&quot;&gt;Claim Configurations (accordion)&lt;/em&gt; to configure wanted claims and subject claim URI. We will be using the &lt;em class=&quot;css-0&quot;&gt;Local Claim Dialect&lt;/em&gt; as the &lt;em class=&quot;css-0&quot;&gt;Claim mapping Dialect&lt;/em&gt;.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;You can add all your wanted (requested claims) by clicking on the Add Claim URI button and selecting one from the drop-down menu&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;For the demo, we will be selecting the following claims&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;http://wso2.org/claims/emailaddress&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;http://wso2.org/claims/username&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;code class=&quot;css-0&quot;&gt;http://wso2.org/claims/role&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;And choose &lt;code class=&quot;css-0&quot;&gt;http://wso2.org/claims/emailaddress&lt;/code&gt; as the &lt;em class=&quot;css-0&quot;&gt;Subject Claim URI&lt;/em&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/0c50dd7a5158057726e68c22f8d1e7a0/3643c/claim_configurations.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:56.08108108108109%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABGUlEQVQoz41SiW6FIBDk///RK+IRT5BbUTvIqzGpTTtZIy7szuwgmaYpy7J5nqWUQkghQyxC3IHkK4wxxHvvrD3PkzNWUjqMAdiw33BuPd6AErJtm72KrdFQMbMApaR/4PgFBA/q44nzgeMv7PtO4gunjVbD0IMW8yilth9Y1/VefmRD8zCMlwE6GBbi3aVnUmuY4ohzDqNyxhepGefghBD/D6DX5bZz0MAWTusWstEfFkM7mNz6AbRqrbQxWIZP78FPbp8450mSpGmKKcSydJNwq0dRDO93JRgXCmTRYHAQtIFUtECnqqratsUU2LNui0Y+LmB/3ojWmqCmaZqu6/q+p5Sivizxs9A8z4uiqOsaGWyNEdN4AxxfwDx7ngvGMw8AAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Claim configurations&quot; title=&quot;Claim configurations&quot; src=&quot;/static/0c50dd7a5158057726e68c22f8d1e7a0/6d370/claim_configurations.png&quot; srcSet=&quot;/static/0c50dd7a5158057726e68c22f8d1e7a0/c5084/claim_configurations.png 148w,/static/0c50dd7a5158057726e68c22f8d1e7a0/60cc9/claim_configurations.png 295w,/static/0c50dd7a5158057726e68c22f8d1e7a0/6d370/claim_configurations.png 590w,/static/0c50dd7a5158057726e68c22f8d1e7a0/540ae/claim_configurations.png 885w,/static/0c50dd7a5158057726e68c22f8d1e7a0/2561a/claim_configurations.png 1180w,/static/0c50dd7a5158057726e68c22f8d1e7a0/3643c/claim_configurations.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Next, expand the &lt;em class=&quot;css-0&quot;&gt;Inbound Authentication Configuration (accordion)&lt;/em&gt; and click on &lt;em class=&quot;css-0&quot;&gt;SAML2 Web SSO Configuration&lt;/em&gt; and select &lt;em class=&quot;css-0&quot;&gt;Configure&lt;/em&gt; to configure SAML web SSO for our implemented express application.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Configure the SAML SSO as follows …&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Issuer: &lt;code class=&quot;css-0&quot;&gt;SampleExpressApp&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Assertion Consumer URLs: &lt;code class=&quot;css-0&quot;&gt;http://localhost:3000/saml/consume&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Enable Response Signing: &lt;code class=&quot;css-0&quot;&gt;True&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Enable Signature Validation in Authentication Requests and Logout Requests: False&lt;/li&gt;&lt;/ul&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;To enable signature validate in both authentication requests and logout requests, please refer the &lt;code class=&quot;css-0&quot;&gt;Certificates and Signing&lt;/code&gt; section.&lt;/p&gt;&lt;/blockquote&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Enable Single Logout: &lt;code class=&quot;css-0&quot;&gt;True&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;SLO Response URL: &lt;code class=&quot;css-0&quot;&gt;http://localhost:3000/app/home&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;SLO Request URL: &lt;code class=&quot;css-0&quot;&gt;http://localhost:3000/app/home&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Enable Attribute Profile: &lt;code class=&quot;css-0&quot;&gt;True&lt;/code&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Include Attributes in the Response Always: &lt;code class=&quot;css-0&quot;&gt;True&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/7c7bc03080f8a2312a77f25dcb526624/3643c/saml_sso_configurations.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:59.45945945945946%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAIAAADtbgqsAAAACXBIWXMAAAsTAAALEwEAmpwYAAABB0lEQVQoz5VSi46EIAz0/z/SjcppRJSHvETAncXbXC453dzQmFDazrS1MsZoHGu1NumfqChbyFfPOV9X7b137sfusW1bZa3v+14IEQtyTrCUIuwjKqXUOI4Qj0qoN898XoTSVmnjSv075n3fz0vO+TgOY6xUq9YWnrB5vB4XQHwFTkqptTaWuGmaCOlgUkq8Q/1dsta667plWVKJG4bh8XjUdU0Icc6dci6TMVXG2MwYBnQyt29gBcc1CrPdmqYFz7qu7rUffFwshdK15u/ksEe0B/Fl7ZFzMVLGhXI+IOBDMkbyGmwIp2eaaNN22Dw03zT87jmkmSslJfYGwWCHN//+Df+sAucT2lS8Bh5kqvUAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;SAML SSO configurations&quot; title=&quot;SAML SSO configurations&quot; src=&quot;/static/7c7bc03080f8a2312a77f25dcb526624/6d370/saml_sso_configurations.png&quot; srcSet=&quot;/static/7c7bc03080f8a2312a77f25dcb526624/c5084/saml_sso_configurations.png 148w,/static/7c7bc03080f8a2312a77f25dcb526624/60cc9/saml_sso_configurations.png 295w,/static/7c7bc03080f8a2312a77f25dcb526624/6d370/saml_sso_configurations.png 590w,/static/7c7bc03080f8a2312a77f25dcb526624/540ae/saml_sso_configurations.png 885w,/static/7c7bc03080f8a2312a77f25dcb526624/2561a/saml_sso_configurations.png 1180w,/static/7c7bc03080f8a2312a77f25dcb526624/3643c/saml_sso_configurations.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;And select &lt;em class=&quot;css-0&quot;&gt;Register&lt;/em&gt; to register your SAML SSO configurations and the management console will prompt you to the previous configuration screen. Leave other configurations as it is and click on &lt;em class=&quot;css-0&quot;&gt;Update&lt;/em&gt;.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;Expand Local &amp;amp; Outbound Authentication Configuration and select Default as the Authentication Type and enable Use user store domain in roles configuration.&lt;/p&gt;&lt;/blockquote&gt;&lt;h3 id=&quot;Express-Application-1&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Express-Application-1&quot; aria-label=&quot;Express Application 1 permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Express Application&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;After implementing the express application, create a &lt;code class=&quot;css-0&quot;&gt;.env&lt;/code&gt; file in the root path and enter the following properties.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;Change the &lt;code class=&quot;css-0&quot;&gt;SAML_ENTRYPOINT&lt;/code&gt; and &lt;code class=&quot;css-0&quot;&gt;SAML_LOGOUTURL&lt;/code&gt; properties if the IP-address and ports are different from default configurations&lt;/p&gt;&lt;/blockquote&gt;&lt;pre class=&quot;prism-code language-env&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;SESSION_SECRET=&amp;quot;a well secured secret&amp;quot;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;SAML_ENTRYPOINT=&amp;quot;https://localhost:9443/samlsso&amp;quot;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;SAML_ISSUER=&amp;quot;SampleExpressApp&amp;quot;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;SAML_PROTOCOL=&amp;quot;http://&amp;quot;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;SAML_LOGOUTURL=&amp;quot;https://localhost:9443/samlsso&amp;quot;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;WSO2_ROLE_CLAIM=&amp;quot;http://wso2.org/claims/role&amp;quot;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;WSO2_EMAIL_CLAIM=&amp;quot;http://wso2.org/claims/emailaddress&amp;quot;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;h2 id=&quot;Certificates-and-Signing&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Certificates-and-Signing&quot; aria-label=&quot;Certificates and Signing permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Certificates and Signing&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;To validate both authentication request and logout requests, we need to add relevant application certificates and private keys in both Identity Server and in our express application.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;For this demo, we will be using the default wso2carbon key-store to generate application certificates and private keys. The wso2carbon key-store can be found inside &amp;lt;IS_HOME&amp;gt;/repository/resources/security directory&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;To export the certificate from the key-store, execute the following command from the &lt;code class=&quot;css-0&quot;&gt;security&lt;/code&gt; folder&lt;/p&gt;&lt;pre class=&quot;prism-code language-bash&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;keytool -export -keystore wso2carbon.jks -alias wso2carbon -file wso2carbon.crt&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;The above-generated certificate will be in binary format. Use the following command to convert the above binary encoded certificate to PEM encoded certificate&lt;/p&gt;&lt;pre class=&quot;prism-code language-bash&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;openssl x509 -inform der -in wso2carbon.crt -out wso2carbon.pem&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;Copy the generated &lt;code class=&quot;css-0&quot;&gt;wso2carbon.pem&lt;/code&gt; file to another easily accessible folder&lt;/p&gt;&lt;/blockquote&gt;&lt;h3 id=&quot;Configure-WSO2-Identity-Server&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Configure-WSO2-Identity-Server&quot; aria-label=&quot;Configure WSO2 Identity Server permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Configure: WSO2 Identity Server&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Open the Identity Server and navigate to &lt;em class=&quot;css-0&quot;&gt;Main (Tab) -&amp;gt; Identity (Section) -&amp;gt; Service Providers (Sub-section)&lt;/em&gt; -&amp;gt; select &lt;em class=&quot;css-0&quot;&gt;List&lt;/em&gt; and &lt;em class=&quot;css-0&quot;&gt;Edit (our service provider)&lt;/em&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;In the Basic Information panel, select the &lt;code class=&quot;css-0&quot;&gt;Choose File&lt;/code&gt; button which is associated with the &lt;em class=&quot;css-0&quot;&gt;Application Certificate&lt;/em&gt; field. Choose the above-created &lt;code class=&quot;css-0&quot;&gt;wso2carbon.pem&lt;/code&gt; file and open.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/3bab67100dad78a7e78d1585892c6b0d/3643c/application_certificate_configurations.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:45.27027027027027%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAIAAAC9o5sfAAAACXBIWXMAAAsTAAALEwEAmpwYAAABAklEQVQoz42Q4W6DIBSFef+n6v7Udkn7AHNmrtoWEBVBkWrVHXC2iemSfbkCAvce7iF1XReltPZ2H4b7Qr+KV+A+kVKeTklVKVlVeZ5jdCj1OyqltK6bZhW6aay1ZPCC0zRprRjnpafr+8HjFPzpS0jXdW3bjuMoZRlFUZqmlFLGGF4B9bmL4Q8I0ubacfz1ttns97v3hTAMsT8urGRd8uOnLESSXigTPCvQrjEGLrr6Xhjy6ODhFt4LyWdy2xq4BXOUM8igFzTv/dKzZ1jgAgz2ViqUIJji+JvzDLtCiCxzAXKPeJIvFPiQDgFyvdLtNgiC3eFw/Ag/z+fLfyJJUrj6A5rb/wZrrgblAAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Application certificate configurations&quot; title=&quot;Application certificate configurations&quot; src=&quot;/static/3bab67100dad78a7e78d1585892c6b0d/6d370/application_certificate_configurations.png&quot; srcSet=&quot;/static/3bab67100dad78a7e78d1585892c6b0d/c5084/application_certificate_configurations.png 148w,/static/3bab67100dad78a7e78d1585892c6b0d/60cc9/application_certificate_configurations.png 295w,/static/3bab67100dad78a7e78d1585892c6b0d/6d370/application_certificate_configurations.png 590w,/static/3bab67100dad78a7e78d1585892c6b0d/540ae/application_certificate_configurations.png 885w,/static/3bab67100dad78a7e78d1585892c6b0d/2561a/application_certificate_configurations.png 1180w,/static/3bab67100dad78a7e78d1585892c6b0d/3643c/application_certificate_configurations.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Next, expand the &lt;em class=&quot;css-0&quot;&gt;Inbound Authentication Configuration (accordion)&lt;/em&gt; and click on &lt;em class=&quot;css-0&quot;&gt;SAML2 Web SSO Configuration&lt;/em&gt; and select Edit to update our SAML web SSO configurations. Enable signature validation in authentication requests and logout requests.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/1b46f4ac6e490cc3a0843f6be12f37a0/3643c/enable_signature_validation.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:45.27027027027027%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAIAAAC9o5sfAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA10lEQVQoz4VQ0W6EIBD0//+vTZo+3KnFnAuFyCq6KNA5vTR96HkTlsAys0Om8sxa6xCCiCwizDxNk8Q4LwuuR/Pfta5rhZp35JxLKTiM4wh9BGTZtq08AfgV2NZaOBw8IlJKdV2HEXhPKZ2JQWrb1jlXduemaS47oMfHy3M8nKnvjaYE55ypv9XXa13XmOK9fyEerL+8v6nPD6bbZPRsTTCU5oDnkz8/xDEmZ93IDGeswTmtCZkjyHKKuxgle+5Hyxj9pRT2e2AvxRLTtx3Y+78j8mnOv5wfUoENQgqHx5AAAAAASUVORK5CYII=&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Enable signature validation&quot; title=&quot;Enable signature validation&quot; src=&quot;/static/1b46f4ac6e490cc3a0843f6be12f37a0/6d370/enable_signature_validation.png&quot; srcSet=&quot;/static/1b46f4ac6e490cc3a0843f6be12f37a0/c5084/enable_signature_validation.png 148w,/static/1b46f4ac6e490cc3a0843f6be12f37a0/60cc9/enable_signature_validation.png 295w,/static/1b46f4ac6e490cc3a0843f6be12f37a0/6d370/enable_signature_validation.png 590w,/static/1b46f4ac6e490cc3a0843f6be12f37a0/540ae/enable_signature_validation.png 885w,/static/1b46f4ac6e490cc3a0843f6be12f37a0/2561a/enable_signature_validation.png 1180w,/static/1b46f4ac6e490cc3a0843f6be12f37a0/3643c/enable_signature_validation.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Click &lt;em class=&quot;css-0&quot;&gt;Update&lt;/em&gt; and &lt;em class=&quot;css-0&quot;&gt;Update&lt;/em&gt; again to update the service provider configurations.&lt;/p&gt;&lt;h3 id=&quot;Configure-Passport--Express-App&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Configure-Passport--Express-App&quot; aria-label=&quot;Configure Passport  Express App permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Configure: Passport &amp;amp; Express App&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Generate a private certificate for our express application. Execute the following commands to generate a private certificate from the default wso2carbon key-store.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;Use &lt;code class=&quot;css-0&quot;&gt;wso2carbon&lt;/code&gt; as the password for any password-prompts.&lt;/p&gt;&lt;/blockquote&gt;&lt;pre class=&quot;prism-code language-bash&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;keytool -importkeystore -srckeystore wso2carbon.jks -destkeystore wso2carbon.p12 -deststoretype PKCS12 -srcalias wso2carbon -deststorepass wso2carbon -destkeypass wso2carbon&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;-------------&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;openssl pkcs12 -in wso2carbon.p12  -nodes -nocerts -out private-key.pem&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;Create folder named &lt;code class=&quot;css-0&quot;&gt;security&lt;/code&gt; in the root path of our express application and place both the generated &lt;code class=&quot;css-0&quot;&gt;private-key.pem&lt;/code&gt; and &lt;code class=&quot;css-0&quot;&gt;wso2carbon.pem&lt;/code&gt; inside.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;After placing the certificates, update the passport SAML strategy as follows&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;div id=&quot;gist97210327&quot; class=&quot;gist css-0&quot;&gt;
    &lt;div class=&quot;gist-file css-0&quot;&gt;
      &lt;div class=&quot;gist-data css-0&quot;&gt;
        &lt;div class=&quot;js-gist-file-update-container js-task-list-container file-box css-0&quot;&gt;
  &lt;div id=&quot;file-strategy-js&quot; class=&quot;file my-2 css-0&quot;&gt;
    
  &lt;div itemProp=&quot;text&quot; class=&quot;Box-body p-0 blob-wrapper data type-javascript css-0&quot;&gt;

      
&lt;div class=&quot;js-check-bidi js-blob-code-container blob-code-content css-0&quot;&gt;

  &lt;template class=&quot;js-file-alert-template&quot;&gt;&lt;/template&gt;&lt;template class=&quot;js-line-alert-template&quot;&gt;&lt;/template&gt;

  &lt;table class=&quot;highlight tab-size js-file-line-container js-code-nav-container js-tagsearch-file css-0&quot; data-tab-size=&quot;8&quot; data-paste-markdown-skip=&quot;&quot; data-tagsearch-lang=&quot;JavaScript&quot; data-tagsearch-path=&quot;strategy.js&quot;&gt;
        &lt;tbody&gt;&lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-strategy-js-L1&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;1&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-strategy-js-LC1&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;passport&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;require&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&amp;#x27;passport&amp;#x27;&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-strategy-js-L2&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;2&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-strategy-js-LC2&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;saml&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;require&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&amp;#x27;passport-saml&amp;#x27;&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;Strategy&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-strategy-js-L3&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;3&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-strategy-js-LC3&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-strategy-js-L4&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;4&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-strategy-js-LC4&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;// saml strategy for passport&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-strategy-js-L5&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;5&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-strategy-js-LC5&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;strategy&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;saml&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-strategy-js-L6&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;6&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-strategy-js-LC6&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&lt;span class=&quot;pl-kos&quot;&gt;{&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-strategy-js-L7&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;7&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-strategy-js-LC7&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&lt;span class=&quot;pl-c1&quot;&gt;entryPoint&lt;/span&gt;: &lt;span class=&quot;pl-c1&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;pl-ent&quot;&gt;provide&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;SAML&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;entry&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;point&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;url&lt;/span&gt; : &lt;span class=&quot;pl-s1&quot;&gt;https&lt;/span&gt;:&lt;span class=&quot;pl-c&quot;&gt;//localhost:9443/samlsso&amp;gt;,&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-strategy-js-L8&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;8&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-strategy-js-LC8&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&lt;span class=&quot;pl-s1&quot;&gt;issuer&lt;/span&gt;: &lt;span class=&quot;pl-c1&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;pl-s1&quot;&gt;provide&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;SAML&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;issuer&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;name&lt;/span&gt; : &lt;span class=&quot;pl-v&quot;&gt;SampleExpressApp&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;&amp;gt;&lt;/span&gt;,&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-strategy-js-L9&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;9&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-strategy-js-LC9&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		protocol: &lt;span class=&quot;pl-c1&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;pl-s1&quot;&gt;provide&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;the&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;protocol&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;used&lt;/span&gt; : &lt;span class=&quot;pl-s1&quot;&gt;http&lt;/span&gt;:&lt;span class=&quot;pl-c&quot;&gt;//&amp;gt;,&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-strategy-js-L10&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;10&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-strategy-js-LC10&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&lt;span class=&quot;pl-s1&quot;&gt;logoutUrl&lt;/span&gt;: &lt;span class=&quot;pl-c1&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;pl-s1&quot;&gt;provide&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;the&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;logout&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;url&lt;/span&gt; : &lt;span class=&quot;pl-s1&quot;&gt;https&lt;/span&gt;:&lt;span class=&quot;pl-c&quot;&gt;//localhost:9443/samlsso&amp;gt;,&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-strategy-js-L11&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;11&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-strategy-js-LC11&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    		&lt;span class=&quot;pl-s1&quot;&gt;privateCert&lt;/span&gt;: &lt;span class=&quot;pl-s1&quot;&gt;fs&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;readFileSync&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&amp;#x27;./security/private-key.pem&amp;#x27;&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;pl-s&quot;&gt;&amp;#x27;utf-8&amp;#x27;&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;,&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-strategy-js-L12&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;12&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-strategy-js-LC12&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&lt;span class=&quot;pl-c1&quot;&gt;cert&lt;/span&gt;: &lt;span class=&quot;pl-s1&quot;&gt;fs&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-en&quot;&gt;readFileSync&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&amp;#x27;./security/wso2carbon.pem&amp;#x27;&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;pl-s&quot;&gt;&amp;#x27;utf8&amp;#x27;&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-strategy-js-L13&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;13&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-strategy-js-LC13&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&lt;span class=&quot;pl-kos&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;,&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-strategy-js-L14&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;14&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-strategy-js-LC14&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-s1&quot;&gt;profile&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;done&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;pl-kos&quot;&gt;{&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-strategy-js-L15&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;15&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-strategy-js-LC15&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;		&lt;span class=&quot;pl-c&quot;&gt;// your body implementation on success&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-strategy-js-L16&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;16&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-strategy-js-LC16&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;	&lt;span class=&quot;pl-kos&quot;&gt;}&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-strategy-js-L17&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;17&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-strategy-js-LC17&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-strategy-js-L18&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;18&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-strategy-js-LC18&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-strategy-js-L19&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;19&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-strategy-js-LC19&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;// register the strategy with passport&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-strategy-js-L20&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;20&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-strategy-js-LC20&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-s1&quot;&gt;passport&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-en&quot;&gt;use&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pl-s1&quot;&gt;strategy&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pl-kos&quot;&gt;;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
  &lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;


  &lt;/div&gt;

  &lt;/div&gt;&lt;/div&gt;

      &lt;/div&gt;
      &lt;div class=&quot;gist-meta css-0&quot;&gt;
        &lt;a href=&quot;https://gist.github.com/athiththan11/d5c4fdcd7adad232b6f7f018fbc76efd/raw/388921bbf390824c3d3fb776c0452b25db6eedf6/strategy.js&quot; style=&quot;css-float:right&quot; class=&quot;css-0&quot;&gt;view raw&lt;/a&gt;
        &lt;a href=&quot;https://gist.github.com/athiththan11/d5c4fdcd7adad232b6f7f018fbc76efd#file-strategy-js&quot; class=&quot;css-0&quot;&gt;
          strategy.js
        &lt;/a&gt;
        hosted with ❤ by &lt;a href=&quot;https://github.com&quot; class=&quot;css-0&quot;&gt;GitHub&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;&lt;/div&gt;&lt;/p&gt;&lt;h2 id=&quot;Run--Test&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Run--Test&quot; aria-label=&quot;Run  Test permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Run &amp;amp; Test&lt;/h2&gt;&lt;h3 id=&quot;Run&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Run&quot; aria-label=&quot;Run permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Run&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Run the express application by executing the given command from the root folder&lt;/p&gt;&lt;pre class=&quot;prism-code language-bash&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;npm&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; start&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;Also, start your WSO2 Identity Server instance using the following command from your &lt;code class=&quot;css-0&quot;&gt;&amp;lt;IS_HOME&amp;gt;/bin&lt;/code&gt; directory&lt;/p&gt;&lt;pre class=&quot;prism-code language-bash&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;sh wso2server.sh&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;h3 id=&quot;Test&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Test&quot; aria-label=&quot;Test permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Test&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Open your favorite browser and navigate to &lt;code class=&quot;css-0&quot;&gt;http://localhost:3000/app&lt;/code&gt;. The browser will redirect to the WSO2 Identity Server’s sign-in page to enter the login credentials.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;For this demo, you can use &lt;code class=&quot;css-0&quot;&gt;admin&lt;/code&gt; as both the username and password to sign in with the WSO2 Identity Server&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/7081a0e2a34cb5524e2d42ed074fc5f0/3643c/idp_login_page.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:52.02702702702703%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAIAAAA7N+mxAAAACXBIWXMAAAsTAAALEwEAmpwYAAABAElEQVQoz42QTUvDQBCG9z9ayCnJnyqoYKlSEIJ3QRCUJjloPViCl0ALIeihqJWk2d3Zz44JQjQL9WFn2MP7LDtDOAeOBSCEwNJSflT08rGYpOuTeHUar7CfJev3imolv0M9CP8NAK8bmhWbZfn5XG67syy3VUMB/mQ5gQH4pBLcaGV74LeGuGXGWFXX9W7XzSKkBPiXzDGrxZekhaCvnG2seLOmAZCHZZxEa50md9PJ+Cq6iKLZ+fQ4Te610t1eD8hKqSx7ub65jdOHxeJpPo/zPJdSDlwgzAX6uCTzsy1jjDNGTA/bS+sW1YIX64IEQRCGoe/72D3PG7UcDRi52APXSRQSFaVqNAAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;WSO2 Identity Server: Login Page for SAML&quot; title=&quot;WSO2 Identity Server: Login Page for SAML&quot; src=&quot;/static/7081a0e2a34cb5524e2d42ed074fc5f0/6d370/idp_login_page.png&quot; srcSet=&quot;/static/7081a0e2a34cb5524e2d42ed074fc5f0/c5084/idp_login_page.png 148w,/static/7081a0e2a34cb5524e2d42ed074fc5f0/60cc9/idp_login_page.png 295w,/static/7081a0e2a34cb5524e2d42ed074fc5f0/6d370/idp_login_page.png 590w,/static/7081a0e2a34cb5524e2d42ed074fc5f0/540ae/idp_login_page.png 885w,/static/7081a0e2a34cb5524e2d42ed074fc5f0/2561a/idp_login_page.png 1180w,/static/7081a0e2a34cb5524e2d42ed074fc5f0/3643c/idp_login_page.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;After presenting the login credentials, the Identity Server will prompt a user consent page to either approve or deny requested claims. Choose &lt;em class=&quot;css-0&quot;&gt;Select All&lt;/em&gt; and &lt;em class=&quot;css-0&quot;&gt;Approve&lt;/em&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/a63a2fbdfa5dea4a012d59f621c4f52f/3643c/idp_consent_page.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:52.02702702702703%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAIAAAA7N+mxAAAACXBIWXMAAAsTAAALEwEAmpwYAAABBklEQVQoz4WRzUrEMBSF+44OdNX2sRQXggtd+RQOiFhUFEWk03aKw1SHzgyk0+Te/DReWsH+iP04ySbn3JwQBwCBFqKUUinJAa8eV+e32WX4cXaTnczT03l6fJ1c3GUCkAxdHOhDjvf111MSvyzThyQJF3EYxfdJ+rraCIEDs4N9aJ5WqKpdjaVVhx8ZsNbQ4cDcC1N7rWRRYpTvPw8yL0mYM1wzLIHG4n9hgl7FKswLtithy6CoVCsh9XSYehvJDd9qvleCWcMbVbXBqdoAttZv2eY5WhpdAQqjoZXWo3spLEZUXHAO7RcK0dUQp+5gf6kbTeD4vh8Eged5tLuuO2s4GjH7i2+sbhjEoM23owAAAABJRU5ErkJggg==&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;WSO2 Identity Server: User Consent Page&quot; title=&quot;WSO2 Identity Server: User Consent Page&quot; src=&quot;/static/a63a2fbdfa5dea4a012d59f621c4f52f/6d370/idp_consent_page.png&quot; srcSet=&quot;/static/a63a2fbdfa5dea4a012d59f621c4f52f/c5084/idp_consent_page.png 148w,/static/a63a2fbdfa5dea4a012d59f621c4f52f/60cc9/idp_consent_page.png 295w,/static/a63a2fbdfa5dea4a012d59f621c4f52f/6d370/idp_consent_page.png 590w,/static/a63a2fbdfa5dea4a012d59f621c4f52f/540ae/idp_consent_page.png 885w,/static/a63a2fbdfa5dea4a012d59f621c4f52f/2561a/idp_consent_page.png 1180w,/static/a63a2fbdfa5dea4a012d59f621c4f52f/3643c/idp_consent_page.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;After successful authentication, the browser will redirect and displays you the logged-in page of our express application.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;span class=&quot;gatsby-resp-image-wrapper&quot; style=&quot;position:relative;display:block;margin-left:auto;margin-right:auto;max-width:590px&quot;&gt;
      &lt;a class=&quot;gatsby-resp-image-link css-0&quot; href=&quot;/static/e2ea095155260cc50ee81c27357968eb/3643c/sp_logged_page.png&quot; style=&quot;display:block&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;
    &lt;span class=&quot;gatsby-resp-image-background-image&quot; style=&quot;padding-bottom:23.64864864864865%;position:relative;bottom:0;left:0;background-image:url(&amp;#x27;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAIAAADKYVtkAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAVElEQVQY06WL2wqAIBAF/f8fVRNcfcmzrteCCAIhajgM52VUzpkohBgTAOYEnt6BdP7Dq4FVvyAiY4z33trNOae1nq619jV3XEoRkYdba6/iD/yKB37bJycLH3x5AAAAAElFTkSuQmCC&amp;#x27;);background-size:cover;display:block&quot;&gt;&lt;/span&gt;
  &lt;img class=&quot;gatsby-resp-image-image css-0&quot; alt=&quot;Successful log-in&quot; title=&quot;Successful log-in&quot; src=&quot;/static/e2ea095155260cc50ee81c27357968eb/6d370/sp_logged_page.png&quot; srcSet=&quot;/static/e2ea095155260cc50ee81c27357968eb/c5084/sp_logged_page.png 148w,/static/e2ea095155260cc50ee81c27357968eb/60cc9/sp_logged_page.png 295w,/static/e2ea095155260cc50ee81c27357968eb/6d370/sp_logged_page.png 590w,/static/e2ea095155260cc50ee81c27357968eb/540ae/sp_logged_page.png 885w,/static/e2ea095155260cc50ee81c27357968eb/2561a/sp_logged_page.png 1180w,/static/e2ea095155260cc50ee81c27357968eb/3643c/sp_logged_page.png 1400w&quot; sizes=&quot;(max-width: 590px) 100vw, 590px&quot; style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0&quot; loading=&quot;lazy&quot;/&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Navigate to &lt;code class=&quot;css-0&quot;&gt;http://localhost:3000/app/logout&lt;/code&gt; to log-out from the SAML SSO session.&lt;/p&gt;&lt;h3 id=&quot;GitHub&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#GitHub&quot; aria-label=&quot;GitHub permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;GitHub&lt;/h3&gt;&lt;div title=&quot;Passport SAML WSO2&quot; class=&quot;css-0&quot;&gt;&lt;/div&gt;</content:encoded></item><item><title><![CDATA[Custom Class Mediators to Convert Payloads]]></title><link>https://stackcheats.github.io/custom-class-mediators-to-convert-payloads/content/</link><guid isPermaLink="false">https://stackcheats.github.io/custom-class-mediators-to-convert-payloads/content/</guid><pubDate>Wed, 17 Jul 2019 00:00:00 GMT</pubDate><content:encoded>&lt;style data-emotion-css=&quot;sa2dbt&quot;&gt;body{color:text;background-color:var(--theme-ui-colors-background,#fff);}&lt;/style&gt;&lt;style data-emotion-css=&quot;0&quot;&gt;&lt;/style&gt;&lt;h2 id=&quot;Intro&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Intro&quot; aria-label=&quot;Intro permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Intro&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;Class mediators provide an extended platform to develop user-specific implementations and custom mediation logic in the form of Java classes. In this sheet, we will be developing a custom class mediator to read, manipulate and convert (change) a simple payload to meet our requirements.&lt;/p&gt;&lt;p class=&quot;quote text-secondary css-0&quot;&gt;Class mediators are designed to use on user-specific custom implementations when there are no other built-in mediators to solve the requirement&lt;/p&gt;&lt;h3 id=&quot;Requirement&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Requirement&quot; aria-label=&quot;Requirement permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Requirement&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;The requirement is to develop a simple custom class mediator to read and change the value of the &lt;code class=&quot;css-0&quot;&gt;name&lt;/code&gt; attribute of a given payload from “medium” to “Athiththan”.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;The actual payload and the expected converted (changed) payload formats are given below.&lt;/p&gt;&lt;pre class=&quot;prism-code language-json&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;-------------------------------------&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;// request payload || original&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;post&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;WSO2 Class Mediator: Convert Payload&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;dev&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;name&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;medium&amp;quot;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;-------------------------------------&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;// mediated payload || tconverted&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;post&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;WSO2 Class Mediator: Convert Payload&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;dev&amp;quot;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;name&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;Athiththan&amp;quot;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;-------------------------------------&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;h2 id=&quot;Configure&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Configure&quot; aria-label=&quot;Configure permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Configure&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;To fabricate our custom class mediator or to generate a maven project, we can follow either&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;using the given &lt;code class=&quot;css-0&quot;&gt;pom.xml&lt;/code&gt; file to generate a maven project&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;using a custom-developed maven-archetype to generate a maven project&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;Following sections presents the steps on using given &lt;code class=&quot;css-0&quot;&gt;pom.xml&lt;/code&gt; and using custom developed-archetype to generate maven projects for our custom implementation.&lt;/p&gt;&lt;h3 id=&quot;pomxml&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#pomxml&quot; aria-label=&quot;pomxml permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;pom.xml&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Create a maven quick-start project and replace the dependencies with the following&lt;/p&gt;&lt;pre class=&quot;prism-code language-xml&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;&amp;lt;!-- change the packaging to bundle (from jar) to support OSGi --&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;packaging&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;jar&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;packaging&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;dependencies&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;&amp;lt;!-- apache synapse and related dependencies --&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;dependency&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;groupId&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;org.apache.synapse&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;groupId&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;artifactId&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;synapse-core&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;artifactId&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;version&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;2.1.7-wso2v60&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;version&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;dependency&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;dependency&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;groupId&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;org.apache.axis2.wso2&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;groupId&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;&amp;lt;artifactId&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;axis2&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;artifactId&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;&amp;lt;version&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;1.6.1.wso2v20&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;version&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;dependency&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;dependency&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;groupId&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;commons-logging&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;groupId&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;artifactId&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;commons-logging&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;artifactId&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;&amp;lt;version&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;1.1.1&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;version&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;dependency&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;dependency&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;groupId&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;junit&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;groupId&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;artifactId&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;junit&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;artifactId&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;version&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;4.11&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;version&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;scope&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;test&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;scope&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;dependency&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;dependencies&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;repositories&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;repository&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;wso2-nexus&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;&amp;lt;url&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;http://maven.wso2.org/nexus/content/groups/wso2-public/&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;releases&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;enabled&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;enabled&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;updatePolicy&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;daily&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;updatePolicy&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;&amp;lt;checksumPolicy&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;ignore&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;checksumPolicy&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;releases&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;repository&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;repositories&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;pluginRepositories&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;pluginRepository&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;wso2-nexus&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;&amp;lt;url&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;http://maven.wso2.org/nexus/content/groups/wso2-public/&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;releases&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;enabled&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;enabled&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;&amp;lt;updatePolicy&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;daily&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;updatePolicy&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;&amp;lt;checksumPolicy&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;ignore&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;checksumPolicy&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;releases&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;pluginRepository&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;pluginRepositories&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;plugins&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;plugin&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;groupId&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;org.apache.maven.plugins&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;groupId&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;&amp;lt;artifactId&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;maven-compiler-plugin&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;artifactId&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;&amp;lt;version&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;2.0&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;version&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;configuration&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;                &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;source&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;1.8&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;source&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;                &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;target&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;1.8&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;target&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;configuration&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;plugin&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;display:inline-block&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;&amp;lt;!-- build plugin for OSGi Bundle support --&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;plugin&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;groupId&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;org.apache.felix&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;groupId&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;artifactId&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;maven-bundle-plugin&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;artifactId&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;&amp;lt;version&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;2.3.4&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;version&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;extensions&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;extensions&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;configuration&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;                &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;instructions&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;                    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;Bundle-SymbolicName&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;                        ${groupId}&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;                    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;Bundle-SymbolicName&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;                    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;Bundle-Name&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;${groupId}&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;Bundle-Name&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;                    &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;&amp;lt;Export-Package&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;                        ${groupId}.*,&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;                    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;Export-Package&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;                    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;Import-Package&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;                        *; resolution:=optional&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;                    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;Import-Package&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;                &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;instructions&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;configuration&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;plugin&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;plugins&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;h3 id=&quot;Build-using-Maven-Archetype&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Build-using-Maven-Archetype&quot; aria-label=&quot;Build using Maven Archetype permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Build using Maven Archetype&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Clone or download the custom-developed &lt;a href=&quot;https://github.com/athiththan11/WSO2-Mediators-Maven-Archetype&quot; class=&quot;css-0&quot;&gt;maven-archetype&lt;/a&gt; and run the following command to build and install the archetype locally on your machine to generate boilerplates for our custom class mediators.&lt;/p&gt;&lt;div title=&quot;WSO2 Mediators Maven Archetype&quot; class=&quot;css-0&quot;&gt;&lt;/div&gt;&lt;pre class=&quot;prism-code language-bash&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;mvn clean &lt;/span&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;install&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;Then, execute the following command to generate a Maven project (boilerplate)&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;Change the command according to your required Group ID and Artifact ID arguments&lt;/p&gt;&lt;/blockquote&gt;&lt;pre class=&quot;prism-code language-bash&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;mvn archetype:generate  -DarchetypeGroupId&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;com.athiththan.wso2     \&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;                        -DarchetypeArtifactId&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;wso2-mediators       \&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;                        -DarchetypeVersion&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;1.0.0                   \&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;                        -DgroupId&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;Your Group ID&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;                  \&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;                        -DartifactId&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;Your Artifact ID&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;h2 id=&quot;Development&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Development&quot; aria-label=&quot;Development permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Development&lt;/h2&gt;&lt;h3 id=&quot;Class-Mediator&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Class-Mediator&quot; aria-label=&quot;Class Mediator permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Class Mediator&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;We can develop a custom Class mediator by implementing the &lt;code class=&quot;css-0&quot;&gt;Mediator&lt;/code&gt; class or by extending the &lt;code class=&quot;css-0&quot;&gt;AbstractMediator&lt;/code&gt; class. In this sheet, We will discuss developing a custom class mediator by extending the &lt;code class=&quot;css-0&quot;&gt;org.apache.synapse.mediators.AbstractMediator&lt;/code&gt; class.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;The custom mediation logic has to defined inside the &lt;code class=&quot;css-0&quot;&gt;mediate()&lt;/code&gt; method to get execute&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;A simple class mediator implementation to convert the name attribute from &lt;code class=&quot;css-0&quot;&gt;medium&lt;/code&gt; to &lt;code class=&quot;css-0&quot;&gt;Athiththan&lt;/code&gt; is presented below.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;div id=&quot;gist96097214&quot; class=&quot;gist css-0&quot;&gt;
    &lt;div class=&quot;gist-file css-0&quot;&gt;
      &lt;div class=&quot;gist-data css-0&quot;&gt;
        &lt;div class=&quot;js-gist-file-update-container js-task-list-container file-box css-0&quot;&gt;
  &lt;div id=&quot;file-custommediator-java&quot; class=&quot;file my-2 css-0&quot;&gt;
    
  &lt;div itemProp=&quot;text&quot; class=&quot;Box-body p-0 blob-wrapper data type-java css-0&quot;&gt;

      
&lt;div class=&quot;js-check-bidi js-blob-code-container blob-code-content css-0&quot;&gt;

  &lt;template class=&quot;js-file-alert-template&quot;&gt;&lt;/template&gt;&lt;template class=&quot;js-line-alert-template&quot;&gt;&lt;/template&gt;

  &lt;table class=&quot;highlight tab-size js-file-line-container js-code-nav-container js-tagsearch-file css-0&quot; data-tab-size=&quot;8&quot; data-paste-markdown-skip=&quot;&quot; data-tagsearch-lang=&quot;Java&quot; data-tagsearch-path=&quot;CustomMediator.java&quot;&gt;
        &lt;tbody&gt;&lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-custommediator-java-L1&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;1&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-custommediator-java-LC1&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;package&lt;/span&gt; &amp;lt;&lt;span class=&quot;pl-s1&quot;&gt;your&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;package&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;namespace&lt;/span&gt;&amp;gt;;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-custommediator-java-L2&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;2&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-custommediator-java-LC2&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-custommediator-java-L3&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;3&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-custommediator-java-LC3&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;org&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;apache&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;synapse&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;MessageContext&lt;/span&gt;;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-custommediator-java-L4&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;4&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-custommediator-java-LC4&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;org&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;apache&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;synapse&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;commons&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;json&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;JsonUtil&lt;/span&gt;;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-custommediator-java-L5&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;5&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-custommediator-java-LC5&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;org&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;apache&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;synapse&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;core&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;axis2&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;Axis2MessageContext&lt;/span&gt;;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-custommediator-java-L6&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;6&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-custommediator-java-LC6&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;org&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;apache&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;synapse&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;mediators&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;AbstractMediator&lt;/span&gt;;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-custommediator-java-L7&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;7&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-custommediator-java-LC7&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;org&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;json&lt;/span&gt;.&lt;span class=&quot;pl-c1&quot;&gt;JSONObject&lt;/span&gt;;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-custommediator-java-L8&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;8&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-custommediator-java-LC8&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-custommediator-java-L9&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;9&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-custommediator-java-LC9&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;CustomMediator&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;AbstractMediator&lt;/span&gt; {&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-custommediator-java-L10&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;10&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-custommediator-java-LC10&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-custommediator-java-L11&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;11&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-custommediator-java-LC11&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &lt;span class=&quot;pl-c1&quot;&gt;@&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;Override&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-custommediator-java-L12&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;12&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-custommediator-java-LC12&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &lt;span class=&quot;pl-k&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;boolean&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;mediate&lt;/span&gt;(&lt;span class=&quot;pl-smi&quot;&gt;MessageContext&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;synCtx&lt;/span&gt;) {&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-custommediator-java-L13&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;13&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-custommediator-java-LC13&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-custommediator-java-L14&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;14&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-custommediator-java-LC14&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;        &lt;span class=&quot;pl-smi&quot;&gt;org&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;apache&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;axis2&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;context&lt;/span&gt;.&lt;span class=&quot;pl-smi&quot;&gt;MessageContext&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;axis2MessageContext&lt;/span&gt; = ((&lt;span class=&quot;pl-smi&quot;&gt;Axis2MessageContext&lt;/span&gt;) &lt;span class=&quot;pl-s1&quot;&gt;synCtx&lt;/span&gt;)&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-custommediator-java-L15&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;15&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-custommediator-java-LC15&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;                .&lt;span class=&quot;pl-en&quot;&gt;getAxis2MessageContext&lt;/span&gt;();&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-custommediator-java-L16&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;16&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-custommediator-java-LC16&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-custommediator-java-L17&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;17&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-custommediator-java-LC17&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;        &lt;span class=&quot;pl-k&quot;&gt;try&lt;/span&gt; {&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-custommediator-java-L18&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;18&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-custommediator-java-LC18&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;            &lt;span class=&quot;pl-smi&quot;&gt;JSONObject&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;jsonObject&lt;/span&gt; = &lt;span class=&quot;pl-k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;JSONObject&lt;/span&gt;(&lt;span class=&quot;pl-s1&quot;&gt;JsonUtil&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;jsonPayloadToString&lt;/span&gt;(&lt;span class=&quot;pl-s1&quot;&gt;axis2MessageContext&lt;/span&gt;));&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-custommediator-java-L19&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;19&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-custommediator-java-LC19&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;            &lt;span class=&quot;pl-k&quot;&gt;if&lt;/span&gt; (&lt;span class=&quot;pl-s1&quot;&gt;jsonObject&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;has&lt;/span&gt;(&lt;span class=&quot;pl-s&quot;&gt;&amp;quot;dev&amp;quot;&lt;/span&gt;) &amp;amp;&amp;amp; &lt;span class=&quot;pl-s1&quot;&gt;jsonObject&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;getJSONObject&lt;/span&gt;(&lt;span class=&quot;pl-s&quot;&gt;&amp;quot;dev&amp;quot;&lt;/span&gt;).&lt;span class=&quot;pl-en&quot;&gt;has&lt;/span&gt;(&lt;span class=&quot;pl-s&quot;&gt;&amp;quot;name&amp;quot;&lt;/span&gt;)&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-custommediator-java-L20&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;20&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-custommediator-java-LC20&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;                    &amp;amp;&amp;amp; &lt;span class=&quot;pl-s&quot;&gt;&amp;quot;medium&amp;quot;&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;equals&lt;/span&gt;((&lt;span class=&quot;pl-smi&quot;&gt;String&lt;/span&gt;) &lt;span class=&quot;pl-s1&quot;&gt;jsonObject&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;getJSONObject&lt;/span&gt;(&lt;span class=&quot;pl-s&quot;&gt;&amp;quot;dev&amp;quot;&lt;/span&gt;).&lt;span class=&quot;pl-en&quot;&gt;get&lt;/span&gt;(&lt;span class=&quot;pl-s&quot;&gt;&amp;quot;name&amp;quot;&lt;/span&gt;))) {&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-custommediator-java-L21&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;21&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-custommediator-java-LC21&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;                &lt;span class=&quot;pl-s1&quot;&gt;jsonObject&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;getJSONObject&lt;/span&gt;(&lt;span class=&quot;pl-s&quot;&gt;&amp;quot;dev&amp;quot;&lt;/span&gt;).&lt;span class=&quot;pl-en&quot;&gt;put&lt;/span&gt;(&lt;span class=&quot;pl-s&quot;&gt;&amp;quot;name&amp;quot;&lt;/span&gt;, &lt;span class=&quot;pl-s&quot;&gt;&amp;quot;Athiththan&amp;quot;&lt;/span&gt;);&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-custommediator-java-L22&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;22&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-custommediator-java-LC22&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;            }&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-custommediator-java-L23&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;23&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-custommediator-java-LC23&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-custommediator-java-L24&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;24&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-custommediator-java-LC24&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;            &lt;span class=&quot;pl-s1&quot;&gt;JsonUtil&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;newJsonPayload&lt;/span&gt;(&lt;span class=&quot;pl-s1&quot;&gt;axis2MessageContext&lt;/span&gt;, &lt;span class=&quot;pl-s1&quot;&gt;jsonObject&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;toString&lt;/span&gt;(), &lt;span class=&quot;pl-c1&quot;&gt;true&lt;/span&gt;, &lt;span class=&quot;pl-c1&quot;&gt;true&lt;/span&gt;);&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-custommediator-java-L25&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;25&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-custommediator-java-LC25&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-custommediator-java-L26&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;26&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-custommediator-java-LC26&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;        } &lt;span class=&quot;pl-k&quot;&gt;catch&lt;/span&gt; (&lt;span class=&quot;pl-smi&quot;&gt;JSONException&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;e&lt;/span&gt;) {&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-custommediator-java-L27&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;27&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-custommediator-java-LC27&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;            &lt;span class=&quot;pl-s1&quot;&gt;e&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;printStackTrace&lt;/span&gt;();&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-custommediator-java-L28&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;28&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-custommediator-java-LC28&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;        }&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-custommediator-java-L29&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;29&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-custommediator-java-LC29&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-custommediator-java-L30&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;30&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-custommediator-java-LC30&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;        &lt;span class=&quot;pl-k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;true&lt;/span&gt;;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-custommediator-java-L31&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;31&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-custommediator-java-LC31&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    }&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-custommediator-java-L32&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;32&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-custommediator-java-LC32&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;}&lt;/td&gt;
        &lt;/tr&gt;
  &lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;


  &lt;/div&gt;

  &lt;/div&gt;&lt;/div&gt;

      &lt;/div&gt;
      &lt;div class=&quot;gist-meta css-0&quot;&gt;
        &lt;a href=&quot;https://gist.github.com/athiththan11/71e8c5baa662c34b46a008ea824332a9/raw/54d5ffe949369ad2efe71207927293260d059d09/CustomMediator.java&quot; style=&quot;css-float:right&quot; class=&quot;css-0&quot;&gt;view raw&lt;/a&gt;
        &lt;a href=&quot;https://gist.github.com/athiththan11/71e8c5baa662c34b46a008ea824332a9#file-custommediator-java&quot; class=&quot;css-0&quot;&gt;
          CustomMediator.java
        &lt;/a&gt;
        hosted with ❤ by &lt;a href=&quot;https://github.com&quot; class=&quot;css-0&quot;&gt;GitHub&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;&lt;/div&gt;&lt;/p&gt;&lt;h2 id=&quot;Build-Run--Test&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Build-Run--Test&quot; aria-label=&quot;Build Run  Test permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Build, Run &amp;amp; Test&lt;/h2&gt;&lt;h3 id=&quot;Build&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Build&quot; aria-label=&quot;Build permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Build&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Execute the following command from our project root folder to build and package our custom mediator implementation.&lt;/p&gt;&lt;pre class=&quot;prism-code language-bash&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;mvn clean package&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;As a result, maven will package our implementation as a JAR (Java Archive) artifact, which can be found inside the &lt;code class=&quot;css-0&quot;&gt;/target&lt;/code&gt; folder.&lt;/p&gt;&lt;h3 id=&quot;Run--Test&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Run--Test&quot; aria-label=&quot;Run  Test permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Run &amp;amp; Test&lt;/h3&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;For demonstration purposes&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;I will be mocking and using the &lt;code class=&quot;css-0&quot;&gt;Token_Endpoint&lt;/code&gt; of WSO2 API Manager (2.6.0) and will be referring to the installation path of WSO2 API-M as &lt;code class=&quot;css-0&quot;&gt;&amp;lt;API-M_HOME&amp;gt;&lt;/code&gt; and our JAR artifact as &lt;code class=&quot;css-0&quot;&gt;CM-IMPL-JAR&lt;/code&gt;.&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;Copy the &lt;code class=&quot;css-0&quot;&gt;CM-IMPL_JAR&lt;/code&gt; from the &lt;code class=&quot;css-0&quot;&gt;/target&lt;/code&gt; folder and paste it inside the &lt;code class=&quot;css-0&quot;&gt;&amp;lt;API-M_HOME&amp;gt;/repository/components/lib/&lt;/code&gt; directory&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;Navigate to &lt;code class=&quot;css-0&quot;&gt;&amp;lt;API-M_HOME&amp;gt;/repository/deployment/server/synapse-configs/default/api/&lt;/code&gt; and open and edit the inSequence tag of the &lt;code class=&quot;css-0&quot;&gt;_TokenAPI_.xml&lt;/code&gt; file as follows&lt;/li&gt;&lt;/ul&gt;&lt;pre class=&quot;prism-code language-xml&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;inSequence&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;&amp;lt;!-- &amp;lt;property name=&amp;quot;uri.var.portnum&amp;quot; expression=&amp;quot;get-property(&amp;#x27;keyManager.port&amp;#x27;)&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;    &amp;lt;property name=&amp;quot;uri.var.hostname&amp;quot; expression=&amp;quot;get-property(&amp;#x27;keyManager.hostname&amp;#x27;)&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;    &amp;lt;send&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;        &amp;lt;endpoint&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;            &amp;lt;http uri-template=&amp;quot;https://{uri.var.hostname}:{uri.var.portnum}/oauth2/token&amp;quot;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;                &amp;lt;timeout&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;                    &amp;lt;duration&amp;gt;60000&amp;lt;/duration&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;                    &amp;lt;responseAction&amp;gt;fault&amp;lt;/responseAction&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;                &amp;lt;/timeout&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;            &amp;lt;/http&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;        &amp;lt;/endpoint&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;    &amp;lt;/send&amp;gt; --&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token comment&quot; style=&quot;color:rgb(106, 153, 85)&quot;&gt;&amp;lt;!-- convert dev.name to athiththan --&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag attr-name&quot; style=&quot;color:rgb(156, 220, 254)&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag attr-value&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;lt;YOUR PACKAGE NAME&amp;gt;.&amp;lt;CLASS NAME&amp;gt;&lt;/span&gt;&lt;span class=&quot;token tag attr-value punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;respond&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;token tag&quot; style=&quot;color:rgb(78, 201, 176)&quot;&gt;inSequence&lt;/span&gt;&lt;span class=&quot;token tag punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;Replace &lt;code class=&quot;css-0&quot;&gt;&amp;lt;YOUR PACKAGE NAME&amp;gt;.&amp;lt;CLASS NAME&amp;gt;&lt;/code&gt; with the actual package name and your Java class name.&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;For example …&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;If you have implemented your class mediator implementation in a Java class named &lt;code class=&quot;css-0&quot;&gt;CustomClassMediator&lt;/code&gt; inside the &lt;code class=&quot;css-0&quot;&gt;com.sample.demos package&lt;/code&gt;, then it comes as &lt;code class=&quot;css-0&quot;&gt;com.sample.demos.CustomClassMediator&lt;/code&gt; resulting &lt;code class=&quot;css-0&quot;&gt;&amp;lt;class name=&amp;quot;com.sample.demos.CustomClassMediator&amp;quot; /&amp;gt;&lt;/code&gt;.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;After pasting our &lt;code class=&quot;css-0&quot;&gt;CM-IMPL_JAR&lt;/code&gt; and editing the &lt;code class=&quot;css-0&quot;&gt;_TokenAPI_.xml&lt;/code&gt; file, start the WSO2 API Manager instance using the following command.&lt;/p&gt;&lt;pre class=&quot;prism-code language-bash&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;sh wso2server.sh&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;Use the following cURL command to execute the Token Endpoint of the WSO2 API Manager instance by replacing the &lt;code class=&quot;css-0&quot;&gt;&amp;lt;Your Host&amp;gt;&lt;/code&gt; tag with respective host value&lt;/p&gt;&lt;pre class=&quot;prism-code language-bash&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token function&quot; style=&quot;color:rgb(220, 220, 170)&quot;&gt;curl&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; -k --request POST \&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    -d &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;#x27;{&amp;quot;post&amp;quot;:&amp;quot;WSO2 Class Mediator: Convert Payload&amp;quot;,&amp;quot;dev&amp;quot;:{&amp;quot;name&amp;quot;:&amp;quot;medium&amp;quot;}}&amp;#x27;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; \&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    -H &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;Content-Type: application/json&amp;quot;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt; \&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    https://&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;YOUR HOST&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;:8243/token&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p class=&quot;css-0&quot;&gt;After successful execution, we can observe the response as follows&lt;/p&gt;&lt;pre class=&quot;prism-code language-json&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;post&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;WSO2 Class Mediator: Convert Payload&amp;quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;dev&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;&amp;quot;name&amp;quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;color:rgb(206, 145, 120)&quot;&gt;&amp;quot;Athiththan&amp;quot;&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;color:rgb(212, 212, 212)&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;h3 id=&quot;GitHub&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#GitHub&quot; aria-label=&quot;GitHub permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;GitHub&lt;/h3&gt;&lt;div title=&quot;Revamp Mediator&quot; class=&quot;css-0&quot;&gt;&lt;/div&gt;</content:encoded></item><item><title><![CDATA[Custom Event Handlers for Password Validation]]></title><link>https://stackcheats.github.io/custom-event-handlers-for-password-validation/content/</link><guid isPermaLink="false">https://stackcheats.github.io/custom-event-handlers-for-password-validation/content/</guid><pubDate>Sat, 15 Jun 2019 00:00:00 GMT</pubDate><content:encoded>&lt;style data-emotion-css=&quot;sa2dbt&quot;&gt;body{color:text;background-color:var(--theme-ui-colors-background,#fff);}&lt;/style&gt;&lt;style data-emotion-css=&quot;0&quot;&gt;&lt;/style&gt;&lt;h2 id=&quot;A-Story-Guide&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#A-Story-Guide&quot; aria-label=&quot;A Story Guide permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;A Story Guide&lt;/h2&gt;&lt;p class=&quot;css-0&quot;&gt;Stackcheats is a cheat-blog platform where developers and technical writers can create &amp;amp; write tech-cheats by owning user accounts. More importantly, Stackcheats has been using the WSO2 Identity Server as its identity and access management tool to manage user registrations and management tasks.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;A tech-developer named “Athiththan” have been requested to develop a custom component to validate the password against a list of defective passwords when users trying to update (renew).&lt;/p&gt;&lt;h2 id=&quot;Development&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Development&quot; aria-label=&quot;Development permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Development&lt;/h2&gt;&lt;p class=&quot;quote text-secondary css-0&quot;&gt;WSO2 Identity Server (5.3.0 ≤ onwards) now supports to handle published events using an integrated event framework by extending `AbstractEventHandler`&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;So, Athiththan chose to develop the custom component as an event-handler listening to different password-update events to trigger and to validate the given password.
We can use the following custom maven archetype to generate boilerplate to extend and implement custom event-handlers for WSO2 Identity Server.&lt;/p&gt;&lt;h3 id=&quot;Handle-Event&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Handle-Event&quot; aria-label=&quot;Handle Event permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Handle Event&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;The AbstractEventHandler contains a method named handleEvent() which gets triggered whenever a pre-registered event is made upon the Identity Server. So, for this custom implementation, he will be using the following two publish events …&lt;/p&gt;&lt;ul class=&quot;css-0&quot;&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;pre class=&quot;css-0&quot;&gt;PRE_UPDATE_CREDENTIAL&lt;/pre&gt;&lt;/li&gt;&lt;li class=&quot;css-0&quot;&gt;&lt;pre class=&quot;css-0&quot;&gt;PRE_UPDATE_CREDENTIAL_BY_ADMIN&lt;/pre&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;div id=&quot;gist97067820&quot; class=&quot;gist css-0&quot;&gt;
    &lt;div class=&quot;gist-file css-0&quot;&gt;
      &lt;div class=&quot;gist-data css-0&quot;&gt;
        &lt;div class=&quot;js-gist-file-update-container js-task-list-container file-box css-0&quot;&gt;
  &lt;div id=&quot;file-defectivepasswordvalidatoreventhandler-java&quot; class=&quot;file my-2 css-0&quot;&gt;
    
  &lt;div itemProp=&quot;text&quot; class=&quot;Box-body p-0 blob-wrapper data type-java css-0&quot;&gt;

      
&lt;div class=&quot;js-check-bidi js-blob-code-container blob-code-content css-0&quot;&gt;

  &lt;template class=&quot;js-file-alert-template&quot;&gt;&lt;/template&gt;&lt;template class=&quot;js-line-alert-template&quot;&gt;&lt;/template&gt;

  &lt;table class=&quot;highlight tab-size js-file-line-container js-code-nav-container js-tagsearch-file css-0&quot; data-tab-size=&quot;8&quot; data-paste-markdown-skip=&quot;&quot; data-tagsearch-lang=&quot;Java&quot; data-tagsearch-path=&quot;DefectivePasswordValidatorEventHandler.java&quot;&gt;
        &lt;tbody&gt;&lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatoreventhandler-java-L1&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;1&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatoreventhandler-java-LC1&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;@&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;Override&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatoreventhandler-java-L2&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;2&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatoreventhandler-java-LC2&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;handleEvent&lt;/span&gt;(&lt;span class=&quot;pl-smi&quot;&gt;Event&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;event&lt;/span&gt;) &lt;span class=&quot;pl-k&quot;&gt;throws&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;IdentityEventException&lt;/span&gt; {&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatoreventhandler-java-L3&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;3&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatoreventhandler-java-LC3&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatoreventhandler-java-L4&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;4&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatoreventhandler-java-LC4&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &lt;span class=&quot;pl-k&quot;&gt;if&lt;/span&gt; (&lt;span class=&quot;pl-s1&quot;&gt;log&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;isDebugEnabled&lt;/span&gt;()) {&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatoreventhandler-java-L5&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;5&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatoreventhandler-java-LC5&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;        &lt;span class=&quot;pl-s1&quot;&gt;log&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;debug&lt;/span&gt;(&lt;span class=&quot;pl-s&quot;&gt;&amp;quot;handleEvent() invoked&amp;quot;&lt;/span&gt;);&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatoreventhandler-java-L6&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;6&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatoreventhandler-java-LC6&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    }&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatoreventhandler-java-L7&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;7&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatoreventhandler-java-LC7&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatoreventhandler-java-L8&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;8&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatoreventhandler-java-LC8&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &lt;span class=&quot;pl-k&quot;&gt;if&lt;/span&gt; (&lt;span class=&quot;pl-smi&quot;&gt;IdentityEventConstants&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;Event&lt;/span&gt;.&lt;span class=&quot;pl-c1&quot;&gt;PRE_UPDATE_CREDENTIAL&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;equals&lt;/span&gt;(&lt;span class=&quot;pl-s1&quot;&gt;event&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;getEventName&lt;/span&gt;())&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatoreventhandler-java-L9&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;9&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatoreventhandler-java-LC9&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;            || &lt;span class=&quot;pl-smi&quot;&gt;IdentityEventConstants&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;Event&lt;/span&gt;.&lt;span class=&quot;pl-c1&quot;&gt;PRE_UPDATE_CREDENTIAL_BY_ADMIN&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;equals&lt;/span&gt;(&lt;span class=&quot;pl-s1&quot;&gt;event&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;getEventName&lt;/span&gt;())) {&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatoreventhandler-java-L10&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;10&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatoreventhandler-java-LC10&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatoreventhandler-java-L11&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;11&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatoreventhandler-java-LC11&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;        &lt;span class=&quot;pl-smi&quot;&gt;Object&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;credential&lt;/span&gt; = &lt;span class=&quot;pl-s1&quot;&gt;event&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;getEventProperties&lt;/span&gt;().&lt;span class=&quot;pl-en&quot;&gt;get&lt;/span&gt;(&lt;span class=&quot;pl-smi&quot;&gt;IdentityEventConstants&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;EventProperty&lt;/span&gt;.&lt;span class=&quot;pl-c1&quot;&gt;CREDENTIAL&lt;/span&gt;);&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatoreventhandler-java-L12&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;12&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatoreventhandler-java-LC12&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;        &lt;span class=&quot;pl-k&quot;&gt;if&lt;/span&gt; (!&lt;span class=&quot;pl-s1&quot;&gt;DefaultDefectivePasswordValidator&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;getInstance&lt;/span&gt;().&lt;span class=&quot;pl-en&quot;&gt;validate&lt;/span&gt;(&lt;span class=&quot;pl-s1&quot;&gt;credential&lt;/span&gt;)) {&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatoreventhandler-java-L13&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;13&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatoreventhandler-java-LC13&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatoreventhandler-java-L14&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;14&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatoreventhandler-java-LC14&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;            &lt;span class=&quot;pl-k&quot;&gt;if&lt;/span&gt; (&lt;span class=&quot;pl-s1&quot;&gt;log&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;isDebugEnabled&lt;/span&gt;()) {&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatoreventhandler-java-L15&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;15&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatoreventhandler-java-LC15&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;                &lt;span class=&quot;pl-s1&quot;&gt;log&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;debug&lt;/span&gt;(&lt;span class=&quot;pl-s&quot;&gt;&amp;quot;given password is defective&amp;quot;&lt;/span&gt;);&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatoreventhandler-java-L16&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;16&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatoreventhandler-java-LC16&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;            }&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatoreventhandler-java-L17&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;17&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatoreventhandler-java-LC17&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatoreventhandler-java-L18&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;18&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatoreventhandler-java-LC18&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;            &lt;span class=&quot;pl-k&quot;&gt;throw&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;Utils&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;handleEventException&lt;/span&gt;(&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatoreventhandler-java-L19&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;19&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatoreventhandler-java-LC19&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;                    &lt;span class=&quot;pl-smi&quot;&gt;DefectivePasswordValidatorConstants&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;ErrorMessages&lt;/span&gt;.&lt;span class=&quot;pl-c1&quot;&gt;ERROR_CODE_CRACKED_PASSWORD_VALIDATION&lt;/span&gt;, &lt;span class=&quot;pl-c1&quot;&gt;null&lt;/span&gt;);&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatoreventhandler-java-L20&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;20&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatoreventhandler-java-LC20&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;        }&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatoreventhandler-java-L21&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;21&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatoreventhandler-java-LC21&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    }&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatoreventhandler-java-L22&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;22&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatoreventhandler-java-LC22&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;}&lt;/td&gt;
        &lt;/tr&gt;
  &lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;


  &lt;/div&gt;

  &lt;/div&gt;&lt;/div&gt;

      &lt;/div&gt;
      &lt;div class=&quot;gist-meta css-0&quot;&gt;
        &lt;a href=&quot;https://gist.github.com/athiththan11/2b8b5690bf65b7d16eb2973bbaa22442/raw/d6a5eff4da283d5eb0f008f363644be07057bd0c/DefectivePasswordValidatorEventHandler.java&quot; style=&quot;css-float:right&quot; class=&quot;css-0&quot;&gt;view raw&lt;/a&gt;
        &lt;a href=&quot;https://gist.github.com/athiththan11/2b8b5690bf65b7d16eb2973bbaa22442#file-defectivepasswordvalidatoreventhandler-java&quot; class=&quot;css-0&quot;&gt;
          DefectivePasswordValidatorEventHandler.java
        &lt;/a&gt;
        hosted with ❤ by &lt;a href=&quot;https://github.com&quot; class=&quot;css-0&quot;&gt;GitHub&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;&lt;/div&gt;&lt;/p&gt;&lt;h3 id=&quot;Password-Validator&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Password-Validator&quot; aria-label=&quot;Password Validator permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Password Validator&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Given below is the implementation to validate the given password against a list of defective passwords. The given implementation reads all the defective passwords from a text file named passwords.txt which is placed inside the &lt;code class=&quot;css-0&quot;&gt;/&amp;lt;IS_HOME&amp;gt;/deployments/server/defective&lt;/code&gt; folder.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;For testing purposes, the given implementation can be modified to work with pre-defined list of defective passwords using ArrayList.&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;div id=&quot;gist97082108&quot; class=&quot;gist css-0&quot;&gt;
    &lt;div class=&quot;gist-file css-0&quot;&gt;
      &lt;div class=&quot;gist-data css-0&quot;&gt;
        &lt;div class=&quot;js-gist-file-update-container js-task-list-container file-box css-0&quot;&gt;
  &lt;div id=&quot;file-defaultdefectivepasswordvalidator-java&quot; class=&quot;file my-2 css-0&quot;&gt;
    
  &lt;div itemProp=&quot;text&quot; class=&quot;Box-body p-0 blob-wrapper data type-java css-0&quot;&gt;

      
&lt;div class=&quot;js-check-bidi js-blob-code-container blob-code-content css-0&quot;&gt;

  &lt;template class=&quot;js-file-alert-template&quot;&gt;&lt;/template&gt;&lt;template class=&quot;js-line-alert-template&quot;&gt;&lt;/template&gt;

  &lt;table class=&quot;highlight tab-size js-file-line-container js-code-nav-container js-tagsearch-file css-0&quot; data-tab-size=&quot;8&quot; data-paste-markdown-skip=&quot;&quot; data-tagsearch-lang=&quot;Java&quot; data-tagsearch-path=&quot;DefaultDefectivePasswordValidator.java&quot;&gt;
        &lt;tbody&gt;&lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-L1&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;1&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-LC1&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;DefaultDefectivePasswordValidator&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;implements&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;DefectivePasswordValidator&lt;/span&gt; {&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-L2&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;2&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-LC2&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-L3&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;3&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-LC3&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &lt;span class=&quot;pl-k&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;List&lt;/span&gt;&amp;lt;&lt;span class=&quot;pl-smi&quot;&gt;String&lt;/span&gt;&amp;gt; &lt;span class=&quot;pl-s1&quot;&gt;crackedPasswords&lt;/span&gt; = &lt;span class=&quot;pl-k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;ArrayList&lt;/span&gt;&amp;lt;&amp;gt;();&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-L4&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;4&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-LC4&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &lt;span class=&quot;pl-k&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;DefaultDefectivePasswordValidator&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;dPasswordValidator&lt;/span&gt; = &lt;span class=&quot;pl-k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;DefaultDefectivePasswordValidator&lt;/span&gt;();&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-L5&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;5&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-LC5&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-L6&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;6&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-LC6&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &lt;span class=&quot;pl-k&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;final&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;Logger&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;log&lt;/span&gt; = &lt;span class=&quot;pl-s1&quot;&gt;LoggerFactory&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;getLogger&lt;/span&gt;(&lt;span class=&quot;pl-smi&quot;&gt;DefaultDefectivePasswordValidator&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;class&lt;/span&gt;);&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-L7&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;7&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-LC7&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-L8&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;8&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-LC8&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &lt;span class=&quot;pl-k&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;DefaultDefectivePasswordValidator&lt;/span&gt;() {&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-L9&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;9&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-LC9&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    }&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-L10&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;10&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-LC10&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-L11&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;11&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-LC11&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &lt;span class=&quot;pl-k&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;DefaultDefectivePasswordValidator&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;getInstance&lt;/span&gt;() {&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-L12&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;12&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-LC12&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;        &lt;span class=&quot;pl-k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;dPasswordValidator&lt;/span&gt;;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-L13&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;13&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-LC13&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    }&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-L14&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;14&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-LC14&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-L15&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;15&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-LC15&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &lt;span class=&quot;pl-c&quot;&gt;/**&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-L16&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;16&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-LC16&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;     * initialize defective password values from the given text file&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-L17&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;17&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-LC17&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;     */&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-L18&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;18&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-LC18&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &lt;span class=&quot;pl-c1&quot;&gt;@&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;Override&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-L19&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;19&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-LC19&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &lt;span class=&quot;pl-k&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;initValues&lt;/span&gt;() {&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-L20&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;20&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-LC20&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;        &lt;span class=&quot;pl-s1&quot;&gt;crackedPasswords&lt;/span&gt; = &lt;span class=&quot;pl-k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;ArrayList&lt;/span&gt;&amp;lt;&amp;gt;();&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-L21&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;21&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-LC21&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;        &lt;span class=&quot;pl-k&quot;&gt;try&lt;/span&gt; {&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-L22&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;22&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-LC22&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;            &lt;span class=&quot;pl-s1&quot;&gt;crackedPasswords&lt;/span&gt; = &lt;span class=&quot;pl-s1&quot;&gt;Files&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;readAllLines&lt;/span&gt;(&lt;span class=&quot;pl-s1&quot;&gt;Paths&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;get&lt;/span&gt;(&lt;span class=&quot;pl-smi&quot;&gt;DefectivePasswordValidatorConstants&lt;/span&gt;.&lt;span class=&quot;pl-c1&quot;&gt;PASSWORD_FILE_PATH&lt;/span&gt;),&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-L23&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;23&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-LC23&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;                    &lt;span class=&quot;pl-smi&quot;&gt;StandardCharsets&lt;/span&gt;.&lt;span class=&quot;pl-c1&quot;&gt;UTF_8&lt;/span&gt;);&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-L24&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;24&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-LC24&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;        } &lt;span class=&quot;pl-k&quot;&gt;catch&lt;/span&gt; (&lt;span class=&quot;pl-smi&quot;&gt;IOException&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;e&lt;/span&gt;) {&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-L25&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;25&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-LC25&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;            &lt;span class=&quot;pl-s1&quot;&gt;log&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;error&lt;/span&gt;(&lt;span class=&quot;pl-s&quot;&gt;&amp;quot;Exception occured while reading and initializing values from &amp;quot;&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-L26&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;26&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-LC26&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;                    + &lt;span class=&quot;pl-smi&quot;&gt;DefectivePasswordValidatorConstants&lt;/span&gt;.&lt;span class=&quot;pl-c1&quot;&gt;PASSWORD_FILE_NAME&lt;/span&gt;, &lt;span class=&quot;pl-s1&quot;&gt;e&lt;/span&gt;);&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-L27&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;27&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-LC27&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;        }&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-L28&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;28&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-LC28&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    }&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-L29&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;29&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-LC29&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-L30&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;30&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-LC30&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &lt;span class=&quot;pl-c&quot;&gt;/**&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-L31&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;31&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-LC31&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;     * validate method&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-L32&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;32&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-LC32&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;     */&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-L33&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;33&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-LC33&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &lt;span class=&quot;pl-c1&quot;&gt;@&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;Override&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-L34&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;34&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-LC34&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &lt;span class=&quot;pl-k&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;boolean&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;validate&lt;/span&gt;(&lt;span class=&quot;pl-smi&quot;&gt;Object&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;credential&lt;/span&gt;) {&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-L35&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;35&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-LC35&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;        &lt;span class=&quot;pl-k&quot;&gt;return&lt;/span&gt; !&lt;span class=&quot;pl-s1&quot;&gt;crackedPasswords&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;contains&lt;/span&gt;((&lt;span class=&quot;pl-smi&quot;&gt;String&lt;/span&gt;) &lt;span class=&quot;pl-s1&quot;&gt;credential&lt;/span&gt;);&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-L36&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;36&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-LC36&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    }&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-L37&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;37&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defaultdefectivepasswordvalidator-java-LC37&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;}&lt;/td&gt;
        &lt;/tr&gt;
  &lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;


  &lt;/div&gt;

  &lt;/div&gt;&lt;/div&gt;

      &lt;/div&gt;
      &lt;div class=&quot;gist-meta css-0&quot;&gt;
        &lt;a href=&quot;https://gist.github.com/athiththan11/91f041fb6285235d2708580e914ce13c/raw/8c1e4b9f69e2eb0454002e789f96dde4f8032fde/DefaultDefectivePasswordValidator.java&quot; style=&quot;css-float:right&quot; class=&quot;css-0&quot;&gt;view raw&lt;/a&gt;
        &lt;a href=&quot;https://gist.github.com/athiththan11/91f041fb6285235d2708580e914ce13c#file-defaultdefectivepasswordvalidator-java&quot; class=&quot;css-0&quot;&gt;
          DefaultDefectivePasswordValidator.java
        &lt;/a&gt;
        hosted with ❤ by &lt;a href=&quot;https://github.com&quot; class=&quot;css-0&quot;&gt;GitHub&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;&lt;/div&gt;&lt;/p&gt;&lt;h3 id=&quot;OSGi-Component&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#OSGi-Component&quot; aria-label=&quot;OSGi Component permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;OSGi Component&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;The custom event-handler has to be registered as a service component (OSGi) with the Identity Server components to work flawlessly. In order to register the custom implementation as a service component, he wrote a ServiceComponent class containing both activate and deactivate methods to register it with the Bundle Context.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;div id=&quot;gist97068467&quot; class=&quot;gist css-0&quot;&gt;
    &lt;div class=&quot;gist-file css-0&quot;&gt;
      &lt;div class=&quot;gist-data css-0&quot;&gt;
        &lt;div class=&quot;js-gist-file-update-container js-task-list-container file-box css-0&quot;&gt;
  &lt;div id=&quot;file-defectivepasswordvalidatorservicecomponent-java&quot; class=&quot;file my-2 css-0&quot;&gt;
    
  &lt;div itemProp=&quot;text&quot; class=&quot;Box-body p-0 blob-wrapper data type-java css-0&quot;&gt;

      
&lt;div class=&quot;js-check-bidi js-blob-code-container blob-code-content css-0&quot;&gt;

  &lt;template class=&quot;js-file-alert-template&quot;&gt;&lt;/template&gt;&lt;template class=&quot;js-line-alert-template&quot;&gt;&lt;/template&gt;

  &lt;table class=&quot;highlight tab-size js-file-line-container js-code-nav-container js-tagsearch-file css-0&quot; data-tab-size=&quot;8&quot; data-paste-markdown-skip=&quot;&quot; data-tagsearch-lang=&quot;Java&quot; data-tagsearch-path=&quot;DefectivePasswordValidatorServiceComponent.java&quot;&gt;
        &lt;tbody&gt;&lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatorservicecomponent-java-L1&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;1&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatorservicecomponent-java-LC1&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;@&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;Activate&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatorservicecomponent-java-L2&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;2&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatorservicecomponent-java-LC2&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;protected&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;activate&lt;/span&gt;(&lt;span class=&quot;pl-smi&quot;&gt;ComponentContext&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;context&lt;/span&gt;) {&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatorservicecomponent-java-L3&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;3&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatorservicecomponent-java-LC3&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatorservicecomponent-java-L4&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;4&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatorservicecomponent-java-LC4&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    &lt;span class=&quot;pl-k&quot;&gt;try&lt;/span&gt; {&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatorservicecomponent-java-L5&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;5&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatorservicecomponent-java-LC5&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatorservicecomponent-java-L6&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;6&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatorservicecomponent-java-LC6&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;        &lt;span class=&quot;pl-s1&quot;&gt;context&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;getBundleContext&lt;/span&gt;().&lt;span class=&quot;pl-en&quot;&gt;registerService&lt;/span&gt;(&lt;span class=&quot;pl-smi&quot;&gt;AbstractEventHandler&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;class&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;getName&lt;/span&gt;(),&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatorservicecomponent-java-L7&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;7&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatorservicecomponent-java-LC7&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;                &lt;span class=&quot;pl-k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;DefectivePasswordValidatorEventHandler&lt;/span&gt;(), &lt;span class=&quot;pl-c1&quot;&gt;null&lt;/span&gt;);&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatorservicecomponent-java-L8&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;8&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatorservicecomponent-java-LC8&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatorservicecomponent-java-L9&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;9&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatorservicecomponent-java-LC9&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;        &lt;span class=&quot;pl-c&quot;&gt;// initialize all defective passwords from the text file&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatorservicecomponent-java-L10&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;10&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatorservicecomponent-java-LC10&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;        &lt;span class=&quot;pl-s1&quot;&gt;DefaultDefectivePasswordValidator&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;getInstance&lt;/span&gt;().&lt;span class=&quot;pl-en&quot;&gt;initValues&lt;/span&gt;();&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatorservicecomponent-java-L11&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;11&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatorservicecomponent-java-LC11&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatorservicecomponent-java-L12&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;12&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatorservicecomponent-java-LC12&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;        &lt;span class=&quot;pl-c&quot;&gt;// initialize watchservice on /defective directory&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatorservicecomponent-java-L13&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;13&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatorservicecomponent-java-LC13&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;        &lt;span class=&quot;pl-en&quot;&gt;initializeWatchService&lt;/span&gt;();&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatorservicecomponent-java-L14&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;14&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatorservicecomponent-java-LC14&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatorservicecomponent-java-L15&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;15&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatorservicecomponent-java-LC15&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    } &lt;span class=&quot;pl-k&quot;&gt;catch&lt;/span&gt; (&lt;span class=&quot;pl-smi&quot;&gt;Throwable&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;e&lt;/span&gt;) {&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatorservicecomponent-java-L16&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;16&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatorservicecomponent-java-LC16&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;        &lt;span class=&quot;pl-s1&quot;&gt;log&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;error&lt;/span&gt;(&lt;span class=&quot;pl-s&quot;&gt;&amp;quot;Error occured while initializing service component&amp;quot;&lt;/span&gt;, &lt;span class=&quot;pl-s1&quot;&gt;e&lt;/span&gt;);&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatorservicecomponent-java-L17&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;17&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatorservicecomponent-java-LC17&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;    }&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatorservicecomponent-java-L18&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;18&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatorservicecomponent-java-LC18&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;}&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatorservicecomponent-java-L19&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;19&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatorservicecomponent-java-LC19&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatorservicecomponent-java-L20&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;20&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatorservicecomponent-java-LC20&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;@&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;Deactivate&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatorservicecomponent-java-L21&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;21&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-defectivepasswordvalidatorservicecomponent-java-LC21&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;protected&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;deactivate&lt;/span&gt;(&lt;span class=&quot;pl-smi&quot;&gt;ComponentContext&lt;/span&gt; &lt;span class=&quot;pl-s1&quot;&gt;context&lt;/span&gt;) { }&lt;/td&gt;
        &lt;/tr&gt;
  &lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;


  &lt;/div&gt;

  &lt;/div&gt;&lt;/div&gt;

      &lt;/div&gt;
      &lt;div class=&quot;gist-meta css-0&quot;&gt;
        &lt;a href=&quot;https://gist.github.com/athiththan11/b1156885c454c5613fbb953c21fb7ca4/raw/939883d0968b52d80aff4e0b686f6f2d8793dbb4/DefectivePasswordValidatorServiceComponent.java&quot; style=&quot;css-float:right&quot; class=&quot;css-0&quot;&gt;view raw&lt;/a&gt;
        &lt;a href=&quot;https://gist.github.com/athiththan11/b1156885c454c5613fbb953c21fb7ca4#file-defectivepasswordvalidatorservicecomponent-java&quot; class=&quot;css-0&quot;&gt;
          DefectivePasswordValidatorServiceComponent.java
        &lt;/a&gt;
        hosted with ❤ by &lt;a href=&quot;https://github.com&quot; class=&quot;css-0&quot;&gt;GitHub&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;&lt;/div&gt;&lt;/p&gt;&lt;h2 id=&quot;Prepare&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Prepare&quot; aria-label=&quot;Prepare permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Prepare&lt;/h2&gt;&lt;h3 id=&quot;Defective-Passwords-Text-File&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Defective-Passwords-Text-File&quot; aria-label=&quot;Defective Passwords Text File permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Defective Passwords Text File&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Create a file called passwords.txt and add all defective-passwords (cracked passwords) at each line. These defined cracked passwords are the values, will be used to validate the entered password.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Create a folder named defective inside the &amp;lt;IS_HOME&amp;gt;/repository/deployment/server directory and place the above created passwords.txt file in it.&lt;/p&gt;&lt;h3 id=&quot;WSO2-Identity-Server&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#WSO2-Identity-Server&quot; aria-label=&quot;WSO2 Identity Server permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;WSO2 Identity Server&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;Navigate to &amp;lt;IS_HOME&amp;gt;/repository/conf/identity directory and open the identity-event.properties file and add the following lines at the bottom to subscribe to the published events.&lt;/p&gt;&lt;blockquote class=&quot;css-0&quot;&gt;&lt;p class=&quot;css-0&quot;&gt;Please update the digit value according to your &lt;code class=&quot;css-0&quot;&gt;identity-event.properties&lt;/code&gt; file (last used value + 1)&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;The given &lt;code class=&quot;css-0&quot;&gt;module.name&lt;/code&gt; value is the same value which configured in the &lt;code class=&quot;css-0&quot;&gt;getName()&lt;/code&gt; method in &lt;code class=&quot;css-0&quot;&gt;DefectivePasswordValidatorEventHandler&lt;/code&gt; class&lt;/p&gt;&lt;/blockquote&gt;&lt;p class=&quot;css-0&quot;&gt;&lt;div id=&quot;gist97082148&quot; class=&quot;gist css-0&quot;&gt;
    &lt;div class=&quot;gist-file css-0&quot;&gt;
      &lt;div class=&quot;gist-data css-0&quot;&gt;
        &lt;div class=&quot;js-gist-file-update-container js-task-list-container file-box css-0&quot;&gt;
  &lt;div id=&quot;file-identity-event-properties&quot; class=&quot;file my-2 css-0&quot;&gt;
    
  &lt;div itemProp=&quot;text&quot; class=&quot;Box-body p-0 blob-wrapper data type-ini css-0&quot;&gt;

      
&lt;div class=&quot;js-check-bidi js-blob-code-container blob-code-content css-0&quot;&gt;

  &lt;template class=&quot;js-file-alert-template&quot;&gt;&lt;/template&gt;&lt;template class=&quot;js-line-alert-template&quot;&gt;&lt;/template&gt;

  &lt;table class=&quot;highlight tab-size js-file-line-container js-code-nav-container js-tagsearch-file css-0&quot; data-tab-size=&quot;8&quot; data-paste-markdown-skip=&quot;&quot; data-tagsearch-lang=&quot;INI&quot; data-tagsearch-path=&quot;identity-event.properties&quot;&gt;
        &lt;tbody&gt;&lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-identity-event-properties-L1&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;1&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-identity-event-properties-LC1&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;module.name.13&lt;/span&gt;=defectivePasswordValidator&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-identity-event-properties-L2&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;2&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-identity-event-properties-LC2&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;defectivePasswordValidator.subscription.1&lt;/span&gt;=PRE_UPDATE_CREDENTIAL&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;css-0&quot;&gt;
          &lt;td id=&quot;file-identity-event-properties-L3&quot; class=&quot;blob-num js-line-number js-code-nav-line-number js-blob-rnum css-0&quot; data-line-number=&quot;3&quot;&gt;&lt;/td&gt;
          &lt;td id=&quot;file-identity-event-properties-LC3&quot; class=&quot;blob-code blob-code-inner js-file-line css-0&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;defectivePasswordValidator.subscription.2&lt;/span&gt;=PRE_UPDATE_CREDENTIAL_BY_ADMIN&lt;/td&gt;
        &lt;/tr&gt;
  &lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;


  &lt;/div&gt;

  &lt;/div&gt;&lt;/div&gt;

      &lt;/div&gt;
      &lt;div class=&quot;gist-meta css-0&quot;&gt;
        &lt;a href=&quot;https://gist.github.com/athiththan11/fc5bc7e1b8e46124ed0fa993a4324580/raw/841ceca5796578427010849a8f37bf01ce3c6475/identity-event.properties&quot; style=&quot;css-float:right&quot; class=&quot;css-0&quot;&gt;view raw&lt;/a&gt;
        &lt;a href=&quot;https://gist.github.com/athiththan11/fc5bc7e1b8e46124ed0fa993a4324580#file-identity-event-properties&quot; class=&quot;css-0&quot;&gt;
          identity-event.properties
        &lt;/a&gt;
        hosted with ❤ by &lt;a href=&quot;https://github.com&quot; class=&quot;css-0&quot;&gt;GitHub&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;&lt;/div&gt;&lt;/p&gt;&lt;h2 id=&quot;Build-Run--Test&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Build-Run--Test&quot; aria-label=&quot;Build Run  Test permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Build, Run &amp;amp; Test&lt;/h2&gt;&lt;h3 id=&quot;Build&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Build&quot; aria-label=&quot;Build permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Build&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;You can clone or download the custom event-handler implementation project done by Athiththan from GitHub and build it using the following command …&lt;/p&gt;&lt;pre class=&quot;prism-code language-bash&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;mvn clean package&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;h3 id=&quot;Run&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Run&quot; aria-label=&quot;Run permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Run&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;After a successful build, copy the &lt;code class=&quot;css-0&quot;&gt;defective-password-validator-1.0.0.jar&lt;/code&gt; artifact and place it inside the &lt;code class=&quot;css-0&quot;&gt;&amp;lt;IS_HOME&amp;gt;/repository/components/dropins&lt;/code&gt; folder.&lt;/p&gt;&lt;p class=&quot;css-0&quot;&gt;Start your WSO2 Identity Server by navigating to the &lt;code class=&quot;css-0&quot;&gt;&amp;lt;IS_HOME&amp;gt;/bin&lt;/code&gt; folder and executing the following command …&lt;/p&gt;&lt;pre class=&quot;prism-code language-bash&quot; style=&quot;color:#9CDCFE;background-color:#1E1E1E&quot;&gt;&lt;div class=&quot;token-line&quot; style=&quot;color:#9CDCFE&quot;&gt;&lt;span class=&quot;token plain&quot;&gt;sh wso2server.sh&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;h3 id=&quot;Test&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#Test&quot; aria-label=&quot;Test permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Test&lt;/h3&gt;&lt;p class=&quot;css-0&quot;&gt;After server startup, navigate to &lt;code class=&quot;css-0&quot;&gt;https://&amp;lt;ipaddress&amp;gt;:9443/dashboard&lt;/code&gt; and log in using &lt;code class=&quot;css-0&quot;&gt;admin&lt;/code&gt; as both username and password. Click on the &lt;em class=&quot;css-0&quot;&gt;“View Details”&lt;/em&gt; button on the &lt;em class=&quot;css-0&quot;&gt;“Change Password”&lt;/em&gt; section and type your current password and enter the new password as one of the defective passwords and try on.&lt;/p&gt;&lt;h3 id=&quot;GitHub&quot; style=&quot;position:relative&quot; class=&quot;css-0&quot;&gt;&lt;a href=&quot;#GitHub&quot; aria-label=&quot;GitHub permalink&quot; class=&quot;header-permlink before css-0&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;20&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;20&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;GitHub&lt;/h3&gt;&lt;div title=&quot;Defective Password Validator&quot; class=&quot;css-0&quot;&gt;&lt;/div&gt;</content:encoded></item></channel></rss>