Search Results :

×

OAuth Single Sign-On (SSO) For Shopify Using Affinidi as Identity Provider


miniOrange allows Affinidi to act as an IDP (Identity Provider), which allows users to Single Sign-On (SSO) into Shopify using Affinidi 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 Affinidi as IdP (Identity Provider) and Shopify store as SP (Service Provider).

Pre-requisite : Single Sign On - SSO Application

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

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


Step by Step guide for Configuring Affinidi as IDP for SSO into Shopify

1. Configure Shopify as SP in Affinidi

  • Go to Affinidi Login under the Services section.
  • Click on the Create Login Configuration and provide the required details.
  • Enter the name as per your convenience.
  • Redirect URIs is the OAuth Callback URL which you will get from Step 2.
  • Shopify SSO - Create App
  • Under Additional Configuration, for the Auth method, select Client Secret Post.
  • Shopify SSO - Select Auth Method
  • Click on Edit.
  • Shopify SSO - Select Auth Method
  • Copy the presentation definition below.
  • {
      "id": "vp_email_user_profile",
      "submission_requirements": [
        {
          "rule": "pick",
          "min": 1,
          "from": "A"
        }
      ],
      "input_descriptors": [
        {
          "id": "email_vc",
          "name": "Email VC",
          "purpose": "Check if VC data contains necessary fields",
          "group": ["A"],
          "constraints": {
            "fields": [
              {
                "path": ["$.type"],
                "purpose": "Check if VC type is correct",
                "filter": {
                  "type": "array",
                  "contains": {
                    "type": "string",
                    "pattern": "Email"
                  }
                }
              }
              ,{
                "path": ["$.credentialSubject.email"],
                "purpose": "Check if VC contains email field",
                "filter": {
                  "type": "string"
                }
              }
              ,{
                "path": ["$.issuer"],
                "purpose": "Check if VC Issuer is Trusted",
                "filter": {
                  "type": "string",
                  "pattern": "^did:key:zQ3shtMGCU89kb2RMknNZcYGUcHW8P6Cq3CoQyvoDs7Qqh33N"
                }
              }
            ]
          }
        },
        {
          "id": "givenname_vc",
          "name": "givenname VC",
          "purpose": "Check if VC data contains necessary fields",
          "group": ["A"],
          "constraints": {
            "fields": [
              {
                "path": ["$.type"],
                "purpose": "Check if VC type is correct",
                "filter": {
                  "type": "array",
                  "contains": {
                    "type": "string",
                    "pattern": "HITGivenName"
                  }
                }
              }
              ,{
                "path": ["$.credentialSubject.givenName"],
                "purpose": "given Name",
                "filter": {
                  "type": "string"
                }
              }
            ]
          }
        },
        {
          "id": "familyName_vc",
          "name": "familyName VC",
          "purpose": "Check if VC data contains necessary fields",
          "group": ["A"],
          "constraints": {
            "fields": [
              {
                "path": ["$.type"],
                "purpose": "Check if VC type is correct",
                "filter": {
                  "type": "array",
                  "contains": {
                    "type": "string",
                    "pattern": "HITFamilyName"
                  }
                }
              }
              ,{
                "path": ["$.credentialSubject.familyName"],
                "purpose": "family Name",
                "filter": {
                  "type": "string"
                }
              }
            ]
          }
        }
      ]
    }
  • Paste it in PEX editor, then click on Continue button.
  • Shopify SSO - Paste presentation definition
  • Copy the ID Token Mapping below. This ID Token format is based on the presentation definition we defined previously.
  • {
      "id": "vp_email_user_profile",
      "submission_requirements": [
        {
          "rule": "pick",
          "min": 1,
          "from": "A"
        }
      ],
      "input_descriptors": [
        {
          "id": "email_vc",
          "name": "Email VC",
          "purpose": "Check if VC data contains necessary fields",
          "group": [
            "A"
          ],
          "constraints": {
            "fields": [
              {
                "path": [
                  "$.type"
                ],
                "purpose": "Check if VC type is correct",
                "filter": {
                  "type": "array",
                  "contains": {
                    "type": "string",
                    "pattern": "Email"
                  }
                }
              }
              ,{
                "path": [
                  "$.credentialSubject.email"
                ],
                "purpose": "Check if VC contains email field",
                "filter": {
                  "type": "string"
                }
              }
              ,{
                "path": [
                  "$.issuer"
                ],
                "purpose": "Check if VC Issuer is Trusted",
                "filter": {
                  "type": "string",
                  "pattern": "^did:key:zQ3shtMGCU89kb2RMknNZcYGUcHW8P6Cq3CoQyvoDs7Qqh33N"
                }
              }
            ]
          }
        },
        {
          "id": "givenname_vc",
          "name": "givenname VC",
          "purpose": "Check if VC data contains necessary fields",
          "group": [
            "A"
          ],
          "constraints": {
            "fields": [
              {
                "path": [
                  "$.type"
                ],
                "purpose": "Check if VC type is correct",
                "filter": {
                  "type": "array",
                  "contains": {
                    "type": "string",
                    "pattern": "HITGivenName"
                  }
                }
              }
              ,{
                "path": [
                  "$.credentialSubject.givenName"
                ],
                "purpose": "given Name",
                "filter": {
                  "type": "string"
                }
              }
            ]
          }
        },
        {
          "id": "familyName_vc",
          "name": "familyName VC",
          "purpose": "Check if VC data contains necessary fields",
          "group": [
            "A"
          ],
          "constraints": {
            "fields": [
              {
                "path": [
                  "$.type"
                ],
                "purpose": "Check if VC type is correct",
                "filter": {
                  "type": "array",
                  "contains": {
                    "type": "string",
                    "pattern": "HITFamilyName"
                  }
                }
              }
              ,{
                "path": [
                  "$.credentialSubject.familyName"
                ],
                "purpose": "family Name",
                "filter": {
                  "type": "string"
                }
              }
            ]
          }
        }
      ]
    }
  • Paste it in ID token mapping editor and click on Done button.
  • Shopify SSO - Paste ID Token Mapping
  • After copying the Client ID & Issuer and closing the popup, you are redirected back to the Affinidi Login page.
  • Shopify SSO - Copy Client ID and Secret

