---
schema_version: "1"
id: a503af23b3c72d99e7df1bad59835ee6af9431cae6ef8549aa3e2833d947b8d2
title: Create or Edit an External Auth Identity Provider
collection: admin
version: current
locale: en-us
portal_url: https://docs.salesforce.com/admin/current/en-us/xcloud/264-0-0/nc_create_edit_external_auth_identity_provider.md
canonical_url: https://help.salesforce.com/s/articleView?id=xcloud.nc_create_edit_external_auth_identity_provider.htm&release=264.0.0&type=5
source_site: help.salesforce.com
content_type: documentation
content_hash: fd102f676a69651ce959faafe1d12f2f1c14e69b47cc93c4527df190bb133c7b
description: If you plan to create named and external credentials that use OAuth2.0 authentication, first create an external auth identity provider. External auth identity providers obtain OAuth tokens for outbound callouts to external systems.
products:
  - Security
release: "264"
---
# Create or Edit an External Auth Identity Provider

If you plan to create named and external credentials that use OAuth2.0 authentication, first create an external auth identity provider. External auth identity providers obtain OAuth tokens for outbound callouts to external systems.

### Required Editions

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small edition"><colgroup><col></colgroup><tbody><tr class=""><td class="slds-cell-wrap" style="vertical-align:top;">Available in: both Salesforce Classic (not available in all orgs) and Lightning Experience</td></tr><tr class=""><td class="slds-cell-wrap" style="vertical-align:top;">Available in: all editions</td></tr></tbody></table>

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small permission">
        <colgroup>
          <col style="width:50%">
          <col style="width:50%">
        </colgroup>
        <thead class="slds-text-title_caps ">
          <tr class="">
            <th scope="colgroup" class="slds-cell-wrap" colspan="2" style="text-align:center;vertical-align:top;" id="d100300e41">User Permissions
              Needed</th>
          </tr>
        </thead>
        <tbody>
          <tr class="">
            <td data-label="User Permissions Needed" class="slds-cell-wrap" style="vertical-align:top;" headers="d100300e41 ">To view external credentials:</td>

            <td class="slds-cell-wrap" style="vertical-align:top;" headers="d100300e41 ">View Setup and Configuration</td>

          </tr>
          <tr class="">
            <td data-label="User Permissions Needed" class="slds-cell-wrap" style="vertical-align:top;" headers="d100300e41 ">To create, edit, or delete external credentials:</td>

            <td class="slds-cell-wrap" style="vertical-align:top;" headers="d100300e41 ">Manage Named Credentials or Customize Applications</td>

          </tr>
        </tbody>
      </table>

External systems often require additional parameters to specify which tenant to access. External auth identity providers support additional request parameters to customize and extend requests to the identity provider’s token endpoint. When you create an external auth identity provider, you can attach account IDs or tenant IDs as header or query parameters for seamless integration with multi-tenant services like NetSuite, Zendesk, or Dropbox.

