Compartilhar via


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

As organizações da área da saúde podem usar o Azure Active Directory B2C (Azure AD B2C) com o serviço FHIR® nos Serviços de Dados de Saúde do Azure para conceder acesso aos seus aplicativos e usuários.

Criar um locatário do Azure AD B2C para o serviço FHIR

A criação de um locatário do Azure AD B2C para o serviço FHIR estabelece uma infraestrutura segura para gerenciar identidades de usuário em seus aplicativos de saúde.

Se você já criou um locatário do Azure AD B2C, pode pular para a seção Implantar o serviço FHIR com o Azure AD B2C.

Implantar um locatário do Azure AD B2C usando um modelo do ARM

Use o PowerShell ou a CLI do Azure para implantar o modelo do ARM de forma programática em uma assinatura do Azure. Para mais informações sobre sintaxe, propriedades e uso do modelo, leia a artigo Implantar uma instância do Azure Active Directory B2C.

Execute o código no Azure Cloud Shell ou no PowerShell localmente no Visual Studio Code para implantar o serviço FHIR no locatário do Azure AD B2C.

  1. Use Connect-AzAccount para entrar no Azure. Depois de entrar, use Get-AzContext para verificar a assinatura e o locatário que você deseja usar. Se for necessário, altere a assinatura e o locatário.

  2. Crie um novo grupo de recursos ou use um existente pulando a etapa ou comentando a linha que começa com New-AzResourceGroup.

### variables
$tenantid="your tenant id"
$subscriptionid="your subscription id"
$resourcegroupname="your resource group name"
$b2cName="your b2c tenant name"

### login to azure
Connect-AzAccount -Tenant $tenantid -SubscriptionId $subscriptionid 

### create resource group
New-AzResourceGroup -Name $resourcegroupname -Location $region

### deploy the resource
New-AzResourceGroupDeployment -ResourceGroupName $resourcegroupname -TemplateUri https://raw.githubusercontent.com/Azure-Samples/azure-health-data-and-ai-samples/main/samples/fhir-aad-b2c/b2c-arm-template.json -b2cName $b2cNa

Adicionar um usuário B2C de teste ao locatário do Azure AD B2C

Você precisa de um usuário B2C de teste para associar a um recurso específico de pacientes no serviço FHIR e verificar se o fluxo de autenticação funciona como esperado.

  1. No portal do Azure, acesse o recurso B2C. Escolha Abrir Locatário B2C.

    Captura de tela mostrando um recurso de B2C.

  2. No painel esquerdo, escolha Usuários.

    Captura de tela mostrando o usuário da página inicial.

  3. Escolha + Novo usuário.

    Captura de tela mostrando a adição de um usuário.

O atributo de usuário personalizado fhirUser é usado para vincular um usuário B2C a um recurso de usuário no serviço FHIR. Neste exemplo, um usuário chamado Test Patient1 é criado no locatário B2C e, em uma etapa futura, um recurso paciente é criado no serviço FHIR. O usuário Test Patient1 é vinculado ao recurso do paciente ao definir o valor do atributo fhirUser como o identificador do recurso do paciente. Para mais informações, confira o artigo Atributos personalizados de fluxo de usuário no Azure Active Directory B2C.

  1. No painel esquerdo da página do Azure AD B2C, escolha Atributos de usuário.

  2. Escolha + Adicionar.

  3. No campo Nome, insira fhirUser (diferencia letras maiúsculas de minúsculas).

  4. Na lista de seleção Tipo de Dados, selecione Cadeia de Caracteres.

  5. Escolha Criar.

    Captura de tela mostrando o atributo de B2C.

Criar um novo fluxo de usuário B2C

