Se connecter à IdentityServer avec OpenID Connect
FoxIDs peut être connecté à un IdentityServer avec OpenID Connect et ainsi authentifier les utilisateurs finaux dans un IdentityServer.
Il est possible de connecter un client IdentityServer et de lire les revendications depuis l’ID token ou de sélectionner un cas plus complexe où les revendications sont lues depuis l’access token.
Le sample
IdentityServerOidcOpSampleest configuré dans letest-corpFoxIDs avec le nom de méthode d’authentificationidentityserver_oidc_op_sample. Vous pouvez tester la connexion (nom d’utilisateuraliceet mot de passealice) en utilisant les samplesIdentityServerOidcOpSampleetAspNetCoreOidcAuthorizationCodeSample. En cliquant surOIDC IdentityServer Log indans l’applicationAspNetCoreOidcAuthorizationCodeSample. Le sampleIdentityServerOidcOpSampleest configuré avec le flux Implicit pour permettre les tests locaux, veuillez utiliser le flux Authorization Code en production.
Consultez la configuration d’exemple IdentityServer dans FoxIDs Control : https://control.foxids.com/test-corp Obtenez l’accès en lecture avec l’utilisateur
reader@foxids.comet le mot de passegEh#V6kSw, puis sélectionnez l’environnementProductionet l’ongletAuthentication.
Configurer IdentityServer
Ce chapitre décrit comment configurer une connexion avec le flux OpenID Connect Authorization Code et PKCE, qui est le flux OpenID Connect recommandé.
1 - Commencez par créer une méthode d’authentification OpenID Connect dans FoxIDs Control Client
- Ajoutez le nom

Il est maintenant possible de lire Redirect URL et Post logout redirect URL.
2 - Allez ensuite dans la configuration IdentityServer et créez le 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,
}
};
Code extrait de la configuration d’exemple IdentityServerOidcOpSample.
3 - Revenez à la méthode d’authentification FoxIDs dans FoxIDs Control Client
- Ajoutez l’authority d’IdentityServer
- Ajoutez les scopes profile et email (éventuellement d’autres scopes)
- Ajoutez la valeur du client secret du client IdentityServer comme client secret
- Sélectionnez show advanced
- Sélectionnez utiliser les revendications depuis l’ID token
- Ajoutez les revendications qui seront transférées de la méthode d’authentification vers les enregistrements d’applications. Par ex. email, email_verified, name, given_name, family_name, role et éventuellement la revendication access_token pour transférer l’access token IdentityServer
- Cliquez sur create
C’est tout, vous avez terminé.
La nouvelle méthode d’authentification peut maintenant être sélectionnée comme méthode d’authentification autorisée dans un enregistrement d’application. L’enregistrement d’application peut lire les revendications de la méthode d’authentification. Il est possible d’ajouter la revendication access_token pour inclure l’access token IdentityServer comme revendication dans l’access token émis.
Lire les revendications depuis l’access token
Si vous souhaitez lire les revendications depuis l’access token, vous devez ajouter une ressource API et un scope API, puis laisser le client utiliser le nouveau scope.
1 - Dans la configuration 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");
}
Vous pouvez supprimer AlwaysIncludeUserClaimsInIdToken = true du client.
Code extrait de la configuration d’exemple IdentityServerOidcOpSample.
2 - Allez ensuite dans FoxIDs Control Client
- Ajoutez le scope API
some.api.accesscomme scope dans le client de la méthode d’authentification FoxIDs - Lisez les revendications depuis l’access token en ne sélectionnant pas l’utilisation des revendications depuis l’ID token