.net core 阿里云接口之获取临时访问凭证
假设您是一个移动App开发者,希望使用阿里云OSS服务来保存App的终端用户数据,并且要保证每个App用户之间的数据隔离。此时,您可以使用STS授权用户直接访问OSS。
使用STS授权用户直接访问OSS的流程如下:
1、关于秘钥等信息的申请见如下链接
切记别忘了设置权限!在添加权限页面,选择AliyunSTSAssumeRoleAccess系统策略
2、配置文件的格式如下
{
"Aliyun": {
"AccessKey": {
"Id": "xxxxxxxxxx",
"Secret": "xxxxxxxxxxxxxxxxxxxx"
},
"Endpoint": "xxxxxxxxxxxxxxxxxxxx",
"BucketName": "xxxxxx",
"UploadRoleArn": "xxxxxxxxxxxxxxxxxxxx"
}
}
3、如何读取配置文件可看下往期文章
4、编写获取临时访问凭证的代码
/// <summary>
/// 获取临时访问凭证
/// </summary>
/// <returns></returns>
[HttpPost, HttpGet, HttpOptions, CorsOptions]
public IActionResult GetTemporaryAccessCredentials()
{
string accessKey = _configuration["Aliyun:AccessKey:Id"];
string secretKey = _configuration["Aliyun:AccessKey:Secret"];
string bucket = _configuration["Aliyun:BucketName"];
string endpoint = _configuration["Aliyun:Endpoint"];
string roleArn = _configuration["Aliyun:UploadRoleArn"];
// 构建一个阿里云客户端,用于发起请求。
// 构建阿里云客户端时需要设置AccessKey ID和AccessKey Secret。
IClientProfile profile = DefaultProfile.GetProfile("cn-hangzhou", accessKey, secretKey);
DefaultAcsClient client = new DefaultAcsClient(profile);
// 构建请求,设置参数。关于参数含义和设置方法,请参见《API参考》。
var request = new AssumeRoleRequest();
request.RoleArn = roleArn;
request.RoleSessionName = "test_role"; // 自定义角色会话名称,用来区分不同的令牌,例如可填写为SessionTest
if(!string.IsNullOrWhiteSpace(accessKey) && !string.IsNullOrWhiteSpace(secretKey) && !string.IsNullOrWhiteSpace(roleArn) && !string.IsNullOrWhiteSpace(endpoint) && !string.IsNullOrWhiteSpace(bucket))
{
// 发起请求,并得到响应。
try
{
var response = client.GetAcsResponse(request);
// 辅助类
STS_Signature STSMod = new STS_Signature();
STSMod.AccessKeyId = response.Credentials.AccessKeyId;
STSMod.AccessKeySecret = response.Credentials.AccessKeySecret;
STSMod.SecurityToken = response.Credentials.SecurityToken;
// Token过期时间;服务器返回UTC时间,这里转换成北京时间显示;
STSMod.Expiration = DateTime.Parse(response.Credentials.Expiration).ToLocalTime();
STSMod.Endpoint = endpoint;
STSMod.BucketName = bucket;
STSMod.Region = "oss-cn-shanghai";
return SuccessResult(STSMod);
}
catch(ServerException e)
{
LogHelper.WriteErrorLog("临时授权失败,错误原因:" + e.Message);
return ErrorResult("临时授权失败,错误原因:" + e.Message, 111150);
}
catch(Aliyun.Acs.Core.Exceptions.ClientException e)
{
LogHelper.WriteErrorLog("临时授权失败,错误原因:" + e.Message);
return ErrorResult("临时授权失败,错误原因:" + e.Message, 111151);
}
catch(Exception ex)
{
LogHelper.WriteErrorLog("临时授权失败,错误原因:" + ex.Message);
return ErrorResult("临时授权失败,错误原因:" + ex.Message, 111152);
}
}
else return ErrorResult("阿里云配置文件读取失败,请联系网站管理员!", 111111);
}
5、返回值辅助类STS_Signature
public class STS_Signature
{
private string _AccessKeyId;
public string AccessKeyId
{
get
{
return _AccessKeyId;
}
set
{
_AccessKeyId = value;
}
}
private string _AccessKeySecret;
public string AccessKeySecret
{
get
{
return _AccessKeySecret;
}
set
{
_AccessKeySecret = value;
}
}
private string _SecurityToken;
public string SecurityToken
{
get
{
return _SecurityToken;
}
set
{
_SecurityToken = value;
}
}
private string _Endpoint;
public string Endpoint
{
get
{
return _Endpoint;
}
set
{
_Endpoint = value;
}
}
private string _BucketName;
public string BucketName
{
get
{
return _BucketName;
}
set
{
_BucketName = value;
}
}
private DateTime _Expiration;
public DateTime Expiration
{
get
{
return _Expiration;
}
set
{
_Expiration = value;
}
}
private string _Region;
public string Region
{
get
{
return _Region;
}
set
{
_Region = value;
}
}
}
6、日志工具类
首先要在NuGet中安装Log4Net

