Orchestration SDK - Integración del cambio de PIN

OneSpan Team,

Al integrar el SDK de orquestación en su aplicación móvil, usted se inscribe en las numerosas funciones que mejoran la seguridad de su aplicación. Permitir al usuario final cambiar su PIN de forma segura en su aplicación móvil es una de estas características. En el blog de hoy, exploraremos la actividad Change PIN con un código de ejemplo potenciado por el SDK de Orquestación de OneSpan y los diferentes flujos posibles al implementar el ChangePINCallback.

Requisitos previos:

Nota: en la aplicación de ejemplo, el PIN podría denominarse Contraseña. A lo largo de este tutorial, nuestro código de ejemplo sólo utilizará la terminología PIN.

Nota: todos los comandos se intercambian e interpretan explícitamente entre la plataforma TID y el servidor de aplicaciones cliente a través del endpoint orchestration-commands/.

Modificación del proceso del PIN

El usuario final activa el proceso para cambiar el antiguo PIN en su dispositivo de confianza desde su aplicación móvil, que integra el SDK de orquestación. La aplicación móvil deberá implementar el ChangePINCallback y anular sus métodos, como veremos más adelante.

Creador de Orchestrator y recopilador de datos de dispositivos de clientes (CDDC)

El objeto OrchestrationCallback se creará con el Contexto actual, que se pasará al OrchestrationCallback como argumento, referenciado con la palabra clave this. Después, se creará un objeto de la clase Builder interna de la clase Orchestrator. El propósito del objeto Builder es crear un objeto Orchestrator siguiendo el concepto del patrón de diseño Builder, como se ve a continuación.

// Orchestration private Orchestrator orchestrator; private String userIdentifier;@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_change_PIN); Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar); // Get orchestrator instance orchestrationCallback = new SampleOrchestrationCallback(this); Orchestrator.Builder builder = new Orchestrator.Builder(); orchestrator = builder .setDigipassSalt(Constants.SALT_DIGIPASS) .setStorageSalt(Constants.SALT_STORAGE) .setContext(getApplicationContext()) .setDefaultDomain(Constants.DOMAIN) .setCDDCParams(CDDCUtils.getCDDCParams()) .setErrorCallback(orchestrationCallback) .setWarningCallback(orchestrationCallback) .build(); // Set values for the CDDC when available CDDCUtils.configure(orchestrator.getCDDCD 

