Saltar al contenido principal
El SDK de Guardian para Android te ayuda a crear aplicaciones Android con la funcionalidad de Guardian, lo que proporciona acceso seguro a la (MFA) mediante notificaciones push. Con este kit de herramientas, puedes crear tu propia versión personalizada de la aplicación Guardian que se adapte a la imagen y estilo de tu organización. Para obtener más información, consulta Configurar notificaciones push para MFA. Para usar el SDK de Guardian para Android, se requiere el nivel 15 o superior de la API de Android.

Instala el SDK de Guardian para Android

Guardian está disponible tanto en Maven Central como en JCenter.
  1. Para usar Guardian, agrega estas líneas al archivo de dependencias build.gradle: implementation 'com.auth0.android:guardian:0.4.0' Puedes consultar la versión más reciente en la pestaña Releases del repositorio, en Maven o en JCenter.
  2. Después de agregar la dependencia de Gradle, asegúrate de sincronizar tu proyecto con el archivo de Gradle.

Habilita las notificaciones push de Guardian

  1. Ve a Dashboard > Seguridad > Autenticación multifactor > Push con Auth0 Guardian.
  2. Activa el interruptor de la parte superior para habilitarlas.
Auth0 Dashboard > Seguridad > Autenticación multifactor > Guardian > Personalizado > Amazon SNS
  1. Configura las notificaciones push.

Uso del SDK

Guardian es el núcleo del SDK. Tendrás que crear una instancia de esta clase para la URL de tu inquilino.
Uri url = Uri.parse("https://<tenant>.<region>.auth0.com");

Guardian guardian = new Guardian.Builder()
    .url(url)
    .build();
o
String domain = "<tenant>.<region>.auth0.com";

Guardian guardian = new Guardian.Builder()
    .domain(domain)
    .build();

Inscripción

El vínculo entre el segundo factor (una instancia de tu aplicación en un dispositivo) y una cuenta de Auth0 se denomina inscripción. Puedes crear una inscripción con la función Guardian.enroll, pero primero tendrás que generar un nuevo par de claves RSA para ella. La clave privada se usará para firmar las solicitudes de autorización o rechazo de un inicio de sesión. La clave pública se enviará durante el proceso de inscripción para que el servidor pueda verificar más adelante la firma de la solicitud.
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
keyPairGenerator.initialize(2048); // DEBES usar claves de al menos 2048 bits
KeyPair keyPair = keyPairGenerator.generateKeyPair();
A continuación, obtén la información de inscripción escaneando el código QR de Guardian y úsala para completar la inscripción de la cuenta:
Uri enrollmentUriFromQr = ...; // la URI obtenida del código QR de Guardian

CurrentDevice device = new CurrentDevice(context, "fcmToken", "deviceName");

Enrollment enrollment = guardian
    .enroll(enrollmentUriFromQr, device, keyPair)
    .execute();
Como alternativa, puedes ejecutar la solicitud en un hilo de segundo plano:
guardian
    .enroll(enrollmentUriFromQr, device, keyPair)
    .start(new Callback<Enrollment> {
        @Override
        void onSuccess(Enrollment enrollment) {
            // tenemos los datos de inscripción
        }

        @Override
        void onFailure(Throwable exception) {
            // algo falló
        }
    });
Debe proporcionar los siguientes datos:
VariableDescripción
deviceNameNombre de la inscripción que se muestra al usuario cuando se solicita el segundo factor.
fcmTokenToken del servicio de notificaciones push Firebase Cloud Messaging (FCM). Consulte Sample Register para obtener más información.

Eliminar la inscripción

Para deshabilitar MFA, puede eliminar la inscripción:
guardian
    .delete(enrollment)
    .execute(); // o start(new Callback<> ...)

Permitir solicitudes de inicio de sesión

