Método de autenticação SAML 2.0

Método de autenticação SAML 2.0 do FoxIDs que confia num Identity Provider (IdP) SAML 2.0 externo.

SAML 2.0 é um standard aberto para troca de dados de autenticação e autorização entre um Identity Provider (IdP) e um Service Provider (SP). Permite Single Sign-On (SSO), permitindo aos utilizadores iniciar sessão uma vez e obter acesso a várias aplicações sem se autenticarem novamente. Os dois fluxos SAML 2.0 são suportados: SP-Initiated Login, que é o fluxo predefinido, mais comum e recomendado, e IdP-initiated Login.

SAML 2.0 é amplamente usado em ambientes enterprise, onde permite federação de identidade segura entre organizações e aplicações diferentes.

FoxIDs SAML 2.0 authentication method

Ao configurar um método de autenticação SAML 2.0 e um registo de aplicação OpenID Connect, o FoxIDs torna-se um bridge entre SAML 2.0 e OpenID Connect. O FoxIDs irá então tratar da ligação SAML 2.0 como Relying Party (RP) / Service Provider (SP) e, na sua aplicação, só precisa de lidar com OpenID Connect.

É possível configurar vários métodos de autenticação SAML 2.0 que depois podem ser selecionados por registos de aplicação OpenID Connect e registos de aplicação SAML 2.0.

Configure IdP-Initiated Login e encaminhe o login para aplicações SAML 2.0 e OpenID Connect.

O FoxIDs suporta os bindings SAML 2.0 redirect e post. Os perfis SAML 2.0 de login, logout e single logout são suportados. O perfil Artifact não é suportado.

Um método de autenticação expõe metadata SAML 2.0 e pode ser configurado com metadata SAML 2.0 ou adicionando manualmente os detalhes de configuração.

A metadata SAML 2.0 gerada pelo FoxIDs inclui informação de logout e single logout apenas se o logout estiver configurado no método de autenticação SAML 2.0.

O FoxIDs suporta todos os identity providers SAML 2.0 (IdP) e foi testado com uma vasta gama de IdP.

O FoxIDs suporta certificados RSA e ECDSA como certificados de validação de assinatura SAML para um IdP externo. A validação de assinatura pode aceitar vários algoritmos permitidos, tornando possível confiar em identity providers que assinam SAML responses com certificados RSA ou ECDSA, mantendo RSA-SHA-1 legado desativado por predefinição.

Guias práticos:

Ligar ambientes FoxIDs

Os ambientes FoxIDs podem ser ligados de duas formas:

Escolha Environment Link quando ambos os ambientes estiverem no mesmo tenant e quiser a configuração mais simples. Escolha OpenID Connect quando precisar de ligar tenants diferentes ou implementações FoxIDs separadas.

Configuração

Como configurar um Identity Provider (IdP) SAML 2.0 externo.

O endpoint metadata do método de autenticação SAML 2.0 do FoxIDs é https://foxids.com/tenant-x/environment-y/(some_external_idp)/saml/spmetadata. Se o IdP estiver configurado no tenant tenant-x e no ambiente environment-y com o nome do método de autenticação some_external_idp.

O ecrã seguinte mostra a configuração de um método de autenticação SAML 2.0 no FoxIDs Control Client. Aqui a configuração é criada usando metadata do IdP externo. Os claims encaminhados ficam limitados ao conjunto configurado; por predefinição todos os claims são encaminhados com a notação *.

Opções de configuração adicionais ficam disponíveis ao clicar em Show advanced.

Configure SAML 2.0

Pode modificar claims e executar claim tasks com transformações e tarefas de claims.

A configuração manual fica disponível ao desativar Automatic update. Assim, o IdP não precisa de expor nem enviar um ficheiro de metadata e pode configurar tudo manualmente.

Manual SAML 2.0 configuration

Se estiver a criar um novo claim, adicione o claim ou * (predefinição) à lista Forward claims para o encaminhar para o registo de aplicação.

Segurança e interoperabilidade

As definições avançadas de segurança SAML estão disponíveis ao clicar em Show advanced no método de autenticação SAML 2.0.

  • Signature algorithm controla o algoritmo que o FoxIDs usa ao assinar SAML AuthnRequests e mensagens de logout. RSA-SHA-256 é a predefinição.
  • Signature validation algorithms é uma allowlist para SAML responses e mensagens de logout assinadas recebidas do IdP externo. A allowlist predefinida inclui os algoritmos suportados RSA-SHA-256/384/512 e ECDSA-SHA-256/384/512 e exclui RSA-SHA-1.
  • Os certificados de assinatura do IdP externo podem ser certificados RSA ou ECDSA. O FoxIDs suporta ambos os tipos de certificado como certificados de validação de assinatura SAML para SAML responses e mensagens de logout assinados.
  • XML canonicalisation method controla o método de canonicalisation que o FoxIDs usa ao assinar mensagens SAML. O FoxIDs também valida assinaturas SAML recebidas com exclusive XML canonicalisation methods suportados para melhorar a interoperabilidade com IdP que usam definições de canonicalisation diferentes.

