> 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

Configurez l'authentification OpenID Connect dans PowerShell Universal avec Entra ID ou Okta, y compris le mappage des revendications et les jetons d'accès délégués.

{% hint style="info" %}
OpenID Connect nécessite une [licence](https://store.devolutions.net/package#psu).
{% endhint %}

OpenID Connect est une couche d'authentification par-dessus 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.

Ensuite, cliquez sur Create your own application.

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

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

Maintenant que l'application a été créée, à partir de la page Enterprise Applications, cliquez sur Authentification unique, puis sur Go to application. Cela vous amènera à la page d'enregistrement de l'application.

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

Nous devrons maintenant recueillir plusieurs informations de l'application à fournir à PowerShell Universal. À partir de la page d'accueil de l'application, enregistrez l'ID d'application (client) et l'ID de répertoire (locataire).

### Mappage des revendications

Afin de fournir les revendications de groupe à PowerShell Universal, vous devrez exposer les revendications de groupe à partir de votre enregistrement d'application. Cliquez sur Token Configuration, puis sur Add groups claim.

Après avoir cliqué sur Add groups claim, vous aurez la possibilité de sélectionner quels groupes sont fournis. Si vous sélectionnez All Groups, les revendications de groupe seront fournies à 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 forfait Entra ID payant.

Pour attribuer un groupe à votre enregistrement d'application, repérez 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 groupes dans Entra ID, vous pouvez ensuite 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 type de revendication et la valeur de revendication pour ce rôle. Par exemple, j'ai un groupe dans mon environnement avec l'ID 446832da-d4ad-4972-b0a2-eda736129928. Le type de revendication pour cet objet est <http://schemas.microsoft.com/ws/2008/06/identity/claims/groups>.

Pour attribuer ceci au groupe d'administrateurs, je procéderais comme suit.

Les utilisateurs de ce groupe feraient maintenant partie du rôle Administrateur dans PowerShell Universal.

### Dépassements de groupes

Pour les organisations dont les utilisateurs appartiennent à de nombreux groupes, vous voudrez 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 causer des échecs d'autorisation. Si vous souhaitez limiter les groupes, sélectionnez Groups assigned to the application.

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

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 groupes, [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" %}
Apprenez-en davantage sur `appsettings.json` sur notre [page Paramètres](/powershell-universal/fr/config/settings.md).
{% endhint %}

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

{% code collapsedlinecount="10" %}

```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
    },
```

{% endcode %}

{% 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 à Secure > Authentication et ajoutez le fournisseur OpenID Connect.

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. Lorsque vous visiterez la page `/admin`, vous serez invité à vous connecter via OIDC.

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

Vous pouvez utiliser les jetons d'accès générés par 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 permissions supplémentaires au jeton.

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

Enfin, dans votre fichier `appsettings.json` de PSU, vous devrez vous assurer que `SaveTokens` est activé, que le type de ressource 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 devrait être listée dans le fournisseur.

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

{% code collapsedlinecount="10" %}

```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
},
```

{% endcode %}

Dans votre tableau de bord, vous aurez maintenant accès aux variables `$AccessToken` et `$IdToken` que vous pouvez utiliser avec des applets de commande qui nécessitent une autorisation.

Par exemple, l'applet de commande `Connect-AzureAd` accepte un jeton d'accès.

{% code collapsedlinecount="10" %}

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

{% endcode %}

### 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 votre enregistrement d'application.

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

{% code collapsedlinecount="10" %}

```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
},
```

{% endcode %}

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

## Configuration d'Okta

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

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

Sélectionnez OIDC et Web Application.

Nommez votre application et définissez la Sign-In redirect URL utilisée pour appeler votre serveur PowerShell Universal. Vous devrez spécifier cette URL de rappel dans votre configuration de PowerShell Universal.

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

Dans l'onglet Sign On, spécifiez le filtre de revendications de groupe à utiliser pour fournir les revendications à PowerShell Universal. Ces revendications peuvent être utilisées pour attribuer des rôles en fonction de l'appartenance à un groupe : `groups` / regex `.*`.

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

### Configuration d'Universal pour Okta

Une fois votre application Okta définie, vous pouvez configurer votre fichier `appsettings.json` pour utiliser le fournisseur pour les connexions. Voici un exemple de la section requise pour le fonctionnement d'Okta. Prenez note de la fonctionnalité de portée, car elle est requise pour récupérer l'appartenance aux groupes.

{% code collapsedlinecount="10" %}

```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
    },
```

{% endcode %}

### Accès basé sur les rôles

Afin de rechercher l'appartenance aux groupes pour Okta, vous devrez utiliser la variable `$UserInfo` qui est 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é.

{% code collapsedlinecount="10" %}

```powershell
param($User)

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

{% endcode %}

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

Les jetons d'accès sont disponibles pour les utilisateurs dans leurs scripts. Vous pouvez utiliser les 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.

{% code collapsedlinecount="10" %}

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

{% endcode %}

## 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 dans la page Secure > Roles pour afficher tous les rôles qui ont été 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, and the optional `goal` query parameter:

```
GET https://docs.devolutions.net/powershell-universal/fr/securite/enterprise-security/openid-connect.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.
