Skip to main content

Autenticação e Login

A Carol possui autenticação OAuth, podendo ser explorado a autenticação API Key (também conhecido como API Token ou Connector Token).

Veja mais informações sobre OAuth na RFC 6749.

Visão Geral

Abaixo um fluxo demonstrando o processo de autenticação OAuth:

Overview

Abaixo é listado os principais serviços ligados ao fluxo OAuth:

Oauth2

Esses serviços permitem efetuar a autenticação na Carol e efetuar a validação de um token já existente. Vamos ver os detalhes desses serviços

/api/v1/oauth2/token

Este endpoint permite efetuar a autenticação na Carol, validando se o usuário e a senha possuem acesso à plataforma. Abaixo é detalhado os parâmetros necessários:

ParâmetroValor
grant_typeOBRIGATÓRIO. Este parâmetro aceita um dos seguintes valores: password ou refresh_token. Password é utilizado no fluxo de geração do token, enquanto refresh token é utilizado para renovar um token já existente.
usernameOBRIGATÓRIO. O usuário que está no processo de autenticação.
passwordOBRIGATÓRIO. A senha do usuário no fluxo de autenticação.
refresh_tokenOPCIONAL. Obrigatório apenas quando grant_type for refresh_token. Este parâmetro espera o código refresh_token para gerar um novo token.
subdomainOBRIGATÓRIO. Este parâmetro é o nome da Tenant (antes chamado de ambiente). O nome da Tenant é parte da URL, e pode ser obtido da seguinte forma no exemplo a seguir: "totvs.carol.ai/production", o nome da Tenant é production.
orgSubdomainOBRIGATÓRIO. Nome da organização. Este parâmetro espera o mesmo nome definido como subdominio da URL da Carol. Por exemplo, "totvs.carol.ai/production", o nome da organização é totvs.
connectorIdOBRIGATÓRIO. Este parâmetro recebe o código do conector ou o nome do conector (visualizado na URL ou nos detalhes do conector).

Abaixo é um exemplo da request usando o comando curl:

curl -X POST "https://clockin.carol.ai/api/v1/oauth2/token" -H "accept: application/json" -H "content-type: application/x-www-form-urlencoded" -d "grant_type=password&connectorId=clockinmobile&username=robson.poffo%40totvs.com&password=SENHA_AQUI&subdomain=clockin&orgSubdomain=global"

O resultado da request é semelhante ao abaixo:

{ "access_token": "1e2fe288fa3a4ca38257294008081317", "client_id": "4c2c9090e7c611e893bf0e900682978b_33dd1190ff2c11e8858be609736e2a59_c1367ca0e86311e8b979aedbc4a09666_mdmConnector", "expires_in": 3495, "refresh_token": "1fd8bc5763734ad0b8e18e2cd328f2f8", "state": "", "timeIssuedInMillis": 1591855130722, "token_type": "bearer" }

/api/v1/oauth2/token/{access_token}/userAccessDetails

Este endpoint permite resgatar detalhes referente ao token, inclusive verificar se o token ainda está válido:

ParâmetroValor
access_tokenOBRIGATÓRIO. Access token gerado pelo endpoint "token".

Abaixo é um exemplo da request usando o comando curl:

 curl -X GET "https://clockin.carol.ai/api/v1/oauth2/token/1e2fe288fa3a4ca38257294008081317/userAccessDetails" -H "accept: application/json" 

O resultado da request é semelhante ao abaixo:

{ "envUserId": "c1367ca0e86311e8b979aedbc4a09666", "externalAppId": "33dd1190ff2c11e8858be609736e2a59", "loginLevel": "mdmTenant", "orgId": "856e0510729e11e99928acde48001122", "refreshToken": "1fd8bc5763734ad0b8e18e2cd328f2f8", "system": false, "tenantId": "4c2c9090e7c611e893bf0e900682978b", "userId": "fe115382754247d883d9a11b88b3d96e" }

Connector Token (API Key)

Além do processo convencional de autenticação do processo OAuth, é possível fazer a geracão de um token persistente. Este token é chamado de Connector Token, e o mesmo é utilizado principalmente em integração de processos sendo que é utilizado uma chave pública e uma chave privada, conforme detalhado a seguir:

Sendo que já efetuamos o login na plataforma, vamos acessar item Tenant Admin no menu lateral (primeiro ícone no cabeçalho, da direita para a esquerda):

Connector Token

Importante

O token do tipo Google Service Account gera uma Service Account com permissão para acessar recursos da Google como o BigQuery. Essa Service Account também atribui permissão para fazer a criação de modelos de machine learning (create model). Maiores detalhes na seção Carol App desta documentação.

A criação de novos tokens ocorre pelo botão Create token (na tela acima). Na tela que será aberta, deverá ser selecionado o conector que será utilizado para criar o token, também é possível adicionar uma descrição para revisão futura deste token.

Ao término destes passos a tela abaixo será apresentada. Você deverá guardar as seguintes informações (exemplo) para utilizar nas requests à plataforma:

ConnectorID: 90d7bcd37c424d85a733a42117528792

Connector Token: d0d7dc1612394edcb4d961dc80393cb6

O acesso pelo conector permite visualizar que ele possui tokens gerados, e é possível navegar para o fluxo acima apresentado (Tenant Admin), podendo assim efetuar a manutenção dos tokens:

New token 3

