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

# Sicurezza

Protegga gli endpoint REST API di PowerShell Universal con autenticazione tramite token, Windows e cookie, quindi applichi l'autorizzazione basata sui ruoli a ogni richiesta.

Una volta abilitata, sarà possibile applicare autenticazione e autorizzazione agli endpoint.

## Definizione di endpoint sicuri

È possibile definire endpoint sicuri nell'interfaccia utente abilitando l'autenticazione. Troverà l'autenticazione e l'autorizzazione dell'endpoint nella scheda Sicurezza delle proprietà di un endpoint.

È inoltre possibile definire endpoint sicuri utilizzando il file `.universal/endpoints.ps1` oppure la Management API con `New-PSUEndpoint`.

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

Quando l'autenticazione è abilitata, verrà imposto l'uso di uno dei metodi di autenticazione configurati. Le API supportano i metodi seguenti.

* Token applicazione JWT
* Autenticazione Windows
* Autenticazione tramite cookie
* Autenticazione di base

## Accesso agli endpoint sicuri

Dopo aver definito un endpoint sicuro, dovrà fornire autenticazione e autorizzazione per accedere all'endpoint.

### Autenticazione con token

{% hint style="warning" %}
Si noti che, se l'hosting avviene in IIS e l'autenticazione anonima non è abilitata, non sarà possibile passare i token applicazione al server PowerShell Universal.
{% endhint %}

Per autenticarsi con i token, per prima cosa è necessario generare un nuovo token applicazione da utilizzare. È possibile usare il cmdlet `Grant-PSUAppToken` per farlo in remoto oppure concedere un token all'utente attualmente connesso in **Menu utente > Impostazioni utente > Token**.

Dopo aver creato il token applicazione, potrà utilizzarlo per autenticarsi verso l'endpoint sicuro. Per farlo, passi l'header Authorization insieme alla richiesta.

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

#### Header di autorizzazione personalizzato

PowerShell Universal fornisce un header di autorizzazione personalizzato per supportare scenari con reverse proxy che potrebbero richiedere un proprio header Authorization. Se viene specificato l'header `X-PSU-Authorization`, PSU ignorerà l'header `Authorization` e utilizzerà invece questo header.

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

### Autenticazione con l'autenticazione Windows

Per autenticarsi con l'[autenticazione Windows](/powershell-universal/it/sicurezza/enterprise-security/windows-sso.md#windows-authentication-in-iis), può utilizzare il parametro `-UseDefaultCredentials` di `Invoke-RestMethod` e `Invoke-WebRequest` . Questo eseguirà l'autenticazione negotiate sia che l'esecuzione avvenga all'interno di IIS sia come servizio.

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

### Autenticazione con i cookie

Per autenticarsi con i cookie, dovrà prima chiamare l'API di login per ricevere un cookie valido dal sistema. È possibile utilizzare `Invoke-WebRequest` per farlo. Passi nome utente e password come body. Specifichi il parametro `-SessionVariable` per stabilire una sessione.

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

Una volta autenticato correttamente, potrà utilizzare la variabile `$mySession` per chiamare gli endpoint sicuri.

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

## Applicazione dei ruoli

Oltre a creare endpoint che richiedono l'autenticazione, è possibile applicare anche i ruoli definendo un ruolo nel cmdlet `New-PSUEndpoint` oppure selezionandone uno nell'interfaccia utente. Se un ruolo è selezionato, è possiede il ruolo.

L'autenticazione Windows e tramite cookie assegnerà i ruoli in base all'identità dell'utente e alle policy dei ruoli così come vengono applicate.

I token applicazione JWT utilizzeranno il ruolo definito al momento della loro generazione.

## Ruoli di esecuzione

Utilizzando la proprietà Ruoli di esecuzione è possibile impostare quali ruoli vengono assegnati durante l'esecuzione dell'endpoint API. Per impostazione predefinita, l'endpoint verrà eseguito in base ai ruoli del chiamante. In alcuni scenari, per esempio quando si utilizzano i Secret con i ruoli, potrebbe essere necessario fornire ruoli aggiuntivi che il chiamante potrebbe non possedere. I ruoli di esecuzione non richiedono che l'autenticazione delle API sia abilitata.

## API

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

### Vedere anche

* [Devolutions Academy – Creazione di un endpoint con variabile](https://academy.devolutions.net/student/activity/3466016-creating-a-variable-endpoint)
* [Devolutions Academy – Creazione di un endpoint con query string](https://academy.devolutions.net/student/activity/3466018-creating-a-query-string-endpoint)
* [Devolutions Academy – Autenticazione](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/it/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.