Os fluxos de usuário definem a sequência de etapas que os usuários devem seguir para entrar. Neste exemplo, um fluxo de usuário é definido para que, quando um usuário entrar, o token de acesso fornecido inclua a declaração fhirUser. Para mais informações, confira o tutorial Criar fluxos dos usuários e políticas personalizadas no Azure Active Directory B2C.

  1. No painel esquerdo da página do Azure AD B2C, escolha Fluxos de usuário.

  2. Escolha + Novo fluxo de usuário.

    Captura de tela mostrando o fluxo do usuário de B2C.

  3. Dê um nome exclusivo ao fluxo de usuário no locatário B2C. (O nome não precisa ser globalmente exclusivo). Neste exemplo, o nome do fluxo de usuário é USER_FLOW_1. Anote o nome.

  4. Verifique se a Entrada por email está habilitada para contas locais, para que o usuário de teste possa entrar e obter um token de acesso para o serviço FHIR.

    Captura de tela mostrando a configuração do fluxo do usuário de B2C.

  5. Na página Criar um fluxo de usuário, role até a seção 5. Declarações de Aplicativo e, em seguida, selecione Mostrar mais... para ver uma lista de todas as declarações disponíveis.

  6. Selecione a declaração fhirUser.

  7. Escolha OK.

  8. Escolha Criar.

    Captura de tela mostrando a configuração do fluxo do usuário de B2C com a declaração de usuário FHIR.

Criar um novo aplicativo de recurso B2C

O aplicativo de recurso B2C lida com solicitações de autenticação de seu aplicativo de serviços de saúde para o Azure Active Directory B2C.

  1. No painel esquerdo da página do Azure AD B2C, escolha Registros de aplicativo.

  2. Escolha + Novo registro.

    Captura de tela mostrando o novo aplicativo de B2C.

  3. Inserir um nome de exibição. Este exemplo usa o FHIR Service.

  4. Na lista de Tipos de conta com suporte, escolha Contas em qualquer provedor de identidade ou diretório organizacional (para autenticar usuários com fluxos dos usuários).

  5. Em URI de Redirecionamento (recomendado), use a lista de seleção para escolher *Cliente público/nativo (dispositivo móvel e desktop). Preencha o valor com o URI de retorno de chamada do Postman: https://oauth.pstmn.io/v1/callback. O URI de retorno de chamada é para fins de teste.

  6. Na seção Permissões, selecione Dar consentimento do administrador às permissões openid e offline_access.

  7. Escolha Registrar. Aguarde a conclusão do registro do aplicativo. O navegador navegará automaticamente para a página de Visão geral do aplicativo.

    Captura de tela mostrando o registro do aplicativo de B2C.

Configurar as permissões de API do aplicativo

  1. No painel esquerdo da página Registros de aplicativo, escolha Manifesto.

  2. Role até encontrar a matriz oauth2Permissions. Substitua a matriz por um ou mais valores no arquivo oauth2Permissions.json. Copie toda a matriz ou permissões individuais.

    Se adicionar uma permissão à lista, qualquer usuário no locatário B2C poderá obter um token de acesso com a permissão de API. Se um nível de acesso não for apropriado para um usuário no locatário B2C, não adicione à matriz, pois não há uma maneira de limitar permissões a um subconjunto de usuários.

  3. Depois de preencher a matriz oauth2Permissions, escolha Salvar.

    Captura de tela mostrando o manifesto do aplicativo de B2C.

Expor a API Web e atribuir um URI de ID de aplicativo

  1. No painel esquerdo da página Registros de aplicativo, escolha Expor uma API.

  2. Escolha Adicionar.

  3. Por padrão, o campo URI da ID do Aplicativo é preenchido com a ID do aplicativo (cliente). Altere o valor se desejar. Neste exemplo, o valor é fhir.

  4. Selecione Salvar.

    Captura de tela mostrando a API do aplicativo de B2C.

  5. No painel esquerdo da página Registros de aplicativo, escolha Permissões da API.

  6. Escolha + Adicionar uma permissão.

    Captura de tela mostrando a permissão da API de B2C.

  7. No painel Solicitar permissões de API, selecione APIs que a minha organização usa.

  8. Selecione o aplicativo de recurso na lista.

    Captura de tela mostrando as permissões de API de B2C com as APIs usadas.

  9. No painel Solicitar permissões de API na seção Paciente , selecione pelo menos uma permissão. Neste exemplo, a permissão patient.all.read é selecionada, o que significa que um usuário que solicita um token de acesso com o escopo patient.all.read tem privilégios de leitura (patient.all.read) para todos os recursos FHIR (patient.all.read) no compartimento Patient (patient.all.read). Para obter mais informações, confira o compartimento Patient.

  10. Escolha Adicionar permissões.

    Captura de tela mostrando as permissões de API de B2C com as permissões adicionadas.

  11. Na página Permissões de API na seção Permissões configuradas, escolha Conceder consentimento do administrador.

    Captura de tela mostrando as permissões de API de B2C para consentimento do administrador.

