{"id":11996,"date":"2022-10-06T12:31:26","date_gmt":"2022-10-06T17:31:26","guid":{"rendered":"https:\/\/www.mrc-productivity.com\/docs\/?post_type=ht_kb&#038;p=11996"},"modified":"2025-08-20T11:35:26","modified_gmt":"2025-08-20T16:35:26","slug":"adding-sso-via-saml-to-m-power-applications","status":"publish","type":"ht_kb","link":"https:\/\/www.mrc-productivity.com\/docs\/knowledge-base\/adding-sso-via-saml-to-m-power-applications","title":{"rendered":"Adding SSO (via SAML) to m-Power Applications"},"content":{"rendered":"\n<p>This document explains how to configure m-Power and a third-party identity provider (in this case, Microsoft Entra ID) to use SAML-based Single Sign-On (SSO) for secure access to m-Power-generated applications.<\/p>\n\n\n\n<p>If you would like to learn how to utilize OAuth2 instead, please click <a href=\"\/docs\/knowledge-base\/addinging-sso-via-oauth2-to-m-power-applications\" data-type=\"URL\" data-id=\"\/docs\/knowledge-base\/addinging-sso-via-oauth2-to-m-power-applications\">here<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-ht-blocks-messages wp-block-hb-message wp-block-hb-message--withicon is-style-danger\">If you are converting an existing dictionary to use SAML, pay close attention to the <strong>username format<\/strong> provided by your identity provider. m-Power menu security and row-level security rules are tied directly to usernames. If the SAML username format does not match your existing usernames, you will need to update either your security rules or the usernames to ensure access works as expected.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Overview<\/h3>\n\n\n\n<p>This guide will walk through step by step how to configure SAML 2.0 Single Sign-On (SSO) between Microsoft Entra ID (formerly Azure Active Directory) and an m-Power application. Microsoft Entra ID is Microsoft\u2019s cloud-based identity and access management (IAM) service, used to enable secure authentication for users and applications. <\/p>\n\n\n\n<p class=\"wp-block-ht-blocks-messages wp-block-hb-message wp-block-hb-message--withicon\">While this guide specifically uses Microsoft Entra<strong> <\/strong>as the identity provider (IdP) example, m-Power\u2019s SAML integration is IdP-agnostic and can be configured to work with any SAML 2.0\u2013compliant provider, including Okta, Ping Identity, and others. If interested in using a different provider, please contact support@mrc-productivity.com<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">SAML General Concepts<\/h3>\n\n\n\n<p>Within SAML, there are a few key concepts that must be understood:<\/p>\n\n\n\n<p>IdP &#8212; This is the identity provider. There are multiple identity providers, but some of the more common ones include Microsoft Entra and Okta. It is the job of the IdP to prove that someone is who they say they are.<\/p>\n\n\n\n<p>SP &#8212; This is the service provider. In our case, m-Power is the service provider. In reality, you would have several SPs. Each SP would interface with the IdP to ensure that a user is valid.<\/p>\n\n\n\n<p>Assertion &#8212; Assertions are the <em>message<\/em> that is transmitted between the IdP and the SP during communication.<\/p>\n\n\n\n<p>Metadata &#8212; Before an IdP and and SP will communicate with each other, each (usually) needs to know information about the other. This information may contain certificates as well as other entity IDs. All this information is usually stored in the IdP\/SP metadata.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Configure m-Power for SAML<\/h3>\n\n\n\n<p>Prior to configuring SAML for m-Power, there are a few <em>housekeeping <\/em>items required.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Be sure you are on at least the Aug 2022 release of m-Power.<\/li>\n\n\n\n<li>Add the following entry to your \/mrcjava\/WEB-INF\/web.xml file:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;servlet&gt;\n&lt;servlet-name&gt;SAMLMetadata&lt;\/servlet-name&gt;\n&lt;servlet-class&gt;com.mrc.http.security.saml.SAMLMetadata&lt;\/servlet-class&gt;\n&lt;\/servlet&gt;\n&lt;servlet-mapping&gt;\n&lt;servlet-name&gt;SAMLMetadata&lt;\/servlet-name&gt;\n&lt;url-pattern&gt;\/saml\/metadata&lt;\/url-pattern&gt;\n&lt;\/servlet-mapping&gt;<\/code><\/pre>\n\n\n\n<p>Next, you will need to download the SAML configuration file. You can download <a rel=\"noreferrer noopener\" href=\"\/docs\/SAML\/onelogin.saml.properties\" data-type=\"URL\" data-id=\"\/docs\/SAML\/onelogin.saml.properties\" target=\"_blank\">this file<\/a> and place it into your \/mrcjava\/WEB-INF\/classes folder.<\/p>\n\n\n\n<p>This file ships generic and it now requires some specific information about itself (the SP). Specifically: <\/p>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<p>Change lines #14 and #19 to reference your m-Power server address:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Line 14 &#8212; the SP&#8217;s entity id (typically going to be: https:\/\/your_server_name\/mrcjava)<\/li>\n\n\n\n<li>Line 19 &#8212; the ACS URL (typically going to be: https:\/\/your_server_name\/mrcjava\/saml\/acs)<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"728\" height=\"191\" src=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-65.png\" alt=\"\" class=\"wp-image-12008\" srcset=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-65.png 728w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-65-300x79.png 300w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-65-150x39.png 150w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-65-50x13.png 50w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-65-60x16.png 60w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-65-100x26.png 100w\" sizes=\"(max-width: 728px) 100vw, 728px\" \/><\/figure>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<p>Line #38 <em>may<\/em> need to be changed depending on what information your IdP is sending back to m-Power about the user. If not sure, leave this value alone for the time being.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"777\" height=\"93\" src=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-60.png\" alt=\"\" class=\"wp-image-12001\" srcset=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-60.png 777w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-60-300x36.png 300w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-60-150x18.png 150w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-60-768x92.png 768w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-60-50x6.png 50w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-60-60x7.png 60w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-60-100x12.png 100w\" sizes=\"(max-width: 777px) 100vw, 777px\" \/><\/figure>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<p>Lines 162 through 171 (Organization and Techincal\/Support contact info) should also be populated as this information will be sent along with the SP metadata.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"656\" height=\"198\" src=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-61.png\" alt=\"\" class=\"wp-image-12002\" srcset=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-61.png 656w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-61-300x91.png 300w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-61-150x45.png 150w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-61-50x15.png 50w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-61-60x18.png 60w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-61-100x30.png 100w\" sizes=\"(max-width: 656px) 100vw, 656px\" \/><\/figure>\n<\/div><\/div>\n\n\n\n<p class=\"wp-block-ht-blocks-messages wp-block-hb-message wp-block-hb-message--withicon is-style-info\">These instructions assume you are not sending back a signed assertion. If you want that, you will need to complete lines 43, 47, and change line 101 to true.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Load IdP Information<\/h3>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<p>Now that you have added in the necessary information about the SP, it&#8217;s time to turn your attention to adding information about your IdP. <\/p>\n\n\n\n<p class=\"wp-block-ht-blocks-messages wp-block-hb-message wp-block-hb-message--withicon is-style-alert\">m-Power cannot automatically parse your IdP&#8217;s metadata. Instead, you will need to manually open the IdP&#8217;s metadata and extract out the necessary information, as described below.<\/p>\n\n\n\n<p>Line #53 &#8212; IdP&#8217;s entity id<\/p>\n\n\n\n<p>Line #57 &#8212; IdP&#8217;s SAML URL endpoint<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"742\" height=\"123\" src=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-62.png\" alt=\"\" class=\"wp-image-12003\" srcset=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-62.png 742w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-62-300x50.png 300w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-62-150x25.png 150w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-62-50x8.png 50w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-62-60x10.png 60w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-62-100x17.png 100w\" sizes=\"(max-width: 742px) 100vw, 742px\" \/><\/figure>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<p>This IdP information essentially instructs m-Power (the SP) where\/how to connect to your IdP.<\/p>\n\n\n\n<p>Lastly, please load the x509 cert from the IdP on line #79. This needs to be unformatted with no line breaks. Tools such as <a href=\"https:\/\/www.samltool.com\/format_x509cert.php\">https:\/\/www.samltool.com\/format_x509cert.php<\/a> can help assist converting an x509 into a string format, if necessary. <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"654\" height=\"55\" src=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-63.png\" alt=\"\" class=\"wp-image-12004\" srcset=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-63.png 654w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-63-300x25.png 300w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-63-150x13.png 150w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-63-50x4.png 50w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-63-60x5.png 60w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-63-100x8.png 100w\" sizes=\"(max-width: 654px) 100vw, 654px\" \/><\/figure>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<p>Save this new onelogin.saml.properties file. Restart Tomcat.<\/p>\n\n\n\n<p>If your IdP needs our metadata, you can access it at the following url: <code>http:\/\/your_server_address_goes_here.com\/mrcjava\/saml\/metadata<\/code><\/p>\n<\/div><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Finishing Touches<\/h3>\n\n\n\n<p>Now that SAML has been configured, we just need to tell m-Power to utilize this method. At the dictionary level, change your m-Power data dictionary&#8217;s validation type to 18. <\/p>\n\n\n\n<p>From the Admin menu -&gt; Menu &amp; Security -&gt; Edit Security Settings -&gt; Signon Properties -&gt; Validation Type. Change the dropdown to &#8216;Other&#8230;&#8217; and type 18.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"900\" height=\"364\" src=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-64-900x364.png\" alt=\"\" class=\"wp-image-12005\" srcset=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-64-900x364.png 900w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-64-300x121.png 300w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-64-150x61.png 150w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-64-768x310.png 768w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-64-50x20.png 50w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-64-60x24.png 60w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-64-100x40.png 100w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-64.png 923w\" sizes=\"(max-width: 900px) 100vw, 900px\" \/><\/figure>\n\n\n\n<p>Add the following code to your \/mrcjava\/WEB-INF\/web.xml file:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;filter&gt;\n&lt;filter-name&gt;SAMLFilter&lt;\/filter-name&gt;\n&lt;filter-class&gt;com.mrc.http.security.saml.SAMLFilter&lt;\/filter-class&gt;\n&lt;init-param&gt;\n&lt;param-name&gt;dictionaries&lt;\/param-name&gt;\n&lt;param-value&gt;MYDESIGNERX&lt;\/param-value&gt;\n&lt;\/init-param&gt;\n&lt;init-param&gt;\n&lt;param-name&gt;opt-out-urls&lt;\/param-name&gt;\n&lt;param-value&gt;\/some\/url,DD.IXXXXXs&lt;\/param-value&gt;\n&lt;\/init-param&gt;\n&lt;\/filter&gt;\n&lt;filter-mapping&gt;\n&lt;filter-name&gt;SAMLFilter&lt;\/filter-name&gt;\n&lt;url-pattern&gt;\/servlet\/*&lt;\/url-pattern&gt;\n&lt;\/filter-mapping&gt;\n&lt;servlet&gt;\n&lt;servlet-name&gt;SAMLacs&lt;\/servlet-name&gt;\n&lt;servlet-class&gt;com.mrc.http.security.saml.SAMLCallback&lt;\/servlet-class&gt;\n&lt;\/servlet&gt;\n&lt;servlet-mapping&gt;\n&lt;servlet-name&gt;SAMLacs&lt;\/servlet-name&gt;\n&lt;url-pattern&gt;\/saml\/acs&lt;\/url-pattern&gt;\n&lt;\/servlet-mapping&gt;<\/code><\/pre>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<h4 class=\"wp-block-heading\">Opt-out-urls <\/h4>\n<\/div><\/div>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;init-param&gt;\n&lt;param-name&gt;opt-out-urls&lt;\/param-name&gt;\n&lt;param-value&gt;\/some\/url,DD.IXXXXXs&lt;\/param-value&gt;\n&lt;\/init-param&gt;<\/code><\/pre>\n\n\n\n<p>Optional: Allows a comma separated list of URL fragments. If they are found in the requested URL, the filter will skip the SAML logic. Use this if you want to opt a specific application out of SAML security.<\/p>\n\n\n\n<p class=\"wp-block-ht-blocks-messages wp-block-hb-message wp-block-hb-message--withicon is-style-alert\">If the app being opted out is in a secured dictionary you will also need to opt it out in mrcSignon2.xml. <a href=\"http:\/\/knowledge-base\/implementing-security#opt-out-applications\" data-type=\"URL\" data-id=\"knowledge-base\/implementing-security#opt-out-applications\">Please see instructions here.<\/a><\/p>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<h4 class=\"wp-block-heading\">Dictionaries<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;init-param&gt;\n&lt;param-name&gt;dictionaries&lt;\/param-name&gt;\n&lt;param-value&gt;MRCWORKLIB&lt;\/param-value&gt;\n&lt;\/init-param&gt;<\/code><\/pre>\n\n\n\n<p>Optional: Allows you to specify which dictionaries you want to secure with SAML. If the parm is not set, SAML will be applied to all dictionaries. If you specify this parm with one or more dictionaries (comma separated) then SAML will only apply to those dictionaries. In the above example, a data dictionary named &#8220;MRCWORKLIB&#8221; is the only data dictionary that that will secure by SAML.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"azure\">Microsoft Entra SAML Configuration<\/h3>\n\n\n\n<p>The above instructions are all that is required on the SP side to configure and utilize SAML. However we realize that there is still an IdP component. While we cannot provide documentation on every possible IdP that exists, we thought it would be helpful how to configure a popular IdP (Microsoft Entra) for SAML connection with m-Power.<\/p>\n\n\n\n<p class=\"wp-block-ht-blocks-messages wp-block-hb-message wp-block-hb-message--withicon is-style-info\">Please note that the below is provided was accurate as of creation date (Oct 2022). Changes in Entra since then may make the below out-of-date.<\/p>\n\n\n\n<p class=\"wp-block-ht-blocks-messages wp-block-hb-message wp-block-hb-message--withicon is-style-info\">Microsoft Entra instructions were provided as an example. m-Power SAML supports any IdP, not just Entra.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Add Microsoft Entra SAML Toolkit<\/h4>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<p>Sign into your <a href=\"https:\/\/portal.azure.com\/#home\" target=\"_blank\" rel=\"noreferrer noopener\">Microsoft Azure Portal<\/a> with an admin account. On the home page, find the Azure services section and select <strong>Microsoft Entra ID<\/strong>.<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69e3f012c04d9&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69e3f012c04d9\" class=\"wp-block-image size-large wp-lightbox-container\"><img decoding=\"async\" width=\"900\" height=\"505\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-66-900x505.png\" alt=\"\" class=\"wp-image-12025\" srcset=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-66-900x505.png 900w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-66-300x168.png 300w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-66-150x84.png 150w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-66-768x431.png 768w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-66-50x28.png 50w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-66-60x34.png 60w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-66-100x56.png 100w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-66.png 1090w\" sizes=\"(max-width: 900px) 100vw, 900px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<p>From the left-hand navigation menu, select <strong>Enterprise applications<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"262\" height=\"462\" src=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-68.png\" alt=\"\" class=\"wp-image-12027\" srcset=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-68.png 262w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-68-170x300.png 170w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-68-85x150.png 85w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-68-28x50.png 28w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-68-34x60.png 34w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-68-57x100.png 57w\" sizes=\"(max-width: 262px) 100vw, 262px\" \/><\/figure>\n<\/div><\/div>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<p>Select <strong>New application<\/strong>. <\/p>\n\n\n\n<p>Search for <strong>Microsoft Entra SAML Toolkit<\/strong> and select it from the results and assign a name to the application.<\/p>\n\n\n\n<p class=\"wp-block-ht-blocks-messages wp-block-hb-message wp-block-hb-message--withicon\"><strong>Tip <\/strong>&#8211; We recommend to reference m-Power in the application name. <br><br>e.g. &#8220;<em>Microsoft Entra SAML Toolkit for m-Power<\/em>&#8220;. This will help future Azure Portal administrators know this application is for m-Power.  <\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69e3f012c0ca1&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69e3f012c0ca1\" class=\"wp-block-image size-full wp-lightbox-container\"><img decoding=\"async\" width=\"585\" height=\"523\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-69.png\" alt=\"\" class=\"wp-image-12028\" srcset=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-69.png 585w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-69-300x268.png 300w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-69-150x134.png 150w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-69-50x45.png 50w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-69-60x54.png 60w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-69-100x89.png 100w\" sizes=\"(max-width: 585px) 100vw, 585px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n<\/div><\/div>\n\n\n\n<p>Press &#8216;Create&#8217; and wait for the application to be created. <\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Assign Users<\/h4>\n\n\n\n<p>From left-hand menu, select <strong>Users and groups<\/strong>. Select<strong> Add user\/group<\/strong>. Select the appropriate groups, users, or roles to use with your m-Power dictionary&#8217;s SSO. Finally click <strong>Assign<\/strong>.<\/p>\n\n\n\n<p>The purpose of this is to tell Entra what users should be allowed to access m-Power based applications.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Configure SSO for <strong>Microsoft Entra ID<\/strong><\/h4>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<p>From the left-hand menu, select <strong>Single sign-on<\/strong>. Then select the <strong>SAML<\/strong> single sign-on method.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"900\" height=\"206\" src=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-70-900x206.png\" alt=\"\" class=\"wp-image-12029\" srcset=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-70-900x206.png 900w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-70-300x69.png 300w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-70-150x34.png 150w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-70-768x175.png 768w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-70-50x11.png 50w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-70-60x14.png 60w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-70-100x23.png 100w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-70.png 1099w\" sizes=\"(max-width: 900px) 100vw, 900px\" \/><\/figure>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<p>On the&nbsp;<strong>Set up single sign-on with SAML<\/strong>&nbsp;page, click the pencil icon for&nbsp;<strong>Basic SAML Configuration<\/strong>&nbsp;to edit the settings.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"774\" height=\"209\" src=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-71.png\" alt=\"\" class=\"wp-image-12030\" srcset=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-71.png 774w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-71-300x81.png 300w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-71-150x41.png 150w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-71-768x207.png 768w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-71-50x14.png 50w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-71-60x16.png 60w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-71-100x27.png 100w\" sizes=\"(max-width: 774px) 100vw, 774px\" \/><\/figure>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<p><strong>Identifier (Entity ID) &#8211;<\/strong> Edit the URL and enter your SP&#8217;s entity ID. <\/p>\n\n\n\n<p class=\"wp-block-ht-blocks-messages wp-block-hb-message wp-block-hb-message--withicon\">You can find this value on line #14 from your onelogin.saml.properties file.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"754\" height=\"199\" src=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-72.png\" alt=\"\" class=\"wp-image-12031\" srcset=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-72.png 754w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-72-300x79.png 300w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-72-150x40.png 150w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-72-50x13.png 50w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-72-60x16.png 60w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-72-100x26.png 100w\" sizes=\"(max-width: 754px) 100vw, 754px\" \/><\/figure>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<p><strong>Reply URL (Assertion Consumer Service URL) &#8211; <\/strong>Click <strong>Add reply URL<\/strong>. Enter your m-Power server&#8217;s ACS URL. <\/p>\n\n\n\n<p class=\"wp-block-ht-blocks-messages wp-block-hb-message wp-block-hb-message--withicon\">You can find this value on line #19 from your onelogin.saml.properties file.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"740\" height=\"195\" src=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-73.png\" alt=\"\" class=\"wp-image-12032\" srcset=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-73.png 740w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-73-300x79.png 300w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-73-150x40.png 150w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-73-50x13.png 50w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-73-60x16.png 60w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-73-100x26.png 100w\" sizes=\"(max-width: 740px) 100vw, 740px\" \/><\/figure>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<p><strong>Sign On URL &#8211; <\/strong>Enter the m-Power dictionary login URL (i.e. https:\/\/your_server_name\/mrcjava\/servlet\/DICTIONARY.Login)<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"740\" height=\"133\" src=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-74.png\" alt=\"\" class=\"wp-image-12033\" srcset=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-74.png 740w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-74-300x54.png 300w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-74-150x27.png 150w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-74-50x9.png 50w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-74-60x11.png 60w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-74-100x18.png 100w\" sizes=\"(max-width: 740px) 100vw, 740px\" \/><\/figure>\n<\/div><\/div>\n\n\n\n<p>Click <strong>Save<\/strong> at the top of the page.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Add Azure IdP Info to m-Power<\/h4>\n\n\n\n<p>Now that Azure has been properly configured, there is just a bit more housekeeping needed to be done within m-Power, specifically within the\/mrcjava\/WEB-INF\/classes\/onelogin.saml.properties file. <\/p>\n\n\n\n<p>On the Azure Portal, in your application&#8217;s Single Sign-On set up page, scroll to section 3 <strong>SAML Certificates<\/strong>, click the <strong>Certificate (Base64)<\/strong> Download link. <\/p>\n\n\n\n<p>Change the .cer extension to .pem. Open the file with a text editor (such as Notepad++). <\/p>\n\n\n\n<p>This certificate string needs to be unformatted with no line breaks when entered into the m-Power configuration file. To help with this, open your browser to <a rel=\"noreferrer noopener\" href=\"https:\/\/www.samltool.com\/format_x509cert.php\" target=\"_blank\">https:\/\/www.samltool.com\/format_x509cert.php<\/a>. <\/p>\n\n\n\n<p>Copy\/paste the entire text from the .pem file into the <strong>X.509 cert<\/strong> section of the samltool website. Click <strong>Format x.509 Certificate<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"846\" height=\"368\" src=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-80.png\" alt=\"\" class=\"wp-image-12040\" srcset=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-80.png 846w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-80-300x130.png 300w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-80-150x65.png 150w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-80-768x334.png 768w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-80-50x22.png 50w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-80-60x26.png 60w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-80-100x43.png 100w\" sizes=\"(max-width: 846px) 100vw, 846px\" \/><\/figure>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<p>Copy the string from the last input box <strong><strong>X.509 cert in string format<\/strong><\/strong>. <\/p>\n\n\n\n<p>Paste this string into line #79 of the onelogin.saml.properties file <strong>onelogin.saml2.idp.x509<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"869\" height=\"315\" src=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-81.png\" alt=\"\" class=\"wp-image-12041\" srcset=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-81.png 869w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-81-300x109.png 300w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-81-150x54.png 150w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-81-768x278.png 768w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-81-50x18.png 50w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-81-60x22.png 60w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-81-100x36.png 100w\" sizes=\"(max-width: 869px) 100vw, 869px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"654\" height=\"55\" src=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-77.png\" alt=\"\" class=\"wp-image-12037\" srcset=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-77.png 654w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-77-300x25.png 300w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-77-150x13.png 150w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-77-50x4.png 50w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-77-60x5.png 60w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-77-100x8.png 100w\" sizes=\"(max-width: 654px) 100vw, 654px\" \/><\/figure>\n<\/div><\/div>\n\n\n\n<p>Scroll to section 4 <strong>Set up [Application Name]<\/strong> on the Azure portal. <\/p>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<p>Copy the <strong>Microsoft Entra Identifier<\/strong> to line #53 <strong>onelogin.saml2.idp.entityid<\/strong>.<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69e3f012c1c3a&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69e3f012c1c3a\" class=\"wp-block-image size-full wp-lightbox-container\"><img decoding=\"async\" width=\"764\" height=\"206\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-82.png\" alt=\"\" class=\"wp-image-12042\" srcset=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-82.png 764w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-82-300x81.png 300w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-82-150x40.png 150w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-82-50x13.png 50w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-82-60x16.png 60w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-82-100x27.png 100w\" sizes=\"(max-width: 764px) 100vw, 764px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"742\" height=\"64\" src=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-78.png\" alt=\"\" class=\"wp-image-12038\" srcset=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-78.png 742w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-78-300x26.png 300w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-78-150x13.png 150w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-78-50x4.png 50w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-78-60x5.png 60w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-78-100x9.png 100w\" sizes=\"(max-width: 742px) 100vw, 742px\" \/><\/figure>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<p>Copy the <strong>Login URL<\/strong> to line #57 <strong>onelogin.saml2.idp.single_sign_on_service.url<\/strong>.<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69e3f012c211a&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69e3f012c211a\" class=\"wp-block-image size-full wp-lightbox-container\"><img decoding=\"async\" width=\"764\" height=\"206\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-83.png\" alt=\"\" class=\"wp-image-12043\" srcset=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-83.png 764w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-83-300x81.png 300w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-83-150x40.png 150w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-83-50x13.png 50w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-83-60x16.png 60w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-83-100x27.png 100w\" sizes=\"(max-width: 764px) 100vw, 764px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"742\" height=\"63\" src=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-79.png\" alt=\"\" class=\"wp-image-12039\" srcset=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-79.png 742w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-79-300x25.png 300w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-79-150x13.png 150w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-79-50x4.png 50w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-79-60x5.png 60w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-79-100x8.png 100w\" sizes=\"(max-width: 742px) 100vw, 742px\" \/><\/figure>\n<\/div><\/div>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Signed Assertion<\/strong><\/h4>\n\n\n\n<p>Some IdP&#8217;s require that the assertion being sent to the IdPbe signed. If that is the case in your situation, please review the following steps:<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Generate Certificates<\/h5>\n\n\n\n<p>You will need to generate a signed public certificate as well as a signed private key. One may use the <strong>openssl<\/strong> program to do so.<\/p>\n\n\n\n<p>Navigator to the directory of your choosing (i.e. cd \/temp). Then run the following command:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>openssl req -x509 -days 365 -newkey rsa:2048 -nodes -keyout SAML-key.pem -out SAML-cert.pem<\/code><\/pre>\n\n\n\n<p>You will be prompted to answer verification questions for the signed certificates:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Country Name (2 letter code)<\/li>\n\n\n\n<li>State or Province Name (full name)<\/li>\n\n\n\n<li>Locality Name (eg, city)<\/li>\n\n\n\n<li>Organization Name (eg, company)<\/li>\n\n\n\n<li>Organizational Unit Name (eg, section)<\/li>\n\n\n\n<li>Common Name (eg, your name or your server\u2019s hostname)<\/li>\n\n\n\n<li>Email Address<\/li>\n<\/ul>\n\n\n\n<p>After answering the questions, two files will be created in your current directory:&nbsp;<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>SAML-cert.pem&nbsp;<\/li>\n\n\n\n<li>SAML-key.pem<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<h5 class=\"wp-block-heading\">Add Certificate and Key Information to m-Power&#8217;s SAML Property File<\/h5>\n\n\n\n<p>The string contents of both will need to be added to the onelogin.saml.properties file. However, once again, the strings need to be unformatted. <\/p>\n<\/div><\/div>\n\n\n\n<p>Open the SAML-cert.pem file in a text editor (such as Notepad++). Copy\/paste the entire text from the .pem file into the <strong>X.509 cert<\/strong> section of the <a href=\"https:\/\/www.samltool.com\/format_x509cert.php\" target=\"_blank\" rel=\"noreferrer noopener\">samltool website<\/a>. Click <strong>Format x.509 Certificate<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"846\" height=\"368\" src=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-84.png\" alt=\"\" class=\"wp-image-12056\" srcset=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-84.png 846w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-84-300x130.png 300w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-84-150x65.png 150w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-84-768x334.png 768w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-84-50x22.png 50w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-84-60x26.png 60w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-84-100x43.png 100w\" sizes=\"(max-width: 846px) 100vw, 846px\" \/><\/figure>\n\n\n\n<p>Copy the string from the last input box <strong><strong>X.509 cert in string format<\/strong><\/strong>. Paste this string into line #43 of the onelogin.saml.properties file <strong>onelogin.saml2.sp.x509<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"869\" height=\"315\" src=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-81.png\" alt=\"\" class=\"wp-image-12041\" srcset=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-81.png 869w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-81-300x109.png 300w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-81-150x54.png 150w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-81-768x278.png 768w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-81-50x18.png 50w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-81-60x22.png 60w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-81-100x36.png 100w\" sizes=\"(max-width: 869px) 100vw, 869px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"618\" height=\"81\" src=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-85.png\" alt=\"\" class=\"wp-image-12057\" srcset=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-85.png 618w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-85-300x39.png 300w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-85-150x20.png 150w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-85-50x7.png 50w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-85-60x8.png 60w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-85-100x13.png 100w\" sizes=\"(max-width: 618px) 100vw, 618px\" \/><\/figure>\n\n\n\n<p>Next, open the SAML-key.pem file in the text editor. Copy\/paste the entire text from the .pem file into the <strong>Private Key<\/strong> section of the <a href=\"https:\/\/www.samltool.com\/format_privatekey.php\" data-type=\"URL\" data-id=\"https:\/\/www.samltool.com\/format_privatekey.php\">samltool website<\/a>. Click <strong>Format Private Key<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"854\" height=\"366\" src=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-86.png\" alt=\"\" class=\"wp-image-12058\" srcset=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-86.png 854w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-86-300x129.png 300w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-86-150x64.png 150w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-86-768x329.png 768w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-86-50x21.png 50w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-86-60x26.png 60w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-86-100x43.png 100w\" sizes=\"(max-width: 854px) 100vw, 854px\" \/><\/figure>\n\n\n\n<p>Copy the string from the last input box <strong><strong>Private Key in string format<\/strong><\/strong>. Paste this string into line #47 of the onelogin.saml.properties file <strong>onelogin.saml2.sp.privatekey<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"846\" height=\"311\" src=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-87.png\" alt=\"\" class=\"wp-image-12059\" srcset=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-87.png 846w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-87-300x110.png 300w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-87-150x55.png 150w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-87-768x282.png 768w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-87-50x18.png 50w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-87-60x22.png 60w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-87-100x37.png 100w\" sizes=\"(max-width: 846px) 100vw, 846px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"900\" height=\"74\" src=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-88-900x74.png\" alt=\"\" class=\"wp-image-12060\" srcset=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-88-900x74.png 900w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-88-300x25.png 300w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-88-150x12.png 150w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-88-768x63.png 768w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-88-50x4.png 50w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-88-60x5.png 60w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-88-100x8.png 100w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-88.png 984w\" sizes=\"(max-width: 900px) 100vw, 900px\" \/><\/figure>\n\n\n\n<p>Finally, we need to instruct our SP to send these assertions to the SP signed. To do this, find line #101 in the onelogin.saml.properties file. Set <strong>onelogin.saml2.security.authnrequest_signed<\/strong> value to <strong>true<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"617\" height=\"59\" src=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-89.png\" alt=\"\" class=\"wp-image-12061\" srcset=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-89.png 617w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-89-300x29.png 300w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-89-150x14.png 150w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-89-50x5.png 50w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-89-60x6.png 60w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-89-100x10.png 100w\" sizes=\"(max-width: 617px) 100vw, 617px\" \/><\/figure>\n\n\n\n<p>Save and restart Tomcat.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Configure Azure<\/h5>\n\n\n\n<p>Change the extension of the SAML-cert.pem file to .cer.<\/p>\n\n\n\n<p>From the Enterprise Application Single Sign On Set Up screen, find the <strong>SAML Certificates<\/strong> section. Click the pencil icon to edit the V<strong>erification Certificates<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"763\" height=\"385\" src=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-90.png\" alt=\"\" class=\"wp-image-12062\" srcset=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-90.png 763w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-90-300x151.png 300w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-90-150x76.png 150w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-90-50x25.png 50w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-90-60x30.png 60w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-90-100x50.png 100w\" sizes=\"(max-width: 763px) 100vw, 763px\" \/><\/figure>\n\n\n\n<p>Check to box to <strong>Require verification certificates<\/strong> and click the button to <strong>Upload certificate<\/strong>. Select the SAML-cert.cer file generated in the previous steps.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"850\" height=\"379\" src=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-91.png\" alt=\"\" class=\"wp-image-12063\" srcset=\"https:\/\/www.mrc-productivity.com\/docs\/images\/image-91.png 850w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-91-300x134.png 300w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-91-150x67.png 150w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-91-768x342.png 768w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-91-50x22.png 50w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-91-60x27.png 60w, https:\/\/www.mrc-productivity.com\/docs\/images\/image-91-100x45.png 100w\" sizes=\"(max-width: 850px) 100vw, 850px\" \/><\/figure>\n\n\n\n<p>Click <strong>Save<\/strong>.<\/p>\n\n\n\n<p>You will now be able to sign into your m-Power applications with your Microsoft Azure credentials via SSO and SAML.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This document will explain how to configure m-Power as well as a 3rd party tool (in our case, Microsoft\u2019s Azure) to utilize SAML for single sign on access to generated m-Power applications.<\/p>\n","protected":false},"author":1,"comment_status":"closed","ping_status":"closed","template":"","format":"standard","meta":{"footnotes":""},"ht-kb-category":[257],"ht-kb-tag":[297,296,295],"class_list":["post-11996","ht_kb","type-ht_kb","status-publish","format-standard","hentry","ht_kb_category-security","ht_kb_tag-security","ht_kb_tag-single-sign-on","ht_kb_tag-sso"],"_links":{"self":[{"href":"https:\/\/www.mrc-productivity.com\/docs\/wp-json\/wp\/v2\/ht-kb\/11996","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mrc-productivity.com\/docs\/wp-json\/wp\/v2\/ht-kb"}],"about":[{"href":"https:\/\/www.mrc-productivity.com\/docs\/wp-json\/wp\/v2\/types\/ht_kb"}],"author":[{"embeddable":true,"href":"https:\/\/www.mrc-productivity.com\/docs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mrc-productivity.com\/docs\/wp-json\/wp\/v2\/comments?post=11996"}],"version-history":[{"count":27,"href":"https:\/\/www.mrc-productivity.com\/docs\/wp-json\/wp\/v2\/ht-kb\/11996\/revisions"}],"predecessor-version":[{"id":14652,"href":"https:\/\/www.mrc-productivity.com\/docs\/wp-json\/wp\/v2\/ht-kb\/11996\/revisions\/14652"}],"wp:attachment":[{"href":"https:\/\/www.mrc-productivity.com\/docs\/wp-json\/wp\/v2\/media?parent=11996"}],"wp:term":[{"taxonomy":"ht_kb_category","embeddable":true,"href":"https:\/\/www.mrc-productivity.com\/docs\/wp-json\/wp\/v2\/ht-kb-category?post=11996"},{"taxonomy":"ht_kb_tag","embeddable":true,"href":"https:\/\/www.mrc-productivity.com\/docs\/wp-json\/wp\/v2\/ht-kb-tag?post=11996"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}