[Questions d'entretien au niveau du projet] Pouvez-vous parler en détail de l'authentification frontale ?

Si quelqu'un vous demande : "Vous développez depuis tant d'années, pouvez-vous parler en détail de l'authentification frontale ?". Comment devriez-vous répondre, avez-vous une idée complète dans votre esprit ?

Pouvez-vous gérer des concepts tels que Token, Cookie, Session, JWT, single sign-on , leurs fonctions, les scénarios d'application, comment utiliser et stocker, comment assurer la sécurité, etc. ?

Plateforme de gestion numérique
Vue3+Vite+VueRouter+Pinia+Axios+ElementPlus
blog personnel

Un autre exemple est l'authentification, l'autorisation, l'authentification, le contrôle d'autorité et la relation entre eux. Comprenez-vous vraiment à fond ?

insérez la description de l'image ici

1. Authentification, autorisation, authentification, contrôle d'autorité

1.1 Qu'est-ce que la certification ?

认证(Identification)Fait référence à la confirmation de l'identité du déclarant sur la base d'informations d'identification propres au déclarant.

Le vernaculaire signifie : 你需要用身份证证明你自己是你自己.

Par exemple, notre technologie d'authentification commune :

  • Carte d'identité
  • nom d'utilisateur et mot de passe
  • Téléphone mobile de l'utilisateur : message texte du téléphone mobile, numérisation du code QR du téléphone mobile, mot de passe gestuel
  • e-mail de l'utilisateur
  • Données biométriques de l'utilisateur : empreintes digitales, voix, iris des yeux
  • Identification big data des utilisateurs
  • etc.

1.2 Qu'est-ce qu'une autorisation ?

授权(Authorization): Dans le domaine de la sécurité de l'information, il fait référence à 资源所有者la délégation 执行者, qui accorde 执行者des droits d'opération sur les ressources dans une plage spécifiée, afin d'effectuer des opérations connexes sur les ressources.

Dans le domaine de la vie réelle, par exemple : carte bancaire (émise par la banque), carte de contrôle d'accès (émise par la régie immobilière), clé (émise par le propriétaire), ce sont la réalisation d'autorisation dans la vie réelle.

Dans le domaine de l'Internet, par exemple : le mécanisme de session du serveur Web, le mécanisme de cookie du navigateur Web, et l'émission de jetons d'autorisation (token), etc. sont tous des mécanismes d'autorisation.

1.3 Qu'est-ce que l'authentification ?

鉴权(Authentication)Dans le domaine de la sécurité de l'information, il désigne le processus d'identification et de confirmation de l'authenticité des droits identitaires déclarés par un déclarant .

Si vous partez de l'autorisation, il sera plus facile de comprendre l'authentification. L'autorisation et l'authentification sont deux relations de correspondance en amont et en aval, l'autorisation d'abord, puis l'authentification .

Dans le domaine de la vie réelle : la carte de contrôle d'accès doit passer par le système de reconnaissance de carte de contrôle d'accès et la carte bancaire doit passer par le système de reconnaissance de carte bancaire ;

Dans le domaine Internet : Vérifier la légitimité et la validité de session/cookie/token

鉴权C'est un lien entre le précédent et le suivant. L'amont accepte la sortie autorisée, vérifie son authenticité, puis obtient la permission (permission), qui sera prête pour la prochaine étape de contrôle des permissions.

1.4 Qu'est-ce que le contrôle des autorisations ?

权限控制(Access/Permission Control)Définissez les opérations exécutables en tant que liste d'autorisations, puis déterminez si l'opération est autorisée/interdite

Pour le contrôle des autorisations, il peut être divisé en deux parties pour la compréhension : l'une est l'autorisation et l'autre est le contrôle. La permission est un concept logique abstrait, tandis que le contrôle est une implémentation concrète.

Dans le domaine de la vie réelle : Prenons l'exemple de la mise en œuvre des autorisations des cartes de contrôle d'accès. Une carte de contrôle d'accès a le pouvoir d'ouvrir toutes les portes de l'entreprise ; une carte de contrôle d'accès a l'autorité du rôle d'administrateur, de sorte qu'elle peut ouvrir toutes les portes de l'entreprise.

Dans le domaine de l'Internet : via des services web backend, pour contrôler l'accès à l'interface, autoriser ou refuser les demandes d'accès.

1.5 Quelle est la relation entre authentification, autorisation, authentification et contrôle d'autorité ?

En voyant cela, nous devrions comprendre que 认证, 授权, 鉴权et 权限控制ces quatre liens sont un 前后依次发生et 上下游liés ;

insérez la description de l'image ici

Il convient de noter que ces quatre liens se produisent parfois simultanément. Par exemple dans les scénarios suivants :

  • Utilisez la carte de contrôle d'accès pour ouvrir la porte : les quatre liens d'authentification, d'autorisation, d'authentification et de contrôle d'autorité sont complétés en une seule fois et se produisent simultanément en un instant
  • Connexion au site Web de l'utilisateur : lorsqu'un utilisateur se connecte avec un nom d'utilisateur et un mot de passe, l'authentification et l'autorisation sont effectuées ensemble, tandis que l'authentification et le contrôle des autorisations se produisent dans les demandes d'accès ultérieures, comme lors de l'achat d'articles ou du paiement.

2. Schéma d'authentification frontal

2.1 Authentification de base HTTP

En HTTP, 基本认证方案(Basic Access Authentication)il s'agit de permettre au client (se référant généralement au navigateur Web) de vérifier l'identité de l'utilisateur en fournissant le nom d'utilisateur et le mot de passe lors de la demande.

  1. Organigramme d'authentification

insérez la description de l'image ici

  1. Analyse des étapes d'authentification

    • Client (tel qu'un navigateur) : demandez-en un au serveur 受限的列表数据或资源, par exemple, les champs sont les suivants

      GET /list/ HTTP/1.1 Host: www.baidu.com Authorization: Basic aHR0cHdhdGNoOmY=

    • Serveur : Bonjour client, cette ressource se trouve dans la zone de sécurité baidu.com, qui est une ressource restreinte et nécessite une authentification de base ;

      Et renvoyez un code d'état 401 (non autorisé n'est pas autorisé) au client et fournissez un domaine d'authentification www-Authenticate: Basic realm=”baidu.com”pour demander l'authentification ;

      Parmi eux Basicse trouve le mode de vérification, et realm="baidu.com"signifie que le client doit entrer le nom d'utilisateur et le mot de passe de ce domaine de sécurité, pas d'autres domaines

      HTTP/1.1 401 Unauthorizedwww-Authenticate: Basic realm= "baidu.com"

    • Client : serveur, je vous ai apporté le nom d'utilisateur et le mot de passe, veuillez y jeter un coup d'œil ; (Remarque : si le client est un navigateur, une fenêtre contextuelle s'affichera automatiquement à ce moment-là, permettant à l'utilisateur de saisir le nom d'utilisateur et mot de passe);

      Après avoir entré le nom d'utilisateur et le mot de passe, le client envoie le nom d'utilisateur et le mot de passe au serveur dans le cryptage Base64

      Le format de transmission est le suivant (le contenu de Basic est : nom d'utilisateur : forme ase64 du mot de passe ) :

      GET /list/ HTTP/1.1Authorization: Basic Ksid2FuZzp3YW5n==

    • Serveur : Bonjour client, j'ai vérifié Authorizationvotre nom d'utilisateur et votre mot de passe sur le terrain, et ils sont corrects. C'est la ressource que vous souhaitez.

      HTTP/1.1 200 OK ...

  2. avantage

    Simple, pratiquement tous les navigateurs populaires prennent en charge

  3. défaut

    • Pas sécurisé:

      Parce qu'il est basé sur la transmission HTTP, il est presque strié sur le réseau.Bien qu'il utilise Base64 pour l'encodage, cet encodage peut être facilement décodé.

      Même si le contenu d'authentification ne peut pas être décodé dans le nom d'utilisateur et le mot de passe d'origine, il n'est pas sûr. Des utilisateurs malveillants peuvent utiliser leur serveur de partage continu pour lancer des requêtes après avoir obtenu le contenu d'authentification. C'est ce que l'on appelle l'attaque par relecture.

    • Impossible de se déconnecter activement :

      Parce que le protocole HTTP ne fournit pas de mécanisme pour effacer les informations d'authentification de base dans le navigateur, sauf si l'onglet ou le navigateur est fermé, ou si l'utilisateur efface l'historique.

  4. scènes à utiliser

    Réseau interne ou réseau qui n'a pas d'exigences de sécurité élevées.

Presque tous les sites Web en ligne n'utiliseront pas ce système de certification, afin que tout le monde puisse comprendre ce système

2.2 Authentification par cookie de session

  • Session-CookieL'authentification est un mode d'authentification de communication front-end et back-end réalisé en utilisant la Session (session ) côté serveur et le cookie côté navigateur (côté client) .

  • Avant de comprendre cette phrase, comprenons brièvement 什么是 Cookieet 什么是 Session?

    1. que sont les cookies

      Comme nous le savons tous, HTTP 是无状态的协议(il n'y a pas de capacité de mémoire pour le traitement des transactions, et le serveur n'enregistrera aucune information de session à chaque fois que la session client et serveur est terminée) ;

      Par conséquent, pour que le serveur fasse la distinction entre différents clients, il doit activement maintenir un état, qui est utilisé pour informer le serveur si les deux requêtes avant et après proviennent du même navigateur. Et cet état peut être Cookieatteint en allant.

      Caractéristiques:

      • Les cookies sont stockés côté client et peuvent être altérés à volonté, ce qui n'est pas sûr

      • Il y a une limite de taille, jusqu'à 4kb

      • Le nombre de cookies est limité. En règle générale, un navigateur ne peut stocker que 20 cookies pour un site Web, et un navigateur n'autorise généralement que 300 cookies.

      • Android et IOS ne supportent pas bien les cookies

      • Les cookies ne sont pas inter-domaines, mais le nom de domaine de premier niveau et le nom de domaine de second niveau peuvent être partagés (selon le domaine)

    2. Qu'est-ce qu'une session

      1. Le concept abstrait de session est une session, qui est une abstraction de l'interaction entre l'utilisateur et le serveur afin de réaliser l'opération d'interruption/continuation pendant le processus de communication du protocole sans état ;

      2. Plus précisément, il s'agit d'une structure de session générée par le serveur, qui peut être enregistrée de différentes manières, telles que la mémoire, la base de données, les fichiers, etc. Les grands sites Web ont généralement des clusters de serveurs de session dédiés pour enregistrer les sessions des utilisateurs ;

      3. Processus principal :

        1. Client : l'utilisateur envoie une requête au serveur pour la première fois ;
        2. Serveur : recevez les données et créez automatiquement un ID de session/session spécifique pour l'utilisateur afin d'identifier l'utilisateur et de suivre le processus de session en cours de l'utilisateur ;
        3. Client : le navigateur reçoit la réponse pour obtenir des informations sur la session, et apportera la session / ID de session dans la prochaine requête ;
        4. Serveur : après l'extraction, le serveur le comparera à l'ID de session enregistré localement pour trouver la session de l'utilisateur spécifique, puis obtiendra l'état de la session ;
        5. Jusqu'à présent, la communication entre le client et le serveur est devenue une communication avec état ;
      4. Caractéristiques:

        • La session est enregistrée sur le serveur ;
        • Via le protocole de cryptage fourni avec le serveur ;
      5. Différences avec les cookies :

        • Sécurité : étant donné que les cookies sont stockés côté client, ils peuvent être altérés à volonté, tandis que les sessions sont stockées différemment côté serveur et ne peuvent pas être falsifiées, les sessions sont donc plus sécurisées ;
        • Les types de valeurs d'accès sont différents : Cookie ne prend en charge que les données de chaîne et Session peut stocker n'importe quel type de données ;
        • La période de validité est différente : le cookie peut être configuré pour être conservé pendant une longue période, et la session a généralement un délai d'expiration plus court ;
        • La taille de stockage est différente : les données enregistrées par le cookie ne peuvent pas dépasser 4K ;
      6. En voyant cela, certains étudiants y ont peut-être pensé, Session-Cookieest-ce juste Sessionstocké chez le client Cookie?

        Bingo , c'est vrai, passons à autre chose

    3. Organigramme d'authentification par cookie de session

insérez la description de l'image ici

  1. Analyse de l'étape d'authentification des cookies de session

    • Client : envoyez les informations de connexion nom d'utilisateur/mot de passe au serveur pour demander la vérification de la connexion ;

    • Serveur : vérifiez les informations de connexion, créez automatiquement une session une fois la vérification réussie (enregistrez la session en mémoire ou dans Redis), puis générez une chaîne d'identification unique identifiant de session (communément appelé ) pour cette session session_id, sidet Set-Cookiedéfinissez cet identifiant unique dans l'entête de la réponse ;

      Remarque : Vous pouvez utiliser la signature pour sidchiffrer et le serveur secretla déchiffrera en fonction de la clé correspondante (ce n'est pas une étape nécessaire)

    • Client : après avoir reçu la réponse du serveur, il analysera l'en-tête de réponse et l' sidenregistrera automatiquement dans le cookie local, et le navigateur joindra automatiquement les informations de cookie sous le nom de domaine à l'en-tête de la requête dans la prochaine requête HTTP ;

    • Serveur : lors de la réception d'une requête d'un client, il analysera le cookie dans l'en-tête de la requête , puis ira au client enregistré par le serveur siden fonction de cela , puis jugera si la requête est légale ;sidsid

  2. Avantages des cookies de session

    • Les cookies sont faciles à utiliser
    • Les données de session sont stockées côté serveur, ce qui est plus facile à gérer que JWT, c'est-à-dire que lorsqu'un utilisateur se connecte et se déconnecte activement, il vous suffit d'ajouter et de supprimer la session correspondante, ce qui est pratique pour la gestion.
    • Seule l'opération back-end est requise, et le front-end peut être utilisé sans aucun sens;
  3. Inconvénients des cookies de session

    • S'appuyer sur les cookies, une fois que l'utilisateur désactive les cookies du côté du navigateur, alors GG Smecta ;
    • Très peu sécurisés, les cookies exposent les données au navigateur, augmentant le risque de vol de données (facile à être attaqué par CSRF) ;
    • La session est stockée côté serveur, ce qui augmente la surcharge du côté serveur et réduit considérablement les performances du serveur lorsque le nombre d'utilisateurs est important ;
    • Pas convivial pour le support mobile ;
  4. scènes à utiliser

    • Généralement, les sites Web moyens et grands sont applicables (à l'exception du terminal mobile APP);
    • Étant donné que la session générale doit être stockée de manière centralisée sur le serveur de mémoire (tel que Redis), cela augmentera le budget du serveur, veuillez donc choisir avec soin si le budget n'est pas suffisant ;
  5. Bibliothèques de session recommandées couramment utilisées dans le front-end

    • Utiliser express : express-session [1]
    • Également utilisé : koa-session [2]

Je suppose que tu aimes

Origine blog.csdn.net/qq_39335404/article/details/131637205
conseillé
Classement