Exemplos .NET

Os exemplos .NET do FoxIDs mostram:

  • Login e logout de utilizadores com OpenID Connect 1.0, SAML 2.0 e WS-Federation
  • Client credential grant com secret e certificado
  • Chamadas API protegidas com OAuth 2.0
  • Token exchange de access token para access token e de SAML 2.0 para access token

Encontre o código-fonte dos exemplos no repositório FoxIDs.Samples.

Os exemplos estão pré-configurados no tenant de teste online test-corp do FoxIDs e podem ser executados imediatamente localmente no Visual Studio nas portas localhost pré-configuradas.

Veja a configuração de teste FoxIDs no FoxIDs Control: https://control.foxids.com/test-corp
Obtenha acesso de leitura com o utilizador reader@foxids.com e a password gEh#V6kSw

Em alternativa, pode configurar os exemplos no seu ambiente FoxIDs.

Índice de exemplos

Pode usar a ferramenta JWT e a ferramenta SAML 2.0 para descodificar tokens e criar certificados self-signed com a ferramenta de certificados.

Aplicações de exemplo

Os exemplos mostram diferentes aplicações que confiam no FoxIDs como IdP.

AspNetCoreOidcAuthCodeAllUpPartiesSample

Aplicação de exemplo (code link) que mostra login e logout de utilizadores com OpenID Connect (OIDC) usando authorization code flow como service provider e pedindo login por todos os métodos de autenticação.

Pode testar este exemplo online.

Este exemplo é um bom ponto de partida!

Os possíveis métodos de autenticação são configurados no registo da aplicação como allowed authentication methods. Pode ser configurado de um a muitos métodos de autenticação permitidos. Todos os métodos de autenticação configurados são selecionados com uma estrela em vez do nome do método de autenticação.

Suporta login/logout com a página de login do FoxIDs, Identity Server, exemplo de IdP SAML 2.0 e todos os outros métodos de autenticação.

Chamadas API:

  • Mostra como chamar o exemplo API1 protegido com um access token.
  • Mostra como chamar o exemplo API1 protegido com um access token que, por sua vez, chama o exemplo API2 usando token exchange dentro da API1.
  • Mostra como obter um access token por token exchange; o cliente usa o método de autenticação client client_secret_post. Depois chama o exemplo API2 protegido com o access token obtido.

Domínio e porta de desenvolvimento local: https://localhost:44349

AspNetCoreOidcAuthorizationCodeSample

Aplicação de exemplo (code link) que mostra login e logout de utilizadores com OpenID Connect (OIDC) usando authorization code flow como service provider.

Suporta login/logout com a página de login do FoxIDs, Identity Server, exemplo de IdP SAML 2.0 e, se configurado, AD FS usando SAML 2.0.

Mostra como chamar o exemplo API1 protegido com um access token.

Domínio e porta de desenvolvimento local: https://localhost:44340

AspNetCoreOidcImplicitSample

Aplicação de exemplo (code link) que mostra login e logout de utilizadores com OpenID Connect (OIDC) usando implicit flow como service provider.

Suporta login/logout com a página de login do FoxIDs, Identity Server, exemplo de IdP SAML 2.0 e, se configurado, AD FS usando SAML 2.0.

Domínio e porta de desenvolvimento local: https://localhost:44341

AspNetCoreSamlSample

Aplicação de exemplo (code link) que mostra login e logout de utilizadores com SAML 2.0 como relying party.

Suporta login/logout com a página de login do FoxIDs, Identity Server, exemplo de IdP SAML 2.0 e, se configurado, AD FS usando SAML 2.0.

Mostra como obter um access token de um token bearer SAML 2.0 através de token exchange; o cliente usa o método de autenticação client private_key_jwt com certificado. Depois chama o exemplo API1 protegido com o access token obtido.

Domínio e porta de desenvolvimento local: https://localhost:44343

AspNetCoreWsFedSample

Aplicação de exemplo (code link) que mostra login e logout de utilizadores com WS-Federation como relying party.

O exemplo pode ser configurado como um registo de aplicação WS-Federation no FoxIDs. Mostra o realm, reply URL, sign-out cleanup URL, logged out URL e Federation Metadata URL necessários para configurar a aplicação.

Suporta login/logout com a página de login do FoxIDs e outros métodos de autenticação configurados no registo de aplicação.

Domínio e porta de desenvolvimento local: https://localhost:44358

NetCoreClientCredentialGrantConsoleSample

Aplicação de consola de exemplo (code link) que mostra autenticação de cliente com OAuth 2.0 Client Credentials Grant usando um secret, isto é, o método de autenticação client client_secret_post.

