{"id":668,"date":"2024-05-23T10:59:06","date_gmt":"2024-05-23T09:59:06","guid":{"rendered":"https:\/\/france.magicsoftware.com\/blog\/?p=668"},"modified":"2025-12-10T15:22:32","modified_gmt":"2025-12-10T14:22:32","slug":"magic-xpi-and-keycloak-iam","status":"publish","type":"post","link":"https:\/\/france.magicsoftware.com\/blog\/magic-xpi\/magic-xpi-and-keycloak-iam\/","title":{"rendered":"KEYCLOAK IAM &#8211; Magic xpi"},"content":{"rendered":"\n<p><strong>Goal : Configure OAuth2 Authentication for Magic xpi RESTful API Service using KeyCloak Identity Access Management<\/strong><\/p>\n\n\n\n<p>Prerequisites :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Access to a Keycloak server <a href=\"https:\/\/www.keycloak.org\/\" title=\"\">https:\/\/www.keycloak.org\/<\/a><\/li>\n\n\n\n<li>Apache tomcat<\/li>\n\n\n\n<li>Magic xpi<\/li>\n\n\n\n<li>Postman<\/li>\n<\/ul>\n\n\n\n<p>1\/ keyCloak Server Installation<\/p>\n\n\n\n<p>Download and unzip keycloak server <\/p>\n\n\n\n<p>install java version \u00ab\u00a017.0.11\u00a0\u00bb 2024-04-16 LTS<\/p>\n\n\n\n<p>Start Keycloak server (Dev environment) : kc start-dev<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/1-1024x576.png\" alt=\"\" class=\"wp-image-684\" style=\"width:584px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/1-1024x576.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/1-300x169.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/1-768x432.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/1-1536x864.png 1536w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/1.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Browse : http:\/\/localhost:8080 and create Admin user<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/2-1024x576.png\" alt=\"\" class=\"wp-image-688\" style=\"width:514px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/2-1024x576.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/2-300x169.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/2-768x432.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/2-1536x864.png 1536w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/2.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>2\/ Keycloak settings<\/p>\n\n\n\n<p>Create Realm for Magic xpi<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/4-1024x576.png\" alt=\"\" class=\"wp-image-687\" style=\"width:528px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/4-1024x576.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/4-300x169.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/4-768x432.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/4-1536x864.png 1536w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/4.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/5-1024x576.png\" alt=\"\" class=\"wp-image-690\" style=\"width:659px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/5-1024x576.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/5-300x169.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/5-768x432.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/5-1536x864.png 1536w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/5.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Create Magic xpi Client<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1920\" height=\"1080\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/6-1024x576.png\" alt=\"\" class=\"wp-image-692\" style=\"width:674px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/6-1024x576.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/6-300x169.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/6-768x432.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/6-1536x864.png 1536w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/6.png 1920w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"496\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/06\/CreateClient-1024x496.png\" alt=\"\" class=\"wp-image-776\" style=\"width:648px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/06\/CreateClient-1024x496.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/06\/CreateClient-300x145.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/06\/CreateClient-768x372.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/06\/CreateClient-1536x744.png 1536w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/06\/CreateClient.png 1606w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>3\/ Enter an URL redirection to Magic xpi RESTFul API  <\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"657\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/06\/CreateClient_2-1024x657.png\" alt=\"\" class=\"wp-image-777\" style=\"width:683px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/06\/CreateClient_2-1024x657.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/06\/CreateClient_2-300x192.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/06\/CreateClient_2-768x493.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/06\/CreateClient_2.png 1361w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Save the Client Secret<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"551\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/06\/CreateClient_3-1024x551.png\" alt=\"\" class=\"wp-image-779\" style=\"width:712px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/06\/CreateClient_3-1024x551.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/06\/CreateClient_3-300x161.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/06\/CreateClient_3-768x413.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/06\/CreateClient_3.png 1343w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>4\/ Create a Client Scope (magicxpiscope)<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"610\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/06\/CreateScope1-1024x610.png\" alt=\"\" class=\"wp-image-781\" style=\"width:705px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/06\/CreateScope1-1024x610.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/06\/CreateScope1-300x179.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/06\/CreateScope1-768x457.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/06\/CreateScope1.png 1313w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Create 2 mapper (UserProperty (boolean) and UserAttribute (custom atrribute)) (Add mapper By Configuration)<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"795\" height=\"840\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/06\/CreateScope2.png\" alt=\"\" class=\"wp-image-783\" style=\"width:384px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/06\/CreateScope2.png 795w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/06\/CreateScope2-284x300.png 284w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/06\/CreateScope2-768x811.png 768w\" sizes=\"auto, (max-width: 795px) 100vw, 795px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"738\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/06\/CreateScope3-1024x738.png\" alt=\"\" class=\"wp-image-785\" style=\"width:588px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/06\/CreateScope3-1024x738.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/06\/CreateScope3-300x216.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/06\/CreateScope3-768x554.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/06\/CreateScope3.png 1071w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>4\/ Add the client scope \u00ab\u00a0magicxpiscope\u00a0\u00bb to the client<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"510\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/06\/CreateScope4-1024x510.png\" alt=\"\" class=\"wp-image-788\" style=\"width:791px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/06\/CreateScope4-1024x510.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/06\/CreateScope4-300x149.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/06\/CreateScope4-768x382.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/06\/CreateScope4.png 1420w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>4\/ Deploy Magic xpi Tomcat requester (<em>Magic xpi &#8211; RESTful API Provider Installation Instructions.pdf<\/em>)<\/p>\n\n\n\n<p>Copy the file <strong>xpiREST.war<\/strong> from<strong>&lt;Magic xpi installation&gt;\\Runtime\\addon_connectors\\RESTfulAPI\\servicefiles<\/strong> to <strong>&lt;Magic xpi installation&gt;\\Runtime\\apache-tomcat\\webapps<\/strong><\/p>\n\n\n\n<p>We will use the Magic xpi Embedded Apache Tomcat (<strong>&lt;Magic xpi installation&gt;\\Runtime\\apache-tomcat<\/strong>).<\/p>\n\n\n\n<p>Change the Apache Tomcat port to 6443 in the server.xml file and start the server<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"617\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/apache1-1024x617.png\" alt=\"\" class=\"wp-image-725\" style=\"width:590px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/apache1-1024x617.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/apache1-300x181.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/apache1-768x463.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/apache1.png 1176w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><strong>After starting the Apache server<\/strong> (&lt;xpi installation&gt;\\Runtime\\apache-tomcat\\bin\\<strong>startup.bat<\/strong>), <strong>xpiREST<\/strong> and <strong>rest-services<\/strong> will appear.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"860\" height=\"301\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/apache2.png\" alt=\"\" class=\"wp-image-727\" style=\"width:437px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/apache2.png 860w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/apache2-300x105.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/apache2-768x269.png 768w\" sizes=\"auto, (max-width: 860px) 100vw, 860px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"950\" height=\"383\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/apache3.png\" alt=\"\" class=\"wp-image-728\" style=\"width:464px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/apache3.png 950w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/apache3-300x121.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/apache3-768x310.png 768w\" sizes=\"auto, (max-width: 950px) 100vw, 950px\" \/><\/figure>\n\n\n\n<p>5\/ Create a Magic xpi project including a RESTFul Service<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"442\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/xpi1-1024x442.png\" alt=\"\" class=\"wp-image-716\" style=\"width:604px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/xpi1-1024x442.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/xpi1-300x129.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/xpi1-768x331.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/xpi1-1536x663.png 1536w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/xpi1.png 1877w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Define 2 methods<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"349\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/xpi2-1024x349.png\" alt=\"\" class=\"wp-image-718\" style=\"width:632px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/xpi2-1024x349.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/xpi2-300x102.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/xpi2-768x262.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/xpi2-1536x524.png 1536w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/xpi2.png 1643w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Under &lt;xpi project&gt;\\RESTful API\\&lt;ServiceNameFolder&gt;. (ex: C:\\MSE\\Magicxpi414\\Runtime\\projects\\OAuth2_Keycloak\\OAuth2_Keycloak\\RESTful API\\MyRESTfulAPI)<\/p>\n\n\n\n<p>you will find the Service Definition File (<strong>&lt;Project Name&gt;_&lt;Service Name&gt;_serviceDefinition.xml<\/strong>) (C:\\MSE\\Magicxpi414\\Runtime\\projects\\OAuth2_Keycloak\\OAuth2_Keycloak\\RESTful API\\MyRESTfulAPI\\OAuth2_Keycloak_MyRESTfulAPI_serviceDefinition.xml)<\/p>\n\n\n\n<p><strong>Add the OAuth2 Issuer<\/strong> (http:\/\/localhost:8080\/realms\/Magicxpi) and the security role =&gt; client scope for each method<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"406\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/06\/Servicedef1-1024x406.png\" alt=\"\" class=\"wp-image-790\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/06\/Servicedef1-1024x406.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/06\/Servicedef1-300x119.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/06\/Servicedef1-768x304.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/06\/Servicedef1.png 1461w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>6\/ Copy the Service Definition file from <strong>&lt;xpi project&gt;\\RESTful API\\&lt;ServiceNameFolder&gt;<\/strong> to <strong>&lt;Magic xpi installation&gt;\\Runtime\\apache-tomcat\\rest-services<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"725\" height=\"164\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/xpi4.png\" alt=\"\" class=\"wp-image-734\" style=\"width:506px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/xpi4.png 725w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/xpi4-300x68.png 300w\" sizes=\"auto, (max-width: 725px) 100vw, 725px\" \/><\/figure>\n\n\n\n<p>7\/ Test using Postman<\/p>\n\n\n\n<p>Make a POST on <strong>http:\/\/localhost:8080\/realms\/Magicxpi\/protocol\/openid-connect\/token<\/strong> with these credentials with <strong>scope set to <\/strong>openid email address profile <strong>magicxpiscope<\/strong><\/p>\n\n\n\n<p>Check in the response that you get the clientscope that you want<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"672\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/06\/postman1-1-1024x672.png\" alt=\"\" class=\"wp-image-794\" style=\"width:692px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/06\/postman1-1-1024x672.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/06\/postman1-1-300x197.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/06\/postman1-1-768x504.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/06\/postman1-1.png 1168w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>In the response you will get the \u00ab\u00a0access_token\u00a0\u00bb and the \u00ab\u00a0refresh_token\u00a0\u00bb , if you want to test a call to the Magic xpi RESTFUl service, you can use access_token in the authorization header<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"421\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/Postman2-1024x421.png\" alt=\"\" class=\"wp-image-741\" style=\"width:642px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/Postman2-1024x421.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/Postman2-300x123.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/Postman2-768x316.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/Postman2.png 1393w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>(*) You got Status 201 because in the Magic xpi Flow, i put 201 in the response status (C.UserCode)<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"446\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/xpi6-1024x446.png\" alt=\"\" class=\"wp-image-742\" style=\"width:628px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/xpi6-1024x446.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/xpi6-300x131.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/xpi6-768x334.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/xpi6-1536x669.png 1536w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/xpi6.png 1856w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>(**) if you set a wrong role in the service definition file, you get a 403 Forbidden<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"795\" height=\"589\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/06\/postman3.png\" alt=\"\" class=\"wp-image-799\" style=\"width:457px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/06\/postman3.png 795w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/06\/postman3-300x222.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/06\/postman3-768x569.png 768w\" sizes=\"auto, (max-width: 795px) 100vw, 795px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"384\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/06\/postman2-1024x384.png\" alt=\"\" class=\"wp-image-797\" style=\"width:639px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/06\/postman2-1024x384.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/06\/postman2-300x113.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/06\/postman2-768x288.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/06\/postman2.png 1332w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>(***) If you pass a wrong Bearer token or if the token is expired then you get 401 Unauthorized<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"431\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/Postman3-1024x431.png\" alt=\"\" class=\"wp-image-749\" style=\"width:626px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/Postman3-1024x431.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/Postman3-300x126.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/Postman3-768x323.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/Postman3.png 1395w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>8\/ By default, the Access token expired after 5min, you can change this setting in the KeyCloak console<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"588\" src=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/14-1024x588.png\" alt=\"\" class=\"wp-image-760\" style=\"width:565px;height:auto\" srcset=\"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/14-1024x588.png 1024w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/14-300x172.png 300w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/14-768x441.png 768w, https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/14.png 1402w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Goal : Configure OAuth2 Authentication for Magic xpi RESTful API Service using KeyCloak Identity Access Management Prerequisites : 1\/ keyCloak Server Installation Download and unzip keycloak server install java version \u00ab\u00a017.0.11\u00a0\u00bb 2024-04-16 LTS Start Keycloak server (Dev environment) : kc start-dev Browse : http:\/\/localhost:8080 and create Admin user 2\/ Keycloak settings Create Realm for Magic [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":669,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[4,27],"tags":[49,14],"class_list":["post-668","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-magic-xpi","category-oauth2","tag-keycloak","tag-magic-xpi"],"aioseo_notices":[],"jetpack_featured_media_url":"https:\/\/france.magicsoftware.com\/blog\/wp-content\/uploads\/2024\/05\/keycloak.png","_links":{"self":[{"href":"https:\/\/france.magicsoftware.com\/blog\/wp-json\/wp\/v2\/posts\/668","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/france.magicsoftware.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/france.magicsoftware.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/france.magicsoftware.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/france.magicsoftware.com\/blog\/wp-json\/wp\/v2\/comments?post=668"}],"version-history":[{"count":75,"href":"https:\/\/france.magicsoftware.com\/blog\/wp-json\/wp\/v2\/posts\/668\/revisions"}],"predecessor-version":[{"id":3263,"href":"https:\/\/france.magicsoftware.com\/blog\/wp-json\/wp\/v2\/posts\/668\/revisions\/3263"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/france.magicsoftware.com\/blog\/wp-json\/wp\/v2\/media\/669"}],"wp:attachment":[{"href":"https:\/\/france.magicsoftware.com\/blog\/wp-json\/wp\/v2\/media?parent=668"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/france.magicsoftware.com\/blog\/wp-json\/wp\/v2\/categories?post=668"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/france.magicsoftware.com\/blog\/wp-json\/wp\/v2\/tags?post=668"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}