.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 ...
随机推荐
- Phalcon notes
1. 半原生数据查询: echo $realUser->getReadConnection()->getSQLStatement();die;
- HDLBits答案——Verification: Writing Testbenches
1 clock module top_module ( ); reg clk; dut U1(.clk(clk)); initial begin clk = 0; end always begin # ...
- [排序算法] 希尔排序 (C++)
前言 本文章是建立在插入排序的基础上写的喔,如果有对插入排序还有不懂的童鞋,可以看看这里. 直接/折半插入排序 2路插入排序 希尔排序解释 希尔排序 Shell Sort 又名"缩小增量排序 ...
- 【JUC】信号量Semaphore详解
欢迎关注专栏[JAVA并发] 欢迎关注个人公众号-- JAVA旭阳 前言 大家应该都用过synchronized 关键字加锁,用来保证某个时刻只允许一个线程运行.那么如果控制某个时刻允许指定数量的线程 ...
- Linux 下的输入输出和重定向示例
Linux 下的输入输出和重定向示例 作者:Grey 原文地址: 博客园:Linux 下的输入输出和重定向示例 CSDN:Linux 下的输入输出和重定向示例 说明 Linux 下的输入输出有如下三种 ...
- 配置php-fpm识别php文件访问
以前是装的集成环境,没有想到装完Nginx + PHP + MySQL 启动nginx 服务,出现页面: 如果访问120.25.216.6/index.php 就会变成下载 之所以会这样是因为2个原因 ...
- 搭建漏洞环境及实战——搭建SQL注入平台
Sqli-lab是一款学习SQL注入的开源平台,共有75种不同类型的注入,复制源码然后将其粘贴到网站的目录中,进入MySQL管理中的PHPMyAdmin,打开http://127.0.0.1/phpM ...
- loadrunner11汉化时提示模块插件无法注册的解决方法
安装汉化程序时,关闭杀毒软件.
- django serializer.is_valid()总是返回False({'invalid': '无效数据。期待为字典类型,得到的是 {datatype} 。'})
在调用添加接口时,一值失败,调试后发现传入的数据并没有问题,但是数据验证时一直返回False,此时使用 serializer.error_messages查看,所返回如下问题: 再往上看显示: 发现 ...
- Django 之swagger中尝试调试post请求时返回 "detail": "JSON parse error - Expecting value: line 1 column 1 (char)
swagger已配置OK,但发送POST请求时一直显示数据格式错误,怪异.... 经过各种查找资料,才发现setting.py文件中缺少配置 配置完成后重启服务,再次尝试发送POST请求,不会再报格式 ...

