【问题标题】:Can Cookies be securely sent from one machine to another to access a resourceCookie 能否安全地从一台机器发送到另一台机器以访问资源
【发布时间】:2016-03-23 08:56:12
【问题描述】:

这个问题有几个部分:

Mobile app
API server
Laravel 4.2 Web App server
Client web view (UIWebView/browser)

我正在寻找在移动应用上进行身份验证时确保对客户端的 API 安全访问的最佳方法。下面我概述了我目前的策略:

Mobile ---(1) basic auth credentials ------> Laravel
 App                                          server
                                            /   ^   \
                                      (4)  /     \   \  (2) basic auth/
                                  cookie/ /       \   \    initial API request
                                  data   /     (3) \   \
                    Client  <___________/ payload/  \   \
                       |                   cookie    \   \_>   API
                       |(5)                           -----  server
                       |cookie/                                 ^
                       |request                                 |
                       -----------------------------------------

如果我的绘图不清楚,会发生以下情况:

  1. 基本身份验证信息从移动应用发送到 laravel 服务器
  2. 基本身份验证信息与来自 Laravel 的初始数据请求一起发送到 API 服务器
  3. API 服务器使用初始负载和访问 cookie 进行响应
  4. 我将访问 cookie 传递给客户端
  5. 客户端现在可以使用 cookie 访问 API 服务器了

我不是安全专家,但我认为这种方法没有任何致命缺陷。所有传输都通过 HTTPS 发送,基本凭据永远不会发送到客户端。

所以我的问题主要在于第 4 步和第 5 步。这在 Laravel/任何地方是否安全/可行?

我在文档中看到可以使用

获取和设置 Cookie
Cookie::get('name');

$response = Response::make('Hello World');

$response->withCookie(Cookie::make('name', 'value', $minutes));

在客户端,虽然我不确定如何确保我的 cookie 与我的 API 请求一起发送。任何输入都会很棒。

注意:我负责 Laravel 服务器和客户端。我们公司刚刚开始对部分移动应用程序采用混合方法,因此在混合平台时处理身份验证是新手(即我们知道如何进行 Web 登录,而不是像这样的间接身份验证)。

提前谢谢!

【问题讨论】:

    标签: security laravel authentication cookies


    【解决方案1】:

    答案是否定的,这不能通过 cookie 完成。它们仅对设置它们的路径有效(不能在 Laravel 和 Java 服务器上共享)。

    【讨论】:

      【解决方案2】:

      你是否使用 Laravel 服务器作为你的 api 服务器的代理?

      我猜你希望能够在旧的 Laravel 服务器和新的 api 服务器上对用户进行身份验证,但不需要显式地让用户登录到 api 服务器。

      如果是这种情况,那么我会查看 JWT 身份验证令牌,而不是尝试发送 cookie。由于这两个系统都由您控制,您可以在 Laravel 服务器上生成一个 JWT 令牌,然后可以使用该令牌在 api 服务器上对用户进行身份验证。正如您知道 laravel 和 api 服务器上的 JWT 机密一样,您知道令牌是在两个服务器上正确生成的,并且将提供对同一用户的访问权限。

      这样做的另一个好处是,一旦您迁移到新的 api 服务器,您的身份验证就不必在 api 服务器上更改 - 它只适用于支持 JWT auth 的客户端。

      如果您还不熟悉,可以在http://jwt.io 找到更多信息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-05-19
        • 1970-01-01
        • 2016-07-14
        • 2013-11-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多