> 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

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

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

Dieses Dokument beschreibt die Schritte, die zur Konfiguration von EntraID OpenID Connect und zur Verwendung mit Universal erforderlich sind.

## Konfigurieren von Azure Entra ID (Azure Active Directory)

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

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

Klicken Sie anschließend auf Create your own application.

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

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

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

Definieren Sie auf der Seite Register an application eine Redirect-URI. Dies ist die URL des PowerShell Universal-Servers, zu dem 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. Damit gelangen Sie zur Seite der Anwendungsregistrierung.

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

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

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

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

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

### Claim-Zuordnung

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

<figure><img src="/files/xHNpl6vMl8pTyTwzVX5p" alt=""><figcaption><p>Entra ID-Gruppen-Claims</p></figcaption></figure>

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 bereitgestellt

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.

<figure><img src="/files/8jd7QGpsZiX3MebvBuql" alt=""><figcaption><p>Einstellung Emit groups as role claims</p></figcaption></figure>

Um Ihrer App-Registrierung eine Gruppe zuzuweisen, suchen Sie Ihre App in 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. Beispielsweise habe ich in meiner Umgebung eine Gruppe mit der ID 446832da-d4ad-4972-b0a2-eda736129928. Der Claim Type für dieses Objekt ist <http://schemas.microsoft.com/ws/2008/06/identity/claims/groups>.

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

<figure><img src="/files/plESMsykbsKBxiKUUMUP" alt=""><figcaption><p>Claim-Zuordnung</p></figcaption></figure>

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

### Gruppenüberschreitungen

Bei Organisationen, in denen Benutzer viele Gruppen haben, sollten Sie die Anzahl der an PowerShell Universal gesendeten Gruppen begrenzen. Das Senden großer Gruppenanzahlen kann die Größe des Tokens überschreiten und zu Autorisierungsfehlern führen. Wenn Sie die Gruppen begrenzen möchten, wählen Sie Groups assigned to the application.

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

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

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

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).

### Konfigurieren von Universal für Entra ID

#### 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 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 dies etwa so aussehen.

```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" %}
Wenn Sie Chrome verwenden, müssen Sie außerdem 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 Security \ Authentication und fügen Sie den OpenID Connect-Anbieter hinzu.

![](/files/eqo4HorcaOb6gLoSJmLN)

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

<figure><img src="/files/XTjX2c0zMNFQBQB9cmHz" alt=""><figcaption><p>OpenID Connect-Einstellungen</p></figcaption></figure>

### Delegierte Zugriffstokens

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

![](/files/btdBkkgpsNKa7Aqag7m4)

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

![](/files/g3OBLfwszfQae08SHz20)

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 beim Anbieter aufgeführt sein.

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

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

In Ihrem Dashboard haben Sie nun Zugriff auf die Variablen `$AccessToken` und `$IdToken`, die Sie mit Cmdlets verwenden können, die eine Autorisierung erfordern.

Beispielsweise akzeptiert das Cmdlet `Connect-AzureAd` ein Zugriffstoken.

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

### Aktualisierungstokens

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

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

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

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

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

## Konfigurieren von Okta

Okta unterstützt OpenID Connect. Sie können eine Anwendung so konfigurieren, dass eine 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.

![](/files/Z5GRcJo0K5akrrHqFbnw)

Wählen Sie OIDC und Web Application.

![](/files/2ry4bEt97W0Ejmtc5Kyz)

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

![](/files/rqwiRXQ3uBFnwCqbWmam)

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.

![](/files/4ojvZnCUTdPxxJVE1opw)

Geben Sie auf der Registerkarte Sign On den Gruppen-Claims-Filter an, der zum Bereitstellen von Claims an PowerShell Universal verwendet werden soll. Diese Claims können verwendet werden, um Rollen basierend auf der Gruppenmitgliedschaft zuzuweisen. Der folgende Filter gibt alle Claims zurück.

![](/files/LBEbdtaoILPpaiU39hnb)

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

### Konfigurieren von Universal für Okta

Nachdem 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 zum Abrufen der Gruppenmitgliedschaft erforderlich ist.

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

### Rollenbasierter Zugriff

Um die Gruppenmitgliedschaft für Okta abzurufen, müssen Sie die Variable `$UserInfo` verwenden, die in `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.

```powershell
param($User)

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

### Delegierte Zugriffstokens

Zugriffstokens sind für Benutzer innerhalb ihrer Skripte verfügbar. Sie können Zugriffstokens in von Benutzern gestarteten Aufträgen und in Dashboards verwenden.

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

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

## Anzeigen von Claim-Informationen

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 Security \ 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.
