Conexão única (SSO)

Com a conexão única (SSO) para o Cloud Directory, é possível fornecer uma experiência de autenticação suave entre múltiplos apps da web. Se a SSO for ativada quando um usuário se conectar inicialmente, ele não precisará reinserir suas credenciais na próxima vez em que se conectar. Em vez disso, ele será conectado automaticamente a qualquer um de seus apps que estejam protegidos pela mesma instância do App ID.

O App ID fornece a SSO para usuários do Cloud Directory. Se você usar um provedor de identidade SAML social ou federado, o SSO será gerenciado por esse provedor e o App ID o respeitará.

Como isso funciona

Efetue o registro de saída do diagrama a seguir para ver a SSO em ação.

de
de SSO do Cloud Directory*

  1. Um usuário do Cloud Directory se conecta ao seu aplicativo pela primeira vez.
  2. Ele é solicitado a se autenticar fornecendo um nome do usuário ou e-mail e senha.
  3. Se as credenciais forem válidas, um usuário será conectado ao seu app. Ao mesmo tempo, o App ID cria uma sessão e configura um cookie no navegador do usuário.
  4. Se um usuário tentar se inscrever em um de seus outros aplicativos, o App ID detectará o cookie de sessão e conectará automaticamente o usuário ao seu aplicativo. Os cookies de sessão do App ID são específicos da instância e são assinados pela chave privada exclusiva da instância.

Atualmente, a conexão única do Cloud Directory é configurada para funcionar quando o Cloud Directory for o único provedor de identidade ativado. Se a sua instância do App ID estiver configurada para usar múltiplos provedores de identidade, a ativação da conexão única não terá efeito no fluxo de conexão. Os usuários são solicitados a inserir suas credenciais do Cloud Directory ou escolher um dos outros provedores em cada conexão.

Configurando a SSO

É possível configurar a conexão única usando o painel do App ID ou usando as APIs.

Com a GUI

É possível configurar a SSO por meio da GUI.

  1. Navegue para a guia Cloud Directory > Conexão única do painel do App ID.

  2. Alterne Ativar conexão única para Ativado.

  3. Configure a quantidade de tempo que um usuário pode estar inativo antes que a sessão SSO expire. Quando ela expirar, o usuário deverá se conectar novamente. O tempo é especificado em minutos e o tempo máximo permitido para inatividade é 10.080 minutos (7 dias). O tempo padrão é 1.440 minutos, que é o equivalente a um dia.

  4. Inclua suas URIs redirecionando na caixa URI de redirecionamento de logoute clique no sinal +. Certifique-se de registrar somente os aplicativos nos quais confia. Ao registrar o URI, você autoriza o App ID a inclui-lo no fluxo de trabalho de autorização.

  5. Clique em Salvar.

Com a API

Ao usar a API do administrador de configuração de SSO para definir três configurações, é possível ativar o recurso.

Uma chamada de exemplo:

{
  "isActive": true,
  "inactivityTimeoutSeconds": 86400,
  "logoutRedirectUris": [
    "http://my-first-app.com/after_logout",
    "http://my-second-app.com/after_logout"
  ]
}
Definições de configuração de SSO
Configuração Definição
isActive Para ativar a SSO, configure esse valor como true. A configuração padrão é false.
inactivityTimeoutSeconds O maior período de tempo que pode passar sem qualquer atividade do usuário antes que o usuário seja obrigado a inserir novamente as suas credenciais. Esse valor é especificado em segundos e pode ser, no máximo, 604800 seconds (7 dias). A configuração padrão é 86400 seconds (1 dia).
logoutRedirectUris Uma lista separada por vírgula de URIs permitidos para os quais o App ID pode redirecionar seus usuários depois que eles se conectarem.

Configurando o logout

Com o App ID, é possível terminar a sessão de conexão única do usuário para seu navegador atual. Se o terminal de API for acessado pelo navegador do usuário, a sessão dele será finalizada e o usuário será solicitado a inserir suas credenciais em sua próxima tentativa de conexão nesse navegador, para qualquer um de seus apps.

Quando um dos fluxos que estão relacionados à mudança, reconfiguração ou renovação de uma senha é iniciado, as sessões em todos os clientes são automaticamente terminadas para o usuário.

Usando a API

Para desconectar um usuário, redirecione seu navegador usando suas informações para concluir a chamada API a seguir.

https://<region>.appid.cloud.ibm.com/oauth/v4/<tenantID>/cloud_directory/sso/logout?redirect_uri=<redirectURI>&client_id=<clientID>
Variáveis da chamada de API de saída de SSO
Variável Valor
region A região na qual sua instância do App ID é fornecida. Saiba mais sobre as regiões disponíveis.
tenantID O identificador exclusivo para a sua instância do App ID. Você pode encontrar esse valor na guia Service Credentials (Credenciais de serviço ) do painel App ID. Se você não tiver um conjunto de credenciais de serviço, será possível criar uma e tirar o valor de lá.
redirectURI Um URI que você especificou em sua configuração de SSO por meio do painel do App ID. Por motivos de segurança, se você não especificar um valor, o redirecionamento não poderá ocorrer e um erro será exibido.
clientID O ID do cliente do seu aplicativo.

Mesmo que a sessão SSO seja finalizada, um usuário com um token de acesso válido armazenado em sua sessão pode não precisar inserir suas credenciais novamente até que seu token expire. Por padrão, o token expira após uma hora.

Usando o SDK do servidor Node.JS

Também é possível usar o SDK do servidor App ID Node.js para manipular automaticamente o redirecionamento.

  1. Configure logoutSSO como um método. Por exemplo:

    let webAppStrategy = new WebAppStrategy(.....);
    ....
    webAppStrategy.logoutSSO();
    
  2. Configure o logout.

    app.get('/logoutSSO', (req, res) => {
       res.clearCookie("refreshToken");
       webAppStrategy.logoutSSO(req,res, { "redirect_uri": "https://my-app.com/after_logout" });
       });
    

Finalizando todas as sessões para um usuário

Como um administrador, é possível encerrar todas as sessões de conexão única para qualquer usuário usando as APIs do administrador do App ID. As APIs são protegidas por um token do Cloud IAM.

Solicitação de API de exemplo:

POST https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/cloud_directory/Users/<userID>/sso/logout
Headers:
Authorization: Bearer <IAMToken>
Content-Type: application/json
Variáveis que são necessárias para encerrar todas as sessões SSO de um usuário
Variável Valor
Content-Type O tipo de conteúdo de sua solicitação. O valor aceito é application/json.
region A região na qual sua instância do App ID é fornecida. Saiba mais sobre as regiões disponíveis.
tenantID O identificador exclusivo para a sua instância do App ID. Você pode encontrar esse valor na guia Service Credentials (Credenciais de serviço ) do painel App ID. Se você não tiver um conjunto de credenciais de serviço, será possível criar uma e tirar o valor de lá.
userID O identificador exclusivo para um usuário do Cloud Directory. É possível obter o ID usando as APIs de usuários do Cloud Directory ou visualizando o token de identidade do usuário.

Quando você chama essa API, todas as sessões de SSO do usuário especificado são invalidadas. Isso significa que a próxima vez que o usuário tentar se conectar em qualquer um de seus apps, de qualquer dispositivo ou navegador, ele será solicitado a reinserir as suas credenciais.