Oauth2安全性-这样安全吗?

时间:2018-08-13 19:20:01

标签: oauth-2.0 google-picker

我正在尝试在Web应用程序中实现文件传输功能。用户将访问该页面,单击“从Google云端硬盘传输”按钮,然后他们可以选择要发送到我的应用程序的文件。当然,这涉及一些Oauth2流,我想知道我的设置是否安全。

为了让用户选择文件,我正在使用Google Picker API / javascript库(https://developers.google.com/picker/)。这将运行基于浏览器的OAuth2流,在此期间,客户端会使用OAuth2令牌。用户选择文件并单击“确定”后,便有一个回调函数。在https://developers.google.com/picker/docs/中的“ hello world”示例中,它们仅打印所选文件的URL。

在我的应用程序中,我想下载文件,因此我正在使用该回调将文件ID和OAuth2令牌发送到我的后端服务器,然后由我下载服务器。相关的客户端脚本为:

function pickerCallback(data) {
  if (data.action == google.picker.Action.PICKED) {

    // get the unique File IDs
    var allFileIds = [];
    for(var i=0; i < data.docs.length; i++){
        allFileIds.push(data.docs[i].id);
    }

    // oauthToken was set elsewhere
    data = {"file_ids": allFileIds, "token": oauthToken};
    csrf_token = getCsrfToken();
    $.ajax(
      {
        url:"https://<MY URL>",
        type:"post",
        data:{"data": JSON.stringify(data)},
        headers:{"X-CSRFToken": csrf_token},
        dataType:"json",
        success: function (data) {
            console.info(data);
        }
      }
    );
  }
}

我已确认这可行(一旦后端具有文件ID和令牌,便可以下载文件)。我的问题是,在ajax请求中发送OAuth2令牌是否安全...?仅当我的服务器为https时才安全吗?还是可以将其放在标题中?哪个是“最佳”?

如果它不安全,我还能怎么做(不惹恼用户)?用户必须首先授予访问权限以启动客户端“选择器”,但是我显然不想再问我,以便我的Web服务器可以执行整个OAuth2流并为后端获取其他令牌。

谢谢!

0 个答案:

没有答案