Breached password detection is a critical component of secure applications.    Read the white paper

FusionAuth logo
FusionAuth logo
  • Features
    FusionAuth Reactor

    FusionAuth Reactor is a powerful suite of features developed to extend FusionAuth's core functionality.

    • Flexible Architecture   Flexible Architecture
    • Auth the Way You Want It   Auth the Way You Want It
    • Security & Compliance   Security & Compliance
    • Ultimate Password Control   Ultimate Password Control
    • Customizable User Experience   Customizable User Experience
    • Advanced Registration Forms   Advanced Registration Forms
    • Built for Devs   Built for Devs
    • User Management & Reporting   User Management & Reporting
    • Scalability   Scalability
    • Single Sign-on   Single Sign-on
    • Breached Password Detection   Breached Password Detection
    • Connectors   Connectors
    • FusionAuth Reactor   FusionAuth Reactor
  • Pricing
    Cloud Pricing

    Let us host, monitor, manage, and maintain your deployments in your own private cloud.

    SEE PRICING cloud pricing   See FusionAuth Cloud Pricing
    Editions Pricing

    A powerful set of features with available support that extends FusionAuth's core functionality.

    SEE PRICING edition pricing   See FusionAuth Edition Pricing
    Editions + Cloud

    FusionAuth will handle everything so you can get back to building something awesome.

    GET STARTED Get started
  • Docs
  • Downloads
  • Resources
    FusionAuth Resources
    • Upgrade from SaaS
    • Upgrade from Open Source
    • Upgrade from Home Grown
    • Blog   Blog
    • Forum   Forum
    • Community & Support   Community & Support
    • Customer & Partners   Customers & Partners
    • Video & Podcasts   Videos & Podcasts
    • Getting Started   Getting Started
  • Expert Advice
    Expert Advice for Developers

    Learn everything you need to know about authentication, authorization, identity, and access management from our team of industry experts.

    • Authentication   Authentication
    • CIAM   CIAM
    • Identity Basics   Identity Basics
    • OAuth   OAuth
    • Security   Security
    • Tokens   Tokens
    • Dev Tools   Dev Tools
  • Account
Navigate to...
  • Welcome
  • Getting Started
  • 5-Minute Setup Guide
  • Reactor
  • Core Concepts
    • Overview
    • Users
    • Roles
    • Groups
    • Registrations
    • Applications
    • Tenants
    • Identity Providers
    • Authentication and Authorization
    • Integration Points
    • Roadmap
  • Installation Guide
    • Overview
    • System Requirements
    • Server Layout
    • Cluster
    • Docker
    • Fast Path
    • Kickstart™
    • Homebrew
    • Packages
    • Database
    • FusionAuth App
    • FusionAuth Search
    • Securing
    • Upgrading
  • APIs
    • Overview
    • Authentication
    • Errors
    • Actioning Users
    • Applications
    • Audit Logs
    • Connectors
      • Overview
      • Generic
      • LDAP
    • Consent
    • Emails
    • Event Logs
    • Families
    • Forms
    • Form Fields
    • Groups
    • Identity Providers
      • Overview
      • Apple
      • Facebook
      • Google
      • HYPR
      • LinkedIn
      • Twitter
      • OpenID Connect
      • SAML v2
      • External JWT
    • Integrations
    • JWT
    • Keys
    • Lambdas
    • Login
    • Passwordless
    • Registrations
    • Reports
    • System
    • Tenants
    • Themes
    • Two Factor
    • Users
    • User Actions
    • User Action Reasons
    • User Comments
    • Webhooks
  • Client Libraries
    • Overview
    • Dart
    • Go
    • Java
    • JavaScript
    • .NET Core
    • Node
    • PHP
    • Python
    • Ruby
    • Typescript
  • Themes
    • Overview
    • Localization
    • Examples
  • Email & Templates
    • Overview
    • Configure Email
    • Email Templates
  • Events & Webhooks
    • Overview
    • Events
    • Writing a Webhook
    • Securing Webhooks
  • Example Apps
    • Overview
    • Go
    • Java
    • JavaScript
    • .NET Core
    • PHP
    • Python
    • Ruby
  • Lambdas
    • Overview
    • Apple Reconcile
    • External JWT Reconcile
    • Facebook Reconcile
    • Google Reconcile
    • HYPR Reconcile
    • JWT Populate
    • LDAP Connector Reconcile
    • LinkedIn Reconcile
    • OpenID Connect Reconcile
    • SAML v2 Populate
    • SAML v2 Reconcile
    • Twitter Reconcile
  • Identity Providers
    • Overview
    • Apple
    • Facebook
    • Google
    • HYPR
    • LinkedIn
    • Twitter
    • OpenID Connect
      • Overview
      • Azure AD
      • Github
      • Discord
    • SAML v2
      • Overview
      • ADFS
    • External JWT
      • Overview
      • Example
  • Connectors
    • Overview
    • Generic Connector
    • LDAP Connector
    • FusionAuth Connector
  • Integrations
    • Overview
    • CleanSpeak
    • Kafka
    • Twilio
  • OpenID Connect & OAuth 2.0
    • Overview
    • Endpoints
    • Tokens
  • SAML v2 IdP
    • Overview
    • Google
    • Zendesk
  • Plugins
    • Writing a Plugin
    • Password Encryptors
  • Guides
    • Overview
    • Advanced Registration Forms
    • Breached Password Detection
    • Migration
    • Passwordless
    • Securing Your APIs
    • Silent Mode
    • Single Sign-on
  • Tutorials
    • Overview
    • Setup Wizard & First Login
    • Register/Login a User
    • Migrate Users
    • JSON Web Tokens
    • Authentication Tokens
    • Start and Stop FusionAuth
    • Switch Search Engines
    • User Account Lockout
    • Two Factor
  • Reference
    • CORS
    • Configuration
    • Data Types
    • Known Limitations
    • Password Encryptors
  • Release Notes
  • Troubleshooting