Mostra como chamar o exemplo API1 e o exemplo de API com dois IdPs protegidos com um access token.

NetCoreClientCredentialGrantAssertionConsoleSample

Aplicação de consola de exemplo (code link) que mostra autenticação de cliente com OAuth 2.0 Client Credentials Grant usando um certificado, isto é, o método de autenticação client private_key_jwt.

Mostra como chamar o exemplo API1 e o exemplo de API com dois IdPs protegidos com um access token.

NetFramework4.7ClientCredentialGrantAssertionConsoleSample

Aplicação de consola .NET Framework 4.7 de exemplo (code link) que mostra autenticação de cliente com OAuth 2.0 Client Credentials Grant usando um certificado, isto é, o método de autenticação client private_key_jwt.

Mostra como chamar o exemplo API1 e o exemplo de API com dois IdPs protegidos com um access token.

BlazorBFFAspNetCoreOidcSample

Aplicação de exemplo (code link client e server) que mostra login e logout de utilizadores com OpenID Connect (OIDC) usando authorization code flow numa aplicação Blazor BFF (Backend For Frontend) com backend ASP.NET Core.
Numa arquitetura BFF, o backend trata do OIDC, os tokens nunca são partilhados com o cliente Blazor. Em vez disso, uma sessão baseada num identity cookie protege a aplicação depois de a autenticação do utilizador ser bem-sucedida.

O exemplo mostra como chamar o exemplo API1 tanto a partir do cliente Blazor através de um proxy API no backend que adiciona o access token à chamada API de saída.

Domínio e porta de desenvolvimento local: https://localhost:44348

BlazorOidcPkceSample

Exemplo Blazor (code link) que mostra login e logout de utilizadores com OpenID Connect (OIDC) usando authorization code flow e PKCE como service provider.

Mostra como chamar o exemplo API1 protegido com um access token.

Domínio e porta de desenvolvimento local: https://localhost:44345

BlazorServerOidcSample

Exemplo Blazor server (code link) que mostra login e logout de utilizadores com OpenID Connect (OIDC) usando authorization code flow como service provider.

Mostra como chamar o exemplo API1 protegido com um access token.

Domínio e porta de desenvolvimento local: https://localhost:44347

AspNetCoreApi1Sample

Exemplo API (code link) que mostra como proteger uma API com um access token e como restringir acesso por scopes.

Pode chamar este exemplo online.

A API chama o exemplo API2 protegido com um access token obtido através de token exchange onde o cliente usa o método de autenticação client private_key_jwt com certificado.

Domínio e porta de desenvolvimento local: https://localhost:44344

AspNetCoreApi2Sample

Exemplo API (code link) que mostra como proteger uma API com um access token e como restringir acesso por um scope.

Pode chamar este exemplo online.

Domínio e porta de desenvolvimento local: https://localhost:44351

AspNetCoreApiOAuthTwoIdPsSample

Exemplo API (code link) que mostra como criar uma API que pode aceitar access tokens de dois IdPs diferentes. Cada relação IdP - API pode ser configurada com resource IDs e scopes individuais.

Este cenário ocorre com maior frequência num período de transição ao mudar de um IdP para outro. Tendo APIs com suporte dual de IdP, os clientes podem ser movidos de um IdP para outro independentemente das APIs.

A API de exemplo pode ser chamada ao descomentar código nos exemplos NetCoreClientCredentialGrantConsoleSample ou NetCoreClientCredentialGrantAssertionConsoleSample.

Domínio e porta de desenvolvimento local: https://localhost:44350

Exemplos de métodos de autenticação

Os exemplos de métodos de autenticação mostram diferentes IdPs ligados ao FoxIDs, onde o FoxIDs confia nos IdPs de exemplo.

AspNetCoreSamlIdPSample

Aplicação de exemplo (code link) que implementa um identity provider (IdP) SAML 2.0 ligado como método de autenticação SAML 2.0 no FoxIDs. O exemplo também mostra como fazer login IdP-Initiated.

Pode testar este exemplo online.

Domínio e porta de desenvolvimento local: https://localhost:44342

IdentityServerOidcOpSample

Identity Server (code link) que implementa OpenID Connect (OIDC) expondo um OpenID Provider (OP) / identity provider (IdP) ligado como método de autenticação OpenID Connect no FoxIDs.

Domínio e porta de desenvolvimento local: https://localhost:44346

DirectoryConnectorApiSample

