Segurança8 de outubro de 2026 9 min de leitura

SSO empresarial no AAA Sentinel: guia prático com o Auth0 (e o que muda com o Microsoft Entra ID ou o Okta)

Ligar o diretório da sua empresa ao AAA Sentinel centraliza entradas, saídas e funções num só sítio. Explicamos como se configura, o que aprendemos ao ligá-lo ao Auth0 por SAML e por OIDC, e o que vigiar com o Microsoft Entra ID ou o Okta.

Este artigo também está disponível em:esenfr

O AAA Sentinel vê dados sensíveis: a fatura das suas clouds, as contas ligadas, o gasto em modelos de IA e a postura de segurança. Quando a equipa cresce, gerir acessos com palavras-passe soltas deixa de escalar: alguém sai da empresa e o acesso continua ativo, outra pessoa precisa de permissões de administrador durante uma semana e ninguém se lembra de as retirar. O SSO empresarial resolve isto ligando o AAA Sentinel ao diretório que a sua empresa já usa.

Porquê usar SSO empresarial

Com o SSO ativo, o seu fornecedor de identidade (IdP) passa a ser a única porta de entrada:

  • Saídas num só sítio: desativa a pessoa no diretório e ela deixa de poder iniciar sessão no AAA Sentinel, sem mexer na plataforma.
  • Funções sincronizadas: cada grupo do IdP corresponde a uma função (Administrador, Aprovador, Finanças ou Visualizador) e a função é recalculada em cada início de sessão.
  • As políticas da sua empresa aplicam-se também aqui: MFA, acesso condicional ou duração da sessão são decididos pelo seu IdP.
  • Domínio verificado: só entra por SSO quem tem um email de um domínio que demonstrou controlar com um registo DNS.
  • Menos palavras-passe e menos suporte: ninguém tem de memorizar mais uma palavra-passe nem pedir que a reponham.

Como se configura no AAA Sentinel

O SSO está disponível no plano Business e é configurado pelo proprietário da organização em Gestão → Configurações, no cartão «SSO empresarial». São cinco passos:

  • Escolha o protocolo, SAML ou OIDC. Fica fixo ao guardar; para o mudar é preciso eliminar a configuração.
  • Copie para o seu IdP os dados que o painel mostra: com SAML, o URL de resposta (ACS), o identificador de entidade e o URL de fim de sessão; com OIDC, o URL de redirecionamento.
  • Preencha os dados do IdP (o URL de metadados em SAML; issuer, client ID e segredo em OIDC), o claim do email, o dos grupos e a tabela grupo → função.
  • Verifique o seu domínio publicando o registo TXT que o painel indica. A correspondência tem de ser exata.
  • Clique em «Testar ligação»: abre o início de sessão do seu IdP noutro separador e confirma que tudo responde, sem alterar a sua sessão. Com tudo a verde, ative o SSO.

A partir daí, no ecrã de acesso basta escrever o email da empresa e clicar em «Entrar com o SSO da minha empresa»: o AAA Sentinel deteta o domínio e leva-o ao seu IdP. Se o domínio não tiver SSO, o próprio ecrã explica-o.

SAML ou OIDC: qual escolher

Os dois protocolos funcionam. A diferença está nos detalhes:

  • SAML: o fim de sessão é completo (ao sair do AAA Sentinel também termina a sessão do IdP) e os grupos viajam como atributo multivalor. É a opção recomendada para sincronizar funções com o Microsoft Entra ID ou o Okta.
  • OIDC: configura-se com menos dados (issuer, client ID e segredo). O AAA Sentinel termina também a sessão do IdP desde que este publique um end_session_endpoint e permita terminá-la com o client ID.
  • Em ambos os casos, desativar o SSO suspende quem entra por ele, porque não tem palavra-passe, e deixa de contar como lugar. Voltam ao reativá-lo se ainda couberem no plano.

Caso prático: o Auth0 como fornecedor de identidade