External JWT Identity Provider APIs

Overview

This API has been available since 1.1.0

This is a special type of identity provider that is only used via the JWT Reconcile API. This identity provider defines the claims inside the incoming JWT and how they map to fields in the FusionAuth User object.

In order for this identity provider to use the JWT, it also needs the public key or HMAC secret that the JWT was signed with. FusionAuth will verify that the JWT is valid and has not expired. Once the JWT has been validated, FusionAuth will reconcile it to ensure that the User exists and is up-to-date.

Operations

  • Create an External JWT Identity Provider

  • Retrieve an External JWT Identity Provider

  • Update an External JWT Identity Provider

  • Delete an External JWT Identity Provider

Create an External JWT Identity Provider

Request

Create an Identity Provider using a randomly generated id

URI

POST /api/identity-provider

Create an Identity Provider with the provided unique id

URI

POST /api/identity-provider/{identityProviderId}

The type property in the request JSON is used to determine that you are managing an External JWT identity provider.

Request Parameters

identityProviderId [UUID] Optional defaults to secure random UUID

The Id to use for the new Identity Provider. If an id is not provided, a secure random UUID is generated.

Request Body

identityProvider.applicationConfiguration [Map<UUID, Object>] Optional

The configuration for each Application that the identity provider is enabled for.

identityProvider.applicationConfiguration[applicationId].createRegistration [Boolean] Optional defaults to true

Determines if a UserRegistration is created for the User automatically or not. If a user doesn’t exist in FusionAuth and logs in through an identity provider, this boolean controls whether or not FusionAuth creates a registration for the User in the Application they are logging into.

identityProvider.applicationConfiguration[applicationId].enabled [Boolean] Optional defaults to false

Determines if this identity provider is enabled for the Application specified by the applicationId key.

identityProvider.claimMap [Map<String, String>] Optional

A map of incoming claims to User fields, User data or Registration data. The key of the map is the incoming claim name from the configured identity provider. The following are allowed values:

  • birthDate

  • firstName

  • lastName

  • fullName

  • middleName

  • mobilePhone

  • imageUrl

  • timezone

  • UserData

  • RegistrationData

identityProvider.debug [Boolean] Optional defaults to false Available since 1.7.3

Determines if debug is enabled for this provider. When enabled, each time this provider is invoked to reconcile a login an Event Log will be created.

This is useful for debugging purposes, but is not intended to be left on during production. It should be enabled during integration or if you are experiencing an issue with this identity provider.

identityProvider.domains [Array<String>] Optional

An array of domains that are managed by this Identity Provider.

identityProvider.enabled [Boolean] Optional defaults to false

Determines if this provider is enabled. If it is false then it will be disabled globally.

identityProvider.headerKeyParameter [String] Required

The name header claim that identifies the public key used to verify the signature. In most cases this be kid or x5t.

identityProvider.keys [Map<String, String>] Optional

