• +45 4949 9091
  • Support
  • Langues
    • Langues
    • English
    • Dansk
    • Svenska
    • Norsk
    • Deutsch
    • Nederlands
    • Polski
    • Français
    • Español
    • Italiano
    • Português
  • S'inscrire
  • Se connecter
Logo FoxIDs
  • Plateforme
    • Déploiement
    • Multi-tenant
    • Logique d'identité
    • Conformité
  • Cas d'usage
    • Vue d'ensemble
    • Clients
    • Employés
    • Partenaires
    • Témoignages clients
  • Services
  • Tarifs
  • Docs et outils
    • Documentation
    • Articles
    • Outil JWT
    • Outil SAML 2.0
    • Outil de certificat
  • Nous contacter
  • S'inscrire
  • Se connecter

ITfoxtec Identity Blazor WebAssembly OpenID Connect

ITfoxtec Identity Blazor WebAssembly OpenID Connect est une bibliothèque OpenID Connect PKCE sans JavaScript pour Blazor WebAssembly.

La bibliothèque prend en charge la connexion et la déconnexion avec OpenID Connect en utilisant PKCE au lieu d'un secret client. Elle valide les jetons d'identité dans le navigateur à l'aide du document de découverte de l'OpenID Provider.

Le composant gère automatiquement les mises à jour de jetons et de sessions avec des refresh tokens lorsque le scope offline_access est spécifié.

Le nom de la société ITfoxtec a changé pour FoxIDs mais les composants conservent pour l'instant le nom ITfoxtec dans le nom du composant.

Support

Posez vos questions sur Stack Overflow et taguez avec « itfoxtec-identity-blazor ».

Envoyez un e-mail à support@foxids.com avec un lien vers votre question.

Package

Versions NuGet ITfoxtec Identity Blazor WebAssembly OpenID Connect

Code et licence

Code et exemple GitHub Licence open-source

Application d'exemple

Veuillez consulter l' application d'exemple.

L'application d'exemple est configurée pour s'authentifier avec foxids.com en utilisant l'utilisateur de test test1@foxids.com ou test2@foxids.com et le mot de passe TestAccess!

Pour plus d'informations sur les European Identity Services FoxIDs, veuillez consulter la documentation FoxIDs.

Versions .NET prises en charge :

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

Configuration IdP

  • Types de réponse : code
  • Activer PKCE : true
  • Callback de connexion : ...base URL.../authentication/login_callback
  • Callback de déconnexion : ...base URL.../authentication/logout_callback

Appels API vers un autre domaine

La configuration peut être étendue pour prendre en charge des appels API vers des domaines autres que le domaine de base. Les AuthorizedUris de confiance dans la configuration IdentitySettings sont configurées sur AccessTokenMessageHandler.

Ajoutez des domaines de confiance comme AuthorizedUris dans la configuration IdentitySettings.

Quand FoxIDs est pertinent

Utilisez la bibliothèque open source Blazor lorsque vous avez besoin d'un client OpenID Connect sans JavaScript dans votre application WebAssembly. FoxIDs est pertinent lorsque vous avez aussi besoin d'un fournisseur d'identité hébergé, de la gestion des utilisateurs, de la fédération et d'un support de production autour du flux client.

  • Associez le client Blazor à un fournisseur OpenID Connect géré
  • Ajoutez des fournisseurs de connexion externes, des parcours utilisateur et la protection des API
  • Obtenez des conseils d'architecture, de l'exploitation et un support technique payant
Documentation FoxIDs Parlez à un expert Commencer gratuitement

Vous pouvez utiliser l' outil JWT pour décoder les jetons et créer des certificats auto-signés avec l' outil de certificats.

Application d'exemple

Veuillez consulter l' application d'exemple pour les détails d'implémentation.

Installer

Installez le package NuGet ITfoxtec.Identity.BlazorWebAssembly.OpenidConnect via le gestionnaire de packages Visual Studio.

Ou installez via PowerShell en utilisant la commande suivante.

Install-Package ITfoxtec.Identity.BlazorWebAssembly.OpenidConnect

Ou via CLI.

dotnet add package ITfoxtec.Identity.BlazorWebAssembly.OpenidConnect

Configuration et paramétrage

Enregistrez OpenidConnectPkce, HttpClient et IHttpClientFactory dans le fichier 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);
    });
}

Ajoutez appsettings.json et éventuellement appsettings.Development.json sous wwwroot avec la configuration IdentitySettings. Le scope est ajouté comme une liste de valeurs séparées par des espaces.

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

Ajoutez l'espace de noms de la bibliothèque @using ITfoxtec.Identity.BlazorWebAssembly.OpenidConnect à Imports.razor.

Appels API vers un autre domaine

La configuration peut être étendue pour prendre en charge des appels API vers des domaines autres que le domaine de base. Les AuthorizedUris de confiance dans la configuration IdentitySettings sont configurées sur 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);
    });
}

Ajoutez des domaines de confiance comme AuthorizedUris dans la configuration IdentitySettings.

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

Validation périodique du jeton d'accès

Définissez SessionValidationIntervalSeconds dans IdentitySettings (par défaut à 300 ; mettez à 0 pour désactiver). Lorsque c'est activé, OidcAuthenticationStateProvider appelle périodiquement le point de terminaison UserInfo via OidcHelper.ValidateAccessTokenWithUserInfoEndpoint. En cas d'échec de validation, le fournisseur efface la session et déclenche l'événement de déconnexion afin que l'UI invite l'utilisateur à se reconnecter.

Ajouter une page de callback

Ajoutez une page de callback Authentication.razor dans le dossier Pages avec le contenu suivant.

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

Vues d'autorisation

Mettez à jour App.razor pour inclure AuthorizeRouteView/NotAuthorized avec l'élément OidcRedirectToLogin. OidcRedirectToLogin démarre le flux de connexion si l'utilisateur n'a pas accès.

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

Ainsi, l'attribut Authorize et AuthorizeView sont tous deux pris en charge.

Menu connexion / déconnexion

Ajoutez LoginDisplay.razor avec un menu connexion / déconnexion contenant le contenu suivant.

@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 peut être ajouté à MainLayout.razor comme ceci.

@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

Développé au Danemark. Hébergé en Europe.

Développeurs

  • Documentation
  • Articles
  • Versions
  • Statut Cloud

Produit

  • Tarifs
  • Services
  • Déploiement
  • Conformité
  • Centre de confiance

Entreprise

  • À propos
  • Fournisseur SKI
  • Nous contacter

Juridique

  • Conditions d'utilisation
  • Conditions d'auto-hébergement
  • RGPD et accord de protection des données
  • Politique de confidentialité et de cookies
© 2026 FoxIDs, version 2.15.19
GitHub LinkedIn

Choix des cookies

FoxIDs utilise des cookies nécessaires au fonctionnement du site. Sélectionnez Tout accepter pour autoriser également les cookies d’analyse qui nous aident à comprendre et à améliorer l’utilisation du site, ou Tout refuser pour utiliser uniquement les cookies nécessaires. Vous pouvez modifier votre choix à tout moment dans notre Politique de confidentialité et relative aux cookies.

Lire la Politique de confidentialité et relative aux cookies