Ative RSA-SHA-1 apenas quando exigido por um SAML identity provider antigo.

IdP-Initiated Login

SAML 2.0 IdP-Initiated Login é um fluxo de autenticação Single Sign-On (SSO) em que o processo começa no Identity Provider (IdP) em vez do Service Provider (SP). Este método é comummente usado em ambientes enterprise para permitir que utilizadores acedam a várias aplicações com uma única autenticação.

Ao contrário do SP-Initiated Login, o SP não pede autenticação ao IdP. O IdP envia por iniciativa própria uma SAML assertion não solicitada. Esta diferença fundamental torna o fluxo IdP-Initiated Login menos seguro do que o fluxo SP-Initiated Login, e por isso o IdP-Initiated Login está desativado por predefinição no FoxIDs.

Ativar IdP-Initiated Login.

  1. Abra o método de autenticação SAML 2.0 no FoxIDs Control Client
  2. Clique em Show advanced
  3. Desça até ao fim da secção de configuração
  4. Ative IdP-Initiated login
  5. Opcionalmente altere IdP-Initiated Login - OpenID Connect grant lifetime
  6. Clique em Update

Configure SAML 2.0

Depois, configure o método de autenticação SAML 2.0 para confiar no IdP da mesma forma que faria para usar SP-initiated login.

IdP Relay State

O IdP externo tem de enviar um relay state que especifique para que aplicação a autenticação deve ser encaminhada. O relay state tem sempre de conter o nome da aplicação app_name e o tipo de aplicação app_type e, em alguns casos, deve conter um URL de redirecionamento da aplicação app_redirect.

Os elementos têm cada um um nome e um valor e são separados por &. Os valores URL de redirecionamento têm de estar URL encoded. O valor do tipo de aplicação pode ser saml2 ou oidc.

O sample .NET de identity provider (IdP) SAML 2.0 AspNetCoreSamlIdPSample mostra como criar um IdP-Initiated Login com relay state.

FoxIDs SAML 2.0 authentication method

Aplicação SAML 2.0

Se quiser encaminhar a autenticação para a aplicação SAML 2.0 chamada my-saml2-app, o relay state é:

app_name=my-saml2-app&app_type=saml2

Isto encaminha a chamada de autenticação para o primeiro endpoint Assertion Consumer Service (ACS) configurado para a aplicação.

Se quiser encaminhar a autenticação para outro endpoint ACS configurado https://my-domain.com/auth/acs2, o relay state é:

app_name=my-saml2-app&app_type=saml2&app_redirect=https%3A%2F%2Fmy-domain.com%2Fauth%2Facs2

A chamada de autenticação é encaminhada para a aplicação SAML 2.0 como IdP-Initiated Login com uma authn response SAML 2.0 não solicitada.

Aplicação OpenID Connect

OpenID Connect não suporta IdP-Initiated Login. Por isso, o IdP-Initiated Login é verificado no método de autenticação e encaminhado para a aplicação OpenID Connect ao chamar a aplicação com o URL de redirecionamento app_redirect, que deve iniciar o fluxo de login (standard OpenID Connect: Initiating Login from a Third Party). Precisa de uma página na aplicação OpenID Connect que exija que o utilizador esteja autenticado e depois inicie o fluxo de login quando for chamada. Um parâmetro issuer iss é passado na query e pode escolher validá-lo. A aplicação OpenID Connect pode fazer um pedido de login genérico com *; o FoxIDs sabe para onde encaminhar o pedido de login.

A aplicação OpenID Connect chama então o FoxIDs, que lê o grant IdP-Initiated Login. Em alternativa, sem um grant IdP-Initiated Login, o IdP externo é chamado com um fluxo SP-Initiated Login. O IdP externo usa o contexto Single Sign-On (SSO) e responde ao FoxIDs.

Recomenda-se usar a funcionalidade grant IdP-Initiated Login para evitar um round-trip adicional ao IdP externo.

O SAML 2.0 IdP-Initiated Login é então traduzido para OpenID Connect e encaminha a autenticação para a aplicação OpenID Connect.

Se quiser encaminhar a autenticação para a aplicação OpenID Connect chamada my-oidc-app com o URL de início de login https://my-domain.com/secure-page, o relay state é:

app_name=my-oidc-app&app_type=oidc&app_redirect=https%3A%2F%2Fmy-domain.com%2Fsecure-page

O URL de redirecionamento da aplicação tem de ser um URL válido/configurado para a aplicação OpenID Connect.