• +45 4949 9091
  • Suporte
  • Idiomas
    • Idiomas
    • English
    • Dansk
    • Svenska
    • Norsk
    • Deutsch
    • Nederlands
    • Polski
    • Français
    • Español
    • Italiano
    • Português
  • Registar-se
  • Iniciar sessão
Logótipo FoxIDs
  • Docs e ferramentas
    • Documentação
    • Artigos
    • Ferramenta JWT
    • Ferramenta SAML 2.0
    • Ferramenta de certificados
  • Casos de uso
    • Visão geral
    • Clientes
    • Colaboradores
    • Parceiros
    • Histórias de clientes
  • Serviços
  • Plataforma
    • Implementação
    • Multi-tenant
    • Lógica de identidade
    • Conformidade
  • Preços
  • Registar-se
  • Iniciar sessão

ITfoxtec Identity Blazor WebAssembly OpenID Connect

ITfoxtec Identity Blazor WebAssembly OpenID Connect é uma biblioteca OpenID Connect PKCE sem JavaScript para Blazor WebAssembly.

A biblioteca suporta login e logout com OpenID Connect usando PKCE em vez de um client secret. Valida tokens ID no browser usando o documento de discovery do OpenID Provider.

O componente lida automaticamente com atualizações de token e sessão com refresh tokens quando o scope offline_access é especificado.

O nome da empresa ITfoxtec mudou para FoxIDs mas os componentes manterão o nome ITfoxtec como parte do nome do componente por agora.

Suporte

Faça perguntas no Stack Overflow e marque com 'itfoxtec-identity-blazor'.

Email support@foxids.com com um link para a sua pergunta.

Pacote

Lançamentos NuGet ITfoxtec Identity Blazor WebAssembly OpenID Connect

Código e licença

Código GitHub e exemplo Licença open source

Aplicação de exemplo

Consulte a aplicação de exemplo.

A aplicação de exemplo está configurada para autenticar com foxids.com usando o utilizador de teste test1@foxids.com ou test2@foxids.com e palavra-passe TestAccess!

Para mais informações sobre os serviços de identidade europeus FoxIDs, consulte a documentação FoxIDs.

Versões .NET suportadas:

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

Configuração do IdP

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

Chamadas de API para outro domínio

A configuração pode ser expandida para suportar chamadas de API para domínios diferentes do domínio base. Os AuthorizedUris confiáveis na configuração IdentitySettings são configurados no AccessTokenMessageHandler.

Adicione domínios confiáveis como AuthorizedUris na configuração IdentitySettings.

Quando FoxIDs é relevante

Utilize a biblioteca open source Blazor quando precisar de um cliente OpenID Connect sem JavaScript na sua aplicação WebAssembly. FoxIDs é relevante quando também precisa de um fornecedor de identidade alojado, gestão de utilizadores, federação e suporte de produção em torno do fluxo do cliente.

  • Combine o cliente Blazor com um fornecedor gerido de OpenID Connect
  • Adicione fornecedores de login externos, jornadas do utilizador e proteção de API
  • Obtenha orientação de arquitetura, operações e suporte técnico pago
Documentação FoxIDs Fale com um especialista Comece gratuitamente

Pode usar a ferramenta JWT para descodificar tokens e criar certificados auto assinados com a ferramenta de certificados.

Aplicação de exemplo

Consulte a aplicação de exemplo para detalhes de implementação.

Instalar

Instale o pacote NuGet ITfoxtec.Identity.BlazorWebAssembly.OpenidConnect através do gestor de pacotes do Visual Studio.

Ou instale via PowerShell usando o seguinte comando.

Install-Package ITfoxtec.Identity.BlazorWebAssembly.OpenidConnect

Ou via CLI.

dotnet add package ITfoxtec.Identity.BlazorWebAssembly.OpenidConnect

Configuração e setup

Registe o OpenidConnectPkce, o HttpClient e o IHttpClientFactory no ficheiro 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);
    });
}

Adicione appsettings.json e possíveis ficheiros appsettings.Development.json em wwwroot com a configuração IdentitySettings. O scope é adicionado como uma lista de valores separados por espaços.

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

Adicione o namespace da biblioteca @using ITfoxtec.Identity.BlazorWebAssembly.OpenidConnect a Imports.razor.

Chamadas de API para outro domínio

A configuração pode ser expandida para suportar chamadas de API para domínios diferentes do domínio base. Os AuthorizedUris confiáveis na configuração IdentitySettings são configurados no 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);
    });
}

Adicione domínios confiáveis como AuthorizedUris na configuração IdentitySettings.

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

Validação periódica do token de acesso

Defina SessionValidationIntervalSeconds em IdentitySettings (predefinido 300; defina 0 para desativar). Quando ativado, OidcAuthenticationStateProvider chama periodicamente o endpoint UserInfo através de OidcHelper.ValidateAccessTokenWithUserInfoEndpoint. Se a validação falhar, o provider limpa a sessão e dispara o evento de logout para que a UI possa pedir ao utilizador para iniciar sessão novamente.

Adicionar página de callback

Adicione uma página de callback Authentication.razor na pasta Pages com o seguinte conteúdo.

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

Autorizar vistas

Atualize App.razor para incluir AuthorizeRouteView/NotAuthorized com o elemento OidcRedirectToLogin. OidcRedirectToLogin inicia o fluxo de login se o utilizador não tiver acesso.

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

Desta forma, tanto o atributo Authorize como o AuthorizeView são suportados.

Menu de login/logout

Adicione o LoginDisplay.razor com um menu de login/logout com o seguinte conteúdo.

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

O LoginDisplay pode ser adicionado ao MainLayout.razor desta forma.

@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>
Logótipo FoxIDs

Desenvolvido na Dinamarca. Alojado na Europa.

Programadores

  • Documentação
  • Artigos
  • Lançamentos
  • Estado do Cloud

Produto

  • Preços
  • Serviços
  • Implementação
  • Conformidade
  • Centro de confiança

Empresa

  • Sobre
  • Fornecedor SKI
  • Contacte-nos

Jurídico

  • Termos de serviço
  • Termos de autoalojamento
  • RGPD e Acordo de Proteção de Dados
  • Política de privacidade e cookies
© 2026 FoxIDs, versão 2.15.13
GitHub LinkedIn

Preferências de cookies

A FoxIDs utiliza cookies necessários para o funcionamento do site. Selecione Aceitar todos para permitir também cookies analíticos que nos ajudam a compreender e melhorar a utilização do site, ou Rejeitar todos para utilizar apenas cookies necessários. Pode alterar a sua escolha a qualquer momento na nossa Política de Privacidade e Cookies.

Ler a Política de Privacidade e Cookies