Implantar o serviço FHIR usando o Azure Active Directory B2C como o provedor de identidade

Implantar o serviço FHIR usando o Azure Active Directory B2C como provedor de identidade permite que o serviço FHIR autentique os usuários com base nas credenciais do Azure AD B2C, garantindo que somente usuários autorizados possam acessar informações confidenciais do paciente

Obter a autoridade B2C e a ID do cliente

Use os parâmetros autoridade e ID do cliente (ou ID do aplicativo) para configurar o serviço FHIR para usar um locatário do Azure AD B2C como um provedor de identidade.

  1. Crie a cadeia de caracteres de autoridade usando o nome do locatário B2C e o nome do fluxo de usuário.

    https://<YOUR_B2C_TENANT_NAME>.b2clogin.com/<YOUR_B2C_TENANT_NAME>.onmicrosoft.com/<YOUR_USER_FLOW_NAME>/v2.0
    
  2. Teste a cadeia de caracteres de autoridade fazendo uma solicitação para o ponto de extremidade .well-known/openid-configuration. Insira a cadeia de caracteres em um navegador para confirmar se ela navega até o arquivo JSON de Configuração OpenId. Se o JSON de Configuração OpenId não carregar, verifique se o nome do locatário B2C e o nome de fluxo de usuário estão corretos.

    https://<YOUR_B2C_TENANT_NAME>.b2clogin.com/<YOUR_B2C_TENANT_NAME>.onmicrosoft.com/<YOUR_USER_FLOW_NAME>/v2.0/.well-known/openid-configuration
    
  3. Recupere a ID do cliente na página de visão geral do aplicativo de recurso.

    Captura de tela mostrando a página de visão geral do aplicativo de B2C.

Implantar o serviço FHIR usando um modelo do ARM

Use um modelo do ARM para simplificar a implantação do serviço FHIR. Use o PowerShell ou a CLI do Azure para implantar o modelo do ARM em uma assinatura do Azure.

Execute o código no Azure Cloud Shell ou no PowerShell localmente no Visual Studio Code para implantar o serviço FHIR no locatário do Azure AD B2C.

  1. Use Connect-AzAccount para entrar no Azure. Use Get-AzContext para verificar a assinatura e o locatário que você deseja usar. Se for necessário, altere a assinatura e o locatário.

  2. Crie um novo grupo de recursos ou use um existente pulando a etapa ou comentando a linha que começa com New-AzResourceGroup.

### variables
$tenantid="your tenant id"
$subscriptionid="your subscription id"
$resourcegroupname="your resource group name"
$region="your desired region"
$workspacename="your workspace name"
$fhirServiceName="your fhir service name"
$smartAuthorityUrl="your authority (from previous step)"
$smartClientId="your client id (from previous step)"

### login to azure
Connect-AzAccount 
#Connect-AzAccount SubscriptionId $subscriptionid
Set-AzContext -Subscription $subscriptionid
Connect-AzAccount -Tenant $tenantid -SubscriptionId $subscriptionid
#Get-AzContext 

### create resource group
New-AzResourceGroup -Name $resourcegroupname -Location $region

### deploy the resource
New-AzResourceGroupDeployment -ResourceGroupName $resourcegroupname -TemplateUri https://raw.githubusercontent.com/Azure-Samples/azure-health-data-and-ai-samples/main/samples/fhir-aad-b2c/fhir-service-arm-template.json -tenantid $tenantid -region $region -workspaceName $workspacename -fhirServiceName $fhirservicename -smartAuthorityUrl $smartAuthorityUrl -smartClientId $smartClientId

