App-Tokens
Sie können PowerShell Universal App-Token sowohl mit benutzerdefinierten API-Endpunkten als auch mit der Management-API verwenden. Die Management-API verwendet die Standardrollen Administrator, Operator und Reader. Die benutzerdefinierten API-App-Token können sowohl benutzerdefinierte als auch integrierte Rollen nutzen.
Sie können App-Token über die Admin-Konsole gewähren oder die Management-API direkt verwenden.
Admin-Konsole
Um ein Token in der Admin-Konsole zu gewähren, navigieren Sie zu Security \ Tokens. Klicken Sie auf die Schaltfläche Create App Token, um ein App-Token zu gewähren.

Wenn Sie auf Create App Token klicken, können Sie in einem Dialogfeld die Identität, Rolle und Ablaufzeit des Tokens angeben.

Management-API
Sie können Benutzern App-Token auch über die Management-API gewähren. Um ein App-Token programmgesteuert über die API zu gewähren, können Sie wie folgt vorgehen:
Administratoren können jedem Benutzer App-Token gewähren, indem sie die Identitäts-ID des Benutzers angeben. Um ein App-Token über die REST-API an eine Identität zu vergeben, benötigt der Benutzer eine definierte Rolle. Die Operator-Rolle definiert den Benutzer, und sein App-Token erhält den Zugriff basierend auf dieser Rolle.
Rollen
App-Token-Rollen werden direkt im Token selbst zugewiesen. Rollen geben an, was das Token ausführen kann. Sie werden nicht während der Verwendung berechnet, daher funktioniert die Zuordnung von Rollen zu Claims nicht mit App-Token.
Wir empfehlen außerdem, die Anzahl der Rollen innerhalb eines App-Tokens zu begrenzen. Je mehr Rollen dem Token hinzugefügt werden, desto größer wird das Token, was die Leistung verringert oder Probleme mit bestimmten Werkzeugen verursacht, die keine längeren Token-Werte zulassen.
Sie können benutzerdefinierte Rollen mit einem benutzerdefinierten Satz von Berechtigungen verwenden, um die Anzahl der Rollen zu begrenzen und gleichzeitig benutzerdefinierten Zugriff auf die PowerShell Universal-Plattform bereitzustellen. Berechtigungen werden ausgewertet, wenn die Rolle verwendet wird. Das bedeutet, dass die Zuweisung einer benutzerdefinierten Rolle zu einem Token flexibler ist als eine integrierte Rolle, da Berechtigungen zu einer Rolle hinzugefügt oder daraus entfernt werden können, ohne ein neues Token zu generieren.
Migrieren von App-Token
Sie können App-Token mithilfe der Management-API zwischen Systemen migrieren. Dies ist hilfreich bei der Entwicklung für Hochverfügbarkeitsszenarien.
Nachfolgend ein Beispiel für den POST, der erforderlich ist, um ein vorhandenes App-Token in einer beliebigen PSU-Instanz zu erstellen. Beachten Sie, dass der Signaturschlüssel zwischen den Instanzen identisch sein muss. Sie benötigen ein gültiges App-Token im Zielsystem, um die migrierten Token zu erstellen.
Erweiterte App-Token-Sicherheit
Wenn die erweiterte App-Token-Sicherheit aktiviert ist, sind Token-Werte nur bei der Erstellung zugänglich. Sie werden gehasht und die Datenbank speichert den Hash-Wert anstelle des Tokens. Sie verwenden das Token genauso wie jedes andere Token.
Das Aktivieren der App-Token-Sicherheit macht alle vorhandenen Token ungültig.
Systemtoken
Systemtoken sind eine Möglichkeit, Token für Nicht-Benutzer-Systeme bereitzustellen. Sie sind nicht direkt an die Identität eines Benutzers gebunden. Sie können einen Namen für das Token sowie Ablauf und Rollen angeben.
Signaturschlüssel
Lokaler Signaturschlüssel
Standardmäßig erstellt PowerShell Universal einen Signaturschlüssel basierend auf der Zeichenfolge Jwt \ SigningKey in appsettings.json. Dieser Wert wird zum Kodieren und Dekodieren des Tokens verwendet. Wenn die Signaturschlüssel nicht übereinstimmen, wird das Token als ungültig betrachtet. Das Ändern des Signaturschlüssels macht alle vorhandenen Signaturschlüssel ungültig.
Remote-Signaturschlüssel
Möglicherweise möchten Sie ein OAuth 2.0-Discovery-Dokument zur Validierung des Signaturschlüssels verwenden. Durch die Verwendung eines solchen Remote-Systems stellen Sie sicher, dass die PowerShell Universal-Konfiguration bei einer Änderung der Signaturschlüssel nicht geändert werden muss. Um einen Remote-Signaturschlüssel zu verwenden, setzen Sie den Wert Jwt \ DiscoveryDocument in appsettings.json auf die URL des OAuth 2.0-Metadatendokuments. Beim Laden von PowerShell Universal werden die Signaturschlüssel aus dem Dokument gelesen und dem JWT-Validierungssystem bereitgestellt.
Externe App-Token
Bei der Konfiguration eines Remote-Signaturschlüssels werden die Token vom OAuth 2.0-Anbieter generiert. Daher werden auch die Claim-Informationen von diesem Anbieter generiert. Um Rollen und Berechtigungen innerhalb von PowerShell Universal ordnungsgemäß zuzuweisen, müssen Sie sicherstellen, dass die richtigen Claims innerhalb des Tokens definiert sind. PowerShell Universal wertet die folgenden Claim-Werte innerhalb eines Tokens aus.
PSUPermission – Definiert die Berechtigungen des Tokens
Roles – Definiert die Rollen des Tokens.
Um den Zugriff auf Ressourcen innerhalb einer PowerShell Universal-Instanz zu ermöglichen, stellen Sie sicher, dass das Token die richtigen Claims enthält. Beispielsweise würde das folgende Token vollständigen Zugriff auf die PowerShell Universal-Management-APIs erlauben, da es den Claim PSUPermission mit einem Selektor für alle Berechtigungen bereitstellt. Sie können das Beispiel unten verwenden, um zu sehen, wie sich dies in Auth0 umsetzen lässt.
Alternativ können Sie die Claims-Auswertung für JWT-Token aktivieren. Standardmäßig verwendet PowerShell Universal beim Empfang eines Tokens einen statischen Satz von Berechtigungen. Wenn Sie die Claims-Auswertung für JWT-Token aktivieren, verarbeitet das Autorisierungssystem das Token und fügt die Berechtigungen bei der Verwendung des Tokens hinzu und nicht bei dessen Generierung.
Claim-Auswertung für Token
Um die Claim-Auswertung für Token zu aktivieren, können Sie appsettings.json anpassen, um PSU anzuweisen, die Claims-Auswertung während der Ausführung der Token-Validierung durchzuführen.
Dabei wird roles.ps1 verwendet, um die Claims der bereitgestellten Token zu prüfen und Berechtigungen basierend auf den qualifizierten Rollen zuzuweisen.
Beispiel: Auth0-Zugriffstoken mit Claim-Auswertung
Mit den Standardfunktionen von Auth0 können Sie Token generieren, die dann Rollen basierend auf den Claims des Tokens bereitstellen. Dies erfordert keine speziellen Trigger oder Aktionen innerhalb von Auth0.
Eine Auth0-Anwendung erstellen
Erstellen Sie in Auth0 eine Anwendung für eine reguläre Webanwendung. Klicken Sie dazu auf Applications \ Applications und dann auf Create Application.

Eine Auth0-API erstellen
Erstellen Sie als Nächstes eine Auth0-API, indem Sie auf Applications \ APIs und dann auf Create API klicken. Setzen Sie Name und Namespace auf eindeutige Werte und belassen Sie die übrigen Optionen auf den Standardwerten.

Benutzerdefinierte Berechtigungsbereiche in Ihrer API erstellen
Definieren Sie innerhalb Ihrer API benutzerdefinierte Berechtigungen, z. B. eine mit einem Rollennamen.

Die Anwendung zur Nutzung der API autorisieren
Klicken Sie in den Anwendungseinstellungen auf APIs und aktivieren Sie den Schalter neben der API, um die Anwendung zur Nutzung der API zu autorisieren. Wählen Sie die Berechtigungen aus, die Sie der Anwendung bereitstellen möchten. Diese werden als Berechtigungs-Claims im Token angezeigt.

Ein Zugriffstoken von Auth0 abrufen
Nachdem die Anwendung und die API definiert sind, können Sie nun ein Zugriffstoken in Auth0 anfordern. Die Werte client_id und client_secret finden Sie auf der Seite Application Details. Der Wert audience sollte der Identifier Ihrer API sein.
PowerShell Universal konfigurieren
Sie müssen PowerShell Universal so konfigurieren, dass Auth0 als JWT-Anbieter verwendet wird. Dazu passen Sie die Datei appsettings.json an. Diese sollte Werte aus Auth0 enthalten. Das DiscoveryDocument ist Teil Ihres Mandanten und hilft, Daten wie die Signaturschlüssel für die JWT-Token zu definieren. Der Issuer ist die URL Ihres Mandanten. Die Audience ist der Identifier Ihrer API.
Eine Rolle für die Zuordnung zur Auth0-Berechtigung konfigurieren
Erstellen Sie abschließend eine Rolle, die der Auth0-Berechtigung zugeordnet ist. Das folgende Beispiel prüft, ob das API-Token einen Berechtigungs-Claim mit dem Wert Administrator besitzt, wie oben konfiguriert. Ist dies der Fall, wird dem Token die Rolle API Admin zugewiesen, die alle Berechtigungen innerhalb der Management-API von PowerShell Universal umfasst.
Verwendung eines App-Tokens mit PowerShell Universal
Nachdem Sie nun ein Auth0-App-Token haben, können Sie es genauso verwenden wie integrierte App-Token.
Beispiel: Auth0-Zugriffstoken mit benutzerdefinierten Claims
Sie können Auth0-APIs und -Anwendungen verwenden, um App-Token für PowerShell Universal bereitzustellen.
Eine Auth0-Anwendung erstellen
Erstellen Sie in Auth0 eine Anwendung für eine reguläre Webanwendung. Klicken Sie dazu auf Applications \ Applications und dann auf Create Application.

