Share via


Utilizar o Azure Ative Directory B2C para conceder acesso ao serviço FHIR

As organizações de cuidados de saúde podem utilizar o Azure Ative Directory B2C (Azure AD B2C) com o serviço FHIR® nos Serviços de Dados de Saúde do Azure para conceder acesso às suas aplicações e utilizadores.

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

Criar um locatário do Azure AD B2C para o serviço FHIR configura uma infraestrutura segura para gerenciar identidades de usuário em seus aplicativos de assistência médica.

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

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

Use o PowerShell ou a CLI do Azure para implantar o modelo ARM programaticamente em uma assinatura do Azure. Para obter mais informações sobre sintaxe, propriedades e uso do modelo, consulte Implantar uma instância do Azure Ative 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 deseja usar. Altere a assinatura e o locatário, se necessário.

  2. Crie um novo grupo de recursos ou use um existente ignorando 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 de paciente específico no serviço FHIR e verificar se o fluxo de autenticação funciona conforme o esperado.

  1. No portal do Azure, vá para o recurso B2C. Escolha Abrir locatário B2C.

    Captura de tela mostrando um recurso B2C.

  2. No painel esquerdo, escolha Usuários.

    Captura de ecrã a mostrar o utilizador doméstico.

  3. Escolha + Novo usuário.

    Captura de ecrã a mostrar a adição de um novo utilizador.

O fhirUser atributo de usuário personalizado é 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 posterior, um recurso de paciente é criado no serviço FHIR. O usuário Test Patient1 é vinculado ao recurso do paciente definindo o valor do fhirUser atributo para o identificador do recurso do paciente. Para obter mais informações sobre atributos de usuário personalizados, consulte Atributos personalizados de fluxo de usuário no Azure Ative Directory B2C.

  1. Na página Azure AD B2C no painel esquerdo, escolha Atributos de usuário.

  2. Escolha + Adicionar.

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

  4. Na lista suspensa Tipo de Dados, selecione String.

  5. Selecione Criar.

    Captura de tela mostrando o atributo 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 fhirUser declaração. Para obter mais informações, consulte Criar fluxos de usuário e políticas personalizadas no Azure Ative Directory B2C.

  1. Na página Azure AD B2C no painel esquerdo, escolha Fluxos de usuário.

  2. Escolha + Novo fluxo de usuário.

    Captura de tela mostrando o fluxo de usuários B2C.

  3. Dê ao fluxo de usuário um nome exclusivo para o 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. Certifique-se de que o início de sessão por e-mail está ativado para contas locais para que o utilizador de teste possa iniciar sessão e obter um token de acesso para o serviço FHIR.

    Captura de tela mostrando a configuração do fluxo de usuário 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 mostrar uma lista de todas as declarações disponíveis.

  6. Selecione a declaração fhirUser .

  7. Escolha OK.

  8. Selecione Criar.

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

Criar um novo aplicativo de recursos B2C

O aplicativo de recursos B2C lida com solicitações de autenticação do seu aplicativo de assistência médica para o Azure Ative Directory B2C.

  1. Na página Azure AD B2C no painel esquerdo, escolha Registros de aplicativo.

  2. Escolha + Novo registo.

    Captura de tela mostrando o novo aplicativo B2C.

  3. Introduza um nome a apresentar. Este exemplo usa FHIR Service.

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

  5. Na lista suspensa Redirecionar URI (recomendado), selecione *Cliente público/nativo (móvel ou desktop). Preencha o valor com o URI https://oauth.pstmn.io/v1/callbackde retorno de chamada do Postman . O URI de retorno de chamada é para fins de teste.

  6. Na seção Permissões, selecione Conceder consentimento de administrador para permissões openid e offline_access.

  7. Escolha Registrar. Aguarde até que o registo da candidatura seja concluído. O navegador navega automaticamente para a página Visão geral do aplicativo.

    Captura de tela mostrando o registro do aplicativo B2C.

Configurar permissões de API para o aplicativo

  1. Na página Registros de aplicativos no painel esquerdo, escolha Manifesto.

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

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

  3. Depois que a matriz oauth2Permissions for preenchida, escolha Salvar.

    Captura de tela mostrando o manifesto do aplicativo B2C.

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

  1. Na página Registros de aplicativos no painel esquerdo, 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. Escolha Guardar.

    Captura de tela mostrando a API do aplicativo B2C.

  5. Na página Registros de aplicativos no painel esquerdo, escolha Permissões de API.

  6. Escolha + Adicionar uma permissão.

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

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

  8. Selecione o aplicativo de recurso na lista.

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

  9. No painel Solicitar permissões da 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.ler) para todos os recursos da FHIR (doente.all.read) no compartimento do doente (patient.all.read) Para obter mais informações, consulte Compartimento do doente.

  10. Escolha Adicionar permissões.

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

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

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

Implantar o serviço FHIR com o Azure Ative Directory B2C como o provedor de identidade