Testámos a integração completa com um tenant gratuito do Auth0, primeiro com SAML e depois com OIDC. O que é comum aos dois faz-se uma só vez: uma Action que publica as funções de cada pessoa (Actions → Library → Build Custom, com o trigger Login / Post Login) e as definições da aplicação. A mesma Action serve para os dois protocolos:

Action «Login SSO» · trigger Login / Post Loginjs
// Actions → Library → Build Custom → Login / Post Login
exports.onExecutePostLogin = async (event, api) => {
  const roles = event.authorization?.roles ?? []
  const joined = roles.join(',')

  // OIDC: claim com namespace, no ID token e no access token (o AAA Sentinel lê-o do userinfo)
  api.idToken.setCustomClaim('https://aaa-sentinel.com/groups', joined)
  api.accessToken.setCustomClaim('https://aaa-sentinel.com/groups', joined)

  // SAML: atributo multivalor "groups"
  if (api.samlResponse) api.samlResponse.setAttribute('groups', roles)
}

Auth0 · Applications → (a sua app) → Settings

Application Type
Regular Web Application
Allowed Callback URLs
https://auth.aaa-sentinel.com/saml2/idpresponse, https://auth.aaa-sentinel.com/oauth2/idpresponse
Allowed Logout URLs
https://auth.aaa-sentinel.com/saml2/logout, https://app.aaa-sentinel.com/login
  • Use os Roles do Auth0 (User Management → Roles) como grupos: crie um por cada função que queira mapear e atribua-o a cada pessoa. O nome do Role é exatamente o que vai escrever depois no mapeamento do painel.
  • Allowed Callback URLs e Allowed Logout URLs aceitam vários URLs separados por vírgulas: com os da tabela fica coberto para SAML e para OIDC. Clique em Save Changes no fim da página.

Passo-chave: depois de fazer Deploy da Action, vá a Actions → Triggers → post-login, arraste-a para o diagrama entre Start e Complete e clique em Apply. Se não estiver no diagrama, o Auth0 não envia nenhum grupo e toda a gente entra com a função por omissão.

Auth0 com SAML

No separador Addons da aplicação, ative SAML2 Web App. No separador Settings do addon, Application Callback URL é o URL de resposta do painel e o campo Settings leva este JSON, com o bloco logout para o fim de sessão único:

Addon SAML2 Web App · Settingsjson
{
  "audience": "<identificador de entidade que o painel mostra>",
  "recipient": "https://auth.aaa-sentinel.com/saml2/idpresponse",
  "destination": "https://auth.aaa-sentinel.com/saml2/idpresponse",
  "nameIdentifierFormat": "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress",
  "nameIdentifierProbes": [
    "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"
  ],
  "logout": {
    "callback": "https://auth.aaa-sentinel.com/saml2/logout",
    "slo_enabled": true
  }
}

AAA Sentinel · SSO empresarial (SAML)

Fornecedor de identidade
Auth0
URL de metadados SAML
https://O-SEU-TENANT.auth0.com/samlp/metadata/O_SEU_CLIENT_ID
Claim do email
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
Claim dos grupos
groups
Grupos do IdP → função
nome exato de cada Role do Auth0 → função no AAA Sentinel
  • O URL de metadados está no separador Usage do addon, em Identity Provider Metadata: copie-o com o botão direito → «copiar endereço da ligação». Um clique normal descarrega o XML, e o painel precisa do URL.

Claim do email: não use só «email». O Auth0 envia o email com o nome longo da tabela e, se não coincidir, o início de sessão falha porque não chega nenhum email.

Auth0 com OIDC

Com OIDC não é preciso nenhum addon: basta a aplicação e a Action acima. No painel do AAA Sentinel vão estes valores:

AAA Sentinel · SSO empresarial (OIDC)

