Authentication and Identity Management

Frontegg offers a comprehensive suite of authentication, user management, and security features to streamline identity management and enhance application security. This section provides an overview of all relevant API endpoints, organized into Authentication, Management, and Self-Service categories.

Authentication Endpoints: Enable secure user login, multi-factor authentication (MFA), passwordless options, and social login integrations, allowing for a flexible and robust sign-in experience.

Management Endpoints: Require environment-level authorization and provide full control over SSO (SAML and OpenID Connect) resources, user roles, permissions, and configurations. These endpoints are designed for administrative use, allowing for centralized identity and access management.

Self-Service Endpoints: Accessible with a user token (JWT), these endpoints empower users to manage their SSO connections and other account settings. Users with the necessary permissions can create, update, or delete SSO configurations directly, ensuring they have the tools to manage their access securely and independently.

Each category in this section helps you configure and extend Frontegg’s capabilities, providing the flexibility to manage user identities, authentication protocols, and access controls as per your application’s needs.

Languages
Servers
EU Region
https://api.frontegg.com/identity/
US Region
https://api.us.frontegg.com/identity/
CA Region
https://api.ca.frontegg.com/identity/
AU Region
https://api.au.frontegg.com/identity/
Frontegg sub-domain for use with user tokens
https://{domain}.frontegg.com/identity/

API token

Operations

General

Operations

MFA

Operations

Passwordless

Operations

SMS

Operations

Account invitations settings

Operations

Core settings

Operations

Custom social OAuth provider

Operations

Data migration

Operations

Migrate from Auth0

Request

This route enables you to migrate your users from Auth0 to Frontegg easily. Add the Domain, Client ID, Secret and the tenant’s ID Field Name - they’ll be found on Auth0 and the migration will be as smooth as possible.

Bodyapplication/jsonrequired
domainstringrequired
clientIdstringrequired
secretstringrequired
tenantIdFieldNamestringrequired

The field name that the tenant ID will be taken from under app metadata

isTenantIdOnUserMetadataboolean

If you would like to take tenant ID from user metadata, set this field to true

curl -i -X POST \
  https://api.frontegg.com/identity/resources/migrations/v1/auth0 \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "domain": "string",
    "clientId": "string",
    "secret": "string",
    "tenantIdFieldName": "string",
    "isTenantIdOnUserMetadata": true
  }'

Responses

Migrate a single user

Request

This route enables you to migrate a user by sending the following required fields: user’s email, their tenantId and metadata, a new user will be created. This endpoint takes other properties as well, such as the user’s name, their phone number, hashed password, etc...

Bodyapplication/jsonrequired
passwordHashstring

The password hash. For SCrypt should include the salt and key seperated by the salt separator

passwordHashTypestring(PasswordHashingType)
Enum"bcrypt""scrypt""firebase-scrypt""pbkdf2""argon2"
passwordHashConfigstring<= 4095 characters

Stringified JSON Hashing config for the migrated password. For SCrypt should be formatted as { saltSeparator, N, r, p, keyLen }. For FirebaseScrypt should be formatted as { memCost, rounds, saltSeparator, signerKey }

phoneNumberstring

phoneNumber can be used either for login with SMS or for MFA, in combination with phoneNumberType. The required format is area code + number, without spaces. For example: +16037184056. Note that the number must be unique

providerstring
Default "local"
Enum"local""saml""google""github""facebook""microsoft""scim2""slack""apple"
metadatastring

Stringified JSON object

verifyUserboolean

Whether to verify the user as part of the migration process. If this is set to false, another call is required for the verify user API

Default false
roleIdsArray of strings

Role ids of the migrated users. If not provided, the user will be assigned the default roles

Default []
vendorMetadatastring

Additional vendor-only data. stringified JSON object

emailstringrequired
tenantIdstringrequired
namestring
profilePictureUrlstring<= 4095 characters
authenticatorAppMfaSecretstring
phoneNumberTypestring
Enum"auth""mfa"
curl -i -X POST \
  https://api.frontegg.com/identity/resources/migrations/v1/local \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "passwordHash": "string",
    "passwordHashType": "bcrypt",
    "passwordHashConfig": "string",
    "phoneNumber": "string",
    "provider": "local",
    "metadata": "string",
    "verifyUser": false,
    "roleIds": [],
    "vendorMetadata": "string",
    "email": "string",
    "tenantId": "string",
    "name": "string",
    "profilePictureUrl": "string",
    "authenticatorAppMfaSecret": "string",
    "phoneNumberType": "auth"
  }'

Responses

