Jetons d'application
Jetons d'application pour accéder aux API de PowerShell Universal.
Vous pouvez utiliser les jetons d'application de PowerShell Universal avec les points de terminaison API personnalisés et l'API de gestion. L'API de gestion utilise les rôles standard Administrator, Operator et Reader. Les jetons d'application pour les API personnalisées peuvent utiliser des rôles personnalisés ainsi que les rôles intégrés.
Vous pouvez accorder des jetons d'application via la console d'administration ou directement via l'API de gestion.
Console d'administration
Pour accorder un jeton dans la console d'administration, accédez à Security \ Tokens. Cliquez sur le bouton Create App Token pour accorder un jeton d'application.

Lorsque vous cliquez sur Create App Token, une boîte de dialogue vous permet de spécifier l'identité, le rôle et la date d'expiration du jeton.

API de gestion
Vous pouvez également accorder des jetons d'application à des utilisateurs via l'API de gestion. Pour accorder un jeton d'application par programmation à l'aide de l'API, vous pouvez procéder comme suit :
Les administrateurs peuvent accorder des jetons d'application à n'importe quel utilisateur en spécifiant l'ID d'identité de cet utilisateur. Pour accorder un jeton d'application à une identité via l'API REST, l'utilisateur doit avoir un rôle défini. Le rôle Operator définit l'utilisateur, et son jeton d'application se verra accorder l'accès selon ce rôle.
Rôles
Les rôles des jetons d'application sont assignés directement dans le jeton lui-même. Les rôles indiquent ce que le jeton est autorisé à effectuer. Ils ne sont pas calculés lors de l'utilisation, de sorte que le mappage rôle-revendication ne fonctionnera pas avec les jetons d'application.
Nous suggérons également de limiter le nombre de rôles dans un jeton d'application. Plus il y a de rôles ajoutés au jeton, plus la taille du jeton augmente, ce qui peut réduire les performances ou causer des problèmes avec certains outils qui n'autorisent pas des valeurs de jeton plus longues.
Vous pouvez utiliser des rôles personnalisés avec un ensemble d'autorisations personnalisées pour limiter le nombre de rôles tout en fournissant un accès personnalisé à la plateforme PowerShell Universal. Les autorisations sont évaluées lors de l'utilisation du rôle. Cela signifie que l'attribution d'un rôle personnalisé à un jeton le rend plus flexible qu'un rôle intégré, car les autorisations peuvent être ajoutées ou supprimées d'un rôle sans générer un nouveau jeton.
Migration de jetons d'application
Vous pouvez migrer des jetons d'application entre systèmes à l'aide de l'API de gestion. Ceci est utile lors du développement de scénarios de haute disponibilité.
Voici un exemple du POST requis pour créer un jeton d'application existant dans n'importe quelle instance PSU. Notez que la clé de signature doit être identique entre les instances. Vous avez besoin d'un jeton d'application valide dans le système cible pour créer les jetons migrés.
Sécurité renforcée des jetons d'application
Lorsque la sécurité renforcée des jetons d'application est activée, les valeurs des jetons ne sont accessibles qu'au moment de leur création. Elles sont hachées et la base de données stocke la valeur de hachage plutôt que le jeton. Vous utilisez le jeton de la même manière que tout autre jeton.
L'activation de la sécurité des jetons d'application invalidera tous les jetons existants.
Jetons système
Les jetons système sont un moyen de fournir des jetons à des systèmes non utilisateurs. Ils ne sont pas liés directement à l'identité d'un utilisateur. Vous pouvez fournir un nom pour le jeton ainsi qu'une date d'expiration et des rôles.
Clés de signature
Clé de signature locale
Par défaut, PowerShell Universal crée une clé de signature basée sur la chaîne Jwt \ SigningKey dans appsettings.json. Cette valeur est utilisée pour encoder et décoder le jeton. Si les clés de signature ne correspondent pas, le jeton sera considéré comme invalide. La modification de la clé de signature invalidera toutes les clés de signature existantes.
Clé de signature distante
Vous pouvez utiliser un document de découverte OAuth 2.0 pour fournir la validation de la clé de signature. En utilisant un système distant de ce type, vous pouvez vous assurer que lorsque les clés de signature sont modifiées, la configuration de PowerShell Universal n'aura pas besoin d'être modifiée. Pour utiliser une clé de signature distante, définissez la valeur Jwt \ DiscoveryDocument dans appsettings.json sur l'URL du document de métadonnées OAuth 2.0. Lors du chargement de PowerShell Universal, les clés de signature seront lues à partir du document et fournies au système de validation JWT.
Jetons d'application externes
Lors de la configuration d'une clé de signature distante, les jetons sont générés par le fournisseur OAuth 2.0. De ce fait, les informations de revendications sont également générées par ce fournisseur. Afin d'assigner correctement les rôles et les autorisations dans PowerShell Universal, vous devez vous assurer que les revendications appropriées sont définies dans le jeton. PowerShell Universal évaluera les valeurs de revendication suivantes dans un jeton.
PSUPermission - Définit les autorisations du jeton
Roles - Définit les rôles du jeton.
Pour permettre l'accès aux ressources d'une instance PowerShell Universal, assurez-vous que le jeton contient les revendications appropriées. Par exemple, le jeton suivant permettrait un accès complet aux API de gestion de PowerShell Universal car il fournit la revendication PSUPermission avec un sélecteur pour toutes les autorisations. Vous pouvez utiliser l'exemple ci-dessous pour voir comment accomplir cela dans Auth0.
Vous pouvez également activer l'évaluation des revendications pour les jetons JWT. Par défaut, PowerShell Universal utilise un ensemble statique d'autorisations lors de la réception d'un jeton. Si vous activez l'évaluation des revendications pour les jetons JWT, le système d'autorisation traitera le jeton et ajoutera les autorisations lors de l'utilisation du jeton plutôt que lors de sa génération.
Évaluation des revendications pour les jetons
Pour activer l'évaluation des revendications pour les jetons, vous pouvez ajuster appsettings.json afin d'indiquer à PSU d'exécuter l'évaluation des revendications pendant la validation du jeton.
Cela utilisera roles.ps1 pour vérifier les revendications des jetons fournis et assigner des autorisations en fonction des rôles qualifiés.
Exemple : jeton d'accès Auth0 avec évaluation des revendications
En utilisant les fonctionnalités standard d'Auth0, vous pouvez générer des jetons qui fournissent ensuite des rôles basés sur les revendications du jeton. Cela ne nécessite aucun déclencheur ou action spécial dans Auth0.
Créer une application Auth0
Dans Auth0, créez une application pour une application web standard. Vous pouvez le faire en cliquant sur Applications \ Applications, puis sur Create Application.

