SSO iniciado pelo IdP (somente SAML)
O SSO iniciado pelo IdP é um processo de autenticação única em que o Provedor de Identidade (IdP) controla principalmente o fluxo de autenticação. Esse processo começa quando um usuário faz login na plataforma do IdP, como um portal corporativo ou um painel de identidade centralizado. Uma vez autenticado, o IdP gera uma asserção SAML e direciona o usuário ao Provedor de Serviço (SP) para acessar o aplicativo ou serviço.
Riscos e considerações
O SSO iniciado pelo IdP pode introduzir várias vulnerabilidades de segurança das quais as organizações devem estar cientes. Como o processo de autenticação é iniciado pelo IdP sem uma solicitação direta do usuário, ele pode ser suscetível a vários ataques, incluindo Cross-Site Request Forgery (CSRF).
Essa falta de autenticação iniciada pelo usuário pode levar a acessos não autorizados se as proteções adequadas não estiverem implementadas. Além disso, a dependência de um único ponto de autenticação aumenta o risco de uma violação de segurança, pois comprometer o IdP pode expor todos os aplicativos conectados.
Portanto, é altamente recomendado utilizar o SSO iniciado pelo SP, que oferece um fluxo de autenticação mais seguro e controlado, garantindo que os usuários solicitem explicitamente o acesso aos serviços.
Conectar SSO iniciado pelo IdP com aplicativos OIDC do Logto
O Logto, como um provedor OpenID Connect (OIDC), não suporta SSO iniciado pelo IdP. No entanto, você pode configurar o Logto como um SP para suportar SSO iniciado pelo IdP com seu IdP corporativo usando SAML. Essa configuração permite que você aproveite as capacidades de autenticação do Logto enquanto mantém o controle do IdP sobre o fluxo de autenticação.
Por padrão, esse recurso não está habilitado no Logto. Se você precisar do SSO iniciado pelo IdP habilitado para seu tenant, entre em contato com nossa equipe de suporte.
Pré-requisitos
Antes de configurar o SSO iniciado pelo IdP, você precisa criar primeiro um conector SAML. Navegue até Console > SSO corporativo (Enterprise SSO) e siga o guia passo a passo para configurar um conector SAML com seu IdP.
Depois que o conector SAML estiver configurado, você pode habilitar o método de login SSO na seção Login & conta > Cadastro e login e testar o fluxo de SSO iniciado pelo SP para garantir que a configuração está correta. Certifique-se de que o SSO iniciado pelo SP está funcionando conforme esperado antes de prosseguir com o SSO iniciado pelo IdP.
Habilitar SSO iniciado pelo IdP
Depois que o recurso de SSO iniciado pelo IdP estiver habilitado para seu tenant, você verá uma aba extra na página de configurações do seu conector SAML, chamada SSO iniciado pelo IdP. Ative a opção SSO iniciado pelo IdP para ativar o recurso para o conector.
Selecionar o aplicativo SP
Diferente do SSO iniciado pelo SP, onde o fluxo de autenticação começa pelo SP, o SSO iniciado pelo IdP requer um aplicativo SP do lado do cliente para redirecionar os usuários após o processo de autenticação. Você pode selecionar o aplicativo SP na lista de aplicativos registrados no dropdown Aplicativo padrão (Default application).
Apenas aplicativos do tipo Aplicativo Web Tradicional (Traditional Web App) e Aplicativo de Página Única (Single Page App) são suportados para SSO iniciado pelo IdP. Certifique-se de selecionar o tipo de aplicativo apropriado para seu caso de uso.
No lado do seu IdP, deixe o parâmetro RelayState como VAZIO para que o fluxo de SSO iniciado pelo IdP funcione corretamente. O Logto irá gerenciar o redirecionamento com base no aplicativo SP padrão selecionado.
Configurar o fluxo de autenticação iniciado pelo IdP
Para conectar o SSO SAML iniciado pelo IdP com OIDC, o Logto oferece duas opções de configuração para lidar com a solicitação de autenticação.
Opção A: Redirecionar para o aplicativo SP padrão (Recomendado)
Quando o IdP inicia o fluxo SSO e envia a asserção SAML para o Logto, uma sessão de asserção SSO iniciada pelo IdP será criada. O Logto irá redirecionar o usuário para o aplicativo SP padrão para iniciar uma solicitação de autenticação OIDC padrão no lado do cliente.
Para configurar essa opção, selecione o cartão Redirecionar para o cliente para autenticação iniciada pelo SP na aba SSO iniciado pelo IdP das configurações do conector SAML.
-
Forneça uma URL de redirecionamento do cliente (Client redirect URL) para redirecionar o usuário ao aplicativo SP padrão após o fluxo de SSO iniciado pelo IdP. O Logto irá redirecionar o usuário para essa URL com o parâmetro de consulta
?ssoConnectorId={connectorId}anexado à URL. O aplicativo cliente deve lidar com o redirecionamento e iniciar a solicitação de autenticação OIDC. (Recomendamos usar uma rota ou página dedicada em seu aplicativo cliente para lidar com a solicitação de autenticação SSO iniciada pelo IdP.) -
Lide com a solicitação de autenticação OIDC no lado do cliente usando o parâmetro de consulta
ssoConnectorIdpara identificar o conector SAML que iniciou o fluxo de autenticação SSO iniciado pelo IdP. -
Passe o parâmetro de autenticação login direto (direct sign-in) na solicitação de login para o Logto para completar o fluxo de autenticação SSO.
// Exemplo React
import { Prompt, useLogto } from '@logto/react';
import { useEffect } from 'react';
import { useNavigate, useSearchParams } from 'react-router-dom';
const SsoDirectSignIn = () => {
const { signIn } = useLogto();
const [searchParams] = useSearchParams();
useEffect(() => {
const ssoConnectorId = searchParams.get('ssoConnectorId');
if (ssoConnectorId) {
void signIn({
redirectUri,
prompt: Prompt.Login,
directSignIn: {
method: 'sso',
target: ssoConnectorId,
},
});
}
}, [searchParams, signIn]);
};
redirectUri: Oredirect_uripara redirecionar o usuário após a conclusão do fluxo de autenticação OIDC.prompt=login: Força o usuário a fazer login usando a identidade do SSO iniciado pelo IdP.directSignIn=sso:{connectorId}: Especifica o método de login direto comossoe o ID do conector SAML de destino. Esse parâmetro irá acionar o fluxo de autenticação SSO diretamente sem exibir a página de login. O usuário será autenticado automaticamente usando a sessão de asserção SSO iniciada pelo IdP preservada, se o ID do conector corresponder e a sessão for válida.
Esse método garante que o fluxo de autenticação seja seguro e siga o protocolo OIDC padrão, mantendo o controle do IdP sobre o processo de autenticação. O aplicativo cliente pode aproveitar a sessão de asserção SSO iniciada pelo IdP para autenticar o usuário sem etapas adicionais de login, mantendo o fluxo de autenticação seguro e controlado. O aplicativo cliente ainda pode validar os parâmetros state e PKCE para garantir que a solicitação de autenticação seja segura.
Esse método está disponível para aplicativos do tipo Aplicativo Web Tradicional (Traditional Web App) e Aplicativo de Página Única (Single Page App). E é recomendado para todos os casos de uso.
Opção B: Autenticar o usuário diretamente com SSO iniciado pelo IdP
Em determinadas circunstâncias, o SP pode não conseguir lidar com o callback do SSO iniciado pelo IdP e iniciar a solicitação de autenticação OIDC. Nesse caso, o Logto oferece uma opção alternativa para autenticar diretamente o usuário com a sessão de asserção SSO iniciada pelo IdP.
Essa opção é considerada menos segura e não é recomendada. O fluxo de autenticação ignora o protocolo OIDC padrão. Como a solicitação de autenticação é iniciada pelo IdP, o aplicativo cliente pode não conseguir validar a solicitação de autenticação de forma segura. Por exemplo, o aplicativo cliente não pode validar os parâmetros state e PKCE para garantir que a solicitação de autenticação seja segura.
Esse método não está disponível para aplicativos do tipo Aplicativo de Página Única (Single Page App), pois requer que o aplicativo cliente lide com a solicitação de autenticação de forma segura usando o parâmetro PKCE. Se você precisar implementar SSO iniciado pelo IdP para um aplicativo SPA, utilize a opção acima.
Para configurar essa opção, selecione a opção Login direto usando SSO iniciado pelo IdP (Directly sign-in using IdP-initiated SSO) na aba SSO iniciado pelo IdP das configurações do conector SAML.
-
Selecione o URI de redirecionamento pós-login (Post sign-in redirect URI) para redirecionar o usuário de volta ao aplicativo cliente após a autenticação bem-sucedida. Essa URL será usada como o
redirect_urina solicitação de autenticação OIDC. O URI deve ser um dos URIs de redirecionamento permitidos registrados no aplicativo cliente.nota:É altamente recomendado usar um URI de redirecionamento dedicado para SSO iniciado pelo IdP. Dado que a solicitação de autenticação é não solicitada, o aplicativo cliente deve gerenciar a resposta de forma independente, separada do fluxo de autenticação padrão iniciado pelo SP.
-
Personalize os parâmetros da solicitação de autorização, se necessário, usando o editor json Parâmetros de autenticação adicionais (Additional authentication parameters) (seguindo o tipo
Map<string,string>).Exemplo: Por padrão, o Logto solicita apenas os escopos
openideprofile. Você pode adicionar escopos ou parâmetros adicionais à solicitação de autenticação.{
"scope": "email offline_access"
}- adicionar escopo adicional
emailpara solicitar o endereço de e-mail do usuário. - adicionar escopo
offline_accesspara solicitar o token de atualização (refresh token).
Também recomendamos fornecer um parâmetro
statepersonalizado para validar a resposta de autenticação de forma segura.{
"state": "valor-personalizado-state"
}O aplicativo cliente deve validar o parâmetro
statena resposta do código de autorização para garantir que a solicitação de autenticação seja válida. - adicionar escopo adicional