Orchestration SDK - Intégration du changement de PIN
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 :
- Android 4.1 ou plus récent.
- Un utilisateur enregistré sur l'environnement sandbox de OneSpan Intelligent Adaptive Authentication. Voici une référence complète sur la façon de le faire.
- L'application d'exemple du MSS Orchestration SDK.
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 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, 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 laclasse 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éthodeUIUtils.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 laclasse 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 :
- Orchestration SDK : Activation de l'authentificateur sur Android Studio
- Comprendre les méthodes de rappel avec des exemples