Registro de aplicación OpenID Connect

Un registro de aplicación OpenID Connect de FoxIDs permite que una aplicación web, de página única o nativa autentique usuarios mediante FoxIDs y reciba tokens de ID y de acceso. La aplicación es el Relying Party (RP) y FoxIDs es el OpenID Provider (OP).

Registro de aplicación OpenID Connect de FoxIDs

Entre las principales capacidades de OpenID Connect se incluyen discovery, Authorization Code Flow, PKCE, secretos y claves de cliente, el endpoint UserInfo, el cierre de sesión iniciado por el RP y front-channel logout.

Configuración

En FoxIDs Control:

  1. Seleccione el entorno en el que debe registrarse la aplicación.
  2. Abra Applications y haga clic en Add application.
  3. Elija Web Application, Single Page Application o Native Application. Estas tres opciones de OpenID Connect se muestran sin activar Show all options.
  4. Introduzca un nombre y una URI de redirección, revise la información generada de la aplicación y haga clic en Create.
  5. Copie cualquier secreto generado antes de cerrar el resultado de creación. Un secreto generado solo se muestra durante la creación.

Elegir un tipo de aplicación OpenID Connect

Después de crearla, haga clic en Change application para revisar o modificar toda la configuración. La tarjeta del tipo de aplicación proporciona una configuración inicial adecuada; el cliente OpenID Connect resultante puede ajustarse posteriormente.

Aplicación web (cliente confidencial)

Elija Web Application para una aplicación que se ejecute en un servidor, como una aplicación ASP.NET Core, Node.js, Java o PHP. Se crea como cliente confidencial con:

  • Authorization Code Flow con el response type code.
  • Un secreto de cliente generado.
  • PKCE desactivado de forma predeterminada. Active Require PKCE después de la creación cuando la aplicación admita PKCE. Se recomienda como protección adicional del código de autorización.

Introduzca la URL base o de callback de la aplicación como Redirect URI. Active Show advanced durante la creación solo si necesita elegir el ID de cliente o configurar la coincidencia exacta de la URL de redirección.

Crear una aplicación web OpenID Connect

Aplicación de página única (cliente público)

Elija Single Page Application para una aplicación que se ejecute en el navegador, como React, Angular, Vue o Blazor WebAssembly. Se crea como cliente público con:

  • Authorization Code Flow con el response type code.
  • PKCE activado de forma predeterminada.
  • Sin secreto de cliente.
  • El origen de la URL de redirección añadido como origen CORS permitido.

Crear una aplicación de página única OpenID Connect con PKCE

Aplicación nativa (cliente público)

Elija Native Application para una aplicación móvil o de escritorio instalada, como iOS, Android, React Native, .NET MAUI o Ionic. Se crea como cliente público con Authorization Code Flow, PKCE activado de forma predeterminada y sin secreto de cliente.

La URI de redirección puede usar un esquema específico de la aplicación, como myapp://callback, o una URI HTTPS compatible con la aplicación.

Crear una aplicación nativa OpenID Connect con PKCE

URI de redirección y valores absolutos

De forma predeterminada, Absolute URIs está desactivado para aplicaciones web y de página única. La URL de redirección configurada se trata entonces como un valor base y se aceptan las URL de redirección que comiencen por ese valor.

Active Show advanced y Absolute URIs si conoce la URL exacta de la aplicación a la que se debe redirigir al usuario después de iniciar sesión. Introduzca esa URL exacta como Redirect URI. La misma opción admite URI exactas específicas de aplicaciones nativas.

Después de la creación, las URI de redirección, la URI de redirección posterior al cierre de sesión y los orígenes CORS permitidos se pueden modificar en la pestaña OpenID Connect Client. Mantenga Show advanced desactivado salvo que la opción necesaria sea avanzada.

Implicit Flow

Implicit Flow se mantiene por compatibilidad, pero no se recomienda para aplicaciones nuevas. Es preferible Authorization Code Flow con PKCE.

Para configurar un cliente público existente para Implicit Flow, haga clic en Change application, active Show advanced, cambie Response types a token id_token u opcionalmente solo token y desactive Require PKCE. Los response types pueden modificarse en las mismas opciones avanzadas del cliente cuando se requiera otra combinación compatible.

Seleccionar los response types de token y token de ID para Implicit Flow

Endpoints de la aplicación y seguridad del cliente

La información de la aplicación en FoxIDs Control incluye la authority, el ID de cliente, el endpoint discovery, el endpoint authorize y el endpoint de token. Un documento discovery de OpenID Connect tiene esta forma:

https://foxids.com/tenant-x/environment-y/application-client1(*)/.well-known/openid-configuration

Una aplicación puede permitir el inicio de sesión mediante varios métodos de autenticación. Si un método de autenticación define perfiles, el método base y cada perfil pueden seleccionarse de forma independiente. Para seleccionar un método de autenticación en la URL de authority, añada su nombre al segmento de la aplicación:

https://foxids.com/tenant-x/environment-y/application-client1(login)/.well-known/openid-configuration

Durante el cierre de sesión iniciado por el RP, el nombre del método de autenticación puede omitirse cuando el token de ID se incluye en la solicitud.

Issuer específico de la aplicación

De forma predeterminada, los tokens emitidos para la aplicación usan el issuer del entorno:

https://foxids.com/tenant-x/environment-y/

Para que el issuer coincida con la authority de la aplicación, haga clic en Change application, active Show advanced y habilite Use matching issuer and authority with application specific issuer. El issuer pasa a ser:

https://foxids.com/tenant-x/environment-y/application-client1(*)

Activar un issuer OpenID Connect específico de la aplicación

El issuer específico de la aplicación cambia cuando cambian los métodos de autenticación seleccionados en la URL de authority. Para las API, el issuer depende por tanto de la aplicación que realiza la llamada. Token exchange solo es posible entre configuraciones con métodos de autenticación correspondientes.

