• +45 4949 9091
  • Wsparcie
  • Języki
    • Języki
    • English
    • Dansk
    • Svenska
    • Norsk
    • Deutsch
    • Nederlands
    • Polski
    • Français
    • Español
    • Italiano
    • Português
  • Zarejestruj się
  • Zaloguj się
Logo FoxIDs
  • Platforma
    • Wdrożenie
    • Multi-tenant
    • Logika tożsamości
    • Zgodność
  • Przypadki użycia
    • Przegląd
    • Klienci
    • Pracownicy
    • Partnerzy
    • Historie klientów
  • Usługi
  • Cennik
  • Docs i narzędzia
    • Dokumentacja
    • Artykuły
    • Narzędzie JWT
    • Narzędzie SAML 2.0
    • Narzędzie certyfikatów
  • Skontaktuj się z nami
  • Zarejestruj się
  • Zaloguj się

ITfoxtec Identity Blazor WebAssembly OpenID Connect

ITfoxtec Identity Blazor WebAssembly OpenID Connect to bez-JavaScriptowa biblioteka OpenID Connect PKCE dla Blazor WebAssembly.

Biblioteka obsługuje logowanie i wylogowanie z OpenID Connect z użyciem PKCE zamiast client secret. Waliduje tokeny ID w przeglądarce, korzystając z dokumentu discovery dostawcy OpenID.

Komponent automatycznie obsługuje odświeżanie tokenów i sesji przy użyciu refresh tokenów, gdy zakres offline_access jest określony.

Nazwa firmy ITfoxtec została zmieniona na FoxIDs ale komponenty na razie zachowają nazwę ITfoxtec jako część nazwy komponentu.

Wsparcie

Zadaj pytania na Stack Overflow i oznacz tagiem 'itfoxtec-identity-blazor'.

E-mail support@foxids.com z linkiem do pytania.

Pakiet

Wydania NuGet ITfoxtec Identity Blazor WebAssembly OpenID Connect

Kod i licencja

Kod i sample na GitHub Licencja open-source

Przykładowa aplikacja

Proszę zobaczyć przykładową aplikację.

Przykładowa aplikacja jest skonfigurowana do uwierzytelniania z foxids.com używając testowego użytkownika test1@foxids.com lub test2@foxids.com i hasła TestAccess!

Aby dowiedzieć się więcej o European Identity Services FoxIDs, zobacz dokumentację FoxIDs.

Obsługiwane wersje .NET:

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

Konfiguracja IdP

  • Typy odpowiedzi: code
  • Włącz PKCE: true
  • Login callback: ...bazowy URL.../authentication/login_callback
  • Logout callback: ...bazowy URL.../authentication/logout_callback

Wywołania API do innej domeny

Konfigurację można rozszerzyć, aby obsługiwać wywołania API do domen innych niż domena bazowa. Zaufane AuthorizedUris w konfiguracji IdentitySettings są ustawiane na AccessTokenMessageHandler.

Dodaj zaufane domeny jako AuthorizedUris w konfiguracji IdentitySettings.

Kiedy FoxIDs jest odpowiedni

Użyj biblioteki open source Blazor, gdy potrzebujesz klienta OpenID Connect bez JavaScriptu w swojej aplikacji WebAssembly. FoxIDs jest odpowiedni, gdy potrzebujesz także hostowanego dostawcy tożsamości, zarządzania użytkownikami, federacji i wsparcia produkcyjnego wokół przepływu klienta.

  • Połącz klienta Blazor z zarządzanym dostawcą OpenID Connect
  • Dodaj zewnętrznych dostawców logowania, ścieżki użytkownika i ochronę API
  • Uzyskaj doradztwo architektoniczne, wsparcie operacyjne i płatne wsparcie techniczne
Dokumentacja FoxIDs Porozmawiaj z ekspertem Zacznij za darmo

