Client final
Pendant de la constitution d'un panier de commande, il est possible de mettre en place un méccanisme d'identification du client passant la commande.
L'identifiant du client final peut être transmis à StockTicket (dans une entête http spécifique) à des fins de regroupement de données.
Lorsqu'une commande est créée, StockTicket rattache cette commande à un client final en fonction des informations fournies dans la commande.
Si aucun identifiant n'est explicitement fourni, un nouveau client "anonyme" est créé.
Si en revanche un identifiant est fourni, StockTicket l'utilise pour rattacher la commande à un client final existant (ou créé). Il
sera ensuite possible de retrouver toutes les commandes passées par ce client au fil du temps, et des fonctions de gestion
de commandes/d'historique peuvent être développées par les modules.
Connexion et identification du client
Les modules de vente offrent la possibilité d'adosser un module de connexion client au processus de vente.
Dans ce cas de figure, le module de vente confie au module de gestion de comptes clients sélectionné, la responsabilité du processus d'identification et de connexion du client.
Pour cela, le propriétaire de l'instance du module de vente doit effectuer les étapes de configuration suivantes :
-
sélectionner dans le magasin de modules, un module de gestion de comptes clients correspondant à ses besoins.
Il existe plusieurs types de modules de gestion de comptes clients, permettant soit d'utiliser un système d'identification interne à StockTicket, soit d'utiliser un système d'identification externe (compatible OpenId Connect avec flux de code d'autorisation).- un type de module interne à StockTicket : les utilisateurs sont stockés dans le répertoire interne de StockTicket. Le compte utilisateur StockTicket peut être partagé entre plusieurs modules de vente, et les utilisateurs peuvent se connecter à leur espace client avec leurs identifiants StockTicket dans plusieurs "boutiques". Ce module expose une instance Stockticket auxquels les modules de vente peuvent souscrire et se connecter pour gérer les comptes clients mais il n'est pas possible de créer une nouvelle instance de ce module.
- un type de module interne à StockTicket, mais avec un répertoire dédié : les utilisateurs sont stockés dans la plateforme StockTicket, mais dans un répertoire spécifique dédié et isolé. Ce module est instanciable et chaque instance créé un répertoire utilisateurs dédié. L'instance créée peut être utilisée par un ou plusieurs modules de vente.
- un module de gestion de comptes clients externe : les utilisateurs sont gérés dans un système d'identification externe, compatible avec le protocole OpenId Connect. La vérification de l'identité des clients est alors déléguée à ce système d'identification externe. L'utilisateur est concrétement redirigé vers le système d'identification externe pour s'identifier. Une fois identifié, il est redirigé vers l'application cliente avec un jeton d'identité.
- un module de gestion de comptes clients externe, en mode "proxy" : les utilisateurs sont gérés dans un système d'identification externe, compatible avec le protocole OpenId Connect, mais StockTicket sert d'intermédiaire dans tous les échanges. L'application client communique avec StockTicket, qui se charge de communiquer avec le système d'identification externe.
-
souscrire à une instance du module de gestion de comptes clients sélectionné, ou créer une nouvelle instance si nécessaire et que le module choisi le permet.
- une fois les étapes précédentes effectuées, le propriétaire de l'instance du module de vente peut configurer son instance du module de vente pour qu'elle utilise l'instance du module de gestion de comptes clients souscrit.
Celle-ci sera visible et sélectionnable dans la liste déroulante "Gestion des comptes clients" dans la page de configuration du module de vente.

Quelque soit le type de module de gestion de comptes clients utilisé, la configuration décrite ci-dessus permet à l'application cliente d'interroger la méthode d'API StockTicket
/AccountManagement/GetOpenIdServerInfos
pour obtenir les informations nécessaires à la connexion du client final.
Cette méthode d'API retourne les informations nécessaires pour mettre en place le processus d'authentification en implémentant un flux de code d'autorisation OpenId Connect.
Schéma du flux OpenId Connect (Code d’autorisation)
Principe général de fonctionnement du flux de code d'autorisation OpenId Connect :
sequenceDiagram
Navigateur Utilisateur -->> Application: Accès à une ressource protégée
Application ->> ServeurOpenId: Redirige vers /authorize (avec client_id, redirect_uri, scope, etc.)
Navigateur Utilisateur ->> ServeurOpenId: S’authentifie et consent
ServeurOpenId -->> Navigateur Utilisateur: Redirige vers Application (avec code d’autorisation)
Navigateur Utilisateur ->> Application: Transmet le code d’autorisation
Application ->> ServeurOpenId: Échange le code contre un jeton (POST /token)
ServeurOpenId -->> Application: Renvoie id_token, access_token (et refresh_token)
A la fin de la séquence d'identification, l'application cliente reçoit un jeton d'identité et un jeton d'accès, qui fournissent directement ou indirectement (appel d'un point d'accès UserInfo) un identifiant de l'utilisateur connecté.
Transmission de l'identifiant client final
L'identifiant du client final peut être transmis à StockTicket en ajoutant le paramètre Stk-Cust-Id dans les paramètres d'appel aux API StockTicket.
Le paramètre Stk-Cust-Id peut être placé dans le header de la requête HTTP, dans les paramètres d'url, les cookies ou dans le corps de la requête (POST form).
Unicité de l'identifiant client final
StockTicket ne fait aucune vérification sur la valeur transmise. Il est donc de la responsabilité de l'appelant de s'assurer que la valeur correspond bien à un client final.
Comme l'identifiant client final est utilisé pour regrouper les données, il est important de s'assurer que la valeur est unique pour chaque client final.
StockTicket reçoit un identifiant réputé unique de la part du module appelant mais doit garantir cette unicité sur l'ensemble de l'écosystème StockTicket.
C'est pourquoi l'identifiant unique d'un client final dans StockTicket est composé de la valeur transmise et de l'identifiant du fournisseur de l'identifiant.
UniqueCustomerId={Stk-Cust-Id}|{IdentityProviderId}
- Si un module de gestion de compte est rattaché à l'instance du module appelant, l'identifiant du fournisseur est l'id de l'instance du module de gestion de compte.
- Si aucun module de gestion de compte n'est rattaché à l'instance du module appelant, l'identifiant du fournisseur est l'id de l'instance du module appelant.