• +45 4949 9091
  • Soporte
  • Idiomas
    • Idiomas
    • English
    • Dansk
    • Svenska
    • Norsk
    • Deutsch
    • Nederlands
    • Polski
    • Français
    • Español
    • Italiano
    • Português
  • Registrarse
  • Iniciar sesión
Logo de FoxIDs
  • Plataforma
    • Despliegue
    • Multi-tenant
    • Lógica de identidad
    • Cumplimiento
  • Casos de uso
    • Resumen
    • Clientes
    • Empleados
    • Socios
    • Historias de clientes
  • Servicios
  • Precios
  • Docs y herramientas
    • Documentación
    • Artículos
    • Herramienta JWT
    • Herramienta SAML 2.0
    • Herramienta de certificados
  • Contáctanos
  • Registrarse
  • Iniciar sesión

ITfoxtec Identity Blazor WebAssembly OpenID Connect

ITfoxtec Identity Blazor WebAssembly OpenID Connect es una biblioteca OpenID Connect PKCE sin JavaScript para Blazor WebAssembly.

La biblioteca admite inicio y cierre de sesión con OpenID Connect usando PKCE en lugar de un secreto de cliente. Valida los tokens de identidad en el navegador usando el documento de descubrimiento del OpenID Provider.

El componente gestiona automáticamente las actualizaciones de token y sesión con refresh tokens cuando se especifica el scope offline_access.

El nombre de la empresa ITfoxtec ha cambiado a FoxIDs pero los componentes mantendrán el nombre ITfoxtec como parte del nombre del componente por ahora.

Soporte

Haz preguntas en Stack Overflow y etiqueta con « itfoxtec-identity-blazor ».

Envía un e-mail a support@foxids.com con un enlace a tu pregunta.

Paquete

Versiones NuGet ITfoxtec Identity Blazor WebAssembly OpenID Connect

Código y licencia

Código y ejemplo en GitHub Licencia de código abierto

Aplicación de ejemplo

Consulta la aplicación de ejemplo.

La aplicación de ejemplo está configurada para autenticarse con foxids.com usando el usuario de prueba test1@foxids.com o test2@foxids.com y la contraseña TestAccess!

Para más información sobre European Identity Services FoxIDs, consulta la documentación de FoxIDs.

Versiones .NET compatibles:

.NET 10.0 .NET 9.0 .NET 8.0 .NET 7.0 .NET 6.0 .NET 5.0

Configuración del IdP

  • Tipos de respuesta: code
  • Habilitar PKCE: true
  • Callback de login: ...base URL.../authentication/login_callback
  • Callback de logout: ...base URL.../authentication/logout_callback

Llamadas API a otro dominio

La configuración se puede ampliar para soportar llamadas API a dominios distintos del dominio base. Las AuthorizedUris de confianza en la configuración IdentitySettings se configuran en AccessTokenMessageHandler.

Agrega dominios de confianza como AuthorizedUris en la configuración IdentitySettings.

Cuándo FoxIDs es relevante

Usa la biblioteca open source de Blazor cuando necesites un cliente de OpenID Connect sin JavaScript en tu aplicación WebAssembly. FoxIDs es relevante cuando también necesitas un proveedor de identidad alojado, gestión de usuarios, federación y soporte de producción alrededor del flujo del cliente.

  • Combina el cliente de Blazor con un proveedor administrado de OpenID Connect
  • Añade proveedores de inicio de sesión externos, recorridos de usuario y protección de API
  • Obtén orientación de arquitectura, operaciones y soporte técnico de pago
Documentación de FoxIDs Habla con un experto Empieza gratis

Puedes usar la herramienta JWT para decodificar tokens y crear certificados autofirmados con la herramienta de certificados.

Aplicación de ejemplo

Consulta la aplicación de ejemplo para detalles de implementación.

Instalar

Instala el paquete NuGet ITfoxtec.Identity.BlazorWebAssembly.OpenidConnect mediante el administrador de paquetes de Visual Studio.

O instala vía PowerShell usando el siguiente comando.

Install-Package ITfoxtec.Identity.BlazorWebAssembly.OpenidConnect

O vía CLI.

dotnet add package ITfoxtec.Identity.BlazorWebAssembly.OpenidConnect

Configuración y ajustes

Registra OpenidConnectPkce, HttpClient y IHttpClientFactory en el archivo Program.cs.

private static void ConfigureServices(IServiceCollection services, WebAssemblyHostConfiguration configuration, IWebAssemblyHostEnvironment hostEnvironment)
{
    services.AddHttpClient("BlazorWebAssemblyOidcSample.API", client => client.BaseAddress = new Uri(hostEnvironment.BaseAddress))
        .AddHttpMessageHandler<AccessTokenMessageHandler>();

    services.AddTransient(sp => sp.GetRequiredService<IHttpClientFactory>().CreateClient("BlazorWebAssemblyOidcSample.API"));

    services.AddOpenidConnectPkce(settings =>
    {
        configuration.Bind("IdentitySettings", settings);
    });
}

Agrega appsettings.json y, si aplica, appsettings.Development.json bajo wwwroot con la configuración IdentitySettings. El scope se agrega como una lista de valores separados por espacios.

{
  "IdentitySettings": {
    "Authority": "https://...some authority.../",
    "ClientId": "...client id...",
    "Scope": "...some scope..."
  }
}

