Shopify Single Sign-On (SSO) solution using Shibboleth as Identity Provider (IDP)

Shopify Single Sign-On (SSO) solution using Shibboleth as Identity Provider (IDP)


miniOrange allows Shibboleth to act as an IDP (Identity Provider), which allows users to Single Sign-On (SSO) into Shopify using Shibboleth Credentials. Our application is compatible with all the SAML / OAuth compliant Identity Providers. We will go through a step-by-step guide to configure Single Sign-On (SSO) into Shopify using Shibboleth as IdP (Identity Provider) and Shopify store as SP (Service Provider).

Pre-requisite : Single Sign On - SSO Application

To configure SSO with Shibboleth as IDP, you will need to install the miniOrange Single Sign On - SSO Application on your Shopify store:

miniOrange Provides Secure Single Sign-On (SSO) access to your Shopify applications(both plus and Non plus Stores).


Step by Step guide for Configuring Single Sign-On (SSO) into Shopify using Shibboleth as an Identity Provider (IDP).

1.  Configuring Shopify as Service Provider (SP) in Shibboleth

  • In conf/idpproperties, uncomment and set 'idp.encryption.optionaI' to true.
  • eg. idp.encryption.optional = true
    
  • In conf/metadata-providers.xml, configure Service Provider like this
  •    <MetadataProvider xmlns:samlmd="urn:oasis:names:tc:SAML:2.0:metadata" 
         id="miniOrangeInLineEntity" xsi:type="InlineMetadataProvider" sortKey="1">
           <samlmd:EntityDescriptor ID="entity" entityID="<SP-EntityID/Issuer from SP info tab in plugin.>"
           validUntil="2020-09-06T04:13:32Z">
           <samlmd:SPSSODescriptor AuthnRequestsSigned="false" WantAssertionsSigned="true"
           protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
             <samlmd:NameIDFormat>
               urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
             </samlmd:NameIDFormat>
           <samlmd:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
           Location="<ACS (AssertionConsumerService) URL from Step1 of the plugin under IDP Tab.>"
             index="1" />
           </samlmd:SPSSODescriptor>
           </samlmd:EntityDescriptor>
       </MetadataProvider>
  • In conf/saml-nameid.properties, uncomment and set default NameID as Email Address like this
  •  idp.nameid.saml2.default=urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
    
  • In conf/saml-nameid-xml, search for shibboleth.SAML2NameIDGenerators. Uncomment the shibboleth.SAML2AttributeSourcedGenerator bean and comment all other ref beans
  •  <!-- SAML 2 NameID Generation --> 
     <util:list id="shibboleth.SAML2NameIDGenerators">
       <!--<ref bean="shibboleth.SAML2TransientGenerator" /> -->
       <!-->ref bean="shibboleth.SAML2PersistentGenerator" /> -->
       <bean parent="shibboleth.SAML2AttributeSourcedGenerator"
       p:format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress"
       p:attributeSourceIds="#{ {'email'} }" />
     </util:list>
  • Make sure you have defined AttributeDefinition in conf/attribute-resolver.xml.
  •  <!-- Note: AttributeDefinitionid must be same as what you provided in attributeSourceIds in conf/saml-nameid.xml --> 
     <resolver:AttributeDefinitionxsi:type="ad:Simple" id="email" sourceAttributeID="mail">
       <resolver:Dependency ref="ldapConnector" />
       <resolver:AttributeEncoderxsi:type="enc:SAML2String" name="email" friendlyName="email" />
     </resolver:AttributeDefinition >

     <resolver:DataConnector id="ldapConnector" xsi:type="dc:LDAPDirectory" ldapURL="%{idp.authn.LDAP.ldapURL}"
       baseDN="%{idp.authn.LDAP.baseDN}" principal="%{idp.authn.LDAP.bindDN}"
       principalCredential="%{idp.authn.LDAP.bindDNCredential}">
       <dc:FilterTemplate>
         <!-- Define you User Search Filter here -->
         <![CDATA[ (&(objectclass=*)(cn=$requestContext.principalName)) ]]>
       </dc:FilterTemplate>

       <dc:ReturnAttributes>*</dc:ReturnAttributes>
     </resolver:DataConnector>
  • Make sure you have AttributeFilterPolicy defined in conf/attribute-filter.xml.
  •  <afp:AttributeFilterPolicy id="ldapAttributes"> 
     <afp:PolicyRequirementRulexsi:type="basic:ANY"/>
       <afp:AttributeRuleattributeID="email">
         <afp:PermitValueRulexsi:type="basic:ANY"/>
       </afp:AttributeRule>
     </afp:AttributeFilterPolicy>
  • Restart the Shibboleth Server.

2.  Configure Shibboleth as an Identity Provider (IDP) in Shopify

  • Go to your Shopify store and click on Setup IDP button in the top left in navigation bar.
  • Shibboleth as IDP - Single Sign-On SSO Shopify - configure idp to enable (sso)
  • From the left navigation bar select Identity Provider. Click on Add Identity Provider.
  • Shibboleth as IDP - Single Sign-On SSO Shopify - add identity provider
  • Select SAML. Click on Import IDP metadata and browse for the file downloaded in step 1.
  • Shibboleth as IDP - Single Sign-On SSO Shopify - Select SAML IDP and import metadata
  • Enter Shibboleth as IDP name and click on Save.
  • You can also provide the details manually. You need to configure following endpoints:
  • IDP Entity ID https://<your_domain>/idp/shibboleth
    Single Login URL https://<your_domain>/idp/profile/SAML2/Redirect/SSO
    Single Logout URL https://<your_domain>/idp/shibboleth
    X.509 Certificate The public key certificate of your Shibboleth server.

Step 3: Test Shibboleth IDP Connection

  • Go to Identity Providers tab.
  • Click on Select >> Test Connection option against the Shibboleth Identity Provider you configured.
  • Shibboleth as IDP - Single Sign-On SSO Shopify - Test Shibboleth IDP Connection
  • On entering valid Shibboleth IDP credentials you will see Test Successful pop-up window as shown in the below screenshot.
  • Shibboleth as IDP - Single Sign-On SSO Shopify - Shibboleth Identity Provider Connection Success

4. Testing SSO for your Shopify Store

  • Go to your Shopify Store login page.(https://<your-shopify-storedomain>/account/login)
  • Click on the login button you customized earlier.
  • select project google oauth provider
  • You’ll be redirected to the login page of the Shibboleth you configured in previous step. Log in with your Shibboleth account credentials.
  • You’ll be successfully logged in to your Shopify store.

Hence you have successfully configured Shopify Single Sign-On (SSO) using Shibboleth as IDP and Shopify as SP using miniOrange Single Sign-On (SSO) login application. This solution ensures that you are ready to roll out secure access to your Shopify store using Shibboleth login credentials within minutes.

Choose your preferred Identity Provider and start setting up SSO for Shopify right away


Additional Resources


If you are looking for anything which you cannot find, please drop us an email on shopifysupport@xecurify.com.

Hello there!

Need Help? We are right here!

support
Contact miniOrange Support
success

Thanks for your inquiry.

If you dont hear from us within 24 hours, please feel free to send a follow up email to info@xecurify.com