====== 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'' |