Single Sign-On
O Single Sign-On (SSO) autentica o usuário em um provedor de identidade corporativo habilitado no ambiente. O fluxo acontece no navegador, por redirecionamentos e cookies.
O provedor é identificado pelo nome cadastrado pelo administrador do serviço (parâmetro provider).
Importante
Os callbacks (/sso/oauth2/cb, /sso/saml2/acs e similares) são chamados pelo provedor de identidade durante o fluxo. A sua aplicação não deve simular essas chamadas em um login real. Os exemplos curl desta página mostram apenas o formato das requisições.
OAuth 2.0, OAuth 2.1 e OpenID Connect
No login com OAuth 2.0 e OpenID Connect, a API usa PKCE (S256) e um state de uso único, como exige o OAuth 2.1.
sequenceDiagram
participant U as Navegador
participant A as Riversoft STCP DirectLink API
participant P as Provedor de identidade
U->>A: GET /sso/login?provider=<nome>
A-->>U: Redirecionamento ao provedor
U->>P: Autenticação do usuário
P-->>U: Redirecionamento com state e code
U->>A: GET ou POST /sso/oauth2/cb
A-->>U: Sessão estabelecida (cookie de sessão)
Iniciar o login
Abra no navegador a URL de login com o nome do provedor:
https://api.exemplo.com/directlink/v2/sso/login?provider=provedor-corporativoPara inspecionar o redirecionamento:
curl -i --get \
--data-urlencode 'provider=provedor-corporativo' \
"$API_BASE/sso/login"Callback de autorização
Depois de autenticar o usuário, o provedor redireciona o navegador para GET ou POST /sso/oauth2/cb com state e code. O state precisa corresponder ao criado no início do fluxo; não invente nem reutilize esses valores.
# Formato ilustrativo; em um login real, a chamada é feita pelo redirecionamento do provedor.
curl -i --get \
--data-urlencode 'state=<estado-fornecido-no-fluxo>' \
--data-urlencode 'code=<codigo-de-autorizacao>' \
"$API_BASE/sso/oauth2/cb"Logout federado
O logout começa em GET /sso/logout, com o provider e a sessão autenticada. A API encaminha o navegador ao provedor ou ao destino de logout:
curl -i -b cookies.txt -c cookies.txt --get \
--data-urlencode 'provider=provedor-corporativo' \
"$API_BASE/sso/logout"O provedor conclui o logout chamando GET ou POST /sso/oauth2/logout/cb com state e provider:
# Formato ilustrativo.
curl -i --get \
--data-urlencode 'state=<estado-fornecido-no-fluxo>' \
--data-urlencode 'provider=provedor-corporativo' \
"$API_BASE/sso/oauth2/logout/cb"SAML 2.0
sequenceDiagram
participant U as Navegador
participant A as Riversoft STCP DirectLink API
participant P as Provedor SAML
U->>A: GET /sso/login?provider=<nome>
A-->>U: Redirecionamento ao provedor
U->>P: Autenticação do usuário
P-->>U: Formulário com SAMLResponse
U->>A: POST /sso/saml2/acs
A-->>U: Sessão estabelecida (cookie de sessão)
Obter os metadados
Para cadastrar a API no provedor SAML, obtenha os metadados XML do provedor configurado. Informe o provedor na query string ou no caminho:
curl -i --get \
--data-urlencode 'provider=provedor-saml' \
"$API_BASE/sso/saml2/metadata"Login
O login SAML começa em GET /sso/login?provider=provedor-saml. Depois da autenticação, o provedor envia um formulário HTTP POST para /sso/saml2/acs com SAMLResponse e, quando aplicável, RelayState:
# Formato ilustrativo; use apenas em testes com valores de um fluxo SAML válido.
curl -i -X POST "$API_BASE/sso/saml2/acs" \
--data-urlencode 'SAMLResponse=<resposta-saml-base64>' \
--data-urlencode 'RelayState=<estado-opcional>'Logout
O logout SAML usa o mesmo início (GET /sso/logout?provider=provedor-saml). O provedor envia a resposta de logout para /sso/saml2/slo, por GET ou POST:
# Formato ilustrativo.
curl -i -X POST "$API_BASE/sso/saml2/slo" \
--data-urlencode 'SAMLResponse=<resposta-logout-saml-base64>' \
--data-urlencode 'RelayState=<estado-opcional>'Cuidado
As mensagens SAML são assinadas e vinculadas à sessão e ao provedor configurados. Não use valores arbitrários nem reutilize mensagens capturadas.
Referência
Contratos completos em Referência: Single Sign-On.