Skip to main content
Mitratech Success Center
Client Support Center

Need help? Click a product group below to select your application and get access to knowledge articles, webinars, training content, and release notes or to contact our support team.

Authorized users - log in to create a ticket, view tickets status and check your success plan details.

 

SSO Integration Guide for I-9 Complete v2.0

Introduction

About This Document 

This document describes the authentication protocols and worflows available to integrate with Tracker I-9 Complete as well as detailing the technical aspects of the integration. 

Key Concepts

Claims-Based Identification 

Claims-based identity is a straightforward idea, founded on a small number of concepts: claims, tokens, identity providers, and a few more. 

What is an identity? A digital identity is a set of information about somebody or something. It’s common to refer to a set of identity information as a security token or token. A token contains one or more claims, each of which carries some piece of information about the user it identifies.  

 

 

Identity Provider 

The software tool or service that performs the authentication, checking usernames and passwords, verifying account status, invoking two-factor, etc. Tokens are created by Identity Providers (IDPs).  

Service Provider

A Service Provider (SP) is a system entity that receives and accepts an authentication tokens issued by an identity provider. A web application that provides a service to its users. Tracker I-9 Complete is the service provider.  

Open Standard 

There are several standards-based authentication protocols: OpenID Connect, SAML 2.0 and OAuth 2.0. Tracker uses OpenID Connect protocol. OpenID Connect is an open standard that organizations use to authenticate users. IDPs use this so that users can sign in to the IDP, and then access other websites and apps without having to log in or share their sign-in information.  

Tracker Identity Provider

Tracker uses Azure Active Directory B2C as identity provider. Azure Active Directory B2C (Azure AD B2C) is an identity management service that enables custom control of how your customers sign up, sign in, and manage their profiles when using .NET applications. Azure AD B2C provides business-to-customer identity as a service. Customers can use their preferred Identity provider to get single sign-on access to Tracker. 

Tracker Supported Authentication

Tracker currently supports the following authentication scenarios: 

  • OpenID SP Initiated SSO. Clients will use their own IDP  
  • OpenID IDP Initiated SSO. Clients will use their own IDP

Identity Provider (IDP) Initiated SSO 

With Identity Provider Initiated SSO, the end users will sign into Tracker’s Identity Provider or Client designed Identity Provider login page and then the Identity Provider will send an authorization request to the service provider (Tracker). Here is a diagram of the user flow using a client’s identity provider: 

 

Service Provider (SP) Initiated SSO 

With service Provider Initiated SSO, the end users will navigate to service provider URL which initiates authorization request to the clients IDP and redirects the user to their IDP login page, after successful authentication user will be redirected back to service provider. 

 

How to Implement SSO With I-9 Complete 

Overview

SSO will only be used to grant application access for users with User Accounts:   

  • Users are sometimes known as HR Manager, I-9 Managers, Section 2 Signatories, Recruiters, or Hiring Managers.   
  • Client Admin users 
  • Employee users for remote UIs only (if enabled) 
  • Distributor Admin (Tracker partners only) 

Before You Start 

There are a couple of things you need before you can start: 

  1. Tracker will provide login Redirect URI required for client to create an application in their IDP. Note this URL is internal and not exposed to users. Clients will be sending claims to this URL. Please use: 

https://your-tenant-name.b2clogin.com/your-tenant-name.onmicrosoft.com/oauth2/authresp - Replace your-tenant-name with Azure AD B2C tenant name. 

  1. Clients will provide credentials of the created application to Tracker 

  • Client ID  
  • Client Secret  
  1. Clients will provide the Metadata endpoint URI of the authorization server to Tracker. 

  1. Client will provide IDP organization Uri to Tracker 

User URL

For SP initiated SSO users will use the following URL:  https://i9complete.com/sso/C{clientId}.  

For IDP initiated, Clients will need to configure the login URL in their IDP. Please use same URL https://i9complete.com/sso/C{clientId}; This is the URL where users will be redirected once they login to the IDP and click on configured tracker application. 

Choose an Account Management Type 

You have three account management types to choose between when implementing SSO. 

