Histórico da Página
...
Índice |
---|
- Visão Geral
- .
01. VISÃO GERAL
O login do produto para o Datasul Smart Services (DSS) deve possuir conceitos unificados para que seu fluxo seja simples, seguro e de fácil utilização.
...
- A tela de login deve estar hospedada no login-service e não nos clientes, pois deste modo não haverá a necessidade de replicar o conteúdo estático da tela em cada aplicação e facilitará sua reutilização;
- A autenticação do mesmo será realizado com conceitos do OAuth2, fluxo Resource Owner Password Credentials (ROPC);
- Este fluxo estará disponivel enquanto a migração da autenticação com o Fluig Identity não estiver concluída;
- Após a liberação do Fluig Identity, será considerada a troca deste modelo de autenticação, possivelmente para o modelo Open ID Connect (OIDC).
- Para o DSS haverá apenas um cadastro de ROPC do Datasul, visto que, para o sistema apenas esse modelo é necessário;
- O provider de autenticação padrão será o banco EMS (login interno com o ERP Datasul);
- Será considerado também o provedor de autenticação LDAP.
- Integrações machine-to-machine também serão consideradas, para estes casos, utilizar o fluxo Client Credentials (CC), também disponível em nosso login-service;
- A etapa de autorização de acesso será realizada pela validação do token, sendo que este já está implementada na arquitetura do DSS;
- Por medidas de segurança, o token de acesso (access_token) expirará após um determinado período de tempo;
- Como o token de acesso perderá a validade, será necessário a utilização do token de atualização (refresh_token), onde o mesmo conterá um tempo de expiração maior.
03.
...
FLUXOS DE AUTENTICAÇÃO / AUTORIZAÇÃO
O fluxo de autenticação pode seguir alguns caminhos, de acordo com sua requisição inicial e sua necessidade.
...
FLUXO 2 - Requisição direta ao front-end | ||
---|---|---|
|
...
FLUXO 3 - Requisição com um token inválido e/ou expirado | ||
---|---|---|
IMAGEM
|
...
|
04
4. O FRONTEND verifica que houve um retorno 401, que não existe um REFRESH TOKEN e o TOTVS
Identity está disponível
5. O FRONTEND gera um STATE e chama a API de AUTHORIZE do ACCOUNTS passando:
grant_type = authorization_code
state = < STATE gerado pelo FRONTEND >
response_type = code
scope = < id da APLICAÇÃO >
client_id = < id da credencial daquela instância da APLICAÇÃO >
redirect_uri = < url da APLICAÇÃO que fará a troca do token >
6. O API de AUTHORIZE do ACCOUNTS valida se a REDIRECT_URI é válida para o CLIENT_ID informado
7. O API de AUTHORIZE do ACCOUNTS gera um CODE e retorna um redirect para a tela de LOGIN do
IDENTITY
8. O IDENTITY apresenta a tela de LOGIN para o USUÁRIO
9. O USUÁRIO informa suas CREDENCIAIS:
e-mail
password
- Para timeout, logout, erros de login o redirecionamento deve ser feito automaticamente para a url padrão cadastrada no ROPC. Podemos usar a arquitetura do serviço para isso, mas, precisamos analisar melhor para não deixar altamente acoplada a solução.
- Para timeout, logout, erros de login o redirecionamento deve ser feito automaticamente para a url padrão cadastrada no ROPC. Podemos usar a arquitetura do serviço para isso, mas, precisamos analisar melhor para não deixar altamente acoplada a solução.
- Ainda teremos que avaliar sobre o refresh token e a melhor estratégia para esse fluxo.
...
. ARMAZENAMENTO DOS TOKENS
STORAGE (sessionStorage)
PRÓS | CONTRAS |
---|---|
Fácil interação Capacidade de armazenamento maior 5-10MB | - Possível inviabilidade devido a cross domain - Abertura de uma nova URL é considerada outra sessão. |
...
- Alinhado com futuras entregas do Identity - Visibilidade entre domínios - Configurações de visibilidade de acordo com regras de segurança | - Limitação em 4KB - Possivel implementação de um cookie opaco - Pode ter uma lentidão para regatar o valor do cookie |
04. FLUXO DE ATUALIZAÇÃO DO TOKEN
05. ANEXOS
RFC000032 - Autenticação Aplicações On-Premises (RASCUNHO)
2. O BACKEND verifica que a requisição tem um TOKEN DE APLICAÇÃO mas o mesmo está EXPIRADO e View file name RFC000032.pdf height 250
retorna um 401 (NÃO AUTORIZADO)
3. O FRONTEND verifica que houve um retorno 401, que existe um REFRESH TOKEN (que é um COOKIE)
4. O FRONTEND chama a API de TOKEN da APLICAÇÃO informando: