1234567891011121314151617181920212223242526272829303132333435363738394041 |
- /*
- * Copyright (C) Alibaba Cloud Computing
- * All rights reserved.
- *
- * 版权所有 (C)阿里云计算有限公司
- */
- using System;
- using Aliyun.OSS.Common.Authentication;
- using Aliyun.OSS.Common.Communication;
- using Aliyun.OSS.Util;
- namespace Aliyun.OSS.Util
- {
- internal class OssRequestSigner : IRequestSigner
- {
- private readonly string _resourcePath;
- public OssRequestSigner(String resourcePath)
- {
- _resourcePath = resourcePath;
- }
-
- public void Sign(ServiceRequest request, ICredentials credentials)
- {
- var accessKeyId = credentials.AccessKeyId;
- var accessKeySecret = credentials.AccessKeySecret;
- var httpMethod = request.Method.ToString().ToUpperInvariant();
- // Because the resource path to is different from the one in the request uri,
- // can't use ServiceRequest.ResourcePath here.
- var resourcePath = _resourcePath;
- if (!string.IsNullOrEmpty(accessKeySecret))
- {
- var canonicalString = SignUtils.BuildCanonicalString(httpMethod, resourcePath, request);
- var signature = ServiceSignature.Create().ComputeSignature(accessKeySecret, canonicalString);
-
- request.Headers.Add(HttpHeaders.Authorization, "OSS " + accessKeyId + ":" + signature);
- }
- }
- }
- }
|