Dynamic User Management 

In this scenario, you send a complete list of claims needed to create the user.  If the provided username does not exist in our system, we create a new user.  If the user does exist, the user is updated based on the information sent in the assertion.  As long as you are able to send a complete set of user claims, then no additional integrations or manual intervention is needed to manage user’s accounts. 

Authorization Only 

In this scenario, you send only one piece of information (username, email, or external id) to identify a user.  If this user exists in our system, we authenticate them and let them in.  If they do not exist, they are not given access to our application.  This approach is only recommended if you create and manage users via Tracker’s API. 

Hybrid 

In this scenario, you send a complete list of claims needed to create a user.  If the provided username does not exist in our system, we create a new user.  If they do exist, we let them have access to the system, but we do not update them.  This approach is recommended if you have enough information to create a user, but it is not complete and you plan to update the user manually.  Using Hybrid SSO, after you manually update the user’s account, the SSO integration would not overwrite your changes upon subsequent logins. 

Configure Claims

We refer to the claims in this document by their Description.  Be aware that when configure the claims you must use the Claim Name and Data Type. 

Claim Details 

Description 

Claim Name 

Data Type 

Notes 

Account Management Type 

accountmanagementtype 

integer 

Default is “0” = Auth Only, “1” = Dynamic, “2” Hybrid  

First Name 

givenname 

string 

First Name of the User (aka HR Manager, Section 2 Signatory, etc). 

Last Name 

surname 

string 

Last Name of the User (aka HR Manager, Section 2 Signatory, etc). 

Job Title 

title 

string 

The User’s job title to be displayed on the Form I-9 when signing Section 2. 

I-9 Complete User Role 

role 

string 

See Appx B. The role assigned to the User in our application which governs what functionality they can access. 

Time Zone ID 

timezoneid 

integer 

See Appx A. The timezone of the User which is used in the application to know when to send scheduled email alerts. 

Username 

name 

string  

This is the username for User Account.  It must be unique across all clients within our system.  Our suggestion is that you concatenate your Client ID with your system’s unique usernames so that you do not encounter conflicts with existing clients’ users.  

Email Address 

emailaddress 

string 

The User’s email address.  It is used to send email alerts. 

Phone Number 

phone 

integer 

The User’s phone number. Must be 10 digits. 

Extension 

ext 

integer  

The User’s phone number extension. Must be between 1-8 digits.  

External ID 

externalid 

string 

An ID that originates in the client’s system used to uniquely identify a User. 

All Client Access 

allclientaccess 

string 

True/False flag that grants a user access to all I-9s within an employer 

Employer ID* 

employerid 

StringCollection 

I-9 Complete’s internal ID for an Employer.  It grants the user access to all I-9s within the scope of one or more Employers. 

External Employer ID* 

externalemployerid 

StringCollection 

A partner’s ID or client’s ID for an Employer.  It grants the user access to all I-9s within the scope of one or more Employers. 

Security Group ID* 

securitygroupid 

StringCollection  

I-9 Complete’s internal ID for a Security Group (which is a group of other security groups and or worksites - see attached Hierarchy Guide for details).  It grants the user access to all I-9s within the scope of one or more Security Groups. 

External Security Group ID* 

externalsecuritygroupid 

StringCollection 

A partner’s ID or client’s ID for a Security Group (which is a group of other security groups and or worksites - see attached Hierarchy Guide for details).  It grants the user access to all I-9s within the scope of one or more Security Groups. 

Worksite ID* 

worksiteid 

StringCollection 

I-9 Complete’s internal ID for a Worksite.  It grants the user access to all I-9s within the scope of a Worksite. 

External Worksite ID* 

externalworkstieid 

StringCollection 

A partner’s or client’s ID for a Worksite.  It grants the user access to all I-9s within the scope of a Worksite. 

* Multiple claims can be sent to assign more than one value for this claim to the user.  

Claims by Account Management Type 

I-9 Manager Claims 

Description 

Dynamic User Management 

Hybrid 

Authorization Only 

Account Management Type 

required (“1”) 

required (“2”) 

do not send 

