阿里雲團隊努力不懈,力求將最新的技術內容更快地以您最熟悉的語言呈現。本文由簡體中文內容自動轉碼而成,過程無人工干預。阿里雲不保證此自動轉碼的準確性、完整性及時效性。因轉碼造成的任何內容錯誤及因此可能帶來的損失,阿里雲概不負責,敬請見諒。本文内容請以簡體中文版本為準。
全部產品
Search
文件中心

授權訪問

更新時間: Oct 19, 2018

使用URL簽名授權訪問

生成簽名URL

通過生成簽名URL的形式提供給使用者一個臨時的訪問URL。在生成URL時,您可以指定URL過期的時間,從而限制使用者長時間訪問。

生成一個簽名的URL

代碼如下:

  1. var req = new GeneratePresignedUriRequest(bucketName, key, SignHttpMethod.Get)
  2. {
  3. Expiration = DateTime.Now.AddHours(1)
  4. };
  5. var uri = client.GeneratePresignedUri(req);

生成的URL預設以GET方式訪問,這樣,使用者可以直接通過瀏覽器訪問相關內容。

生成其他Http方法的URL

如果您想允許使用者臨時進行其他動作(比如上傳,刪除檔案),可能需要簽名其他方法的URL,如下:

  1. // 生成PUT方法的URL
  2. var req = new GeneratePresignedUriRequest(bucketName, key, SignHttpMethod.Put)
  3. {
  4. Expiration = DateTime.Now.AddHours(1),
  5. ContentType = "text/html"
  6. };
  7. var uri = client.GeneratePresignedUri(req);

使用簽名URL發送請求

現在.Net SDK支援Put Object和Get Object兩種方式的URL簽章要求。

使用URL簽名的方式Put Object

  1. var generatePresignedUriRequest = new GeneratePresignedUriRequest(bucketName, key, SignHttpMethod.Put);
  2. var signedUrl = client.GeneratePresignedUri(generatePresignedUriRequest);
  3. var result = client.PutObject(signedUrl, fileToUpload);

使用STS服務臨時授權

介紹

OSS可以通過阿里雲STS服務,臨時進行授權訪問。阿里雲STS (Security Token Service) 是為雲端運算使用者提供臨時存取權杖的Web服務。通過STS,您可以為第三方應用或聯邦使用者(使用者身份由您自己管理)頒發一個自訂時效和許可權的訪問憑證。第三方應用或聯邦使用者可以使用該訪問憑證直接調用阿里雲產品API,或者使用阿里雲產品提供的SDK來訪問雲產品API。

  • 您不需要透露您的長期密鑰(AccessKey)給第三方應用,只需要生成一個存取權杖並將令牌交給第三方應用即可。這個令牌的存取權限及有效期間限都可以由您自訂。
  • 您不需要關心許可權撤銷問題,存取權杖過期後就自動失效。

以APP應用為例,互動流程如下圖:

方案的詳細描述如下:

  1. App使用者登入。App使用者身份是客戶自己管理。客戶可以自訂身份管理系統,也可以使用外部Web帳號或OpenID。對於每個有效App使用者來說,AppServer是可以確切地定義出每個App使用者的最小存取權限。
  2. AppServer請求STS服務獲取一個安全性權杖(SecurityToken)。在調用STS之前,AppServer需要確定App使用者的最小存取權限(用Policy文法描述)以及授權的過期時間。然後通過調用STS的AssumeRole(扮演角色)介面來獲取安全性權杖。角色管理與使用相關內容請參考RAM使用指南中的角色管理
  3. STS返回給AppServer一個有效訪問憑證,包括一個安全性權杖(SecurityToken)、臨時存取金鑰(AccessKeyId, AccessKeySecret)以及過期時間。
  4. AppServer將訪問憑證返回給ClientApp。ClientApp可以緩存這個憑證。當憑證失效時,ClientApp需要向AppServer申請新的有效訪問憑證。比如,訪問憑證有效期間為1小時,那麼ClientApp可以每30分鐘向AppServer請求更新訪問憑證。
  5. ClientApp使用本機快取的訪問憑證去請求Aliyun Service API。雲端服務會感知STS訪問憑證,並會依賴STS服務來驗證訪問憑證,並正確響應使用者請求。

STS安全性權杖詳情,請參考《RAM使用指南》中的角色管理。關鍵是調用STS服務介面AssumeRole來獲取有效訪問憑證即可。也可以直接使用STS SDK來調用該方法。

使用STS憑證建構簽章請求

使用者的client端拿到STS臨時憑證後,通過其中安全性權杖(SecurityToken)以及臨時存取金鑰(AccessKeyId, AccessKeySecret)生成OssClient。以上傳檔案為例:

  1. string accessKeyId = "<accessKeyId>";
  2. string accessKeySecret = "<accessKeySecret>";
  3. string securityToken = "<securityToken>"
  4. // 以杭州為例
  5. string endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  6. var ossClient = new OssClient(endpoint, accessKeyId, accessKeySecret, securityToken);