---
schema_version: "1"
id: 5823266eb3d8446a861ecef7cd7db98fd18e5bcbdaf990d958a97b05a392bc96
title: Permission Concepts for User External Credentials
collection: admin
version: current
locale: en-us
portal_url: https://docs.salesforce.com/admin/current/en-us/xcloud/264-0-0/nc_user_external_credentials_permissions.md
canonical_url: https://help.salesforce.com/s/articleView?id=xcloud.nc_user_external_credentials_permissions.htm&release=264.0.0&type=5
source_site: help.salesforce.com
content_type: documentation
content_hash: a258a2ab453e1086ed944696306ea8e48a4049256d4cefb7022d3fffb285ac48
description: As a Salesforce admin, you must pay careful attention to security and permissions settings in your org. We recommend that you limit data access to the lowest level possible, while still allowing everyone to do their jobs. This strategy is known as the principle of least privilege. Whether you enable user external credentials via permission sets or profiles, follow this guidance to grant the appropriate access for each authentication protocol.
products:
  - Security
release: "264"
---
# Permission Concepts for User External Credentials

As a Salesforce admin, you must pay careful attention to security and permissions settings in your org. We recommend that you limit data access to the lowest level possible, while still allowing everyone to do their jobs. This strategy is known as the principle of least privilege. Whether you enable user external credentials via permission sets or profiles, follow this guidance to grant the appropriate access for each authentication protocol.

### 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>

