gpt4 book ai didi

ruby-on-rails - 关于身份验证的问题

转载 作者:行者123 更新时间:2023-12-03 17:45:21 24 4
gpt4 key购买 nike

我在如何处理 token 身份验证的好主意上绘制了架构空白。

我们拥有一些电话应用程序,它们可以生成对后端API( rails )的REST请求。
现在, Varnish 位于我们的API的前面,并且运行良好,但是在处理auth的方式上存在一个空白:我们不这样做。

我并不想因为要求别人解决这个问题而被举报,我只是从更高层次上询问一些人。

手机通过POST在应用中创建其设备并获得唯一 token 。他们通过Authorization: OAuth {token}在其他所有GET请求中提交该 token 。我们的rails API处理得很好,但是由于GET是通过 Varnish 缓存的,因此我们对其进行了限制。

由于性能,我们不想缓存每个电话的每个响应。各个电话的响应都是相同的。如果我将 token 头添加到vcl_hash的哈希中,这意味着如果有50个电话要请求/a/1,那么我们将在缓存中保留50个相同的项目,而后端将获得50个请求。我们希望避免这种情况。

关于如何在某种方法的组级别上对客户端进行身份验证,我处于空白。

不确定是否有帮助:

  • Varnish 3.0.7是我们所拥有的。不反对4,只是避风港。
  • 每个客户端都会使用 Varnish ,但是我们只关心User-Agent是android/ios。该部分已经完成,其他任何事情都直接进入了API。
  • 鉴于上一点,可以安全地假设我们要哈希/缓存的所有客户端都具有相同的授权。纯粹是auth token 问题。 IE。所有带有 token 的客户端我们都将检查以确保其有效,并为他们提供缓存的资源。使用 token 的客户端之间永远不会有不同的资源。
  • 最佳答案

    如果我正确理解,我会看到一些潜在的方法。

    1)您可以设置一个仅对用户进行验证就不执行任何操作的后端-让Varnish验证尚未重启的任何内容,并且只有在验证之后才返回缓存的资源。这是一个很好的blog post,它提供了一些VCL以帮助您入门。

    2)就我而言,这更具推测性-您可以在Varnish中使用ESI (Edge Side Includes)进行身份验证。我不确定的是,是否有办法从ESI片段中终止请求或传递失败的状态代码。如果没有,即使认证失败,您最终仍将返回内容。乱。

    关于ruby-on-rails - 关于身份验证的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33831435/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com