A map of public keys used to verify JWT signatures issued from the configured Identity Provider. The key is the key identifier, this may be referred to as the kid or for X.509 certificates the x5t claim may be used.

The map may contain one entry with an empty map key. When provided this key will be used when no header claim is provided to indicate which public key should be used to verify the signature. Generally speaking this will only be used when the Identity Provider issues JWTs without a key identifier in the header.

identityProvider.lambdaConfiguration.reconcileId [UUID] Optional Available since 1.17.0

The unique Id of the lambda to used during the user reconcile process to map custom claims from the external identity provider to the FusionAuth user. This may be used in addition to, or in place of the claim mappings.

The specified Lambda Id must be of type ExternalJWTReconcile

identityProvider.name [String] Required

The name of the Identity Provider.

identityProvider.oauth2.authorization_endpoint [String] Optional

The authorization endpoint for this Identity Provider. This value is not utilized by FusionAuth is only provided to be returned by the Lookup Identity Provider API response. During integration you may then utilize this value to perform the browser redirect to the OAuth2 authorize endpoint.

identityProvider.oauth2.token_endpoint [String] Optional

The token endpoint for this Identity Provider. This value is not utilized by FusionAuth is only provided to be returned by the Lookup Identity Provider API response. During integration you may then utilize this value to complete the OAuth2 grant workflow.

identityProvider.type [String] Required

This field must be set to ExternalJWT.

identityProvider.uniqueIdentityClaim [String] Required

The name of the claim that represents the unique identify of the User. This will generally be email or the name of the claim that provides the email address.

Example Request JSON
{
  "identityProvider": {
    "claimMap": {
      "first_name": "firstName",
      "last_name": "lastName",
      "dept": "RegistrationData"
    },
    "debug": false,
    "domains": [
      "acme.com",
      "acme.org"
    ],
    "enabled": true,
    "headerKeyParameter" : "kid",
    "name": "Acme Corp. ADFS",
    "oauth2" : {
      "authorization_endpoint" : "https://acme.com/adfs/oauth2/authorize?client_id=cf3b00da-9551-460a-ad18-33232e6cbff0&response_type=code&redirect_uri=https://acme.com/oauth2/redirect",
      "token_endpoint" : "https://acme.com/adfs/oauth2/token"
    },
    "type": "ExternalJWT",
    "uniqueIdentityClaim": "email"
  }
}

Response

Table 1. Response Codes
Code Description

200

The request was successful. The response will contain a JSON body.

400

The request was invalid and/or malformed. The response will contain an Errors JSON Object with the specific errors.

401

You did not supply a valid Authorization header. The header was omitted or your API key was not valid. The response will be empty. See Authentication.

500

There was an internal error. A stack trace is provided and logged in the FusionAuth log files. The response will be empty.

Response Body

identityProvider.applicationConfiguration [Map<UUID, Object>]

The configuration for each Application that the identity provider is enabled for.

identityProvider.applicationConfiguration[applicationId].createRegistration [Boolean]

Determines if a UserRegistration is created for the User automatically or not. If a user doesn’t exist in FusionAuth and logs in through an identity provider, this boolean controls whether or not FusionAuth creates a registration for the User in the Application they are logging into.

identityProvider.applicationConfiguration[applicationId].enabled [Boolean]

Determines if this identity provider is enabled for the Application specified by the applicationId key.

identityProvider.claimMap [Map<String, String>]

A map of incoming claims to User fields, User data or Registration data. The key of the map is the incoming claim name from the configured identity provider. The following are allowed values:

  • birthDate

  • firstName

  • lastName

  • fullName

  • middleName

  • mobilePhone

  • imageUrl

  • timezone

  • UserData

  • RegistrationData

identityProvider.debug [Boolean] Available since 1.7.3

Determines if debug is enabled for this provider. When enabled, each time this provider is invoked to reconcile a login an Event Log will be created.

identityProvider.domains [Array<String>]

An array of domains that are managed by this Identity Provider.

identityProvider.enabled [Boolean]

Determines if this provider is enabled. If it is false then it will be disabled globally.

identityProvider.headerKeyParameter [String]

The name header claim that identifies the public key used to verify the signature. In most cases this be kid or x5t.

identityProvider.id [UUID]

The unique identifier for the identity provider.

identityProvider.insertInstant [Long]

The instant that the provider was added to the FusionAuth database.

identityProvider.lastUpdateInstant [Long]

The instant that the provider was updated in the FusionAuth database.

