@neodaten/auth-native 0.0.1-reserva.0 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/almacen-con-desbloqueo.d.ts +19 -0
- package/dist/almacen-con-desbloqueo.js +117 -0
- package/dist/almacen-con-desbloqueo.js.map +1 -0
- package/dist/almacen-seguro.d.ts +5 -0
- package/dist/almacen-seguro.js +2 -0
- package/dist/almacen-seguro.js.map +1 -0
- package/dist/base64url.d.ts +3 -0
- package/dist/base64url.js +40 -0
- package/dist/base64url.js.map +1 -0
- package/dist/bienvenida/bienvenida-con-ultima-cuenta.d.ts +13 -0
- package/dist/bienvenida/bienvenida-con-ultima-cuenta.js +73 -0
- package/dist/bienvenida/bienvenida-con-ultima-cuenta.js.map +1 -0
- package/dist/bienvenida/estado-de-la-bienvenida.d.ts +14 -0
- package/dist/bienvenida/estado-de-la-bienvenida.js +18 -0
- package/dist/bienvenida/estado-de-la-bienvenida.js.map +1 -0
- package/dist/bienvenida/index.d.ts +5 -0
- package/dist/bienvenida/index.js +5 -0
- package/dist/bienvenida/index.js.map +1 -0
- package/dist/bienvenida/marca-de-la-bienvenida.d.ts +12 -0
- package/dist/bienvenida/marca-de-la-bienvenida.js +2 -0
- package/dist/bienvenida/marca-de-la-bienvenida.js.map +1 -0
- package/dist/bienvenida/textos-de-la-bienvenida.d.ts +9 -0
- package/dist/bienvenida/textos-de-la-bienvenida.js +12 -0
- package/dist/bienvenida/textos-de-la-bienvenida.js.map +1 -0
- package/dist/bienvenida/use-bienvenida.d.ts +13 -0
- package/dist/bienvenida/use-bienvenida.js +42 -0
- package/dist/bienvenida/use-bienvenida.js.map +1 -0
- package/dist/canal-del-canje.d.ts +3 -0
- package/dist/canal-del-canje.js +22 -0
- package/dist/canal-del-canje.js.map +1 -0
- package/dist/cliente-de-identidad-nativa.d.ts +32 -0
- package/dist/cliente-de-identidad-nativa.js +179 -0
- package/dist/cliente-de-identidad-nativa.js.map +1 -0
- package/dist/criptografia.d.ts +15 -0
- package/dist/criptografia.js +28 -0
- package/dist/criptografia.js.map +1 -0
- package/dist/error-de-identidad.d.ts +6 -0
- package/dist/error-de-identidad.js +29 -0
- package/dist/error-de-identidad.js.map +1 -0
- package/dist/expo/crear-almacen-expo.d.ts +17 -0
- package/dist/expo/crear-almacen-expo.js +30 -0
- package/dist/expo/crear-almacen-expo.js.map +1 -0
- package/dist/expo/index.d.ts +1 -0
- package/dist/expo/index.js +2 -0
- package/dist/expo/index.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/keychain/crear-almacen-keychain.d.ts +34 -0
- package/dist/keychain/crear-almacen-keychain.js +46 -0
- package/dist/keychain/crear-almacen-keychain.js.map +1 -0
- package/dist/keychain/index.d.ts +1 -0
- package/dist/keychain/index.js +2 -0
- package/dist/keychain/index.js.map +1 -0
- package/dist/llaves-del-emisor.d.ts +4 -0
- package/dist/llaves-del-emisor.js +42 -0
- package/dist/llaves-del-emisor.js.map +1 -0
- package/dist/login-hospedado.d.ts +29 -0
- package/dist/login-hospedado.js +123 -0
- package/dist/login-hospedado.js.map +1 -0
- package/dist/navegacion-del-login.d.ts +20 -0
- package/dist/navegacion-del-login.js +27 -0
- package/dist/navegacion-del-login.js.map +1 -0
- package/dist/pantalla/index.d.ts +2 -0
- package/dist/pantalla/index.js +3 -0
- package/dist/pantalla/index.js.map +1 -0
- package/dist/pantalla/manejador-de-carga.d.ts +11 -0
- package/dist/pantalla/manejador-de-carga.js +12 -0
- package/dist/pantalla/manejador-de-carga.js.map +1 -0
- package/dist/pantalla/pantalla-de-login-hospedado.d.ts +6 -0
- package/dist/pantalla/pantalla-de-login-hospedado.js +30 -0
- package/dist/pantalla/pantalla-de-login-hospedado.js.map +1 -0
- package/dist/passkey-de-la-bienvenida.d.ts +20 -0
- package/dist/passkey-de-la-bienvenida.js +50 -0
- package/dist/passkey-de-la-bienvenida.js.map +1 -0
- package/dist/pkce.d.ts +8 -0
- package/dist/pkce.js +13 -0
- package/dist/pkce.js.map +1 -0
- package/dist/respuesta-del-emisor.d.ts +17 -0
- package/dist/respuesta-del-emisor.js +70 -0
- package/dist/respuesta-del-emisor.js.map +1 -0
- package/dist/sesion-guardada.d.ts +12 -0
- package/dist/sesion-guardada.js +44 -0
- package/dist/sesion-guardada.js.map +1 -0
- package/dist/sha256.d.ts +1 -0
- package/dist/sha256.js +84 -0
- package/dist/sha256.js.map +1 -0
- package/dist/textos-del-desbloqueo.d.ts +7 -0
- package/dist/textos-del-desbloqueo.js +7 -0
- package/dist/textos-del-desbloqueo.js.map +1 -0
- package/dist/ticket-de-atestacion.d.ts +21 -0
- package/dist/ticket-de-atestacion.js +33 -0
- package/dist/ticket-de-atestacion.js.map +1 -0
- package/dist/ultima-cuenta.d.ts +13 -0
- package/dist/ultima-cuenta.js +67 -0
- package/dist/ultima-cuenta.js.map +1 -0
- package/dist/validar-id-token.d.ts +15 -0
- package/dist/validar-id-token.js +86 -0
- package/dist/validar-id-token.js.map +1 -0
- package/dist/vuelo-unico.d.ts +1 -0
- package/dist/vuelo-unico.js +10 -0
- package/dist/vuelo-unico.js.map +1 -0
- package/package.json +37 -46
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sha256.js","sourceRoot":"","sources":["../src/sha256.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export const TEXTOS_DEL_DESBLOQUEO = {
|
|
2
|
+
interruptor: 'Entrar con Face ID o huella',
|
|
3
|
+
titulo: 'Confirma que eres tú',
|
|
4
|
+
motivo: 'Usa tu rostro o tu huella para entrar a tu cuenta.',
|
|
5
|
+
entrarConCodigo: 'Entrar con código',
|
|
6
|
+
};
|
|
7
|
+
//# sourceMappingURL=textos-del-desbloqueo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"textos-del-desbloqueo.js","sourceRoot":"","sources":["../src/textos-del-desbloqueo.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,MAAM,qBAAqB,GAAkC;IAClE,WAAW,EAAE,6BAA6B;IAC1C,MAAM,EAAE,sBAAsB;IAC9B,MAAM,EAAE,oDAAoD;IAC5D,eAAe,EAAE,mBAAmB;CACrC,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export type PlataformaDeAtestacion = 'ios' | 'android';
|
|
2
|
+
export interface AtestacionDelDispositivo {
|
|
3
|
+
plataforma: PlataformaDeAtestacion;
|
|
4
|
+
token: string;
|
|
5
|
+
dispositivo: string;
|
|
6
|
+
}
|
|
7
|
+
export interface ProveedorDeAtestacion {
|
|
8
|
+
atestar(reto: string): Promise<AtestacionDelDispositivo>;
|
|
9
|
+
}
|
|
10
|
+
export interface PedidoDeTicket {
|
|
11
|
+
coreApiUrl: string;
|
|
12
|
+
clienteId: string;
|
|
13
|
+
proveedor: ProveedorDeAtestacion;
|
|
14
|
+
pedir: (url: string, init?: RequestInit) => Promise<Response>;
|
|
15
|
+
}
|
|
16
|
+
export interface TicketDelDispositivo {
|
|
17
|
+
ticket: string;
|
|
18
|
+
dispositivo: string;
|
|
19
|
+
}
|
|
20
|
+
export declare const pedirTicketDeAtestacion: (pedido: PedidoDeTicket) => Promise<string>;
|
|
21
|
+
export declare const pedirTicketDelDispositivo: ({ coreApiUrl, clienteId, proveedor, pedir, }: PedidoDeTicket) => Promise<TicketDelDispositivo>;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { ErrorDeIdentidad } from './error-de-identidad';
|
|
2
|
+
const fallida = (causa) => new ErrorDeIdentidad('atestacion_fallida', causa === undefined ? undefined : { cause: causa });
|
|
3
|
+
const textoDelCampo = async (respuesta, campo) => {
|
|
4
|
+
if (!respuesta.ok)
|
|
5
|
+
throw fallida();
|
|
6
|
+
const cuerpo = await respuesta.json();
|
|
7
|
+
if (typeof cuerpo !== 'object' || cuerpo === null || !(campo in cuerpo))
|
|
8
|
+
throw fallida();
|
|
9
|
+
const valor = Object.getOwnPropertyDescriptor(cuerpo, campo)?.value;
|
|
10
|
+
if (typeof valor !== 'string' || valor.length === 0)
|
|
11
|
+
throw fallida();
|
|
12
|
+
return valor;
|
|
13
|
+
};
|
|
14
|
+
const atestar = (proveedor, reto) => proveedor.atestar(reto).catch((error) => {
|
|
15
|
+
throw fallida(error);
|
|
16
|
+
});
|
|
17
|
+
export const pedirTicketDeAtestacion = async (pedido) => (await pedirTicketDelDispositivo(pedido)).ticket;
|
|
18
|
+
export const pedirTicketDelDispositivo = async ({ coreApiUrl, clienteId, proveedor, pedir, }) => {
|
|
19
|
+
const reto = await textoDelCampo(await pedir(`${coreApiUrl}/auth/atestacion/reto`, { method: 'POST' }), 'reto');
|
|
20
|
+
const { plataforma, token, dispositivo } = await atestar(proveedor, reto);
|
|
21
|
+
const respuesta = await pedir(`${coreApiUrl}/auth/atestacion/ticket`, {
|
|
22
|
+
method: 'POST',
|
|
23
|
+
headers: {
|
|
24
|
+
'Content-Type': 'application/json',
|
|
25
|
+
'x-atestacion-plataforma': plataforma,
|
|
26
|
+
'x-atestacion': token,
|
|
27
|
+
'x-dispositivo': dispositivo,
|
|
28
|
+
},
|
|
29
|
+
body: JSON.stringify({ client_id: clienteId }),
|
|
30
|
+
});
|
|
31
|
+
return { ticket: await textoDelCampo(respuesta, 'ticket'), dispositivo };
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=ticket-de-atestacion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ticket-de-atestacion.js","sourceRoot":"","sources":["../src/ticket-de-atestacion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAqBxD,MAAM,OAAO,GAAG,CAAC,KAAe,EAAoB,EAAE,CACpD,IAAI,gBAAgB,CAAC,oBAAoB,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;AAEjG,MAAM,aAAa,GAAG,KAAK,EAAE,SAAmB,EAAE,KAAa,EAAmB,EAAE;IAClF,IAAI,CAAC,SAAS,CAAC,EAAE;QAAE,MAAM,OAAO,EAAE,CAAC;IACnC,MAAM,MAAM,GAAY,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;IAC/C,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC;QAAE,MAAM,OAAO,EAAE,CAAC;IACzF,MAAM,KAAK,GAAY,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC;IAC7E,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,OAAO,EAAE,CAAC;IACrE,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG,CAAC,SAAgC,EAAE,IAAY,EAAE,EAAE,CACjE,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IAC/C,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC;AAOL,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,EAAE,MAAsB,EAAmB,EAAE,CACvF,CAAC,MAAM,yBAAyB,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;AAEnD,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,EAAE,EAC9C,UAAU,EACV,SAAS,EACT,SAAS,EACT,KAAK,GACU,EAAiC,EAAE;IAClD,MAAM,IAAI,GAAG,MAAM,aAAa,CAC9B,MAAM,KAAK,CAAC,GAAG,UAAU,uBAAuB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EACrE,MAAM,CACP,CAAC;IACF,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC1E,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,GAAG,UAAU,yBAAyB,EAAE;QACpE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,yBAAyB,EAAE,UAAU;YACrC,cAAc,EAAE,KAAK;YACrB,eAAe,EAAE,WAAW;SAC7B;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;KAC/C,CAAC,CAAC;IACH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;AAC3E,CAAC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { AlmacenSeguro } from './almacen-seguro';
|
|
2
|
+
export declare const LLAVE_DE_LA_ULTIMA_CUENTA = "neodaten.ultima-cuenta";
|
|
3
|
+
export interface UltimaCuenta {
|
|
4
|
+
sub: string;
|
|
5
|
+
nombre: string | null;
|
|
6
|
+
telefonoEnmascarado: string | null;
|
|
7
|
+
tienePasskey: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare const enmascararTelefono: (telefono: string) => string | null;
|
|
10
|
+
export declare const ultimaCuentaDe: (reclamos: Record<string, unknown>) => UltimaCuenta | null;
|
|
11
|
+
export declare function leerUltimaCuenta(almacen: AlmacenSeguro): Promise<UltimaCuenta | null>;
|
|
12
|
+
export declare function guardarUltimaCuenta(almacen: AlmacenSeguro, cuenta: UltimaCuenta): Promise<void>;
|
|
13
|
+
export declare function olvidarUltimaCuenta(almacen: AlmacenSeguro): Promise<void>;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
export const LLAVE_DE_LA_ULTIMA_CUENTA = 'neodaten.ultima-cuenta';
|
|
2
|
+
const DIGITOS_VISIBLES_DEL_TELEFONO = 4;
|
|
3
|
+
const MASCARA_DEL_TELEFONO = '••••';
|
|
4
|
+
const esTextoOVacio = (valor) => valor === null || typeof valor === 'string';
|
|
5
|
+
const esUltimaCuenta = (valor) => {
|
|
6
|
+
if (typeof valor !== 'object' || valor === null)
|
|
7
|
+
return false;
|
|
8
|
+
if (!('sub' in valor) || !('nombre' in valor) || !('telefonoEnmascarado' in valor))
|
|
9
|
+
return false;
|
|
10
|
+
if (!('tienePasskey' in valor))
|
|
11
|
+
return false;
|
|
12
|
+
return (typeof valor.sub === 'string' &&
|
|
13
|
+
valor.sub.length > 0 &&
|
|
14
|
+
esTextoOVacio(valor.nombre) &&
|
|
15
|
+
esTextoOVacio(valor.telefonoEnmascarado) &&
|
|
16
|
+
typeof valor.tienePasskey === 'boolean');
|
|
17
|
+
};
|
|
18
|
+
export const enmascararTelefono = (telefono) => {
|
|
19
|
+
const digitos = telefono.replace(/\D/g, '');
|
|
20
|
+
if (digitos.length < DIGITOS_VISIBLES_DEL_TELEFONO)
|
|
21
|
+
return null;
|
|
22
|
+
return `${MASCARA_DEL_TELEFONO} ${digitos.slice(-DIGITOS_VISIBLES_DEL_TELEFONO)}`;
|
|
23
|
+
};
|
|
24
|
+
const textoDe = (reclamos, nombre) => {
|
|
25
|
+
const valor = reclamos[nombre];
|
|
26
|
+
return typeof valor === 'string' && valor.length > 0 ? valor : null;
|
|
27
|
+
};
|
|
28
|
+
export const ultimaCuentaDe = (reclamos) => {
|
|
29
|
+
const sub = textoDe(reclamos, 'sub');
|
|
30
|
+
if (sub === null)
|
|
31
|
+
return null;
|
|
32
|
+
const telefono = textoDe(reclamos, 'phone_number');
|
|
33
|
+
return {
|
|
34
|
+
sub,
|
|
35
|
+
nombre: textoDe(reclamos, 'name'),
|
|
36
|
+
telefonoEnmascarado: telefono === null ? null : enmascararTelefono(telefono),
|
|
37
|
+
tienePasskey: reclamos.tiene_passkey === true,
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
const interpretar = (texto) => {
|
|
41
|
+
try {
|
|
42
|
+
const valor = JSON.parse(texto);
|
|
43
|
+
return valor;
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
if (error instanceof SyntaxError)
|
|
47
|
+
return null;
|
|
48
|
+
throw error;
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
export async function leerUltimaCuenta(almacen) {
|
|
52
|
+
const texto = await almacen.obtener(LLAVE_DE_LA_ULTIMA_CUENTA);
|
|
53
|
+
if (texto === null)
|
|
54
|
+
return null;
|
|
55
|
+
const cuenta = interpretar(texto);
|
|
56
|
+
if (esUltimaCuenta(cuenta))
|
|
57
|
+
return cuenta;
|
|
58
|
+
await almacen.borrar(LLAVE_DE_LA_ULTIMA_CUENTA);
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
export async function guardarUltimaCuenta(almacen, cuenta) {
|
|
62
|
+
await almacen.guardar(LLAVE_DE_LA_ULTIMA_CUENTA, JSON.stringify(cuenta));
|
|
63
|
+
}
|
|
64
|
+
export async function olvidarUltimaCuenta(almacen) {
|
|
65
|
+
await almacen.borrar(LLAVE_DE_LA_ULTIMA_CUENTA);
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=ultima-cuenta.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ultima-cuenta.js","sourceRoot":"","sources":["../src/ultima-cuenta.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Criptografia, LlavePublicaEc } from './criptografia';
|
|
2
|
+
export interface IdTokenEsperado {
|
|
3
|
+
emisor: string;
|
|
4
|
+
clienteId: string;
|
|
5
|
+
nonce: string | null;
|
|
6
|
+
ahoraMs: number;
|
|
7
|
+
}
|
|
8
|
+
export interface LlavesDelEmisor {
|
|
9
|
+
llavePorKid(kid: string): Promise<LlavePublicaEc | null>;
|
|
10
|
+
}
|
|
11
|
+
export declare const reclamosDelIdToken: (jwt: string) => Record<string, unknown>;
|
|
12
|
+
export declare const validarIdToken: (jwt: string, esperado: IdTokenEsperado, { llaves, cripto }: {
|
|
13
|
+
llaves: LlavesDelEmisor;
|
|
14
|
+
cripto: Criptografia;
|
|
15
|
+
}) => Promise<Record<string, unknown>>;
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { deBase64url, textoABytes } from './base64url';
|
|
2
|
+
import { ErrorDeIdentidad } from './error-de-identidad';
|
|
3
|
+
const ALGORITMO_ESPERADO = 'ES256';
|
|
4
|
+
const PARTES_DEL_JWT = 3;
|
|
5
|
+
const TOLERANCIA_DEL_RELOJ_S = 60;
|
|
6
|
+
const MILISEGUNDOS_POR_SEGUNDO = 1000;
|
|
7
|
+
const invalida = () => new ErrorDeIdentidad('identidad_invalida');
|
|
8
|
+
const objetoJson = (bytes) => {
|
|
9
|
+
if (bytes === null)
|
|
10
|
+
return null;
|
|
11
|
+
try {
|
|
12
|
+
const valor = JSON.parse(new TextDecoder().decode(bytes));
|
|
13
|
+
return typeof valor === 'object' && valor !== null && !Array.isArray(valor)
|
|
14
|
+
? Object.fromEntries(Object.entries(valor))
|
|
15
|
+
: null;
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
if (error instanceof SyntaxError)
|
|
19
|
+
return null;
|
|
20
|
+
throw error;
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
const leerJwt = (jwt) => {
|
|
24
|
+
const partes = jwt.split('.');
|
|
25
|
+
const [encabezado, carga, firma] = partes;
|
|
26
|
+
if (partes.length !== PARTES_DEL_JWT || encabezado === undefined || carga === undefined) {
|
|
27
|
+
throw invalida();
|
|
28
|
+
}
|
|
29
|
+
const encabezadoLeido = objetoJson(deBase64url(encabezado));
|
|
30
|
+
const cargaLeida = objetoJson(deBase64url(carga));
|
|
31
|
+
const firmaLeida = deBase64url(firma ?? '');
|
|
32
|
+
if (encabezadoLeido === null || cargaLeida === null || firmaLeida === null)
|
|
33
|
+
throw invalida();
|
|
34
|
+
return {
|
|
35
|
+
encabezado: encabezadoLeido,
|
|
36
|
+
carga: cargaLeida,
|
|
37
|
+
firmado: textoABytes(`${encabezado}.${carga}`),
|
|
38
|
+
firma: firmaLeida,
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
const incluyeLaAudiencia = (aud, clienteId) => aud === clienteId || (Array.isArray(aud) && aud.includes(clienteId));
|
|
42
|
+
const esElPresentadoCorrecto = (carga, clienteId) => !Array.isArray(carga.aud) || carga.aud.length === 1 || carga.azp === clienteId;
|
|
43
|
+
const esVigente = (carga, ahoraMs) => {
|
|
44
|
+
const ahora = ahoraMs / MILISEGUNDOS_POR_SEGUNDO;
|
|
45
|
+
return (typeof carga.exp === 'number' &&
|
|
46
|
+
carga.exp + TOLERANCIA_DEL_RELOJ_S > ahora &&
|
|
47
|
+
typeof carga.iat === 'number' &&
|
|
48
|
+
carga.iat - TOLERANCIA_DEL_RELOJ_S <= ahora);
|
|
49
|
+
};
|
|
50
|
+
const exigirReclamos = (carga, esperado) => {
|
|
51
|
+
if (carga.iss !== esperado.emisor)
|
|
52
|
+
throw invalida();
|
|
53
|
+
if (!incluyeLaAudiencia(carga.aud, esperado.clienteId))
|
|
54
|
+
throw invalida();
|
|
55
|
+
if (!esElPresentadoCorrecto(carga, esperado.clienteId))
|
|
56
|
+
throw invalida();
|
|
57
|
+
if ((carga.nonce ?? null) !== esperado.nonce)
|
|
58
|
+
throw invalida();
|
|
59
|
+
if (!esVigente(carga, esperado.ahoraMs))
|
|
60
|
+
throw invalida();
|
|
61
|
+
if (typeof carga.sub !== 'string' || carga.sub.length === 0)
|
|
62
|
+
throw invalida();
|
|
63
|
+
};
|
|
64
|
+
const exigirFirma = async ({ kid, firmado, firma }, llaves, verificar) => {
|
|
65
|
+
const llave = await llaves.llavePorKid(kid);
|
|
66
|
+
if (llave === null)
|
|
67
|
+
throw invalida();
|
|
68
|
+
const firmaValida = await verificar(llave, firmado, firma).catch((error) => {
|
|
69
|
+
throw new ErrorDeIdentidad('identidad_invalida', { cause: error });
|
|
70
|
+
});
|
|
71
|
+
if (!firmaValida)
|
|
72
|
+
throw invalida();
|
|
73
|
+
};
|
|
74
|
+
export const reclamosDelIdToken = (jwt) => leerJwt(jwt).carga;
|
|
75
|
+
export const validarIdToken = async (jwt, esperado, { llaves, cripto }) => {
|
|
76
|
+
const { encabezado, carga, firmado, firma } = leerJwt(jwt);
|
|
77
|
+
if (encabezado.alg !== ALGORITMO_ESPERADO || typeof encabezado.kid !== 'string') {
|
|
78
|
+
throw invalida();
|
|
79
|
+
}
|
|
80
|
+
if (cripto.verificarEs256 !== null) {
|
|
81
|
+
await exigirFirma({ kid: encabezado.kid, firmado, firma }, llaves, cripto.verificarEs256);
|
|
82
|
+
}
|
|
83
|
+
exigirReclamos(carga, esperado);
|
|
84
|
+
return carga;
|
|
85
|
+
};
|
|
86
|
+
//# sourceMappingURL=validar-id-token.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validar-id-token.js","sourceRoot":"","sources":["../src/validar-id-token.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function crearVueloUnico<T>(operacion: () => Promise<T>): () => Promise<T>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vuelo-unico.js","sourceRoot":"","sources":["../src/vuelo-unico.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,eAAe,CAAI,SAA2B;IAC5D,IAAI,OAAO,GAAsB,IAAI,CAAC;IACtC,OAAO,GAAG,EAAE;QACV,OAAO,KAAK,SAAS,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;YACnC,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC,CAAC,CAAC;QACH,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,17 +1,32 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@neodaten/auth-native",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.1.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Cliente de identidad para apps React Native: login hospedado con código y PKCE, refresh rotativo y almacén seguro inyectado.",
|
|
6
6
|
"sideEffects": false,
|
|
7
|
-
"main": "./
|
|
8
|
-
"types": "./
|
|
7
|
+
"main": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
9
|
"exports": {
|
|
10
|
-
".":
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
"./
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"import": "./dist/index.js"
|
|
13
|
+
},
|
|
14
|
+
"./pantalla": {
|
|
15
|
+
"types": "./dist/pantalla/index.d.ts",
|
|
16
|
+
"import": "./dist/pantalla/index.js"
|
|
17
|
+
},
|
|
18
|
+
"./expo": {
|
|
19
|
+
"types": "./dist/expo/index.d.ts",
|
|
20
|
+
"import": "./dist/expo/index.js"
|
|
21
|
+
},
|
|
22
|
+
"./keychain": {
|
|
23
|
+
"types": "./dist/keychain/index.d.ts",
|
|
24
|
+
"import": "./dist/keychain/index.js"
|
|
25
|
+
},
|
|
26
|
+
"./bienvenida": {
|
|
27
|
+
"types": "./dist/bienvenida/index.d.ts",
|
|
28
|
+
"import": "./dist/bienvenida/index.js"
|
|
29
|
+
}
|
|
15
30
|
},
|
|
16
31
|
"files": [
|
|
17
32
|
"dist",
|
|
@@ -24,50 +39,26 @@
|
|
|
24
39
|
},
|
|
25
40
|
"publishConfig": {
|
|
26
41
|
"registry": "https://registry.npmjs.org",
|
|
27
|
-
"access": "public"
|
|
28
|
-
"main": "./dist/index.js",
|
|
29
|
-
"types": "./dist/index.d.ts",
|
|
30
|
-
"exports": {
|
|
31
|
-
".": {
|
|
32
|
-
"types": "./dist/index.d.ts",
|
|
33
|
-
"import": "./dist/index.js"
|
|
34
|
-
},
|
|
35
|
-
"./pantalla": {
|
|
36
|
-
"types": "./dist/pantalla/index.d.ts",
|
|
37
|
-
"import": "./dist/pantalla/index.js"
|
|
38
|
-
},
|
|
39
|
-
"./expo": {
|
|
40
|
-
"types": "./dist/expo/index.d.ts",
|
|
41
|
-
"import": "./dist/expo/index.js"
|
|
42
|
-
},
|
|
43
|
-
"./keychain": {
|
|
44
|
-
"types": "./dist/keychain/index.d.ts",
|
|
45
|
-
"import": "./dist/keychain/index.js"
|
|
46
|
-
},
|
|
47
|
-
"./bienvenida": {
|
|
48
|
-
"types": "./dist/bienvenida/index.d.ts",
|
|
49
|
-
"import": "./dist/bienvenida/index.js"
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
},
|
|
53
|
-
"scripts": {
|
|
54
|
-
"empaquetar": "tsc -p tsconfig.empaquetado.json",
|
|
55
|
-
"test": "vitest run",
|
|
56
|
-
"test:watch": "vitest"
|
|
42
|
+
"access": "public"
|
|
57
43
|
},
|
|
58
44
|
"peerDependencies": {
|
|
59
|
-
"react": "
|
|
45
|
+
"react": "^19.2.0",
|
|
60
46
|
"react-native-webview": ">=13.15.0 <15",
|
|
61
47
|
"react-native": ">=0.80.0"
|
|
62
48
|
},
|
|
63
49
|
"devDependencies": {
|
|
64
|
-
"@
|
|
65
|
-
"
|
|
66
|
-
"@types/react": "catalog:",
|
|
67
|
-
"react": "catalog:",
|
|
50
|
+
"@types/react": "^19.2.0",
|
|
51
|
+
"react": "^19.2.0",
|
|
68
52
|
"react-native": "0.86.3",
|
|
69
53
|
"react-native-webview": "14.0.1",
|
|
70
|
-
"typescript": "
|
|
71
|
-
"vitest": "
|
|
54
|
+
"typescript": "^6.0.3",
|
|
55
|
+
"vitest": "^4.1.0",
|
|
56
|
+
"@neodaten/eslint-config": "0.0.0",
|
|
57
|
+
"@neodaten/tsconfig": "0.0.0"
|
|
58
|
+
},
|
|
59
|
+
"scripts": {
|
|
60
|
+
"empaquetar": "tsc -p tsconfig.empaquetado.json",
|
|
61
|
+
"test": "vitest run",
|
|
62
|
+
"test:watch": "vitest"
|
|
72
63
|
}
|
|
73
|
-
}
|
|
64
|
+
}
|