Autenticación y Generación de Token

Cifrar credenciales y obtención de token

Importante

Primero es necesario tener configurado un usuario con su respectiva contraseña y asegurarse de que este usuario pueda generar Tokens de seguridad desde el servicio Autorizador. Este usuario y contraseña son proporcionados por BAM.

Los pasos para lograr un proceso de encriptación exitoso son los siguientes:

  1. Obtener una llave pública.
  2. Cifrar las credenciales proporcionadas por BAM.
  3. Crear Token.

Paso 1: Obtener una llave pública

Esta llave pública es necesaria para poder cifrar las credenciales proporcionadas por BAM y para obtenerla debes consumir el siguiente endpoint.

  • NO enviar ningún parámetro como body, query param o path param.

Método GET https://cmms.bam.com.gt/security/v1/auth/legacy/publicKey

Responses

200 - Successful

{
 "public_key": " Proporciona la llave publica utilizada por BAM",
 "symetric_algorithm": "aes256"
}

403 - Forbidden

{
    "message": ""
}

Paso 2: Encriptar las credenciales proporcionadas por BAM

Después de obtener la llave pública (ver paso 1), procedemos a decodificarla ya que viene codificada en Base64. Para esto nos podemos apoyar en cualquier herramienta que permita esta decodificación.

Después de haber decodificado la llave pública que viene en Base64, tendremos la llave pública lista para poder usarla para cifrar las credenciales proporcionadas por BAM.

Cifrado de credenciales

Con la llave pública decodificada, procedemos a cifrar las credenciales con cualquier herramienta o librería que permita cifrar mediante PGP.

Ejemplo del resultado de credenciales cifradas con la llave pública:

-----BEGIN PGP MESSAGE----- Version: OpenPGP.js v4.10.10 Comment: https://openpgpjs.org wcACA9zpmLvRYBoMEgQjBAHxbI0WIfJwH+Y1bo1VdRavjEx7B9n2RXFh9D76 UQQM2RUl0Qf4f5Ly/Wk0hh9eewoGegR2A7iEXvX6u9ICGGzBDwDqISFdq4PH wTV1Vr1b3TZtRUTS7HF8RXcQYVeLPLj8CyQoOxbkTADvmhonJ5f5l2FQtLOj b3oGm2gOL/AOaM6doTDm7TPwlPt4rcri8eFXltQi0+PtMuzJRzOWpt6RQ7da +NHOuGA+ufxXWpOiJiQnOPXSbgEbJzPbQgh9jUqW/Z+N0PKD0XcmdQ+6Lozg cDZ2uFyHYKsxit3ic12GAKRnXM67lZs7+4Lv7XO2zxW5GkM2dHaDreQW3VFh glACJ+Rdw6f7zYIEGd0EQuai1XvKg9ikiy7m3se+rNwgCUUOzGx7 =gTZR -----END PGP MESSAGE-----

El resultado de esta operación nos debe devolver las credenciales ya cifradas. Sin embargo, a estas credenciales ya cifradas debemos codificarlas en formato Base64.

Para este proceso podemos usar cualquier herramienta que permita codificar en formato Base64.

Después de haber codificado en Base64, debemos enviar este texto codificado al servicio Autorizador de BAM para obtener el Token que necesitamos.

A continuación un ejemplo de las credenciales codificadas en Base64:

