Petit disclaimer: si tu n'es pas Ă  l'aise avec les concepts de requĂȘtes HTTP je te conseille de commencer par lire la mini-sĂ©rie "Comment fonctionne une web-app". Bonne lecture ! đŸ€©

L'Authentification est la premiĂšre pierre fondatrice de toute web-application.
En anglais, on utilise le terme "authentication", souvent abrégée en Auth, et plus précisément AuthN.

L'objectif de l'authentification, c'est dĂ©finir QUI fait la requĂȘte et vĂ©rifier si la personne qui fait la requĂȘte est bien celle qui prĂ©tend l'ĂȘtre.

Pour comprendre à quoi ça sert, on va prendre l'exemple d'une API sans authentification :

🔓 Une API sans authentification



Lorsque vous utilisez twitter, votre ordinateur va envoyer une requĂȘte au serveur pour crĂ©er un nouveau tweet, qui sera publiĂ© au nom de quelqu'un.

Sans authentification, on peut imaginer que vous pouvez envoyer  :

POST twitter.com/new-tweet

{
text: "J'écris donc je suis."
    author: "@elon-musk"
}



Dans cet exemple, vous avez créé un nouveau tweet qui sera publié au nom d'Elon Musk.

Sauf que vous n'ĂȘtes peut-ĂȘtre pas Elon Musk...

On se confronte ici Ă  un principe fondamental en backend : il ne faut jamais faire confiance aux requĂȘtes.

La preuve ici, n'importe qui peut créer un nouveau tweet au nom d'Elon Musk.

Il suffit de "dire qu'on est Elon Musk"...

Et l'authentification est le systÚme qui va nous permettre de résoudre ce problÚme !

🛃 L'authentification, c'est comme ton passeport à la douane



Quand vous entrez dans un pays, vous ĂȘtes en possession d'un passeport unique et infalsifiable qui permet aux autoritĂ©s de savoir qui vous ĂȘtes, et d'authentifier que vous ĂȘtes vraiment qui vous prĂ©tendez ĂȘtre.
À chaque fois que vous passez une frontiĂšre, la douane peut donc vĂ©rifier votre identitĂ©.

L'authentification, c'est exactement pareil !

Vous allez envoyer dans chaque requĂȘte une preuve de votre identitĂ©, en quelque sorte un passeport digital, pour que le serveur puisse vĂ©rifier votre identitĂ©.

Comment ça marche

Pour pouvoir vous authentifier sur une web-app vous allez devoir créer un compte.
Ce compte sera associé à un identifiant unique, par exemple @elon-musk.

Tous les tweets créés par ce compte seront publiés sous le nom de Elon Musk.
Cela permet de vous identifier de maniĂšre unique.

Mais ce n'est pas tout ! 😁

Il faut que le backend puisse certifier que vous ĂȘtes bien le propriĂ©taire du compte.
Pour cela, il faut que vous soyez la seule personne capable d'accéder à ce compte.

Lorsque vous avez créé votre compte, vous avez rempli des "credentials", ce sont des informations que vous ĂȘtes seul·e Ă  connaitre: la combinaison email et mot de passe.



Quand vous allez vous connecter sur twitter, vous envoyez au serveur votre email/mot de passe et le serveur va donc vĂ©rifier que le mot de passe que vous envoyez est bien le mĂȘme que celui qui est enregistrĂ©.

if (formulaire.password === database.password) => OK
// OUI ce code est TRES simplifiĂ© đŸ€—



Si ce n'est pas le mĂȘme, c'est que vous n'ĂȘtes pas le propriĂ©taire du compte @elon-musk.

🔐 L'authentification basique

On peut donc considĂ©rer que possĂ©der Ă  la fois le mail et le mot de passe d'un compte est la preuve que vous en ĂȘtes le propriĂ©taire.

Il existe donc un systĂšme d'authentification trĂšs simple qui consiste Ă  chaque requĂȘte au serveur Ă  envoyer ces preuves d'identitĂ© en plus de votre requĂȘte.

Les informations d'authentification sont alors transmises dans une partie dĂ©diĂ©e de la requĂȘte. Cette partie on appelle ça "l'en-tĂȘte", en anglais: headers.

Votre requĂȘte sera donc :

POST twitter.com/new-tweet

Authorization: "mail=elon@twitter.com, password=12345"

{
	text: "J'écris donc je suis.
		"author: "@elon-musk"
}



Si vous n'avez pas les bons credentials -> vous n'ĂȘtes pas propriĂ©taire du compte -> vous ne pouvez pas poster de tweet en son nom
=> le serveur vous renvoie une réponse d'erreur 401 - Unauthorized.



Cette maniĂšre de s'authentifier s'appelle la "basic auth".
Elle a longtemps été utilisée et permet de facilement comprendre le concept d'authentication.

Et maintenant qu'on sait QUI fait la requĂȘte, on va pouvoir vĂ©rifier si cette personne a le droit de faire cette requĂȘte !

On verra donc ensuite le concept d'authorization qui fait ce travail ! ( oui je tease à mort et alors ?? 😂 )

💡
Aujourd'hui la basic auth n'est plus considérée comme assez sécurisée, donc ce n'est plus exactement cette méthode qui est utilisée, mais cela s'en rapproche et ça permet de comprendre le systÚme de base sans entrer dans des détails beauuucoup plus techniques de cryptographie. ( mais promis j'y viendrai ! ). MAJ, l'article sur l'authentification par tokens est sorti!

Continuer Ă  lire:

C’est quoi les tokens d’authentification ?
Si tu n’es pas Ă  l’aise avec le concept d’authentification, j’ai concoctĂ© il y a quelques mois un article qui explique comment ça fonctionne de maniĂšre simple et claire ! 🔓 C’est quoi l’authentification ?Petit disclaimer: si tu n’es pas Ă  l’aise avec les concepts de requĂȘtes HTTP
C’est quoi l’authorization ?
Petit disclaimer : cet article est la suite du premier Ă©pisode => c’est quoi l’authentication. Si vous n’ĂȘtes pas Ă  l’aise avec le concept d’authentication je vous conseille donc de le lire en premier ! 😘 La diffĂ©rence entre l’authentication et l’authorization L’authentication est le process


Pour ne rien rater tu peux t'inscrire pour recevoir chaque article directement par mail ! Tu peux aussi t'abonner sur Linkedin 😎

License

Toute cette mini-sĂ©rie est open-source. ( ouaip il y a pas que le code qui peut ĂȘtre open-source et on y reviendra ! )

La license choisie signifie que tu peux faire ce que tu veux avec son contenu tant que tu me crĂ©dites 😎. royal au bar j'ai dit !

Tech me about it: comment fonctionne une application web ? © 2022 by TancrÚde Simonin is licensed under Attribution 4.0 International