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

# Seguridad

Una vez habilitado, podrá aplicar autenticación y autorización en sus endpoints.

## Definir endpoints seguros

Puede definir endpoints seguros en la interfaz de usuario habilitando la autenticación. Encontrará la autenticación y autorización del endpoint en la pestaña Seguridad de las propiedades de un endpoint.

También puede definir endpoints seguros usando el fichero `.universal/endpoints.ps1` o la API de administración con `New-PSUEndpoint`.

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

Cuando la autenticación está habilitada, se exigirá el uso de uno de los métodos de autenticación configurados. Las API admiten los siguientes métodos.

* Tokens de aplicación JWT
* Autenticación de Windows
* Autenticación por cookies
* Autenticación básica

## Acceder a endpoints seguros

Una vez que haya definido un endpoint seguro, deberá proporcionar autenticación y autorización para acceder al endpoint.

### Autenticarse con tokens

{% hint style="warning" %}
Tenga en cuenta que si aloja en IIS y no tiene habilitada la autenticación anónima, no podrá pasar tokens de aplicación al servidor de PowerShell Universal.
{% endhint %}

Para autenticarse con tokens, primero debe generar un nuevo token de aplicación para su uso. Puede utilizar el cmdlet `Grant-PSUAppToken` para hacerlo de forma remota o puede crear un token de aplicación en la interfaz de usuario mediante la pestaña Configuración Seguridad AppTokens.

Sitúe el cursor sobre su nombre de usuario en la parte superior derecha de la consola de administración, haga clic en Tokens y luego en Crear token de aplicación.

Una vez creado su token de aplicación, ya puede utilizarlo para autenticarse contra el endpoint seguro. Para ello, pase el encabezado Authorization junto con la solicitud.

```powershell
Invoke-RestMethod http://localhost:5000/auth -Headers @{ Authorization = "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1lIjoiQWRtaW4iLCJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9oYXNoIjoiMWUyY2IzNzAtMmMyNS00ZDU5LTk4YzgtMzc5MTFjMDAyZmI5Iiwic3ViIjoiUG93ZXJTaGVsbFVuaXZlcnNhbCIsImh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd3MvMjAwOC8wNi9pZGVudGl0eS9jbGFpbXMvcm9sZSI6IkFkbWluaXN0cmF0b3IiLCJuYmYiOjE2MDU2NjEyNTUsImV4cCI6MTYzNzM2NzI1OCwiaXNzIjoiSXJvbm1hblNvZnR3YXJlIiwiYXVkIjoiUG" }
```

#### Encabezado de autorización personalizado

PowerShell Universal proporciona un encabezado de autorización personalizado para admitir escenarios con proxies inversos que puedan requerir su propio encabezado Authorization. Si se especifica el encabezado `X-PSU-Authorization`, PSU ignorará el encabezado `Authorization` y utilizará este encabezado en su lugar.

```
Invoke-RestMethod http://localhost:5000/auth -Headers @{ 
    Authorization = "Bearer msft_xyz_123" 
    'X-PSU-Authorization' = 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1lIjoiQWRtaW4iLCJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9oYXNoIjoiMWUyY2IzNzAtMmMyNS00ZDU5LTk4YzgtMzc5MTFjMDAyZmI5Iiwic3ViIjoiUG93ZXJTaGVsbFVuaXZlcnNhbCIsImh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd3MvMjAwOC8wNi9pZGVudGl0eS9jbGFpbXMvcm9sZSI6IkFkbWluaXN0cmF0b3IiLCJuYmYiOjE2MDU2NjEyNTUsImV4cCI6MTYzNzM2NzI1OCwiaXNzIjoiSXJvbm1hblNvZnR3YXJlIiwiYXVkIjoiUG'
}
```

### Autenticarse con la autenticación de Windows

Para autenticarse con la [autenticación de Windows](/powershell-universal/es/seguridad/security.md#windows-authentication-in-iis), puede usar el parámetro `-UseDefaultCredentials` de `Invoke-RestMethod` e `Invoke-WebRequest`. Esto realizará una autenticación negotiate tanto si se ejecuta dentro de IIS como si se ejecuta como servicio.

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

### Autenticarse con cookies

Para autenticarse con cookies, primero deberá llamar a la API de inicio de sesión para recibir una cookie válida del sistema. Puede usar `Invoke-WebRequest` para hacerlo. Pase el nombre de usuario y la contraseña como cuerpo. Especifique el parámetro `-SessionVariable` para establecer una sesión.

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

Una vez que se haya autenticado correctamente, puede utilizar su variable `$mySession` para llamar a endpoints seguros.

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

## Aplicar roles

Además de crear endpoints que requieran autenticación, también puede aplicar roles definiendo un rol en el cmdlet `New-PSUEndpoint` o seleccionando uno en la interfaz de usuario. Si se selecciona un rol, este posee el rol.

La autenticación de Windows y por cookies asignará roles según la identidad del usuario y las políticas de roles tal como se apliquen.

Los tokens de aplicación JWT usarán el rol que se definió cuando se generaron.

## Roles de ejecución

Mediante la propiedad Roles de ejecución, puede establecer qué roles se asignan mientras se ejecuta el endpoint de la API. De forma predeterminada, el endpoint se ejecutará según los roles del llamante. En algunos escenarios, por ejemplo al usar Secrets con Roles, puede que desee proporcionar roles adicionales que el llamante no posea. Los roles de ejecución no requieren que la autenticación de la API esté habilitada.

## API

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


---

# 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/es/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.