Seguridad del cliente

Los clientes públicos, incluidas las aplicaciones de página única y nativas, no pueden almacenar credenciales de cliente de forma segura. Configúrelos sin secreto de cliente y use Authorization Code Flow con PKCE.

Los clientes confidenciales se autentican en el endpoint de token. El método predeterminado de autenticación de cliente es client secret post. Active Show advanced para cambiarlo a client secret basic o private key JWT. PKCE también se recomienda cuando el cliente confidencial lo admita. Si se configuran tanto PKCE como un secreto o una clave de cliente, FoxIDs valida ambos.

El método de autenticación de cliente none es compatible con PKCE. Se pueden configurar hasta 10 secretos y 4 claves para un cliente. Almacene los secretos de cliente y las claves privadas de forma segura y rótelos cuando sea necesario.

FoxIDs establece una sesión cuando el usuario se autentica e incluye su ID de sesión en el token de ID. La sesión se invalida al cerrar sesión. Según la configuración del cliente y si la solicitud de cierre de sesión contiene un token de ID, FoxIDs puede mostrar un cuadro de confirmación de cierre de sesión.

Cliente y API

Un registro de aplicación OpenID Connect puede contener tanto el cliente como su recurso OAuth 2.0. El ID de cliente es entonces también el nombre del recurso de API.

El siguiente ejemplo configura oidc-web-app como cliente OpenID Connect y API:

  1. Haga clic en Change application y active Show advanced.
  2. Cambie el tipo de registro de aplicación a OpenID Connect Client and OAuth 2.0 Resource.
  3. En la pestaña OpenID Connect Client, mantenga seleccionado Default resource 'oidc-web-app' for the application itself.
  4. Añada los scopes read y write debajo del recurso predeterminado.

Configurar scopes bajo el recurso predeterminado en un cliente OpenID Connect

En la pestaña OAuth 2.0 Resource, defina los mismos scopes read y write que expone la API.

Configurar scopes de API en el mismo registro de aplicación OpenID Connect

Recurso y scopes

Una API puede registrarse por separado como recurso OAuth 2.0. En este ejemplo, el cliente oidc-web-app llama a una Orders API independiente con el nombre de recurso orders-api.

En la pestaña OpenID Connect Client del cliente:

  1. Desmarque Default resource 'oidc-web-app' for the application itself, porque este cliente no actúa como su propia API.
  2. Añada el recurso orders-api.
  3. Añada los scopes read y write bajo ese recurso.

Los valores completos de scope solicitados por el cliente son orders-api:read y orders-api:write.

Configurar un cliente OpenID Connect para solicitar scopes de una API independiente

En el registro de la Orders API, defina read y write en la pestaña OAuth 2.0 Resource.

Configurar scopes en un recurso de API OAuth 2.0 independiente

Los scopes solicitados por un cliente se validan con los scopes configurados en la API. Si el cliente y la API están en el mismo registro de aplicación, los scopes añadidos bajo el recurso predeterminado del cliente se añaden automáticamente al recurso.

De forma predeterminada, el ID de cliente es la audience tanto del token de ID como del token de acceso. Los scopes de recursos configurados añaden audiences de API al token de acceso, y un token de acceso puede dirigirse a varios recursos de API.

Scopes y claims

Los scopes de OpenID Connect se configuran en la pestaña OpenID Connect Client. Los scopes predeterminados offline_access, profile, email, address y phone se pueden modificar o eliminar. Para cada scope, Voluntary claims controla qué claims se emiten cuando el cliente solicita ese scope.

Configurar scopes de OpenID Connect y claims voluntarios

Active Show advanced para configurar Issue claims. Añada un claim específico o añada * para emitir todos los claims disponibles en el token de acceso. Mantenga Include in ID token desactivado para *; de lo contrario, todos los claims disponibles se copian en el token de ID, lo que puede hacerlo excesivamente grande y causar problemas en los flows donde el token de ID se envía durante el cierre de sesión.

Emitir todos los claims disponibles sin incluirlos todos en el token de ID

También puede añadir un claim a Voluntary claims de un scope y solicitar ese scope desde la aplicación. Los claims individuales pueden incluirse en el token de ID cuando la aplicación los necesite allí. Los claims también pueden modificarse con transformaciones y tareas de claims.

Duración de los tokens

Haga clic en Change application y active Show advanced para configurar las duraciones del código de autorización, el token de ID, el token de acceso y el refresh token.

Configurar las duraciones de los tokens OpenID Connect

En este ejemplo, cada refresh token es válido durante 36 000 segundos. La aplicación puede seguir renovando la sesión hasta alcanzar la duración absoluta del refresh token de 86 400 segundos.

Requerir autenticación multifactor (MFA)

Un cliente OpenID Connect puede requerir MFA incluyendo urn:foxids:mfa en el parámetro acr_values. Se puede combinar con valores más específicos, como urn:foxids:link. Consulte solicitar MFA desde aplicaciones.

El parámetro acr_values se puede establecer en el evento OnRedirectToIdentityProvider de Startup.cs:

options.Events.OnRedirectToIdentityProvider = (context) =>
{
    context.ProtocolMessage.AcrValues = "urn:foxids:mfa";
    return Task.FromResult(string.Empty);
};

Consulte AspNetCoreOidcAuthorizationCodeSample y su configuración de Startup.cs.

Guías prácticas

Tu privacidad

Tu privacidad

Usamos cookies para mejorar tu experiencia en nuestros sitios web. Haz clic en «Aceptar todas las cookies» para aceptar su uso. Para rechazar cookies no esenciales, haz clic en «Solo cookies necesarias».

Visita nuestra política de privacidad para saber más