First Name 

required 

required 

do not send 

Last Name 

required 

required 

do not send 

Job Title 

required 

required 

do not send 

I-9 Complete User Role 

required 

required 

do not send 

Time Zone ID 

required 

required 

do not send 

Phone Number 

optional 

optional 

do not send 

Extension 

optional 

optional 

do not send 

Username 

required* 

required* 

One (and only one) of these three claims is required to identify the User. 

Email Address 

required 

required 

External ID 

optional 

optional 

All Worksite Access 

One or more (as appropriate) of these hierarchy access claims is required.** 

(N/A must be provided if any of these ID’s are not applicable) 

One or more (as appropriate) of these hierarchy access claims is required.** 

(N/A must be provided if any of these ID’s are not applicable) 

 

do not send 

External Employer ID 

do not send 

Security Group ID 

do not send 

External Security Group ID 

do not send 

Worksite ID 

do not send 

External Worksite ID 

do not send 

Employer ID 

do not send 

* Used as the identifier to determine if the user exists already or not. 

** For the user you create to have access to any Employee or Form I-9 records, you must specify access permissions for the user: 

  • If you send “All Client Access” then you would not send (and we would ignore) any Employer, Security Group, or Worksite values, since they overlap. 
  • If you send one or more Employer values, we would ignore any Security Group or Worksite values within that Employer, since they overlap. 
  • You may send a combination of Security Group and Worksite values, though we will ignore any worksite values that exist within the sent Security Groups, since they overlap. 
Client Administrator Claims

The full claim set for the Client Administrators role is described below. Client Administrators leverage fewer claims. 

Description 

Dynamic User Management 

Hybrid 

Authorization Only 

Account Management Type 

required (“1”) 

required (“2”) 

do not send 

First Name 

required 

required 

do not send 

Last Name 

required 

required 

do not send 

Job Title 

required 

required 

do not send 

I-9 Complete User Role 

required 

required 

do not send 

Username 

required* 

required* 

One (and only one) of these three claims is required to identify the User. 

Email Address 

required 

required 

External ID 

optional 

optional 

* Used as the identifier to determine if the user exists already or not. 

Employee Claims 

The full claim set for the Employee User role is described below. Employee Users leverage fewer claims  

Description 

Dynamic User Management 

Hybrid 

Authorization Only 

Account Management Type 

required (“1”) 

required (“2”) 

do not send 

First Name 

required 

required 

do not send 

Last Name 

required 

required 

do not send 

I-9 Complete User Role 

required 

required 

do not send 

Username 

required* 

required* 

One (and only one) of these three claims is required to identify the User. 

Email Address 

required 

required 

External ID 

optional 

optional 

* Used as the identifier to determine if the user exists already or not. 

Employee User Account 

A client level feature setting must be enabled to utilize the Employee User Account SSO functionality. Please work with your implementation/account manager to enable via Client settings/Client configuration/Features/Enable Employee User Account. 

IMPORTANT: An Employee Profile must be created before sending an Employee User SSO payload to the Tracker system. Use the API or UI to create and manage Employee Profiles and I-9s. The Employee Profile must contain an email address. The Email Address SSO claim must match the Email Address value on an existing Employee Profile in order to create the Employee User / Employee Profile relationship. Inserting an Email Address claim that does not match an Email Address on an existing Employee Profile will result in an error. 

When the Employee User Account feature is enabled for a client, the following UI pages will enforce the Employee User authentication requirement: 

  • Remote Section 1 page (for the Remote Section 1 only workflow) 
  • Remote Section 1 page (for the Employee Appoint workflow) 
  • Remote Section 1 page (for the Employer Appoint workflow) 
  • Remote Section 1 page (for the Network Alliance workflow) 
  • Remote Section 1 page Amendment 

Note the employee user accounts are not displayed in the Client Admin UI and therefore are not searchable in Tracker. 

Testing Notes

If you are conducting rapid testing using multiple different user accounts from a single browser you may experience unexpected user flow behavior. To avoid this, clear your cookies, close your browser, and then resume your testing. 

Use Cases and Error Handling

