Python套接字服务器使用令牌进行客户端身份验证

Python socket server do client authentication by using token(Python套接字服务器使用令牌进行客户端身份验证)
本文介绍了Python套接字服务器使用令牌进行客户端身份验证的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

基本上我想解决两个问题:

  1. 客户端在初始化与服务器的连接时发送查询字符串

  2. 服务器端在握手中验证用户令牌(不是在建立连接之后,然后验证包含令牌的流消息),并相应地设置用户会话。

我读了一篇文章(https://auth0.com/blog/2014/01/15/auth-with-socket-io/),其中谈到了在NodeJS中实现的这个过程,我只是想知道使用Python是否可以实现相同的功能。(目前我正在做一些关于扭曲的研究,但没有发现任何类似的东西)

PS:我想演示用例也很有帮助。用户可以通过正常的http登录到您的服务器,然后服务器将向他/她颁发有效的访问令牌。然后,该用户可能需要与服务器(或其他服务器)建立套接字连接,然后服务器需要在建立套接字连接之前查明用户是谁并进行验证。

推荐答案

查询字符串是HTTPURL的一部分。

如果您构建的是一个TCP套接字服务器而不是HTTP服务器,则不会获得URL、头或任何其他带外内容。*您得到的只是一个数据流。您需要为您的数据制定一个可以容纳令牌的协议。

这意味着服务器无法"在建立套接字连接之前弄清用户是谁并进行验证"。它必须建立套接字连接、读取第一条消息、对其进行解析、验证令牌,然后丢弃或继续连接。(当然,您可以建立一个前端服务器,该服务器接受连接、验证它们,然后将它们迁移或代理到真正的后端服务器。但必须有人接受、阅读和分析。)

请注意,这正是HTTP所做的-在接受连接并读取第一行数据之前,它看不到查询字符串。

同时,您看到的示例似乎使用的是WebSockets。WebSockets客户端一开始就不能与套接字服务器通信(除非您在套接字服务器上构建WebSockets服务器,或者在其前面建立代理)。


*这不完全正确。您可以将40个字节的选项塞进TCP报头扩展。但是,你必须低于人们通常谈论的"套接字服务器"的水平--而且很有可能它不会通过互联网。此外,确实有"带外"数据的概念,但这在这里并不相关;您仍然必须接受连接并从中读取才能获得OOB数据。

这篇关于Python套接字服务器使用令牌进行客户端身份验证的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Leetcode 234: Palindrome LinkedList(Leetcode 234:回文链接列表)
How do I read an Excel file directly from Dropbox#39;s API using pandas.read_excel()?(如何使用PANDAS.READ_EXCEL()直接从Dropbox的API读取Excel文件?)
subprocess.Popen tries to write to nonexistent pipe(子进程。打开尝试写入不存在的管道)
I want to realize Popen-code from Windows to Linux:(我想实现从Windows到Linux的POpen-code:)
Reading stdout from a subprocess in real time(实时读取子进程中的标准输出)
How to call type safely on a random file in Python?(如何在Python中安全地调用随机文件上的类型?)