• +45 4949 9091
  • Supporto
  • Lingue
    • Lingue
    • English
    • Dansk
    • Svenska
    • Norsk
    • Deutsch
    • Nederlands
    • Polski
    • Français
    • Español
    • Italiano
    • Português
  • Registrati
  • Accedi
Logo FoxIDs
  • Piattaforma
    • Distribuzione
    • Multi-tenant
    • Logica di identità
    • Conformità
  • Casi d'uso
    • Panoramica
    • Clienti
    • Dipendenti
    • Partner
    • Storie dei clienti
  • Servizi
  • Prezzi
  • Docs e strumenti
    • Documentazione
    • Articoli
    • Strumento JWT
    • Strumento SAML 2.0
    • Strumento certificati
  • Contattaci
  • Registrati
  • Accedi

ITfoxtec Identity Blazor WebAssembly OpenID Connect

ITfoxtec Identity Blazor WebAssembly OpenID Connect è una libreria OpenID Connect PKCE senza JavaScript per Blazor WebAssembly.

La libreria supporta login e logout con OpenID Connect usando PKCE invece di un client secret. Valida i token ID nel browser usando il documento di discovery dell'OpenID Provider.

Il componente gestisce automaticamente gli aggiornamenti di token e sessione con refresh token quando è specificato lo scope offline_access.

Il nome dell'azienda ITfoxtec è cambiato in FoxIDs ma i componenti manterranno per ora il nome ITfoxtec come parte del nome del componente.

Supporto

Fai domande su Stack Overflow e usa il tag 'itfoxtec-identity-blazor'.

Email support@foxids.com con un link alla tua domanda.

Pacchetto

Rilasci NuGet ITfoxtec Identity Blazor WebAssembly OpenID Connect

Codice e licenza

Codice GitHub e sample Licenza open source

Applicazione di esempio

Consulta la applicazione di esempio.

L'applicazione di esempio è configurata per autenticare con foxids.com usando l'utente di test test1@foxids.com o test2@foxids.com e password TestAccess!

Per maggiori informazioni sui servizi di identità europei FoxIDs, vedi la documentazione FoxIDs.

Versioni .NET supportate:

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

Configurazione IdP

  • Response types: code
  • Enable PKCE: true
  • Callback login: ...base URL.../authentication/login_callback
  • Callback logout: ...base URL.../authentication/logout_callback

Chiamate API verso un altro dominio

La configurazione può essere estesa per supportare chiamate API verso domini diversi dal dominio base. Gli AuthorizedUris attendibili nella configurazione IdentitySettings sono configurati su AccessTokenMessageHandler.

Aggiungi domini attendibili come AuthorizedUris nella configurazione IdentitySettings.

Quando FoxIDs è rilevante

Usa la libreria open source Blazor quando hai bisogno di un client OpenID Connect senza JavaScript nella tua app WebAssembly. FoxIDs è rilevante quando hai anche bisogno di un provider di identità ospitato, gestione utenti, federazione e supporto di produzione intorno al flusso client.

  • Abbina il client Blazor a un provider OpenID Connect gestito
  • Aggiungi provider di accesso esterni, percorsi utente e protezione API
  • Ottieni guida architetturale, operazioni e supporto tecnico a pagamento
Documentazione FoxIDs Parla con un esperto Inizia gratis

Puoi usare lo strumento JWT per decodificare i token e creare certificati auto firmati con lo strumento certificati.

Applicazione di esempio

Consulta la applicazione di esempio per i dettagli di implementazione.

Installazione

Installa il pacchetto NuGet ITfoxtec.Identity.BlazorWebAssembly.OpenidConnect tramite il gestore pacchetti di Visual Studio.

Oppure installa via PowerShell usando il comando seguente.

Install-Package ITfoxtec.Identity.BlazorWebAssembly.OpenidConnect

Oppure tramite CLI.

dotnet add package ITfoxtec.Identity.BlazorWebAssembly.OpenidConnect

Configurazione e setup

Registra OpenidConnectPkce, HttpClient e IHttpClientFactory nel file 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);
    });
}

Aggiungi appsettings.json e gli eventuali appsettings.Development.json sotto wwwroot con la configurazione IdentitySettings. Lo scope è aggiunto come elenco di valori separati da spazi.

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

Aggiungi lo spazio dei nomi della libreria @using ITfoxtec.Identity.BlazorWebAssembly.OpenidConnect a Imports.razor.

Chiamate API verso un altro dominio

La configurazione può essere estesa per supportare chiamate API verso domini diversi dal dominio base. Gli AuthorizedUris attendibili nella configurazione IdentitySettings sono configurati su 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);
    });
}

Aggiungi domini attendibili come AuthorizedUris nella configurazione IdentitySettings.

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

Validazione periodica del token di accesso

Imposta SessionValidationIntervalSeconds in IdentitySettings (predefinito 300; imposta 0 per disabilitare). Quando abilitato, OidcAuthenticationStateProvider chiama periodicamente l'endpoint UserInfo tramite OidcHelper.ValidateAccessTokenWithUserInfoEndpoint. Se la validazione fallisce, il provider cancella la sessione e genera l'evento di logout così la UI può chiedere all'utente di accedere di nuovo.

Aggiungi pagina di callback

Aggiungi una pagina di callback Authentication.razor nella cartella Pages con il seguente contenuto.

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

Autorizza le view

Aggiorna App.razor per includere AuthorizeRouteView/NotAuthorized con l'elemento OidcRedirectToLogin. OidcRedirectToLogin avvia il flusso di login se l'utente non ha accesso.

<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>

In questo modo sono supportati sia l'attributo Authorize sia AuthorizeView.

Menu login/logout

Aggiungi LoginDisplay.razor con un menu di login/logout con il seguente contenuto.

@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 può essere aggiunto a MainLayout.razor così.

@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 FoxIDs

Sviluppato in Danimarca. Ospitato in Europa.

Sviluppatori

  • Documentazione
  • Articoli
  • Rilasci
  • Stato di Cloud

Prodotto

  • Prezzi
  • Servizi
  • Distribuzione
  • Conformità
  • Centro di fiducia

Azienda

  • Informazioni
  • Fornitore SKI
  • Contattaci

Legale

  • Termini di servizio
  • Termini per auto-ospitato
  • Accordo sul trattamento dei dati e GDPR
  • Informativa privacy e cookie
© 2026 FoxIDs, versione 2.15.19
GitHub LinkedIn

Preferenze relative ai cookie

FoxIDs utilizza i cookie necessari per il funzionamento del sito. Seleziona Accetta tutti per consentire anche i cookie analitici che ci aiutano a comprendere e migliorare l’utilizzo del sito, oppure Rifiuta tutti per utilizzare solo i cookie necessari. Puoi modificare la tua scelta in qualsiasi momento nella nostra Informativa sulla privacy e sui cookie.

Leggi l’Informativa sulla privacy e sui cookie