Single Sign-On (SSO) for Apps Using AWS Cognito as IDP

Single Sign-On (SSO) for Apps Using AWS Cognito as IDP


AWS Cognito Single Sign On (SSO) solution by miniOrange provides a ready to use solution for your application. This solution ensures that you are ready to roll out secure access to your application using AWS Cognito as IDP (Identity Provider) within minutes. AWS Cognito as IDP solution by miniOrange helps you to SSO login to your cloud and SAAS applications and websites using your existing Cognito login Credentials. This centralized Single Sign-On solution can be implemented by configuring Cognito as IDP in miniOrange. Here we will go through a step-by-step guide to configure SSO login between website/application by considering Cognito as IdP (Identity provider).
miniOrange here can also act as an Identity Broker for cross protocol authentication. It basically means configuring a Service Provider (Here your application) following a particular protocol with an Identity Provider following some different protocol like SAML,OAuth etc. Once configured successfully you will be ready to securely access your cloud and SAAS applications and websites using AWS Cognito as IDP.

Pre-requisites

    Obtain the following steps to get callback url.

  • Go to miniOrange Admin Console.
  • From the left navigation bar select Identity Provider.
  • Select Identity Provider
  • You will get the callback URL here, keep it handy this would be required in next steps.
  • To setup Cognito IDP : Keep Callback URL

Step 1. Configure AWS Cognito as Userstore OR IDP in miniOrange

