O Single Sign-On permite que seu time faça login no Studio pelo provedor de identidade da empresa, em vez de gerenciar senhas separadas. O Studio suporta OIDC e SAML 2.0.
Antes de começar
Verifique o seu domínio de e-mail primeiro. O SSO não pode ser salvo até o domínio aparecer como Verified, e mudanças de DNS levam tempo para propagar.
É o domínio verificado que autoriza o seu provedor de identidade. Removê-lo depois desabilita imediatamente o login por SSO para todos nesse domínio, até que ele seja verificado novamente.
Decida o seu Provider ID antes de configurar o provedor de identidade. Ele passa a fazer parte da URL de callback que você registra lá e é fixo depois de salvo — mudá-lo depois significa excluir o provedor e configurá-lo de novo.
Configuração
1. Abra as configurações de SSO
Vá em Settings → Security → Single sign-on nas configurações da sua organização.
2. Escolha um protocolo
| Protocolo | Use quando |
|---|---|
| OIDC | Seu IdP suporta OpenID Connect — Okta, Microsoft Entra ID, Auth0, Google Workspace |
| SAML 2.0 | Seu IdP é apenas SAML — ADFS, Shibboleth ou IdPs corporativos mais antigos |
3. Preencha o formulário
Campos obrigatórios nos dois protocolos:
| Campo | O que informar |
|---|---|
| Provider ID | Um slug curto que identifica esta conexão. Apenas letras, números e hífens. Precisa ser único entre todas as organizações do Studio, então inclua algo específico seu — azure-ad-acme, não azure-ad. Se o ID já estiver em uso, o Studio avisa e sugere um livre. |
| Issuer URL | A URL do issuer do provedor de identidade. Precisa ser HTTPS. |
| Domain | O domínio de e-mail da sua organização, por exemplo company.com. Usuários com esse domínio serão direcionados pelo SSO no login. |
Campos adicionais do OIDC:
| Campo | O que informar |
|---|---|
| Client ID | O client ID da aplicação no seu IdP. |
| Client Secret | O client secret do seu IdP. |
| Scopes | Scopes OIDC separados por vírgula. Padrão: openid,profile,email. |
No OIDC, o Studio busca automaticamente os endpoints (authorization_endpoint, token_endpoint, userinfo_endpoint, jwks_uri) no documento de descoberta /.well-known/openid-configuration do seu issuer. Você só precisa informar a URL do issuer.
Campos adicionais do SAML:
| Campo | O que informar |
|---|---|
| Entry Point URL | A URL do serviço de SSO do IdP para onde o Studio envia as requisições de autenticação. |
| Identity Provider Certificate | O certificado X.509 codificado em Base-64 do seu IdP, usado para verificar as assertions. |
4. Copie a Callback URL
A Callback URL exibida no formulário é o endpoint para onde o seu provedor de identidade precisa redirecionar os usuários depois da autenticação. Copie-a e registre-a no seu IdP antes de salvar.
Provedores OIDC (Okta, Microsoft Entra ID, Google Workspace, Auth0):
https://agent-studio.seeyu.ai/api/auth/sso/callback/{provider-id}Provedores SAML (ADFS, Shibboleth):
https://agent-studio.seeyu.ai/api/auth/sso/saml2/callback/{provider-id}5. Salve e teste
Clique em Save. Para testar, saia da conta e use o botão Sign in with SSO na tela de login. Informe um endereço de e-mail no domínio configurado — o Studio vai redirecionar você para o seu provedor de identidade.
Guias por provedor
Okta (OIDC)
No Okta (documentação oficial):
- Vá em Applications → Create App Integration
- Selecione OIDC - OpenID Connect e depois Web Application
- Defina o Sign-in redirect URI como a sua callback URL do Studio:
https://agent-studio.seeyu.ai/api/auth/sso/callback/okta - Em Assignments, dê acesso aos usuários ou grupos relevantes
- Copie o Client ID e o Client Secret na aba General do app
- O seu domínio Okta é o hostname do console de administração, por exemplo
dev-1234567.okta.com
No Studio:
| Campo | Valor |
|---|---|
| Provider Type | OIDC |
| Provider ID | okta |
| Issuer URL | https://dev-1234567.okta.com/oauth2/default |
| Domain | company.com |
| Client ID | Do app no Okta |
| Client Secret | Do app no Okta |
A issuer URL usa o authorization server padrão do Okta, que já vem configurado em toda org Okta. Se você criou um authorization server customizado, troque default pelo nome do seu server.
Microsoft Entra ID (OIDC)
No Azure (documentação oficial):
- Vá em Microsoft Entra ID → App registrations → New registration
- Em Redirect URI, selecione Web e informe a sua callback URL do Studio, usando o Provider ID que você escolheu:
https://agent-studio.seeyu.ai/api/auth/sso/callback/azure-ad-acme - Depois do registro, vá em Certificates & secrets → New client secret e copie o valor imediatamente — ele não será exibido novamente
- Vá em Overview e copie o Application (client) ID e o Directory (tenant) ID
- Vá em Token configuration → Add optional claim, escolha ID e adicione email. Sem essa claim, o Entra omite o endereço de e-mail de usuários gerenciados, e o login falha com um erro de informação de usuário ausente
- Se Enterprise applications → Studio → Properties → Assignment required estiver como Yes, atribua os usuários ou grupos que devem poder fazer login. A Microsoft rejeita usuários não atribuídos antes que eles cheguem ao Studio
No Studio:
| Campo | Valor |
|---|---|
| Provider Type | OIDC |
| Provider ID | azure-ad-acme (precisa ser globalmente único) |
| Issuer URL | https://login.microsoftonline.com/{tenant-id}/v2.0 |
| Domain | company.com |
| Client ID | Application (client) ID |
| Client Secret | Valor do secret |
Microsoft Entra ID (SAML 2.0)
Use esta opção quando o seu tenant está configurado para SAML em vez de OIDC. Os dois são suportados; o OIDC é mais simples, se você puder escolher.
No Azure (documentação oficial):
- Vá em Enterprise applications → New application → Create your own application e escolha Integrate any other application you don't find in the gallery
- Abra Single sign-on e selecione SAML
- Edite Basic SAML Configuration e defina os dois valores a partir da página de configurações de SSO do Studio:
- Identifier (Entity ID) — o campo SP Entity ID
- Reply URL (Assertion Consumer Service URL) — o campo ACS URL
- Em Attributes & Claims, confirme que as claims padrão estão presentes. O Studio lê as URIs de claim do schema padrão para e-mail, nome e identificador de nome
- Em SAML Certificates, baixe o Certificate (Base64). O conteúdo dele vai no campo Certificate do Studio, que é obrigatório. Opcionalmente, você também pode baixar o Federation Metadata XML e colá-lo no campo IDP Metadata XML do Studio, em Advanced Options — ele não substitui o certificado
- No painel Set up da sua aplicação, copie a Login URL e o Microsoft Entra Identifier
- Em Users and groups, atribua as pessoas que devem poder fazer login — a Microsoft rejeita usuários não atribuídos antes que eles cheguem ao Studio
No Studio:
| Campo | Valor |
|---|---|
| Provider Type | SAML |
| Provider ID | azure-ad-acme (precisa ser globalmente único) |
| Issuer URL | Microsoft Entra Identifier, por exemplo https://sts.windows.net/{tenant-id}/ |
| Domain | company.com |
| Entry Point URL | Login URL do Entra |
| Certificate | Conteúdo do certificado Base64 |
O Identifier (Entity ID) que você define no Entra é o valor contra o qual o Studio valida a audience da assertion. Se ele não coincidir exatamente com o SP Entity ID exibido no Studio, o login falha com um erro de audience incompatível.
Google Workspace (OIDC)
No Google Cloud Console (documentação oficial):
- Vá em APIs & Services → Credentials → Create Credentials → OAuth 2.0 Client ID
- Defina o tipo de aplicação como Web application
- Adicione a sua callback URL do Studio em Authorized redirect URIs:
https://agent-studio.seeyu.ai/api/auth/sso/callback/google-workspace - Copie o Client ID e o Client Secret
No Studio:
| Campo | Valor |
|---|---|
| Provider Type | OIDC |
| Provider ID | google-workspace |
| Issuer URL | https://accounts.google.com |
| Domain | company.com |
| Client ID | Do Google Cloud Console |
| Client Secret | Do Google Cloud Console |
Para restringir o login ao domínio do seu Google Workspace, configure a tela de consentimento OAuth e garanta que o app esteja definido como Internal (apenas usuários do Workspace) em User type. Definir o app como Internal limita o acesso a usuários da sua organização no Google Workspace.
ADFS (SAML 2.0)
No ADFS (documentação oficial):
- Abra AD FS Management → Relying Party Trusts → Add Relying Party Trust
- Escolha Claims aware e depois Enter data about the relying party manually
- Defina o Relying party identifier (Entity ID) como o SP Entity ID exibido nas configurações de SSO do Studio. O SAML compara a audience da assertion com esse valor, então ele precisa coincidir exatamente:
https://agent-studio.seeyu.ai - Adicione um endpoint: SAML Assertion Consumer Service (HTTP POST) com a URL:
https://agent-studio.seeyu.ai/api/auth/sso/saml2/callback/adfs - Exporte o Token-signing certificate em Certificates: clique com o botão direito → View Certificate → Details → Copy to File e escolha Base-64 encoded X.509 (.CER). O arquivo
.cerestá codificado em PEM — renomeie-o para.pemantes de colar o conteúdo no Studio. - Anote a ADFS Federation Service endpoint URL (por exemplo,
https://adfs.company.com/adfs/ls)
No Studio:
| Campo | Valor |
|---|---|
| Provider Type | SAML |
| Provider ID | adfs |
| Issuer URL | https://adfs.company.com/adfs/services/trust (o Federation Service identifier do ADFS) |
| Domain | company.com |
| Entry Point URL | https://adfs.company.com/adfs/ls |
| Certificate | Conteúdo do arquivo .pem |
A Issuer URL é o identificador do próprio provedor de identidade, encontrado no ADFS em Service → Federation Service Properties → Federation Service identifier. Ela não é a URL do Studio — o identificador do Studio é o SP Entity ID exibido nas configurações de SSO, que você registra no ADFS como relying party identifier.
O Studio exige que esse campo use https. O ADFS costuma definir seu Federation Service identifier com uma URI http:// por padrão; se for o seu caso, mude para https no ADFS para que os dois lados concordem.
Como o login funciona depois da configuração
Com o SSO configurado, usuários do seu domínio (company.com) podem fazer login pelo seu provedor de identidade:
- O usuário acessa
agent-studio.seeyu.aie clica em Sign in with SSO - Ele informa o e-mail corporativo (por exemplo,
alice@company.com) - O Studio redireciona para o seu provedor de identidade
- Depois de autenticar, ele volta para o Studio e é adicionado à sua organização automaticamente
- Ele cai no workspace
Usuários que fazem login por SSO pela primeira vez são provisionados automaticamente e adicionados à sua organização — sem convite manual.
O login precisa começar no Studio. Iniciar pelo portal de aplicações do seu provedor de identidade (o My Apps da Microsoft, o bloco no dashboard do Okta) envia uma assertion não solicitada, que o Studio rejeita. Isso é deliberado — aceitá-las permitiria que qualquer pessoa reproduzisse uma assertion no seu tenant — mas significa que um teste iniciado pelo IdP falha mesmo com a configuração correta.
O provisionamento por SSO cria membros internos da organização. Membros externos de workspace são diferentes: eles são convidados para um workspace específico, sem entrar na sua organização nem consumir um dos seus assentos.
O login por senha continua disponível. Obrigar todos os membros da organização a usar exclusivamente o SSO ainda não é suportado.
Common Questions
Configuração em auto-hospedagem
Deployments auto-hospedados usam variáveis de ambiente em vez da verificação de plano/cobrança.
Variáveis de ambiente
# Required
SSO_ENABLED=true
NEXT_PUBLIC_SSO_ENABLED=true
# Required if you want users auto-added to your organization on first SSO sign-in
ORGANIZATIONS_ENABLED=true
NEXT_PUBLIC_ORGANIZATIONS_ENABLED=true
# Optional: comma-separated provider IDs to trust for automatic account linking.
# This applies to non-SSO providers only — SSO linking is authorized by the
# verified domain on the provider itself, not by this list.
SSO_TRUSTED_PROVIDER_IDS=custom-oidc,partner-samlQuando alguém faz login por SSO e já existe uma conta com o mesmo e-mail
(por exemplo, a pessoa se cadastrou antes com e-mail e senha), o Studio vincula
a identidade de SSO a essa conta automaticamente. Essa vinculação é autorizada pelo
domínio verificado associado ao provedor, então funciona tanto para OIDC quanto para SAML e
não depende de o seu IdP informar email_verified.
Você pode registrar provedores pela interface de Settings (igual à nuvem) ou executando o script de registro diretamente no seu banco de dados.
Registro por script
Use isso quando precisar registrar um provedor de SSO sem passar pela interface — por exemplo, durante o deploy inicial ou em automação de CI/CD.
# OIDC example (Okta)
SSO_ENABLED=true \
NEXT_PUBLIC_APP_URL=https://your-instance.com \
SSO_PROVIDER_TYPE=oidc \
SSO_PROVIDER_ID=okta \
SSO_ISSUER=https://dev-1234567.okta.com/oauth2/default \
SSO_DOMAIN=company.com \
SSO_USER_EMAIL=admin@company.com \
SSO_OIDC_CLIENT_ID=your-client-id \
SSO_OIDC_CLIENT_SECRET=your-client-secret \
bun run packages/db/scripts/register-sso-provider.ts# SAML example (ADFS)
SSO_ENABLED=true \
NEXT_PUBLIC_APP_URL=https://your-instance.com \
SSO_PROVIDER_TYPE=saml \
SSO_PROVIDER_ID=adfs \
SSO_ISSUER=https://your-instance.com \
SSO_DOMAIN=company.com \
SSO_USER_EMAIL=admin@company.com \
SSO_SAML_ENTRY_POINT=https://adfs.company.com/adfs/ls \
SSO_SAML_CERT="-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----" \
bun run packages/db/scripts/register-sso-provider.tsO script imprime a callback URL para configurar no seu IdP quando termina.
Para remover um provedor:
SSO_USER_EMAIL=admin@company.com \
bun run packages/db/scripts/deregister-sso-provider.ts