Orchestration SDK : Activation de l'authentificateur sur Android Studio

Hakim Aldaoub, mars 17, 2021

Le SDK d'orchestration fait partie intégrante de OneSpan Mobile Security Suite (MSS). Il orchestre les commandes entre les différents composants pour garantir une activation réussie sur l'application mobile intégrée, en activant les fonctions de sécurité de la Mobile Security Suite sur l'application mobile de l'utilisateur final. Aujourd'hui, nous allons explorer le mécanisme d'activation d'une instance d'authentification à l'aide du SDK Orchestration sur un exemple d'application.

Conditions préalables :

Le processus d'activation

Création d'activités

Le processus d'activation commence par la création d'une instance de la classe ActivationActivity. L'exécution de l'activité conduira à ce que la méthode startRegistration soit attachée à la méthode de rappel onClick comme nous le voyons dans l'extrait de code ci-dessous. La méthode attendra ensuite d'être exécutée après le déclenchement de l'événement de clic sur le bouton d'enregistrement sur l'interface utilisateur

// Enregistrer le bouton registerBtn = (Button) findViewById(R.id.btn_register) ; registerBtn.setOnClickListener(new View.OnClickListener() { @Overridepublic void onClick(View view) { // Assurez-vous de cacher le clavier InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE) ; imm.hideSoftInputFromWindow(view.getWindowToken(), 0) ; startRegistration() ; }) ;) 

Constructeur Orchestrator et Client Device Data Collector (CDDC)

L'objet orchestrationCallback sera créé avec l'instance actuelle de l'ActivationActivity. L'instance sera transmise à l'orchestrationCallback en tant qu'argument référencé avec le mot-clé this. Ensuite, un objet de la classe Builder interne de la classe Orchestrator sera créé. Le but de l'objet Builder est de créer un objet Orchestrator en suivant le concept du modèle de conception Builder, comme indiqué ci-dessous.

private Orchestrator orchestrator ; 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.getCDDCDataFeeder()) ; }

Avant d'invoquer la méthode de construction pour compléter la création de l'objet Orchestrator, les arguments suivants doivent être définis comme indiqué dans le code ci-dessus :

  • Les sels codés en dur, qui seront utilisés pour la diversification avec certaines fonctions de sécurité (par exemple, la liaison des dispositifs, le stockage sécurisé). Ces sels seront dérivés par le client Orchestration SDK pour compliquer les attaques par rétro-ingénierie.
  • Domaine par défaut : requis si le Customer Application Server intègre OneSpan Authentication Server. Si l'application mobile client doit gérer plusieurs domaines, le domaine par défaut peut être écrasé dynamiquement pour chaque action (par exemple, startActivation).
  • Un objet CDDCParams, qui définira les paramètres de la collecte des données du dispositif. Ces paramètres sont facultatifs.
  • Un objet OrchestrationErrorCallback, en cas d'erreurs, il sera utilisé pour les lancer du client SDK Orchestration vers l'application mobile du client.
  • Un objet OrchestrationWarningCallback, en cas d'avertissements, il sera utilisé pour les lancer depuis le client SDK Orchestration vers l'application mobile du client.

Une fois l'objet Orchestrator construit avec succès, la méthode statique configure de la classe CDDCUtils sera appelée pour définir les valeurs des données CDDC provenant de l'orchestrator.getCDDCDataFeeder().

Paramètres d'activation

Les paramètres d'activation seront configurés dans la méthode startRegistration lorsqu'elle sera appelée. Tout d'abord, l'instance actuelle de l'ActivationActivity sera définie pour les activationParams comme un ActivationCallback, puisqu'elle l'implémente déjà.

De plus, l'OrchestrationUser et l'ActivationPassword sont fournis comme paramètres d'activation. Ils seront obtenus à partir des vues de l'interface utilisateur après que l'utilisateur final ait été invité à les fournir lors de la première exécution.

Enfin, l'objet Orchestrator définira le UserAuthenticationCallback en passant tous les arguments nécessaires, y compris l'orchestrationCallback. Ensuite, il invoque la méthode startActivation, en passant les paramètres d'activation qui ont été configurés précédemment comme indiqué ci-dessous.


