全部产品
阿里云办公

授权访问

更新时间:2018-07-24 18:22:05

使用签名URL进行临时授权

您可以将生成的签名URL提供给访客进行临时访问。生成签名URL时,您可以指定URL的过期时间,来限制访客的访问时长。授权访问的完整代码请参见GitHub

生成下载的签名URL

以下代码用于生成下载的签名URL:

  1. <?php
  2. if (is_file(__DIR__ . '/../autoload.php')) {
  3. require_once __DIR__ . '/../autoload.php';
  4. }
  5. if (is_file(__DIR__ . '/../vendor/autoload.php')) {
  6. require_once __DIR__ . '/../vendor/autoload.php';
  7. }
  8. use OSS\OssClient;
  9. use OSS\Core\OssException;
  10. use OSS\Http\RequestCore;
  11. use OSS\Http\ResponseCore;
  12. // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
  13. $accessKeyId = "<yourAccessKeyId>";
  14. $accessKeySecret = "<yourAccessKeySecret>";
  15. // Endpoint以杭州为例,其它Region请按实际情况填写。
  16. $endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  17. $bucket= "<yourBucketName>";
  18. $object = "<yourObjectName>";
  19. $securityToken = "<yourSecurityToken>";
  20. // 设置URL的有效期为3600秒。
  21. $timeout = 3600;
  22. try {
  23. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint, false, $securityToken);
  24. // 生成GetObject的签名URL。
  25. $signedUrl = $ossClient->signUrl($bucket, $object, $timeout);
  26. } catch (OssException $e) {
  27. printf(__FUNCTION__ . ": FAILED\n");
  28. printf($e->getMessage() . "\n");
  29. return;
  30. }
  31. print(__FUNCTION__ . ": signedUrl: " . $signedUrl . "\n");
  32. // 可以使用代码来访问签名的URL,也可以输入到浏览器中进行访问。
  33. $request = new RequestCore($signedUrl);
  34. // 生成的URL默认以GET方式访问。
  35. $request->set_method('GET');
  36. $request->add_header('Content-Type', '');
  37. $request->send_request();
  38. $res = new ResponseCore($request->get_response_header(), $request->get_response_body(), $request->get_response_code());
  39. if ($res->isOK()) {
  40. print(__FUNCTION__ . ": OK" . "\n");
  41. } else {
  42. print(__FUNCTION__ . ": FAILED" . "\n");
  43. };

生成上传的签名URL

以下代码用于生成上传的签名URL:

  1. <?php
  2. if (is_file(__DIR__ . '/../autoload.php')) {
  3. require_once __DIR__ . '/../autoload.php';
  4. }
  5. if (is_file(__DIR__ . '/../vendor/autoload.php')) {
  6. require_once __DIR__ . '/../vendor/autoload.php';
  7. }
  8. use OSS\OssClient;
  9. use OSS\Core\OssException;
  10. use OSS\Http\RequestCore;
  11. use OSS\Http\ResponseCore;
  12. // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
  13. $accessKeyId = "<yourAccessKeyId>";
  14. $accessKeySecret = "<yourAccessKeySecret>";
  15. // Endpoint以杭州为例,其它Region请按实际情况填写。
  16. $endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  17. $bucket= "<yourBucketName>";
  18. $object = "<yourObjectName>";
  19. $securityToken = "<yourSecurityToken>";
  20. $timeout = 3600;
  21. try {
  22. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint, false, $securityToken);
  23. // 生成PutObject的签名URL。
  24. $signedUrl = $ossClient->signUrl($bucket, $object, $timeout, "PUT");
  25. } catch (OssException $e) {
  26. printf(__FUNCTION__ . ": FAILED\n");
  27. printf($e->getMessage() . "\n");
  28. return;
  29. }
  30. print(__FUNCTION__ . ": signedUrl: " . $signedUrl . "\n");
  31. $content = "Hello OSS.";
  32. $request = new RequestCore($signedUrl);
  33. // 生成的URL以PUT方式访问。
  34. $request->set_method('PUT');
  35. $request->add_header('Content-Type', '');
  36. $request->add_header('Content-Length', strlen($content));
  37. $request->set_body($content);
  38. $request->send_request();
  39. $res = new ResponseCore($request->get_response_header(),
  40. $request->get_response_body(), $request->get_response_code());
  41. if ($res->isOK()) {
  42. print(__FUNCTION__ . ": OK" . "\n");
  43. } else {
  44. print(__FUNCTION__ . ": FAILED" . "\n");
  45. };

使用STS进行临时授权

您可以通过STS(Security Token Service)进行临时授权访问。更多有关STS的内容请参见访问控制API参考(STS)中的简介。关于账号及授权的详细信息请参见最佳实践中的STS临时授权访问

以下代码用于使用STS临时授权上传文件:

  1. <?php
  2. if (is_file(__DIR__ . '/../autoload.php')) {
  3. require_once __DIR__ . '/../autoload.php';
  4. }
  5. if (is_file(__DIR__ . '/../vendor/autoload.php')) {
  6. require_once __DIR__ . '/../vendor/autoload.php';
  7. }
  8. use OSS\OssClient;
  9. use OSS\Core\OssException;
  10. // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
  11. $accessKeyId = "<yourAccessKeyId>";
  12. $accessKeySecret = "<yourAccessKeySecret>";
  13. // Endpoint以杭州为例,其它Region请按实际情况填写。
  14. $endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  15. $bucket= "<yourBucketName>";
  16. $object = "<yourObjectName>";
  17. $securityToken = "<yourSecurityToken>";
  18. $content = "Hi, OSS.";
  19. try {
  20. $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint, false, $securityToken);
  21. $ossClient->putObject($bucket, $object, $content);
  22. } catch (OssException $e) {
  23. print $e->getMessage();
  24. }
本文导读目录