Note: If you would like to customize the AWS login page kindly choose AWS as the Userstore. For the default AWS login page, you can go with AWS as IdP configurations.



    1.1 Configuring miniOrange as Service Provider (SP) in AWS Cognito

    • Sign in to AWS Amazon.
    • OAuth/OpenID/OIDC Single Sign On (SSO)- Login to Amazon Console
    • Search for Cognito in the AWS Services search bar as shown below.
    • OAuth/OpenID/OIDC Single Sign On (SSO) - Search for AWS Cognito
    • Click on Mange User Pools button to see the list of your user pools.
    • OAuth/OpenID/OIDC Single Sign On (SSO)- AWS Cognito User Pools
    • Click on Create a user pool to create a new user pool.
    • OAuth/OpenID/OIDC Single Sign On (SSO) - Create New AWS Cognito Pool
    • Add a Pool Name and click on the Review Defaults button to continue.
    • OAuth/OpenID/OIDC Single Sign On (SSO)- Name your AWS Cognito User Pool
    • Click on “Add app client” & then click on Add an app client.
    • OAuth/OpenID/OIDC Single Sign On (SSO) - AWS Cognito App Client OAuth/OpenID/OIDC Single Sign On (SSO) - AWS Cognito App Client
    • Enter an App Client Name and click on Create app client to create an App client.
    • OAuth/OpenID/OIDC Single Sign On (SSO) - Create App Client Name OAuth/OpenID/OIDC Single Sign On (SSO) - Create App Client
    • Click on Return to Pool Details to come back to your configuration.
    • OAuth/OpenID/OIDC Single Sign On (SSO) - AWS Cognito Pool
    • Click on Create Pool button to save your settings and create a user pool.
    • OAuth/OpenID/OIDC Single Sign On - Save AWS Cognito Pool
    • In the navigation bar present on the left side, click on the App Client Settings option under the App Integration menu.
    • OAuth/OpenID/OIDC Single Sign On (SSO) - AWS Cognito App Details
    • Now go to the Cognito dashboard and select Cognito User Pool, add callback URL here.
    • Add application home page URL has to Sign out URL.
    • Also, select Authorization code grant as “Allowed OAuth Flows” & select OpenID as “Allowed OAuth Scopes”.
    • After selecting all details click on Save changes button.
    • OAuth/OpenID/OIDC Single Sign On - AWS Cognito App Client save
    • Go to “App client” and click on “Show details” to get a client ID and client secret. (Keep client ID and client secret handy as you will need it later.)

    • AWS cognito SSO Login App client to get Client Id and Client Secret
    • Go to domain name and enter a domain name for your app. After adding domain name you can check its availability by clicking on “Check availability” button. After entering valid domain name click "Save changes” button.

    • OAuth/OpenID/OIDC Single Sign On (SSO) - AWS Cognito Domain Name
    • Complete domain name: The complete domain name that you need to enter in miniOrange dashboard is {your domain name}.auth.{region name}.amazoncognito.com
    • OAuth/OpenID/OIDC Single Sign On (SSO) - AWS Cognito Domain Name
    • Add Users / Groups to Cognito App : Go to Users and groups and then click on Users. After this click on Create user.

    • OAuth/OpenID/OIDC Single Sign On (SSO), AWS cognito SSO Login Add Users / Groups
    • Fill all required informations and click on Create user.
    • OAuth/OpenID/OIDC Single Sign On (SSO), AWS cognito SSO Login Create user
    • Click on Groups and then click on Create group.
    • OAuth/OpenID/OIDC Single Sign On (SSO), AWS cognito SSO Login Groups
    • Fill all required informations and click on Create group.
    • OAuth/OpenID/OIDC Single Sign On (SSO), AWS cognito SSO Login Create group

    1.2 Configure AWS Cognito as Identity Provider (IDP) in miniOrange.

    • Go to miniOrange Admin Console.
    • From the left navigation bar select Identity Provider. Select Oauth

    • Select OAuth Identity Provider
      Switch to OAuth section
    • Enter the following values.
    • IdP Name Custom Provider
      IdP Display Name Choose appropriate Name
      OAuth Authorize Endpoint https://{cognito-app-domain}/oauth2/authorize
      OAuth Access Token Endpoint https://{cognito-app-domain}/oauth2/token
      OAuth Get User Info Endpoint (optional) https://{cognito-app-domain}/oauth2/userInfo
      Client ID From step 1
      Client secret From step 1
      Scope openid
    • Now you can click on Save.

    1.1 Configuring miniOrange as Service Provider (SP) in AWS Cognito

      A] Steps to Configure User Pool

    • Sign in to AWS Amazon.
    • Now enter “Cognito” in search textbox & select Cognito from dropdown.

    •  AWS cognito SSO Login Cognito
    • Go to “Manage your user pools”.
    • OAuth/OpenID/OIDC Single Sign On (SSO), AWS cognito SSO Login Manage user pools
    • Click on “Create a user pool”.

    • OAuth/OpenID/OIDC Single Sign On (SSO), AWS cognito SSO Login Create a user pool
    • Add pool name and select “Review Defaults”.

    • OAuth/OpenID/OIDC Single Sign On (SSO), AWS cognito SSO Login Review Defaults
    • Click on Edit icon as shown in the below image.

    • OAuth/OpenID/OIDC Single Sign On (SSO), AWS cognito SSO Login Edit
    • Now, Enable the Email Address and Phone Number option and click on Next step button.

    • OAuth/OpenID/OIDC Single Sign On (SSO), AWS cognito SSO configure email address and phone number
      OAuth/OpenID/OIDC Single Sign On (SSO), AWS cognito SSO Login Add app client
    • Click on “Add app client” & then click on Add an app client.

    • OAuth/OpenID/OIDC Single Sign On (SSO), AWS cognito SSO Login Add app client
    • Enter App client name & Disable Generate Client Secret option. Enable the Username Password based authentication option,then Click on “Create app client”.

    • OAuth/OpenID/OIDC Single Sign On (SSO), AWS cognito SSO Login Create app client
      OAuth/OpenID/OIDC Single Sign On (SSO), AWS cognito SSO Login Create app client
    • Click on Return to Pool Details to come back to your configuration.

    • OAuth/OpenID/OIDC Single Sign On (SSO), AWS cognito SSO Login return to aws pool
    • Click on Create Pool button to save your settings and create a user pool.

    • OAuth/OpenID/OIDC Single Sign On (SSO), AWS cognito SSO Login Create a AWS user pool
    • In the navigation bar present on the left side, click on the App Client Settings option under the App Integration menu.

    • OAuth/OpenID/OIDC Single Sign On (SSO), AWS cognito SSO Login go to app client settings
    • Go to the Cognito dashboard and select “Cognito User Pool”, add callback URL which you have copied from Pre-requisite.
    • Add application home page URL has to Sign out URL.
    • Also, select Authorization code grant as “Allowed OAuth Flows” & select email, OpenID, Profile as “Allowed OAuth Scopes”.
    • After selecting all details click on Save changes button.

    • OAuth/OpenID/OIDC Single Sign On (SSO), AWS cognito SSO Login Save changes
    • Go to “App client” and click on “Show details” to get a client ID. (Keep client ID handy as you will need it later.)

    • OAuth/OpenID/OIDC Single Sign On (SSO), AWS cognito SSO Login get client ID details
    • Go to domain name and enter a domain name for your app. After adding domain name you can check its availability by clicking on “Check availability” button. After entering valid domain name click "Save changes” button.

    • OAuth/OpenID/OIDC Single Sign-On (SSO), AWS cognito SSO Login domain name
    • Complete domain name: The complete domain name that you need to enter in miniOrange dashboard is {your domain name}.auth.{region name}.amazoncognito.com
    • Add Users / Groups to Cognito App : Go to Users and groups and then click on Users. After this click on Create user.

    • OAuth/OpenID/OIDC Single Sign On (SSO), AWS cognito SSO Login Add Users / Groups
    • Fill all required informations and click on Create user.

    • OAuth/OpenID/OIDC Single Sign On (SSO), AWS cognito SSO Login Create user
    • Click on Groups and then click on Create group.

    • OAuth/OpenID/OIDC Single Sign On (SSO), AWS cognito SSO Login Groups
    • Fill all required informations and click on Create group.

    • OAuth/OpenID/OIDC Single Sign On (SSO), AWS cognito SSO Login Create group

    B] Steps to Configure Identity Pool

    • Go to Federated Identities and click on Create new Identity pool button.

    • OAuth/OpenID/OIDC Single Sign On (SSO), AWS cognito SSO Login Create group
    • Enter Identity pool name and enable Unauthenticated identities and Authentication flow settings, then click on Create pool button.

    • OAuth/OpenID/OIDC Single Sign On (SSO), AWS cognito SSO Login Create group
    • Click on Allow button and you will get the Identity Pool Id.

    • OAuth/OpenID/OIDC Single Sign On (SSO), AWS cognito SSO get cognito Identity Pool

    1.2 Configure AWS as Userstore in miniOrange.

    • Go to miniOrange Admin Console.
    • From the left navigation bar select User Store and Click on Add User Store button.

    • Add user store
    • Select AWS Cognito.

    • Select AWS Cognito
    • Enter the following values.
    • AWS Cognito Identifier Provider Name
      AWS Cognito Region Get Cognito region from user pool(eg.us-east-2)
      Identity Pool ID From step 1.2
      User Pool ID From step 1.1
      Client ID From step 1.1
    • Now you can click on Save.

