Validação de token de acesso da API do Azure para FHIR
A forma como a API do Azure para FHIR valida o token de acesso dependerá da implementação e da configuração. Neste artigo, vamos percorrer os passos de validação, que podem ser úteis ao resolver problemas de acesso.
Validar token não tem problemas com o fornecedor de identidade
O primeiro passo na validação do token é verificar se o token foi emitido pelo fornecedor de identidade correto e que não foi modificado. O servidor FHIR será configurado para utilizar um fornecedor de identidade específico conhecido como autoridade Authority
. O servidor FHIR obterá informações sobre o fornecedor de identidade a /.well-known/openid-configuration
partir do ponto final. Quando utiliza o Azure Active Directory (Azure AD), o URL completo é:
GET https://login.microsoftonline.com/<TENANT-ID>/.well-known/openid-configuration
em que <TENANT-ID>
é o inquilino Azure AD específico (um ID de inquilino ou um nome de domínio).
Azure AD devolverá um documento como este ao 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 indica ao servidor onde obter as chaves de encriptação necessárias para validar a assinatura do token e issuer
, que indica ao servidor o que estará na afirmação do emissor (iss
) dos tokens emitidos por este servidor. O servidor FHIR pode utilizá-lo para validar que está a receber um token autêntico.
Validar afirmações do token
Assim que o servidor verificar a autenticidade do token, o servidor FHIR irá, em seguida, proceder para validar que o cliente tem as afirmações necessárias para aceder ao token.
Quando utiliza a API do Azure para FHIR, o servidor irá validar:
- O token tem o direito
Audience
(aud
afirmação). - O utilizador ou principal para o qual o token foi emitido tem permissão para aceder ao plano de dados do servidor FHIR. A
oid
afirmação do token contém um ID de objeto de identidade, que identifica exclusivamente o utilizador ou o principal.
Recomendamos que o serviço FHIR seja configurado para utilizar o RBAC do Azure para gerir atribuições de funções de planos de dados. No entanto, também pode configurar o RBAC local se o seu serviço FHIR utilizar um inquilino de Azure AD externo ou secundário.
Quando utiliza o servidor MICROSOFT FHIR do OSS para o Azure, o servidor irá validar:
- O token tem o direito
Audience
(aud
afirmação). - O token tem uma função na
roles
afirmação, que tem permissão para aceder ao servidor FHIR.
Consulte os detalhes sobre como definir funções no servidor FHIR.
Um servidor FHIR também pode validar que um token de acesso tem os âmbitos (na afirmação scp
de token) para aceder à parte da API FHIR a que um cliente está a tentar aceder. Atualmente, a API do Azure para FHIR e o servidor FHIR para o Azure não validam âmbitos de tokens.
Passos seguintes
Agora que sabe como passar pela validação de tokens, pode concluir o tutorial para criar uma aplicação JavaScript e ler dados de Recursos de Interoperabilidade de Cuidados de Saúde Rápidos (FHIR®).
FHIR® é uma marca registada do HL7 e é utilizada com a permissão de HL7.