上云无忧 > 文档中心 > 百度智能云对象存储BOS STS临时认证教程
对象存储BOS
百度智能云对象存储BOS STS临时认证教程

文档简介:
Bce-bos-uploader 支持 STS(Security Token Service)临时授权的方式。服务端生成一组具体特定操作权限、具有一定时效性的临时AK/SK,这组临时的 AK/SK 可以暴露给浏览器端直接使用。用户只需要将服务端返回的 AK/SK 及 SessionToken 设置为 bce-bos-uploader 对应的 bos-ak、bos-sk 和 uptoken 参数。 下图简单介绍了整个业务交互过程,关于 STS 方面的介绍请参考临时授权访问。
*此产品及展示信息均由百度智能云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠



进阶篇一:STS 临时认证

Bce-bos-uploader 支持 STS(Security Token Service)临时授权的方式。服务端生成一组具体特定操作权限、具有一定时效性的临时AK/SK,这组临时的 AK/SK 可以暴露给浏览器端直接使用。用户只需要将服务端返回的 AK/SK 及 SessionToken 设置为 bce-bos-uploader 对应的 bos-ak、bos-sk 和 uptoken 参数。 下图简单介绍了整个业务交互过程,关于 STS 方面的介绍请参考临时授权访问。


代码实现分为应用服务器端和客户端两部分,实现过程如下:

  1. 配置应用服务器端,以 Nodejs 实现为例,服务器端会返回 AK/SK/SessionToken 。
  2. 配置浏览器,根据服务器端返回的 AK/SK/SessionToken 初始化 bce-bos-uploader 参数。

应用服务器端 Nodejs 实现

var http = require('http');
var url = require('url');
var util = require('util');

var STS = require('@baiducloud/sdk').STS;

var kCredentials = {
    ak: '您的AK',
    sk: '您的SK'
};

function buildStsResponse() {
    var stsClient = new STS({
        credentials: kCredentials,
        region: 'bj'
    });
    return stsClient.getSessionToken(60 * 60 * 24, {
        accessControlList: [{
            service: 'bce:bos',
            resource: ['bce-javascript-sdk-demo-test'],
            region: '*',
            effect: 'Allow',
            permission: ['READ', 'WRITE']
        }]
    }).then(function (response) {
        var body = response.body;
        return {
            AccessKeyId: body.accessKeyId,
            SecretAccessKey: body.secretAccessKey,
            SessionToken: body.sessionToken,
            Expiration: body.expiration
        };
    });
}

http.createServer(function (req, res) {
    console.log(req.url);

    var query = url.parse(req.url, true).query;

    var promise = null;

    if (query.sts) {
        promise = buildStsResponse();
    }

    promise.then(function (payload) {
        res.writeHead(200, {
            'Content-Type': 'text/javascript; charset=utf-8',
            'Access-Control-Allow-Origin': '*'
        });

        if (query.callback) {
            res.end(util.format('%s(%s)', query.callback, JSON.stringify(payload)));
        }
        else {
            res.end(JSON.stringify(payload));
        }
    });
}).listen(1337);
console.log('Server running at http://0.0.0.0:1337/');

在服务器端,用与创建 bosClient 实例类似的方式创建一个 stsClient 实例。对于 stsClient 实例,主要有一个方法,那就是 getSessionToken 。这个方法接收两个参数,第一个参数是临时授权的有效期,以秒为单位;第二个单位是具体的权限控制,参见STS服务接口。

这个方法会异步访问 STS 授权服务器,返回一个 promise 对象。 STS 授权服务器会返回类似如下内容:


{   
    body: {         
        "accessKeyId": "d87a16e5ce1d47c1917b38ed03fbb329", 
        "secretAccessKey": "e9b6f59ce06c45cdaaea2296111dab46",
         "sessionToken": "MjUzZjQzNTY4OTE0NDRkNjg3N2E4YzJhZTc4YmU5ZDh8AAAAABwCAAB/HfHDVV2bu5xUf6r
Apt2YdSLG6+21UTC62
EHvIuiaamtuMQQKNkR9PU2NJGVbuWgBn8Ot0atk0HnWYQGgwgyew24HtbrX3GFiR/cDymCowm0TI6OGq7k8pGuBiCczT8qZc
arH7VdZBd1lkpYaXbtP7
wQJqiochDXrswrCd+J/I2CeSQT6mJiMmvupUV06R89dWBL/Vcu7JQpdYBk0d5cp2B+gdaHddBobevlBmKQw50/oOykJIuho
4Wn7FgOGPMPdod0Pf0s7lW
/HgSnPOjZCgRl0pihs197rP3GWpnlJRyfdCY0g0GFG6T0/FsqDbxbi8lWzF1QRTmJzzh2Tax8xoPFKGMbpntp//vGP7oPYK1
JoES34TjcdcZnLzIRn
VIGaZAzmZMUhPEXE5RVX1w8jPEXMJJHSrFs3lJe13o9Dwg==",         
        "createTime": "2016-02-16T14:01:29Z",         
        "expiration": "2016-02-16T15:41:29Z",         
        "userId": "5e433c4a8fe74765a7ec6fc147e25c80"     
    } 
}


服务器端需要把 accessKeyId、secretAccessKey、sessionToken 三个字段下发给浏览器端。

配置浏览器端 bce-bos-uploader 参数

使用 STS 临时授权机制时,只需要在各个服务初始化的时候把上面所说的参数 accessKeyId、secretAccessKey、sessionToken 引入就可以了。

bce-bos-uploader simple demo
    
    
    
    
    



相似文档
  • 因为 IE 低版本(IE8,IE9)对 html5 支持的不完善,为了在这些浏览器里面实现文件直传的功能, BOS 开发了 PostObject 接口,通过一个 multipart/form-data 的格式,就可以把文件上传到 BOS 服务器。Postobject 接口的签名模式下应用服务器端对 policy 生成签名,再返回给客户端。
  • 如您不使用 bce-bos-uploader ,可以参考下面的内容完成如何在浏览器中直接上传文件到 BOS 。使用流程: 开启 Bucket 的跨域访问设置; 查询 ak/sk; 初始化 BosClient; 处理上传逻辑。
  • 用户在使用浏览器上传文件到 BOS 的时候,如果遇到文件过大,需要先将文件分块然后再上传。上传过程中有可能会遇到页面关闭、浏览器崩溃、网络连接中断等问题,从而导致上传失败。BOS 支持分块上传和断点续传功能。分块上传请参见“ Object 的分块上传”,下面介绍“断点续传”的实现方法。
  • Bce-bos-uploader 支持 STS(Security Token Service) 临时授权的方式。服务端生成一组具体特定操作权限、具有一定时效性的临时 AK/SK ,这组临时的 AK/SK 可以暴露给浏览器端直接使用。用户只需要将服务端返回的 AK/SK 及 SessionToken 设置为 bce-bos-uploader 对应的 bos-ak、bos-sk 和 uptoken 参数。
  • 移动互联时代手机上传数据的场景随处可见,为了方便开发者聚焦于产品的业务逻辑,用户可以直接将文件存储到 BOS 上。 BOS 产品基于 STS 授权方式为用户提供了安全的上传和下载方式, BOS 还支持图片处理服务。BOS 具有成本低、支持海量存储和弹性扩展的特性,能帮助开发者更方便实现移动 APP 业务的开发。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部