User external credential objects store encrypted tokens used by named credentials to authenticate to external systems. In order to perform an authenticated callout, users need profile- or permission set-based access to user external credentials. These tables outline the necessary permissions for each authentication protocol. For more information about the authentication protocols, see [Authentication Protocols for Named Credentials](https://help.salesforce.com/s/articleView?id=xcloud.nc_auth_protocols.htm&release=264.0.0&type=5 "Your connections between Salesforce and external systems use an authentication protocol to confirm secure communication between the two systems. Choose the authentication protocol that matches the configuration of the external system that you connect to. When you do, keep the strengths and considerations of each authentication protocol in mind.").

## OAuth 2.0

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small ">
        <colgroup>
          <col style="width:18.69300911854103%">
          <col style="width:18.69300911854103%">
          <col style="width:16.109422492401215%">
          <col style="width:15.19756838905775%">
          <col style="width:31.30699088145897%">
        </colgroup>
        <thead class="slds-text-title_caps ">
          <tr class="">
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d8464e78">OAuth 2.0 Variant</th>
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d8464e81">Identity Type</th>
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d8464e84">Role</th>
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d8464e87">Access Level</th>
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d8464e90">Reason</th>
          </tr>
        </thead>
        <tbody>
          <tr class="">
            <td data-label="OAuth 2.0 Variant" class="slds-cell-wrap" style="vertical-align:top;" headers="d8464e78 ">
              <ul>
                <li>Browser Flow</li>

                <li>JWT Bearer Flow</li>

                <li>Client Credentials with JWT Assertion Flow</li>

                <li>Client Credentials with Client Secret Flow</li>

              </ul>
            </td>

            <td data-label="Identity Type" class="slds-cell-wrap" style="vertical-align:top;" headers="d8464e81 ">Named Principal</td>

            <td data-label="Role" class="slds-cell-wrap" style="vertical-align:top;" headers="d8464e84 ">Users making callouts</td>

            <td data-label="Access Level" class="slds-cell-wrap" style="vertical-align:top;" headers="d8464e87 ">Modify All Records</td>

            <td data-label="Reason" class="slds-cell-wrap" style="vertical-align:top;" headers="d8464e90 ">
              <p>Users can make a callout using the access tokens entered by the admin. </p>
              <p style="margin-bottom:0;">If a
                callout uses expired access tokens, the Modify All permission grants Salesforce
                access to retrieve refreshed tokens from the external system and update the
                external credential’s principal with the new tokens on behalf of the user making
                the callout. Users can’t access or update the named credential configuration in
                Setup.</p>
            </td>

          </tr>
          <tr class="">
            <td data-label="OAuth 2.0 Variant" class="slds-cell-wrap" style="vertical-align:top;" headers="d8464e78 ">
              <ul>
                <li>Browser Flow</li>

                <li>JWT Bearer Flow</li>

              </ul>
            </td>

            <td data-label="Identity Type" class="slds-cell-wrap" style="vertical-align:top;" headers="d8464e81 ">Per User Principal</td>

            <td data-label="Role" class="slds-cell-wrap" style="vertical-align:top;" headers="d8464e84 ">Users making callouts</td>

            <td data-label="Access Level" class="slds-cell-wrap" style="vertical-align:top;" headers="d8464e87 ">Read, Create, Edit, Delete</td>

            <td data-label="Reason" class="slds-cell-wrap" style="vertical-align:top;" headers="d8464e90 ">Each user can enter their credentials to authenticate to the external system,
              make callouts using the named credential, and revoke access, if needed.</td>

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

## AWS Signature Version 4

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small ">
      <colgroup>
        <col style="width:18.69300911854103%">
        <col style="width:18.69300911854103%">
        <col style="width:16.109422492401215%">
        <col style="width:15.19756838905775%">
        <col style="width:31.30699088145897%">
      </colgroup>
      <thead class="slds-text-title_caps ">
        <tr class="">
          <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d8464e188">AWS Signature Version 4 Variant</th>
          <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d8464e191">Identity Type</th>
          <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d8464e194">Role</th>
          <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d8464e197">Access Level</th>
          <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d8464e200">Reason</th>
        </tr>
      </thead>
      <tbody>
        <tr class="">
          <td data-label="AWS Signature Version 4 Variant" class="slds-cell-wrap" rowspan="2" style="vertical-align:top;" headers="d8464e188 ">Access Key and Secret</td>

          <td data-label="Identity Type" class="slds-cell-wrap" rowspan="2" style="vertical-align:top;" headers="d8464e191 ">Named Principal</td>

          <td data-label="Role" class="slds-cell-wrap" style="vertical-align:top;" headers="d8464e194 ">Salesforce admin</td>

          <td data-label="Access Level" class="slds-cell-wrap" style="vertical-align:top;" headers="d8464e197 ">Read, Create, Edit, Delete</td>

          <td data-label="Reason" class="slds-cell-wrap" style="vertical-align:top;" headers="d8464e200 ">Only the admin can enter the access key and secret to authenticate to the
            external system or revoke access.</td>

        </tr>
        <tr class="">
          <td data-label="Role" class="slds-cell-wrap" style="vertical-align:top;" headers="d8464e194 ">Users making callouts</td>

          <td data-label="Access Level" class="slds-cell-wrap" style="vertical-align:top;" headers="d8464e197 ">View All Records</td>

          <td data-label="Reason" class="slds-cell-wrap" style="vertical-align:top;" headers="d8464e200 ">
            <p>Users can make a callout using the access key and secret entered by the
              admin.</p>
            <p style="margin-bottom:0;">View All permission grants Salesforce access to the credentials for the
              external system on behalf of the user making a callout. Users can’t access the named
              credential configuration in Setup.</p>
          </td>

        </tr>
        <tr class="">
          <td data-label="AWS Signature Version 4 Variant" class="slds-cell-wrap" style="vertical-align:top;" headers="d8464e188 ">
            <ul>
              <li>STS</li>

              <li>IAM Roles Anywhere</li>

            </ul>
          </td>

          <td data-label="Identity Type" class="slds-cell-wrap" style="vertical-align:top;" headers="d8464e191 ">—</td>

          <td data-label="Role" class="slds-cell-wrap" style="vertical-align:top;" headers="d8464e194 ">Users making callouts</td>

          <td data-label="Access Level" class="slds-cell-wrap" style="vertical-align:top;" headers="d8464e197 ">Modify All Records</td>

          <td data-label="Reason" class="slds-cell-wrap" style="vertical-align:top;" headers="d8464e200 ">
            <p>Users can make a callout using the access tokens entered by the admin.</p>
            <p style="margin-bottom:0;">If a
              callout uses expired access tokens, the Modify All permission grants Salesforce
              access to retrieve refreshed tokens from the external system and update the external
              credential’s principal with the new tokens on behalf of the user making the callout.
              Users can’t access or update the named credential configuration in
              Setup.</p>
          </td>

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

## Custom Authentication

The Custom authentication protocol supports only the Named Principal identity type. A named principal applies the same credential or authentication configuration for an entire org.

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small ">
        <colgroup>
          <col style="width:25.728155339805824%">
          <col style="width:24.271844660194176%">
          <col style="width:50%">
        </colgroup>
        <thead class="slds-text-title_caps ">
          <tr class="">
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d8464e294">Role</th>
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d8464e297">Access Level</th>
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d8464e300">Reason</th>
          </tr>
        </thead>
        <tbody>
          <tr class="">
            <td data-label="Role" class="slds-cell-wrap" style="vertical-align:top;" headers="d8464e294 ">Salesforce admin</td>

            <td data-label="Access Level" class="slds-cell-wrap" style="vertical-align:top;" headers="d8464e297 ">Read, Create, Edit, Delete</td>

            <td data-label="Reason" class="slds-cell-wrap" style="vertical-align:top;" headers="d8464e300 ">Only the admin can enter access tokens or API keys to authenticate to the
              external system or revoke access.</td>

          </tr>
          <tr class="">
            <td data-label="Role" class="slds-cell-wrap" style="vertical-align:top;" headers="d8464e294 ">Users making callouts</td>

            <td data-label="Access Level" class="slds-cell-wrap" style="vertical-align:top;" headers="d8464e297 ">View All Records</td>

            <td data-label="Reason" class="slds-cell-wrap" style="vertical-align:top;" headers="d8464e300 ">
              <p>Users can make a callout using the access tokens entered by the admin.</p>
              <p style="margin-bottom:0;">The
                View All permission grants Salesforce access to the credentials for the external
                system on behalf of the user making a callout. Users can’t access the named
                credential configuration in Setup.</p>
            </td>

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

## Basic Authentication

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small ">
        <colgroup>
          <col style="width:22.990654205607477%">
          <col style="width:19.813084112149536%">
          <col style="width:18.691588785046733%">
          <col style="width:38.504672897196265%">
        </colgroup>
        <thead class="slds-text-title_caps ">
          <tr class="">
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d8464e358">Identity Type</th>
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d8464e361">Role</th>
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d8464e364">Access Level</th>
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d8464e367">Reason</th>
          </tr>
        </thead>
        <tbody>
          <tr class="">
            <td data-label="Identity Type" class="slds-cell-wrap" rowspan="2" style="vertical-align:top;" headers="d8464e358 ">Named Principal</td>

            <td data-label="Role" class="slds-cell-wrap" style="vertical-align:top;" headers="d8464e361 ">Salesforce admin</td>

            <td data-label="Access Level" class="slds-cell-wrap" style="vertical-align:top;" headers="d8464e364 ">Read, Create, Edit, Delete</td>

            <td data-label="Reason" class="slds-cell-wrap" style="vertical-align:top;" headers="d8464e367 ">Only the admin can enter credentials to authenticate to the external system or
              revoke access.</td>

          </tr>
          <tr class="">
            <td data-label="Role" class="slds-cell-wrap" style="vertical-align:top;" headers="d8464e361 ">Users making callouts</td>

            <td data-label="Access Level" class="slds-cell-wrap" style="vertical-align:top;" headers="d8464e364 ">View All Records</td>

            <td data-label="Reason" class="slds-cell-wrap" style="vertical-align:top;" headers="d8464e367 ">
              <p>Users can make a callout using the credentials entered by the admin.</p>
              <p style="margin-bottom:0;">The View
                All permission grants Salesforce access to the credentials for the external system
                on behalf of the user making a callout. Users can’t access the named credential
                configuration in Setup.</p>
            </td>

          </tr>
          <tr class="">
            <td data-label="Identity Type" class="slds-cell-wrap" style="vertical-align:top;" headers="d8464e358 ">Per User Principal</td>

            <td data-label="Role" class="slds-cell-wrap" style="vertical-align:top;" headers="d8464e361 ">Users making callouts</td>

            <td data-label="Access Level" class="slds-cell-wrap" style="vertical-align:top;" headers="d8464e364 ">Read, Create, Edit, Delete</td>

            <td data-label="Reason" class="slds-cell-wrap" style="vertical-align:top;" headers="d8464e367 ">Each user can enter their credentials to authenticate to the external system,
              make callouts using the named credential, and revoke access, if needed.</td>

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

## JWT

   
| Identity Type | Role | Access Level | Reason |
| --- | --- | --- | --- |
| Named Principal | Users making callouts | Read | The Read permission grants users access to additional authentication parameters so that they can make callouts using the named credential. |
| Per User Principal | Users making callouts | Read | The Read permission grants users access to additional authentication parameters so that they can make callouts using the named credential. |

## No Authentication

The No Authentication protocol supports only the Named Principal identity type. A named principal applies the same credential or authentication configuration for an entire org.

  
| Role | Access Level | Reason |
| --- | --- | --- |
| Users making callouts | Read | The Read permission grants users access to additional authentication parameters so that they can make callouts using the named credential. |

#### See Also

- [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.")
- [Enable User External Credentials](https://help.salesforce.com/s/articleView?id=xcloud.nc_user_external_credentials.htm&release=264.0.0&type=5 "Tokens for named credential callouts are encrypted and stored in the User External Credential object. Any user performing an authenticated callout needs profile- or permission set-based access to user external credentials. Most standard permission sets and profiles have access to the User External Credentials object by default. For the guest user profile, and for some custom permission sets and profiles, you must assign User External Credentials object permissions manually.")