Regras de Token

Um item importante a se considerar referente ao Connector é que, em cada Tenant, só é possível criar um Token por connector.

Caso o usuário queira efetuar uma consulta para validar se o token ainda é valido, deve-se utilizar o endpoint abaixo, preenchendo o apiKey juntamente com o connectorID:

/api/v1/apikey/details

Regras

Revogação

O Connector Token uma vez criado, não expira. Para que o mesmo seja revogado ou invalidado, deve-se por conta das regras abaixo:

  1. Revoke Manual: Na lista de conectores, note que é exibido um conector (referente ao token válido) juntamente com a opção Revoke. Clicando nesta opção pode-se revogar o token atual.

Revogation

Revogation2

  1. Novo token gerado para o mesmo usuario e conector: Uma vez que um connector já obtém um token criado, caso o usuário crie um novo, o Token anterior será invalidado. Há situações em que outro app pode criar um outro token para o mesmo connector, invalidando o atual. Nesses casos, é recomendado alinhar com o time para que ambos usem o mesmo, evitando impactos de validação.

Revogation3

  1. Usuário removido da plataforma.

Próximos Passos

Uma vez que a autenticação ocorreu, teremos o access_token disponível. Este valor deve ser inserido no Swagger no atributo Access Token (parte superior central).

Access Token

As subsequentes requests são autenticadas conforme a request a seguir:

 curl -X GET "https://clockin.carol.ai/api/v1/users?pageSize=10&sortOrder=ASC" -H "accept: application/json" -H "Authorization: 1e2fe288fa3a4ca38257294008081317" 

Se a autenticação ocorreu através do Connector Token (conforme descrito acima) a request (comando curl) acima ficará da seguinte forma:

curl -X GET "https://clockin.carol.ai/api/v1/users?pageSize=10&sortOrder=ASC" -H "accept: application/json" -H "X-Auth-ConnectorId: 90d7bcd37c424d85a733a42117528792" -H "X-Auth-Key: d0d7dc1612394edcb4d961dc80393cb6"

Fluxo de Login

O processo para login na plataforma Carol inicia-se com:

  1. um convite enviado ao usuário por e-mail pelo administrador da organização ou Tenant através da própria plataforma Carol;

Invite

  1. o aceite do convite enviado por e-mail pelo usuário;

Email Accept

  1. o recebimento de um e-mail confirmando o sucesso no registro do usuário dentro da plataforma Carol na organização ou Tenant indicada;

Register

  1. a execução do login na organização ou Tenant dentro da plataforma Carol.

Login

Um fluxo alternativo se dá pela marcação da opção de login por SMS nas configurações da Tenant ou organização. Neste fluxo o usuário precisa de um número de telefone cadastrado para receber o convite enviado pelo Administrador da Tenant ou organização.

SMS

Parâmetros

  • Use SMS: indica que a Tenant pode utilizar SMS.
  • Login by SMS: indica que a Tenant pode efetuar login por SMS.
  • Receipt of the code by email: indica que o usuário receberá uma cópia do token por e-mail.
Importante

Para que o administrador da Tenant possa convidar usuários é necessário que opção Allow Tenant users to invite new users to the Tenant esteja marcada dentro das configurações da Organização.

Settings

Habilitando a integração do login pelo TOTVS Identity

Após realizado o fluxo de login pela plataforma Carol, é possível alterá-lo, de modo que o método de autenticação utilizado seja por meio do TOTVS Identity ou de um provedor de identidade terceiro.

Atenção

A configuração de identidade é realizada a nível de organização, ou seja, todas as tenants dentro da organização terão esta configuração.

Para isto basta acessar as configurações da organização e ativar o login usando um provedor de identidade.

IDP

Depois de ativado, selecione a opção TOTVS Identity ativando ela e faça logout da plataforma.

TOTVS Identity

Ao realizar novo login a plataforma irá redirecionar o usuário para o novo provedor de identidade.

Atenção

Você precisa ter seu usuário antes cadastrado neste provedor de identidade e tê-lo atribuído para o aplicativo TOTVS Identity respectivo à sua organização. Procure o seu gestor e peça a ele para habilitar este acesso dentro do TOTVS Identity. A TOTVS Labs não é responsável por esse papel, pois trata-se de um tema de Governança.

Caso já tenha o usuário cadastrado e atribuido ao aplicativo TOTVS Identity da sua organização, será apresentada a seguinte interface ao usuário.

IDP Signin

Caso o usuário já tenha se logado em uma sessão do identity, ele será redirecionado para a página inicial da Carol por meio da autenticação de login única (SSO).

Caso contrário deverá informar suas credenciais de acesso para depois ser direcionado a página inicial da Carol.

IDP Credentials

Caso o usuário seja direcionado ao Fluig Identity, isso significa que ele não foi atribuído ao aplicativo TOTVS Identity da sua organização. Desta forma siga o procedimento indicado anteriormente para habilitar o acesso com o seu gestor.

Fluig

Atenção

Uma vez habilitado o TOTVS Identity a funcionalidade de convites por meio da Carol estão desativadas, portanto, toda a gestão de usuários na Carol (inclusão, exclusão e manutenção) passa a ser responsabilidade da TOTVS, pois trata-se de um tema de Governança Corporativa. Procure o seu gestor e peça a ele para direcionar sua necessidade dentro do TOTVS Identity.