Compartilhar via


Solucionar problemas de configuração do provedor de identidade para o serviço FHIR

A versão 2023-12-01 da API do serviço FHIR® nos Serviços de Dados de Saúde do Azure dá suporte a dois provedores de identidade além do Microsoft Entra ID. Para fornecer aos usuários um acesso com escopo, você deve configurar os dois provedores de identidade preenchendo a seção smartIdentityProviders do objeto authenticationConfiguration.

Mensagens de erro

Abaixo as mensagens de erro que aparecem em caso de falha dos provedores de identidade SMART do serviço FHIR e as ações recomendadas para resolver o problema.

Erro Causa Fix
O número máximo de provedores de identidade SMART é 2. O número de provedores de identidade configurados é superior a dois. Reduza o número de provedores de identidade para dois ou menos.
Um ou mais valores de autoridade do provedor de identidade SMART são nulos, vazios ou inválidos. O elemento authority da configuração do provedor de identidade deve ser uma URL totalmente qualificada. Certifique-se de que todos os valores de authority sejam URLs totalmente qualificadas.
Todas as autoridades do provedor de identidade SMART devem ser exclusivas. Os elementos authority das duas configurações do provedor de identidade são idênticos. Certifique-se de que todos os valores de authority sejam URLs exclusivas e totalmente qualificadas.
O número máximo de aplicativos de provedores de identidade SMART é 2. O número de aplicativos de provedores de identidade em uma configuração de provedor de identidade é superior a dois. Reduza o número de aplicativos de provedores de identidade para um ou dois por provedor de identidade.
Um ou mais aplicativos SMART são nulos. O elemento applications para um ou mais provedores de identidade é nulo ou não contém nenhum aplicativo. Certifique-se de que todas as configurações de provedor de identidade tenham pelo menos um aplicativo configurado.
Um ou mais aplicativos SMARTallowedDataActions contêm elementos duplicados. A matriz allowedDataActions em uma ou mais configurações de aplicativo contém valores duplicados. Remova todos os valores duplicados nas matrizes allowedDataActions.
Um ou mais valores de allowedDataActions do aplicativo SMART são inválidos. O único valor aceitável na matriz allowedDataActions é Read. Remova todos os valores fora de conformidade das matrizes allowedDataActions.
Um ou mais valores de allowedDataActions do aplicativo SMART são nulos, vazios ou inválidos. A matriz allowedDataActions em uma ou mais configurações de aplicativo está nula, vazia, ou malformada. O único valor aceitável na matriz allowedDataActions é Read.
Um ou mais valores de audience do aplicativo SMART são nulos, vazios ou inválidos. A cadeia de caracteres audience em uma ou mais configurações de aplicativo está nula, vazia, ou malformada. Certifique-se de que a cadeia de caracteres audience não esteja nula ou vazia e de que o valor seja um tipo de cadeia de caracteres.
Todas as IDs de cliente de aplicativo do provedor de identidade SMART devem ser exclusivas. O valor de clientId em uma ou mais configurações de aplicativo tem o mesmo valor que outro valor de clientId. Certifique-se de que todos os valores de clientId sejam exclusivos (incluindo as configurações de provedores de identidade).
Um ou mais valores de ID do cliente do aplicativo SMART são nulos, vazios ou inválidos. A cadeia de caracteres clientId em uma ou mais configurações de aplicativo está nula, vazia, ou malformada. Certifique-se de que a cadeia de caracteres clientId não esteja nula ou vazia e de que o valor seja um tipo de cadeia de caracteres.

Erros de solicitação da API do FHIR

Quando usar um token emitido por um provedor de identidade SMART para fazer solicitações ao serviço FHIR, você poderá se deparar com dois códigos de erro comuns: 401 Unauthorized ou 403 Forbidden. Para iniciar a solução de problemas, verifique a configuração do elemento smartIdentityProviders, especialmente se o serviço FHIR for novo.

