> 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

Configure la autenticación OpenID Connect en PowerShell Universal con Entra ID u Okta, incluyendo la asignación de notificaciones y los tokens de acceso delegados.

{% 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. Es compatible con muchos proveedores y permite autenticarse contra sistemas como EntraID.

En este documento se describen los pasos necesarios para configurar EntraID OpenID Connect y utilizarlo con Universal.

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

En Azure Portal, vaya a la hoja de Entra ID. A continuación, haga clic en el nodo Enterprise Application y después en New application.

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

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

En la página Register an application, defina un URI de redirección. Esta será la URL del servidor de PowerShell Universal a la 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 luego en Go to application. Esto le llevará a la página de registro de la aplicación.

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

Ahora necesitaremos recopilar varios datos de la aplicación para proporcionárselos a PowerShell Universal. Desde la página de inicio de la aplicación, guarde el ID de aplicación (cliente) y de directorio (inquilino).

### Asignación de notificaciones

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

Después de hacer clic en Add groups claim, tendrá la opción de seleccionar qué grupos se proporcionan. Si selecciona All Groups, las notificaciones de grupos 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.

Para asignar un grupo al registro de su aplicación, localice la 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 desee asignar a su aplicación.

Una vez que tenga configurada la notificación de grupos en Entra ID, podrá actualizar las asignaciones de notificaciones 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 asignar esto al grupo de administradores, haría lo siguiente.

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

### Sobrecargas de grupo

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

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

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 notificaciones de grupo.

Para obtener más información sobre las sobrecargas de grupo, [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

#### Usar Appsettings.json

{% hint style="info" %}
Lea más 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, sería algo así.

{% code collapsedlinecount="10" %}

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

{% endcode %}

{% hint style="warning" %}
Si utiliza Chrome, también deberá habilitar HTTPS. Verá un error 500 si HTTPS no está habilitado.
{% endhint %}

#### Usar 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, vaya a Secure > Authentication y añada el proveedor OpenID Connect.

Una vez añadido el proveedor, puede hacer clic en el botón de detalles para introducir los ajustes que necesitará para autenticarse con 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 de OIDC.

### Tokens de acceso delegados

Puede utilizar los tokens de acceso generados por un inicio de sesión de 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.

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

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

En el ejemplo siguiente se añade un recurso para Microsoft O365.

{% code collapsedlinecount="10" %}

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

{% endcode %}

Dentro de su dashboard, 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.

{% code collapsedlinecount="10" %}

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

{% endcode %}

### 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 expira. Para ello, deberá habilitar offline\_access en el registro de su aplicación.

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

{% code collapsedlinecount="10" %}

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

{% endcode %}

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

## Configuración de Okta

Okta es compatible con 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.

Seleccione OIDC y Web Application.

Asigne un nombre a su aplicación y defina la Sign-In redirect URL utilizada para llamar a su servidor de PowerShell Universal. Deberá especificar esta URL de devolución de llamada en su configuración de PowerShell Universal.

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

En la pestaña Sign On, especifique el filtro de notificaciones de grupo que se utilizará para proporcionar notificaciones a PowerShell Universal. Estas notificaciones pueden utilizarse para asignar roles en función de la pertenencia a grupos: `groups` / regex `.*`.

Una vez configurada su aplicación, puede configurar PowerShell Universal.

### Configuración de Universal para Okta

Una vez definida su aplicación de Okta, puede configurar el 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 (scope), ya que es necesaria para recuperar la pertenencia a grupos.

{% code collapsedlinecount="10" %}

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

{% endcode %}

### Acceso basado en roles

Para buscar la pertenencia a grupos de 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.

{% code collapsedlinecount="10" %}

```powershell
param($User)

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

{% endcode %}

### Tokens de acceso delegados

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

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

{% code collapsedlinecount="10" %}

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

{% endcode %}

## Visualización de la información de notificaciones

Si no está seguro de qué información de notificaciones se envía a PowerShell Universal desde su proveedor de identidad, puede utilizar el botón View Claim Information en la página Secure > 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.
