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 utilizadorreader@foxids.come a passwordgEh#V6kSw
Em alternativa, pode configurar os exemplos no seu ambiente FoxIDs.
Índice de exemplos
ASP.NET Core - OpenID Connect - registo de aplicação
- AspNetCoreOidcAuthCodeAllUpPartiesSample (online) ← Bom ponto de partida!
- AspNetCoreOidcAuthorizationCodeSample
- AspNetCoreOidcImplicitSample
ASP.NET Core - SAML 2.0 - registo de aplicação
ASP.NET Core - WS-Federation - registo de aplicação
Blazor - OpenID Connect - registo de aplicação
App de consola - OAuth 2.0 Client credential grant - registo de aplicação
ASP.NET Core API - OAuth 2.0 - registo de aplicação
ASP.NET Core - OpenID Connect - método de autenticação
ASP.NET Core - SAML 2.0 - método de autenticação
ASP.NET Core - APIs externas
App de consola - FoxIDs Control API
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 ambientemaster.
Crie um cliente OAuth 2.0 para o sample seed tool no FoxIDs Control Client:
- Selecione o ambiente
mastere crie um registo de aplicação OAuth 2.0, clicando emOAuth 2.0 - Client Credentials Grant. - Defina o client id como
sample_seed. - Guarde o client secret.
- Na secção resource and scopes, conceda ao cliente sample seed acesso ao recurso FoxIDs Control API
foxids_control_apicom o scopefoxids:tenant. - Clique em show advanced.
- Na secção issue claims, adicione um claim com o nome
rolee o valorfoxids:tenant.admin. Isto concede ao cliente o papel de administrador.
O cliente sample seed tool fica assim com acesso para atualizar o tenant.

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.