> 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/securite/enterprise-security/openid-connect.md).

# OpenID Connect

{% hint style="info" %}
OpenID Connect nécessite une [licence](https://ironmansoftware.com/pricing/powershell-universal).
{% endhint %}

OpenID Connect est une couche d'authentification au-dessus de OAuth 2.0, un cadre d'autorisation. Il est pris en charge par de nombreux fournisseurs et offre la possibilité de s'authentifier auprès de systèmes comme EntraID.

Ce document décrit les étapes nécessaires pour configurer EntraID OpenID Connect et l'utiliser avec Universal.

## Configuration d'Azure Entra ID (Azure Active Directory)

Dans le portail Azure, accédez à votre panneau Entra ID. Ensuite, cliquez sur le nœud Enterprise Application, puis sur New application.

<figure><img src="/files/pp0OhRso7sLIPq3LLBxg" alt=""><figcaption></figcaption></figure>

Ensuite, cliquez sur Create your own application.

<figure><img src="/files/VhrEl8ocwWQ7wGwZMk60" alt=""><figcaption></figcaption></figure>

Sélectionnez un nom pour votre application et choisissez Register an application to integrate with Microsoft Entra ID.

<figure><img src="/files/64YgnQXzZ3P1pKPj97YK" alt=""><figcaption></figcaption></figure>

Dans la page Register an application, définissez un URI de redirection. Il s'agira de l'URL du serveur PowerShell Universal vers laquelle Entra ID redirigera l'utilisateur. Cette valeur est définie dans le fichier de configuration PowerShell Universal, `appsettings.json`.

Maintenant que l'application a été créée, depuis la page Enterprise Applications, cliquez sur Single sign-on, puis sur Go to application. Vous accéderez ainsi à la page d'inscription de l'application.

<figure><img src="/files/T3An4h0XkzcH6tV8uKAB" alt=""><figcaption></figcaption></figure>

Accédez à Certificates and secrets et définissez un nouveau secret. Celui-ci sera utilisé avec le fichier de configuration PowerShell Universal.

<figure><img src="/files/a2oUl5VkzKSf2vhRgL0A" alt=""><figcaption></figcaption></figure>

Nous devons maintenant recueillir plusieurs informations de l'application pour les fournir à PowerShell Universal. Depuis la page d'accueil de l'application, enregistrez l'Application (client) ID et le directory (tenant) ID.

<figure><img src="/files/jjZiP3EKsOZBWqv7F1SZ" alt=""><figcaption></figcaption></figure>

### Mappage des revendications

Afin de fournir des revendications de groupe à PowerShell Universal, vous devez exposer les revendications de groupe depuis l'inscription de votre application. Cliquez sur Token Configuration, puis sur Add groups claim.

<figure><img src="/files/kvpxolv4PRGWcD8h8cQP" alt=""><figcaption><p>Revendications de groupe Entra ID</p></figcaption></figure>

Après avoir cliqué sur Add groups claim, vous aurez la possibilité de sélectionner les groupes fournis. Si vous sélectionnez All Groups, les revendications de groupe seront transmises à PowerShell Universal.

Si vous sélectionnez Groups assigned to the application, assurez-vous de cocher la valeur Emit groups as role claims. Ce paramètre nécessite un plan Entra ID payant.

<figure><img src="/files/YX6K0GKUhcy4NJo9UQd1" alt=""><figcaption><p>Paramètre Emit groups as role claims</p></figcaption></figure>

Pour attribuer un groupe à l'inscription de votre application, localisez votre application dans Enterprise Applications et cliquez sur User and Groups. Ensuite, cliquez sur Add User\Group et sélectionnez les groupes que vous souhaitez attribuer à votre application.

Une fois que vous avez configuré la revendication de groupe dans Entra ID, vous pouvez mettre à jour les mappages de revendications de PowerShell Universal vers les groupes fournis.

Pour chaque rôle que vous souhaitez attribuer à un groupe Entra ID, spécifiez le Claim Type et la Claim Value pour ce rôle. Par exemple, j'ai un groupe dans mon environnement avec l'ID 446832da-d4ad-4972-b0a2-eda736129928. Le Claim Type pour cet objet est <http://schemas.microsoft.com/ws/2008/06/identity/claims/groups>.

Pour attribuer ceci au groupe administrateur, je procéderais comme suit.

<figure><img src="/files/eNXjxS9hvqo8cAw3C05b" alt=""><figcaption><p>Mappage des revendications</p></figcaption></figure>

Les utilisateurs de ce groupe feraient désormais partie du rôle Administrator dans PowerShell Universal.

### Dépassements de groupe

Pour les organisations dont les utilisateurs appartiennent à de nombreux groupes, vous devrez limiter le nombre de groupes envoyés à PowerShell Universal. L'envoi d'un grand nombre de groupes peut dépasser la taille du jeton et entraîner des échecs d'autorisation. Si vous souhaitez limiter les groupes, sélectionnez Groups assigned to the application.

<figure><img src="/files/O37qdmaaMVNJXbZA7YIM" alt=""><figcaption></figcaption></figure>

Pour ajouter des groupes à l'application, revenez à la page Enterprise applications et sélectionnez Users and groups.

<figure><img src="/files/EQZn1H9VxnRIZwq3RpJQ" alt=""><figcaption></figcaption></figure>

Cliquez sur la valeur Add user/group pour attribuer ces groupes à votre application. Lorsque les utilisateurs se connectent à PowerShell Universal, seules ces revendications de groupe seront fournies.

Pour en savoir plus sur les dépassements de groupe, [cliquez ici](https://learn.microsoft.com/en-us/security/zero-trust/develop/configure-tokens-group-claims-app-roles#group-overages).

### Configuration d'Universal pour Entra ID

#### Utiliser Appsettings.json

{% hint style="info" %}
Pour en savoir plus sur `appsettings.json`, consultez notre page [Paramètres](/powershell-universal/fr/config/settings.md).
{% endhint %}

Maintenant que nous avons terminé la configuration d'une inscription d'application AzureAD, nous pouvons mettre à jour le fichier `appsettings.json` avec les paramètres appropriés. Pour mon application, cela ressemblerait à ceci.

```javascript
    "OIDC": {
      "Enabled": "true",
      "CallbackPath": "/auth/signin-oidc",
      "ClientID": "<application ID>",
      "ClientSecret": "<client secret>",
      "Resource": "",
      "Authority": "https://login.microsoftonline.com/<directory ID>",
      "ResponseType": "code",
      "SaveTokens": "false",
      "GetUserInfo": false
    },
```

{% hint style="warning" %}
Si vous utilisez Chrome, vous devrez également activer HTTPS. Vous verrez une erreur 500 si HTTPS n'est pas activé.
{% endhint %}

#### Utiliser Authentication.ps1

Vous pouvez utiliser la console d'administration pour configurer OpenID Connect. Nous recommandons cette méthode car vous n'aurez pas besoin de redémarrer le service PowerShell Universal après avoir configuré OIDC.

Pour ajouter une nouvelle méthode d'authentification, accédez à Security \ Authentication et ajoutez le fournisseur OpenID Connect.

![](/files/Z7wmuPDN4DUwjCYRuDNp)

Une fois le fournisseur ajouté, vous pouvez cliquer sur le bouton de détails pour saisir les paramètres dont vous aurez besoin pour vous authentifier auprès de votre fournisseur OIDC. Après avoir défini les options OIDC, activez le fournisseur et déconnectez-vous. En visitant la page `/admin`, vous serez invité à vous connecter via OIDC.

<figure><img src="/files/uPltMagECZaoUtK1FeTm" alt=""><figcaption><p>Paramètres OpenID Connect</p></figcaption></figure>

### Jetons d'accès délégués

Vous pouvez utiliser les jetons d'accès générés lors d'une connexion OIDC pour d'autres services auxquels l'utilisateur peut avoir accès. Dans votre fournisseur OIDC, comme Entra ID, vous pouvez accorder des autorisations supplémentaires au jeton.

![](/files/wEiTJeaEMLLhl9N4lo5a)

Vous devrez également activer les jetons d'accès dans le flux d'authentification afin que le jeton fournisse l'accès aux ressources nécessaires.

![](/files/drbEBfjgx6OFq7cbnuvA)

Enfin, dans votre fichier PSU `appsettings.json`, vous devez vous assurer que `SaveTokens` est activé, que le type de réponse inclut token et que la ressource à laquelle vous souhaitez accéder est incluse dans le paramètre Resource. L'URL que vous spécifiez dans la ressource doit être répertoriée dans le fournisseur.

L'exemple ci-dessous ajoute une ressource pour Microsoft O365.

```javascript
    "OIDC": {
  "Enabled": "true",
  "CallbackPath": "/auth/signin-oidc",
  "ClientID": "<clientID>",
  "ClientSecret": "<clientSecret>",
  "Resource": "https://manage.office.com/",
  "Authority": "https://login.microsoftonline.com/tenant",
  "ResponseType": "id_token token",
  "SaveTokens": "true",
  "UseTokenLifetime": true
},
```

Dans votre tableau de bord, vous aurez désormais accès à une variable `$AccessToken` et `$IdToken` que vous pouvez utiliser avec des cmdlets nécessitant une autorisation.

Par exemple, la cmdlet `Connect-AzureAd` accepte un jeton d'accès.

```powershell
Connect-AzureAD
       [-AzureEnvironmentName <EnvironmentName>]
       [-TenantId <String>]
       -AadAccessToken <String>
       [-MsAccessToken <String>]
       -AccountId <String>
       [-LogLevel <LogLevel>]
       [-LogFilePath <String>]
       [-InformationAction <ActionPreference>]
       [-InformationVariable <String>]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
```

### Jetons d'actualisation

Vous pouvez configurer Azure Active Directory et PowerShell Universal pour fournir des jetons d'actualisation permettant de demander de nouveaux jetons si le jeton d'accès expire. Pour ce faire, vous devrez activer offline\_access dans l'inscription de votre application.

<figure><img src="/files/nL8Ny4I3fCImKh2dYFZf" alt=""><figcaption><p>offline_access</p></figcaption></figure>

Lors de la configuration de PowerShell Universal, vous devez demander la portée `offline_access`, définir SaveTokens sur true et utiliser le type de réponse id\_token.

```json
"OIDC": {
    "Enabled": "true",
    "CallbackPath": "/auth/signin-oidc",
    "ClientID": "----",
    "ClientSecret": "---",
    "Resource": "https://graph.microsoft.com",
    "Authority": "https://login.microsoftonline.com/----",
    "ResponseType": "code id_token",
    "SaveTokens": "true",
    "CorrelationCookieSameSite": "",
    "UseTokenLifetime": true,
    "Scope": "openid profile groups offline_access",
    "GetUserInfo": false
},
```

Une fois configuré, vous pouvez accéder à la variable `$RefreshToken` dans vos scripts et applications.

## Configuration d'Okta

Okta prend en charge OpenID Connect. Vous pouvez configurer une application pour autoriser l'authentification auprès des instances PowerShell Universal.

Dans votre console d'administration Okta, développez Applications et cliquez sur Applications. Cliquez ensuite sur Create App Integration.

![](/files/CGYeQmvyL2EyUhyLHvun)

Sélectionnez OIDC et Web Application.

![](/files/JCuonLQmOtJBzueaGc5f)

Nommez votre application et définissez l'URL de redirection de connexion utilisée pour appeler votre serveur PowerShell Universal. Vous devrez spécifier cette URL de rappel dans votre configuration PowerShell Universal.

![](/files/IJv8lpVctKGMuj42zWPg)

Une fois votre application créée, notez votre Client ID et votre Client Secret. Vous les spécifierez dans votre configuration PowerShell Universal.

![](/files/31RC8l8bPQwkDHV1eDhC)

Dans l'onglet Sign On, spécifiez le filtre de revendications de groupe à utiliser pour fournir des revendications à PowerShell Universal. Ces revendications peuvent être utilisées pour attribuer des rôles en fonction de l'appartenance aux groupes. Le filtre suivant retourne toutes les revendications.

![](/files/gfRnczNeFSOjkcWLYpBO)

Une fois votre application configurée, vous pouvez configurer PowerShell Universal.

### Configuration d'Universal pour Okta

Une fois que vous avez défini votre application Okta, vous pouvez configurer votre fichier `appsettings.json` pour utiliser le fournisseur lors des connexions. Vous trouverez ci-dessous un exemple de la section requise pour qu'Okta fonctionne. Notez la fonctionnalité de portée, qui est requise pour récupérer l'appartenance aux groupes.

```json
    "OIDC": {
      "Enabled": "true",
      "CallbackPath": "/authorization-code/callback",
      "ClientID": "6f006906-643a-40fe-af00-9060cea5d6ef",
      "ClientSecret": "M~.rE56.md_MOpB2I5kwj_voFuX-i891N0",
      "Resource": "",
      "Authority": "https://poshtools.okta.com",
      "ResponseType": "code",
      "SaveTokens": "true",
      "CorrelationCookieSameSite": "",
      "UseTokenLifetime": true,
      "Scope": "openid profile groups",
      "GetUserInfo": true
    },
```

### Contrôle d'accès basé sur les rôles

Afin de rechercher l'appartenance aux groupes pour Okta, vous devrez utiliser la variable `$UserInfo` disponible dans `roles.ps1`. Cette variable fournit des informations supplémentaires sur l'utilisateur qui se connecte.

La propriété groups contiendra une liste des groupes dont l'utilisateur est membre. Vous pouvez valider l'appartenance en vérifiant si la liste contient le groupe souhaité.

```powershell
param($User)

$UserInfo.groups -contains 'Administrators'
```

### Jetons d'accès délégués

Les jetons d'accès sont disponibles pour les utilisateurs dans leurs scripts. Vous pouvez utiliser des jetons d'accès dans les tâches démarrées par les utilisateurs et dans les tableaux de bord.

Par exemple, vous pourriez retourner les informations de l'utilisateur actuel en utilisant le jeton d'accès fourni par Okta.

```powershell
Invoke-RestMethod https://poshtools.okta.com/oauth2/v1/userinfo -Headers @{
    Authorization = "Bearer $AccessToken"
}
```

## Affichage des informations de revendication

Si vous n'êtes pas certain des informations de revendication envoyées à PowerShell Universal par votre fournisseur d'identité, vous pouvez utiliser le bouton View Claim Information de la page Security \ Roles pour afficher tous les rôles fournis à PSU par le système distant.


---

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

```
GET https://docs.devolutions.net/powershell-universal/fr/securite/enterprise-security/openid-connect.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