identityProvider.keys [Map<String, String>]

A map of public keys used to verify JWT signatures issued from the configured Identity Provider. The key is the key identifier, this may be referred to as the kid or for X.509 certificates the x5t claim may be used.

The map may contain one entry with an empty map key. When provided this key will be used when no header claim is provided to indicate which public key should be used to verify the signature. Generally speaking this will only be used when the Identity Provider issues JWTs without a key identifier in the header.

identityProvider.lambdaConfiguration.reconcileId [UUID] Available since 1.17.0

The unique Id of the lambda to used during the user reconcile process to map custom claims from the external identity provider to the FusionAuth user.

identityProvider.name [String]

The name of the Identity Provider.

identityProvider.oauth2.authorization_endpoint [String]

The authorization endpoint for this Identity Provider. This value is not utilized by FusionAuth is only provided to be returned by the Lookup Identity Provider API response. During integration you may then utilize this value to perform the browser redirect to the OAuth2 authorize endpoint.

identityProvider.oauth2.token_endpoint [String]

The token endpoint for this Identity Provider. This value is not utilized by FusionAuth is only provided to be returned by the Lookup Identity Provider API response. During integration you may then utilize this value to complete the OAuth2 grant workflow.

identityProvider.type [String]

The type of this provider, this field will always be set to ExternalJWT.

identityProvider.uniqueIdentityClaim [String]

The name of the claim that represents the unique identify of the User. This will generally be email or the name of the claim that provides the email address.

Example Response JSON
{
  "identityProvider": {
    "claimMap": {
      "first_name": "firstName",
      "last_name": "lastName",
      "dept": "RegistrationData"
    },
    "debug" : false,
    "domains": [
      "acme.com",
      "acme.org"
    ],
    "headerKeyParameter" : "kid",
    "id" : "a4e78daa-33a6-4844-b081-7779af1f09a4",
    "insertInstant": 1595361142909,
    "lastUpdateInstant": 1595361143101,
    "name": "Acme Corp. ADFS",
    "oauth2" : {
      "authorization_endpoint" : "https://acme.com/adfs/oauth2/authorize?client_id=cf3b00da-9551-460a-ad18-33232e6cbff0&response_type=code&redirect_uri=https://acme.com/oauth2/redirect",
      "token_endpoint" : "https://acme.com/adfs/oauth2/token"
    },
    "type": "ExternalJWT",
    "uniqueIdentityClaim": "email"
  }
}

Retrieve an External JWT Identity Provider

Request

Retrieve an external JWT Identity Provider by Id

URI

GET /api/identity-provider/{identityProviderId}

Request Parameters

identityProviderId [UUID] Required

The unique Id of the Identity Provider to retrieve.

Response

Table 2. Response Codes
Code Description

200

The request was successful. The response will contain a JSON body.

400

The request was invalid and/or malformed. The response will contain an Errors JSON Object with the specific errors.

401

You did not supply a valid Authorization header. The header was omitted or your API key was not valid. The response will be empty. See Authentication.

404

The object you requested doesn’t exist. The response will be empty.

500

There was an internal error. A stack trace is provided and logged in the FusionAuth log files. The response will be empty.

Response Body

identityProvider.applicationConfiguration [Map<UUID, Object>]

The configuration for each Application that the identity provider is enabled for.

identityProvider.applicationConfiguration[applicationId].createRegistration [Boolean]

Determines if a UserRegistration is created for the User automatically or not. If a user doesn’t exist in FusionAuth and logs in through an identity provider, this boolean controls whether or not FusionAuth creates a registration for the User in the Application they are logging into.

identityProvider.applicationConfiguration[applicationId].enabled [Boolean]

Determines if this identity provider is enabled for the Application specified by the applicationId key.

identityProvider.claimMap [Map<String, String>]

A map of incoming claims to User fields, User data or Registration data. The key of the map is the incoming claim name from the configured identity provider. The following are allowed values:

  • birthDate

  • firstName

  • lastName

  • fullName

  • middleName

  • mobilePhone

  • imageUrl

  • timezone

  • UserData

  • RegistrationData

identityProvider.debug [Boolean] Available since 1.7.3

Determines if debug is enabled for this provider. When enabled, each time this provider is invoked to reconcile a login an Event Log will be created.

identityProvider.domains [Array<String>]

An array of domains that are managed by this Identity Provider.

identityProvider.enabled [Boolean]

Determines if this provider is enabled. If it is false then it will be disabled globally.