Antes de invocar el método de construcción para completar la creación del objeto Orchestrator, los siguientes argumentos deben ser definidos como se muestra en el código anterior:

  • Salescodificadas, que se utilizarán para la diversificación con determinadas características de seguridad (por ejemplo, vinculación de dispositivos, almacenamiento seguro). Estas sales serán derivadas por el Orchestration SDK Client para complicar los ataques de ingeniería inversa.
  • Dominio por defecto, necesario si el Servidor de Aplicaciones del Cliente integra el Servidor de Autenticación de OneSpan. Si la aplicación móvil del cliente debe gestionar varios dominios, el dominio por defecto puede sobrescribirse dinámicamente para cada acción (por ejemplo, startActivation.
  • Un objeto CDDCParams, que definirá los parámetros para la recogida de datos del dispositivo. Estos parámetros son opcionales.
  • Un objeto OrchestrationErrorCallback, en caso de errores, se utilizará para lanzarlos desde el Cliente SDK de Orchestration a la Aplicación Móvil del Cliente.
  • Un objeto OrchestrationWarningCallback, en caso de advertencias, será utilizado para lanzarlas desde el Cliente SDK de Orchestration a la Aplicación Móvil del Cliente.
  • Una vez construido el objeto Orchestratorcon éxito, se llamará al método estático configure de la clase CDDCUtilsclass para configurar los valores de los datos CDDC del orchestrator.getCDDataFeeder()

Modificación de los parámetros del PIN

En el proceso de cambio de PIN, los parámetros se establecerán en el método onStartChangePIN(). Este método toma un objeto View como argumento para mostrar un mensaje al usuario final indicándole que su solicitud está en curso. Después, el objeto orquestador establecerá el método de autenticación requerido para cambiar el PIN, y el teclado se utilizará para capturar el PIN. Este teclado puede ser el predeterminado proporcionado en el SDK de Orcherstration o un teclado personalizado desarrollado por el cliente.

En el siguiente paso, se inicializará el objeto ChangePINParams. El OrchestrationUser y la ChangePINActivity actual se proporcionarán como parámetros junto con el índice de la aplicación criptográfica, que se utiliza para firmar la solicitud de autenticación. Después, el Orquestador llamará al método startChangePIN() pasando todos los parámetros necesarios para cambiar el PIN.


public void onStartChangePIN(View view) { // Display progress dialog and start PIN changing progressDialog = UIUtils.displayProgress(this, getString(R.string.dialog_progress_change_pwd)); orchestrationCallback.setProgressDialog(progressDialog); // Used for custom PIN instead of default one orchestrator.setUserAuthenticationCallback(orchestrationCallback, new UserAuthenticationCallback.UserAuthentication[]{UserAuthenticationCallback.UserAuthentication.PIN}); // Initializing params ChangePINParams PINParams = new ChangePINParams(); PINParams.setOrchestrationUser(new OrchestrationUser(userIdentifier)); PINParams.setChangePINCallback(ChangePINActivity.this); PINParams.setCryptoAppIndex(CryptoAppIndex.SECOND); orchestrator.startChangePIN(PINParams); }

Para estar preparado para todos los escenarios posibles, el SDK de orquestación requiere que la aplicación cliente anule todos los métodos ChangePINCallback. Comienza con el onChangePINStepComplete que tiene el objeto CommandSender para comunicarse con la plataforma TID, y recibe como parámetro un comando de orquestación que será enviado posteriormente al servidor.

En el objeto CommandSender, hay dos métodos de devolución de llamada que deben definirse en este paso. El onCommandSendingSuccess() que se ejecutará para ejecutar el próximo comando del servidor en el teléfono en caso de una recepción exitosa. Además, existe la función onCommandSendingFailure() que se ejecutará en caso de cualquier fallo. A continuación se muestra el código de ejemplo del método onChangePINStepComplete.


@Override

public void onChangePINStepComplete(String command) { CommandSender commandSender = new CommandSender(getApplicationContext(), new CommandSenderCallback() { @Overridepublic void onCommandSendingSuccess(String serverCommand) { orchestrator.execute(serverCommand); } @Overridepublic void onCommandSendingFailure() { // Ocultar el diálogo de progreso y mostrar el mensaje de error UIUtils.hideProgress(progressDialog); UIUtils.displayAlert(ChangePINActivity.this, getString(R.string.dialog_error_title), getString(R.string.dialog_error_content_sending)); }); commandSender.execute(command); }

El resto de los métodos del ChangePINCallback están abajo con su descripción:

  • onChangePINSuccess: será llamado después de un restablecimiento exitoso del PIN y mostrará al usuario final el mensaje proporcionado al método UIUtils.displayAlert().
  • onChangePINAborted: será llamado si el cambio de PIN ha sido abortado y transmitirá el mensaje al usuario final.
  • onChangePINInputError: se llamará si se produce un error durante el proceso de cambio de PIN debido a una entrada incorrecta del usuario. Los posibles errores se enumeran en la clase OrchestrationErrorCodes.

@Override

public void onChangePINSuccess() { UIUtils.hideProgress(progressDialog); UIUtils.displayAlert(this, getString(R.string.dialog_title_change_PIN), getString(R.string.dialog_content_change_PIN_success)); }@Overridepublic void onChangePINAborted() { UIUtils.hideProgress(progressDialog); UIUtils.displayAlert(this, getString(R.string.dialog_title_change_PIN), getString(R.string.dialog_content_change_PIN_abortion)); }@Overridepublic void onChangePINInputError(PINError error) { UIUtils.hideProgress(progressDialog); UIUtils.displayAlert(this, getString(R.string.dialog_error_title), ErrorUtils.getErrorMessage(this, error.getErrorCode())); }

Con esto concluye el tutorial sobre cómo utilizar el SKD de Orquestación para integrar la función de cambio de PIN en su aplicación móvil. Si tiene alguna pregunta, póngase en contacto con nosotros en los foros de OneSpan.

Artículos relacionados con el SDK de Orherstration:

 

Comunidad de desarrolladores de OneSpan Sign

Comunidad de desarrolladores de OneSpan Sign

¡Únase a la comunidad de desarrolladores de OneSpan Sign! Foros, blogs, documentación, descargas de SDK y más.

Únete hoy

The OneSpan Team is dedicated to delivering the best content to help you secure tomorrow's potential. From blogs to white papers, ebooks, webinars, and more, our content will help you make informed decisions related to cybersecurity and digital agreements.

Popup default