Saltar al contenido principal
El SDK de Guardian ofrece un cliente sin interfaz de usuario para Guardian. npm install auth0-guardian-js

Archivos de origen

Configurar Guardian

var auth0GuardianJS = require('auth0-guardian-js')({
	// Para Tenants de EE. UU.: https://{name}.guardian.auth0.com
 	// Para Tenants de AU: https://{name}.guardian.au.auth0.com
 	// Para Tenants de EU: https://{name}.guardian.eu.auth0.com
  // Para Tenants de JP: https://{name}.guardian.jp.auth0.com
	serviceUrl: "https://{{ userData.tenant }}.guardian.auth0.com",
	requestToken: "{{ requestToken }}", // o ticket: "{{ ticket }}" - ver más abajo

	issuer: {
		// El nombre del emisor que se muestra en las apps de generación de OTP
		label: "{{ userData.tenantFriendlyName }}",
		name: "{{ userData.tenant }}",
	},

	// La etiqueta de cuenta que se muestra en las apps de generación de OTP
	accountLabel: "{{ userData.friendlyUserId }}",

	// Opcional, solo para fines de depuración,
	// ID que permite asociar un grupo de solicitudes
	// como pertenecientes a la misma "transacción" (en sentido amplio)
	globalTrackingId: "{{ globalTrackingId }}"
});
El uso de requestToken o ticket depende del método de autenticación. ticket corresponde a un ticket de inscripción generado previamente.

Usa un dominio personalizado

Si tienes un configurado para tu Tenant de Auth0, deberás actualizar la propiedad serviceUrl para que apunte al endpoint de Guardian:
var auth0GuardianJS = require('auth0-guardian-js')({
    // Para dominios personalizados
    serviceUrl: "https://{yourCustomDomain}/guardian/",
    ...
});

Inscribir dispositivos

La inscripción de dispositivos consta de los siguientes pasos:
  1. Inicie la transacción.
  2. (opcional) Compruebe si el usuario ya está inscrito. No es posible inscribirse dos veces.
  3. Envíe la información necesaria para la inscripción.
  4. Confirme la inscripción.
  5. Muestre el código de recuperación.
Algunos pasos pueden omitirse según el método. Proporcionamos la misma interfaz para todos los métodos para que pueda escribir código de forma uniforme. Algunos métodos completan la autenticación, mientras que otros requieren un paso adicional de autenticación. Puede determinarlo escuchando el evento enrollment-complete.
function enroll(transaction, method) {
	if (transaction.isEnrolled()) {
		console.log('You are already enrolled');
		return;
	}

	var enrollData = {};

	if (method === 'sms') {
		enrollData.phoneNumber = prompt('Phone number'); // Recopilar número de teléfono
	}

	return transaction.enroll(method, enrollData, function (err, otpEnrollment) {
		if (err) {
			console.error(err);
			return;
		}

		var uri = otpEnrollment.getUri();
		if (uri) {
			showQR(uri);
		}

		var confirmData = {};
		if (method === 'otp' || method === 'sms') {
			confirmData.otpCode = prompt('Otp code'); // Collect verification otp
		}

		otpEnrollment.confirm(confirmData);
	});
}

auth0GuardianJS.start(function(err, transaction) {
	if (err) {
		console.error(err);
		return;
	}

	transaction.on('error', function(error) {
		console.error(error);
	});

	transaction.on('timeout', function() {
		console.log('Timeout');
	});

	transaction.on('enrollment-complete', function(payload) {
		if (payload.recoveryCode) {
			alert('Recovery code is ' + payload.recoveryCode);
		}

		if (payload.authRequired) {
			showAuthenticationFor(transaction, payload.enrollment);
			return;
		}
	});

	transaction.on('auth-response', function(payload) {
		if (payload.recoveryCode) {
			alert('The new recovery code is ' + payload.recoveryCode);
		}

		if (!payload.accepted) {
			alert('Authentication has been rejected');
			return;
		}

		auth0GuardianJS.formPostHelper('{{ postActionURL }}', { signature: payload.signature });
	});

	var availableEnrollmentMethods = transaction.getAvailableEnrollmentMethods();

	method = prompt('What method do you want to use, select one of '
		+ availableEnrollmentMethods.join(', '));

	enroll(transaction, method) // For sms
});

Autenticar

Para autenticarte con un método, debes seguir estos pasos:
  1. Inicia la transacción.
  2. (opcional) Comprueba si el usuario ya está inscrito. Para autenticarse, debe estar inscrito.
  3. Solicita la autenticación (la notificación push o el SMS). Esta solicitud no tiene efecto para OTP.
  4. Verifica el OTP (.verify no tiene efecto para push).
Algunos pasos pueden omitirse según el método; proporcionamos la misma interfaz para todos los métodos para que puedas escribir código uniforme. Después de verificar el factor o de aceptar la notificación push, recibirás un evento auth-response con el payload que debes enviar al servidor; puedes usar auth0GuardianJS.formPostHelper('{{ postActionURL }}', payload) para reenviar el mensaje al servidor. También puedes recibir auth-rejected si se recibió la notificación push.
function authenticate(method) {
	auth0GuardianJS.start(function (err, transaction) {
		if (err) {
			console.error(err);
			return;
		}

		if (!transaction.isEnrolled()) {
			console.log('You are not enrolled');
			return;
		}

		transaction.on('error', function(error) {
			console.error(error);
		});

		transaction.on('timeout', function() {
			console.log('Timeout');
		});

		transaction.on('auth-response', function(payload) {
			if (payload.recoveryCode) {
				alert('The new recovery code is ' + payload.recoveryCode);
			}

			if (!payload.accepted) {
				alert('Authentication has been rejected');
				return;
			}

			auth0GuardianJS.formPostHelper('{{ postActionURL }}', { signature: payload.signature });
		});

		var enrollment = transaction.getEnrollments()[0];

		if (enrollment.getAvailableAuthenticatorTypes().length === 0) {
			alert('Somethings went wrong, seems that there is no authenticators');
			return;
		}

		transaction.requestAuth(enrollment, { method: method } function(err, auth) {
			if (err) {
				console.error(err);
				return;
			}

			var data = {};
			if (method === 'sms' || method === 'otp') {
				data.otpCode = prompt('Otp code');
			} else if (method === 'recovery-code') {
				data.recoveryCode = prompt('Recovery code');
			}

			return auth.verify(data);
		});
	});
}

Más información