Python tornado认证是如何工作的?

Python tornado认证是如何工作的?,python,tornado,tornado-redis,Python,Tornado,Tornado Redis,身份验证在tornado中如何使用set\u secure\u cookie方法? 为多个用户存储这些cookie的位置? 我们如何验证框架内的每个API调用?Cookie只是HTTP头。没什么特别的。Cookies的工作原理如下: 浏览器向服务器发送请求。这可以通过任何请求实现,如常规页面请求或登录表单提交。对于本例,我们只讨论一个登录请求 服务器将查看提交的用户名和密码,并确保它们是正确的。然后,服务器将在此浏览器上设置cookie,以便以后可以识别用户。要设置cookie,服务器将发送名为

身份验证在tornado中如何使用set\u secure\u cookie方法? 为多个用户存储这些cookie的位置?
我们如何验证框架内的每个API调用?

Cookie只是HTTP头。没什么特别的。Cookies的工作原理如下:

  • 浏览器向服务器发送请求。这可以通过任何请求实现,如常规页面请求或登录表单提交。对于本例,我们只讨论一个登录请求
  • 服务器将查看提交的
    用户名
    密码
    ,并确保它们是正确的。然后,服务器将在此浏览器上设置cookie,以便以后可以识别用户。要设置cookie,服务器将发送名为
    set cookie
    的头以及响应。它看起来像这样-
    设置Cookie:sessionId=username
  • 当浏览器收到响应时,它还会注意到响应上有一个
    SET-COOKIE
    头。现在浏览器会把这个值保存在你电脑的某个地方,这无关紧要。重要的是,无论何时浏览器将请求发送到服务器,它都会在请求头中发送此cookie,如-
    cookie:sessionId=username
  • 下次,服务器还会注意到请求中的
    Cookie
    头。因此,它将从那里获得登录用户的用户名 这就是饼干的工作原理


    现在回答您的问题:

    身份验证在tornado中如何使用set\u secure\u cookie方法

    在上面的示例中,您可能已经注意到了一个很大的安全漏洞。为了识别用户,我们用纯文本设置了
    sessionId
    值。任何人都可以轻松地在cookie中发送不同的用户名,我们的服务器会将他们视为该用户。例如,如果Alice想入侵Bob的帐户,她所要做的就是发送会话cookie,如下-
    cookie:sessionId=Bob
    。我们的服务器会把Alice当作Bob

    这就是
    set\u secure\u cookie
    方法的用武之地。它将设置一个签名令牌,而不是普通用户名。Tornado将根据您的
    cookie\u secret
    设置值设置签名cookie。这是安全的,因为cookie是基于
    cookie\u secret
    签名的,没有人知道这个密码。cookie的外观如下-
    sessionId=slsafj7987LJflsfslfljk68686sfj
    。现在,爱丽丝不能冒充鲍勃了

    为多个用户存储这些cookie的位置

    没有。由于Cookie已签名,Tornado将在请求传入时解码已签名Cookie中的值。例如,如果cookie头看起来像这样-
    cookie:sessionId=alksjfl98798yfaslkdjf
    。Tornado将解码该-
    alksjfl98798yfaslkdjf
    值以提取编码的用户名。它是在飞行中发生的

    我们如何对框架内的每个API调用进行身份验证

    API调用是否需要会话,如用户身份验证,以便用户可以查看和编辑其帐户等?那么您所需要的就是
    设置\u安全\u cookie
    方法。
    如果API调用彼此独立,那么应该让用户使用带有“访问密钥”的API。您需要将这些访问密钥存储在数据库中。您的用户将在每个请求中以HTTP头或请求查询参数的形式发送此访问密钥:

    # as a header
    API-Access-Key: <long-random-key>
    
    # OR as a query string
    http://yourserver.com?key=<long-random-key>
    
    #作为标题
    API访问密钥:
    #或作为查询字符串
    http://yourserver.com?key=