identityProvider.headerKeyParameter [String]

The name header claim that identifies the public key used to verify the signature. In most cases this be kid or x5t.

identityProvider.id [UUID]

The unique identifier for the identity provider.

identityProvider.insertInstant [Long]

The instant that the provider was added to the FusionAuth database.

identityProvider.lastUpdateInstant [Long]

The instant that the provider was updated in the FusionAuth database.

identityProvider.keys [Map<String, String>]

A map of public keys used to verify JWT signatures issued from the configured Identity Provider. The key is the key identifier, this may be referred to as the kid or for X.509 certificates the x5t claim may be used.

The map may contain one entry with an empty map key. When provided this key will be used when no header claim is provided to indicate which public key should be used to verify the signature. Generally speaking this will only be used when the Identity Provider issues JWTs without a key identifier in the header.

identityProvider.lambdaConfiguration.reconcileId [UUID] Available since 1.17.0

The unique Id of the lambda to used during the user reconcile process to map custom claims from the external identity provider to the FusionAuth user.

identityProvider.name [String]

The name of the Identity Provider.

identityProvider.oauth2.authorization_endpoint [String]

The authorization endpoint for this Identity Provider. This value is not utilized by FusionAuth is only provided to be returned by the Lookup Identity Provider API response. During integration you may then utilize this value to perform the browser redirect to the OAuth2 authorize endpoint.

identityProvider.oauth2.token_endpoint [String]

The token endpoint for this Identity Provider. This value is not utilized by FusionAuth is only provided to be returned by the Lookup Identity Provider API response. During integration you may then utilize this value to complete the OAuth2 grant workflow.

identityProvider.type [String]

The type of this provider, this field will always be set to ExternalJWT.

identityProvider.uniqueIdentityClaim [String]

The name of the claim that represents the unique identify of the User. This will generally be email or the name of the claim that provides the email address.

Example Response JSON
{
  "identityProvider": {
    "claimMap": {
      "first_name": "firstName",
      "last_name": "lastName",
      "dept": "RegistrationData"
    },
    "debug" : false,
    "domains": [
      "acme.com",
      "acme.org"
    ],
    "headerKeyParameter" : "kid",
    "id" : "a4e78daa-33a6-4844-b081-7779af1f09a4",
    "insertInstant": 1595361142909,
    "lastUpdateInstant": 1595361143101,
    "name": "Acme Corp. ADFS",
    "oauth2" : {
      "authorization_endpoint" : "https://acme.com/adfs/oauth2/authorize?client_id=cf3b00da-9551-460a-ad18-33232e6cbff0&response_type=code&redirect_uri=https://acme.com/oauth2/redirect",
      "token_endpoint" : "https://acme.com/adfs/oauth2/token"
    },
    "type": "ExternalJWT",
    "uniqueIdentityClaim": "email"
  }
}

Update an External JWT Identity Provider

Request

Update an Identity Provider

URI

PUT /api/identity-provider/{identityProviderId}

PATCH /api/identity-provider/{identityProviderId}

Available since 1.12.0

When using the PATCH method, use the same request body documentation that is provided for the PUT request. The PATCH method will merge the provided request parameters into the existing object, this means all parameters are optional when using the PATCH method and you only provide the values you want changed. A null value can be used to remove a value. Patching an Array will result in all values from the new list being appended to the existing list, this is a known limitation to the current implementation of PATCH.

 

Request Body

identityProvider.applicationConfiguration [Map<UUID, Object>] Optional

The configuration for each Application that the identity provider is enabled for.

identityProvider.applicationConfiguration[applicationId].createRegistration [Boolean] Optional defaults to true

Determines if a UserRegistration is created for the User automatically or not. If a user doesn’t exist in FusionAuth and logs in through an identity provider, this boolean controls whether or not FusionAuth creates a registration for the User in the Application they are logging into.

identityProvider.applicationConfiguration[applicationId].enabled [Boolean] Optional defaults to false

Determines if this identity provider is enabled for the Application specified by the applicationId key.

identityProvider.claimMap [Map<String, String>] Optional

A map of incoming claims to User fields, User data or Registration data. The key of the map is the incoming claim name from the configured identity provider. The following are allowed values:

  • birthDate

  • firstName

  • lastName

  • fullName

  • middleName

  • mobilePhone

  • imageUrl

  • timezone

  • UserData

  • RegistrationData

identityProvider.debug [Boolean] Optional defaults to false Available since 1.7.3

