SAML vs OAuth — quando usar cada
OAuth/OIDC (Google, GitHub, Apple) é ideal para aplicações consumer e B2C onde usuários têm contas pessoais em provedores públicos. É mais simples de configurar e funciona em qualquer plano.
SAML 2.0 é o padrão corporativo. Use quando o cliente:
- Usa um Identity Provider (IdP) corporativo como Okta, Azure AD, OneLogin ou ADFS.
- Exige que todos os funcionários autentiquem via o diretório da empresa.
- Precisa de provisionamento automático de usuários (SCIM 2.0).
- Está em um contrato Enterprise ou Scale.
Plano necessário: SAML SSO está disponível apenas nos planos Enterprise e Scale. Projetos no plano Free ou Pro verão o campo desabilitado.
Metadados do SP (Service Provider)
O SuperDB atua como o SP (Service Provider) na relação SAML. Você precisará fornecer estes dados ao seu IdP:
Entity ID (Issuer):
https://auth.superdb.com.br/saml/sp
ACS URL (Assertion Consumer Service):
https://auth.superdb.com.br/saml/acs
Metadata XML URL:
https://auth.superdb.com.br/saml/metadata.xml
Binding: HTTP-POST
NameID Format: urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
Passo a passo com Okta
- No painel Okta, acesse Applications → Create App Integration → SAML 2.0.
- Nome do app: ex. "SuperDB Prod".
- Em SAML Settings:
- Single sign-on URL:
https://auth.superdb.com.br/saml/acs - Audience URI (SP Entity ID):
https://auth.superdb.com.br/saml/sp - Name ID format: EmailAddress
- Attribute statements: adicione
email → user.emailename → user.displayName
- Single sign-on URL:
- Finalize e abra o app criado. Acesse Sign On → View SAML setup instructions.
- Copie o Identity Provider Issuer, o Single Sign-On URL e o X.509 Certificate.
- No Admin UI do SuperDB: Auth → SSO → Nova Conexão SAML. Cole os dados do IdP.
- Clique em Testar conexão antes de ativar em produção.
Troubleshooting
Certificado expirado
O certificado X.509 do IdP tem validade. Quando expirar, o login SAML retorna signature_invalid. Atualize o certificado no Admin UI → Auth → SSO → Editar conexão → atualizar certificado.
Atributos não mapeados
Se o email do usuário não chega no atributo correto, verifique os Attribute Statements no Okta. O SuperDB espera o email em email ou NameID.
InResponseTo mismatch
Ocorre quando o IdP responde a um request que já expirou ou foi processado. Garanta que o relógio do servidor esteja sincronizado (máximo 5 minutos de diferença).