Validação de token de acesso da API do Azure para FHIR

A forma como a API do Azure para FHIR valida o token de acesso dependerá da implementação e da configuração. Neste artigo, vamos percorrer os passos de validação, que podem ser úteis ao resolver problemas de acesso.

Validar token não tem problemas com o fornecedor de identidade

O primeiro passo na validação do token é verificar se o token foi emitido pelo fornecedor de identidade correto e que não foi modificado. O servidor FHIR será configurado para utilizar um fornecedor de identidade específico conhecido como autoridade Authority. O servidor FHIR obterá informações sobre o fornecedor de identidade a /.well-known/openid-configuration partir do ponto final. Quando utiliza o Azure Active Directory (Azure AD), o URL completo é:

GET https://login.microsoftonline.com/<TENANT-ID>/.well-known/openid-configuration

em que <TENANT-ID> é o inquilino Azure AD específico (um ID de inquilino ou um nome de domínio).

Azure AD devolverá um documento como este ao servidor FHIR.

{
    "authorization_endpoint": "https://login.microsoftonline.com/<TENANT-ID>/oauth2/authorize",
    "token_endpoint": "https://login.microsoftonline.com/<TENANT-ID>/oauth2/token",
    "token_endpoint_auth_methods_supported": [
        "client_secret_post",
        "private_key_jwt",
        "client_secret_basic"
    ],
    "jwks_uri": "https://login.microsoftonline.com/common/discovery/keys",
    "response_modes_supported": [
        "query",
        "fragment",
        "form_post"
    ],
    "subject_types_supported": [
        "pairwise"
    ],
    "id_token_signing_alg_values_supported": [
        "RS256"
    ],
    "http_logout_supported": true,
    "frontchannel_logout_supported": true,
    "end_session_endpoint": "https://login.microsoftonline.com/<TENANT-ID>/oauth2/logout",
    "response_types_supported": [
        "code",
        "id_token",
        "code id_token",
        "token id_token",
        "token"
    ],
    "scopes_supported": [
        "openid"
    ],
    "issuer": "https://sts.windows.net/<TENANT-ID>/",
    "claims_supported": [
        "sub",
        "iss",
        "cloud_instance_name",
        "cloud_instance_host_name",
        "cloud_graph_host_name",
        "msgraph_host",
        "aud",
        "exp",
        "iat",
        "auth_time",
        "acr",
        "amr",
        "nonce",
        "email",
        "given_name",
        "family_name",
        "nickname"
    ],
    "microsoft_multi_refresh_token": true,
    "check_session_iframe": "https://login.microsoftonline.com/<TENANT-ID>/oauth2/checksession",
    "userinfo_endpoint": "https://login.microsoftonline.com/<TENANT-ID>/openid/userinfo",
    "tenant_region_scope": "WW",
    "cloud_instance_name": "microsoftonline.com",
    "cloud_graph_host_name": "graph.windows.net",
    "msgraph_host": "graph.microsoft.com",
    "rbac_url": "https://pas.windows.net"
}

As propriedades importantes para o servidor FHIR são jwks_uri, que indica ao servidor onde obter as chaves de encriptação necessárias para validar a assinatura do token e issuer, que indica ao servidor o que estará na afirmação do emissor (iss) dos tokens emitidos por este servidor. O servidor FHIR pode utilizá-lo para validar que está a receber um token autêntico.

Validar afirmações do token

Assim que o servidor verificar a autenticidade do token, o servidor FHIR irá, em seguida, proceder para validar que o cliente tem as afirmações necessárias para aceder ao token.

Quando utiliza a API do Azure para FHIR, o servidor irá validar:

  1. O token tem o direito Audience (aud afirmação).
  2. O utilizador ou principal para o qual o token foi emitido tem permissão para aceder ao plano de dados do servidor FHIR. A oid afirmação do token contém um ID de objeto de identidade, que identifica exclusivamente o utilizador ou o principal.

Recomendamos que o serviço FHIR seja configurado para utilizar o RBAC do Azure para gerir atribuições de funções de planos de dados. No entanto, também pode configurar o RBAC local se o seu serviço FHIR utilizar um inquilino de Azure AD externo ou secundário.

Quando utiliza o servidor MICROSOFT FHIR do OSS para o Azure, o servidor irá validar:

  1. O token tem o direito Audience (aud afirmação).
  2. O token tem uma função na roles afirmação, que tem permissão para aceder ao servidor FHIR.

Consulte os detalhes sobre como definir funções no servidor FHIR.

Um servidor FHIR também pode validar que um token de acesso tem os âmbitos (na afirmação scpde token) para aceder à parte da API FHIR a que um cliente está a tentar aceder. Atualmente, a API do Azure para FHIR e o servidor FHIR para o Azure não validam âmbitos de tokens.

Passos seguintes

Agora que sabe como passar pela validação de tokens, pode concluir o tutorial para criar uma aplicação JavaScript e ler dados de Recursos de Interoperabilidade de Cuidados de Saúde Rápidos (FHIR®).

FHIR® é uma marca registada do HL7 e é utilizada com a permissão de HL7.