AWS Single Sign-On (AWS SSO) Integration Guide for Expensify

Introduction

This document helps you configure AWS SSO to facilitate single sign-on (SSO) for Expensify using SAML.

Topics

Prerequisites

You'll need the following to set up SSO access to Expensify:

Setup instructions

  1. On the Configure page in the AWS SSO Console, in the Details section, fill in the Display name, and the Description(optional) of the application.

Note

We suggest that you choose a unique display name if you plan to have more than one of the same application.

  1. In another tab, login to your Expensify account as an administrator.

  2. In the left navigation pane, choose Admin, and choose Domain Control.

  3. On the Domain Control page, choose your domain name under the DOMAIN column.

  4. In the left navigation pane, choose SAML.

  5. Set SAML Login to ENABLED.

  6. To deny password access for all users, enable Required for login. Else, make sure that the option is disabled to allow both password and SSO access for all the users.

  7. Download the AWS SSO metadata.

  1. Copy and paste the contents of the downloaded AWS SSO metadata in Identity Provider MetaData.

  2. Referencing the documentation provided by Expensify, configure a user to use SSO in Expensify.

  3. Go back to the previous tab, and access the AWS SSO console page where you are configuring the application.

  4. Under Application metadata, choose If you don't have a metadata file, you can manually type your metadata values to display the application metadata settings.

  5. Insert these values:

Field Value
Application ACS URL https://www.expensify.com/authentication/saml/loginCallback?domain=DOMAINNAME
Application SAML audience https://www.expensify.com
  1. Choose Save Changes.

  2. Assign a user to the application in AWS SSO.

Verification

Use the following sections to verify the SSO integration.

Note

Ensure that the user performing the verification is logged out of both AWS SSO and the application before performing the steps in each section.

Verifying SSO from AWS SSO

  1. Access the AWS SSO end user portal using the credentials of a user assigned to the Expensify application.

  2. In the list of applications, choose Expensify to initiate a login to Expensify.

  3. If login was successful you will be signed-in to the Expensify application.

Troubleshooting

If sign in was not successful, please see the troubleshooting steps.

Verifying Service Provider Initiated SSO from Expensify

  1. Access Expensify.

  2. Choose SAML.

  3. Type the email address of a user which exists in Expensify, and choose Go.

  4. Type the credentials of a user assigned to the application in the AWS SSO console and a user which exists in Expensify.

  5. Choose Sign In.

  6. On the Expensify home page, verify that both Expensify and AWS SSO are logged in with the same user.

Troubleshooting

If sign in was not successful, please see the troubleshooting steps.

Troubleshooting

Error Issue Solution
"Unknown error during the SAML authentication process 'SAML login is not available on your domain'" The ACS URL of Expensify specified in AWS SSO is incorrect. Make sure that the Expensify ACS URL is specified correctly in AWS SSO.
"Unknown error during the SAML authentication process 'SAML login is not available on your domain" The SAML Login option is not enabled in Expensify. Make sure that the SAML Login option is enabled in Expensify.
The SSO login page is displayed when the user initiates password access after SSO is enabled. Required for login option is enabled. Make sure that the Required for login option is disabled in Expensify to allow password access.
Other When AWS SSO creates a SAML Assertion for a user, it uses the value of the 'email' and 'subject' fields (if they are present) from the connected directory to populate the 'Email' and 'Subject' attributes in the SAML assertion. Many service providers expect these attributes to contain the user's email address. By default your directory is configured to send 'windowsUPN' in both fields. Your directory may be configured to contain the users email in the 'Email' attribute instead. If so, you may need to change this in your Connected directory settings.

For general troubleshooting problems, please refer to Troubleshooting Guide.

User Provisioning Types

There are two user provisioning you need to aware of: