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

# OpenID Connect

Konfigurieren Sie die OpenID Connect-Authentifizierung in PowerShell Universal mit Entra ID oder Okta, einschließlich Claim-Zuordnung und delegierten Zugriffstokens.

{% hint style="info" %}
OpenID Connect erfordert eine [Lizenz](https://store.devolutions.net/package#psu).
{% endhint %}

OpenID Connect ist eine Authentifizierungsschicht über OAuth 2.0, einem Autorisierungs-Framework. Es wird von vielen Anbietern unterstützt und bietet die Möglichkeit, sich gegenüber Systemen wie EntraID zu authentifizieren.

Dieses Dokument beschreibt die notwendigen Schritte, um EntraID OpenID Connect zu konfigurieren und mit Universal zu verwenden.

## Azure Entra ID (Azure Active Directory) konfigurieren

Navigieren Sie im Azure-Portal zu Ihrem Entra ID-Blade. Klicken Sie anschließend auf den Knoten Enterprise Application und dann auf New application.

Klicken Sie als Nächstes auf Create your own application.

Wählen Sie einen Namen für Ihre Anwendung und wählen Sie Register an application to integrate with Microsoft Entra ID.

Definieren Sie auf der Seite Register an application eine Redirect-URI. Dies ist die URL des PowerShell Universal-Servers, zu der Entra ID den Benutzer weiterleitet. Dieser Wert wird in der PowerShell Universal-Konfigurationsdatei `appsettings.json` definiert.

Nachdem die Anwendung erstellt wurde, klicken Sie auf der Seite Enterprise Applications auf Single sign-on und dann auf Go to application. Dadurch gelangen Sie zur Seite der Anwendungsregistrierung.

Certificates and secrets und definieren Sie ein neues Secret. Dieses wird mit der PowerShell Universal-Konfigurationsdatei verwendet.

Nun müssen wir mehrere Informationen aus der Anwendung erfassen, um sie an PowerShell Universal zu übergeben. Speichern Sie auf der Startseite der Anwendung die Application (client)- und Directory (tenant)-ID.

### Claim-Zuordnung

Um Gruppen-Claims an PowerShell Universal zu übergeben, müssen Sie die Gruppen-Claims aus Ihrer App-Registrierung verfügbar machen. Klicken Sie auf Token Configuration und dann auf Add groups claim.

Nachdem Sie auf Add groups claim geklickt haben, können Sie auswählen, welche Gruppen bereitgestellt werden. Wenn Sie All Groups auswählen, werden die Gruppen-Claims an PowerShell Universal übergeben

Wenn Sie Groups assigned to the application auswählen, stellen Sie sicher, dass Sie den Wert Emit groups as role claims aktivieren. Diese Einstellung erfordert einen kostenpflichtigen Entra ID-Plan.

Um Ihrer App-Registrierung eine Gruppe zuzuweisen, suchen Sie Ihre App unter Enterprise Applications und klicken Sie auf User and Groups. Klicken Sie anschließend auf Add User\Group und wählen Sie die Gruppen aus, die Sie Ihrer Anwendung zuweisen möchten.

Sobald Sie den Gruppen-Claim in Entra ID konfiguriert haben, können Sie die Claim-Zuordnungen von PowerShell Universal auf die bereitgestellten Gruppen aktualisieren.

Geben Sie für jede Rolle, die Sie einer Entra ID-Gruppe zuweisen möchten, den Claim Type und den Claim Value für diese Rolle an. Zum Beispiel habe ich in meiner Umgebung eine Gruppe mit der ID 446832da-d4ad-4972-b0a2-eda736129928. Der Claim Type für dieses Objekt lautet <http://schemas.microsoft.com/ws/2008/06/identity/claims/groups>.

Um dies der Administratorgruppe zuzuweisen, würde ich Folgendes tun.

Benutzer dieser Gruppe wären nun Teil der Administrator-Rolle in PowerShell Universal.

### Gruppenüberschreitungen

Für Organisationen mit Benutzern, die vielen Gruppen angehören, sollten Sie die Anzahl der an PowerShell Universal gesendeten Gruppen begrenzen. Das Senden einer großen Anzahl von Gruppen kann die Größe des Tokens überschreiten und Autorisierungsfehler verursachen. Wenn Sie die Gruppen begrenzen möchten, wählen Sie Groups assigned to the application.

Um der Anwendung Gruppen hinzuzufügen, navigieren Sie zurück zur Seite der Enterprise-Anwendung und wählen Sie Users and groups.

Klicken Sie auf den Wert Add user/group, um diese Gruppen Ihrer Anwendung zuzuweisen. Wenn sich Benutzer bei PowerShell Universal anmelden, werden nur diese Gruppen-Claims bereitgestellt.

Um mehr über Gruppenüberschreitungen zu erfahren, [klicken Sie hier](https://learn.microsoft.com/en-us/security/zero-trust/develop/configure-tokens-group-claims-app-roles#group-overages).

### Universal für Entra ID konfigurieren

#### Appsettings.json verwenden

{% hint style="info" %}
Lesen Sie mehr über `appsettings.json` auf unserer Seite [Einstellungen](/powershell-universal/de/config/settings.md).
{% endhint %}

Nachdem wir nun die Konfiguration einer AzureAD-App-Registrierung abgeschlossen haben, können wir die Datei `appsettings.json` mit den entsprechenden Einstellungen aktualisieren. Für meine Anwendung würde das etwa so aussehen.

{% 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" %}
Wenn Sie Chrome verwenden, müssen Sie zusätzlich HTTPS aktivieren. Ohne aktiviertes HTTPS wird ein 500-Fehler angezeigt.
{% endhint %}

#### Authentication.ps1 verwenden

Sie können die Admin-Konsole verwenden, um OpenID Connect zu konfigurieren. Wir empfehlen diese Methode, da Sie den PowerShell Universal-Dienst nach der Konfiguration von OIDC nicht neu starten müssen.

Um eine neue Authentifizierungsmethode hinzuzufügen, navigieren Sie zu Secure > Authentication und fügen Sie den OpenID Connect-Anbieter hinzu.

Sobald der Anbieter hinzugefügt wurde, können Sie auf die Detailschaltfläche klicken, um die Einstellungen einzugeben, die Sie für die Authentifizierung gegenüber Ihrem OIDC-Anbieter benötigen. Nachdem Sie die OIDC-Optionen festgelegt haben, aktivieren Sie den Anbieter und melden Sie sich ab. Beim Aufrufen der Seite `/admin` werden Sie zur OIDC-Anmeldung aufgefordert.

### Delegierte Zugriffstokens

Sie können durch eine OIDC-Anmeldung generierte Zugriffstokens für andere Dienste verwenden, auf die der Benutzer möglicherweise Zugriff hat. Innerhalb Ihres OIDC-Anbieters, wie zum Beispiel Entra ID, können Sie dem Token zusätzliche Berechtigungen gewähren.

Sie müssen außerdem Zugriffstokens innerhalb des Authentifizierungsflusses aktivieren, damit das Token den erforderlichen Ressourcenzugriff bereitstellt.

Schließlich müssen Sie in Ihrer PSU-Datei `appsettings.json` sicherstellen, dass `SaveTokens` aktiviert ist, der Ressourcentyp Token enthält und die Ressource, auf die Sie zugreifen möchten, in der Einstellung Resource enthalten ist. Die URL, die Sie in der Ressource angeben, sollte innerhalb des Anbieters aufgeführt sein.

Das folgende Beispiel fügt eine Ressource für Microsoft O365 hinzu.

{% 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 %}

Innerhalb Ihres Dashboards haben Sie nun Zugriff auf die Variablen `$AccessToken` und `$IdToken`, die Sie mit Cmdlets verwenden können, die eine Autorisierung erfordern.

Zum Beispiel akzeptiert das Cmdlet `Connect-AzureAd` ein Zugriffstoken.

{% 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 %}

### Refresh-Tokens

Sie können Azure Active Directory und PowerShell Universal so konfigurieren, dass Refresh-Tokens bereitgestellt werden, um neue Tokens anzufordern, wenn das Zugriffstoken abläuft. Dazu müssen Sie offline\_access in Ihrer App-Registrierung aktivieren.

Bei der Konfiguration von PowerShell Universal müssen Sie den Scope `offline_access` anfordern, SaveTokens auf true setzen und den Antworttyp id\_token verwenden.

{% 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 %}

Nach der Konfiguration können Sie in Ihren Skripten und Apps auf die Variable `$RefreshToken` zugreifen.

## Okta konfigurieren

Okta unterstützt OpenID Connect. Sie können eine Anwendung so konfigurieren, dass die Authentifizierung gegenüber PowerShell Universal-Instanzen möglich ist.

Erweitern Sie in Ihrer Okta-Admin-Konsole Applications und klicken Sie auf Applications. Klicken Sie dann auf Create App Integration.

Wählen Sie OIDC und Web Application.

Benennen Sie Ihre Anwendung und definieren Sie die Sign-In-Redirect-URL, die zum Aufruf Ihres PowerShell Universal-Servers verwendet wird. Sie müssen diese Callback-URL in Ihrer PowerShell Universal-Konfiguration angeben.

Nachdem Sie Ihre Anwendung erstellt haben, notieren Sie sich Ihre Client ID und Ihr Client Secret. Diese geben Sie in Ihrer PowerShell Universal-Konfiguration an.

Geben Sie auf der Registerkarte Sign On den Gruppen-Claims-Filter an, der für die Bereitstellung von Claims an PowerShell Universal verwendet werden soll. Diese Claims können verwendet werden, um Rollen basierend auf der Gruppenmitgliedschaft zuzuweisen: `groups` / Regex `.*`.

Sobald Ihre Anwendung konfiguriert ist, können Sie PowerShell Universal konfigurieren.

### Universal für Okta konfigurieren

Sobald Sie Ihre Okta-Anwendung definiert haben, können Sie Ihre Datei `appsettings.json` so einstellen, dass der Anbieter für Anmeldungen verwendet wird. Nachfolgend finden Sie ein Beispiel für den Abschnitt, der für die Funktion von Okta erforderlich ist. Beachten Sie die Scope-Funktionalität, da sie für das Abrufen der Gruppenmitgliedschaft erforderlich ist.

{% 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 %}

### Rollenbasierter Zugriff

Um die Gruppenmitgliedschaft für Okta abzufragen, müssen Sie die Variable `$UserInfo` verwenden, die innerhalb von `roles.ps1` verfügbar ist. Diese Variable stellt zusätzliche Informationen über den sich anmeldenden Benutzer bereit.

Die groups-Eigenschaft enthält eine Liste der Gruppen, in denen der Benutzer Mitglied ist. Sie können die Mitgliedschaft überprüfen, indem Sie prüfen, ob die Liste die gewünschte Gruppe enthält.

{% code collapsedlinecount="10" %}

```powershell
param($User)

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

{% endcode %}

### Delegierte Zugriffstokens

Zugriffstokens stehen Benutzern in ihren Skripten zur Verfügung. Sie können Zugriffstokens in Jobs verwenden, die von Benutzern gestartet werden, sowie in Dashboards.

Zum Beispiel könnten Sie die Informationen des aktuellen Benutzers mithilfe des von Okta bereitgestellten Zugriffstokens zurückgeben.

{% code collapsedlinecount="10" %}

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

{% endcode %}

## Claim-Informationen anzeigen

Wenn Sie sich nicht sicher sind, welche Claim-Informationen von Ihrem Identitätsanbieter an PowerShell Universal gesendet werden, können Sie die Schaltfläche View Claim Information auf der Seite Secure > Roles verwenden, um alle Rollen anzuzeigen, die PSU vom Remote-System bereitgestellt wurden.


---

# 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/de/sicherheit/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.