Siga essas etapas para verificar a configuração correta do elemento smartIdentityProviders.

  1. Verifique se o elemento smartIdentityProviders está configurado corretamente.

  2. Verifique se a cadeia de caracteres authority está correta. Certifique-se de que a cadeia de caracteres authority seja a autoridade de token para o provedor de identidade que emitiu o token de acesso.

  3. Verifique se a cadeia de caracteres authority é uma autoridade de token válida. Faça uma solicitação para a configuração do openid-connect. Acrescente /.well-known/openid-configuration no final da cadeia de caracteres e aubrowser navigatesthority cole-a no seu navegador. Se o valor estiver correto, o navegador navegará para a openid-connect configuration. Caso contrário, isso significa que há um problema com a cadeia de caracteres.

    Exemplo:

    https://<YOUR_IDENTITY_PROVIDER_AUTHORITY>/authority/v2.0/.well-known/openid-configuration
    
    
  4. Verifique se a cadeia de caracteres clientId está correta. Certifique-se de que a cadeia de caracteres clientId corresponda à ID do cliente (ou à ID do aplicativo) do aplicativo do recurso definido no provedor de identidade.

  5. Verifique se o método de solicitação é GET. O único tipo de solicitação com suporte é GET, porque os valores de allowedDataActions só dão suporte a Read.

  6. Verifique as declarações do token web JSON (JWT). Se o token de acesso estiver disponível, decodifique-o usando ferramentas online como a jwt.ms. Após o token ter sido decodificado, as declarações podem ser inspecionadas para verificar se estão corretas.

    Screenshot showing jwt web token claims.

  7. Verifique a iss (declaração do emissor). Verifique se a declaração iss corresponde exatamente ao valor de issuer na configuração do OpenId dos seus provedores de identidade.

    Pegue o valor de authority da configuração de smartIdentityProvider do provedor de identidade, acrescente-o à /.well-known/openid-configuration e cole-a no navegador. Se o valor estiver correto, o navegador navegará para a configuração do openid-connect.

    Exemplo:

    https://<YOUR_IDENTITY_PROVIDER_AUTHORITY>/authority/v2.0/.well-known/openid-configuration
    
  8. Verifique a azp ou appid (declaração da parte autorizada ou de appid). A declaração azp ou appid deve corresponder exatamente ao valor de clientId fornecido na configuração smartIdentityProvider do provedor de identidade.

  9. Verifique a aud (declaração de audiência). A declaração aud deve corresponder exatamente ao audience valor fornecido na configuração do smartIdentityProvider provedor de identidade.

  10. Verifique a scp (declaração de escopo). A declaração scp é obrigatória. Se estiver ausente, a solicitação falhará. O formato da declaração scp deve estar em conformidade com o SMART nos Escopos v1 do FHIR. É importante observar que o serviço FHIR atualmente só dá suporte a escopos de Leitura. Uma variação aceitável de SMART nos Escopos v1 do FHIR substitui todas as barras (/) com um ponto (.) e asterisco (*) por all. Por exemplo, uma versão aceitável do SMART no escopo de patient/*.read do FHIR é patient.all.read.

Observação

Apenas os escopos de read têm suporte.

  1. Verifique o fhirUser ou a extension_fhirUser (declaração de usuário do FHIR). As declarações fhirUser ou extension_fhirUser são obrigatórias. Se uma delas estiver ausente, a solicitação falhará. Essa declaração vincula o usuário no provedor de identidade a um recurso de usuário no serviço FHIR. O valor deve ser a URL totalmente qualificada de um recurso no serviço FHIR que representa a pessoa para a qual o token de acesso foi emitido. Por exemplo, o token de acesso emitido para um paciente que fez login deve ter uma declaração de fhirUser ou extension_fhirUser que tenha a URL totalmente qualificada de um recurso de paciente no serviço FHIR.

Esquema para configurar provedores de identidade

O elemento smartIdentityProviders é uma matriz JSON que contém uma ou duas identity provider configurations. Uma identity provider configuration consiste de:

  • Um valor de cadeia de caracteres authority que deve ser a URL totalmente qualificada da autoridade de token dos provedores de identidade.

  • Uma matriz applications que contém o recurso application configurations do provedor de identidade.

{
  "properties": {
    "authenticationConfiguration": {
      "authority": "string",
      "audience": "string",
      "smartProxyEnabled": "bool",
      "smartIdentityProviders": [
        {
          "authority": "string",
          "applications": [
            {
              "clientId": "string",
              "allowedDataActions": "array",
              "audience": "string"
            }
          ]
        }
      ]
    }
  }
}

O elemento applications é uma matriz JSON que contém uma ou duas application configurations.

A application configuration é formada por:

  • Um valor de cadeia de caracteres clientId para a ID do cliente (também conhecida como ID do aplicativo) do aplicativo do recurso do provedor de identidade.

  • Uma cadeia de caracteres audience usada para validar a declaração aud em tokens de acesso.

  • Uma matriz de allowedDataActions. A matriz allowedDataActions só pode conter o valor de cadeia de caracteres Read.

{
  "authority": "string",
  "applications": [
    {
      "clientId": "string",
      "allowedDataActions": "array",
      "audience": "string"
    }
  ]
}
{
  "clientId": "string",
  "allowedDataActions": "array",
  "audience": "string"
}

Próximas etapas

Usar o Azure Active Directory B2C para conceder acesso ao serviço FHIR

Configurar diversos provedores de identidade

Observação

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