orchestrator
latest
false
Important :
La localisation du contenu nouvellement publié peut prendre 1 à 2 semaines avant d’être disponible.
UiPath logo, featuring letters U and I in white

Guide de l'utilisateur d'Orchestrator

Dernière mise à jour 6 oct. 2025

Managing credential proxies

Vous pouvez créer et gérer des proxys pour vos propres magasins d'informations d'identification personnalisés, ce qui vous permet de contrôler individuellement la sécurité de vos informations d'identification.

Type de proxy

Vous pouvez choisir entre ces deux types :

  • Proxy connecté (géré par Orchestrator) (Connected proxy (Managed by Orchestrator) : lorsqu'un robot demande des informations d'identification, Orchestrator les récupère à partir du proxy et les transmet au robot.
    Figure 1. Architecture du proxy connecté

  • Proxy déconnecté (géré par le service de proxy) (Disconnected proxy (Managed by the proxy service) : lorsqu'un robot demande des informations d'identification, celles-ci sont récupérées directement à partir du proxy, sans passer par Orchestrator. Ce type n'est compatible qu'avec les Robots version 23.10 et ultérieure.
    Figure 2. Architecture du proxy déconnecté Représentation graphique de l'architecture du proxy déconnecté
    Important :
    • Enterprise Credentials Proxy en mode déconnecté est disponible uniquement si vous êtes sur le plan de licence Enterprise - Avancé.
    • Si vous souhaitez récupérer des informations d’identification d’un proxy déconnecté, vous devez utiliser les versions minimales suivantes : 2.0.1 pour le proxy et 24.3 pour le module d’activités système.

Configuration déconnectée

Le Credentials Proxy Orchestrator dans la version déconnectée fonctionne de la même manière que la configuration connectée, avec quelques différences clés.

Spécifiez dans le fichier appsettings.json que le proxy doit démarrer en mode déconnecté. Pour ce faire, sous AppSettings définissez le paramètre CredentialsProxyType sur la valeur Disconnected.
Cela dira au proxy de faire les choses un peu différemment au démarrage et de lire la configuration du magasin sécurisé à partir du fichier appsettings.json . Si le paramètre est manquant ou si la valeur est différente, le proxy démarrera en mode connecté.
Spécifiez dans le fichier appsettings.json que le proxy doit démarrer en mode déconnecté. Pour ce faire, sous AppSettings, définissez le paramètre CredentialsProxyType avec la valeur Disconnected .
{
...
  "AppSettings": {
  ...
    "CredentialsProxyType": "Disconnected",
  ...
  }
}{
...
  "AppSettings": {
  ...
    "CredentialsProxyType": "Disconnected",
  ...
  }
}
Cela dira au proxy de faire les choses un peu différemment au démarrage et de lire sa configuration de magasin sécurisé à partir du fichier appsettings.json . Si le paramètre est manquant ou si la valeur est différente, le proxy démarrera dans son mode connecté.

Configurations des magasins sécurisés

Chaque entrée de configuration doit contenir les éléments suivants :

  • Key: identifiant unique utilisé dans Orchestrator lors de la liaison des magasins. Il doit être unique dans la liste des configurations

  • Type: type de magasin sécurisé (comme Azure Key Vault, BeyondTrust, CyberArk, HashiCorp Vault, InMemory, et autres).

  • Contexte: les données nécessaires à l'implémentation du magasin sécurisé, qui varient en fonction du type de magasin.

Consultez l’exemple de configuration de magasin sécurisé suivant :
{
...
  "AppSettings": {
  ...
    "SecureStoreConfigurations": [
      {
        "Key": "SecureStoreKey1",
        "Type": "AzureKeyVault (read only)",
        "Context": {
          "KeyVaultUri": "{someUri}",
          "DirectoryId": "{someDirectoryId}",
          "ClientId": "{someClientId}",
          "ClientSecret": "{someClientSecret}"
        }
      },
      {
        "Key": "SecureStoreKey2",
        "Type": "BeyondTrust Password Safe - Managed Accounts",
        "Context": {
          "Hostname": "{someHost}",
          "APIRegistrationKey": "{someApiKey}",
          "APIRunAsUsername": "{someApiUsername}",
          "DefaultManagedSystemName": "",
          "SystemAccountDelimiter": "/",
          "ManagedAccountType": "system"
        }
      },
      {
        "Key": "InMemoryKey1",
        "Type": "InMemorySecureStore",
        "Context": {
        }
      }
    ]
  ...
  }
}{
...
  "AppSettings": {
  ...
    "SecureStoreConfigurations": [
      {
        "Key": "SecureStoreKey1",
        "Type": "AzureKeyVault (read only)",
        "Context": {
          "KeyVaultUri": "{someUri}",
          "DirectoryId": "{someDirectoryId}",
          "ClientId": "{someClientId}",
          "ClientSecret": "{someClientSecret}"
        }
      },
      {
        "Key": "SecureStoreKey2",
        "Type": "BeyondTrust Password Safe - Managed Accounts",
        "Context": {
          "Hostname": "{someHost}",
          "APIRegistrationKey": "{someApiKey}",
          "APIRunAsUsername": "{someApiUsername}",
          "DefaultManagedSystemName": "",
          "SystemAccountDelimiter": "/",
          "ManagedAccountType": "system"
        }
      },
      {
        "Key": "InMemoryKey1",
        "Type": "InMemorySecureStore",
        "Context": {
        }
      }
    ]
  ...
  }
}
Remarque :
Le paramètre SecureStoreConfigurations est un tableau de configurations, vous pouvez donc avoir autant de configurations que vous le souhaitez.
Plusieurs configurations d'un même type sont prises en charge, tant que les valeurs Key sont uniques.

Validation du démarrage

Lorsqu'il s'exécute en mode déconnecté, le proxy effectue une validation au démarrage :

  • Confirme que les configurations requises existent dans appsettings.json.
  • Vérifie qu'aucune clé en double n'est trouvée dans SecureStoreConfigurations.
  • Confirme que toutes les valeurs Type sont valides.
  • Valide la connectivité du coffre-fort (appels ValidateContextAsync pour chaque magasin).

Paramètres au niveau du proxy

Certains magasins d'identifiants sécurisés nécessitent une configuration au niveau de l'hôte qui doit être spécifiée dans appsettings.Production.json:
  • CyberArk: les paramètres tels que CLIPasswordSDKExePath, UsePowerShellCLI, et AdditionalAllowedCharacters doivent être définis sous AppSettings.
    {
    // ...
      "AppSettings": {
        "Plugins.SecureStores.CyberArk.CLIPasswordSDKExePath": "D:\\SomePath\\CLIPasswordSDK.exe",
        // ...
      }
      // ...
    }{
    // ...
      "AppSettings": {
        "Plugins.SecureStores.CyberArk.CLIPasswordSDKExePath": "D:\\SomePath\\CLIPasswordSDK.exe",
        // ...
      }
      // ...
    }
  • CyberArkCCP: peut nécessiter Plugins.SecureStores.CyberArkCCP.KeyStorageFlags = "MachineKeySet".
    {
    // ...
      "AppSettings": {
        "Plugins.SecureStores.CyberArkCCP.KeyStorageFlags": "MachineKeySet",
        // ...
      }
      // ...
    }{
    // ...
      "AppSettings": {
        "Plugins.SecureStores.CyberArkCCP.KeyStorageFlags": "MachineKeySet",
        // ...
      }
      // ...
    }

Exemples de tests de configuration

Consultez les exemples pratiques de appsettings.Production.json suivants.

Exemple 1 : Basique

Configuration avec BeyondTrust et Azure Key Vault :

{
  "Jwt": {
    "Keys": [
      "<YourKey>"
    ]
  },
  "AppSettings": {
    "CredentialsProxyType": "Disconnected",
    "SecureStoreConfigurations": [
      {
        "Key": "SecureStoreKey3",
        "Type": "BeyondTrust Password Safe - Team Passwords",
        "Context": {
          "Hostname": "<Hostname",
          "APIRegistrationKey": "<APIRegistrationKey",
          "APIRunAsUsername": "<Username>",
          "FolderPathPrefix": "/", // default is "/", but it can be changed to anything
          "FolderPasswordDelimiter": "/" // default is "/", but it can be changed to anything
        }
      }
    ]
  }
}{
  "Jwt": {
    "Keys": [
      "<YourKey>"
    ]
  },
  "AppSettings": {
    "CredentialsProxyType": "Disconnected",
    "SecureStoreConfigurations": [
      {
        "Key": "SecureStoreKey3",
        "Type": "BeyondTrust Password Safe - Team Passwords",
        "Context": {
          "Hostname": "<Hostname",
          "APIRegistrationKey": "<APIRegistrationKey",
          "APIRunAsUsername": "<Username>",
          "FolderPathPrefix": "/", // default is "/", but it can be changed to anything
          "FolderPasswordDelimiter": "/" // default is "/", but it can be changed to anything
        }
      }
    ]
  }
}

Exemple 2 : journaux supplémentaires et configurations multiples

Comprend plusieurs coffres-forts et une journalisation avancée.

{
  "Logging": {
    "LogLevel": {
      "Default": "Trace",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information",
      "Microsoft.AspNetCore.HttpLogging.HttpLoggingMiddleware": "Information"
    }
  },
  "Jwt": {
    "Keys": [ "<YourKey>" ]
  },
  "AppSettings": {
    "Plugins.SecureStores": "UiPath.Orchestrator.CyberArk.dll;UiPath.Orchestrator.AzureKeyVault.SecureStore.dll;UiPath.Orchestrator.SecureStore.CyberArkCCP.dll;UiPath.Orchestrator.SecureStore.HashiCorpVault.dll;UiPath.Orchestrator.SecureStore.ThycoticSecretServer.dll;UiPath.Orchestrator.SecureStore.BeyondTrust.dll;UiPath.Orchestrator.SecureStore.AWSSecretsManager.dll",
    "UseInMemorySecureStore": "true",
    "CredentialsProxyType": "Disconnected",
    "SkipValidateSecureStoreConfigurations": "false", // for Testing only; never to be shown to clients or used in prod
    "SecureStoreConfigurations": [
      // AzureKeyVault owned by <username>; contact for more info
      // Robot externalName: "<name>"
      // The expected value of this secret is "<name>"
      {
        "Key": "SecureStoreKey1",
        "Type": "AzureKeyVault (read only)",
        "Context": {
          "KeyVaultUri": "<VaultURL>",
          "DirectoryId": "<DirectoryID>",
          "ClientId": "<ClientID>",
          "ClientSecret": "<ClientSecret>"
        }
      },
      // In case this fails, check our internal documentation on checking if BeyondTrust is down
      // <InternalDocsURL>
      // Robot externalName: "<ExternalName>"
      {
        "Key": "SecureStoreKey2",
        "Type": "BeyondTrust Password Safe - Managed Accounts",
        "Context": {
          "Hostname": "<Hostname>",
          "APIRegistrationKey": "<APIRegistrationKey>",
          "APIRunAsUsername": "<Username>",
          "DefaultManagedSystemName": "",
          "SystemAccountDelimiter": "/",
          "ManagedAccountType": "system"
        }
      },
      // In case this fails, check our internal documentation on checking if BeyondTrust is down
      // <InternalDocsURL>
      // Robot externalName: "<ExternalName>"
      {
        "Key": "SecureStoreKey3",
        "Type": "BeyondTrust Password Safe - Team Passwords",
        "Context": {
          "Hostname": "<Hostname>",
          "APIRegistrationKey": "<APIRegistrationKey>",
          "APIRunAsUsername": "<Username>",
          "FolderPathPrefix": "/", // default is "/", but it can be changed to anything
          "FolderPasswordDelimiter": "/" // default is "/", but it can be changed to anything
        }
      },
      {
        // asset external name: Operating System-WinDomain
        // password: <password>
        "Key": "SecureStoreKey1",
        "Type": "CyberArk Conjur Cloud (read only)",
        "Context": {
          "ServiceUrl": "<ServiceURL>",
          "LoginName": "<LoginName>",
          "ApiKey": "<APIKey>",
          "VariableIdPrefix": "data/vault/Safe"
        }
      },
      // Must have an empty context
      // No values on startup; should add values using the endpoints before trying trying to get anything
      {
        "Key": "InMemoryKey1",
        "Type": "InMemorySecureStore",
        "Context": {
        }
      }
    ]
  }
}{
  "Logging": {
    "LogLevel": {
      "Default": "Trace",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information",
      "Microsoft.AspNetCore.HttpLogging.HttpLoggingMiddleware": "Information"
    }
  },
  "Jwt": {
    "Keys": [ "<YourKey>" ]
  },
  "AppSettings": {
    "Plugins.SecureStores": "UiPath.Orchestrator.CyberArk.dll;UiPath.Orchestrator.AzureKeyVault.SecureStore.dll;UiPath.Orchestrator.SecureStore.CyberArkCCP.dll;UiPath.Orchestrator.SecureStore.HashiCorpVault.dll;UiPath.Orchestrator.SecureStore.ThycoticSecretServer.dll;UiPath.Orchestrator.SecureStore.BeyondTrust.dll;UiPath.Orchestrator.SecureStore.AWSSecretsManager.dll",
    "UseInMemorySecureStore": "true",
    "CredentialsProxyType": "Disconnected",
    "SkipValidateSecureStoreConfigurations": "false", // for Testing only; never to be shown to clients or used in prod
    "SecureStoreConfigurations": [
      // AzureKeyVault owned by <username>; contact for more info
      // Robot externalName: "<name>"
      // The expected value of this secret is "<name>"
      {
        "Key": "SecureStoreKey1",
        "Type": "AzureKeyVault (read only)",
        "Context": {
          "KeyVaultUri": "<VaultURL>",
          "DirectoryId": "<DirectoryID>",
          "ClientId": "<ClientID>",
          "ClientSecret": "<ClientSecret>"
        }
      },
      // In case this fails, check our internal documentation on checking if BeyondTrust is down
      // <InternalDocsURL>
      // Robot externalName: "<ExternalName>"
      {
        "Key": "SecureStoreKey2",
        "Type": "BeyondTrust Password Safe - Managed Accounts",
        "Context": {
          "Hostname": "<Hostname>",
          "APIRegistrationKey": "<APIRegistrationKey>",
          "APIRunAsUsername": "<Username>",
          "DefaultManagedSystemName": "",
          "SystemAccountDelimiter": "/",
          "ManagedAccountType": "system"
        }
      },
      // In case this fails, check our internal documentation on checking if BeyondTrust is down
      // <InternalDocsURL>
      // Robot externalName: "<ExternalName>"
      {
        "Key": "SecureStoreKey3",
        "Type": "BeyondTrust Password Safe - Team Passwords",
        "Context": {
          "Hostname": "<Hostname>",
          "APIRegistrationKey": "<APIRegistrationKey>",
          "APIRunAsUsername": "<Username>",
          "FolderPathPrefix": "/", // default is "/", but it can be changed to anything
          "FolderPasswordDelimiter": "/" // default is "/", but it can be changed to anything
        }
      },
      {
        // asset external name: Operating System-WinDomain
        // password: <password>
        "Key": "SecureStoreKey1",
        "Type": "CyberArk Conjur Cloud (read only)",
        "Context": {
          "ServiceUrl": "<ServiceURL>",
          "LoginName": "<LoginName>",
          "ApiKey": "<APIKey>",
          "VariableIdPrefix": "data/vault/Safe"
        }
      },
      // Must have an empty context
      // No values on startup; should add values using the endpoints before trying trying to get anything
      {
        "Key": "InMemoryKey1",
        "Type": "InMemorySecureStore",
        "Context": {
        }
      }
    ]
  }
}

Exemple 3 : chemin d'un journal personnalisé et InMemoryStore

{
  "NLog": {
    "throwConfigExceptions": true,
    "targets": {
      "logfile": {
        "type": "File",
        "maxArchiveFiles": 180,
        "fileName": "<FileName>",
        "layout": "${longdate} ${logger} ${message}${onexception:${newline}${exception:maxInnerExceptionLevel=10:format=shortType,message,stacktrace:separator=*:innerExceptionSeparator=&#xD;&#xA;&#x9;}}"
      }
    },
    "rules": [
      {
        "logger": "*",
        "minLevel": "Information",
        "writeTo": "logconsole,logfile,eventLog"
      }
    ]
  },
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "Jwt": {
    "Keys": [
      "<YourKey>"
    ]
  },
  "AppSettings": {
    "Plugins.SecureStores": "UiPath.Orchestrator.CyberArk.dll;UiPath.Orchestrator.AzureKeyVault.SecureStore.dll;UiPath.Orchestrator.SecureStore.CyberArkCCP.dll;UiPath.Orchestrator.SecureStore.CyberArkConjur.dll;UiPath.Orchestrator.SecureStore.HashiCorpVault.dll;UiPath.Orchestrator.SecureStore.ThycoticSecretServer.dll;UiPath.Orchestrator.SecureStore.BeyondTrust.dll;UiPath.Orchestrator.SecureStore.AWSSecretsManager.dll",
    "UseInMemorySecureStore": "true",
    "CredentialsProxyType": "Disconnected",
    "SkipValidateSecureStoreConfigurations": "true",
    "SecureStoreConfigurations": [
      {
        "Key": "InMemoryKey1",
        "Type": "InMemorySecureStore",
        "Context": {}
      }
    ]
  }
}{
  "NLog": {
    "throwConfigExceptions": true,
    "targets": {
      "logfile": {
        "type": "File",
        "maxArchiveFiles": 180,
        "fileName": "<FileName>",
        "layout": "${longdate} ${logger} ${message}${onexception:${newline}${exception:maxInnerExceptionLevel=10:format=shortType,message,stacktrace:separator=*:innerExceptionSeparator=&#xD;&#xA;&#x9;}}"
      }
    },
    "rules": [
      {
        "logger": "*",
        "minLevel": "Information",
        "writeTo": "logconsole,logfile,eventLog"
      }
    ]
  },
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "Jwt": {
    "Keys": [
      "<YourKey>"
    ]
  },
  "AppSettings": {
    "Plugins.SecureStores": "UiPath.Orchestrator.CyberArk.dll;UiPath.Orchestrator.AzureKeyVault.SecureStore.dll;UiPath.Orchestrator.SecureStore.CyberArkCCP.dll;UiPath.Orchestrator.SecureStore.CyberArkConjur.dll;UiPath.Orchestrator.SecureStore.HashiCorpVault.dll;UiPath.Orchestrator.SecureStore.ThycoticSecretServer.dll;UiPath.Orchestrator.SecureStore.BeyondTrust.dll;UiPath.Orchestrator.SecureStore.AWSSecretsManager.dll",
    "UseInMemorySecureStore": "true",
    "CredentialsProxyType": "Disconnected",
    "SkipValidateSecureStoreConfigurations": "true",
    "SecureStoreConfigurations": [
      {
        "Key": "InMemoryKey1",
        "Type": "InMemorySecureStore",
        "Context": {}
      }
    ]
  }
}

Création d'un Credentials Proxy

Une fois que vous avez installé l'Orchestrator Credentials Proxy, vous pouvez créer un proxy personnalisé qui contient vos magasins d'informations d'identification personnalisés.

Figure 3. Page Ajouter Credentials Proxy Capture d'écran de la page Ajouter Credentials Proxy
Pour ce faire, effectuez les étapes ci-dessous :
  1. Au niveau du locataire, cliquez sur Informations d'identification (Credentials) > Proxys (Proxies) > Credentials Proxy. La fenêtre Ajouter Credentials Proxy (Add Credentials Proxy) s'affiche.
  2. Choisissez soit Proxy connecté (géré par Orchestrator) (Connected proxy (Managed by Orchestrator) ou proxy déconnecté (géré par le service proxy) (Disconnected proxy (Managed by the proxy service).
  3. Donnez un nom à votre proxy.
  4. Ajoutez l'URL relative à la machine virtuelle incluse dans la configuration du Orchestrator Credentials Proxy.
  5. Ajoutez la clé.

    Pour le proxy connecté, selon la méthode d'installation, il s'agit soit de la clé secrète générée par le programme d'installation .msi, soit celle détenue par le paramètre Jwt:Keys.

    Pour le proxy déconnecté, il doit s'agir d'une clé qui existe déjà dans l'un des fichiers de configuration locaux du proxy déconnecté.

    Les informations que vous fournissez aux étapes 4 et 5 créent le lien entre Orchestrator et l'installation qui contient vos plug-ins de magasin d'informations d'identification personnalisés.

  6. Cliquez sur Créer (Create).

    Vous pouvez ensuite ajouter le magasin souhaité comme suit :

  7. Au niveau du locataire, cliquez sur Informations d'identification > Magasins (Stores) > Ajouter un magasin d'informations d'identification (Add Credential store).
  8. Dans la liste Proxy, sélectionnez le proxy que vous venez de créer.
  9. Dans la liste Type, sélectionnez le magasin d'informations d'identification tiers défini par votre plug-in.

Editing a credentials proxy

Pour modifier un proxy, cliquez sur Autres actions (More Actions) > Modifier (Edit). La page Modifier le Credentials Proxy (Edit Credentials Proxy) s'affiche, vous permettant de modifier le nom, l'URL ou la clé selon vos besoins.

Supprimer Credentials Proxy

Pour supprimer un proxy, sélectionnez Autres actions > Supprimer.Si le proxy sélectionné est utilisé, une boîte de dialogue d'avertissement s'affiche, indiquant le nombre de robots et de ressources qui seront affectés. Sélectionnez Oui pour confirmer la suppression ou Non pour annuler.

Figure 4. Onglet Proxies

Cette page vous a-t-elle été utile ?

Obtenez l'aide dont vous avez besoin
Formation RPA - Cours d'automatisation
Forum de la communauté UiPath
Uipath Logo
Confiance et sécurité
© 2005-2025 UiPath Tous droits réservés.