# SailPoint Azure Key Vault Credential Provider Documentation > Azure Key Vault Credential Provider Documentation # Documentation # Adding a New Credential Provider in SailPoint Create a new credential provider integration in SailPoint to automatically rotate refreshed authentication credentials for configured sources. To create a new credential provider: 1. Go to **Admin \> Connections \> Credential Providers**. 2. Select **Create New**. > **Screenshot** > > [![Credential Providers landing page with the Create New button highlighted]()]() 3. Search for the credential provider type and select **Configure**. > **Note** > > For a list of the available types of credential providers, as well as access to the documentation for each type, refer to the [Identity Security Connectors]() landing page. 4. Enter the following in the provided fields: - Enter a unique **Credential Provider Name** to help administrators differentiate it from others. - Enter a **Credential Provider Description**. - Select a **Credential Provider Owner** who is responsible for the credential provider's operations. - Select a **Virtual Appliance Cluster** with connectivity to the credential provider. 5. Select **Continue** to create the new credential provider with your selections. 6. (Optional) Enable credential caching. For more information, refer to [Caching Credentials](). # Configure a Source to Use a Credential Provider After you create a credential provider, you can begin configuring your sources to use it for authentication. When you use a credential provider in a source configuration, any authentication fields you need to configure allow you to use the credential provider or use static authentication credentials. To configure your source to use a credential provider: 1. In the source's **Base Configuration** tab, select **Use a Credential Provider**. > **Note** > > Enabling a credential provider in your connector adds an additional 30-second timeout for each connector operation. 2. Toggle every secret field in the configuration pages which should use the credential provider to **Credential Path**. The field changes to accept the secret path expression for the credential provider instead of the static value. > **Screenshot** > > **Static Value** > > [![Static Value field selected]()]() > > **Credential Path** > > [![Credential Path field selected]()]() 3. Enter the secret path expression for the credential provider into the **Credential Path** field. > [!NOTE] > > For a list of all available SailPoint credential provider path expressions, refer to [Credential Provider Secret Path Expressions](). # Configuring Azure Key Vault ## Base Configuration Provide the base configuration parameters. Information you entered during the initial creation of the credential provider is automatically entered into the fields in the **Base Configuration** page. You can edit this information if necessary. > [!NOTE] > > **Screenshot** > > [![Base Configuration]()]() > [!NOTE] > > Ensure that the name and description of each credential provider is unique. 1. Go to **Admin \> Connections \> Credential Providers**. 2. Search for the credential provider you want to edit. 3. Enter a unique **Credential Provider Name**. 4. Enter a **Credential Provider Description** that provides details necessary to distinguish it from similar credential providers. 5. Select a **Credential Provider Owner** by typing the owner's name into the field provided. Matches display after you type at least two letters. Select the credential provider owner as required. 6. Select a **Virtual Appliance Cluster** with connectivity to the credential provider. For more information about configuring and deploying virtual appliances, refer to the [Virtual Appliance Reference Guide](). 7. Select **Save**. ## Connection Settings Configure the connection parameters to connect to and authenticate with Azure Key Vault. > [!NOTE] > > **Screenshot** > > [![Connection Settings]()]() To configure an authenticated connection: 1. Enter the **Client ID** assigned to your client app to authenticate OAuth requests. 2. Enter the **Client Secret** issued to the client app. 3. Enter the **OAuth 2.0 Token URL** to request an access token for a user. 4. Enter the **Scope** for authenticating the client app. 5. Enter the **Azure Key Vault API Version**. 6. (Optional) Enable credential caching. For more information, refer to [Caching Credentials](). 7. Select **Save**. > [!NOTE] > > To create a Client ID and Client Secret to retrieve secrets from Azure Key Vault, refer to the [OAuth 2.0 client credentials grant](). # Caching Credentials SailPoint credential providers can save the credentials it receives from the systems they manage to cache. Cached credentials may expire after a period of time and need to be refreshed. Credential providers can't use expired credentials saved to cache. > [!NOTE] > > **Screenshot** > > [![Enable Credentials Caching checkbox]()]() To enable credential caching for credential providers: 1. Sign in to SailPoint. 2. Go to **Admin \> Connections \> Credential Providers**. 3. Search for the credential provider that you want to enable caching on and select its name. 4. Select **Edit Configuration**. 5. Select the **Enable Credentials Caching** checkbox. > **Note** > > The option to enable this feature may be in a different configuration tab depending on your selected credential provider. 6. Select **Save**. ## Credentials Expiration Depending on the managed system the credential provider is connected to, the credentials may have an expiration time limit. The credential provider uses the following hierarchy to determine expiration, with the highest priority first and the lowest priority last: 1. If the credentials received from the managed system contain an expiration time, then they are cached until that expiration time. 2. If the credentials received from the managed system don't contain an expiration time, then you can add one by configuring the `expirationTimeInSeconds` attribute in the source of credential provider using APIs. > **Note** > > For more information on SailPoint's REST APIs, refer to [Best Practices: REST API Authentication]() and [REST API - Update Source (Partial)]() in the SailPoint Developer Community. 3. If the credentials received from the managed system don't contain an expiration time and you don't create one via APIs, then by default the credentials expire after one day. # Azure Key Vault Credential Provider The SailPoint Azure Key Vault Credential Provider provides credential cycling functionality to fetch refreshed credentials from Azure Key Vault for authenticating sources in the Credential Provider. For information on creating a new Azure Key Vault credential provider, refer to [Adding a New Credential Provider in SailPoint](). ## Prerequisites Before you configure your credential provider, you must consider the following prerequisite items. - You must configure an application in Azure that has the appropriate role assigned to it to interact with Azure Key Vault. For more information, refer to: - For authorization - [OAuth 2.0 client credentials grant](). - For permissions - [Use an Azure RBAC for managing access](). > **Caution** > > The Azure Key Vault documentation referenced in this page is not managed by SailPoint, and is subject to change without notice. - For VA-based Deep Governance connectors, the source and credential provider virtual appliances must be in the same cluster. - VA-based Deep Governance connectors, SaaS-based Deep Governance, Discovery, and Quick Compliance connectors now support the use of credential providers. ## Supported Platforms This credential provider supports the following platforms: - Azure Key Vault > **Note** > > Supported API Version: 7.4 and onwards # Azure Key Vault Credential Provider Secret Path Expressions Use the path expressions listed in this topic to use the Azure Key Vault credential providers in your source authentication configurations. The Azure Key Vault Credential Provider can provide any field supported by Azure Key Vault, such as **username** and **password** secrets. ## Generic Path Syntax **For Secrets**: `secrets://{credential-provider-source-name}/{secret-identifier}/{secret-key}` **For Keys**: `secrets://{credential-provider-source-name}/{key-identifier}/{secret-key}` **For Certificates**: `secrets://{credential-provider-source-name}/{certificate-identifier}/{secret-key}` The following is an explanation of the attributes of this URL: - `credential-provider-source-name` - The name of the credential provider source configured in SailPoint. - `secret-identifier` - The unique identifier of the secret created in Azure Key Vault. - `key-identifier` - The unique identifier of the key created in Azure Key Vault. - `certificate-identifier` - The unique identifier of the certificate created in Azure Key Vault. - `secret-key` - The name of the specific attribute whose value needs to be obtained from the JSON response. > [!IMPORTANT] > > The `secret-identifier`, `key-identifier`, and `certificate-identifier` include a version ID. To always fetch the latest value of the secret, key, or certificate, omit the version ID from the identifiers. > [!NOTE] > > The unique identifier of secrets, keys, and certificates can be obtained by going to **Key vaults \> KeyVaultName \> Objects \> Secrets/Keys/Certificates \> SecretName \> LatestVersion**. ## Username and Password > [!NOTE] > > The reference examples provided on this page are for **Secrets**; similarly, follow the same approach for **Keys** and **Certificates**. **Before Encoding** Using Secret ARN: ```text secrets://azure-key-vault/https://jubileecpkeyvault.vault.azure.net/keys/HarshalFirstKey/value ``` > [!NOTE] > > It is recommended to omit the version ID from secret, key, or certificate identifiers to always fetch the latest value. > > Example: The secret identifier below includes a version ID: > > ```text > https://jubileecpkeyvault.vault.azure.net/secrets/HarshalFirstKey/e5a9dd5cc1284a4caa5bef8cd733feab > ``` > > The recommended approach is to omit the version ID from the identifier, ensuring that the latest value is always retrieved: > > ```text > https://jubileecpkeyvault.vault.azure.net/secrets/HarshalFirstKey > ``` > [!IMPORTANT] > > The URL path should always start with the prefix, `secrets://`. Each attribute in the URL path must be URL-encoded. Each URL attribute in the path is case-sensitive. **After Encoding** After you encode the URL path, it should appear as follows: Using Secret ARN: ```text secrets://azure-key-vault/https%3A%2F%2Fjubileecpkeyvault.vault.azure.net%2Fkeys%2FHarshalFirstKey/value ``` The following is an explanation of the attributes of this URL: - `azure-key-vault` - Configured Credential Provider on SailPoint. - `https%3A%2F%2Fjubileecpkeyvault.vault.azure.net%2Fkeys%2FHarshalFirstKey` - Secret Identifier of the secret. - `value` - The name of the secret which needs to be fetched from the JSON response. > [!TIP] > > Use [urlencoder.org]() to encode your URL attributes. ## Prefixes and Suffixes If any secret paths have a prefix or a suffix, you must append a query parameter to the secret path as follows: - To add a prefix - `?prefix=`. For example, if the secret value returned after evaluation is `LocalAdmin`, but the complete value required by the secret field is `DomainOne\LocalAdmin` then the secret path expression will be as follows to add the required prefix: ```text secrets://azure-key-vault/https%3A%2F%2Fjubileecpkeyvault.vault.azure.net%2Fkeys%2FHarshalFirstKey/value?prefix=DomainOne%5C ``` - To add a suffix - `?suffix=`. For example, if the secret value returned after evaluation is `localadministrator`, but the complete value required by the secret field is `localadminstrator@sp.com` then the secret path expression will be as follows to add the required suffix: ```text secrets://azure-key-vault/https%3A%2F%2Fjubileecpkeyvault.vault.azure.net%2Fkeys%2FHarshalFirstKey/value?suffix=%40sp.com ``` - To add a prefix and suffix - `?prefix=&suffix=`. For example, if the secret value returned after evaluation is `LocalAdmin`, but the complete value required by the secret field is `DomainOne\LocalAdmin@sp.com` then the secret path expression will be as follows to add the required prefix and suffix: ```text secrets://azure-key-vault/https%3A%2F%2Fjubileecpkeyvault.vault.azure.net%2Fkeys%2FHarshalFirstKey/value?prefix=DomainOne%5C&suffix=%40sp.com ``` > [!IMPORTANT] > > All input parameters must be encoded. Standard format for credential path: ```text secrets://{credential-provider-source}/{secret-identifier}/{secret-key}?prefix=someValue&suffix=someValue2 ``` > [!IMPORTANT] > > Prefix and suffix are optional.