Determines if debug is enabled for this provider. When enabled, each time this provider is invoked to reconcile a login an Event Log will be created.

This is useful for debugging purposes, but is not intended to be left on during production. It should be enabled during integration or if you are experiencing an issue with this identity provider.

identityProvider.domains [Array<String>] Optional

An array of domains that are managed by this Identity Provider.

identityProvider.enabled [Boolean] Optional defaults to false

Determines if this provider is enabled. If it is false then it will be disabled globally.

identityProvider.headerKeyParameter [String] Required

The name header claim that identifies the public key used to verify the signature. In most cases this be kid or x5t.

identityProvider.keys [Map<String, String>] Optional

A map of public keys used to verify JWT signatures issued from the configured Identity Provider. The key is the key identifier, this may be referred to as the kid or for X.509 certificates the x5t claim may be used.

The map may contain one entry with an empty map key. When provided this key will be used when no header claim is provided to indicate which public key should be used to verify the signature. Generally speaking this will only be used when the Identity Provider issues JWTs without a key identifier in the header.

identityProvider.lambdaConfiguration.reconcileId [UUID] Optional Available since 1.17.0

The unique Id of the lambda to used during the user reconcile process to map custom claims from the external identity provider to the FusionAuth user. This may be used in addition to, or in place of the claim mappings.

The specified Lambda Id must be of type ExternalJWTReconcile

identityProvider.name [String] Required

The name of the Identity Provider.

identityProvider.oauth2.authorization_endpoint [String] Optional

The authorization endpoint for this Identity Provider. This value is not utilized by FusionAuth is only provided to be returned by the Lookup Identity Provider API response. During integration you may then utilize this value to perform the browser redirect to the OAuth2 authorize endpoint.

identityProvider.oauth2.token_endpoint [String] Optional

The token endpoint for this Identity Provider. This value is not utilized by FusionAuth is only provided to be returned by the Lookup Identity Provider API response. During integration you may then utilize this value to complete the OAuth2 grant workflow.

identityProvider.type [String] Required

This field must be set to ExternalJWT.

identityProvider.uniqueIdentityClaim [String] Required

The name of the claim that represents the unique identify of the User. This will generally be email or the name of the claim that provides the email address.

Example Request JSON
{
  "identityProvider": {
    "claimMap": {
      "first_name": "firstName",
      "last_name": "lastName",
      "dept": "RegistrationData"
    },
    "debug": false,
    "domains": [
      "acme.com",
      "acme.org"
    ],
    "enabled": true,
    "headerKeyParameter" : "kid",
    "name": "Acme Corp. ADFS",
    "oauth2" : {
      "authorization_endpoint" : "https://acme.com/adfs/oauth2/authorize?client_id=cf3b00da-9551-460a-ad18-33232e6cbff0&response_type=code&redirect_uri=https://acme.com/oauth2/redirect",
      "token_endpoint" : "https://acme.com/adfs/oauth2/token"
    },
    "type": "ExternalJWT",
    "uniqueIdentityClaim": "email"
  }
}

Request Parameters

identityProviderId [UUID] Required

The unique Id of the Identity Provider to update.

Request Body

identityProvider.applicationConfiguration [Map<UUID, Object>] Optional

The configuration for each Application that the identity provider is enabled for.

identityProvider.applicationConfiguration[applicationId].createRegistration [Boolean] Optional defaults to true

Determines if a UserRegistration is created for the User automatically or not. If a user doesn’t exist in FusionAuth and logs in through an identity provider, this boolean controls whether or not FusionAuth creates a registration for the User in the Application they are logging into.

identityProvider.applicationConfiguration[applicationId].enabled [Boolean] Optional defaults to false

Determines if this identity provider is enabled for the Application specified by the applicationId key.

identityProvider.claimMap [Map<String, String>] Optional

A map of incoming claims to User fields, User data or Registration data. The key of the map is the incoming claim name from the configured identity provider. The following are allowed values:

  • birthDate

  • firstName

  • lastName

  • fullName

  • middleName

  • mobilePhone

  • imageUrl

  • timezone

  • UserData

  • RegistrationData

identityProvider.debug [Boolean] Optional defaults to false Available since 1.7.3

Determines if debug is enabled for this provider. When enabled, each time this provider is invoked to reconcile a login an Event Log will be created.

This is useful for debugging purposes, but is not intended to be left on during production. It should be enabled during integration or if you are experiencing an issue with this identity provider.

