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

# OpenID Connect

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

OpenID Connect es una capa de autenticación sobre OAuth 2.0, un marco de autorización. Está compatible con muchos proveedores y ofrece la posibilidad de autenticarse contra sistemas como EntraID.

Este documento describe los pasos necesarios para configurar EntraID OpenID Connect y utilizarlo con Universal.

## Configuración de Azure Entra ID (Azure Active Directory)

En el portal de Azure, navegue hasta su hoja de Entra ID. A continuación, haga clic en el nodo Enterprise Application y después en New application.

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

A continuación, haga clic en Create your own application.

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

Seleccione un nombre para su aplicación y seleccione Register an application to integrate with Microsoft Entra ID.

<figure><img src="/files/5RhmoM1IICKnsDEB7Y2D" alt=""><figcaption></figcaption></figure>

En la página Register an application, defina un URI de redirección. Esta será la URL del servidor de PowerShell Universal al que Entra ID redirigirá al usuario. Este valor se define en el fichero de configuración de PowerShell Universal, `appsettings.json`.

Ahora que se ha creado la aplicación, desde la página Enterprise Applications, haga clic en Single sign-on y después en Go to application. Esto le llevará a la página de registro de la aplicación.

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

Certificates and secrets y defina un nuevo secreto. Este se utilizará con el fichero de configuración de PowerShell Universal.

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

Ahora necesitaremos recopilar varios datos de la aplicación para proporcionarlos a PowerShell Universal. Desde la página de inicio de la aplicación, guarde el Application (client) ID y el directory (tenant) ID.

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

### Asignación de reclamaciones

Para proporcionar reclamaciones de grupo a PowerShell Universal, deberá exponer las reclamaciones de grupo desde el registro de su aplicación. Haga clic en Token Configuration y después en Add groups claim.

<figure><img src="/files/Rb2uaWiyIbP7oFVsdYJG" alt=""><figcaption><p>Reclamaciones de grupo de Entra ID</p></figcaption></figure>

Después de hacer clic en Add groups claim, tendrá la opción de seleccionar qué grupos se proporcionan. Si selecciona All Groups, las reclamaciones de grupo se proporcionarán a PowerShell Universal

Si selecciona Groups assigned to the application, asegúrese de marcar el valor Emit groups as role claims. Esta configuración requiere un plan de pago de Entra ID.

<figure><img src="/files/kNpXq6w1hgyTEy4GrOKm" alt=""><figcaption><p>Configuración Emit groups as role claims</p></figcaption></figure>

Para asignar un grupo al registro de su aplicación, localice su aplicación en Enterprise Applications y haga clic en User and Groups. A continuación, haga clic en Add User\Group y seleccione los grupos que desea asignar a su aplicación.

Una vez que tenga configurada la reclamación de grupos en Entra ID, podrá actualizar las asignaciones de reclamaciones de PowerShell Universal a los grupos proporcionados.

Para cada rol que desee asignar a un grupo de Entra ID, especifique el Claim Type y el Claim Value de ese rol. Por ejemplo, tengo un grupo en mi entorno con el ID 446832da-d4ad-4972-b0a2-eda736129928. El Claim Type de este objeto es <http://schemas.microsoft.com/ws/2008/06/identity/claims/groups>.

Para asignarlo al grupo de administradores, haría lo siguiente.

<figure><img src="/files/7FHQjF1gl1Vb4OZWP8tc" alt=""><figcaption><p>Asignación de reclamaciones</p></figcaption></figure>

Los usuarios de este grupo pasarían ahora a formar parte del rol Administrator en PowerShell Universal.

### Excesos de grupos

En las organizaciones que tienen usuarios con muchos grupos, conviene limitar el número de grupos enviados a PowerShell Universal. El envío de un gran número de grupos puede superar el tamaño del token y provocar fallos de autorización. Si desea limitar los grupos, seleccione Groups assigned to the application.

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

Para añadir grupos a la aplicación, vuelva a la página de la Enterprise application y seleccione Users and groups.

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

Haga clic en el valor Add user/group para asignar estos grupos a su aplicación. Cuando los usuarios inicien sesión en PowerShell Universal, solo se proporcionarán estas reclamaciones de grupo.

