PC & Mobile

Schémas d'authentification d'API – Bivás Biswas – Medium

Schémas d'authentification d'API - Bivás Biswas - Medium


Schémas d'authentification

Avant d’entrer dans les schémas, parlons du flux.

Dans une API REST, l'envoi des informations d'identification une seule fois et la connexion ne suffisent pas. REST est apatride comme nous en avons discuté dans cet article.

Sans état, l’API REST ne peut pas mémoriser vos informations d’identité. Vous devez donc lui dire qui vous êtes chaque fois que vous lui parlez!

1. Authentification de base

C'est le moyen le plus simple de sécuriser votre API. Demandez à l'utilisateur de taper un nom d'utilisateur et un mot de passe pour s'identifier.

Dans la spécification HTTP standard, il existe un Autorisation champ d'en-tête pouvant être utilisé pour transmettre le nom d'utilisateur et le mot de passe de votre ordinateur au serveur.

Comment un pirate informatique pourrait pirater votre mot de passe

Le nom d'utilisateur et le mot de passe sont codés avec le codage Base 64. Toute personne interceptant ces données en route vers le serveur verrait une longue ligne de charabia. Les encodages en base 64 peuvent être facilement décodés en moins d’une seconde.

L'intercepteur peut copier ce charabia et le coller dans un décodeur en ligne pour récupérer votre nom d'utilisateur et votre mot de passe. C'est ce qu'on appelle une attaque Man-In-The-Middle (MiTM). Ils pourraient être assis dans un café avec une configuration wifi avec le nom du café. Vous pouvez ne pas remarquer la différence et vous connecter à eux à la place. Maintenant, toutes vos données circulent dans leur ordinateur portable.

Sécuriser votre API à l'aide de l'authentification de base ne peut fonctionner que sur TLS / HTTPS, mais jamais sur HTTP.

Pour les applications mobiles et les applications à page unique, l’authentification de base n’est pas un bon choix car vous ne souhaitez pas stocker le nom d’utilisateur et le mot de passe sur l’appareil ou dans le code Javascript du SPA.

Pour mobile et SPA, vous pouvez utiliser une authentification basée sur un jeton.

2. Authentification basée sur les jetons

