====== WEB-Service para Gestão de Credencial de Acesso ======
===== Informações Gerais =====
==== Serviço ====
^ Nome: | Web Service para gestão de credencial de acesso aos serviços |
^ Nome na interface: | WSCredencial |
^ Início da operação: | 31/05/2017 |
^ Endereço do WSDL - Testes | https://testews.siop.gov.br/services/credencial/WSCredencial?wsdl |
^ Endereço do WSDL - Produção | https://webservice.siop.gov.br/services/credencial/WSCredencial?wsdl |
==== Objetivo ====
Fornecer uma interface que possibilite a interoperabilidade entre os sistemas governamentais e o SIOP para recuperação de acesso e, quando aplicável, troca de senha da credencial utilizada pelos web services.
Além das operações SOAP do ''WSCredencial'', usuários de web service já migrados para o novo modelo de autenticação utilizam a interface GraphQL do módulo de login para obtenção de token, que deve ser enviado no cabeçalho ''Authorization'' das chamadas aos demais web services.
===== Como Identificar Seu Fluxo =====
Antes de implementar ou consumir o serviço, identifique em qual situação sua credencial se encontra.
**Siga o fluxo MD5 se:**
* seu sistema autentica enviando a credencial no corpo XML da requisição SOAP;
* sua credencial ainda utiliza hash MD5;
* a operação ''gerarNovaSenha'' envia uma senha provisória em texto pleno para o e-mail cadastrado;
* a operação ''trocarSenha'' ainda é utilizada no seu processo.
**Siga o fluxo Argon2Id + Token se:**
* sua autenticação já é feita obtendo token na interface GraphQL do módulo de login;
* suas chamadas aos web services usam o cabeçalho ''Authorization: Bearer [token]'' ;
* a recuperação de acesso envia uma URL token para definição de nova senha;
* sua credencial já foi migrada para o novo padrão de autenticação.
**Importante:** após a migração para ''Argon2Id + token'', a credencial deixa de utilizar autenticação por hash MD5 no XML.
===== Fluxo 1 - Usuário de Web Service Ainda em MD5 =====
Neste fluxo, a autenticação continua sendo feita da forma tradicional, com envio da estrutura ''CredencialDTO'' no corpo XML da requisição SOAP.
==== Cadastro e uso inicial ====
1. O administrador do SIOP cadastra a credencial no sistema.
2. O SIOP cria a credencial com marcação para exigir troca de senha.
3. O SIOP envia uma senha provisória para o e-mail cadastrado.
4. O cliente cria sua senha definitiva por meio da operação ''WSCredencial.trocarSenha(CredencialDTO credencial, String novaSenha)''.
5. Depois disso, a credencial continua sendo usada nas requisições SOAP com hash MD5 no campo ''senha''.
==== Regras da operação trocarSenha ====
Na operação ''trocarSenha'':
* o campo ''credencial.usuario'' deve conter o login cadastrado para a credencial;
* o campo ''credencial.senha'' deve conter o hash MD5 da senha atual;
* o campo ''novaSenha'' deve conter a nova senha em texto puro;
* a nova senha deve atender às regras vigentes de segurança.
Exemplo de requisição:
[hash md5 da senha atual]
[login credencial]
[nova senha em texto puro]
==== Regras da operação gerarNovaSenha ====
Na operação ''gerarNovaSenha'':
* informar apenas os atributos ''email'' e ''usuario'' da credencial;
* o sistema envia uma senha provisória em texto pleno para o e-mail cadastrado;
* após o recebimento da senha, o cliente deve utilizar novamente a operação ''trocarSenha'' para definir a senha desejada.
Exemplo de requisição:
[e-mail da credencial]
[login da credencial]
==== Como autenticar nos demais web services neste fluxo ====
Enquanto a credencial estiver neste fluxo, a autenticação aos demais web services continua sendo feita com envio de ''CredencialDTO'' no XML da operação, contendo:
* ''usuario'': login da credencial;
* ''senha'': hash MD5 da senha da credencial.
===== Fluxo 2 - Usuário de Web Service Migrado para Argon2Id + Token =====
Neste fluxo, a autenticação deixa de ser feita por hash MD5 no XML e passa a usar token obtido na interface GraphQL do módulo de login.
==== Como funciona ====
1. O cliente autentica com login e senha em texto puro na interface GraphQL do módulo de login.
2. O sistema retorna ''tokenSiop'' e ''refreshToken''.
3. O cliente passa a enviar o token no cabeçalho ''Authorization'' das chamadas aos demais web services.
4. A credencial deixa de usar autenticação por hash MD5 no XML.
==== Endpoint para obtenção do token ====
**Testes:** https://testews.siop.gov.br/modulo/login/api
**Produção:** https://www1.siop.planejamento.gov.br/modulo/login/api
==== Mutation GraphQL para autenticação ====
{
"query": "mutation { autenticarUsuarioSenha(login: \"SEU_LOGIN\", senha: \"SUA_SENHA_EM_TEXTO_PLANO\") { tokenSiop, refreshToken } }"
}
Exemplo de resposta:
{
"data": {
"autenticarUsuarioSenha": {
"tokenSiop": "eyJhbGciOi...",
"refreshToken": "eyJhbGciOi..."
}
}
}
==== Como autenticar nos demais web services neste fluxo ====
As chamadas aos demais web services devem enviar o token no cabeçalho ''Authorization'':
Bearer [tokenSiop]
==== Recuperação de acesso neste fluxo ====
Para usuários já migrados:
* a operação ''gerarNovaSenha'' continua existindo;
* porém, em vez de enviar senha provisória em texto pleno, ela envia uma URL token para definição de nova senha;
* a definição da nova senha ocorre pela interface web;
* a operação ''trocarSenha'' deixa de ser o fluxo aplicável para a credencial já migrada.
==== Observações importantes ====
* se a credencial ainda estiver em MD5 e a senha atual não atender aos critérios mínimos de segurança, pode ser necessário usar ''trocarSenha'' antes da primeira autenticação GraphQL;
* após migrada para ''Argon2Id + token'', a credencial não deve mais usar hash MD5 no XML;
* o ''tokenSiop'' possui validade temporária;
* quando necessário, deve-se usar o ''refreshToken'' para renovação do acesso.
===== Operações SOAP =====
==== 2.1 Trocar Senha ====
Operação para troca de senha da credencial de acesso.
Nome da operação na interface do serviço: ''trocarSenha''
Parâmetro(s) de entrada:
^ Parâmetro ^ Tipo (tamanho) ^ Observações ^
| credencial | CredencialDTO | Credencial do usuário |
| novaSenha | String | Nova senha em texto puro, conforme regras vigentes de segurança |
Tipo de Retorno: ''RetornoDTO''
**Observação:** esta operação é aplicável ao fluxo de usuários que ainda utilizam autenticação por MD5. Para usuários já migrados para ''Argon2Id + token'', a redefinição de senha ocorre por URL token enviada por e-mail.
Exemplo:
Requisição:
[hash md5 da senha]
[login credencial]
[nova senha em texto puro]
==== 2.2 Gerar Nova Senha ====
Operação de obtenção de novo acesso por e-mail.
Nome da operação na interface do serviço: ''gerarNovaSenha''
Parâmetro(s) de entrada:
^ Parâmetro ^ Tipo (tamanho) ^ Observações ^
| credencial | CredencialDTO | Para essa operação é necessário preencher apenas os atributos ''email'' e ''usuario''. |
Tipo de Retorno: ''RetornoCaptacaoDetalheBaseExternaDTO''
**Observação:** o comportamento desta operação depende do fluxo da credencial:
* no fluxo MD5, o sistema envia senha provisória em texto pleno;
* no fluxo ''Argon2Id + token'', o sistema envia URL token para definição de nova senha.
Exemplo:
Requisição:
[e-mail da credencial]
[login da credencial]
===== Estruturas de Entrada/Saída e Retorno =====
As informações que trafegam pelo serviço são organizadas em estruturas de dados que atuam como entrada e retorno das operações.
==== CredencialDTO ====
Esta estrutura é composta pelas informações necessárias para que a aplicação cliente se identifique junto ao serviço quando estiver utilizando o fluxo de autenticação por credencial no XML. A credencial utilizada nos web services do SIOP é específica para esse fim e não é válida para acessar a aplicação web.
^ Atributo ^ Tipo(tamanho) ^ Aceita Nulo? ^ Observações ^
| usuario | Texto | Não | Login do usuário no SIOP |
| senha | Texto | Não | Hash MD5 da senha do usuário no SIOP. Campo aplicável ao fluxo de autenticação por MD5 |
| perfil | Inteiro | Sim | Perfil com o qual o usuário deseja realizar determinada operação, quando aplicável |
**Observação:** para usuários já migrados para ''Argon2Id + token'', a autenticação dos demais web services não é feita pelo campo ''senha'' do ''CredencialDTO'', mas pelo envio do token no cabeçalho ''Authorization''.
==== RetornoDTO ====
^ Atributo ^ Tipo(tamanho) ^ Observações ^
| sucesso | boolean | Indica se a requisição foi processada com sucesso |
| mensagensErro | List | Contém a lista de mensagens de erro nos casos em que ''sucesso'' retornar valor igual a ''false'' |