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
IdentityServerOidcOpSampleestá configurado en eltest-corpde FoxIDs con el nombre de método de autenticaciónidentityserver_oidc_op_sample. Puede probar el login (usuarioalicey contraseñaalice) usando los samplesIdentityServerOidcOpSampleyAspNetCoreOidcAuthorizationCodeSample. Haciendo clic enOIDC IdentityServer Log inen la aplicaciónAspNetCoreOidcAuthorizationCodeSample. El sampleIdentityServerOidcOpSampleestá 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.comy la contraseñagEh#V6kSw, luego seleccione el entornoProductiony la pestañaAuthentication.
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
- Agregue el nombre

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
- Agregue la authority de IdentityServer
- Agregue los scopes profile y email (posiblemente otros scopes)
- Agregue el valor de client secret del cliente IdentityServer como client secret
- Seleccione show advanced
- Seleccione usar claims del ID token
- 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
- 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
- Agregue el scope de API
some.api.accesscomo scope en el cliente del método de autenticación FoxIDs - Lea las claims desde el access token sin seleccionar el uso de claims del ID token