identityProvider.domains [Array<String>] Optional

An array of domains that are managed by this Identity Provider.

identityProvider.enabled [Boolean] Optional defaults to false

Determines if this provider is enabled. If it is false then it will be disabled globally.

identityProvider.headerKeyParameter [String] Required

The name header claim that identifies the public key used to verify the signature. In most cases this be kid or x5t.

identityProvider.keys [Map<String, String>] Optional

A map of public keys used to verify JWT signatures issued from the configured Identity Provider. The key is the key identifier, this may be referred to as the kid or for X.509 certificates the x5t claim may be used.

The map may contain one entry with an empty map key. When provided this key will be used when no header claim is provided to indicate which public key should be used to verify the signature. Generally speaking this will only be used when the Identity Provider issues JWTs without a key identifier in the header.

identityProvider.lambdaConfiguration.reconcileId [UUID] Optional Available since 1.17.0

The unique Id of the lambda to used during the user reconcile process to map custom claims from the external identity provider to the FusionAuth user. This may be used in addition to, or in place of the claim mappings.

The specified Lambda Id must be of type ExternalJWTReconcile

identityProvider.name [String] Required

The name of the Identity Provider.

identityProvider.oauth2.authorization_endpoint [String] Optional

The authorization endpoint for this Identity Provider. This value is not utilized by FusionAuth is only provided to be returned by the Lookup Identity Provider API response. During integration you may then utilize this value to perform the browser redirect to the OAuth2 authorize endpoint.

identityProvider.oauth2.token_endpoint [String] Optional

The token endpoint for this Identity Provider. This value is not utilized by FusionAuth is only provided to be returned by the Lookup Identity Provider API response. During integration you may then utilize this value to complete the OAuth2 grant workflow.

identityProvider.type [String] Required

This field must be set to ExternalJWT.

identityProvider.uniqueIdentityClaim [String] Required

The name of the claim that represents the unique identify of the User. This will generally be email or the name of the claim that provides the email address.

Example Request JSON
{
  "identityProvider": {
    "claimMap": {
      "first_name": "firstName",
      "last_name": "lastName",
      "dept": "RegistrationData"
    },
    "debug": false,
    "domains": [
      "acme.com",
      "acme.org"
    ],
    "enabled": true,
    "headerKeyParameter" : "kid",
    "name": "Acme Corp. ADFS",
    "oauth2" : {
      "authorization_endpoint" : "https://acme.com/adfs/oauth2/authorize?client_id=cf3b00da-9551-460a-ad18-33232e6cbff0&response_type=code&redirect_uri=https://acme.com/oauth2/redirect",
      "token_endpoint" : "https://acme.com/adfs/oauth2/token"
    },
    "type": "ExternalJWT",
    "uniqueIdentityClaim": "email"
  }
}

Response

The response for this API contains the external JWT Identity Provider that was updated.

Table 3. Response Codes
Code Description

200

The request was successful. The response will contain a JSON body.

400

The request was invalid and/or malformed. The response will contain an Errors JSON Object with the specific errors.

401

You did not supply a valid Authorization header. The header was omitted or your API key was not valid. The response will be empty. See Authentication.

404

The object you are trying to updated doesn’t exist. The response will be empty.

500

There was an internal error. A stack trace is provided and logged in the FusionAuth log files. The response will be empty.

Response Body

identityProvider.applicationConfiguration [Map<UUID, Object>]

The configuration for each Application that the identity provider is enabled for.

identityProvider.applicationConfiguration[applicationId].createRegistration [Boolean]

Determines if a UserRegistration is created for the User automatically or not. If a user doesn’t exist in FusionAuth and logs in through an identity provider, this boolean controls whether or not FusionAuth creates a registration for the User in the Application they are logging into.

identityProvider.applicationConfiguration[applicationId].enabled [Boolean]

Determines if this identity provider is enabled for the Application specified by the applicationId key.

identityProvider.claimMap [Map<String, String>]

A map of incoming claims to User fields, User data or Registration data. The key of the map is the incoming claim name from the configured identity provider. The following are allowed values:

  • birthDate

  • firstName

  • lastName

  • fullName

  • middleName

  • mobilePhone

  • imageUrl

  • timezone

  • UserData

  • RegistrationData

identityProvider.debug [Boolean] Available since 1.7.3

Determines if debug is enabled for this provider. When enabled, each time this provider is invoked to reconcile a login an Event Log will be created.

identityProvider.domains [Array<String>]