Step 2. Configure Your application in miniOrange


Note:

If you have already configured your application in miniOrange you can skip the following steps.


  • Click on Create App under SAML.
  • Click on Create SAML App
  • Search for your Application. In case you do not find your app, search for Custom SAML App.
  • Search for your SAML App Configure SAML Application
  • Get the ACS URL and SP Entity ID from your application.
  • Enter the following values OR click on Import SP Metadata:
  • Service Provider Name Choose appropriate name according to your choice
    SP Entity ID or Issuer Your Application Entity ID
    ACS URL X.509 Certificate (optional) Your Application Assertion Consumer Service URL
    NameID Format  Select urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
    Response Signed Unchecked
    Assertion Signed Checked
    Encrypted Assertion Unchecked
    Group policy Default
    Login Method
  • Click on Save to configure your application.
  • Now to get the IDP metadata of the app configured, Go to apps >> your_app >> select >> metadata tab.
  • Go to the metadata section
  • Click on the Show Metadata details in the Information required to Authenticate via External IDPs section. Download the metadata XML file by clicking on Download Metadata button or copy the Metadata URL link.
  • Downlaod metadata - URL
  • You need to Upload this metadata in your application.
  • Click on Create App under OAuth/OIDC. Click on Open ID Connect App .
  •  Add OAuth openIDConnect app
  • You can add any OAuth Client app here to enable miniOrange as OAuth Server. Few popular OAuth client apps for single sign-on are Salesforce, WordPress, Joomla, Atlassian, etc.
  • Select your OAuth openIDConnect app Configure OAth AddopenIDConnect app
  • Enter following Values:
  • Client Name Add appropriate Name
    Redirect URL Get the Redirect-URL from your OAuth Client
    Descrption Add if required
    Group Name Default
    Policy Name
    Login Method
  • Click on Save
  • Now to provide the required data to OAuth client go to the app configured i.e apps >> your_app >> select >> edit.
  • Edit OAuth editOpenidConnect app OAuth openidConnect app endpoints

    Note: Choose the Authorization Endpoint according to the identity source you configure.

  • When you want to use you want to use miniOrange as OAuth identity server use this endpoint: https://{mycompany.domainname.com}/moas/idp/openidsso
  • If you are configuring any Identity Provider in Identity Providers Menu and not using miniOrange as IDP use this endpoint: https://{mycompany.domainname.com}/broker/login/oauth{customerid}
  • Click on Create App under JWT.
  • Click n External JWT app
  • Select JWT App.
  • SelectJWT app
  • Configure the name for your application and configure Redirect-URL which tells where to send JWT response. Redirect-URL should be an endpoint on your application where you want to achieve SSO.
  • Configure JWT App

    In case you are setting up SSO with Mobile Applications where you can't create an endpoint for Redirect or Callback URL, use below URL.

    https://login.xecurify.com/moas/jwt/mobile

  • Click Save
  • To get the SSO link for your application, Go to Apps >> your_app >> select >> Edit.
  • Get SSO Link
  • Then, copy the Single Sign On Url and verify SSO setup by browsing that url.
  •  SSO URL
  • On successful authentication, you will be redirected to configured Redirect or Callback URL with JWT token
  • You will need to download a certificate from App > Manage Apps, and click Certificate link against your configured application. This certificate will be used for signature validation of JWT response.
  • Download certificate to proceed with SSO



