Guía de Implementación FHIR de ESAVI
0.2.0 - ci-build International flag

Guía de Implementación FHIR de ESAVI, published by ESAVI -. This guide is not an authorized publication; it is the continuous build for version 0.2.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/PanAmericanHealthOrganization/ESAVI-IG-FHIR/ and changes regularly. See the Directory of published versions

Seguridad

Autorización/Autenticación

El centro regional implementa seguridad basada en oAuth2 con tokens, por lo cual la primera llamada de las aplicaciones autorizadas debe realizarse a la url que provee el token ([auth]).

<?xml version="1.0" encoding="us-ascii" standalone="no"?>AutenticaciónCLIAUTSolicitud de AutenticacionPOST [auth] body:AuthenticationRequestresponse body: AuthenticationResponse

Registro de Aplicaciones

Previo al uso del servicio de autenticación, la aplicación que realiza el pedido debe solicitar a los administradores del centro regional :

Registrar una URI fija para la aplicación en el Centro Regional En el caso de utilizar firma digital: Registrar una clave pública RSA (SHA-256) Una vez registrada la aplicación, se establece una relación de confianza entre la aplicación y el centro regional, esto es, la aplicación se considera ‘pre-autorizada’ para registrar en AEFI

El Centro Regional asignará al cliente un identificador denominado client_id

En tiempo de ejecución, el servicio debe obtener un token de acceso para poder acceder a la información. Estos tokens de acceso pueden ser generados automáticamente, sin necesidad de intervención humana, con una expiración recomendada de 15 minutos.  

Generación del Token de Autenticación

[SecretWord] Palabra clave otorgada por el centro regional [urlAuth] URL de Autorización

Paso 1: Generación de Token JWT

La aplicación cliente debe generar un token JWT firmado con la palabra clave otorgada por la DNSIS con la siguiente información

Ejemplo de Código JS

function CreateJWTToken()
{
   var jwt =   require('jsonwebtoken');
   c       =   authc.authConfig();
   var myTokenContent=
   {
       iss:    c.iss,
       iat:    Date.now(),
       exp:    Date.now()  +  6000000 ,
       aud:    c.aud,
       sub:    c.sub,
       name:   c.name,
       ident:  c.ident,
       role:   c.role
   }
   var token = jwt.sign(myTokenContent, c.secretWord);
   return token;
}

Paso 2 : Post AuthorizationRequest

La aplicación cliente debe realizar un POST a [urlAuth] del JSON del AuthorizationRequest

AuthorizationRequest

elemento contenido ejemplo
grantType clientCredentials valor fijo
scope VER Tabla de Scopes Bundle.write
clientAssertionType urn:ietf:params:oauth:client-assertion-type:jwt-bearer valor fijo
clientAssertion [token jwt creado en el paso 1]

Tabla de Scopes

Operación Scopes
Registro AEFI Bundle/*.write
Consulta Terminologica ValueSet/*.read,CodeSystem/*.read,ConceptMap/*.read

AuthorizationRequest: Ejemplo de Código JS

   tokenInicial=CreateJWTToken();
   var authRequest={
       "grantType": "client_credentials",
       "scope": "Bundle/*.write",
       "clientAssertionType": "urn:ietf:params:oauth:client-assertion-type:jwt-bearer",
       "clientAssertion": tokenInicial
   };

Respuesta a AuthorizationRequest

La respuesta será un objeto JSON con las siguientes propiedades AuthorizationResponse

elemento descripción detalles
scope Nivel de Acceso Otorgado Ver tabla scopes
access_token Token Otorgado por el Servidor Este es el token que debe incluir en todas las solicitudes al CER
expires_in Cantidad de segundos de expiración del token Se sugiere 900 (quince minutos)
token_type Tipo de Token Valor fijo: bearer

Ejemplo de Respuesta JSON


{ "access_token": "m7rt6i7s9nuxkjvi8vsx", "token_type": "bearer", "expires_in": 900, "scope": "Bundle/write" }

###  Inclusión del Token en el Encabezado de las Solicitudes HTTPS

En todas las invocaciones al Centro Regional debe incluirse el token obtenido como encabezado (header) de la solicitud HTTPS.

Nombre: Authorization Valor: Bearer: [access_token]

El token será validado por el Centro Regional