Set up SSO with Auth0

This guide expands Set up Smartbox locally.

Create an application in Auth0

To create an application:

  • Login to the Auth0
  • Open the Applications page
  • Press the Create Application button
  • Give the name of the application
  • Choose the type of application. Consider, Native type
  • Press the Create button

After the app is created add the details:

  • Application callback URLs: http://localhost:8888/tenant/myclinic/patient/auth/callback/?
  • Press the Save Changes button

Open the Advanced settings of the application and copy:

  • OAuth Authorization URL
  • OAuth Token URL
  • OAuth User Info URL

Create a user in Auth0

To create a new user:

  • Open the Users page
  • Press the Create User button
  • Provide email and password
  • Press the Create button

Copy the user_id. It looks like auth0|6310e2d143b66b669906d775

Create a Tenant in Aidbox Portal

As the administrator of the Portal create an Tenant resource. Please, see What is Tenant for more details.

id: my-clinic resourceType: Tenant name: My Clinic Name logoUrl: https://example.com/my-clinic-logo.png identityProvider:   scopes:     - user     - read:org     - openid     - profile   system: aidbox:tenant:my-clinic   userinfo_endpoint: https://dev-nei1uq73.us.auth0.com/userinfo   authorize_endpoint: https://dev-nei1uq73.us.auth0.com/authorize   token_endpoint: https://dev-nei1uq73.us.auth0.com/oauth/token   client:     id: ziW...lv0     secret: 7HoQ...gvb

The URLs copied from the Auth0 are used here:

  • OAuth Authorization URL as authorize_endpoint
  • OAuth Token URL as token_endpoint
  • OAuth User Info URL as userinfo_endpoint

It's important to provide the system attribute

Create a user in Aidbox Portal

The user should be linked to a Patient to be able to launch SMART Apps. And at the same time, it should be related to the Auth0 user. Please, see What is Tenant for more details.

yaml
id: test-user-1
resourceType: User
identifier:
  - value: auth0|6310e2d143b66b669906d775
    system: aidbox:tenant:my-clinic
fhirUser:
  id: test-pt-1
  resourceType: Patient
roles:
  - type: patient
active: true
meta:
  tenant:
    id: my-clinic
    resourceType: Tenant
  1. identifier contains the link to the Auth0 user
  2. 2. fhirUser links the user to the Patient

Checking it works together

  • Open the link https://f81a51619984.ngrok.io/tenant/myclinic/patient/portal in the Invisible (Stealth) mode
  • Click the Sign In link
  • Enter email and password of the user, we created in the Auth0
  • Press the Login button

Launch the Growth Chart

  • On the SMARTbox page Applications
  • Press the Launch button against the Growth Chart application
  • Press the Allow button on the consent screen
  • Get the Growth Chart works