Connect to IdentityServer with OpenID Connect
FoxIDs puo essere collegato a un IdentityServer con OpenID Connect e quindi autenticare utenti finali in un IdentityServer.
E possibile collegare sia un client IdentityServer e leggere i claim dall'ID token sia selezionare un caso piu complesso in cui i claim vengono letti dall'access token.
Il sample
IdentityServerOidcOpSamplee configurato nel FoxIDstest-corpcon il nome del metodo di autenticazioneidentityserver_oidc_op_sample.
Puoi testare il login, usernamealicee passwordalice, usando i sampleIdentityServerOidcOpSampleeAspNetCoreOidcAuthorizationCodeSample, facendo clic suOIDC IdentityServer Log innell'applicazioneAspNetCoreOidcAuthorizationCodeSample.
Il sampleIdentityServerOidcOpSamplee configurato con Implicit Flow per consentire il test locale; in produzione usa Authorization Code Flow.
Dai un'occhiata alla configurazione sample IdentityServer in FoxIDs Control: https://control.foxids.com/test-corp
Ottieni accesso in lettura con l'utentereader@foxids.come la passwordgEh#V6kSw, poi seleziona l'ambienteProductione la schedaAuthentication.
Configure IdentityServer
Questo capitolo descrive come configurare una connessione con OpenID Connect Authorization Code flow e PKCE, che e il flusso OpenID Connect raccomandato.
1 - Inizia creando un metodo di autenticazione OpenID Connect in FoxIDs Control Client
- Aggiungi il nome

Ora e possibile leggere Redirect URL e Post logout redirect URL.
2 - Poi vai nella configurazione IdentityServer e crea il client
yield return new Client
{
ClientId = "some_identityserver_app",
AllowedGrantTypes = GrantTypes.Code,
RequirePkce = true,
ClientSecrets =
{
new Secret("BpCbINKwxELM ... eVpMClM84Rr0".Sha256())
},
AlwaysIncludeUserClaimsInIdToken = true,
RedirectUris = { "https://foxids.com/test-corp/-/(some_identityserver_app)/oauth/authorizationresponse" },
PostLogoutRedirectUris = { "https://foxids.com/test-corp/-/(some_identityserver_app)/oauth/endsessionresponse" },
AllowedScopes = new List<string>
{
IdentityServerConstants.StandardScopes.OpenId,
IdentityServerConstants.StandardScopes.Profile,
IdentityServerConstants.StandardScopes.Email,
}
};
Codice preso dalla configurazione sample IdentityServerOidcOpSample sample.
3 - Torna al metodo di autenticazione FoxIDs in FoxIDs Control Client
- Aggiungi l'authority di IdentityServer
- Aggiungi gli scope profile ed email, eventualmente altri o ulteriori scope
- Aggiungi il valore client secret del client IdentityServer come client secret
- Seleziona show advanced
- Seleziona l'uso dei claim dall'ID token
- Aggiungi i claim che verranno trasferiti dal metodo di autenticazione alle registrazioni applicative. Ad esempio email, email_verified, name, given_name, family_name, role e possibilmente il claim access_token per trasferire l'access token IdentityServer
- Fai clic su create
E tutto, hai finito.
Il nuovo metodo di autenticazione puo ora essere selezionato come metodo di autenticazione consentito in una registrazione applicativa.
La registrazione applicativa puo leggere i claim dal metodo di autenticazione. E possibile aggiungere il claim access_token per includere l'access token IdentityServer come claim nell'access token emesso.
Read claims from access token
Se vuoi leggere i claim dall'access token devi aggiungere una API resource e un API scope, e fare in modo che il client usi il nuovo scope.
1 - Nella configurazione IdentityServer
public IEnumerable<ApiResource> GetApiResources()
{
yield return new ApiResource("some.api", "Some API")
{
UserClaims = new[] { "email", "email_verified", "family_name", "given_name", "name", "role" },
Scopes = new List<string>
{
"some.api.access"
}
};
}
public IEnumerable<ApiScope> GetApiScopes()
{
yield return new ApiScope("some.api.access", "Some API scope");
}
Puoi rimuovere AlwaysIncludeUserClaimsInIdToken = true dal client.
Codice preso dalla configurazione sample IdentityServerOidcOpSample sample.
2 - Poi vai in FoxIDs Control Client
- Aggiungi l'API scope
some.api.accesscome scope nel client del metodo di autenticazione FoxIDs - Leggi i claim dall'access token non selezionando l'uso dei claim dall'ID token