2. Configure Affinidi 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 SSO - single sign on application
  • Select OAuth protocol.
  • Shopify SSO - Select OAuth protocol
  • From the list of identity providers (IDPs), select Custom IDP.
  • Shopify SSO - Select Affinidi as IDP
  • Enter the identity provider (IDP) display name.
  • Now, fill in the required details like Endpoints, Client ID, Client Secret, and Scope.
  • Please refer to the below table for configuring the values:
  • App Name Affinidi
    App Display Name As per your convenience
    Authorize Endpoint https://<your-affinidi-domain>.login.affinidi.io/oauth2/auth
    Token Endpoint https://<your-affinidi-domain>.login.affinidi.io/oauth2/token
    User Info Endpoint https://<your-affinidi-domain>.login.affinidi.io/userinfo
    Scopes openid offline_access
  • Note down the Callback URL which will be required while configuring SSO.
  • Shopify SSO - Import Affinidi Metadata
  • Click on Save.

You have successfully configured Affinidi as an identity provider (IDP) in Shopify.

3. Test Connection

  • After saving the IDP configuration, you will be redirected to Test Connection step.
  • Perform test connection before mapping or fetching attributes, test connection ensures that your IDP configuration is correct.
  • Click on Test Connection.
  • Shopify SSO - Affinidi login page
  • On entering valid Affinidi credentials you will see a pop-up window which as shown in below screen.
  • Affinidi Single Sign On SSO SucessTestConnection

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.
  • Shopify SSO - Test SSO Connection
  • 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 you have successfully configured Shopify Single Sign-On (SSO) using Affinidi 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 Affinidi login credentials within minutes.

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.

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.

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
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