User Diagram 

 

 

Use Cases 

SP Initiated SSO

The following explains the different use cases and how the system will handle errors:  

  1. User clicks on the link for Scarlet which contains ClientID  in the url: https://i9complete.com/sso/C{clientId} 
  2. Validate ClientID and Domain hint 
    • If ClientId does not exists, user is directed to error page with message: SSO01: ClientId is invalid.  
    • DomainHint is retrieved from DB based on clientId, which is used by B2C to redirect the user to their IDP login page. 
    • If valid proceed to step 3.  
  3. User is directed to IDP for authorization. 
  4. Enter username and password.  
    • After authorization user is created in azure b2c if it is not already there. Then, it is directed to STS application. 
  5. Check for claim accountmanagementtype, if not present set it to Authorization Only. 
  6. If accountmanagementtype is Authorization Only, get user information using username, email, or external id claim. 
    • If username Claim is given, get user information using it else get it using email or externalId. 
      • If none of the able is provided, user is directed to error page with message: SSO07: You must provide either a Username, Employee ID, or Email Address claim. 
      • If either is provided but user does not exist, then user is directed to error page with following error: SSO08: User not found. 
    • If user exists 
      • But it is not enabled, then direct to error page with message: SSO03: This account is currently inactive. 
      • If user does not have client associated or if client is inactive, user is directed to error page with message: SSO04: Client is inactive 
      • If user does not have SSO login enabled, then user is directed to error page with message: SSO05: SSO Login Access is denied. 
      • If user’s client does not match with given client Id, then user is directed to error page with following message: SSO14: User does not belong to the provided client. 
      • Else, user is authenticated and directed to scarlet application. 
  7. If accountmanagementtype is Dynamic User Management 
    • Get the user information using username.  
    • If user does not exist, then 
      • Get the name claim, if not provided user is directed to error page with message: SSO09: You must provide a Username claim. 
      • Get the givenname claim, if not provided user is directed to error page with message: SSO10: You must provide a value for the GivenName claim. 
      • Get the surname claim, if not provided user is directed to error page with message: SSO11: You must provide a value for the Surname claim. 
      • Get the email claim, if not provided user is directed to error page with message: SSO12: You must provide a value for the Email claim. 
      • If none of the following claims is provided worksiteExternalId, securityGroupExternalId, employerExternalId, worksiteId,securityGroupId, employerId, allClientAccess, then user is directed to error page with message: SSO13: You must provide the user's level of access with one or more Worksite Ids, Security Group Ids, Employer Ids, or All Worksite Access claim. 
      • Else, save the user, then redirect the user to scarlet application.
    • If user exists  
      • But it is not enabled, then direct to error page with message: SSO03: This account is currently inactive. 
      • If user does not have client associated or if client is inactive, user is directed to error page with message: SSO04: Client is inactive 
      • If user does not have SSO login enabled, then user is directed to error page with message: SSO05: SSO Login Access is denied. 
      • If user’s client does not match with given client Id, then user is directed to error page with following message: SSO14: User does not belong to the provided client. 
      • Else, user account is updated and authenticated then directed to scarlet application. 
  8. If accountmanagementtype is Hybrid 
    • Get the user information using username. 
    • If user exist, then 
      • If user is not enabled, then direct to error page with message: SSO03: This account is currently inactive. 
      • If user does not have client associated or if client is inactive, user is directed to error page with message: SSO04: Client is inactive 
      • If user does not have SSO login enabled, then user is directed to error page with message: SSO05: SSO Login Access is denied. 
      • If user’s client does not match with given client Id, then user is directed to error page with following message: SSO14: User does not belong to the provided client. 
      • Else, user is authenticated and directed to scarlet application. 
    • If user does not exist, then  
      • Get the name claim, if not provided user is directed to error page with message: SSO09: You must provide a Username claim. 
      • Get the givenname claim, if not provided user is directed to error page with message: SSO10: You must provide a value for the GivenName claim. 
      • Get the surname claim, if not provided user is directed to error page with message: SSO11: You must provide a value for the Surname claim. 
      • Get the email claim, if not provided user is directed to error page with message: SSO12: You must provide a value for the Email claim. 
      • If none of the following claims is provided worksiteExternalId, securityGroupExternalId, employerExternalId, worksiteId,securityGroupId, employerId, allClientAccess, then user is directed to error page with message: SSO13: You must provide the user's level of access with one or more Worksite Ids, Security Group Ids, Employer Ids, or All Worksite Access claim. 
      • Else, save the user, then redirect the user to scarlet application.