Validar se os usuários do Azure AD B2C podem acessar recursos FHIR

O processo de validação envolve a criação de um recurso paciente no serviço FHIR, a vinculação do recurso paciente ao usuário do Azure AD B2C e configuração do Postman para obter um token de acesso para usuários B2C. Depois que o processo de validação terminar, você poderá buscar o recurso paciente usando o usuário de teste B2C.

Executar o Postman para obter um token de acesso

Execute o aplicativo Postman localmente ou em um navegador. Para obter as etapas necessárias para acessar adequadamente o serviço FHIR, confira a página Acessar o serviço FHIR usando o Postman.

Quando você segue as etapas na seção Obter recurso FHIR, a solicitação retorna uma resposta vazia, pois o serviço FHIR é novo e não possui recursos pacientes.

Criar um recurso paciente no serviço FHIR

É importante observar que os usuários no locatário B2C não conseguem ler recursos até que o usuário esteja vinculado a um recurso FHIR, por exemplo, como paciente ou profissional da saúde. Um usuário com a função FhirDataWriter ou FhirDataContributor no Microsoft Entra ID em que o serviço FHIR está alocado deve executar esta etapa.

  1. Crie um paciente com um identificador específico alterando o método para PUT e executando uma solicitação para {{fhirurl}}/Patient/1 com este corpo:
{
    "resourceType": "Patient",
    "id": "1",
    "name": [
        {
            "family": "Patient1",
            "given": [
                "Test"
            ]
        }
    ]
}
  1. Verifique se o paciente foi criado alterando o método de volta paraGET e verificando se uma solicitação para {{fhirurl}}/Patient retorna o paciente recém-criado.

Você precisa criar um vínculo explícito entre o usuário de teste no locatário B2C e o recurso no serviço FHIR. Crie o vínculo usando os Atributos de Extensão no Microsoft Graph. Para obter mais informações, consulte Definir atributos personalizados no Azure Active Directory B2C.

  1. Vá para o locatário B2C. No painel esquerdo, escolha Registros de aplicativo.

  2. Selecione Todos os aplicativos.

  3. Selecione o aplicativo com o prefixo b2c-extensions-app.

    Captura de tela mostrando a lista de aplicativos de B2C.

  4. Guarde o valor da ID do aplicativo (cliente).

    Captura de tela mostrando o aplicativo de extensões de B2C.

  5. Navegue de volta para a home page do locatário B2C. No painel esquerdo, selecione Usuários.

    Captura de tela mostrando o usuário da página inicial de B2C.

  6. Selecione Test Patient1.

    Captura de tela mostrando a lista de usuários de B2C.

  7. Guarde o valor da ID do objeto.

    Captura de tela mostrando a ID do usuário de B2C.

  8. Abra o Microsoft Graph Explorer. Entre com um usuário atribuído à função de Administrador Global do locatário B2C. (É uma boa ideia criar um novo usuário administrador no locatário B2C para gerenciar usuários no locatário).

    Captura de tela mostrando o login do Graph.

  9. Selecione o avatar do usuário e, em seguida, escolha Consentir com as permissões.

    Captura de tela mostrando o consentimento do Graph para o usuário de teste.

  10. Role até Usuário. Dê consentimento para User.ReadWrite.All. Essa permissão possibilita que você atualize o usuário Test Patient1 com o valor da declaração fhirUser.

    Captura de tela mostrando o consentimento do Graph para a declaração fhirUser.

  11. Depois de terminar o processo de consentimento, atualize o usuário. Você precisa da ID do aplicativo (cliente) b2c-extensions-app e da ID de objeto do usuário.

    • Altere o método para PATCH.

    • Altere a URL para https://graph.microsoft.com/v1.0/users/{USER_OBJECT_ID}.

    • Crie o corpo PATCH. Um corpo PATCH é um único par chave-valor, onde o formato da chave é extension_{B2C_EXTENSION_APP_ID_NO_HYPHENS}_fhirUser e o valor é a ID do recurso FHIR totalmente qualificada para o paciente https://{YOUR_FHIR_SERVICE}.azurehealthcareapis.com/Patient/1".

    Para mais informações, confira o artigo Gerenciar atributos de extensão por meio do Microsoft Graph.

  12. Depois de formatar a solicitação, escolha Executar consulta. Aguarde uma confirmação de que o usuário no locatário B2C foi vinculado com sucesso ao recurso paciente no serviço FHIR.

    Captura de tela mostrando o patch do Graph.

