Share via


Configuração de identidade do Azure Active Directory para a API do Azure para FHIR

Quando você está trabalhando com dados de saúde, é importante garantir que os dados sejam seguros e não possam ser acessados por usuários ou aplicativos não autorizados. Os servidores FHIR usam o OAuth 2.0 para garantir essa segurança de dados. A API do Azure para FHIR é protegida usando o Azure Active Directory, que é um exemplo de um provedor de identidade OAuth 2.0. Este artigo fornece uma visão geral da autorização do FHIR Server e das etapas necessárias para obter um token para acessar um servidor FHIR. Embora essas etapas se apliquem a qualquer servidor FHIR e a qualquer provedor de identidade, percorreremos a API do Azure para FHIR como o servidor FHIR e o Azure Active Directory (Azure AD) como nosso provedor de identidade neste artigo.

Visão geral do controle de acesso

Para que um aplicativo cliente acesse a API do Azure para FHIR, ele deve apresentar um token de acesso. O token de acesso é uma coleção de propriedades (declarações) codificada em Base64 assinada que transmite informações sobre a identidade do cliente e funções e privilégios concedidos ao cliente.

Há muitas maneiras de obter um token, mas a API do Azure para FHIR não se importa como o token é obtido desde que seja um token assinado adequadamente com as declarações corretas.

Por exemplo, quando você usa o fluxo de código de autorização, o acesso a um servidor FHIR passa pelas quatro etapas a seguir:

Autorização do FHIR

  1. O cliente envia uma solicitação para o /authorize ponto de extremidade do Azure AD. Azure AD redirecionará o cliente para uma página de entrada em que o usuário será autenticado usando as credenciais apropriadas (por exemplo, nome de usuário e senha ou autenticação de dois fatores). Confira detalhes sobre como obter um código de autorização. Após a autenticação bem-sucedida, um código de autorização é retornado ao cliente. Azure AD só permitirá que esse código de autorização seja retornado para uma URL de resposta registrada configurada no registro do aplicativo cliente.
  2. O aplicativo cliente troca o código de autorização por um token de acesso no /token ponto de extremidade de Azure AD. Quando você solicita um token, o aplicativo cliente pode ter que fornecer um segredo do cliente (a senha dos aplicativos). Confira detalhes sobre como obter um token de acesso.
  3. O cliente faz uma solicitação à API do Azure para FHIR, por exemplo GET /Patient, para pesquisar todos os pacientes. Quando o cliente faz a solicitação, ele inclui o token de acesso em um cabeçalho de solicitação HTTP, por exemplo Authorization: Bearer eyJ0e..., em que eyJ0e... representa o token de acesso codificado em Base64.
  4. A API do Azure para FHIR valida que o token contém declarações apropriadas (propriedades no token). Se tudo fizer check-out, ele concluirá a solicitação e retornará um pacote FHIR com resultados para o cliente.

É importante observar que a API do Azure para FHIR não está envolvida na validação de credenciais do usuário e não emite o token. A autenticação e a criação do token são feitas por Azure AD. A API do Azure para FHIR simplesmente valida se o token está assinado corretamente (é autêntico) e que tem declarações apropriadas.

Estrutura de um token de acesso

O desenvolvimento de aplicativos FHIR® (Fast Healthcare Interoperability Resources) geralmente envolve problemas de acesso de depuração. Se um cliente tiver acesso negado à API do Azure para FHIR, será útil entender a estrutura do token de acesso e como ele pode ser decodificado para inspecionar o conteúdo (as declarações) do token.

Os servidores FHIR normalmente esperam um Token Web JSON (JWT, às vezes pronunciado "jot"). Ele consiste em três partes:

Parte 1: um cabeçalho, que pode ser semelhante a:

    {
      "alg": "HS256",
      "typ": "JWT"
    }

Parte 2: o conteúdo (as declarações), por exemplo:

    {
     "oid": "123",
     "iss": "https://issuerurl",
     "iat": 1422779638,
     "roles": [
        "admin"
      ]
    }

Parte 3: uma assinatura, que é calculada concatenando o conteúdo codificado em Base64 do cabeçalho e a carga e calculando um hash criptográfico deles com base no algoritmo (alg) especificado no cabeçalho. Um servidor poderá obter chaves públicas do provedor de identidade e validar se esse token foi emitido por um provedor de identidade específico e não foi adulterado.

O token completo consiste nas versões codificadas em Base64 (na verdade, codificadas em URL Base64) desses três segmentos. Os três segmentos são concatenados e separados por um . (ponto).

Um exemplo de um token é mostrado como:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJvaWQiOiIxMjMiLCAiaXNzIjoiaHR0cHM6Ly9pc3N1ZXJ1cmwiLCJpYXQiOjE0MjI3Nzk2MzgsInJvbGVzIjpbImFkbWluIl19.gzSraSYS8EXBxLN_oWnFSRgCzcmJmMjLiuyu5CSpyHI

O token pode ser decodificado e inspecionado com ferramentas como https://jwt.ms. O resultado da decodificação do token é:

{
  "alg": "HS256",
  "typ": "JWT"
}.{
  "oid": "123",
  "iss": "https://issuerurl",
  "iat": 1422779638,
  "roles": [
    "admin"
  ]
}.[Signature]

Como obter um token de acesso

Conforme mencionado, há várias maneiras de obter um token de Azure AD. Eles são descritos em detalhes na documentação do desenvolvedor do Azure AD.

Use um dos seguintes protocolos de autenticação:

Há outras variações (por exemplo, devido ao fluxo) para obter um token. Consulte a documentação do Azure AD para obter detalhes. Quando você usa a API do Azure para FHIR, há alguns atalhos para obter um token de acesso (como para fins de depuração) usando a CLI do Azure.

Próximas etapas

Neste documento, você aprendeu alguns dos conceitos básicos envolvidos na proteção do acesso à API do Azure para FHIR usando Azure AD. Para obter informações sobre como implantar a API do Azure para o serviço FHIR, consulte

FHIR® é uma marca registrada da HL7 e é usado com a permissão da HL7.