Bodyapplication/json
idstringrequired
emailstringrequired
namestring
profilePictureUrlstring
substringrequired
verifiedbooleanrequired
mfaEnrolledbooleanrequired
mfaBypassboolean
phoneNumberstring
rolesArray of objects(RoleResponse)required
roles[].​idstringrequired
roles[].​vendorIdstringrequired
roles[].​tenantIdstringrequired
roles[].​keystringrequired
roles[].​namestringrequired
roles[].​descriptionstringrequired
roles[].​isDefaultbooleanrequired
roles[].​firstUserRolebooleanrequired
roles[].​levelnumberrequired
roles[].​createdAtstring(date-time)required
roles[].​updatedAtstring(date-time)required
roles[].​permissionsArray of stringsrequired
permissionsArray of objects(PermissionResponse)required
permissions[].​idstringrequired
permissions[].​keystringrequired
permissions[].​namestringrequired
permissions[].​descriptionstringrequired
permissions[].​createdAtstring(date-time)required
permissions[].​updatedAtstring(date-time)required
permissions[].​roleIdsArray of stringsrequired
permissions[].​categoryIdstringrequired
permissions[].​fePermissionbooleanrequired
providerstringrequired
tenantIdstringrequired
tenantIdsArray of stringsrequired
activatedForTenantboolean
isLockedboolean
tenantsArray of objects(UserTenantDto)required
tenants[].​tenantIdstringrequired
tenants[].​rolesArray of objects(RoleResponse)required
tenants[].​roles[].​idstringrequired
tenants[].​roles[].​vendorIdstringrequired
tenants[].​roles[].​tenantIdstringrequired
tenants[].​roles[].​keystringrequired
tenants[].​roles[].​namestringrequired
tenants[].​roles[].​descriptionstringrequired
tenants[].​roles[].​isDefaultbooleanrequired
tenants[].​roles[].​firstUserRolebooleanrequired
tenants[].​roles[].​levelnumberrequired
tenants[].​roles[].​createdAtstring(date-time)required
tenants[].​roles[].​updatedAtstring(date-time)required
tenants[].​roles[].​permissionsArray of stringsrequired
tenants[].​temporaryExpirationDatestring(date-time)
tenants[].​isDisabledboolean
invisibleboolean
superUserboolean
metadatastringrequired
vendorMetadatastringrequired
createdAtstring(date-time)required
lastLoginstring(date-time)required
groupsArray of objects
subAccountAccessAllowedbooleanrequired
managedBystring
Enum"frontegg""scim2""external"
Response
application/json
{ "id": "string", "email": "string", "name": "string", "profilePictureUrl": "string", "sub": "string", "verified": true, "mfaEnrolled": true, "mfaBypass": true, "phoneNumber": "string", "roles": [ { … } ], "permissions": [ { … } ], "provider": "string", "tenantId": "string", "tenantIds": [ "string" ], "activatedForTenant": true, "isLocked": true, "tenants": [ { … } ], "invisible": true, "superUser": true, "metadata": "string", "vendorMetadata": "string", "createdAt": "2019-08-24T14:15:22Z", "lastLogin": "2019-08-24T14:15:22Z", "groups": [ {} ], "subAccountAccessAllowed": true, "managedBy": "frontegg" }

Migrate users in bulk

Request

This route enables you to migrate users in bulk. Expects an array of users. Each entry must include a user's email and tenantId, which specifies that user's parent account. Use the the other fields as needed to store additional information. We recommend using the metadata property if you need to store custom information in a user's object.

Bodyapplication/jsonrequired
usersArray of objects(MigrateUserRequest)required
users[].​passwordHashstring

The password hash. For SCrypt should include the salt and key seperated by the salt separator

users[].​passwordHashTypestring(PasswordHashingType)
Enum"bcrypt""scrypt""firebase-scrypt""pbkdf2""argon2"
users[].​passwordHashConfigstring<= 4095 characters

Stringified JSON Hashing config for the migrated password. For SCrypt should be formatted as { saltSeparator, N, r, p, keyLen }. For FirebaseScrypt should be formatted as { memCost, rounds, saltSeparator, signerKey }

users[].​phoneNumberstring

phoneNumber can be used either for login with SMS or for MFA, in combination with phoneNumberType. The required format is area code + number, without spaces. For example: +16037184056. Note that the number must be unique

users[].​providerstring
Default "local"
Enum"local""saml""google""github""facebook""microsoft""scim2""slack""apple"
users[].​metadatastring

Stringified JSON object

users[].​verifyUserboolean

Whether to verify the user as part of the migration process. If this is set to false, another call is required for the verify user API

Default false
users[].​roleIdsArray of strings

Role ids of the migrated users. If not provided, the user will be assigned the default roles

Default []
users[].​vendorMetadatastring

Additional vendor-only data. stringified JSON object

users[].​emailstringrequired
users[].​tenantIdstringrequired
users[].​namestring
users[].​profilePictureUrlstring<= 4095 characters
users[].​authenticatorAppMfaSecretstring
users[].​phoneNumberTypestring
Enum"auth""mfa"
curl -i -X POST \
  https://api.frontegg.com/identity/resources/migrations/v1/local/bulk \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "users": [
      {
        "passwordHash": "string",
        "passwordHashType": "bcrypt",
        "passwordHashConfig": "string",
        "phoneNumber": "string",
        "provider": "local",
        "metadata": "string",
        "verifyUser": false,
        "roleIds": [],
        "vendorMetadata": "string",
        "email": "string",
        "tenantId": "string",
        "name": "string",
        "profilePictureUrl": "string",
        "authenticatorAppMfaSecret": "string",
        "phoneNumberType": "auth"
      }
    ]
  }'

Responses

Bodyapplication/json
migrationIdstringrequired
Response
application/json
{ "migrationId": "string" }

Check status of bulk migration

Request

This route returns the status of a pending or completed migration. The payload includes the migration's current state, the number of migrated users, and any errors that occured during migration. Payload is limited to 1,000 users.

Path
migrationIdstringrequired
curl -i -X GET \
  'https://api.frontegg.com/identity/resources/migrations/v1/local/bulk/status/{migrationId}' \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Responses

Bodyapplication/json
object(MigrationObject)
Response
application/json
{}

Delegation

Operations

Email configuration

Operations

Email templates

Operations

M2M tokens

Operations

MFA configuration

Operations

Permissions categories

Operations

Permissions

Operations

Roles

Operations

SMS configuration

Operations

SMS templates

Operations

Sessions configuration

Operations

User pools

Operations

Users

Operations

Account invitations

Operations

Account roles

Operations

API tokens

Operations

Domain restrictions

Operations

IP restrictions

Operations

Lockout policy

Operations

MFA settings

Operations

Password settings

Operations

Personal tokens

Operations

Sessions management

Operations

User groups

Operations

User management

Operations

User sessions

Operations

Users-applications management

Operations