LS0tLS1CRUdJTiBQR1AgTUVTU0FHRS0tLS0tClZlcnNpb246IE9wZW5QR1AuanMgdjQuMTAuMTAKQ29tbWVudDogaHR0cHM6Ly9vcGVucGdwanMub3JnCgp3Y0FDQTl6cG1MdlJZQm9NRWdRakJBR2dWenBNOHpkeUxKa3FXS1FaVjArblpHZDF3YjRnMGdHd2plSjAKTk1hVWtKaFkwYTVTN1lnZXpVKzMrSjFJdG10VzhzcWJwdUM3RnUwN3NOMVZGNDZmMlFGcElESUs3YjJHCkZnSXRvVUQ1QStzLzFKV0Z1UUtNV21jZ3pCZE1BZFhXbm5WMVpKNlNkVFhwU0pueTlya2hHTDlNSE9OZwpqS0Z3WnpaZG1xTmYrZkUvTnpCTElLcWdwY01UV2pXUmZnSEtSNXFqeTJsdWNRQlBDd2VZeVNjY0hkWk0KanR0bjlEZzZ1SWp5SWFSaEpJVzh4djdTYmdGWFJFbmtVUlFHc0p0M0x2WWhROWtCY3liZ01kMHRkZTFOCkIyWlpCK1VoNjdyS0hKTlZ2OXVCQTA2U1d2T1RMRzROUm5QTCtjcUFPN0U2MTFDNGJ0OXljWlBXWmwveQpybHJkQXVxZFpKOVgyV25WTG1qa1lNc2xzcVZPbEdOclJOdHdIdnFXMExVSGJFZ3kvdzg1Cj1rbXFZCi0tLS0tRU5EIFBHUCBNRVNTQUdFLS0tLS0K

Siempre recuerda

  1. Primero cifrar las credenciales con la llave pública.
  2. Codificar las credenciales ya cifradas en Base64.

**

Paso 3: Crear Token

**

Para obtener un token de seguridad debemos usar el siguiente endpoint:

Método POST https://cmms.bam.com.gt/security/v1/auth/authorize

En el body debemos enviar un campo llamado encryptedData. Este campo debe llevar como valor el texto codificado en Base64 (ver paso 2).

Por razones de seguridad debemos cifrar y codificar las credenciales proporcionadas por BAM y en ningún momento las credenciales deben viajar como texto plano.

Parameters

Body Params

{
  "grant_type": "password",
  "encryptedData": "LS0tLS1CRUdJTiBQR1AgTUVTU0FHRS0tLS0tClZlcnNpb246IE9wZW5QR1AuanMgdjQuMTAuMTAKQ29tbWVudDogaHR0cHM6Ly9vcGVucGdwanMub3JnCgp3Y0FDQTl6cG1MdlJZQm9NRWdRakJBR2dWenBNOHpkeUxKa3FXS1FaVjArblpHZDF3YjRnMGdHd2plSjAKTk1hVWtKaFkwYTVTN1lnZXpVKzMrSjFJdG10VzhzcWJwdUM3RnUwN3NOMVZGNDZmMlFGcElESUs3YjJHCkZnSXRvVUQ1QStzLzFKV0Z1UUtNV21jZ3pCZE1BZFhXbm5WMVpKNlNkVFhwU0pueTlya2hHTDlNSE9OZwpqS0Z3WnpaZG1xTmYrZkUvTnpCTElLcWdwY01UV2pXUmZnSEtSNXFqeTJsdWNRQlBDd2VZeVNjY0hkWk0KanR0bjlEZzZ1SWp5SWFSaEpJVzh4djdTYmdGWFJFbmtVUlFHc0p0M0x2WWhROWtCY3liZ01kMHRkZTFOCkIyWlpCK1VoNjdyS0hKTlZ2OXVCQTA2U1d2T1RMRzROUm5QTCtjcUFPN0U2MTFDNGJ0OXljWlBXWmwveQpybHJkQXVxZFpKOVgyV25WTG1qa1lNc2xzcVZPbEdOclJOdHdIdnFXMExVSGJFZ3kvdzg1Cj1rbXFZCi0tLS0tRU5EIFBHUCBNRVNTQUdFLS0tLS0K",
  "client_id": "TPS",
  "response_type": "legacy"
}

Response

200 - Successful

{
  "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IlVjSWxDSVFoM25iS2htdTFBZXExWnUtR0ROZGJLQUJWbnVXWVhZZjAwejgifQ...",
  "refresh_token": "xA0FQCrWIa0YQ8jTe9dRdwNHiZX2Xi9IwoPNgKycuhSz7vjslayWN1csQ596RNF5TB501q0mc3BambUZJ...",
  "id_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IlVjSWxDSVFoM25iS2htdTFBZXExWnUtR0ROZGJLQUJWbnVXWVhZZjAwejgifQ...",
  "token_type": "bearer",
  "expires_in": 1800
}

El valor de access_token es el que se utilizará para consumir los métodos siguientes.


Table of Content
Please wait