> For the complete documentation index, see [llms.txt](https://docs.devolutions.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.devolutions.net/powershell-universal/fr/config/module.md).

# Module

Connectez-vous à PowerShell Universal avec le module Universal PowerShell, en couvrant l'authentification Connect-PSUServer, les portées et les modèles de sécurité.

## Se connecter à PowerShell Universal

Le module PowerShell Universal a besoin de quelques informations pour se connecter au serveur. D'abord, il doit connaître l'URL ou le nom de l'ordinateur, ensuite il a besoin d'identifiants pour accéder aux ressources à distance.

Vous pouvez utiliser l'applet de commande `Connect-PSUServer` pour établir une connexion au serveur. L'appel de cette applet de commande définit les informations de connexion pour l'ensemble du processus. Si vous exécutez un processus multiutilisateur, vous devez tenir compte des implications de l'utilisation de cette commande.

```powershell
Connect-PSUServer -ComputerName http://localhost:5000 -AppToken xyz123
```

Lorsque vous exécutez des scripts dans l'environnement intégré ou dans des applis ou des API dans PowerShell Universal, envisagez d'utiliser les valeurs du nom de l'ordinateur et des identifiants directement pour les applets de commande afin d'éviter de les partager à travers le processus.

```powershell
Get-PSUJob -ComputerName http://localhost:5000 -AppToken xyz123
```

### Authentification

### Jeton d'appli

Vous pouvez utiliser le paramètre `-AppToken` pour vous authentifier auprès de l'API avec le jeton spécifié. Traitez le jeton d'appli comme un mot de passe, car il accorde l'accès en fonction des rôles qui lui sont attribués.

### Identifiants par défaut

Vous pouvez également utiliser les identifiants par défaut, ou les identifiants Windows. Ce mécanisme n'est pris en charge que si l'authentification Windows est activée sur le serveur cible. Les rôles et les permissions seront accordés lors de la connexion au serveur.

### Identifiants

Si l'authentification par formulaire est activée, vous pouvez utiliser l'authentification de base en spécifiant un objet `PSCredential` au paramètre `-Credential` de `Connect-PSUServer`.

### Portée

`Connect-PSUServer` prend en charge un paramètre de portée pour définir comment conserver les informations de connexion. Par défaut, la portée est Process. La portée du processus stocke les informations de connexion dans une portée .NET statique. Toutes les applets de commande exécutées dans le processus actuel utiliseront ces informations de connexion.

Si vous utilisez `Connect-PSUServer` dans un environnement à plusieurs espaces d'exécution, comme l'environnement intégré ou dans des applis dans PowerShell Universal, vous pourriez vouloir stocker les informations de connexion uniquement pour l'espace d'exécution actuel. Utilisez la valeur de paramètre `-Scope Runspace` pour ajuster la façon dont les informations de connexion sont stockées.

### Déconnexion

Vous pouvez vous déconnecter du serveur PowerShell Universal en utilisant l'applet de commande `Disconnect-PSUServer`. Si vous avez utilisé la portée Runspace, elle effacera les variables nécessaires et si vous avez utilisé la portée Process, elle effacera les propriétés statiques nécessaires.

## Connexions internes

Lorsque vous utilisez le module Universal dans PowerShell Universal, il n'est pas nécessaire de spécifier les identifiants du nom de l'ordinateur dans les installations de base. L'autorisation correspondra à l'utilisateur actuel, et l'URL de l'API sera déduite du serveur actuel.

### Autorisation

Lorsque vous utilisez le modèle de sécurité Strict, l'autorisation est basée sur l'appelant. Par exemple, si un utilisateur appelle un terminal d'API et que ce terminal appelle `Invoke-PSUScript`, l'appel est effectué au nom de l'appelant du terminal. Les permissions de l'appelant sont appliquées à l'exécution du script.

Lorsque vous utilisez d'autres modèles de sécurité, les applets de commande sont appelées au nom de l'utilisateur Système et l'autorisation n'est pas appliquée en fonction de l'appelant de la ressource.

#### Modèle de sécurité d'autorisation

Vous pouvez modifier le modèle d'autorisation pour permettre à tout appel provenant de PowerShell Universal de fonctionner sans jeton d'appli. Bien que cela puisse être considéré comme moins sécuritaire par certains, cela dépend de l'utilisation que fait votre organisation de la plateforme. Cette valeur peut être définie dans `appsettings.json` ou dans la variable d'environnement `API__SecurityModel`.

Un contexte utilisateur est requis pour l'authentification. Cela signifie que lorsque vous utilisez le module dans des contextes non liés à un utilisateur, comme les Planifications, vous devrez fournir un jeton d'appli.

Dans les portées qui possèdent un contexte utilisateur, comme une appli, les appels aux applets de commande sont effectués avec les privilèges de cet utilisateur. Par exemple, si un utilisateur accédant à une appli n'a pas l'accès pour appeler `Get-PSUScript`, l'applet de commande ne sera pas utilisable sans un jeton d'appli possédant ces privilèges.

```json
{
    "Api": {
       "SecurityModel": "Strict"
    }
}
```

Le mode permissif utilise toujours les API externes de PowerShell Universal et communique le contexte utilisateur, s'il est disponible, lors de l'appel des API de PowerShell Universal. Le mode permissif permet l'utilisation du commutateur -Integrated pour contourner l'autorisation et pour utiliser la connexion TCP par canal secondaire plutôt que l'API externe de PowerShell Universal.

```json
{
    "Api": {
       "SecurityModel": "Permissive"
    }
}
```

Vous pouvez également utiliser le modèle de sécurité `Integrated` pour éviter complètement d'avoir à configurer des jetons d'appli, des URL ou des certificats. Le modèle de sécurité Integrated ne communique pas le contexte utilisateur, même lorsque l'utilisateur est authentifié. Il utilise également la connexion TCP par canal secondaire plutôt que l'API externe de PowerShell Universal.

```json
{
    "Api": {
       "SecurityModel": "Integrated"
    }
}
```

#### Faire confiance au certificat HTTPS

Dans certains environnements, il peut être nécessaire de permettre à PowerShell Universal de faire confiance au certificat du serveur web afin qu'il puisse communiquer correctement. À chaque appel, vous pouvez utiliser le paramètre `-TrustCertificate` pour permettre ce comportement. De plus, vous pouvez définir la valeur au niveau du serveur pour permettre les communications internes.

```json
{
    "Api": {
       "TrustCertificate": true
    }
}
```

### Mode intégré

Le mode intégré utilise la connexion par canal secondaire interne de PowerShell Universal pour communiquer avec les services via le module Universal. Lorsque vous utilisez le mode intégré, l'autorisation n'est effectuée que lorsque l'API est en mode de sécurité Strict.

Vous pouvez invoquer des applets de commande en mode intégré en utilisant le paramètre de commutateur `-Integrated`.

Le modèle de sécurité du serveur peut également être défini à `Integrated`. Cela force tous les appels d'applets de commande à utiliser le mode intégré et ne nécessite plus l'utilisation du paramètre `-Integrated`.

### Planifications

Les planifications n'ont pas d'utilisateur actuel. Vous devrez spécifier un jeton d'appli ou un identifiant par défaut lorsque vous utilisez des applets de commande dans des scripts planifiés. Bien qu'il s'agisse d'une étape supplémentaire, cela garantit que seules les permissions nécessaires sont appliquées au script planifié.

Les planifications n'ont pas de contexte utilisateur, vous devrez donc en spécifier un afin qu'elles s'exécutent correctement lorsque vous utilisez ces applets de commande.

### Proxys inverses (IIS)

PowerShell Universal utilise toutes les données disponibles pour déterminer l'URL appropriée à appeler lors de l'utilisation de l'API. Cela peut être problématique lorsque vous utilisez un proxy inverse, comme IIS. L'URL que PowerShell Universal voit est différente de l'URL réelle et accessible. Cela peut causer des problèmes lorsque les applets de commande tentent d'accéder à l'API.

Pour contourner ce problème, vous pouvez soit spécifier l'URL appropriée pour chaque appel d'applet de commande, soit personnaliser l'URL de l'API dans les paramètres de l'application.

#### Spécifier l'URL

Pour spécifier l'URL, il suffit de la fournir au paramètre `-ComputerName`.

```powershell
Get-PSUJob -ComputerName 'https://external.company.com/psu'
```

#### Paramètres de l'application

Vous pouvez également définir la valeur de l'URL de l'API dans les paramètres de l'application afin de fournir la même valeur à travers la plateforme. Définissez la valeur soit dans une variable d'environnement, soit dans le fichier `appsettings.json`.

```json
{
  "API": {
    "URL": "https://external.company.com/psu"
  }
}
```

## Considérations techniques

Le module Universal utilise gRPC pour toutes les communications avec le serveur PowerShell Universal. Selon la configuration du serveur, la communication gRPC sera légèrement différente.

### HTTPS

Lorsque vous utilisez HTTPS, le canal de communication gRPC standard sera utilisé. Il s'agit de la configuration la plus rapide, car elle ne nécessite pas de sérialisation spéciale ni d'adaptations pour les protocoles de niveau inférieur. HTTP/2 est requis pour gRPC.

Si HTTPS est utilisé, le certificat doit être approuvé par le système. Si le certificat est autosigné, vous pouvez utiliser le paramètre `-TrustCertificate` sur les applets de commande pour éviter la vérification du certificat.

### HTTP et authentification Windows

Lorsque vous utilisez HTTP ou l'authentification Windows, HTTP/2 n'est pas pris en charge et gRPC ne peut pas s'exécuter nativement, car les en-têtes de fin ne sont pas pris en charge. Pour s'y adapter, le module Universal utilisera une technologie appelée gRPC-Web afin de traduire les appels gRPC en HTTP et JSON pour appeler des méthodes REST HTTP plutôt que les méthodes gRPC standard.

Cette configuration est légèrement plus lente, mais ne devrait pas être perceptible dans la plupart des environnements.

### Mode intégré

Le mode intégré n'utilise pas l'API externe et communique via le canal secondaire gRPC de PowerShell Universal. Il n'est pas nécessaire de configurer les URL d'API, les certificats ou les identifiants.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.devolutions.net/powershell-universal/fr/config/module.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