private void startRegistration() { // Get input strings userId = userIdView.getText().toString() ; String activationPassword = activationPasswordView.getText().toString() ; // Create activation configuration OnlineActivationParams activationParams = new OnlineActivationParams() ; activationParams.setActivationCallback(this) ; activationParams.setOrchestrationUser(new OrchestrationUser(userId)) ; activationParams.setActivationPassword(activationPassword) ; // Used for custom password instead of default one orchestrator.setUserAuthenticationCallback(orchestrationCallback, new UserAuthenticationCallback.UserAuthentication[] {UserAuthenticationCallback.UserAuthentication.PASSWORD}) ; // Show progress dialog & start activation progressDialog = UIUtils.displayProgress(this, getString(R.string.dialog_progress_activating)) ; orchestrationCallback.setProgressDialog(progressDialog) ; orchestrator.startActivation(activationParams) ; }

Puisque l'ActivationActivity implémente l'interface OnlineActivationCallbackinterface, elle doit remplacer toutes les méthodes de rappel déclarées en son sein. L'interface OnlineActivationCallback est utilisée par le client Orchestration SDK pour interagir avec l'application mobile du client pendant le processus d'activation. Comme le montre l'exemple de code ci-dessous, les méthodes suivantes ont été mises en œuvre pour une activation et une interaction réussies avec l'application mobile intégrée en tenant compte de tous les scénarios :

  • onActivationStepComplete: la méthode sera appelée à chaque étape d'activation réussie. Le commandSender enverra chaque fois la commande produite au serveur.
  • onActivationSuccess: La méthode sera appelée en cas de succès du processus d'activation.
  • onActivationInputError: La méthode sera appelée en cas d'erreur du processus d'activation due à une saisie incorrecte de l'utilisateur. Les erreurs possibles sont répertoriées dans la classe OrchestrationErrorCodes.
  • onActivationAborted: La méthode sera appelée lors de l'annulation du processus d'activation.

Vous trouverez ci-dessous les définitions des méthodes telles qu'elles apparaissent dans l'exemple d'application.

@Override
@[email protected] void onActivationStepComplete(String command) { // Initialize custom async task for sending an orchestration command to the server CommandSender commandSender = new CommandSender(getApplicationContext(), new CommandSenderCallback() { @Overridepublic void onCommandSendingFailure() { // Hide progress dialog and display error message UIUtils.hideProgress(progressDialog) ; UIUtils.displayAlert(ActivationActivity.this, getString(R.string.dialog_error_title), getString(R.string.dialog_error_content_sending)) ; } @Overridepublic void onCommandSendingSuccess(String serverCommand) { // Handle server command orchestrator.execute(serverCommand) ; } }) ; // Send command to server commandSender.execute(command) ; }@Overridepublic void onActivationSuccess() { // Hide progress UIUtils.hideProgress(progre

Dans le bloc de code ci-dessus, si le processus d'activation ne rencontre aucune erreur, la méthode onActivationStepComplete sera appelée plusieurs fois, communiquant les commandes requises au serveur. Ensuite, il transmet le contrôle à onActivationSuccess qui, à son tour, termine le processus d'activation et amène l'utilisateur final à la page de bienvenue de l'application mobile. Entre-temps, si une erreur s'est produite, le onActivationInputError s'en chargera. Toutefois, si l'activation a été interrompue pour une raison quelconque, la fonction onActivationAborted prendra le relais et annulera le processus d'activation de manière appropriée.

Dans ce blog, nous avons mis en évidence le processus d'activation d'un authentificateur par l'intégration du SDK Orchestration. Si vous avez des questions concernant ce blog, n'hésitez pas à nous contacter sur les forums du portail communautaire OneSpan.

OneSpan Sign Developer Community

OneSpan Sign Developer Community

Rejoignez la communauté OneSpan Sign Developer! Forums, blogs, documentation, téléchargements SDK, et plus encore.

Joignez-vous aujourd'hui