Esempi .NET
Gli esempi .NET di FoxIDs mostrano:
- Login e logout utente con OpenID Connect 1.0, SAML 2.0 e WS-Federation
- Client credential grant con secret e certificato
- Chiamate API protette con OAuth 2.0
- Token exchange da access token ad access token e da SAML 2.0 ad access token
Trovi il codice sorgente degli esempi nel repository FoxIDs.Samples.
Gli esempi sono preconfigurati nel tenant di test online test-corp di FoxIDs e possono essere eseguiti immediatamente in locale in Visual Studio sulle porte localhost preconfigurate.
Dai un'occhiata alla configurazione di test FoxIDs in FoxIDs Control: https://control.foxids.com/test-corp
Ottieni accesso in lettura con l'utentereader@foxids.come la passwordgEh#V6kSw
In alternativa puoi configurare gli esempi nel tuo ambiente FoxIDs.
Indice esempi
ASP.NET Core - OpenID Connect - registrazione applicativa
- AspNetCoreOidcAuthCodeAllUpPartiesSample (online) ← Buon punto di partenza!
- AspNetCoreOidcAuthorizationCodeSample
- AspNetCoreOidcImplicitSample
ASP.NET Core - SAML 2.0 - registrazione applicativa
ASP.NET Core - WS-Federation - registrazione applicativa
Blazor - OpenID Connect - registrazione applicativa
App console - OAuth 2.0 Client credential grant - registrazione applicativa
ASP.NET Core API - OAuth 2.0 - registrazione applicativa
ASP.NET Core - OpenID Connect - metodo di autenticazione
ASP.NET Core - SAML 2.0 - metodo di autenticazione
ASP.NET Core - API esterne
App console - FoxIDs Control API
Puoi usare lo strumento JWT e lo strumento SAML 2.0 per decodificare token e creare certificati self-signed con lo strumento certificati.
Applicazioni di esempio
Gli esempi mostrano diverse applicazioni che si fidano di FoxIDs come IdP.
AspNetCoreOidcAuthCodeAllUpPartiesSample
Applicazione sample (code link) che mostra login e logout utente con OpenID Connect (OIDC) usando l'authorization code flow come service provider e richiedendo il login tramite tutti i metodi di autenticazione.
Puoi testare questo sample online.
Questo sample e un buon punto di partenza!
I possibili metodi di autenticazione vengono configurati nella registrazione applicativa come allowed authentication methods. Si puo configurare da uno a molti metodi di autenticazione consentiti. Tutti i metodi di autenticazione configurati vengono selezionati con un asterisco invece del nome del metodo di autenticazione.
Supporta login/logout con la pagina di login FoxIDs, Identity Server, sample IdP SAML 2.0 e tutti gli altri metodi di autenticazione.
Chiamate API:
- Mostra come chiamare il sample API1 protetto con un access token.
- Mostra come chiamare il sample API1 protetto con un access token che a sua volta chiama il sample API2 usando token exchange all'interno di API1.
- Mostra come ottenere un access token tramite token exchange; il client usa il metodo di autenticazione client
client_secret_post. Poi chiama il sample API2 protetto con l'access token ottenuto.
Dominio e porta di sviluppo locale: https://localhost:44349
AspNetCoreOidcAuthorizationCodeSample
Applicazione sample (code link) che mostra login e logout utente con OpenID Connect (OIDC) usando l'authorization code flow come service provider.
Supporta login/logout con la pagina di login FoxIDs, Identity Server, sample IdP SAML 2.0 e, se configurato, AD FS usando SAML 2.0.
Mostra come chiamare il sample API1 protetto con un access token.
Dominio e porta di sviluppo locale: https://localhost:44340
AspNetCoreOidcImplicitSample
Applicazione sample (code link) che mostra login e logout utente con OpenID Connect (OIDC) usando l'implicit flow come service provider.
Supporta login/logout con la pagina di login FoxIDs, Identity Server, sample IdP SAML 2.0 e, se configurato, AD FS usando SAML 2.0.
Dominio e porta di sviluppo locale: https://localhost:44341
AspNetCoreSamlSample
Applicazione sample (code link) che mostra login e logout utente con SAML 2.0 come relying party.
Supporta login/logout con la pagina di login FoxIDs, Identity Server, sample IdP SAML 2.0 e, se configurato, AD FS usando SAML 2.0.
Mostra come ottenere un access token da un token bearer SAML 2.0 tramite token exchange; il client usa il metodo di autenticazione client private_key_jwt con certificato. Poi chiama il sample API1 protetto con l'access token ottenuto.
Dominio e porta di sviluppo locale: https://localhost:44343
AspNetCoreWsFedSample
Applicazione sample (code link) che mostra login e logout utente con WS-Federation come relying party.
Il sample può essere configurato come registrazione applicativa WS-Federation in FoxIDs. Mostra realm, reply URL, sign-out cleanup URL, logged out URL e Federation Metadata URL necessari per configurare l’applicazione.
Supporta login/logout con la pagina di login FoxIDs e altri metodi di autenticazione configurati nella registrazione applicativa.
Dominio e porta di sviluppo locale: https://localhost:44358
NetCoreClientCredentialGrantConsoleSample
Applicazione console sample (code link) che mostra autenticazione client con OAuth 2.0 Client Credentials Grant usando un secret, cioe il metodo di autenticazione client client_secret_post.
Mostra come chiamare il sample API1 e il sample API con due IdP protetti con un access token.
NetCoreClientCredentialGrantAssertionConsoleSample
Applicazione console sample (code link) che mostra autenticazione client con OAuth 2.0 Client Credentials Grant usando un certificato, cioe il metodo di autenticazione client private_key_jwt.
Mostra come chiamare il sample API1 e il sample API con due IdP protetti con un access token.
NetFramework4.7ClientCredentialGrantAssertionConsoleSample
Applicazione console .NET Framework 4.7 sample (code link) che mostra autenticazione client con OAuth 2.0 Client Credentials Grant usando un certificato, cioe il metodo di autenticazione client private_key_jwt.
Mostra come chiamare il sample API1 e il sample API con due IdP protetti con un access token.
BlazorBFFAspNetCoreOidcSample
Applicazione sample (code link client e server) che mostra login e logout utente con OpenID Connect (OIDC) usando l'authorization code flow in un'applicazione Blazor BFF (Backend For Frontend) con backend ASP.NET Core.
In un'architettura BFF il backend gestisce OIDC, i token non vengono mai condivisi con il client Blazor. Invece una sessione basata su un identity cookie protegge l'applicazione dopo l'autenticazione utente riuscita.
Il sample mostra come chiamare il sample API1 sia dal client Blazor tramite un proxy API backend che aggiunge l'access token alla chiamata API in uscita.
Dominio e porta di sviluppo locale: https://localhost:44348
BlazorOidcPkceSample
Sample Blazor (code link) che mostra login e logout utente con OpenID Connect (OIDC) usando authorization code flow e PKCE come service provider.
Mostra come chiamare il sample API1 protetto con un access token.
Dominio e porta di sviluppo locale: https://localhost:44345
BlazorServerOidcSample
Sample Blazor server (code link) che mostra login e logout utente con OpenID Connect (OIDC) usando authorization code flow come service provider.
Mostra come chiamare il sample API1 protetto con un access token.
Dominio e porta di sviluppo locale: https://localhost:44347
AspNetCoreApi1Sample
Sample API (code link) che mostra come proteggere un'API con un access token e come limitare l'accesso tramite scope.
Puoi chiamare questo sample online.
L'API chiama il sample API2 protetto con un access token ottenuto tramite token exchange dove il client usa il metodo di autenticazione client private_key_jwt con certificato.
Dominio e porta di sviluppo locale: https://localhost:44344
AspNetCoreApi2Sample
Sample API (code link) che mostra come proteggere un'API con un access token e come limitare l'accesso tramite uno scope.
Puoi chiamare questo sample online.
Dominio e porta di sviluppo locale: https://localhost:44351
AspNetCoreApiOAuthTwoIdPsSample
Sample API (code link) che mostra come creare un'API capace di accettare access token da due IdP diversi. Ogni relazione IdP - API puo essere configurata con resource ID e scope individuali.
Questo scenario si verifica piu spesso in un periodo di transizione quando si passa da un IdP a un altro. Avendo API con supporto dual IdP, i client possono essere spostati da un IdP all'altro indipendentemente dalle API.
La sample API puo essere chiamata decommentando il codice nel sample NetCoreClientCredentialGrantConsoleSample oppure NetCoreClientCredentialGrantAssertionConsoleSample.
Dominio e porta di sviluppo locale: https://localhost:44350
Esempi di metodi di autenticazione
Gli esempi di metodi di autenticazione mostrano diversi IdP collegati a FoxIDs, dove FoxIDs si fida degli IdP sample.
AspNetCoreSamlIdPSample
Applicazione sample (code link) che implementa un identity provider (IdP) SAML 2.0 collegato come metodo di autenticazione SAML 2.0 in FoxIDs. Il sample mostra anche come eseguire login IdP-Initiated.
Puoi testare questo sample online.
Dominio e porta di sviluppo locale: https://localhost:44342
IdentityServerOidcOpSample
Identity Server (code link) che implementa OpenID Connect (OIDC) esponendo un OpenID Provider (OP) / identity provider (IdP) collegato come metodo di autenticazione OpenID Connect in FoxIDs.
Dominio e porta di sviluppo locale: https://localhost:44346
DirectoryConnectorApiSample
Applicazione sample (code link) che implementa una Directory Connector API che valida le password e delega le operazioni del ciclo di vita delle password a una directory esterna.
Dominio e porta di sviluppo locale: https://localhost:44356
ExternalLoginApiSample
External login è obsoleto e verrà eliminato gradualmente. Usa Directory Connector per la validazione esterna delle password.
Applicazione sample (code link) che implementa una external login API collegata come metodo di autenticazione external login in FoxIDs.
Dominio e porta di sviluppo locale: https://localhost:44352
ExternalClaimsApiSample
Applicazione sample (code link) che implementa una external claims API configurabile e richiamabile da una claims transform. L'external claims API puo quindi aggiungere claim esterni ai claim emessi.
Dominio e porta di sviluppo locale: https://localhost:44353
ExternalExtendedUiApiSample
Applicazione sample (code link) che implementa una external extended UI API configurabile e richiamabile per validare elementi UI dinamici e restituire facoltativamente claim aggiuntivi.
Dominio e porta di sviluppo locale: https://localhost:44354
ExternalPasswordApiSample
Applicazione sample (code link) che implementa una external password API collegata come external password API in un ambiente FoxIDs.
Dominio e porta di sviluppo locale: https://localhost:44355
FoxIDsControlApiSample
Applicazione console sample (code link) che mostra come chiamare FoxIDs Control API.
Configurare gli esempi in un ambiente FoxIDs
Gli esempi possono essere configurati in un ambiente FoxIDs con il sample seed tool oppure manualmente tramite FoxIDs Control Client.
Il sample seed tool si trova nella soluzione di esempio: tools/SampleSeedTool.
Configurare il sample seed tool
Il sample seed tool viene configurato nel file
appsettings.json.
Aggiungi gli endpoint FoxIDs e FoxIDs Control API alla configurazione del sample seed tool. Possono essere aggiunti aggiornando i nomi istanza https://foxids.com e https://control.foxids.com/api. Se esegui FoxIDs localmente in Visual Studio, gli endpoint sono configurati verso FoxIDs localhost https://localhost:44330/ e FoxIDs Control API localhost https://localhost:44331/.
"SeedSettings": {
"FoxIDsEndpoint": "https://foxids.com",
"FoxIDsConsolApiEndpoint": "https://control.foxids.com/api"
}
L'accesso per creare la configurazione sample in un ambiente viene concesso nell'ambiente
master. La configurazione sample non dovrebbe essere aggiunta nell'ambientemaster.
Crea un client OAuth 2.0 del sample seed tool in FoxIDs Control Client:
- Seleziona l'ambiente
mastere crea una registrazione applicativa OAuth 2.0, facendo clic suOAuth 2.0 - Client Credentials Grant. - Imposta il client id su
sample_seed. - Ricorda il client secret.
- Nella sezione resource and scopes, concedi al client sample seed accesso alla resource FoxIDs Control API
foxids_control_apicon lo scopefoxids:tenant. - Fai clic su show advanced.
- Nella sezione issue claims, aggiungi un claim con nome
rolee valorefoxids:tenant.admin. Questo concede al client il ruolo amministratore.
Il client sample seed tool ottiene cosi accesso per aggiornare il tenant.

Crea un nuovo ambiente FoxIDs per le applicazioni sample oppure seleziona un ambiente esistente.
Modifica tenant, ambiente e client secret del sample seed tool nella configurazione del sample seed tool.
"SeedSettings": {
"Tenant": "xxx",
"Track": "xxx",
"DownParty": "sample_seed",
"ClientSecret": "xxx"
}
Cambia la configurazione di tenant e ambiente per tutti gli esempi.
Eseguire il sample seed tool
Esegui l'eseguibile del sample seed tool SampleSeedTool.exe oppure esegui direttamente il seed tool da Visual Studio.
- Premi 'c' per creare la configurazione sample
- Premi 'd' per eliminare la configurazione sample
Il sample seed tool creera ed eliminera configurazioni per tutti gli esempi.
Le applicazioni sample richiedono un metodo di autenticazione login con il nome login, che gestisce il login utente. Viene creato dal sample seed tool se non esiste. Il metodo di autenticazione login non viene eliminato se la configurazione sample viene eliminata.