Maison  >  Article  >  développement back-end  >  Comment authentifier les connexions WebSocket avec le middleware HTTP ?

Comment authentifier les connexions WebSocket avec le middleware HTTP ?

DDD
DDDoriginal
2024-11-02 16:50:29728parcourir

How to Authenticate WebSocket Connections with HTTP Middleware?

Authentification dans WebSockets avec HTTP Middleware

Les connexions WebSocket nécessitent des mécanismes d'authentification distincts en raison de leur manque de gestion des autorisations intégrée. La mise en œuvre de l'authentification via un middleware HTTP peut résoudre ce problème de sécurité.

Réponse aux suggestions de la communauté

Suggestion 1 : Authentifier la prise de contact de mise à niveau

Cette suggestion nécessite de modifier le code pour envoyer la demande d'authentification initiale GET via HTTP, mais en veillant à ce que les demandes de mise à niveau ultérieures via le protocole WebSocket soient acceptées. Le code ci-dessous corrige le défaut de l'implémentation d'origine :

<code class="go">// server middleware
func wsHandler(rw http.ResponseWriter, req *http.Request) {
    if req.Header.Get("Upgrade") != "websocket" {
        return
    }
    if !websocket.IsWebSocketUpgrade(req) {
        return
    }
    conn, err := upgrader.Upgrade(rw, req, nil)
    if err != nil {
        http.Error(rw, "upgrade failed", http.StatusBadRequest)
        return
    }
    // rest of authentication logic
}</code>

Suggestion 2 : Vérifier les informations d'identification après la connexion

Cette suggestion nécessite de vérifier le nom d'utilisateur et le mot de passe envoyés par le client une fois la connexion WebSocket établie. La mise en œuvre implique :

  1. Ajout d'un filtre de lecteur au gestionnaire de mise à niveau : Intercepter les demandes de mise à niveau et ajouter le filtre de lecteur pour vérifier les informations d'identification.
  2. Création un filtre de lecture : Implémentez une fonction personnalisée pour lire le nom d'utilisateur et le mot de passe de la connexion WebSocket et vérifier leur validité.
  3. Mise à niveau de la connexion : Si les informations d'identification sont valides, mettez à niveau la connexion . Sinon, fermez-le.

Conclusion

L'authentification des connexions WebSocket via un middleware HTTP nécessite des modifications côté serveur et côté client. La mise en œuvre correcte de ces modifications garantit à la fois l'authentification et le respect du protocole.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn