> 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/api/security.md).

# Sicherheit

Sichern Sie PowerShell Universal REST-API-Endpunkte mit Token-, Windows- und Cookie-Authentifizierung und erzwingen Sie anschließend eine rollenbasierte Autorisierung für jede Anfrage.

Nach der Aktivierung können Sie Authentifizierung und Autorisierung für Ihre Endpunkte erzwingen.

## Sichere Endpunkte definieren

Sie können sichere Endpunkte in der Benutzeroberfläche definieren, indem Sie die Authentifizierung aktivieren. Sie werden Endpunkt-Authentifizierung und -Autorisierung auf der Registerkarte Sicherheit in den Eigenschaften eines Endpunkts.

Sie können sichere Endpunkte auch über die Datei `.universal/endpoints.ps1` oder die Management-API mit `New-PSUEndpoint` definieren.

```powershell
New-PSUEndpoint -Url '/endpoint' -Method 'GET' -Endpoint {
   "Hello, world!"
} -Authentication
```

Wenn die Authentifizierung aktiviert ist, wird die Verwendung einer der konfigurierten Authentifizierungsmethoden erzwungen. APIs unterstützen die folgenden Methoden.

* JWT-App-Token
* Windows-Authentifizierung
* Cookie-Authentifizierung
* Basic-Authentifizierung

## Zugriff auf sichere Endpunkte

Sobald Sie einen sicheren Endpunkt definiert haben, müssen Sie Authentifizierung und Autorisierung bereitstellen, um auf den Endpunkt zuzugreifen.

### Authentifizierung mit Token

{% hint style="warning" %}
Beachten Sie, dass Sie keine App-Token an den PowerShell Universal-Server übergeben können, wenn Sie in IIS hosten und die anonyme Authentifizierung nicht aktiviert ist.
{% endhint %}

Um sich mit Token zu authentifizieren, müssen Sie zunächst ein neues App-Token zur Verwendung generieren. Sie können dazu das Cmdlet `Grant-PSUAppToken` verwenden, um dies remote zu tun, oder dem aktuell angemeldeten Benutzer unter **Benutzermenü > Benutzereinstellungen > Token** ein Token gewähren.

Sobald Sie Ihr App-Token erstellt haben, können Sie es nun verwenden, um sich gegenüber dem sicheren Endpunkt zu authentifizieren. Übergeben Sie dazu den Authorization-Header zusammen mit der Anfrage.

```powershell
Invoke-RestMethod http://localhost:5000/auth -Headers @{ Authorization = "******" }
```

#### Benutzerdefinierter Authorization-Header

PowerShell Universal stellt einen benutzerdefinierten Authorization-Header bereit, um Szenarien mit Reverse-Proxys zu unterstützen, die möglicherweise ihren eigenen Authorization-Header benötigen. Wenn der Header `X-PSU-Authorization` angegeben ist, ignoriert PSU den `Authorization`-Header und verwendet stattdessen diesen Header.

```
Invoke-RestMethod http://localhost:5000/auth -Headers @{ 
    Authorization = "******" 
    'X-PSU-Authorization' = '******'
}
```

### Authentifizierung mit Windows-Authentifizierung

Um sich mit [Windows-Authentifizierung](/powershell-universal/de/sicherheit/enterprise-security/windows-sso.md#windows-authentication-in-iis) zu authentifizieren, können Sie den Parameter `-UseDefaultCredentials` von `Invoke-RestMethod` und `Invoke-WebRequest` verwenden. Dies führt eine Negotiate-Authentifizierung durch, unabhängig davon, ob Sie in IIS oder in einem Dienst ausgeführt werden.

```powershell
Invoke-RestMethod http://localhost:5000/auth -UseDefaultCredentials
```

### Authentifizierung mit Cookies

Um sich mit Cookies zu authentifizieren, müssen Sie zunächst die Anmelde-API aufrufen, um ein gültiges Cookie vom System zu erhalten. Sie können dazu `Invoke-WebRequest` verwenden. Übergeben Sie den Benutzernamen und das Passwort als Body. Geben Sie den Parameter `-SessionVariable` an, um eine Sitzung einzurichten.

```powershell
Invoke-WebRequest http://localhost:5000/api/v1/signin -Body (@{ 
    UserName = "Admin"
    Password = "Any"
} | ConvertTo-Json) -ContentType 'application/json' -SessionVariable mySession -Method POST
```

Sobald Sie sich erfolgreich authentifiziert haben, können Sie Ihre Variable `$mySession` verwenden, um sichere Endpunkte aufzurufen.

```powershell
 Invoke-WebRequest http://localhost:5000/auth -WebSession $mySession
```

## Rollen erzwingen

Neben dem Erstellen von Endpunkten, die eine Authentifizierung erfordern, können Sie auch Rollen erzwingen, indem Sie eine Rolle im Cmdlet `New-PSUEndpoint` definieren oder eine in der Benutzeroberfläche auswählen. Wenn eine Rolle ausgewählt ist, besitzt es die Rolle.

Die Windows- und Cookie-Authentifizierung weist Rollen basierend auf der Identität des Benutzers und den Rollenrichtlinien zu, wie sie angewendet werden.

JWT-App-Token verwenden die Rolle, die beim Generieren definiert wurde.

## Ausführungsrollen

Mithilfe der Eigenschaft Ausführungsrollen können Sie festlegen, welche Rollen bei der Ausführung des API-Endpunkts zugewiesen werden. Standardmäßig wird der Endpunkt basierend auf den Rollen des Aufrufers ausgeführt. In einigen Szenarien, beispielsweise bei der Verwendung von Secrets mit Rollen, möchten Sie möglicherweise zusätzliche Rollen bereitstellen, die der Aufrufer nicht besitzt. Ausführungsrollen erfordern nicht, dass die API-Authentifizierung aktiviert ist.

## API

* [New-PSUEndpoint](/powershell-universal/de/powershell-befehle/new-psuendpoint.md)
* [Get-PSUEndpoint](/powershell-universal/de/powershell-befehle/get-psuendpoint.md)
* [Remove-PSUEndpoint](/powershell-universal/de/powershell-befehle/remove-psuendpoint.md)
* [New-PSUApiResponse](/powershell-universal/de/powershell-befehle/new-psuapiresponse.md)
* [Set-PSUSetting](/powershell-universal/de/powershell-befehle/set-psusetting.md)

### Siehe auch

* [Devolutions Academy – Erstellen eines Variablen-Endpunkts](https://academy.devolutions.net/student/activity/3466016-creating-a-variable-endpoint)
* [Devolutions Academy – Erstellen eines Query-String-Endpunkts](https://academy.devolutions.net/student/activity/3466018-creating-a-query-string-endpoint)
* [Devolutions Academy – Authentifizierung](https://academy.devolutions.net/student/path/3465905/activity/5612255)


---

# 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/api/security.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.