Créer une API Auth0
Ensuite, créez une API Auth0 en cliquant sur Applications \ APIs, puis sur Create API. Définissez le nom et l'espace de noms avec des valeurs uniques et laissez le reste des options par défaut.

Créer des portées d'autorisation personnalisées dans votre API
Dans votre API, définissez des autorisations personnalisées, par exemple une avec un nom de rôle.

Autoriser l'application à utiliser l'API
Dans les paramètres de l'application, cliquez sur APIs et basculez le commutateur à côté de l'API pour autoriser l'application à utiliser l'API. Sélectionnez les autorisations que vous souhaitez accorder à l'application. Celles-ci apparaîtront sous forme de revendications d'autorisation dans le jeton.

Récupérer un jeton d'accès depuis Auth0
Une fois l'application et l'API définies, vous pouvez demander un jeton d'accès dans Auth0. Les valeurs client_id et client_secret se trouvent sur la page des détails de l'application. La valeur audience doit être l'identifiant de votre API.
Configurer PowerShell Universal
Vous devez configurer PowerShell Universal pour utiliser Auth0 comme fournisseur JWT. Vous pouvez le faire en ajustant le fichier appsettings.json. Ces valeurs doivent inclure des valeurs provenant d'Auth0. Le DiscoveryDocument fera partie de votre locataire et aide à définir des données telles que les clés de signature pour les jetons JWT. L'Issuer sera l'URL de votre locataire. L'Audience sera l'identifiant de votre API.
Configurer un rôle pour le mapper à l'autorisation Auth0
Enfin, créez un rôle qui correspond à l'autorisation Auth0. L'exemple suivant vérifie que le jeton API contient une revendication de permissions avec la valeur Administrator comme configuré ci-dessus. Dans ce cas, le jeton se voit attribuer le rôle API Admin qui dispose de toutes les autorisations dans l'API de gestion de PowerShell Universal.
Utiliser un jeton d'application avec PowerShell Universal
Maintenant que vous disposez d'un jeton d'application Auth0, vous pouvez l'utiliser de la même manière que les jetons d'application intégrés.
Exemple : jeton d'accès Auth0 avec revendications personnalisées
Vous pouvez utiliser les API et les applications Auth0 pour fournir des jetons d'application pour PowerShell Universal.
Créer une application Auth0
Dans Auth0, créez une application pour une application web standard. Vous pouvez le faire en cliquant sur Applications \ Applications, puis sur Create Application.