IDP Initiated SSO

The following explains the different use cases and how the system will handle errors:  

  1. User navigates to their IDP and authenticates. The user has to be authenticated to access application within IDP   
  2. Enter username and password and access to IDP. 
  3. User click on application created in their IDP. The application User clicks on the link for Scarlet which contains ClientID and domain hint in the url: https://i9complete.com/sso/C{clientId} 
  4. Validate ClientID and Domain hint 
    • If ClientId does not exists, user is directed to error page with message: SSO01: ClientId is invalid.  
    • DomainHint is retrieved from DB based on clientId, which is used by B2C to redirect the user to their IDP login page. 
    • If valid proceed to step 3.  
  5. User is directed back to IDP for authorization. Since the user has been already authenticated when accessing to IDP it bypasses the authentication. 
  6. User is then created in azure b2c if it is not already there. Then, it is directed to STS application. 
  7. Check for claim accountmanagementtype, if not present set it to Authorization Only. 
  8. If accountmanagementtype is Authorization Only, get user information using username, email, or external id claim. 
    • If username Claim is given, get user information using it else get it using email or externalId. 
      • If none of the able is provided, user is directed to error page with message: SSO07: You must provide either a Username, Employee ID, or Email Address claim. 
      • If either is provided but user does not exist, then user is directed to error page with following error: SSO08: User not found. 
    • If user exists 
      • But it is not enabled, then direct to error page with message: SSO03: This account is currently inactive. 
      • If user does not have client associated or if client is inactive, user is directed to error page with message: SSO04: Client is inactive 
      • If user does not have SSO login enabled, then user is directed to error page with message: SSO05: SSO Login Access is denied. 
      • If user’s client does not match with given client Id, then user is directed to error page with following message: SSO14: User does not belong to the provided client. 
      • Else, user is authenticated and directed to scarlet application. 
  9. If accountmanagementtype is Dynamic User Management 
    • Get the user information using username.  
    • If user does not exist, then 
      • Get the name claim, if not provided user is directed to error page with message: SSO09: You must provide a Username claim. 
      • Get the givenname claim, if not provided user is directed to error page with message: SSO10: You must provide a value for the GivenName claim. 
      • Get the surname claim, if not provided user is directed to error page with message: SSO11: You must provide a value for the Surname claim. 
      • Get the email claim, if not provided user is directed to error page with message: SSO12: You must provide a value for the Email claim. 
      • If none of the following claims is provided worksiteExternalId, securityGroupExternalId, employerExternalId, worksiteId,securityGroupId, employerId, allClientAccess, then user is directed to error page with message: SSO13: You must provide the user's level of access with one or more Worksite Ids, Security Group Ids, Employer Ids, or All Worksite Access claim. 
      • Else, save the user, then redirect the user to scarlet application 
    • If user exists  
      • But it is not enabled, then direct to error page with message: SSO03: This account is currently inactive. 
      • If user does not have client associated or if client is inactive, user is directed to error page with message: SSO04: Client is inactive 
      • If user does not have SSO login enabled, then user is directed to error page with message: SSO05: SSO Login Access is denied. 
      • If user’s client does not match with given client Id, then user is directed to error page with following message: SSO14: User does not belong to the provided client. 
      • Else, user account is updated and authenticated then directed to scarlet application. 
  10. If accountmanagementtype is Hybrid 
    • Get the user information using username. 
    • If user exist, then 
      • If user is not enabled, then direct to error page with message: SSO03: This account is currently inactive. 
      • If user does not have client associated or if client is inactive, user is directed to error page with message: SSO04: Client is inactive 
      • If user does not have SSO login enabled, then user is directed to error page with message: SSO05: SSO Login Access is denied. 
      • If user’s client does not match with given client Id, then user is directed to error page with following message: SSO14: User does not belong to the provided client. 
      • Else, user is authenticated and directed to scarlet application. 
    • If user does not exist, then  
      • Get the name claim, if not provided user is directed to error page with message: SSO09: You must provide a Username claim. 
      • Get the givenname claim, if not provided user is directed to error page with message: SSO10: You must provide a value for the GivenName claim. 
      • Get the surname claim, if not provided user is directed to error page with message: SSO11: You must provide a value for the Surname claim. 
      • Get the email claim, if not provided user is directed to error page with message: SSO12: You must provide a value for the Email claim. 
      • If none of the following claims is provided worksiteExternalId, securityGroupExternalId, employerExternalId, worksiteId,securityGroupId, employerId, allClientAccess, then user is directed to error page with message: SSO13: You must provide the user's level of access with one or more Worksite Ids, Security Group Ids, Employer Ids, or All Worksite Access claim. 
      • Else, save the user, then redirect the user to scarlet application.

