• +45 4949 9091
  • Support
  • Språk
    • Språk
    • English
    • Dansk
    • Svenska
    • Norsk
    • Deutsch
    • Nederlands
    • Polski
    • Français
    • Español
    • Italiano
    • Português
  • Registrera
  • Logga in
FoxIDs logotyp
  • Docs & verktyg
    • Dokumentation
    • Artiklar
    • JWT-verktyg
    • SAML 2.0-verktyg
    • Certifikatverktyg
  • Användningsfall
    • Översikt
    • Kunder
    • Medarbetare
    • Partner
    • Kundberättelser
  • Tjänster
  • Plattform
    • Driftsättning
    • Multi-tenant
    • Identitetslogik
    • Efterlevnad
  • Priser
  • Registrera
  • Logga in

ITfoxtec Identity Blazor WebAssembly OpenID Connect

ITfoxtec Identity Blazor WebAssembly OpenID Connect är ett JavaScript fri OpenID Connect PKCE bibliotek för Blazor WebAssembly.

Biblioteket stödjer login och logout med OpenID Connect med PKCE istället för en client secret. Det validerar ID tokens i webbläsaren med OpenID Provider discovery dokumentet.

Komponenten hanterar automatiskt token och session uppdateringar med refresh tokens när offline_access scopet är angivet.

Företagsnamnet ITfoxtec har ändrats till FoxIDs men komponenterna kommer tills vidare att behålla ITfoxtec namnet som en del av komponentnamnet.

Support

Ställ frågor på Stack Overflow och tagga med 'itfoxtec-identity-blazor'.

Skicka e-post till support@foxids.com med en länk till din fråga.

Paket

Utgåvor NuGet ITfoxtec Identity Blazor WebAssembly OpenID Connect

Kod och licens

GitHub kod och exempel Öppen källkodslicens

Sample application

Se sample application.

Sample applikationen är konfigurerad att autentisera med foxids.com med testanvändare test1@foxids.com eller test2@foxids.com och lösenord TestAccess!

För mer information om European Identity Services FoxIDs, se FoxIDs dokumentation.

Stödda .NET versioner:

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

IdP konfiguration

  • Response typer: code
  • Aktivera PKCE: true
  • Login call back: ...base URL.../authentication/login_callback
  • Logout call back: ...base URL.../authentication/logout_callback

API anrop till en annan domän

Konfigurationen kan utökas för att stödja API anrop till andra domäner än basdomänen. De betrodda AuthorizedUris i IdentitySettings konfigurationen konfigureras på AccessTokenMessageHandler.

Lägg till betrodda domäner som AuthorizedUris i IdentitySettings konfigurationen.

När FoxIDs är relevant

Använd open source Blazor biblioteket när du behöver en JavaScript fri OpenID Connect klient i din WebAssembly app. FoxIDs är relevant när du också behöver en hostad identitetsleverantör, användarhantering, federation och produktionssupport runt klientflödet.

  • Kombinera Blazor klienten med en hanterad OpenID Connect leverantör
  • Lägg till externa inloggningsleverantörer, användarresor och API skydd
  • Få arkitekturrådgivning, drift och betald teknisk support
FoxIDs dokumentation Prata med en expert Kom igång gratis

Du kan använda JWT verktyget för att avkoda tokens och skapa självsignerade certifikat med certifikatverktyget.

Sample application

Se sample application för implementationsdetaljer.

Installera

Installera ITfoxtec.Identity.BlazorWebAssembly.OpenidConnect NuGet paketet via Visual Studio paket hanteraren.

Eller installera via PowerShell med följande kommando.

Install-Package ITfoxtec.Identity.BlazorWebAssembly.OpenidConnect

Eller via CLI.

dotnet add package ITfoxtec.Identity.BlazorWebAssembly.OpenidConnect

Setup och konfiguration

Registrera OpenidConnectPkce, HttpClient och IHttpClientFactory i Program.cs filen.

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);
    });
}

Lägg till appsettings.json och eventuella appsettings.Development.json konfigurationsfiler under wwwroot med IdentitySettings konfigurationen. Scopet läggs till som en space separerad lista av värden.

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

Lägg till bibliotekets namespace @using ITfoxtec.Identity.BlazorWebAssembly.OpenidConnect till Imports.razor.

API anrop till en annan domän

Konfigurationen kan utökas för att stödja API anrop till andra domäner än basdomänen. De betrodda AuthorizedUris i IdentitySettings konfigurationen konfigureras på 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);
    });
}

Lägg till betrodda domäner som AuthorizedUris i IdentitySettings konfigurationen.

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

Periodisk access token validering

Ange SessionValidationIntervalSeconds i IdentitySettings (standard är 300; sätt till 0 för att inaktivera). När det är aktiverat, OidcAuthenticationStateProvider anropar periodiskt UserInfo endpointet via OidcHelper.ValidateAccessTokenWithUserInfoEndpoint. Om valideringen misslyckas rensar providern sessionen och triggar logout händelsen så att UI kan be användaren att logga in igen.

Lägg till call back sida

Lägg till en Authentication.razor call back sida i Pages mappen med följande innehåll.

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

Authorize views

Uppdatera App.razor för att inkludera AuthorizeRouteView/NotAuthorized med OidcRedirectToLogin elementet. OidcRedirectToLogin startar login flödet om användaren inte har åtkomst.

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

Därmed stöds både Authorize attributet och AuthorizeView.

Login / logout meny

Lägg till LoginDisplay.razor med en login / logout meny med följande innehåll.

@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 kan läggas till i MainLayout.razor så här.

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

Utvecklad i Danmark. Hostad i Europa.

Utvecklare

  • Dokumentation
  • Artiklar
  • Utgåvor
  • Molnstatus

Produkt

  • Priser
  • Tjänster
  • Driftsättning
  • Efterlevnad
  • Förtroendecenter

Företag

  • Om
  • SKI-leverantör
  • Kontakta oss

Juridik

  • Användarvillkor
  • Villkor för självhostning
  • GDPR och dataskyddsavtal
  • Integritets- och cookiepolicy
© 2026 FoxIDs, version 2.15.13
GitHub LinkedIn

Cookieval

FoxIDs använder nödvändiga cookies för att webbplatsen ska fungera. Välj Acceptera alla för att även tillåta statistikcookies som hjälper oss att förstå och förbättra webbplatsen, eller Avvisa alla för att endast använda nödvändiga cookies. Du kan när som helst ändra ditt val i vår integritets- och cookiepolicy.

Läs integritets- och cookiepolicyn