Para obtener más información sobre los excesos de grupos, [haga clic aquí](https://learn.microsoft.com/en-us/security/zero-trust/develop/configure-tokens-group-claims-app-roles#group-overages).

### Configuración de Universal para Entra ID

#### Uso de Appsettings.json

{% hint style="info" %}
Obtenga más información sobre `appsettings.json` en nuestra página de [Configuración ](/powershell-universal/es/config/settings.md).
{% endhint %}

Ahora que hemos completado la configuración de un registro de aplicación de AzureAD, podemos actualizar el fichero `appsettings.json` con los ajustes adecuados. Para mi aplicación, tendría un aspecto similar a este.

```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" %}
Si utiliza Chrome, también deberá habilitar HTTPS. Verá un error 500 si HTTPS no está habilitado.
{% endhint %}

#### Uso de Authentication.ps1

Puede utilizar la consola de administración para configurar OpenID Connect. Recomendamos este método, ya que no necesitará reiniciar el servicio de PowerShell Universal después de configurar OIDC.

Para añadir un nuevo método de autenticación, navegue hasta Security \ Authentication y añada el proveedor OpenID Connect.

![](/files/sv2MeJbhVvxd4cXeWcXg)

Una vez añadido el proveedor, puede hacer clic en el botón de detalles para introducir los ajustes que necesitará para autenticarse contra su proveedor OIDC. Después de establecer las opciones de OIDC, active el proveedor y cierre la sesión. Al visitar la página `/admin`, se le solicitará el inicio de sesión OIDC.

<figure><img src="/files/zjvwimT9buRwQHS168HB" alt=""><figcaption><p>Configuración de OpenID Connect</p></figcaption></figure>

### Tokens de acceso delegado

Puede utilizar los tokens de acceso generados por un inicio de sesión OIDC para otros servicios a los que el usuario pueda tener acceso. Dentro de su proveedor OIDC, como Entra ID, puede conceder permisos adicionales al token.

![](/files/71YZIWbLK2XUoP0yz2ll)

También tendrá que habilitar los tokens de acceso dentro del flujo de autenticación para que el token proporcione el acceso al recurso necesario.

![](/files/tdp05xfjWE4sP6dqwjup)

Por último, en su fichero `appsettings.json` de PSU, deberá asegurarse de que `SaveTokens` esté habilitado, que el tipo de recurso incluya el token y que el recurso al que desea acceder esté incluido en la configuración Resource. La URL que especifique en el recurso debe estar indicada dentro del proveedor.

El ejemplo siguiente añade un recurso para Microsoft O365.

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

En su panel, ahora tendrá acceso a las variables `$AccessToken` y `$IdToken`, que puede utilizar con cmdlets que requieran autorización.

Por ejemplo, el cmdlet `Connect-AzureAd` acepta un token de acceso.

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

### Tokens de actualización

Puede configurar Azure Active Directory y PowerShell Universal para que proporcionen tokens de actualización con los que solicitar nuevos tokens si el token de acceso caduca. Para ello, deberá habilitar offline\_access en el registro de su aplicación.

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

Al configurar PowerShell Universal, debe solicitar el ámbito `offline_access`, establecer SaveTokens en true y utilizar el tipo de respuesta id\_token.

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

Una vez configurado, puede acceder a la variable `$RefreshToken` en sus scripts y aplicaciones.

## Configuración de Okta

Okta admite OpenID Connect. Puede configurar una aplicación para permitir la autenticación contra instancias de PowerShell Universal.

En su consola de administración de Okta, expanda Applications y haga clic en Applications. A continuación, haga clic en Create App Integration.

![](/files/EtXnWLgwyKpJkFAETLlW)

Seleccione OIDC y Web Application.

![](/files/Vosp5GlBsBFbKaMwVWx4)

Asigne un nombre a su aplicación y defina la URL de redirección de inicio de sesión utilizada para llamar a su servidor de PowerShell Universal. Deberá especificar esta URL de retorno de llamada en su configuración de PowerShell Universal.

![](/files/PU8sjvfdth7lrVRXjgbj)

Una vez creada su aplicación, tome nota de su Client ID y Client Secret. Los especificará en su configuración de PowerShell Universal.

![](/files/khT0h5sCwMZe8NAuu745)

En la pestaña Sign On, especifique el filtro de reclamaciones de grupo que se utilizará para proporcionar reclamaciones a PowerShell Universal. Estas reclamaciones se pueden utilizar para asignar roles según la pertenencia a grupos. El filtro siguiente devuelve todas las reclamaciones.

![](/files/YSHxF7lhOSq8FTP0BGa0)

Una vez que tenga su aplicación configurada, podrá configurar PowerShell Universal.

### Configuración de Universal para Okta

Una vez que haya definido su aplicación de Okta, puede configurar su fichero `appsettings.json` para utilizar el proveedor para los inicios de sesión. A continuación se muestra un ejemplo de la sección necesaria para que Okta funcione. Tenga en cuenta la funcionalidad de ámbito, ya que es necesaria para recuperar la pertenencia a grupos.

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

### Acceso basado en roles

Para consultar la pertenencia a grupos en Okta, deberá utilizar la variable `$UserInfo`, que está disponible en `roles.ps1`. Esta variable proporciona información adicional sobre el usuario que inicia sesión.

La propiedad groups contendrá una lista de los grupos a los que pertenece el usuario. Puede validar la pertenencia comprobando si la lista contiene el grupo deseado.

```powershell
param($User)

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

### Tokens de acceso delegado

Los tokens de acceso están disponibles para los usuarios en sus scripts. Puede utilizar tokens de acceso en trabajos iniciados por los usuarios y en paneles.

Por ejemplo, podría devolver la información del usuario actual utilizando el token de acceso proporcionado por Okta.

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

## Visualización de la información de reclamaciones

Si no está seguro de qué información de reclamaciones se envía a PowerShell Universal desde su proveedor de identidad, puede utilizar el botón View Claim Information de la página Security \ Roles para ver todos los roles que se han proporcionado a PSU desde el sistema remoto.


---

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