Orchestration SDK - Integración del cambio de PIN

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:
- Android 4.1 o posterior.
- Un usuario registrado en el entorno sandbox de OneSpan Intelligent Adaptive Authentication. Aquí tienes una referencia completa sobre cómo hacerlo.
- La aplicación de ejemplo del SDK de orquestación de MSS.
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
se creará con el Contexto actual, que se pasará al OrchestrationCallback como argumento, referenciado con la palabra clave Orchestratio
nCallbackthis
. 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:
- Sales
codificadas
, 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 co
nstruido el
objetoOrchestrator
con éxito, se llamará al método estático configure de laclase 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étodoUIUtils.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 laclase 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:
- Orchestration SDK: Activación del autenticador en Android Studio
- Comprender los métodos de devolución de llamada con ejemplos