Error Codes and messages 

Common

 Error Message 

 Error Code 

If clientId is invalid         

SSO01: ClientId is invalid 

SSO01 

If DomainHint is invalid                 

SSO02: Invalid DomainHint 

SSO02 

If client Id is not numeric 

SSO15: Unable to parse the Client Id. 

SSO15 

If user account is inactive                 

SSO03: This account is currently inactive. 

SSO03 

If client is inactive                          

SSO04: Client is inactive 

SSO04 

If user role doesnt have SSOLoginAccess                 

SSO05: SSO Login Access is denied. 

SSO05 

If clientId does not match with user’s client 

SSO14: User does not belong to the provided client. 

SSO14 

AuthOnly

If user count is more than one for given email          

SSO06: Email addresses must be unique for AuthOnly requests. 

SSO06 

If request is Authonly and neither username,  

or Employee IDor email address is provide                                 

SSO07: You must provide either a Username, Employee ID, or Email Address claim. 

SSO07 

If request is Authonly and user is not present in tracker         

SSO08: User not found. 

SSO08 

For Hybrid and Dynamic User Management to create new user: 

If name claim is not provided                                  

SSO09: You must provide a Username claim. 

SSO09 

If givenname is not provided                                         

SSO10: You must provide a value for the GivenName claim. 

SSO10 

If surname claim is not provided                                         

SSO11: You must provide a value for the Surname claim. 

SSO11 

If email is not provided                                                         

SSO12: You must provide a value for the Email claim. 

SSO12 

If none of the following claims is provided worksiteExternalId,securityGroupExternalId, employerExternalId, worksiteId,securityGroupId, employerId, allClientAccess         

SSO13: You must provide the user's level of access with one or more Worksite Ids, Security Group Ids, Employer Ids, or All Worksite Access claim. 

SSO13 

Appendices

Appendix A: User’s Time Zones (TimeZoneId) 

 

 

notes 

1 

(GMT-04:00) Atlantic Time  

Puerto Rico and the U.S. Virgin Islands 

2 

(GMT-05:00) Eastern Time  

 

4 

(GMT-06:00) Central Time 

 

5 

(GMT-07:00) Mountain Time 

 

6 

(GMT-07:00) Arizona  

Does not observe Daylight Savings Time 

7 

(GMT-08:00) Pacific Time 

 

8 

(GMT-09:00) Alaska 

 

9 

(GMT-10:00) Hawaii 

 

Appendix B: User’s Role (Role) 

 

notes 

CLIENT_ADMIN  

cannot access I-9s 

ADVANCED_USER 

can access I-9s 

ADVANCED_USER_EVERIFY 

can access I-9s 

INTERMEDIATE_USER 

can access I-9s 

INTERMEDIATE_USER_EVERIFY 

can access I-9s 

BASIC_USER 

can access I-9s 

BASIC_USER_EVERIFY 

can access I-9s 

EMPLOYEE_USER 

can access I-9 section 1 only 

  • Was this article helpful?