Orchestration SDK - Intégration du changement de PIN

Hakim Aldaoub, mars 30, 2021

En intégrant le SDK Orchestration à votre application mobile, vous vous inscrivez aux nombreuses fonctionnalités qui renforcent la sécurité de votre application. Permettre à votre utilisateur final de modifier son code PIN en toute sécurité sur son application mobile est l'une de ces fonctionnalités. Dans le blog d'aujourd'hui, nous allons explorer l'activité de changement de PIN avec un exemple de code renforcé par le SDK d'orchestration de OneSpan et les différents flux possibles lors de la mise en œuvre du ChangePINCallback.

Conditions préalables :

Remarque : le code PIN pourrait être désigné par le mot de passe dans l'exemple d'application. Dans ce tutoriel, notre exemple de code n'utilisera que la terminologie PIN.

Remarque : toutes les commandes sont échangées et interprétées explicitement entre la plateforme TID et le serveur d'application client par le biais du point de terminaison orchestration-commands/.

Modification du processus d'attribution du NIP

L'utilisateur final déclenche le processus de modification de l'ancien code PIN sur son appareil de confiance à partir de son application mobile, qui intègre le SDK d'Orchestration. L'application mobile devra mettre en œuvre le ChangePINCallback et remplacer ses méthodes, comme nous le verrons en détail ci-dessous.

Constructeur Orchestrator et Client Device Data Collector (CDDC)

L'objet OrchestrationCallback sera créé avec le Contexte actuel, qui sera transmis à 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.

// 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 

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 selscodé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, sera utilisé pour les transmettre du client SDK Orchestration à l'application mobile du client.
  • Un objet OrchestrationWarningCallback, en cas d'avertissements, sera utilisé pour les transmettre du client SDK Orchestration à 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'orchestrateur.getCDDCDataFeeder()

Modification des paramètres du PIN

Lors du processus de modification du PIN, les paramètres seront définis dans la méthode onStartChangePIN(). Cette méthode prend un objet View comme argument pour afficher un message à l'utilisateur final lui indiquant que sa demande est en cours. Ensuite, l'objet orchestrateur définira la méthode d'authentification requise pour changer le code PIN, et le clavier sera utilisé pour saisir le code PIN. Ce clavier peut être le clavier par défaut fourni dans le SDK Orcherstration ou un clavier personnalisé développé par le client.

Dans l'étape suivante, l'objet ChangePINParams sera initialisé. L'OrchestrationUser et le ChangePINActivity actuel seront fournis en tant que paramètres ainsi que l'index de l'application cryptographique, qui est utilisée pour signer la demande d'authentification. Ensuite, l'Orchestrateur appellera la méthode startChangePIN() en passant tous les paramètres nécessaires pour changer le 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) ; }

Pour être prêt à faire face à tous les scénarios possibles, le SDK d'orchestration exige que l'application cliente modifie toutes les méthodes ChangePINCallback. Il commence par le onChangePINStepComplete qui possède l'objet CommandSender pour communiquer avec la plateforme TID, et il reçoit une commande d'orchestration comme paramètre qui sera envoyé plus tard au serveur.

Dans l'objet CommandSender, il y a deux méthodes de rappel à définir dans cette étape. La fonction onCommandSendingSuccess() qui sera exécutée pour exécuter la prochaine commande du serveur sur le téléphone en cas de réception réussie. En outre, il existe la fonction onCommandSendingFailure() qui sera exécutée en cas d'échec. Vous trouverez ci-dessous un exemple de code pour la méthode 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() { // Masquer la boîte de dialogue de progression et afficher le message d'erreur UIUtils.hideProgress(progressDialog) ; UIUtils.displayAlert(ChangePINActivity.this, getString(R.string.dialog_error_title), getString(R.string.dialog_error_content_sending)) ; } }) ; commandSender.execute(command) ; }

Les autres méthodes de la fonction ChangePINCallback sont présentées ci-dessous avec leur description :

  • onChangePINSuccess: il sera appelé après une réinitialisation réussie du PIN et affichera à l'utilisateur final le message fourni à la méthode UIUtils.displayAlert().
  • onChangePINAborted: il sera appelé si le changement de PIN a été interrompu et transmettra le message à l'utilisateur final.
  • onChangePINInputError: il sera appelé si une erreur se produit pendant le processus de modification du code PIN en raison d'une saisie incorrecte de l'utilisateur. Les erreurs possibles sont énumérées dans la classe 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())) ; }

Ceci conclut le tutoriel sur la manière d'utiliser le SKD Orchestration pour intégrer la fonction de changement de PIN à votre application mobile. Si vous avez des questions, n'hésitez pas à nous contacter sur les forums OneSpan.

Articles relatifs à Orherstration SDK :

 

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