API do Azure para validação de token de acesso FHIR
Como a API do Azure para FHIR valida o token de acesso dependerá da implementação e da configuração. Neste artigo, abordaremos as etapas de validação, que podem ser úteis ao solucionar problemas de acesso.
Validar token não tem problemas com o provedor de identidade
A primeira etapa na validação do token é verificar se o token foi emitido pelo provedor de identidade correto e se ele não foi modificado. O servidor FHIR será configurado para usar um provedor de identidade específico conhecido como autoridade Authority
. O servidor FHIR recuperará informações sobre o provedor de identidade do /.well-known/openid-configuration
ponto de extremidade. Quando você usa o Azure Active Directory (Azure AD), a URL completa é:
GET https://login.microsoftonline.com/<TENANT-ID>/.well-known/openid-configuration
em que <TENANT-ID>
é o locatário Azure AD específico (uma ID de locatário ou um nome de domínio).
Azure AD retornará um documento como este para o servidor FHIR.
{
"authorization_endpoint": "https://login.microsoftonline.com/<TENANT-ID>/oauth2/authorize",
"token_endpoint": "https://login.microsoftonline.com/<TENANT-ID>/oauth2/token",
"token_endpoint_auth_methods_supported": [
"client_secret_post",
"private_key_jwt",
"client_secret_basic"
],
"jwks_uri": "https://login.microsoftonline.com/common/discovery/keys",
"response_modes_supported": [
"query",
"fragment",
"form_post"
],
"subject_types_supported": [
"pairwise"
],
"id_token_signing_alg_values_supported": [
"RS256"
],
"http_logout_supported": true,
"frontchannel_logout_supported": true,
"end_session_endpoint": "https://login.microsoftonline.com/<TENANT-ID>/oauth2/logout",
"response_types_supported": [
"code",
"id_token",
"code id_token",
"token id_token",
"token"
],
"scopes_supported": [
"openid"
],
"issuer": "https://sts.windows.net/<TENANT-ID>/",
"claims_supported": [
"sub",
"iss",
"cloud_instance_name",
"cloud_instance_host_name",
"cloud_graph_host_name",
"msgraph_host",
"aud",
"exp",
"iat",
"auth_time",
"acr",
"amr",
"nonce",
"email",
"given_name",
"family_name",
"nickname"
],
"microsoft_multi_refresh_token": true,
"check_session_iframe": "https://login.microsoftonline.com/<TENANT-ID>/oauth2/checksession",
"userinfo_endpoint": "https://login.microsoftonline.com/<TENANT-ID>/openid/userinfo",
"tenant_region_scope": "WW",
"cloud_instance_name": "microsoftonline.com",
"cloud_graph_host_name": "graph.windows.net",
"msgraph_host": "graph.microsoft.com",
"rbac_url": "https://pas.windows.net"
}
As propriedades importantes para o servidor FHIR são jwks_uri
, que informa ao servidor onde buscar as chaves de criptografia necessárias para validar a assinatura do token e issuer
, que informa ao servidor o que estará na declaração do emissor (iss
) dos tokens emitidos por esse servidor. O servidor FHIR pode usar isso para validar se ele está recebendo um token autêntico.
Validar declarações do token
Depois que o servidor verificar a autenticidade do token, o servidor FHIR prosseguirá para validar se o cliente tem as declarações necessárias para acessar o token.
Ao usar a API do Azure para FHIR, o servidor validará:
- O token tem o direito
Audience
(aud
declaração). - O usuário ou entidade de segurança para o qual o token foi emitido tem permissão para acessar o plano de dados do servidor FHIR. A
oid
declaração do token contém uma ID de objeto de identidade, que identifica exclusivamente o usuário ou a entidade de segurança.
Recomendamos que o serviço FHIR seja configurado para usar o RBAC do Azure para gerenciar atribuições de função do plano de dados. No entanto, você também poderá configurar o RBAC local se o serviço FHIR usar um locatário externo ou secundário Azure AD.
Quando você usa o servidor OSS Microsoft FHIR para Azure, o servidor validará:
- O token tem o direito
Audience
(aud
declaração). - O token tem uma função na declaração
roles
, que tem permissão para acessar o servidor FHIR.
Consulte detalhes sobre como definir funções no servidor FHIR.
Um servidor FHIR também pode validar se um token de acesso tem os escopos (na declaração scp
de token ) para acessar a parte da API FHIR que um cliente está tentando acessar. Atualmente, a API do Azure para FHIR e o servidor FHIR para Azure não validam escopos de token.
Próximas etapas
Agora que você sabe como percorrer a validação de token, você pode concluir o tutorial para criar um aplicativo JavaScript e ler dados FHIR® (Fast Healthcare Interoperability Resources).
FHIR® é uma marca registrada da HL7 e é usado com a permissão da HL7.