Eine Auth0-API erstellen
Erstellen Sie als Nächstes eine Auth0-API, indem Sie auf Applications \ APIs und dann auf Create API klicken. Setzen Sie Name und Namespace auf eindeutige Werte und belassen Sie die übrigen Optionen auf den Standardwerten.

Die Anwendung zur Nutzung der API autorisieren
Klicken Sie in den Anwendungseinstellungen auf APIs und aktivieren Sie den Schalter neben der API, um die Anwendung zur Nutzung der API zu autorisieren.
Ein Zugriffstoken von Auth0 abrufen
Nachdem die Anwendung und die API definiert sind, können Sie nun ein Zugriffstoken in Auth0 anfordern. Die Werte client_id und client_secret finden Sie auf der Seite Application Details. Der Wert audience sollte der Identifier Ihrer API sein.
PowerShell Universal konfigurieren
Sie müssen PowerShell Universal so konfigurieren, dass Auth0 als JWT-Anbieter verwendet wird. Dazu passen Sie die Datei appsettings.json an. Diese sollte Werte aus Auth0 enthalten. Das DiscoveryDocument ist Teil Ihres Mandanten und hilft, Daten wie die Signaturschlüssel für die JWT-Token zu definieren. Der Issuer ist die URL Ihres Mandanten. Die Audience ist der Identifier Ihrer API.
Verwendung eines App-Tokens mit PowerShell Universal
Nachdem Sie nun ein Auth0-App-Token haben, können Sie es genauso verwenden wie integrierte App-Token.
Optional: Einen Auth0-Aktions-Trigger definieren
Beim Gewähren eines neuen Zugriffstokens von Auth0 enthalten diese nicht die Standardrollen oder -berechtigungen wie integrierte App-Token in PowerShell Universal. Sie können dies steuern, indem Sie eine Custom Action definieren und sie dem Trigger credential-exchange zuweisen.
Klicken Sie auf Actions, dann auf Library und Create Action und anschließend auf Create Custom Action. Wählen Sie den Trigger Password Reset / Post Challenge aus und benennen Sie die Aktion.

Definieren Sie die Aktion, indem Sie einen benutzerdefinierten Claim für den Claim-Typ PSUPermission festlegen. Dieses Beispiel gewährt einfach vollständigen Zugriff auf die PowerShell Universal-APIs. Sie können den Ereigniskontext verwenden, um zu definieren, welche Berechtigungen basierend auf der Zugriffstoken-Anfrage empfangen werden.
Fügen Sie als Nächstes die Aktion zum Workflow-Trigger für credential-exchange hinzu, indem Sie auf Actions, dann auf Triggers und anschließend auf credential-exchange. klicken

Ziehen Sie die Aktion Set Permissions in den Workflow.
Sobald dies abgeschlossen ist, können Sie ein neues Token generieren und auf jede API innerhalb von PowerShell Universal zugreifen.
Siehe auch
Zuletzt aktualisiert
War das hilfreich?