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.
Use
Connect-AzAccount
para entrar no Azure. Depois de entrar, useGet-AzContext
para verificar a assinatura e o locatário que deseja usar. Altere a assinatura e o locatário, se necessário.Crie um novo grupo de recursos (ou use um existente) ignorando 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 de paciente específico no serviço FHIR e verificar se o fluxo de autenticação funciona conforme o esperado.
No portal do Azure, vá para o recurso B2C. Escolha Abrir locatário B2C.
No painel esquerdo, escolha Usuários.
Escolha + Novo usuário.
Vincular um usuário B2C ao fhirUser
atributo de usuário personalizado
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. Numa fase posterior, é criado um recurso do doente 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.
Na página Azure AD B2C no painel esquerdo, escolha Atributos de usuário.
Escolha + Adicionar.
No campo Nome, digite fhirUser (diferencia maiúsculas de minúsculas).
Na lista suspensa Tipo de Dados, selecione String.
Selecione 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 e o token de acesso fornecido incluir a fhirUser
declaração. Para obter mais informações, consulte Criar fluxos de usuário e políticas personalizadas no Azure Ative Directory B2C.
Na página Azure AD B2C no painel esquerdo, escolha Fluxos de usuário.
Escolha + Novo fluxo de usuário.
Dê ao fluxo de usuário um nome exclusivo para o locatário B2C. O nome não precisa ser globalmente único. Neste exemplo, o nome do fluxo de usuário é USER_FLOW_1. Anote o nome.
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.
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.
Selecione a declaração fhirUser .
Escolha OK.
Selecione Criar.
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.
Na página Azure AD B2C no painel esquerdo, escolha Registros de aplicativo.
Escolha + Novo registo.
Introduza um nome a apresentar. Este exemplo usa FHIR Service.
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).
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 . Este URI de retorno de chamada é para fins de teste.
Na seção Permissões, selecione Conceder consentimento de administrador para permissões openid e offline_access.
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.
Configurar permissões de API para o aplicativo
Na página Registros de aplicativos no painel esquerdo, escolha Manifesto.
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 o adicione à matriz porque não há uma maneira de limitar as permissões a um subconjunto de usuários.
Depois que a matriz oauth2Permissions for preenchida, escolha Salvar.
Expor a API da Web e atribuir um URI de ID de aplicativo
Na página Registros de aplicativos no painel esquerdo, 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.
Escolha Guardar.
Na página Registros de aplicativos no painel esquerdo, escolha Permissões de API.
Escolha + Adicionar uma permissão.
No painel Solicitar permissões da API , selecione APIs que minha organização usa.
Selecione o aplicativo de recurso na lista.
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 escopopatient.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.Escolha Adicionar permissões.
Na página Permissões da API, na seção Permissões configuradas, escolha Conceder consentimento de 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.
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
.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
Recupere o ID do cliente na página de visão geral do aplicativo de recurso.
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.
Use
Connect-AzAccount
para entrar no Azure. UseGet-AzContext
para verificar a assinatura e o locatário que você deseja usar. Altere a assinatura e o locatário, se necessário.Crie um novo grupo de recursos (ou use um existente) ignorando 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 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 na seção Obter o recurso 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 (como um paciente ou médico) esteja vinculado a um recurso FHIR. 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.
- 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"
]
}
]
}
- 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.
Vincular o recurso do paciente ao usuário do Azure AD B2C
Crie 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.
Vá para o locatário B2C. No painel esquerdo, escolha Registros de aplicativos.
Selecione Todos os aplicativos.
Selecione o aplicativo com o prefixo b2c-extensions-app.
Observe o valor da ID do aplicativo (cliente).
Navegue de volta para a página inicial do locatário B2C, no painel esquerdo, selecione Usuários.
Selecione Test Patient1.
Observe o valor de ID do objeto.
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.)
Selecione o avatar do usuário e, em seguida, escolha Consentimento para permissões.
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.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. UmPATCH
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 pacientehttps://{YOUR_FHIR_SERVICE}.azurehealthcareapis.com/Patient/1"
.
Para obter mais informações, consulte Gerenciar atributos de extensão por meio do Microsoft Graph.
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.
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 Blank. Neste exemplo, a coleção é denominada FHIR Patient.
Selecione a guia Autorização na visão geral da coleção.
Na lista suspensa Tipo, selecione OAuth 2.0.
Role até a seção Configurar Novo Token e insira os seguintes 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
.
Copie o escopo totalmente qualificado da seção Expor uma API do aplicativo de recursos B2C.
{YOUR_APPLICATION_ID_URI}/patient.all.read
Buscar o recurso do 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 estiver configurada para iniciar o fluxo de usuário B2C, escolha Obter Novo Token de Acesso para obter um token de acesso.
Use as credenciais do paciente de teste para entrar.
Escolha Usar token para usar o token de acesso para todas as solicitações na coleção.
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.
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 do paciente.
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.