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 IdentityServerOidcOpSample está configurado no FoxIDs test-corp com o nome do método de autenticação identityserver_oidc_op_sample.
Pode testar o login, username alice e password alice, usando os samples IdentityServerOidcOpSample e AspNetCoreOidcAuthorizationCodeSample, clicando em OIDC IdentityServer Log in na aplicação AspNetCoreOidcAuthorizationCodeSample.
O sample IdentityServerOidcOpSample está 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 utilizador reader@foxids.com e a password gEh#V6kSw, depois selecione o ambiente Production e o separador Authentication.

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

  1. Adicione o nome

Read the redirect URLs

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

  1. Adicione a authority do IdentityServer
  2. Adicione os scopes profile e email, eventualmente outros ou mais scopes
  3. Adicione o valor do client secret do cliente IdentityServer como client secret
  4. Selecione show advanced
  5. Selecione usar claims do ID token
  6. 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
  7. 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

  1. Adicione o API scope some.api.access como scope no cliente do método de autenticação FoxIDs
  2. Leia claims do access token não selecionando usar claims do ID token
A sua privacidade

A sua privacidade

Usamos cookies para melhorar a sua experiência nos nossos sites. Clique no botão 'Aceitar todos os cookies' para concordar com a utilização de cookies. Para recusar cookies não essenciais, clique em 'Apenas cookies necessários'.

Visite a nossa página de Política de Privacidade para saber mais