假设您是一个移动App开发者,希望使用阿里云OSS服务来保存App的终端用户数据,并且要保证每个App用户之间的数据隔离。此时,您可以使用STS授权用户直接访问OSS。

使用STS授权用户直接访问OSS的流程如下:

1、关于秘钥等信息的申请见如下链接

使用STS临时访问凭证访问OSS

切记别忘了设置权限!在添加权限页面,选择AliyunSTSAssumeRoleAccess系统策略

2、配置文件的格式如下

{
"Aliyun": {
"AccessKey": {
"Id": "xxxxxxxxxx",
"Secret": "xxxxxxxxxxxxxxxxxxxx"
},
"Endpoint": "xxxxxxxxxxxxxxxxxxxx",
"BucketName": "xxxxxx",
"UploadRoleArn": "xxxxxxxxxxxxxxxxxxxx"
}
}

3、如何读取配置文件可看下往期文章

.net core 读取配置文件的几种方式_SunshineGGB的博客-CSDN博客

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 阿里云接口之获取临时访问凭证的更多相关文章

  1. 阿里云部署django实现公网访问

    本博的主要目的是对阿里云部署django实现公网访问进行一次简单的记录,方便日后查询. 内容目录: (1)申请阿里云服务器及安全组配置 (2)实现ssh远程控制 (3)实现ftp文件传输 (4)安装p ...

  2. 阿里云服务器apache服务器局域网访问公网访问配置

    阿里云服务器apache服务器局域网访问公网访问配置 一.总结 一句话总结: 1.再总结-------------------------------------------------------- ...

  3. node.js使用免费的阿里云ip查询获取ip所在地

    在项目过程中,我们常常需要获取IP的所在地.而这一功能一般都是通过一些数据网站的对外接口来实现,这些接口一般情况下都是付费使用的.在这篇文章中我将记录,基于node.js的阿里云免费IP地址查询接口的 ...

  4. 阿里云接口异常-Can not find endpoint to access

    最近在做公司的资产盘点,需要请求阿里云的接口获取公司的云服务器信息.在获取实例列表的过程中,通过异常机制捕获了 Can not find endpoint to access 这个错误.经过多次排查, ...

  5. 上传图片到阿里云OSS和获取上传图片的外网url的步骤

    啥都不说  直接上代码 1.html: <form action="/bcis/api/headImgUpload.json" method="post" ...

  6. java 阿里云接口实现发送短信验证码

    此刻自己做的小项目中,需要用到手机发送短信验证码实现注册功能,于是就去阿里云注册了账号,并实现随机发送验证码的功能 第一步:在阿里云官网登录注册   已有支付宝或淘宝的账号可以直接登录,最后需要实名认 ...

  7. 小程序后端项目【Springboot框架】部署到阿里云服务器【支持https访问】

    前言: 我的后端项目是Java写的,用的Springboot框架.在部署服务器并配置https访问过程中,因为做了一些令人窒息的操作(事后发现),所以老是不能成功. 不成功具体点说就是:域名地址可以正 ...

  8. 解决阿里云服务器3306端口无法访问的问题(windows server 2008r2)

    3306端口一般是指mysql数据的默认端口.郁闷了几天的问题,远程无法连接服务器上的mysql服务.今天终于得到彻底解决. 首先,你要确保在服务器上安装好Mysql,并能本地启动.修改密码(如不知道 ...

  9. Linux下Nginx配置阿里云 SSL证书实现HTTPS访问

    这篇文章主要介绍了nginx配置ssl证书实现https访问的示例 1.服务器系统:Centos 2. 阿里云申请SSL证书 选择“免费版DV SSL”,点击立即购买: 下载证书 列表中找到已签发的证 ...

  10. 通过阿里云ECS服务器公网ip访问tomcat,nginx

    一.概述 1.操作系统:centos7 2.安装nginx方法:https://www.cnblogs.com/boonya/p/7907999.html,亲测可用. 3.tomcat版本:apach ...

随机推荐

  1. PS2023下载安装保姆级教程中文汉化完整版

    PS2023Windows安装教程退出安全软件①:下载PS2023安装包 ②:打开下载好的文件,鼠标右键把安装包解压③:打开解压好的"PS 24.0.0"文件夹,找到并选中&quo ...

  2. Git+Github协作开发流程

    采用合作开发者的方式进行协作开发,下面以zlcook和zlserver合作开发iqas-ios-record项目为例进行讲解,zlcook为项目创建者,zlserver为项目参与者.协作开发步骤如下: ...

  3. VsCode搭建一个React项目

    安装Node.js 使用 npm -v检查安装成功 目前的 node 中都会自带 npm 所以不需要重新下载 直接切换至淘宝镜像即可 1.临时使用 :npm --registry https://re ...

  4. 认证服务(keystone)

    Keystone职能: Keystone (OpenStack ldentityService)是OpenStack中的一个独立的提供安全认证的模块,主要负责openstack用户的身份认证.令牌管理 ...

  5. Zabbix技术分享——监控windows进程资源使用情况

    监控系统进程资源的使用情况是IT运维的常规操作.在实际工作中,运维人员有可能遇到可以使用Zabbix Agent监控linux系统进程,却无法监控windows系统进程的情况.这是因为Zabbix A ...

  6. Django的manytomany字段

    manytomany字段 用于表示多对多的关系,最常见的就是老师和班级的例子 一个老师可以教多个班级,一个班级也可以有多个老师 add 添加关系 teachers=models.Teacher.obj ...

  7. 【Java SE】Day11 final、权限、内部类、引用类型

    一.final关键字 1.概述 避免子类改写父类内容,使用final关键字,修饰不可变内容 可以修饰类(不可被继承).方法.变量(不能被重新赋值 ) 2.使用 (基本类型)被修饰的变量只能被赋值一次 ...

  8. feDisplacementMap滤镜实现水波纹效果,计算动态值。

    参考资料 https://www.zhangxinxu.com/wordpress/2017/12/understand-svg-fedisplacementmap-filter/ 该文章已经讲的特别 ...

  9. VMware虚拟机开机黑屏解决方法

    挂起时可以看到显示,但是开机就黑屏 解决方法: 命令提示符,鼠标右键点击"命令提示符",弹出菜单之后选择"以管理员身份运行" 在命令提示符窗口中输入" ...

  10. 基于.NetCore开发博客项目 StarBlog - (25) 图片接口与文件上传

    前言 上传文件的接口设计有两种风格,一种是整个项目只设置一个接口用来上传,然后其他需要用到文件的地方,都只存一个引用ID:另一种是每个需要文件的地方单独管理各自的文件.这俩各有优劣吧,本项目中选择的是 ...