Vérification de la signature Spring Security + Web3.0

N17 utilise la technologie Spring Security pour résoudre les problèmes de sécurité de la plate-forme. Basé sur le framework Spring, Spring Security fournit une solution complète pour la sécurité des applications Web. D'une manière générale, la sécurité des applications Web comprend deux parties : l'authentification de l'utilisateur (Authentication) et l'autorisation de l'utilisateur (Authorization).

Lors de l'appel de données centralisées dans DAPP ou de l'utilisation de certaines fonctions centralisées, DAPP appelle le portefeuille MetaMask pour signer les données et les transmettre à l'arrière-plan, et l'arrière-plan vérifie si les données de signature sont les données signées par l'adresse actuelle du portefeuille de l'utilisateur pour réaliser l'authentification.

(a) Authentification de l'utilisateur : vérifier si un utilisateur est un sujet légitime dans le système, c'est-à-dire s'il peut accéder au système. L'authentification de l'utilisateur nécessite généralement que l'utilisateur fournisse un nom d'utilisateur et un mot de passe. Le système termine le processus d'authentification en vérifiant le nom d'utilisateur et le mot de passe. Ici, l'entrée frontale Dapp utilise les données de signature Web3.0, et le back-end utilise Web3.0 combiné à l'authentification de l'utilisateur pour vérifier les données deux fois.

(b) Autorisation de l'utilisateur : vérifiez qu'un utilisateur est autorisé à effectuer une opération. Dans un système, différents utilisateurs ont des autorisations différentes. Par exemple, pour un fichier, certains utilisateurs ne peuvent que le lire, tandis que d'autres peuvent le modifier. De manière générale, le système attribue différents rôles à différents utilisateurs, et chaque rôle correspond à une série d'autorisations.

Si le système comporte de nombreux modules, chaque module doit être autorisé et authentifié. Par conséquent, la plate-forme N17 choisit l'autorisation et l'authentification basées sur des jetons. L'utilisateur s'authentifie avec succès en fonction du nom d'utilisateur et du mot de passe, puis obtient une série de valeurs d'autorisation pour le rôle d'utilisateur actuel et utilise le nom d'utilisateur comme clé. La liste des autorisations est stockée dans le cache Redis sous forme de valeur, et le jeton est généré et renvoyé en fonction des informations relatives au nom d'utilisateur. Le navigateur enregistre le jeton dans le cookie, et chaque fois que l'interface api est appelée, le jeton est transporté dans l'en-tête de la demande d'en-tête par défaut. Spring Security analyse l'en-tête pour obtenir des informations sur le jeton, analyse le jeton pour obtenir le nom d'utilisateur actuel et obtient la liste des autorisations de redis en fonction du nom d'utilisateur. De cette façon, Spring Security peut déterminer si la demande actuelle est autorisée à accéder. Le schéma est commefollows:

Last updated