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.
Use
Connect-AzAccount
para entrar no Azure. Depois de entrar, useGet-AzContext
para verificar a assinatura e o locatário que você deseja usar. Se for necessário, altere a assinatura e o locatário.Crie um novo grupo de recursos (ou use um existente) pulando a etapa "criar grupo de recursos" 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.
No portal do Azure, acesse o recurso B2C. Escolha Abrir Locatário B2C.
No painel esquerdo, escolha Usuários.
Escolha + Novo usuário.
Vincular um usuário B2C ao atributo de usuário personalizado fhirUser
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. Em uma etapa posterior, um recurso de 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.
No painel esquerdo da página do Azure AD B2C, escolha Atributos de usuário.
Escolha + Adicionar.
No campo Nome, insira fhirUser (diferencia letras maiúsculas de minúsculas).
Na lista de seleção Tipo de Dados, selecione Cadeia de Caracteres.
Escolha Criar.
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.
No painel esquerdo da página do Azure AD B2C, escolha Fluxos de usuário.
Escolha + Novo fluxo de usuário.
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.
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.
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.
Selecione a declaração fhirUser.
Escolha OK.
Escolha Criar.
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.
No painel esquerdo da página do Azure AD B2C, escolha Registros de aplicativo.
Escolha + Novo registro.
Inserir um nome de exibição. Este exemplo usa o FHIR Service.
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).
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. Esse URI de retorno de chamada é para fins de teste.
Na seção Permissões, selecione Dar consentimento do administrador às permissões openid e offline_access.
Escolha Registrar. Aguarde a conclusão do registro do aplicativo. O navegador navegará automaticamente para a página de Visão geral do aplicativo.
Configurar as permissões de API do aplicativo
No painel esquerdo da página Registros de aplicativo, escolha Manifesto.
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.
Depois de preencher a matriz oauth2Permissions, escolha Salvar.
Expor a API Web e atribuir um URI de ID de aplicativo
No painel esquerdo da página Registros de aplicativo, escolha Expor uma API.
Escolha Adicionar.
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.
Selecione Salvar.
No painel esquerdo da página Registros de aplicativo, escolha Permissões da API.
Escolha + Adicionar uma permissão.
No painel Solicitar permissões de API, selecione APIs que a minha organização usa.
Selecione o aplicativo de recurso na lista.
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 escopopatient.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.Escolha Adicionar permissões.
Na página Permissões de API na seção Permissões configuradas, escolha Conceder 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.
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
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
Recupere a ID do cliente na página de visão geral do aplicativo de recurso.
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.
Use
Connect-AzAccount
para entrar no Azure. UseGet-AzContext
para verificar a assinatura e o locatário que você deseja usar. Se for necessário, altere a assinatura e o locatário.Crie um novo grupo de recursos (ou use um existente) pulando a etapa "criar grupo de recursos" 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 o recurso FHIR, a solicitação retorna uma resposta vazia, pois o serviço FHIR é novo e não possui recursos de pacientes.
Criar um recurso paciente no serviço FHIR
É importante observar que os usuários no locatário B2C não podem ler nenhum recurso até que o usuário (como um paciente ou um profissional) esteja vinculado a um recurso FHIR. 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.
- 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"
]
}
]
}
- Verifique se o paciente foi criado alterando o método de volta para
GET
e verificando se uma solicitação para{{fhirurl}}/Patient
retorna o paciente recém-criado.
Vincular o recurso paciente ao usuário do Azure AD B2C
Crie 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.
Vá para o locatário B2C. No painel esquerdo, escolha Registros de aplicativo.
Selecione Todos os aplicativos.
Selecione o aplicativo com o prefixo b2c-extensions-app.
Guarde o valor da ID do aplicativo (cliente).
Navegue de volta para a home page do locatário B2C. No painel esquerdo, selecione Usuários.
Selecione Test Patient1.
Guarde o valor da ID do objeto.
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).
Selecione o avatar do usuário e, em seguida, escolha Consentir com as permissões.
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
.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 corpoPATCH
é 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 pacientehttps://{YOUR_FHIR_SERVICE}.azurehealthcareapis.com/Patient/1"
.
Para mais informações, confira o artigo Gerenciar atributos de extensão por meio do Microsoft Graph.
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.
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.
Inicie o aplicativo Postman e crie uma nova Coleção em branco. Neste exemplo, a coleção se chama FHIR Patient.
Selecione a guia Autorização na visão geral da coleção.
Na lista de seleção Tipo selecione OAuth 2.0.
Role até a seção Configurar Novo Token e insira os valores a seguir.
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
.
Copie o escopo totalmente qualificado da seção Expor uma API do aplicativo de recurso B2C.
{YOUR_APPLICATION_ID_URI}/patient.all.read
Buscar o recurso paciente usando o usuário B2C
Verifique se os usuários do Azure AD B2C podem acessar recursos FHIR.
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.
Use as credenciais do Test Patient para entrar.
Escolha Usar o Token para usar o token de acesso em qualquer solicitação na coleção.
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.
Defina o método como
GET
, insira a URL de serviço FHIR totalmente qualificada e adicione o caminho/Patient
.Escolha Enviar.
Verifique se a resposta contém o único recurso paciente.
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.