Una vez que hayas completado la inscripción, recibirás una notificación push de FCM cada vez que el usuario necesite autenticación multifactor. Guardian proporciona un método para analizar el Map<String, String> de datos del RemoteMessage recibido de FCM y devolver una instancia de Notification lista para usar.
// en el listener de FCM recibes un RemoteMessage
@Override
public void onMessageReceived(RemoteMessage message) {
    Notification notification = Guardian.parseNotification(message.getData());
    if (notification != null) {
        // recibiste una notificación de Guardian, procésala
        handleGuardianNotification(notification);
        return;
    }

    /* maneja otras notificaciones push que puedas estar usando ... */
}
Una vez que tenga la instancia de la notificación, puede usar el método allow para aprobar la solicitud de autenticación. También necesitará la inscripción que obtuvo anteriormente. Si hay varias inscripciones, asegúrese de usar la que tenga el mismo id que la notificación (la propiedad enrollmentId).
guardian
    .allow(notification, enrollment)
    .execute(); // o start(new Callback<> ...)

Rechazar solicitudes de inicio de sesión

Para denegar una solicitud de autenticación, use reject. También puede agregar un motivo opcional para el rechazo, que estará disponible en los registros de Guardian.
guardian
    .reject(notification, enrollment) // o reject(notification, enrollment, reason)
    .execute(); // o start(new Callback<> ...)

Configurar la inscripción de OTP solo en dispositivos móviles

Puede habilitar las contraseñas de un solo uso (OTP) como factor de MFA desde el o la . Esta opción no requiere un código QR y permite que los usuarios se inscriban manualmente. Para invitar a un usuario a inscribirse, vaya a Auth0 Dashboard > User Management > Users y seleccione un usuario. Luego, acceda a la pestaña Details y use la sección Multi-Factor Authentication para enviar una invitación para inscribirse.

Conecte un recurso

Puede conectar un recurso mediante el Auth0 Dashboard o el SDK de Guardian.
Usa Auth0 Dashboard
  1. Accede a la pantalla de inicio de sesión de Auth0 y copia el código proporcionado o una clave similar codificada en base32 obtenida de otra fuente.
    Un ejemplo de pantalla de inicio de sesión que muestra un código de un solo uso
  2. Después de obtener tu código, agrégalo al SDK de Guardian:
Java public String copiedCode = "{copiedCode}"; Kotlin val copiedCode: String = "{copiedCode}"
Usa el SDK de Guardian
Primero, añade la clase LoginCodeGenerator a tu proyecto. Luego, usa getCode (String copiedCode) to para generar un código de un solo uso en tu aplicación. Java
public class LoginCodeGenerator {

   private static final int TOTP_LENGTH = 6;

   private static final int TOTP_DURATION = 30;

   private static final String TOTP_ALGORITHM = "SHA1";

   public String getCode(String copedCode) {

       byte[] key = new byte[0];

       try {

           key = Base32.decode(copedCode);

       } catch (Base32.DecodingException ex) {

//            manejar excepción

       }

       TOTP totp = new TOTP(TOTP_ALGORITHM, key, TOTP_LENGTH, TOTP_DURATION);

       return totp.generate();

   }

}
Kotlin
class LoginCodeGenerator {

   fun getCode(copiedCode: String): String {

       var key: ByteArray? = ByteArray(0)

       try {

           key = Base32.decode(copiedCode)

       } catch (ex: Base32.DecodingException) {

//            manejar excepción

       }

       val totp = TOTP(TOTP_ALGORITHM, key, TOTP_LENGTH, TOTP_DURATION)

       return totp.generate()

   }

   companion object {

       private const val TOTP_LENGTH = 6

       private const val TOTP_DURATION = 30

       private const val TOTP_ALGORITHM = "SHA1"

   }

}

Introducir el código de un solo uso

Introduce el OTP generado por getCode() en la pantalla de inicio de sesión de Auth0.
Ejemplo de pantalla de inicio de sesión que muestra un código de un solo uso
Después de seleccionar Continuar, se mostrará un mensaje indicando que tu aplicación se ha agregado como factor de autenticación para tu usuario.

Inicie sesión con su aplicación

Después de inscribir el factor, el usuario puede iniciar sesión con su aplicación. Primero, elija la aplicación Guardian como método de autenticación.
La pantalla de selección del método de autenticación
Para generar el código de un solo uso, llame a getCode(copedCode: String) con el código que copió de la pantalla de inicio de sesión de Auth0. Luego, introduzca el código de un solo uso en la pantalla de inicio de sesión para verificar su identidad.
La pantalla Verifique su identidad que solicita al usuario un código de un solo uso

Más información