From 7c7d0899d5cbf2de57238d845a6a7ef07603ff77 Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期一, 04 八月 2025 15:12:31 +0800 Subject: [PATCH] feat:阿里云OSS授权信息 --- FlexJobApi.Core/Utils/AliyunUtils/AliyunOSSUtils.cs | 44 +++++++++++ FlexJobApi.User.Application/FlexJobApi.User.Application.xml | 15 +++ /dev/null | 43 ---------- FlexJobApi.Core/settings.json | 11 ++ FlexJobApi.Core/FlexJobApiCoreStartup.cs | 2 FlexJobApi.Core/Utils/AliyunUtils/AliyunOptions.cs | 34 ++++++++ FlexJobApi.Core/Models/User/Auths/Queries/GetAliyunOSSAcsQuery.cs | 29 +++++++ FlexJobApi.User.Application/Auths/Queries/GetAliyunOSSAcsQueryHandler.cs | 27 ++++++ FlexJobApi.Core/FlexJobApi.Core.xml | 19 ++++ FlexJobApi.User.Application/Auths/AuthAppService.cs | 10 ++ FlexJobApi.Core/FlexJobApi.Core.csproj | 2 11 files changed, 189 insertions(+), 47 deletions(-) diff --git a/FlexJobApi.Core/FlexJobApi.Core.csproj b/FlexJobApi.Core/FlexJobApi.Core.csproj index 0575947..b6a8289 100644 --- a/FlexJobApi.Core/FlexJobApi.Core.csproj +++ b/FlexJobApi.Core/FlexJobApi.Core.csproj @@ -17,7 +17,7 @@ </ItemGroup> <ItemGroup> - <PackageReference Include="aliyun-net-sdk-core" Version="1.6.2" /> + <PackageReference Include="aliyun-net-sdk-core" Version="1.5.6" /> <PackageReference Include="Furion" Version="4.9.7.106" /> <PackageReference Include="Furion.Extras.Authentication.JwtBearer" Version="4.9.7.106" /> <PackageReference Include="Furion.Extras.ObjectMapper.Mapster" Version="4.9.7.106" /> diff --git a/FlexJobApi.Core/FlexJobApi.Core.xml b/FlexJobApi.Core/FlexJobApi.Core.xml index ea137e5..41ce047 100644 --- a/FlexJobApi.Core/FlexJobApi.Core.xml +++ b/FlexJobApi.Core/FlexJobApi.Core.xml @@ -1974,9 +1974,9 @@ 鍒锋柊浠ょ墝 </summary> </member> - <member name="T:FlexJobApi.Core.GetOssSTSQuery"> + <member name="T:FlexJobApi.Core.GetAliyunOSSAcsQuery"> <summary> - + 鑾峰彇闃块噷浜慜SS鎺堟潈淇℃伅 </summary> </member> <member name="T:FlexJobApi.Core.DeleteMenuCommand"> @@ -2769,6 +2769,21 @@ 鏈�浣庣骇鍒� </summary> </member> + <member name="T:FlexJobApi.Core.AliyunOptions"> + <summary> + 闃块噷浜戦厤缃� + </summary> + </member> + <member name="T:FlexJobApi.Core.AliyunOSSOptions"> + <summary> + 闃块噷浜戦厤缃� + </summary> + </member> + <member name="T:FlexJobApi.Core.AliyunOSSUtils"> + <summary> + 闃块噷浜慜SS宸ュ叿 + </summary> + </member> <member name="M:FlexJobApi.Core.CollectionUtils.DistinctAdd``1(System.Collections.Generic.List{``0},``0,System.Collections.Generic.IEqualityComparer{``0})"> <summary> 鍘婚噸娣诲姞 diff --git a/FlexJobApi.Core/FlexJobApiCoreStartup.cs b/FlexJobApi.Core/FlexJobApiCoreStartup.cs index eec79a6..f52f125 100644 --- a/FlexJobApi.Core/FlexJobApiCoreStartup.cs +++ b/FlexJobApi.Core/FlexJobApiCoreStartup.cs @@ -41,6 +41,8 @@ options.WithStackFrame = true; }); + services.AddConfigurableOptions<AliyunOptions>(); + services.AddComponent<EventBusServiceComponent>(); services.AddComponent<DistributedCacheServiceComponent>(); diff --git a/FlexJobApi.Core/Models/User/Auths/Queries/GetAliyunOSSAcsQuery.cs b/FlexJobApi.Core/Models/User/Auths/Queries/GetAliyunOSSAcsQuery.cs new file mode 100644 index 0000000..628cc0b --- /dev/null +++ b/FlexJobApi.Core/Models/User/Auths/Queries/GetAliyunOSSAcsQuery.cs @@ -0,0 +1,29 @@ +锘縰sing MediatR; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FlexJobApi.Core +{ + /// <summary> + /// 鑾峰彇闃块噷浜慜SS鎺堟潈淇℃伅 + /// </summary> + public class GetAliyunOSSAcsQuery : IRequest<GetAliyunOSSAcsQueryResult> + { + } + + public class GetAliyunOSSAcsQueryResult + { + public string Expiration { get; set; } + + public string OssAccessSecret { get; set; } + + public string OssAccessKeyId { get; set; } + + public string SecurityToken { get; set; } + + public string RequestId { get; set; } + } +} diff --git a/FlexJobApi.Core/Models/User/Auths/Queries/GetOssSTSQuery.cs b/FlexJobApi.Core/Models/User/Auths/Queries/GetOssSTSQuery.cs deleted file mode 100644 index 3b6133a..0000000 --- a/FlexJobApi.Core/Models/User/Auths/Queries/GetOssSTSQuery.cs +++ /dev/null @@ -1,21 +0,0 @@ -锘縰sing MediatR; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace FlexJobApi.Core -{ - /// <summary> - /// - /// </summary> - public class GetOssSTSQuery : IRequest<GetOssSTSQueryResult> - { - } - - public class GetOssSTSQueryResult - { - - } -} diff --git a/FlexJobApi.Core/Utils/AliyunUtils/AliyunOSSUtils.cs b/FlexJobApi.Core/Utils/AliyunUtils/AliyunOSSUtils.cs new file mode 100644 index 0000000..43ad92f --- /dev/null +++ b/FlexJobApi.Core/Utils/AliyunUtils/AliyunOSSUtils.cs @@ -0,0 +1,44 @@ +锘縰sing Aliyun.Acs.Core; +using Aliyun.Acs.Core.Auth.Sts; +using Aliyun.Acs.Core.Http; +using Aliyun.Acs.Core.Profile; +using Furion; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static System.Runtime.InteropServices.JavaScript.JSType; + +namespace FlexJobApi.Core +{ + /// <summary> + /// 闃块噷浜慜SS宸ュ叿 + /// </summary> + public static class AliyunOSSUtils + { + public static GetAliyunOSSAcsQueryResult GetOSSAcs() + { + var options = App.GetOptions<AliyunOptions>().OSS; + IClientProfile profile = DefaultProfile.GetProfile(options.RegionId, options.AccessKeyId, options.AccessSecret); + DefaultAcsClient client = new DefaultAcsClient(profile); + AssumeRoleRequest request = new AssumeRoleRequest(); + + request.Method = MethodType.POST; + request.RoleArn = options.RoleArn; + request.RoleSessionName = options.RoleSessionName; + request.Policy = options.Policy; + request.DurationSeconds = options.DurationSeconds; + AssumeRoleResponse response = client.GetAcsResponse(request); + var result = new GetAliyunOSSAcsQueryResult() + { + Expiration = response.Credentials.Expiration, + OssAccessKeyId = response.Credentials.AccessKeyId, + OssAccessSecret = response.Credentials.AccessKeySecret, + SecurityToken = response.Credentials.SecurityToken, + RequestId = response.RequestId + }; + return result; + } + } +} diff --git a/FlexJobApi.Core/Utils/AliyunUtils/AliyunOptions.cs b/FlexJobApi.Core/Utils/AliyunUtils/AliyunOptions.cs new file mode 100644 index 0000000..9fbbb23 --- /dev/null +++ b/FlexJobApi.Core/Utils/AliyunUtils/AliyunOptions.cs @@ -0,0 +1,34 @@ +锘縰sing Furion.ConfigurableOptions; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FlexJobApi.Core +{ + /// <summary> + /// 闃块噷浜戦厤缃� + /// </summary> + public class AliyunOptions : IConfigurableOptions + { + public AliyunOSSOptions OSS { get; set; } + } + + /// <summary> + /// 闃块噷浜戦厤缃� + /// </summary> + public class AliyunOSSOptions + { + public string AccessKeyId { get; set; } + public string AccessSecret { get; set; } + public string RegionId { get; set; } + public string Endpoint { get; set; } + public string BucketName { get; set; } + public string Url { get; set; } + public string RoleArn { get; set; } + public string RoleSessionName { get; set; } + public string Policy { get; set; } + public int DurationSeconds { get; set; } + } +} diff --git a/FlexJobApi.Core/settings.json b/FlexJobApi.Core/settings.json index 3112297..c72356f 100644 --- a/FlexJobApi.Core/settings.json +++ b/FlexJobApi.Core/settings.json @@ -55,7 +55,16 @@ }, "Aliyun": { "OSS": { - + "AccessKeyId": "LTAI4GAdJ88mUMMFBHHiyDmS", + "AccessSecret": "NX3AmjOcGkJ8bncQfIVxqmifBWkI0E", + "RegionId": "cn-hangzhou", + "Endpoint": "http://oss-cn-hangzhou.aliyuncs.com", + "BucketName": "waterdroptest2", + "Url": "https://waterdroptest2.oss-cn-hangzhou.aliyuncs.com/", + "RoleArn": "acs:ram::1483797030072898:role/boleoss", + "RoleSessionName": "SessionTest", + "Policy": "{\"Version\":\"1\",\"Statement\":[{\"Effect\":\"Allow\",\"Action\":\"oss:PutObject\",\"Resource\":[\"acs:oss:*:*:waterdroptest2/*\",\"acs:oss:*:*:parkmanagement/*\",\"acs:oss:*:*:jurenlian/*\"]}]}", + "DurationSeconds": 3600 } } } \ No newline at end of file diff --git a/FlexJobApi.User.Application/Auths/AuthAppService.cs b/FlexJobApi.User.Application/Auths/AuthAppService.cs index 5e40ef7..a2aed20 100644 --- a/FlexJobApi.User.Application/Auths/AuthAppService.cs +++ b/FlexJobApi.User.Application/Auths/AuthAppService.cs @@ -17,6 +17,16 @@ private readonly IMediator mediator = mediator; /// <summary> + /// 鑾峰彇闃块噷浜慜SS鎺堟潈淇℃伅 + /// </summary> + /// <returns></returns> + [AllowAnonymous] + public Task<GetAliyunOSSAcsQueryResult> GetAliyunOSSAcs() + { + return mediator.Send(new GetAliyunOSSAcsQuery()); + } + + /// <summary> /// 瀵嗙爜鐧诲綍 /// </summary> /// <param name="command"></param> diff --git a/FlexJobApi.User.Application/Auths/Queries/GetAliyunOSSAcsQueryHandler.cs b/FlexJobApi.User.Application/Auths/Queries/GetAliyunOSSAcsQueryHandler.cs new file mode 100644 index 0000000..d061916 --- /dev/null +++ b/FlexJobApi.User.Application/Auths/Queries/GetAliyunOSSAcsQueryHandler.cs @@ -0,0 +1,27 @@ +锘縰sing Aliyun.Acs.Core; +using Aliyun.Acs.Core.Auth.Sts; +using Aliyun.Acs.Core.Http; +using Aliyun.Acs.Core.Profile; +using FlexJobApi.Core; +using Furion; +using MediatR; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FlexJobApi.User.Application +{ + /// <summary> + /// 鑾峰彇闃块噷浜慜SS鎺堟潈淇℃伅 + /// </summary> + public class GetAliyunOSSAcsQueryHandler : IRequestHandler<GetAliyunOSSAcsQuery, GetAliyunOSSAcsQueryResult> + { + /// <inheritdoc/> + public Task<GetAliyunOSSAcsQueryResult> Handle(GetAliyunOSSAcsQuery request, CancellationToken cancellationToken) + { + return Task.FromResult(AliyunOSSUtils.GetOSSAcs()); + } + } +} diff --git a/FlexJobApi.User.Application/Auths/Queries/GetOssSTSQueryHandler.cs b/FlexJobApi.User.Application/Auths/Queries/GetOssSTSQueryHandler.cs deleted file mode 100644 index bdc1318..0000000 --- a/FlexJobApi.User.Application/Auths/Queries/GetOssSTSQueryHandler.cs +++ /dev/null @@ -1,43 +0,0 @@ -锘縰sing Aliyun.Acs.Core; -using Aliyun.Acs.Core.Auth.Sts; -using Aliyun.Acs.Core.Http; -using Aliyun.Acs.Core.Profile; -using FlexJobApi.Core; -using MediatR; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace FlexJobApi.User.Application -{ - /// <summary> - /// - /// </summary> - //public class GetOssSTSQueryHandler : IRequestHandler<GetOssSTSQuery, GetOssSTSQueryResult> - //{ - // public Task<GetOssSTSQueryResult> Handle(GetOssSTSQuery request, CancellationToken cancellationToken) - // { - // IClientProfile profile = DefaultProfile.GetProfile(regionId, ossSettings.OssAccessKeyId, ossSettings.OssAccessSecret); - // DefaultAcsClient client = new DefaultAcsClient(profile); - // AssumeRoleRequest request = new AssumeRoleRequest(); - - // request.Method = MethodType.POST; - - // request.RoleArn = ossSettings.OssRoleRan; - // request.RoleSessionName = RoleSessionName; - // request.Policy = PolicyFile; - // request.DurationSeconds = TokenExpireTime; - // AssumeRoleResponse response = client.GetAcsResponse(request); - // OssSTSReponse result = new OssSTSReponse() - // { - // Expiration = response.Credentials.Expiration, - // OssAccessKeyId = response.Credentials.AccessKeyId, - // OssAccessSecret = response.Credentials.AccessKeySecret, - // SecurityToken = response.Credentials.SecurityToken, - // RequestId = response.RequestId - // }; - // } - //} -} diff --git a/FlexJobApi.User.Application/FlexJobApi.User.Application.xml b/FlexJobApi.User.Application/FlexJobApi.User.Application.xml index 8ccf9d9..0978003 100644 --- a/FlexJobApi.User.Application/FlexJobApi.User.Application.xml +++ b/FlexJobApi.User.Application/FlexJobApi.User.Application.xml @@ -14,6 +14,13 @@ 璁よ瘉 </summary> </member> + <member name="M:FlexJobApi.User.Application.AuthAppService.GetAliyunOSSAcs(FlexJobApi.Core.GetAliyunOSSAcsQuery)"> + <summary> + 鑾峰彇闃块噷浜慜SS鎺堟潈淇℃伅 + </summary> + <param name="query"></param> + <returns></returns> + </member> <member name="M:FlexJobApi.User.Application.AuthAppService.PasswordLogin(FlexJobApi.Core.PasswordLoginCommand)"> <summary> 瀵嗙爜鐧诲綍 @@ -34,6 +41,14 @@ <member name="M:FlexJobApi.User.Application.PasswordLoginCommandHandler.Handle(FlexJobApi.Core.PasswordLoginCommand,System.Threading.CancellationToken)"> <inheritdoc/> </member> + <member name="T:FlexJobApi.User.Application.GetAliyunOSSAcsQueryHandler"> + <summary> + 鑾峰彇闃块噷浜慜SS鎺堟潈淇℃伅 + </summary> + </member> + <member name="M:FlexJobApi.User.Application.GetAliyunOSSAcsQueryHandler.Handle(FlexJobApi.Core.GetAliyunOSSAcsQuery,System.Threading.CancellationToken)"> + <inheritdoc/> + </member> <member name="F:FlexJobApi.User.Application.EnumUserErrorCodeType.u1000"> <summary> 璐﹀彿鎴栧瘑鐮佷笉瀛樺湪 -- Gitblit v1.9.1