Możesz użyć narzędzia JWT do dekodowania tokenów i tworzenia certyfikatów samopodpisanych za pomocą narzędzia certyfikatów.

Przykładowa aplikacja

Proszę zobaczyć przykładową aplikację w celu uzyskania szczegółów implementacji.

Instalacja

Zainstaluj pakiet NuGet ITfoxtec.Identity.BlazorWebAssembly.OpenidConnect przez menedżer pakietów Visual Studio.

Lub zainstaluj przez PowerShell, używając poniższego polecenia.

Install-Package ITfoxtec.Identity.BlazorWebAssembly.OpenidConnect

Lub przez CLI.

dotnet add package ITfoxtec.Identity.BlazorWebAssembly.OpenidConnect

Konfiguracja i ustawienia

Zarejestruj OpenidConnectPkce, HttpClient oraz IHttpClientFactory w pliku 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);
    });
}

Dodaj pliki konfiguracji appsettings.json i ewentualnie appsettings.Development.json w wwwroot z konfiguracją IdentitySettings. Zakres jest podawany jako lista wartości oddzielonych spacją.

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

Dodaj przestrzeń nazw biblioteki @using ITfoxtec.Identity.BlazorWebAssembly.OpenidConnect do Imports.razor.

Wywołania API do innej domeny

Konfigurację można rozszerzyć, aby obsługiwać wywołania API do domen innych niż domena bazowa. Zaufane AuthorizedUris w konfiguracji IdentitySettings są ustawiane na 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);
    });
}

Dodaj zaufane domeny jako AuthorizedUris w konfiguracji IdentitySettings.

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

Okresowa walidacja tokenu dostępu

Ustaw SessionValidationIntervalSeconds w IdentitySettings (domyślnie 300; ustaw 0, aby wyłączyć). Gdy włączone, OidcAuthenticationStateProvider okresowo wywołuje endpoint UserInfo przez OidcHelper.ValidateAccessTokenWithUserInfoEndpoint. Jeśli walidacja się nie powiedzie, dostawca czyści sesję i wywołuje zdarzenie wylogowania, aby UI mogło poprosić użytkownika o ponowne logowanie.

Dodaj stronę callback

Dodaj stronę Authentication.razor w folderze Pages z następującą zawartością.

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

Autoryzuj widoki

Zaktualizuj App.razor, aby uwzględnić AuthorizeRouteView/NotAuthorized z elementem OidcRedirectToLogin. OidcRedirectToLogin uruchamia logowanie, jeśli użytkownik nie ma dostępu.

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

W efekcie obsługiwane są zarówno atrybut Authorize, jak i AuthorizeView.

Menu logowania/wylogowania

Dodaj LoginDisplay.razor z menu logowania/wylogowania o następującej treści.

@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 można dodać do MainLayout.razor w ten sposób.

@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

Tworzone w Danii. Hostowane w Europie.

Programiści

  • Dokumentacja
  • Artykuły
  • Wydania
  • Status Cloud

Produkt

  • Cennik
  • Usługi
  • Wdrożenie
  • Zgodność
  • Centrum zaufania

Firma

  • O nas
  • Dostawca SKI
  • Skontaktuj się z nami

Informacje prawne

  • Warunki świadczenia usług
  • Warunki hostingu własnego
  • RODO i umowa powierzenia danych
  • Polityka prywatności i cookies
© 2026 FoxIDs, wersja 2.15.19
GitHub LinkedIn

Wybór plików cookie

FoxIDs używa niezbędnych plików cookie, aby witryna mogła działać. Wybierz Zaakceptuj wszystkie, aby zezwolić również na analityczne pliki cookie, które pomagają nam zrozumieć sposób korzystania z witryny i ją ulepszać, lub Odrzuć wszystkie, aby używać tylko niezbędnych plików cookie. Swój wybór możesz w każdej chwili zmienić w naszej Polityce prywatności i plików cookie.

Przeczytaj Politykę prywatności i plików cookie