Dis-moi ton nom et je te dirai qui tu es

A une époque où la confidentialité des données personnelles est primordiale, toute application doit être en mesure d'apporter des garanties en terme d'anonymat et de sécurité.

Cela passe, tout d'abord, par un système d'accès efficace et sécurisé.

Identification / authentification

L'identification et l'authentification sont deux principes complémentaires permettant de connaître avec certitude l'identitté d'un utilisateur.

Lorsque celui-ci tente d'accéder à vos applications, il devra répondre à 2 questions:

- Qui êtes-vous ? (identification)

- Avez-vous une preuve que vous êtes cette personne ? (authentification)

Lors de la première phase, il lui sera demandé son identifiant. Dans la seconde phase, il devra prouver son identité à l'aide d'une information détenue par lui seul (mot de passe, reconnaissance biométrique, ...).

Actuellement, les systèmes se basent sur des principes dit "Multi-Facteurs". Cette méthode ajoute plusieurs niveaux d'authentification pour sécuriser d'avantage les accès.

La dernière étape est dite d'autorisation. elle permet de déterminer à quelles données à accès l'utilisateur.

Comment gérer des comptes utilisateurs ?

Pour gérer l'accès à vos applications, plusieurs moyens s'offre à vous.

Gérer les comptes utilisateurs directement dans vos applications

Vous pouvez choisir de gérer l'accès des utilsateurs directement dans vos applications.

Dans le cas d'une application de type "client local", les données des utilisateurs sont séparées les unes des autres et appartiennent à chaque utilisateur. Pour une application mobile, cela correspond à des fichiers ou une base de données locale sur le smartphone de l'utlisateur.

Dans le cas d'une architecture "clients - serveur", votre application recevra plusieurs requêtes utilisateurs simultanément et devra reconnaître les utilisateurs.

Vous devrez donc mettre en place un système d'identification/authentification propre à votre application. Celui-ci s'appuie généralement sur une base de données contenant les identifiants de vos utilisateurs ainsi qu'un moyen de validation de son identité (ex: utilisation d'un "jeton"  validant l'accès de l'utilisateur pour une durée précise)

Utiliser une API d'accès aux données

Afin de faciliter la gestion de l'accès aux données, vous pouvez également vous appuyer sur des API spécialisées qui vous permettront de vous concentrer sur les fonctionnalités de votre application.

Ces API sont diverses. Vous pouvez, par exemple, utiliser l'API "Directus" afin de gérer l'administration de votre site web ou serveur applicatif. L'intérêt de ce type de solution est de vous permettre de bénéficier d'une solution robuste et complète pour vos "Backoffice" sans avoir à la coder ou à l'acheter (Directus est un projet open-source et gratuit).

N'hésitez pas à consulter le cours Purple Giraffe pour en savoir plus sur Directus :

Directus : créer un webservice sans coder
Générez un service web, en seulement quelques clics

Pour les applications mobiles, il existe également des solutions Cloud telles que Firebase pour gérer les accès aux données et les notifications notamment. Attention, toutefois, avec ces solutions qui restent propriétaires et peuvent avoir également leur lot de contraintes.

Utiliser un annuaire d'utilisateurs

Enfin, vous pouvez également utiliser des annuaires d'utilisateurs tels que LDAP ou Azure Active Directory. Si vous créez des applications à destination des entreprises, vous serez certainement confrontés à ce type de scenario.

Ces annuaires facilitent l'intégration des applications avec des systèmes d'information existants et permettent d'éviter le doublement des comptes utilisateurs.

Ils respectent les normes web telles que SSO et OAUTH2 afin de vous permettre de les intégrer plus facilement dans vos applications.

Qu'est-ce que Sign In with Apple ?

Certaines plateformes publiques permettent aux utilisateurs d'utiliser leurs comptes pour s'identifier sur d'autres sites web. Parmi les plus connues on trouve Facebook, Google et, pour les développeurs, Github.

"Sign In with Apple" est un nouveau système qui s'inscrit dans cette logique. A partir d'un Apple ID, un utilisateur peut se connecter à une autre plateforme et , même, masquer son identifiant Apple.

Pourquoi implementer "Sign In with Apple" ?

L'objectif principal est toujours de simplifier et sécuriser la gestion des comptes utilisateurs dans vos applications.

Pour des développeurs iOS, cela a d'autant plus de sens car les utilisateurs d'iPhone / iPad possèdent un Apple ID. Depuis son ouverture, Apple impose également l'utilisation de "Sign In With Apple" si vous proposez un autre moyen d'identification (Facebook, Google, ...).

De plus, le système utilise l'authentification multi-facteurs et des contrôles biométriques en local (TouchID / FaceID) pour sécuriser l'accès.

L'utilisation d'emails privés générés à la volée (ou créer manuellement par l'utilisateur) est également un bon moyen de rassurer vos utilisateurs.

Enfin, rappelons que ce système est disponible sur les appareils iOS/iPadOS ainsi que sur les sites webs.

Comment fonctionne "Sign In with Apple" ?

L'architecture de "Sign In with Apple" fait intervenir un serveur privé de relai des emails piloté par Apple.

Votre application ou votre site web doit ensuite être configuré afin de bénéficier de ce nouveau moyen d'identification / authentification.

Vous devrez donc enregistrer au préalable votre application depuis votre compte développeur Apple et générer un identifiant, un certificat et une clé.

Les utilisateurs contacteront ensuite ce serveur de relai privé en cliquant sur "Sign In with Apple" depuis votre application.

La configuration d'un projet Xcode est également facilitée via l'ajout de cette fonctionnalité directement dans le logiciel.

Il est également possible d'activer ce service sur un site web en utilisant directement les API proposées par Apple.

Dans la pratique, cela signifie que vous pourrez ajouter ce moyen d'identification/authentification complémentaire sur vos applications web quelquesoit les technologies employées (JS, Flutter, Vapor, ...).

En Bref

Si vous créez des applications destinées à collecter des données personnelles (ou à offrir des services aux utilisateurs), vous devrez être vigilents sur la confidentialité et la maîtrise de ces données.

Il est donc important de ne pas négliger l'aspect identification / authentification de vos utilisateurs.

N'oubliez jamais que vous êtes le garant de la sécurité et de la confidentialité des données collectées. A ce sujet, n'hésitez pas à regarder plus en détail les règles RGPD pour vous y conformer.

Comme nous l'avons vu, il existe plusieurs options pour faciliter la gestion des accès utilisateurs dans vos développements.

La solution "Sign In with Apple" concerne essentiellement les utlisateurs d'appareils Apple mais peux vous permettre de rassurer les utilisateurs de vos applications iOS / iPadOS s'ils doivent s'inscrire à votre application (connexion via leur Apple ID, pas de création de nouveau compte, synchronisation entre les appareils, ...).

En tout état de cause, cette solution sera un complément à votre moyen de connexion habituel.

N'hésitez pas à essayer ces solutions afin  d'identifier celles qui s'intègrent le mieux à vos développements !

Happy coding !