Step 3. Login using IDP selection page (Optional)

  • You can configure multiple IDPs (Identity Providers) and give users the option to select the IDP of their choice to authenticate with.
    For Example - It could be multiple AD domains belonging to different departments or multiple okta organizations.
  • Few usecases where customers configure multiple IDPs -

  • Suppose you have a product which many of your clients use and each client has their own unique IDP so you want them to SSO into your product as well using their existing IDP only. miniOrange provides a centralized way to connect with all IDPs in a very easy manner and integrate SSO into your application.
  • Suppose you are providing a course to many universities, each having a unique SAML, OAuth protocol supported IDP's like Shibboleth, ADFS, CAS, etc. You can provide Single Sign-On (SSO) into your course application to all these universities by integrating with all of them using a single platform provided by miniOrange.
  • This is the endpoint to call from your SAML application -
    For Cloud IDP - https://login.xecurify.com/moas/discovery?customerId=<customer_id>
    For On-Premise IDP - https://yourdomain.com/discovery?customerId=<customer_id>
  • You should copy the Customer Key from admin console-> Settings -> and replace it with <customer_id> here. Once configured in SP, when you initiate the login from Service Provider, a user will be redirected to IDP Selection Page listing all IDPs configured for that account.
  • You can see the screenshot below of the IDP Selection Page with a list of IDPs.

    Note: To view the IDP in drop-down list, go to Identity Providers tab > against your configured IDP > Select >Edit , here Enable the Show IdP to Users option.

    Select your IDP (Identity Provider) to SSO login

  • You can also change the look and feel of this page. Login to miniOrange Admin console. Navigate to Customization -> Branding Configuration. See the below screenshot for reference-

  • Customize IDP selection login page
  1. You can customize the title of this page.
  2. Change the logo and favicon for this page.
  3. Change the background and button color for this page from admin UI.

Additional Resources


Note : If you are looking for anything which you cannot find, please drop us an email on idpsupport@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