Configurar o Postman para obter um token de acesso para usuários B2C

Obtenha um token de acesso para testar o fluxo de autenticação.

  1. Inicie o aplicativo Postman e crie uma nova Coleção em branco. Neste exemplo, a coleção se chama FHIR Patient.

    Captura de tela mostrando a nova coleção do Postman.

  2. Selecione a guia Autorização na visão geral da coleção.

  3. Na lista de seleção Tipo selecione OAuth 2.0.

    Captura de tela mostrando a autenticação do Postman.

  4. Role até a seção Configurar Novo Token e insira estes valores:

    • URL de Retorno de Chamada. Esse valor é configurado quando o aplicativo de recurso B2C é criado.

      https://oauth.pstmn.io/v1/callback
      
    • URL de Autenticação. Esse valor pode ser criado usando o nome do locatário B2C e o nome do fluxo de usuário.

      https://{YOUR_B2C_TENANT_NAME}.b2clogin.com/{YOUR_B2C_TENANT_NAME}.onmicrosoft.com/{YOUR_USER_FLOW_NAME}/oauth2/v2.0/authorize
      
    • URL do Token de Acesso. Esse valor pode ser criado usando o nome do locatário B2C e o nome do fluxo de usuário.

      https://{YOUR_B2C_TENANT_NAME}.b2clogin.com/{YOUR_B2C_TENANT_NAME}.onmicrosoft.com/{YOUR_USER_FLOW_NAME}/oauth2/v2.0/token
      
    • ID do Cliente. Esse valor é a ID do aplicativo (cliente) do aplicativo de recurso B2C.

      {YOUR_APPLICATION_ID}
      
    • Escopo. Esse valor é definido no aplicativo de recurso B2C na seção Expor uma API. A permissão concedida pelo escopo é patient.all.read. A solicitação de escopo deve ser uma URL totalmente qualificada, por exemplo, https://testb2c.onmicrosoft.com/fhir/patient.all.read.

  5. Copie o escopo totalmente qualificado da seção Expor uma API do aplicativo de recurso B2C.

    {YOUR_APPLICATION_ID_URI}/patient.all.read
    

    Captura de tela mostrando as URLs do Postman.

Buscar o recurso paciente usando o usuário B2C

Verifique se os usuários do Azure AD B2C podem acessar recursos FHIR.

  1. Quando a configuração de autorização no Postman está configurada para iniciar o fluxo de usuário B2C, escolha Obter Novo Token de Acesso.

    Captura de tela mostrando o Postman obtendo o token de acesso.

  2. Use as credenciais do Test Patient para entrar.

    Captura de tela mostrando o Postman recebendo um token.

  3. Escolha Usar o Token para usar o token de acesso em qualquer solicitação na coleção.

    Captura de tela mostrando o Postman usando o token.

  4. Crie uma nova solicitação para pesquisar recursos pacientes no serviço FHIR. Selecione o botão de reticências (...) ao lado do nome da coleção e escolha Adicionar solicitação.

    Captura de tela mostrando a solicitação do Postman adicionada.

  5. Defina o método como GET, insira a URL de serviço FHIR totalmente qualificada e adicione o caminho /Patient.

  6. Escolha Enviar.

  7. Verifique se a resposta contém o único recurso paciente.

    Captura de tela mostrando a resposta da solicitação do Postman.

Próximas etapas

Configurar vários provedores de identidade

Solucionar problemas de configuração de provedores de identidade

Observação

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