public static class LogHelper
{
private static log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
public static void WriteInfoLog(string message)
{
try
{
log.Info(message);
}
catch(Exception ex)
{}
}
public static void WriteErrorLog(string message)
{
try
{
log.Error(message);
}
catch(Exception ex)
{}
}
}
以上就是.net core 阿里云接口之获取临时访问凭证的介绍,做此记录,如有帮助,欢迎点赞关注收藏!
.net core 阿里云接口之获取临时访问凭证的更多相关文章
- 阿里云部署django实现公网访问
本博的主要目的是对阿里云部署django实现公网访问进行一次简单的记录,方便日后查询. 内容目录: (1)申请阿里云服务器及安全组配置 (2)实现ssh远程控制 (3)实现ftp文件传输 (4)安装p ...
- 阿里云服务器apache服务器局域网访问公网访问配置
阿里云服务器apache服务器局域网访问公网访问配置 一.总结 一句话总结: 1.再总结-------------------------------------------------------- ...
- node.js使用免费的阿里云ip查询获取ip所在地
在项目过程中,我们常常需要获取IP的所在地.而这一功能一般都是通过一些数据网站的对外接口来实现,这些接口一般情况下都是付费使用的.在这篇文章中我将记录,基于node.js的阿里云免费IP地址查询接口的 ...
- 阿里云接口异常-Can not find endpoint to access
最近在做公司的资产盘点,需要请求阿里云的接口获取公司的云服务器信息.在获取实例列表的过程中,通过异常机制捕获了 Can not find endpoint to access 这个错误.经过多次排查, ...
- 上传图片到阿里云OSS和获取上传图片的外网url的步骤
啥都不说 直接上代码 1.html: <form action="/bcis/api/headImgUpload.json" method="post" ...
- java 阿里云接口实现发送短信验证码
此刻自己做的小项目中,需要用到手机发送短信验证码实现注册功能,于是就去阿里云注册了账号,并实现随机发送验证码的功能 第一步:在阿里云官网登录注册 已有支付宝或淘宝的账号可以直接登录,最后需要实名认 ...
- 小程序后端项目【Springboot框架】部署到阿里云服务器【支持https访问】
前言: 我的后端项目是Java写的,用的Springboot框架.在部署服务器并配置https访问过程中,因为做了一些令人窒息的操作(事后发现),所以老是不能成功. 不成功具体点说就是:域名地址可以正 ...
- 解决阿里云服务器3306端口无法访问的问题(windows server 2008r2)
3306端口一般是指mysql数据的默认端口.郁闷了几天的问题,远程无法连接服务器上的mysql服务.今天终于得到彻底解决. 首先,你要确保在服务器上安装好Mysql,并能本地启动.修改密码(如不知道 ...
- Linux下Nginx配置阿里云 SSL证书实现HTTPS访问
这篇文章主要介绍了nginx配置ssl证书实现https访问的示例 1.服务器系统:Centos 2. 阿里云申请SSL证书 选择“免费版DV SSL”,点击立即购买: 下载证书 列表中找到已签发的证 ...
- 通过阿里云ECS服务器公网ip访问tomcat,nginx
一.概述 1.操作系统:centos7 2.安装nginx方法:https://www.cnblogs.com/boonya/p/7907999.html,亲测可用. 3.tomcat版本:apach ...
随机推荐
- oracle 内置函数(二)字符函数
主要函数: 大小写转换函数 获取子字符串函数(字符串截取) 获取字符串长度函数 字符串连接函数 去除子字符串函数 字符替换函数 字符串出现次数 字符串按照特定符号拆分多行 一.大小写转换 1.uppe ...
- day23 约束 & 锁 & 范式
考点: 乐观锁=>悲观锁=>锁 表与表的对应关系 一对一:学生与手机号,一个学生对一个手机号 一对多:班级与学生,一个班级对应多个学生 多对一: 多对多:学生与科目,一个学生对应多个科目, ...
- 【Java SE进阶】Day12 函数式接口、函数式编程(Lambda表达式)
一.函数式接口介绍 1.概念 仅有一个抽象方法的接口 适用于函数式编程(Lambda使用的接口) 语法糖:方便但原理不变,如for-each是Iterator的语法糖 Lambda≈匿名内部类的语法糖 ...
- CORS与CSRF在Spring Security中的使用
背景 在项目使用了Spring Security之后,很多接口无法访问了,从浏览器的网络调试窗看到的是CORS的报错和403的报错 分析 我们先来看一下CORS是什么,和它很相似的CSRF是什么,在S ...
- view-design tabpane禁用后renderHeader失效问题
需求是这样的 在tabPane的renderHeader里面添加hover事件(使用组件自带的Poptip)能显示提示 其实这个不算是问题,设置disabled属性后,原本的元素上面添加了 ivu-t ...
- 《HTTP权威指南》– 8.网关、Web机器人
集成点:网关.隧道及中继 网关 网关(gateway): 资源和应用程序之间的粘合剂.应用程序可以(通过HTTP或其它已定义的接口)请求网关来处理某条请求,网关可以提供一条响应.网关可以向数据库发送查 ...
- 搭建IIS网站后,点击浏览地址,报403错误
点击左侧的浏览地址,报右侧的错误,可将目录浏览进行启用 双击进去,进行启用即可
- 跟光磊学Java-macOS版Java8开发环境搭建(基于Intel x86 64-bit)
Java语言核心技术 日常办公和软件开发除了可以使用Windows系统以外,还可以使用macOS系统,至于具体使用什么系统取决于你入职公司之后公司给你发的什么电脑,如果是MacBookPro那么就 ...
- UOJ33 [UR#2] 树上 GCD
UOJ33 [UR#2] 树上 GCD 简要题意: 给定一棵有根树,对于每个 \(i \in [1,n)\),求出下式的值: \[Ans[i] = \sum_{u<v} \gcd({\rm{di ...
- 01-Sed简介
1 Sed简介 Sed(Stream EDitor)为Uninx系统上提供将编辑工作自动化的编辑器,使用者无需直接编辑数据.使用者可以利用Sed所提供的20多种不同的函数,进行不同的编辑动作. Sed ...

