Search Results :

×

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

  • Navigate back to the miniOrange Single Sign On-SSO application and click on Add identity Provider button.
  • Shopify Shibboleth Login - go to SSO application
  • Select SAML protocol.
  • Shopify Shibboleth Login - Select SAML Protocol
  • From the list of IDPs, select Shiboleth.
  • Shopify Shibboleth Login - Choose Okta IDP
  • Click on the Import IDP Metadata button.
  • Shopify Shibboleth Login - Import IDP Metadata
  • Select the upload method as Metadata Link. Paste the copied XML file link from Step 1 and Click on Import.
  • Shopify Shibboleth Login - import Metadata
  • 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.
  • Add the appropriate IDP Name and click on Save.
  • Shopify Shibboleth Login - enter IDP name

3.   Test Connection

  • After saving the IDP configuration, you will be redirected to Test Connection step.
    Please perform Test Connection before mapping or fetching attributes, test connection ensures that your IDP configuration is correct.
  • Click on the Test Connection button.
  • Shopify Shibboleth Login - test Connection
  • If you encounter an "invalid or missing reCAPTCHA token" error accompanied by a "Something went wrong" message, refer to this FAQ to resolve the error.
  • Shopify Shibboleth SSO - Something went wrong error
  • Else, you’ll be redirected to the login page of the IDP you configured in previous step. Log in with your IDP account credentials.
  • Shopify Shibboleth Login - SSO Sucess Test Connection
  • Click on the Fetch Attributes button to fetch IDP attribute.
  • Shopify Shibboleth Login - Fetch Attributes

4.   Attribute Mapping

  • Click on the + Attribute Mapping button to map attributes between Shopify and Shibboleth.
  • Shopify Shibboleth Login - Add Attribute
  • Map the attributes by refering the table below:
  • Shopify Shibboleth Login - Map Attributes
    Attribute Name in Shopify Choose the attribute from the list of predefined attributes
    Attribute Type IDP Attribute
    Attribute Value Select the attribute value you have fetched from your IDP
  • Click on Save.
  • Shopify Shibboleth Login - Save Attribute Mapping
  • Navigate to the application home page. Go to More actions against the IDP you have configured and click on Make Default button to make the IDP default.
  • Shopify Shibboleth Login - Make application Default

5.   Testing SSO

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

Troubleshooting

invalid_request

This may be because your primary domain would be different from your Shopify domain. To check your primary domain and make SSO work, follow the steps given here.

shopify_plan_expired

This issue arises when either the trial period of your Development plan is expired. Or if your plan is not auto-renewed from the Shopify end. Contact us at shopifysupport@xecurify.com to resolve the plan upgrade issue and get smooth functioning of the SSO – Single Sign On Application.

invalid_attributes_received

As email is a required entity in Shopify for account creation as well as login operation, Single Sign On is not successful in this case. To resolve this error, please follow given here.

encountered_an_error

When I am performing SSO, I am getting ‘Please verify if Shopify App is installed’ error. To resolve this error, please follow given here.

If your error or query is not listed here, click here to see others.


Frequently Asked Questions (FAQs)


I have followed the steps to set IdP but where can I check SSO?

Follow the steps outlined here to configure SSO in Shopify with your preferred IDP.

I installed the Shopify SSO application. I clicked on the “SETUP IDP” option but nothing opened up.

Redirection to any other site might be blocked in the browser. Please follow the steps given here to resolve the issue.

When I try to perform SSO, I get redirected to the “Incorrect App Configuration” page and then after subsequent attempts, I get redirected to https://store.xecurify.com/moas/login page.

You might be trying to perform SSO in the different tab of the same browser where you have opened our Single Sign-On – SSO Application or accessed the configuration portal of our application. In this case, SSO will be restricted due to security reasons.
Try to perform Single Sign On in a new incognito/private window or in a different browser in order to make SSO work.

After performing SSO, I want my customers to redirect to the collections or discount offer page.

Follow the steps outlined here to redirect your customer to collections/cart or any other page.

How do I enable the SSO application’s auto redirect to IDP feature on my Shopify store?

You must upgrade to the SSO application’s Enterprise plan to enable the Auto-Redirect to the IDP feature. Follow the steps outlined here to enable this feature.

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



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