Connect to IdentityServer with OpenID Connect
O FoxIDs pode ser ligado a um IdentityServer com OpenID Connect e, assim, autenticar utilizadores finais num IdentityServer.
É possível ligar um cliente IdentityServer e ler claims a partir do ID token ou selecionar um caso mais complexo em que os claims são lidos do access token.
O sample
IdentityServerOidcOpSampleestá configurado no FoxIDstest-corpcom o nome do método de autenticaçãoidentityserver_oidc_op_sample.
Pode testar o login, usernamealicee passwordalice, usando os samplesIdentityServerOidcOpSampleeAspNetCoreOidcAuthorizationCodeSample, clicando emOIDC IdentityServer Log inna aplicaçãoAspNetCoreOidcAuthorizationCodeSample.
O sampleIdentityServerOidcOpSampleestá configurado com Implicit Flow para permitir testes locais; use Authorization Code Flow em produção.
Veja a configuração sample IdentityServer no FoxIDs Control: https://control.foxids.com/test-corp
Obtenha acesso de leitura com o utilizadorreader@foxids.come a passwordgEh#V6kSw, depois selecione o ambienteProductione o separadorAuthentication.
Configure IdentityServer
Este capítulo descreve como configurar uma ligação com OpenID Connect Authorization Code flow e PKCE, que é o fluxo OpenID Connect recomendado.
1 - Comece por criar um método de autenticação OpenID Connect no FoxIDs Control Client
- Adicione o nome

Agora é possível ler o Redirect URL e o Post logout redirect URL.
2 - Depois vá à configuração do IdentityServer e crie o 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 retirado da configuração sample IdentityServerOidcOpSample sample.
3 - Volte ao método de autenticação FoxIDs no FoxIDs Control Client
- Adicione a authority do IdentityServer
- Adicione os scopes profile e email, eventualmente outros ou mais scopes
- Adicione o valor do client secret do cliente IdentityServer como client secret
- Selecione show advanced
- Selecione usar claims do ID token
- Adicione os claims que serão transferidos do método de autenticação para os registos de aplicação. Por exemplo email, email_verified, name, given_name, family_name, role e possivelmente o claim access_token para transferir o access token IdentityServer
- Clique em create
É isso, terminou.
O novo método de autenticação pode agora ser selecionado como método de autenticação permitido num registo de aplicação.
O registo de aplicação pode ler os claims do método de autenticação. É possível adicionar o claim access_token para incluir o access token IdentityServer como claim no access token emitido.
Read claims from access token
Se quiser ler claims do access token, precisa de adicionar um API resource e um API scope, e deixar o cliente usar o novo scope.
1 - Na configuração do 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");
}
Pode remover AlwaysIncludeUserClaimsInIdToken = true do cliente.
Código retirado da configuração sample IdentityServerOidcOpSample sample.
2 - Depois vá ao FoxIDs Control Client
- Adicione o API scope
some.api.accesscomo scope no cliente do método de autenticação FoxIDs - Leia claims do access token não selecionando usar claims do ID token