Validación del token de acceso de Azure API for FHIR

La forma en que Azure API for FHIR valida el token de acceso depende de la implementación y la configuración. En este artículo, le guiaremos por los pasos de validación, lo que puede resultar útil al solucionar problemas de acceso.

El token de validación no tiene problemas con el proveedor de identidades

El primer paso de la validación del token es comprobar que ha sido emitido por el proveedor de identidades correcto y que no se ha modificado. El servidor de FHIR se configura para usar un proveedor de identidades concreto conocido como autoridad Authority. El servidor de FHIR recupera información sobre el proveedor de identidades del punto de conexión /.well-known/openid-configuration. Cuando se usa Azure Active Directory (Azure AD), la dirección URL completa es:

GET https://login.microsoftonline.com/<TENANT-ID>/.well-known/openid-configuration

donde <TENANT-ID> es el inquilino concreto de Azure AD (ya sea un identificador de inquilino o un nombre de dominio).

Azure AD devolverá un documento como este al servidor de 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"
}

Las propiedades importantes para el servidor de FHIR son jwks_uri, que indica al servidor dónde capturar las claves de cifrado necesarias para validar la firma del token, y issuer, que indica al servidor qué va a haber en la notificación del emisor (iss) de los tokens emitidos por este servidor. El servidor FHIR puede usarlo para validar que recibe un token auténtico.

Validación de notificaciones del token

Una vez que el servidor ha comprobado la autenticidad del token, el servidor de FHIR pasa a validar que el cliente tenga las notificaciones necesarias para acceder al token.

Al usar Azure API for FHIR, el servidor validará:

  1. El token tenga el derecho Audience (notificación aud).
  2. El usuario o la entidad de seguridad para los que se ha emitido el token tenga acceso al plano de datos del servidor de FHIR. La notificación oid del token contiene un identificador de objeto de identidad que identifica de forma única al usuario o a la entidad de seguridad.

Se recomienda que el servicio FHIR se configure para usar RBAC de Azure para la administración de las asignaciones de roles del plano de datos. Sin embargo, también puede configurar RBAC local si el servicio FHIR usa un inquilino de Azure AD externo o secundario.

Al usar el servidor de Microsoft FHIR de OSS para Azure, el servidor validará:

  1. El token tenga el derecho Audience (notificación aud).
  2. El token tenga un rol en la notificación roles a la que se permite el acceso al servidor de FHIR.

Vea detalles sobre cómo definir roles en el servidor de FHIR.

Un servidor de FHIR también puede validar que un token de acceso tenga los ámbitos (en la notificación del token scp) para acceder a la sección de FHIR API a la que un cliente está intentando acceder. Actualmente, Azure API for FHIR y el servidor de FHIR para Azure no validan los ámbitos de token.

Pasos siguientes

Ahora que sabe cómo recorrer la validación de tokens, puede completar el tutorial para crear una aplicación de JavaScript y leer datos de Fast Healthcare Interoperability Resources (FHIR®).

FHIR® es una marca registrada de HL7 y se usa con su permiso.