Identity Provider Setup Guide
This guide walks your IT/identity team through registering Paperless with your identity provider (Okta or Microsoft Entra ID) so your organization's users can sign in to Paperless using your existing single sign-on.
Overview
Paperless ships in two main applications:
Application | Where it runs |
Paperless Forms iPad & Windows App | iPad and Windows devices |
Paperless Forms Website (Admin) | A browser, used by administrators and support |
Paperless Forms Web App | iOS, Windows and Android devices |
Each one needs its own registration in your identity provider, because they authenticate differently (a mobile/desktop app uses different OAuth flows than a website).
You will create two app registrations total, then share their identifiers with Paperless Forms support, who will activate SSO for your organization.
Before you start
Have ready:
Admin access to your identity provider (Okta admin console, or Microsoft Entra admin center)
A test user account you can use to verify the setup
~30 minutes
Then, decide on:
Whether all users in your organization can use Paperless via SSO, or only specific groups
Microsoft Entra ID Setup
ℹ️ If your organization uses Okta instead, skip to the Okta section. |
Step 1 — Create the Paperless Forms app (for the app on devices)
Sign in to Microsoft Entra admin center (https://entra.microsoft.com)
Go to Identity → Applications → App registrations
Click + New registration
For Name, use "Paperless Device" (or anything you like)
For Supported account types, select Accounts in this organizational directory only (single tenant) — unless you specifically need multi-tenant
For Redirect URI, leave blank for now (we'll add platforms in a moment)
Click Register
Copy the Application (client) ID displayed at the top — you'll send this to Paperless support
In the left menu, click Authentication
Click + Add a platform → choose Mobile and desktop applications
Add the following custom redirect URIs (one at a time):
http://localhost:7890/callbackcom.peak.pelican://oauth/callback
Click Save
Still on the Authentication page, scroll to Advanced settings:
Set Allow public client flows to Yes
Click Save
Step 2 — Create the Paperless Web app (for the admin website)
Go to Identity → Applications → App registrations
Click + New registration
For Name, use "Paperless Web" (or anything you like)
For Supported account types, select the same option you selected for the devices in Step 1.5
For Redirect URI, select platform Single-page application (SPA) from the dropdown, then add:
If your database is on the US infrastructure:
https://paperless.datahex.ca/Login/SsoCallbackIf your database is on the CA infrastructure:
https://ca-paperless.datahex.ca/Login/SsoCallback
Click Register
Copy the Application (client) ID
Step 3 — Configure API permissions (both apps)
For each of the two apps, do the following:
Click into the app
In the left menu, click on API permissions
Verify Microsoft Graph → User.Read (delegated) is listed (it's there by default)
Click + Add a permission → Microsoft Graph → Delegated permissions → search for and add:
"openid"
"profile"
"email"
"offline_access"
Click Save
If your tenant requires admin consent, click Grant admin consent for [your tenant] and approve
Step 4 — Token configuration (OPTIONAL)
To ensure the user's email is reliably available in the ID token:
In the left menu, click on Token configuration
Click + Add optional claim
For Token type ID, select claims: "email", "preferred_username"
Click Save
Step 5 — Send to Paperless
Email Paperless support with:
Identity provider: Microsoft Entra ID
Tenant ID: found on the Entra admin center home page (e.g., "
12345678-1234-1234-1234-123456789abc")Authority:
https://login.microsoftonline.com/<your-tenant-id>/v2.0Paperless Device Client ID: from Step 1
Paperless Web Client ID: from Step 2
Paperless support will enable SSO for your account using these values.
Okta Setup
ℹ️ If your organization uses Microsoft Entra ID instead, skip to the Entra ID section. |
Step 1 — Create the Paperless Forms iOS/Windows App (for the iOS & Windows version on devices)
Sign in to your Okta admin console (e.g.,
https://yourcompany-admin.okta.com)From the left menu, go to Applications and Resources → Applications
Click Create App Integration
Select Classic experience
Select:
Sign-in method: OIDC - OpenID Connect
Application type: Native Application
Click Next
In General Settings:
For App integration name, use Paperless App, or anything you prefer
For Client definition, select Use Okta-generated client ID
For Proof of possession, leave unchecked
For Grant type, make sure to check both options as they are required:
Authorization Code
Refresh Token
For Sign-in redirect URIs, remove the default value(s) and add both of the following (one per line):
http://localhost:7890/callbackca.datahex.paperless://oauth/callback
For Sign-out redirect URIs, leave empty/remove the default value(s)
For Assignments, choose who can use Paperless Forms:
Allow everyone in your organization to access
For Enable immediate access, keep this option checked according to your preference
OR
Limit access to selected groups, which you can use to pick a specific Okta group
Specify the Selected group(s) that will have access
Click Save
In the app's General tab, verify under Client Credentials:
For Client authentication, select None
For Proof Key for Code Exchange (PKCE), check the option Require PKCE as additional verification
Create a new Text (.txt) document
Create a line called
Paperless App ID:Copy the Client ID from the app's General tab, which is a long string starting with
0oa...Paste it in the Text document next to
Paperless App ID:Continue to the next step to gather the next ID
Step 2 — Create the Paperless Website App (for the admin website)
Sign in to your Okta admin console (e.g.,
https://yourcompany-admin.okta.com)From the left menu, go to Applications and Resources → Applications
Click Create App Integration
Select Classic experience
Select:
Sign-in method: OIDC - OpenID Connect
Application type: Single-Page Application
Click Next
In General Settings:
For App integration name, use Paperless Website, or anything you prefer
For Client definition, select Use Okta-generated client ID
For Proof of possession, leave unchecked
For Grant type, make sure to check both options as they are required:
Authorization Code
Refresh Token
For Sign-in redirect URIs, add:
If your database is on the US infrastructure:
https://paperless.datahex.ca/Login/SsoCallbackIf your database is on the CA infrastructure:
https://ca-paperless.datahex.ca/Login/SsoCallback
For Sign-out redirect URIs, leave empty/remove the default value(s)
For Trusted Origins, leave empty/remove the default value(s)
For Assignments, choose who can use Paperless Forms:
Allow everyone in your organization to access
For Enable immediate access, keep this option checked according to your preference
OR
Limit access to selected groups, which you can use to pick a specific Okta group
Specify the Selected group(s) that will have access
Click Save
In the app's General tab, verify under Client Credentials:
For Client authentication, select None
For Proof Key for Code Exchange (PKCE), check the option Require PKCE as additional verification
Create a new Text (.txt) document
Create a line called
Paperless Website ID:Copy the Website ID from the app's General tab, which is a long string starting with
0oa...Paste it in the Text document next to
Paperless Website ID:If you are using the Paperless Forms Web App, continue to the next step to gather the next ID
Step 3 — Create the Paperless Forms WebApp App (for the Web App version on devices)
ℹ️ If you are not using the Web App version, this step is unecessary. |
Sign in to your Okta admin console (e.g.,
https://yourcompany-admin.okta.com)From the left menu, go to Applications and Resources → Applications
Click Create App Integration
Select Classic experience
Select:
Sign-in method: OIDC - OpenID Connect
Application type: Single-Page Application
Click Next
In General Settings:
For App integration name, use Paperless WebApp, or anything you prefer
For Client definition, select Use Okta-generated client ID
For Proof of possession, leave unchecked
For Grant type, make sure to check both options as they are required:
Authorization Code
Refresh Token
For Sign-in redirect URIs, add:
If your database is on the US infrastructure:
https://paperless-webapp.datahex.ca/sso/callbackIf your database is on the CA infrastructure:
https://ca-paperless-webapp.datahex.ca/sso/callback
For Sign-out redirect URIs, add:
If your database is on the US infrastructure:
https://paperless-webapp.datahex.caIf your database is on the CA infrastructure:
https://ca-paperless-webapp.datahex.ca
For Trusted Origins, add:
If your database is on the US infrastructure:
https://paperless-webapp.datahex.caIf your database is on the CA infrastructure:
https://ca-paperless-webapp.datahex.ca
For Assignments, choose who can use Paperless Forms:
Allow everyone in your organization to access
For Enable immediate access, keep this option checked according to your preference
OR
Limit access to selected groups, which you can use to pick a specific Okta group
Specify the Selected group(s) that will have access
Click Save
In the app's General tab, verify under Client Credentials:
For Client authentication, select None
For Proof Key for Code Exchange (PKCE), check the option Require PKCE as additional verification
Create a new Text (.txt) document
Create a line called
Paperless WebApp ID:Copy the WebApp ID from the app's General tab, which is a long string starting with
0oa...Paste it in the Text document next to
Paperless WebApp ID:
Step 4 — Allow both apps in the authorization server policy
Okta has a separate set of policies controlling which apps can request tokens.
By default, new apps may not be permitted.
Go to Security → API → Authorization Servers
Click the default authorization server
Click the Access Policies tab
Click Add Policy
In Add Policy:
Name the policy
Add a Description
In Assign to, choose The following clients and add:
Paperless App (or the name you gave it in Step 1)
Paperless Website (or the name you gave it in Step 2)
Optionally, Paperless WebApp (or the name you gave it in Step 3)
Click Create Policy
At the bottom of the new policy, click on Add rule:
Name the rule
For Grant type, select Core grants → Authorization Code, uncheck Device Authorization
For User, select Any user assigned the app
For Scopes requested, select The following scopes and add:
openidprofileemailoffline_access
For Use this inline hook, select None (disabled)
For Access token lifetime, select your preference
For Refresh token lifetime, select your preference
Click Create rule
Make sure the Status is set to Active
Step 5 — Send the credentials to Paperless Forms' team
Email Paperless Forms support the Text document that was built over the previous steps.
Identity provider: Okta
Okta domain (Authority): e.g.,
https://yourcompany.okta.com/oauth2/defaultPaperless App ID: The
0oa...value from Step 1Paperless Website ID: The
0oa...value from Step 2Paperless WebApp ID: The
0oa...value from Step 3, optionally
Paperless Forms support will enable SSO for your account using these values.
Common pitfalls
Why does Paperless need up to three apps?
Mobile/desktop apps use a different OAuth flow than browser apps. Identity providers require separate registrations because they have different redirect URI requirements (custom URL schemes vs. HTTPS).
My Okta app keeps showing invalid_token_endpoint_auth_method during testing.
This means that the application was created or configured with Client authentication set to Client secret.
Go to Applications and ressources → Applications
Click on the app you want to edit
In the General tab, edit the Client authentication from Secret client to None
My users get no_matching_policy when signing in
Step 4 of the Okta setup is incomplete.
Go to Security → API → Authorization Servers
Click the default authorization server
In the Access Policies tab, ensure that the applications created in Steps 1 and 2 (and optionally 3) have the rule created in Step 4 assigned to them, and that its Status is set to Active
My users get access denied even though they're in Okta
Go to Applications and ressources → Applications
Click on the app you want to edit
In the Assignments tab, add the group(s) or set the application to Allow everyone in your organization to access
Can we reuse one app for both Device and Web?
In Okta: No, the app types are different (Native vs. Single-Page Application) and the allowed redirect URI formats don't overlap.
In Microsoft Entra: Technically possible (one app with multiple platform configurations), but we recommend separate apps for better audit logging and per-platform policy control.
Will users see a consent screen?
The first time a user signs in, they may be prompted to consent to the requested permissions (the "openid", "profile", "email" claims).
For Microsoft Entra, an admin can pre-grant consent for the entire tenant under API permissions → Grant admin consent to skip this.
What happens after setup
Once you provide the Client IDs and Authority to Paperless Forms support:
Paperless Forms support enables SSO for your organization
Your users open Paperless Forms on their devices, sign in with their Paperless Forms username and password as usual
After validating their Paperless Forms credentials, the app will redirect them to your identity provider's sign-in page (Okta or Microsoft sign-in)
After they sign in with their company SSO credentials, they're returned to Paperless Forms and can use the app normally
The same flow applies for the Paperless website.
If a user's identity provider account is later disabled (e.g., they leave the company), they will lose access to Paperless within a short period — even if their Paperless Forms password still exists, the SSO check will fail.


