Créer une API Auth0
Ensuite, créez une API Auth0 en cliquant sur Applications \ APIs, puis sur Create API. Définissez le nom et l'espace de noms avec des valeurs uniques et laissez le reste des options par défaut.

Autoriser l'application à utiliser l'API
Dans les paramètres de l'application, cliquez sur APIs et basculez le commutateur à côté de l'API pour autoriser l'application à utiliser l'API.
Récupérer un jeton d'accès depuis Auth0
Une fois l'application et l'API définies, vous pouvez demander un jeton d'accès dans Auth0. Les valeurs client_id et client_secret se trouvent sur la page des détails de l'application. La valeur audience doit être l'identifiant de votre API.
Configurer PowerShell Universal
Vous devez configurer PowerShell Universal pour utiliser Auth0 comme fournisseur JWT. Vous pouvez le faire en ajustant le fichier appsettings.json. Ces valeurs doivent inclure des valeurs provenant d'Auth0. Le DiscoveryDocument fera partie de votre locataire et aide à définir des données telles que les clés de signature pour les jetons JWT. L'Issuer sera l'URL de votre locataire. L'Audience sera l'identifiant de votre API.
Utiliser un jeton d'application avec PowerShell Universal
Maintenant que vous disposez d'un jeton d'application Auth0, vous pouvez l'utiliser de la même manière que les jetons d'application intégrés.
Facultatif : définir un déclencheur d'action Auth0
Lors de l'octroi d'un nouveau jeton d'accès depuis Auth0, celui-ci ne contiendra pas les rôles ou autorisations standard comme les jetons d'application intégrés dans PowerShell Universal. Vous pouvez contrôler cela en définissant une action personnalisée et en l'assignant au déclencheur credential-exchange.
Cliquez sur Actions, puis sur Library et Create Action, puis sur Create Custom Action. Sélectionnez le déclencheur Password Reset / Post Challenge et nommez l'action.

Définissez l'action en configurant une revendication personnalisée pour le type de revendication PSUPermission. Cet exemple fournit simplement un accès complet aux API de PowerShell Universal. Vous pouvez utiliser le contexte d'événement pour définir les autorisations reçues en fonction de la demande de jeton d'accès.
Ensuite, ajoutez l'action au déclencheur de flux de travail pour credential-exchange en cliquant sur Actions, puis sur Triggers, puis sur credential-exchange.

Faites glisser l'action Set Permissions dans le flux de travail.
Une fois cette étape terminée, vous pouvez générer un nouveau jeton et accéder à n'importe quelle API dans PowerShell Universal.
Mis à jour
Ce contenu vous a-t-il été utile ?