Conectar a IdentityServer con OpenID Connect

FoxIDs puede conectarse a un IdentityServer con OpenID Connect y así autenticar usuarios finales en un IdentityServer.

Es posible conectar un cliente IdentityServer y leer las claims desde el ID token o seleccionar un caso más complejo donde las claims se leen desde el access token.

El sample IdentityServerOidcOpSample está configurado en el test-corp de FoxIDs con el nombre de método de autenticación identityserver_oidc_op_sample. Puede probar el login (usuario alice y contraseña alice) usando los samples IdentityServerOidcOpSample y AspNetCoreOidcAuthorizationCodeSample. Haciendo clic en OIDC IdentityServer Log in en la aplicación AspNetCoreOidcAuthorizationCodeSample. El sample IdentityServerOidcOpSample está configurado con Implicit Flow para permitir pruebas locales, use Authorization Code Flow en producción.

Consulte la configuración de ejemplo de IdentityServer en FoxIDs Control: https://control.foxids.com/test-corp Obtenga acceso de lectura con el usuario reader@foxids.com y la contraseña gEh#V6kSw, luego seleccione el entorno Production y la pestaña Authentication.

Configurar IdentityServer

Este capítulo describe cómo configurar una conexión con el flujo OpenID Connect Authorization Code y PKCE, que es el flujo OpenID Connect recomendado.

1 - Comience creando un método de autenticación OpenID Connect en FoxIDs Control Client

  1. Agregue el nombre

Read the redirect URLs

Ahora es posible leer Redirect URL y Post logout redirect URL.

2 - Luego vaya a la configuración de IdentityServer y cree el cliente

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,
    }
};

Código tomado de la configuración de ejemplo IdentityServerOidcOpSample.

3 - Regrese al método de autenticación FoxIDs en FoxIDs Control Client

  1. Agregue la authority de IdentityServer
  2. Agregue los scopes profile y email (posiblemente otros scopes)
  3. Agregue el valor de client secret del cliente IdentityServer como client secret
  4. Seleccione show advanced
  5. Seleccione usar claims del ID token
  6. Agregue las claims que se transferirán desde el método de autenticación a los registros de aplicaciones. Por ejemplo, email, email_verified, name, given_name, family_name, role y posiblemente la claim access_token para transferir el access token de IdentityServer
  7. Haga clic en create

Eso es todo, ya terminó.

El nuevo método de autenticación ahora se puede seleccionar como método de autenticación permitido en un registro de aplicación. El registro de aplicación puede leer las claims del método de autenticación. Es posible añadir la claim access_token para incluir el access token de IdentityServer como una claim en el access token emitido.

Leer claims desde el access token

Si desea leer claims desde el access token necesita añadir un recurso de API y un scope de API. Y permitir que el cliente use el nuevo scope.

1 - En la configuración de 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");
}

Puede eliminar AlwaysIncludeUserClaimsInIdToken = true del cliente.

Código tomado de la configuración de ejemplo IdentityServerOidcOpSample.

2 - Luego vaya a FoxIDs Control Client

  1. Agregue el scope de API some.api.access como scope en el cliente del método de autenticación FoxIDs
  2. Lea las claims desde el access token sin seleccionar el uso de claims del ID token

Tu privacidad

Usamos cookies para mejorar tu experiencia en nuestros sitios web. Haz clic en «Aceptar todas las cookies» para aceptar su uso. Para rechazar cookies no esenciales, haz clic en «Solo cookies necesarias».

Visita nuestra política de privacidad para saber más