Agrega el espacio de nombres de la biblioteca @using ITfoxtec.Identity.BlazorWebAssembly.OpenidConnect a Imports.razor.

Llamadas API a otro dominio

La configuración se puede ampliar para soportar llamadas API a dominios distintos del dominio base. Las AuthorizedUris de confianza en la configuración IdentitySettings se configuran en AccessTokenMessageHandler.

private static void ConfigureServices(IServiceCollection services, WebAssemblyHostConfiguration configuration, IWebAssemblyHostEnvironment hostEnvironment)
{
    services.AddHttpClient("BlazorWebAssemblyOidcSample.API", client => client.BaseAddress = new Uri(hostEnvironment.BaseAddress))
        .AddHttpMessageHandler(sp =>
        {
            var handler = sp.GetService<AccessTokenMessageHandler>();
            configuration.Bind("IdentitySettings", handler);
            return handler;
        });

    services.AddTransient(sp => sp.GetRequiredService<IHttpClientFactory>().CreateClient("BlazorWebAssemblyOidcSample.API"));

    services.AddOpenidConnectPkce(settings =>
    {
        configuration.Bind("IdentitySettings", settings);
    });
}

Agrega dominios de confianza como AuthorizedUris en la configuración IdentitySettings.

{
  "IdentitySettings": {
    "Authority": "https://...some authority.../",
    "ClientId": "...client id...",
    "Scope": "...some scope...",
    "Resources": [ "...resource..." ],
    "AuthorizedUris": [ "...authorized api Uri..." ]
  }
}

Validación periódica del token de acceso

Establece SessionValidationIntervalSeconds en IdentitySettings (por defecto 300; establece 0 para desactivar). Cuando está habilitado, OidcAuthenticationStateProvider llama periódicamente al endpoint UserInfo mediante OidcHelper.ValidateAccessTokenWithUserInfoEndpoint. Si la validación falla, el proveedor limpia la sesión y dispara el evento de logout para que la UI pida al usuario volver a iniciar sesión.

Agregar página de callback

Agrega una página de callback Authentication.razor en la carpeta Pages con el siguiente contenido.

@page "/authentication/{action}"
@inherits AuthenticationPageBase

Vistas de autorización

Actualiza App.razor para incluir AuthorizeRouteView/NotAuthorized con el elemento OidcRedirectToLogin. OidcRedirectToLogin inicia el flujo de login si el usuario no tiene acceso.

<Router AppAssembly="@typeof(Program).Assembly">
    <Found Context="routeData">
        <AuthorizeRouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)">
            <NotAuthorized>
                <OidcRedirectToLogin />
            </NotAuthorized>
            <Authorizing>
                <h1>Authentication in progress</h1>
                <p>Only visible while authentication is in progress.</p>
            </Authorizing>
        </AuthorizeRouteView>
    </Found>
    <NotFound>
        <CascadingAuthenticationState>
            <LayoutView Layout="@typeof(MainLayout)">
                <h1>Sorry</h1>
                <p>Sorry, there's nothing at this address.</p>
            </LayoutView>
        </CascadingAuthenticationState>
    </NotFound>
</Router>

De este modo se admiten tanto el atributo Authorize como AuthorizeView.

Menú de login / logout

Agrega LoginDisplay.razor con un menú de login / logout con el siguiente contenido.

@inject OpenidConnectPkce oenidConnectPkce

<AuthorizeView>
    <Authorized>
        Hello, @context.User.Identity.Name!
        <button class="nav-link btn btn-link" @onclick="LogoutAsync">Logout</button>
    </Authorized>
    <NotAuthorized>
        <button class="nav-link btn btn-link" @onclick="LoginAsync">Login</button>
    </NotAuthorized>
</AuthorizeView>

@code{
    private async Task LoginAsync(MouseEventArgs args)
    {
        await oenidConnectPkce.LoginAsync();
    }

    private async Task LogoutAsync(MouseEventArgs args)
    {
        await oenidConnectPkce.LogoutAsync();
    }
}

LoginDisplay se puede añadir a MainLayout.razor así.

@inherits LayoutComponentBase

<div class="sidebar">
    <NavMenu />
</div>

<div class="main">
    <div class="top-row px-4">
        <LoginDisplay />
    </div>

    <div class="content px-4">
        @Body
    </div>
</div>
Logo de FoxIDs

Desarrollado en Dinamarca. Alojado en Europa.

Desarrolladores

  • Documentación
  • Artículos
  • Lanzamientos
  • Estado de Cloud

Producto

  • Precios
  • Servicios
  • Despliegue
  • Cumplimiento
  • Centro de confianza

Empresa

  • Acerca de
  • Proveedor SKI
  • Contáctanos

Legal

  • Términos del servicio
  • Términos de alojamiento propio
  • RGPD y acuerdo de protección de datos
  • Política de privacidad y cookies
© 2026 FoxIDs, versión 2.15.19
GitHub LinkedIn

Preferencias de cookies

FoxIDs utiliza cookies necesarias para que el sitio web funcione. Selecciona Aceptar todas para permitir también cookies analíticas que nos ayudan a comprender y mejorar el uso del sitio web, o Rechazar todas para utilizar únicamente las cookies necesarias. Puedes cambiar tu elección en cualquier momento en nuestra Política de privacidad y cookies.

Leer la Política de privacidad y cookies