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 IdentityServerOidcOpSample est configuré dans le test-corp FoxIDs avec le nom de méthode d’authentification identityserver_oidc_op_sample. Vous pouvez tester la connexion (nom d’utilisateur alice et mot de passe alice) en utilisant les samples IdentityServerOidcOpSample et AspNetCoreOidcAuthorizationCodeSample. En cliquant sur OIDC IdentityServer Log in dans l’application AspNetCoreOidcAuthorizationCodeSample. Le sample IdentityServerOidcOpSample est 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.com et le mot de passe gEh#V6kSw, puis sélectionnez l’environnement Production et l’onglet Authentication.

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

  1. Ajoutez le nom

Read the redirect URLs

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

  1. Ajoutez l’authority d’IdentityServer
  2. Ajoutez les scopes profile et email (éventuellement d’autres scopes)
  3. Ajoutez la valeur du client secret du client IdentityServer comme client secret
  4. Sélectionnez show advanced
  5. Sélectionnez utiliser les revendications depuis l’ID token
  6. 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
  7. 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

  1. Ajoutez le scope API some.api.access comme scope dans le client de la méthode d’authentification FoxIDs
  2. Lisez les revendications depuis l’access token en ne sélectionnant pas l’utilisation des revendications depuis l’ID token

Votre confidentialité

Nous utilisons des cookies pour améliorer votre expérience sur nos sites. Cliquez sur « Accepter tous les cookies » pour accepter l'utilisation des cookies. Pour refuser les cookies non essentiels, cliquez sur « Cookies nécessaires uniquement ».

Consultez notre politique de confidentialité pour en savoir plus