A implantação do serviço FHIR com o Azure Ative Directory B2C como o provedor de identidade permite que o serviço FHIR autentique usuários com base em suas credenciais do Azure AD B2C, garantindo que apenas usuários autorizados possam acessar informações confidenciais do paciente

Obter a autoridade B2C e o ID do cliente

Use os parâmetros de 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 .well-known/openid-configuration ponto de extremidade. Insira a cadeia de caracteres em um navegador para confirmar que ela navega até o arquivo JSON de configuração do OpenId. Se o JSON de configuração OpenId falhar ao carregar, verifique se o nome do locatário B2C e o nome do 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 o 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 B2C.

Implantar o serviço FHIR usando um modelo ARM

Use um modelo ARM para simplificar a implantação do serviço FHIR. Use o PowerShell ou a CLI do Azure para implantar o modelo 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. Altere a assinatura e o locatário, se necessário.

  2. Crie um novo grupo de recursos ou use um existente ignorando 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 que os usuários do Azure AD B2C possam acessar recursos FHIR

O processo de validação envolve a criação de um recurso de paciente no serviço FHIR, vinculando o recurso de paciente ao usuário do Azure AD B2C e configurando o Postman para obter um token de acesso para usuários B2C. Após a conclusão do processo de validação, você pode buscar o recurso do paciente usando o usuário de teste B2C.

Execute o Postman para obter um token de acesso

Execute o aplicativo Postman localmente ou em um navegador da web. Para conhecer as etapas para obter o acesso adequado ao serviço FHIR, consulte Acessar o serviço FHIR usando o Postman.

Quando você segue as etapas para a seção de recursos GET FHIR, a solicitação retorna uma resposta vazia porque o serviço FHIR é novo e não tem recursos do paciente.

Criar um recurso de paciente no serviço FHIR

É importante observar que os usuários no locatário B2C não são capazes de ler nenhum recurso até que o usuário esteja vinculado a um recurso FHIR, por exemplo, como paciente ou médico. Um usuário com a FhirDataWriter ou FhirDataContributor função na ID do Microsoft Entra onde o serviço FHIR é locatário deve executar esta etapa.

  1. Crie um paciente com um identificador específico alterando o método e PUT 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 para GET e verificando se uma solicitação para {{fhirurl}}/Patient retornar o paciente recém-criado.

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

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

  2. Selecione Todos os aplicativos.

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

    Captura de ecrã a mostrar a lista de aplicações B2C.

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

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

  5. Navegue de volta para a página inicial do locatário B2C, no painel esquerdo, selecione Usuários.

    Captura de tela mostrando o usuário doméstico B2C.

  6. Selecione Test Patient1.

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

  7. Observe o valor de ID do objeto.

    Captura de ecrã a mostrar o ID de utilizador B2C.

  8. Abra o Microsoft Graph Explorer. Entre com um usuário atribuído à função de Administrador Global para o 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 ecrã a mostrar o início de sessão no gráfico.

  9. Selecione o avatar do usuário e, em seguida, escolha Consentimento para permissões.

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

  10. Desloque-se para Utilizador. Consentimento para User.ReadWrite.All. Essa permissão permite que você atualize o usuário Test Patient1 com o valor da fhirUser declaração.

    Captura de tela mostrando o consentimento do gráfico para a reivindicação fhirUser.

  11. Após a conclusão do processo de consentimento, atualize o usuário. Você precisa do ID do aplicativo b2c-extensions-app (cliente) e do ID do objeto do usuário.

    • Altere o método para PATCH.

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

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

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

  12. Depois que a solicitação for formatada, escolha Executar consulta. Aguarde uma resposta bem-sucedida que confirme que o usuário no locatário B2C está vinculado ao recurso do paciente no serviço FHIR.

    Captura de tela mostrando o patch do gráfico.

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 Blank. Neste exemplo, a coleção é denominada FHIR Patient.

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

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

  3. Na lista suspensa Tipo, selecione OAuth 2.0.

    Screenshot mostrando Postman auth.

  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}
      
    • Âmbito de aplicação. Esse valor é definido no aplicativo de recurso B2C na seção Expor uma API . O escopo concedido permissão é 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 recursos B2C.

    {YOUR_APPLICATION_ID_URI}/patient.all.read
    

    Captura de tela mostrando URLs do Postman.

Buscar o recurso do 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 estiver configurada para iniciar o fluxo de usuário B2C, escolha Obter Novo Token de Acesso para obter um token de acesso.

    Captura de tela mostrando o token de acesso do Postman.

  2. Use as credenciais do paciente de teste para entrar.

    Captura de tela mostrando Postman obter token.

  3. Escolha Usar token para usar o token de acesso para todas as solicitações na coleção.

    Captura de tela mostrando o token de uso do Postman.

  4. Crie uma nova solicitação para pesquisar recursos de 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 do paciente.

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

Próximos passos

Configurar vários fornecedores de identidades

Resolver problemas de configuração do fornecedor de identidade

Nota

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