An array of domains that are managed by this Identity Provider.

identityProvider.enabled [Boolean]

Determines if this provider is enabled. If it is false then it will be disabled globally.

identityProvider.headerKeyParameter [String]

The name header claim that identifies the public key used to verify the signature. In most cases this be kid or x5t.

identityProvider.id [UUID]

The unique identifier for the identity provider.

identityProvider.insertInstant [Long]

The instant that the provider was added to the FusionAuth database.

identityProvider.lastUpdateInstant [Long]

The instant that the provider was updated in the FusionAuth database.

identityProvider.keys [Map<String, String>]

A map of public keys used to verify JWT signatures issued from the configured Identity Provider. The key is the key identifier, this may be referred to as the kid or for X.509 certificates the x5t claim may be used.

The map may contain one entry with an empty map key. When provided this key will be used when no header claim is provided to indicate which public key should be used to verify the signature. Generally speaking this will only be used when the Identity Provider issues JWTs without a key identifier in the header.

identityProvider.lambdaConfiguration.reconcileId [UUID] Available since 1.17.0

The unique Id of the lambda to used during the user reconcile process to map custom claims from the external identity provider to the FusionAuth user.

identityProvider.name [String]

The name of the Identity Provider.

identityProvider.oauth2.authorization_endpoint [String]

The authorization endpoint for this Identity Provider. This value is not utilized by FusionAuth is only provided to be returned by the Lookup Identity Provider API response. During integration you may then utilize this value to perform the browser redirect to the OAuth2 authorize endpoint.

identityProvider.oauth2.token_endpoint [String]

The token endpoint for this Identity Provider. This value is not utilized by FusionAuth is only provided to be returned by the Lookup Identity Provider API response. During integration you may then utilize this value to complete the OAuth2 grant workflow.

identityProvider.type [String]

The type of this provider, this field will always be set to ExternalJWT.

identityProvider.uniqueIdentityClaim [String]

The name of the claim that represents the unique identify of the User. This will generally be email or the name of the claim that provides the email address.

Example Response JSON
{
  "identityProvider": {
    "claimMap": {
      "first_name": "firstName",
      "last_name": "lastName",
      "dept": "RegistrationData"
    },
    "debug" : false,
    "domains": [
      "acme.com",
      "acme.org"
    ],
    "headerKeyParameter" : "kid",
    "id" : "a4e78daa-33a6-4844-b081-7779af1f09a4",
    "insertInstant": 1595361142909,
    "lastUpdateInstant": 1595361143101,
    "name": "Acme Corp. ADFS",
    "oauth2" : {
      "authorization_endpoint" : "https://acme.com/adfs/oauth2/authorize?client_id=cf3b00da-9551-460a-ad18-33232e6cbff0&response_type=code&redirect_uri=https://acme.com/oauth2/redirect",
      "token_endpoint" : "https://acme.com/adfs/oauth2/token"
    },
    "type": "ExternalJWT",
    "uniqueIdentityClaim": "email"
  }
}

Delete an External JWT Identity Provider

Request

Delete an Identity Provider by Id

URI

DELETE /api/identity-provider/{identityProviderId}

Request Parameters

identityProviderId [UUID] Required

The unique Id of the Identity Provider to delete.

Response

This API does not return a JSON response body.

Table 4. Response Codes
Code Description

200

The request was successful. The response will be empty.

400

The request was invalid and/or malformed. The response will contain an Errors JSON Object with the specific errors.

401

You did not supply a valid Authorization header. The header was omitted or your API key was not valid. The response will be empty. See Authentication.

404

The object you are trying to delete doesn’t exist. The response will be empty.

500

There was an internal error. A stack trace is provided and logged in the FusionAuth log files. The response will be empty.

Feedback

How helpful was this page?

See a problem?

File an issue in our docs repo

Quick Links

  • Download
  • Cloud Pricing
  • Editions Pricing
  • Contact Us
  • Jobs (come work with us)
  • My Account

Resources

  • Docs
  • Blog
  • Community & Support
  • Upgrade from SaaS
  • Upgrade from Homegrown
  • Upgrade from Open Source

Everything Else

  • Privacy Policy
  • Product Privacy Policy
  • License
  • License FAQ
  • Enterprise Sales FAQ
  • Security (contact, bug bounty, etc)
  • Technical Support

Connect with Us

logo
Subscribe for Updates
We only send dev friendly newsletters. No marketing fluff!
© 2021 FusionAuth