博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Nodejs阿里云OSS获取STS 授权
阅读量:5963 次
发布时间:2019-06-19

本文共 2662 字,大约阅读时间需要 8 分钟。

  • 安装依赖

yarn add axiosyarn add urlencodeyarn add crypto-jsyarn add qs复制代码

  • 导包
const axios = require('axios');const urlencode = require('urlencode');const CryptoJS = require('crypto-js');const crypto = require('crypto');const qs = require('qs');复制代码
  • 代码实现

async function aliyunSTS2() {    var params = {        AccessKeyId: '阿里云AccessKeyId',        Action: 'AssumeRole',        Format: 'JSON',        RoleArn: 'acs:ram::xxxxxxxx:role/xxxxxx',        RoleSessionName: 'ann-sts-nodejs 此处自定义,注意字符限制 字母和-数字的组合',        SignatureMethod: 'HMAC-SHA1',        SignatureNonce: new Date().getTime().toLocaleString(),//随机字符串吧        SignatureVersion: '1.0',        Timestamp: new Date().toISOString().replace(/\..+/,'') + 'Z',        Version: '2015-04-01'    }    var CanonicalizedQueryString = qs.stringify(params)    console.log('CanonicalizedQueryString')    console.log(CanonicalizedQueryString)    var StringToSign = 'GET' +'&' + urlencode('/') + '&' + urlencode(CanonicalizedQueryString)    // StringToSign = urlencode(StringToSign)    console.log('StringToSign')    console.log(StringToSign)    const key = '阿里云AccessKey Secret';    var sign = CryptoJS.enc.Base64.stringify(CryptoJS.HmacSHA1(StringToSign,`${key}&`))    console.log('签名')    console.log(sign)    // var signCode = new Buffer(sign).toString('base64');    console.log('签名Base64')    // console.log(signCode)     const hmac = crypto.createHmac('sha1', `${key}&`);    const signature = hmac.update(StringToSign)        .digest("base64");    console.log('const signature = ')    console.log(signature)    axios.default.get('https://sts.aliyuncs.com',        {            params: {                ...params,                Signature: signature ,//sign也可以 两种加密库的实现,浏览器环境和node环境的切换吧,自己选            }        }        ).then((res)=>{            console.log('axios then')        console.log(res.data)        console.log(res.data.Credentials.SecurityToken)    }).catch((err)=>{        console.log('axios 请求错误')        console.log(err.response.data)//阿里云解析错误会返回信息的    })}复制代码

  • 验证

aliyunSTS2()复制代码

第三方实现,只支持node环境

  • 安装依赖

yarn add blueshit/aliyun-sts复制代码

const STS = require("@blueshit/aliyun-sts");async function getSts() {    const sts = new STS.STS({        accessKeyId: "阿里云accessKeyId",        accessKeySecret: "阿里云accessKeySecret",    });    const policy = {        Statement: [            {                Effect: "Allow",                Action: ["oss:*"],                Resource: ['acs:oss:*:*:*'],            },        ],        Version: "1",    };    const credentials = await sts.assumeRole('acs:ram::xxxx:role/此处阿里云自己的角色ID', policy, 15 * 60, "RoleSessionName");    console.log(credentials);}复制代码

  • 验证

getSts()复制代码

转载地址:http://pmjax.baihongyu.com/

你可能感兴趣的文章
mybatis初接触
查看>>
Java一次性读取文件的内容
查看>>
TestMap
查看>>
《测之重器——自动化测试框架搭建指南》
查看>>
Kent Beck揭秘Facebook开发部署流程
查看>>
AsDataView Dataview ,DataTable 跟linq的相互转化
查看>>
ABP(现代ASP.NET样板开发框架)系列之16、ABP应用层——数据传输对象(DTOs)
查看>>
在html页头设置不缓存
查看>>
这就是爱情
查看>>
域名服务交易平台收集
查看>>
Pycharm 使用
查看>>
【实习记】2014-08-22试用SSH客户端XShell与SecuretyCRT与MobaXterm总结
查看>>
BZOJ5334:[TJOI2018]数学计算——题解
查看>>
关于self.用法的一些总结
查看>>
代码上线的十二个步骤
查看>>
Office Visio简介
查看>>
TensorFlow学习_NN
查看>>
Java方式 MySQL数据库连接
查看>>
TPYBoard MicroPython 固件开发教程使用mpy-cross工具生成mpy文件
查看>>
android微信分享不出去?四步搞定!
查看>>