1. From [Setup](https://help.salesforce.com/s/articleView?id=xcloud.basics_nav_setup.htm&type=5&language=en_US), use the Quick Find box to find and select **Named Credentials**.
2. Click the **External Auth Identity Providers** tab.
3. To create an external auth identity provider, click **New**. Or open an existing external auth identity provider in the list, and then click **Edit**.
4. Complete the fields.
    
    <table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small ">
            <colgroup>
              <col style="width:25%">
              <col style="width:75%">
            </colgroup>
            <thead class="slds-text-title_caps ">
              <tr class="">
                <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d100300e107">Field</th>
                <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d100300e109">Description</th>
              </tr>
            </thead>
            <tbody>
              <tr class="">
                <td data-label="Field" class="slds-cell-wrap" style="vertical-align:top;" headers="d100300e107 "><strong class="uicontrol">Label</strong></td>
                <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d100300e109 ">A user-friendly name for the external auth identity provider that’s shown in the
                  Salesforce user interface, such as in list views.</td>
              </tr>
              <tr class="">
                <td data-label="Field" class="slds-cell-wrap" style="vertical-align:top;" headers="d100300e107 "><strong class="uicontrol">Name</strong></td>
                <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d100300e109 ">A unique identifier that’s used to refer to this external auth identity provider
                  from callout definitions and through the API. The name can contain only underscores and
                  alphanumeric characters. It must be unique, begin with a letter, not include spaces, not
                  end with an underscore, and not contain two consecutive underscores. </td>
              </tr>
              <tr class="">
                <td data-label="Field" class="slds-cell-wrap" style="vertical-align:top;" headers="d100300e107 "><strong class="uicontrol">Description</strong></td>
                <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d100300e109 ">A description for the external auth identity provider.</td>
              </tr>
              <tr class="">
                <td class="slds-cell-wrap" colspan="2" style="text-align:center;vertical-align:top;" headers="d100300e107 d100300e109 ">Authentication</td>
              </tr>
              <tr class="">
                <td data-label="Field" class="slds-cell-wrap" style="vertical-align:top;" headers="d100300e107 "><strong class="uicontrol">Authentication Protocol</strong></td>
                <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d100300e109 ">
                  <p>Select the same authentication protocol that you plan to use for the external
                    credential.</p>
                  <p style="margin-bottom:0;">Currently, only OAuth 2.0 is supported.</p>
                </td>
              </tr>
              <tr class="">
                <td data-label="Field" class="slds-cell-wrap" style="vertical-align:top;" headers="d100300e107 "><strong class="uicontrol">Authentication Flow Type</strong></td>
                <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d100300e109 ">
                  <p>Select the authentication flow that authenticates users and gets authorization to access
                    protected resources.</p>
                  <p style="margin-bottom:0;">Currently, authorization code flow
                    and client credentials flow auth types are
                    supported.</p>
                </td>
              </tr>
              <tr class="">
                <td class="slds-cell-wrap" colspan="2" style="text-align:center;vertical-align:top;" headers="d100300e107 d100300e109 ">Client Identification</td>
              </tr>
              <tr class="">
                <td data-label="Field" class="slds-cell-wrap" style="vertical-align:top;" headers="d100300e107 "><strong class="uicontrol">Client ID</strong></td>
                <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d100300e109 ">Enter the unique identifier that's used to authenticate the client.</td>
              </tr>
              <tr class="">
                <td data-label="Field" class="slds-cell-wrap" style="vertical-align:top;" headers="d100300e107 "><strong class="uicontrol">Client Secret</strong></td>
                <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d100300e109 ">Enter the secret for your client.</td>
              </tr>
              <tr class="">
                <td data-label="Field" class="slds-cell-wrap" style="vertical-align:top;" headers="d100300e107 "><strong class="uicontrol">Pass client credentials in request body</strong></td>
                <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d100300e109 ">
                  <p>Optional. Sends the client ID and client secret in the callout’s request body
                    instead of its header.</p>
                  <p>By default, client credentials are sent in the callout’s
                    authorization header. With this format, the <var>client_id</var> is appended to
                    the <var>client_secret</var> in the format <code><var>client_id</var>:<var>client_secret</var></code>, and the
                    resulting value is Base64-encoded.</p>
                  <p style="margin-bottom:0;">Sending client credentials in the authorization
                    header aligns with section <a href="https://www.rfc-editor.org/rfc/rfc6749#section-2.3.1" target="_blank">2.3.1 Client Password</a> in <cite>The OAuth
                      2.0 Authorization Framework</cite> from the Internet Engineering Task Force.&nbsp;If the
                    external system requires that you pass client credentials in the request body instead,
                    use this option.</p>
                </td>
              </tr>
              <tr class="">
                <td class="slds-cell-wrap" colspan="2" style="text-align:center;vertical-align:top;" headers="d100300e107 d100300e109 ">Identity Provider URLs</td>
              </tr>
              <tr class="">
                <td data-label="Field" class="slds-cell-wrap" style="vertical-align:top;" headers="d100300e107 "><strong class="uicontrol">Authorize Endpoint URL</strong></td>
                <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d100300e109 ">Specify the OAuth authorization URL from the external system. For example,
                  <kbd>https://accounts.google.com/o/oauth2/authorize</kbd>.
                </td>
              </tr>
              <tr class="">
                <td data-label="Field" class="slds-cell-wrap" style="vertical-align:top;" headers="d100300e107 "><strong class="uicontrol">Token Endpoint URL</strong></td>
                <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d100300e109 ">Specify the OAuth token URL from the external system. For example,
                  <kbd>https://accounts.google.com/o/oauth2/accessToken</kbd>.
                </td>
              </tr>
              <tr class="">
                <td data-label="Field" class="slds-cell-wrap" style="vertical-align:top;" headers="d100300e107 "><strong class="uicontrol">User Info Endpoint URL</strong></td>
                <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d100300e109 ">Specify the OAuth user info URL from the external system. For example,
                  <kbd>https://www.googleapis.com/oauth2/v3/userinfo</kbd>.
                </td>
              </tr>
              <tr class="">
                <td data-label="Field" class="slds-cell-wrap" style="vertical-align:top;" headers="d100300e107 "><strong class="uicontrol">Use Proof Key for Code Exchange (PKCE) Extension</strong></td>
                <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d100300e109 "> Select this option to automatically enable the OAuth 2.0 PKCE extension, which
                  improves security.</td>
              </tr>
            </tbody>
          </table>
5. Save your changes.
6. On the external auth identity provider detail page, scroll to Custom Request Parameters and click **New**.
    
    Use custom request parameters to customize the interaction and OAuth handshake with external systems. To understand the parameters needed and where to place them, consult the external system’s documentation.
7. Enter the parameter details.
    
     
    | Field | Description |
    | --- | --- |
    | **Name** | Enter a name for the parameter. For example, Tenant ID. Enter audience if your identity provider requires this request parameter. |
    | **Value** | Enter the parameter’s value. For example, enter the tenant ID value for the external system. |
    | **Request Type** | Select whether this is a parameter for the token request, authorize request, or refresh request. |
    | **Parameter Location** | Select whether the parameter is located in the query, HTTP header, or request body. Select Body Parameter if your identity provider requires the audience request parameter. |
    | **Sequence Number** | Assign an optional sequence number to specify the order of parameters to apply. Priority is from lower to higher numbers. |
8. Save the parameter.

Now that you created the external auth identity provider and custom request parameters, it’s time to create the external credential to link it to. For an overview of all of the steps required to configure a named credential, see [Create Named Credentials and External Credentials](https://help.salesforce.com/s/articleView?id=xcloud.nc_named_creds_and_ext_creds.htm&release=264.0.0&type=5 "To simplify the setup of authenticated callouts, create an external credential to specify an authentication protocol and then specify a named credential as the callout endpoint. Add custom headers to cover more use cases and security requirements. Use a permission set or profile to grant access so that users can make authenticated callouts. You can create and configure named credentials programmatically or through the Salesforce UI.").