Dans ce schéma, l'utilisateur saisira son nom d'utilisateur et son mot de passe (informations d'identification), et le serveur générera un jeton basé sur ces informations d'identification.

Le serveur envoie ensuite ce jeton à l'utilisateur et en stocke une copie dans la base de données.

Maintenant, l'utilisateur a échangé les informations d'identification contre un jeton généré par le serveur. Désormais, l’utilisateur n’a pas besoin d’envoyer des informations de connexion à chaque demande. Au lieu de cela, ils envoient simplement le jeton codé.

Il existe des moyens d’encoder la date et l’heure dans ce jeton afin que les personnes l’interceptant ne puissent le réutiliser après un certain temps.

L'utilisateur doit transmettre ce jeton via l'en-tête, le corps ou comme paramètre de requête lorsqu'il appelle un noeud final pour accéder à des ressources.

Le format le plus populaire pour les jetons est Jason Web Tokens (JWT). Les champs du jeton sont une paire clé / valeur. Les clés sont appelées réclamations. Les revendications indiquent essentiellement à l'API ce que les valeurs sont supposées signifier. Vous pouvez trouver une liste de toutes les revendications standard dans la RFC 7519

Voici un exemple de jeu de revendications JWT. le aud Le champ est la revendication d'audience et contient l'identifiant du client. Si cela manque, ce jeton sera rejeté.

{   
"iss": "http://www.mysite.com",
"aud": "Client Secret",
"nommer le premier Dernier",
"email": "firstlast@mysite.com",
}

Les jetons JWT sont négociés sur la base du protocole OpenID Connect (OIDC).

Le jeton pouvant expirer après un certain temps, les utilisateurs devront se reconnecter. Les jetons peuvent également être révoqués côté serveur s'il y a eu une compromission.

3. Clé API et secret client

Le client qui a besoin d'accéder aux ressources doit s'enregistrer auprès de l'API. L'API génère une clé et un secret pour chaque client enregistré. Ceux-ci sont ensuite stockés avec le serveur et une copie de ceux-ci est envoyée au client. Le client devra les transmettre lorsqu'il essaiera de se connecter.

Par exemple, si vous avez besoin d'un développeur pour écrire une partie de votre application, vous pouvez générer cette clé et le secret et le leur donner. Le seul problème est que c'est plus difficile à faire évoluer. Si vous devez remettre les clés à de nombreux développeurs, vous devez les configurer manuellement.

L'automatisation de cette génération et de cet échange de clés est l'une des principales raisons pour lesquelles un cadre d'autorisation tel que OAuth a été développé.

La gestion des clés est un autre problème lié à la clé d’API et au secret du client. Vous devrez leur fournir un moyen de -

une. Générer la clé et le secret

b. Envoyez-le-leur - ceci peut être fait par courrier électronique ou affiché dans leur compte de développeur sur l'API

c. Sécuriser la clé et le secret

Il peut être compliqué de pouvoir stocker et gérer des clés. Il est généralement préférable de faire appel à un service tiers pour le faire à votre place. De nombreux outils de gestion des API sont disponibles chez IBM, Microsoft et d’autres fournisseurs tels que Akana, Apigee, etc. Voici une liste des 10 meilleurs outils de gestion d’API.

4. OAuth 2.0 (autorisation ouverte)

OAuth automatise la génération et l'échange de clés. Lorsqu'une application a besoin de votre permission pour accéder aux données en votre nom, elle vous demande de vous connecter au fournisseur d'API. Il vous donnera également une adresse de site Web et nous verrons pourquoi cela se fait dans une minute. OAuth flow peut sembler déroutant, mais il est assez simple.

Examinons un exemple concret. Si vous voulez que Joe ait accès à votre compte bancaire personnel pour pouvoir retirer des fonds, voici comment vous avez joué avec OAuth Joe dans la vie réelle.

  1. Vous allez à la banque, montrez votre identité - authentifiez-vous
  2. Dites-leur que vous souhaitez que Joe ait accès à votre compte - Autoriser Joe
  3. Indiquez à la banque l'adresse électronique de Joe afin que celle-ci lui envoie un jeton d'accès. Le fournisseur d'API appelle l'URI de redirection du site Web avec le jeton d'accès dans le corps de la réponse.
  4. Joe apporte le jeton d'accès à la banque avec son ID. Le client s'authentifie et présente le jeton d'accès.
  5. La banque accorde à Joe l’accès à votre compte - Le fournisseur d’API accorde au client l’accès à vos ressources

Résumé

Dans cet article, vous avez découvert quelques facteurs d'authentification différents, tels que l'authentification à un, deux facteurs et l'authentification à plusieurs facteurs.

Nous avons expliqué la différence entre authentification et autorisation. Vous savez donc maintenant que même si les termes sont utilisés de manière approximative, ils sont fondamentalement très différents.

Nous avons parlé des différents schémas d'authentification, tels que l'authentification de base, les jetons, les JWT, les clés d'API et OAuth2.0.

À ce stade, vous devriez avoir un bon aperçu des moyens de sécuriser votre API. L'authentification et l'autorisation sont un vaste sujet. Si vous souhaitez approfondir les sujets que nous avons abordés ici, voici quelques références -

RFC6749- Le cadre d'autorisation OAuth 2.0

RFC2617- Authentification HTTP: authentification d'accès de base et Digest

RFC7235- Protocole de transfert hypertexte (HTTP / 1.1): Authentification

RFC7519 - Jeton Web JSON (JWT)

Show More

SupportIvy

SupportIvy.com : Un lieu pour partager le savoir et mieux comprendre le monde. Meilleure plate-forme de support gratuit pour vous, Documentation &Tutoriels par les experts.

Related Articles

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Close
Close