Guia de Implementação da SES GO - Segurança
0.0.2 - draft Brazil flag

Guia de Implementação da SES GO - Segurança - Local Development build (v0.0.2) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions

Obter token de acesso

Os sistemas de informação (softwares) que operam em nome de estabelecimentos de saúde credenciados precisam obter um token de acesso para utilizar os serviços oferecidos pela SES-GO. O token é fornecido pelo Servidor de Autorização após a autenticação e autorização do sistema. Em seguida, o sistema utiliza o token ao requisitar qualquer serviço protegido.

Tecnicamente, a estratégia adotada é conhecida por Client Credentials Flow do OAuth 2.0 para a comunicação machine-to-machine (M2M). Este fluxo utiliza um certificado digital previamente credenciado, que é fundamental para estabelecer uma conexão segura via mTLS (Mutual Transport Layer Security) entre o sistema interessado e o Servidor de Autorização (SES-GO), antes da troca de credenciais para obtenção do token.

Objetivo

Obter token a ser utilizado em requisição a serviço protegido.

Pré-requisitos

  • Certificado digital ICP-Brasil empregado para identificar eletronicamente o estabelecimento de saúde de origem de requisições.
  • Credenciamento aprovado no qual o certificado digital foi fornecido.

Fluxo

  1. Estabelecimento da Conexão Segura (mTLS):
    • O Sistema Externo utiliza seu certificado digital para estabelecer uma conexão mTLS com o Servidor de Autorização. Esta etapa garante que ambas as partes são autenticadas e que a comunicação subsequente é criptografada.
  2. Obtenção do Endpoint do Token:
    • O Sistema Externo obtém o endpoint para obtenção do token de acesso. Neste caso, o valor da propriedade token_endpoint no objeto JSON retornado pela URL:
        https://sso-homolog.saude.go.gov.br/realms/saude/.well-known/openid-configuration
      
  3. Requisição do Token de Acesso:
    • O Sistema Externo efetua uma requisição para o endereço obtido no passo anterior (ex: https://sso-homolog.saude.go.gov.br/realms/saude/protocol/openid-connect/token) sobre a conexão mTLS já estabelecida, da seguinte forma:
      • Método: POST
      • Content-Type: application/x-www-form-urlencoded
      • Parâmetros no corpo da requisição:
        • grant_type: com o valor client_credentials
        • client_id: o identificador do cliente fornecido pela SES-GO
        • client_secret: a chave secreta do cliente fornecida pela SES-GO
  4. Resposta do Servidor de Autorização:
    • O Servidor de Autorização valida a requisição (incluindo a autenticação mTLS e as credenciais client_id/client_secret) e retorna um objeto JSON contendo várias propriedades. Dentre elas:
      • access_token: contendo o token de acesso.
      • expires_in: o período em segundos no qual o token é válido.
      • token_type: o tipo do token, neste caso, com o valor Bearer.
  5. Extração e Armazenamento do Token:
    • O Sistema Externo extrai o valor da propriedade access_token. O caso de uso termina.
    • O valor extraído do objeto retornado do Servidor de Autorização será usado em outro caso de uso para acesso a serviço protegido.

Pós-condição

  • O Sistema Externo possui o valor do token de acesso válido para acesso a serviço protegido oferecido pela SES-GO.