Fornecedor de identidade
Auth0
Issuer
https://O-SEU-TENANT.auth0.com/
Client ID e Client secret
os de Applications → (a sua app) → Settings
Claim do email
email
Claim dos grupos
https://aaa-sentinel.com/groups
Grupos do IdP → função
nome exato de cada Role do Auth0 → função no AAA Sentinel
  • O issuer leva a barra final: é exatamente o valor que o Auth0 publica como issuer.
  • O segredo não pode ser lido de volta: escreva-o de novo sempre que guardar a configuração.
  • O AAA Sentinel lê os grupos do endpoint userinfo, não só do ID token. Por isso a Action publica um claim com namespace, também no access token, com as funções separadas por vírgulas.
  • Ao sair do AAA Sentinel também termina a sessão do Auth0, através do seu end_session_endpoint. Para isso, https://app.aaa-sentinel.com/login tem de estar em Allowed Logout URLs, como na tabela da aplicação.

Erro típico: deixar «groups» como claim dos grupos em OIDC. Com SAML funciona; com OIDC nunca chega. Use https://aaa-sentinel.com/groups, igual na Action e no painel.

Os erros que nos fizeram perder mais tempo

Nenhum é uma falha da plataforma, mas vistos de fora parecem-se todos: «entro, mas não com a função certa». Esta é a lista a rever:

  • Nomes de grupo que não coincidem: o mapeamento distingue maiúsculas e plurais. Uma função chamada finops-admin não corresponde a finops-admins, e a pessoa entra com a função por omissão.
  • A Action com deploy feito mas fora do fluxo: o Auth0 não envia nenhum grupo e toda a gente entra com a função por omissão.
  • Um email que não pertence ao domínio verificado: o SSO não lhe é oferecido. Os utilizadores de teste precisam de um email do domínio, mesmo sem caixa de correio.
  • Sessões do IdP que continuam abertas: se ao mudar de utilizador entra sem lhe pedirem palavra-passe, confirme que o URL de fim de sessão está permitido no IdP.

Conselho: antes de ativar o SSO para toda a equipa, crie três utilizadores de teste no seu IdP: um no grupo de administradores, outro no de visualizadores e outro sem grupo. Se os três entrarem com a função esperada, o mapeamento está certo.

E com o Microsoft Entra ID ou o Okta?

Os passos no AAA Sentinel são os mesmos com qualquer fornecedor; o que muda é a configuração no IdP. O que fizemos no Auth0 (a Action e o namespace do claim) é próprio do Auth0. Estes são os pontos a vigiar nos outros dois:

  • Microsoft Entra ID: por omissão envia os grupos como Object ID (um GUID) e não como nome, por isso o mapeamento grupo → função preenche-se com esses identificadores, a menos que configure o claim para enviar nomes. Os utilizadores sem caixa de correio têm o email vazio: mapeie o email para o UPN. O domínio .onmicrosoft.com não pode ser verificado; precisa de um domínio próprio. E o Entra não devolve os grupos no userinfo, por isso use SAML para sincronizar funções.
  • Okta: o claim de grupos define-se no servidor de autorização e tem de ser incluído para qualquer scope, porque o AAA Sentinel só pede openid e email. O seu fim de sessão OIDC exige um token que a plataforma não guarda, por isso com OIDC a sessão do Okta continua aberta ao sair; com SAML o fim de sessão é completo.
  • Com qualquer fornecedor: use «Testar ligação» antes de ativar e entre com um utilizador de cada grupo para validar as funções.

Checklist antes de ativar

Com tudo isto em ordem, no dia em que alguém sair da empresa basta desativá-lo no diretório para que não volte a iniciar sessão. Se também quiser terminar uma sessão que tenha aberta, remova-o em Usuários.

  • Plano Business e acesso como proprietário da organização.
  • Um domínio próprio e acesso ao respetivo DNS para publicar o registo TXT.
  • Os grupos do IdP criados, com os nomes exatos que vai mapear.
  • O URL de resposta e o de fim de sessão registados no IdP.
  • O teste de ligação a verde e três utilizadores de teste validados.