Aplicação de exemplo (code link) que implementa uma Directory Connector API que valida palavras-passe e delega operações do ciclo de vida das palavras-passe para um diretório externo.

Domínio e porta de desenvolvimento local: https://localhost:44356

ExternalLoginApiSample

External login está obsoleto e será descontinuado. Use Directory Connector para validação externa de palavras-passe.

Aplicação de exemplo (code link) que implementa uma external login API ligada como método de autenticação external login no FoxIDs.

Domínio e porta de desenvolvimento local: https://localhost:44352

ExternalClaimsApiSample

Aplicação de exemplo (code link) que implementa uma external claims API que pode ser configurada e chamada a partir de uma claims transform. A external claims API pode depois adicionar claims externos aos claims emitidos.

Domínio e porta de desenvolvimento local: https://localhost:44353

ExternalExtendedUiApiSample

Aplicação de exemplo (code link) que implementa uma external extended UI API que pode ser configurada e chamada para validar elementos UI dinâmicos e opcionalmente devolver claims adicionais.

Domínio e porta de desenvolvimento local: https://localhost:44354

ExternalPasswordApiSample

Aplicação de exemplo (code link) que implementa uma external password API ligada como external password API num ambiente FoxIDs.

Domínio e porta de desenvolvimento local: https://localhost:44355

FoxIDsControlApiSample

Aplicação de consola de exemplo (code link) que mostra como chamar a FoxIDs Control API.

Configurar exemplos num ambiente FoxIDs

Os exemplos podem ser configurados num ambiente FoxIDs com o sample seed tool ou manualmente através do FoxIDs Control Client.

O sample seed tool encontra-se na solução de exemplo: tools/SampleSeedTool.

Configurar o sample seed tool

O sample seed tool é configurado no ficheiro appsettings.json.

Adicione os endpoints do FoxIDs e da FoxIDs Control API à configuração do sample seed tool. Podem ser adicionados atualizando os nomes da instância https://foxids.com e https://control.foxids.com/api. Se estiver a executar o FoxIDs localmente no Visual Studio, os endpoints estão configurados para o localhost do FoxIDs https://localhost:44330/ e localhost da FoxIDs Control API https://localhost:44331/.

"SeedSettings": {
    "FoxIDsEndpoint": "https://foxids.com", 
    "FoxIDsConsolApiEndpoint": "https://control.foxids.com/api"
}

O acesso para criar a configuração de exemplo num ambiente é concedido no ambiente master. A configuração de exemplo não deve ser adicionada ao ambiente master.

Crie um cliente OAuth 2.0 para o sample seed tool no FoxIDs Control Client:

  1. Selecione o ambiente master e crie um registo de aplicação OAuth 2.0, clicando em OAuth 2.0 - Client Credentials Grant.
  2. Defina o client id como sample_seed.
  3. Guarde o client secret.
  4. Na secção resource and scopes, conceda ao cliente sample seed acesso ao recurso FoxIDs Control API foxids_control_api com o scope foxids:tenant.
  5. Clique em show advanced.
  6. Na secção issue claims, adicione um claim com o nome role e o valor foxids:tenant.admin. Isto concede ao cliente o papel de administrador.

O cliente sample seed tool fica assim com acesso para atualizar o tenant.

FoxIDs Control Client - sample_seed client

Crie um novo ambiente FoxIDs para as aplicações de exemplo ou selecione um ambiente existente.

Altere o tenant, o ambiente e o client secret do sample seed tool na configuração do sample seed tool.

"SeedSettings": {
  "Tenant": "xxx",
  "Track": "xxx",
  "DownParty": "sample_seed",
  "ClientSecret": "xxx"
}

Altere a configuração do tenant e do ambiente para todos os exemplos.

Executar o sample seed tool

Execute o executável do sample seed tool SampleSeedTool.exe ou execute diretamente o seed tool a partir do Visual Studio.

  • Prima 'c' para criar a configuração de exemplo
  • Prima 'd' para eliminar a configuração de exemplo

O sample seed tool irá criar e eliminar configurações para todos os exemplos.

As aplicações de exemplo requerem um método de autenticação login com o nome login, que trata do login do utilizador. É criado pelo sample seed tool se não existir. O método de autenticação login não é eliminado se a configuração de exemplo for eliminada.

A sua privacidade

A sua privacidade

Usamos cookies para melhorar a sua experiência nos nossos sites. Clique no botão 'Aceitar todos os cookies' para concordar com a utilização de cookies. Para recusar cookies não essenciais, clique em 'Apenas cookies necessários'.

Visite a nossa página de Política de Privacidade para saber mais