AWSCloudFrontSigner 0.1.1

AWSCloudFrontSigner 0.1.1

Mark Berner 维护。



  • Mark Berner

AWSCloudFrontSigner

此软件包提供了一种方便的方法来访问 AWS CloudFront 受保护的内容。

访问 AWS CloudFront 受保护内容有两种方式:通过签名 URL 或通过签名 Cookie。

当前此软件包只提供签名 Cookie 访问方法。

先决条件

如果您已经有了 CloudFront 发布,您需要通过私钥来保护它。

https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-signed-cookies.html

  1. 创建私钥并存储在应用程序中

    openssl genrsa -out private.pem 2048

    此密钥将被用于初始化 CookiesSigner

  2. 创建公钥并将其上传到 CloudFront 控制台。

    openssl rsa -in private.pem -outform PEM -pubout -out public.pem

    上传完成后,您将获得公钥 ID。此 ID 将用于初始化 CookiesSigner(keyPairId 参数)

使用方法

首先创建一个 CookiesSigner 实例,如下面的示例所示。

let signer = CookiesSigner(resourceUrl: resourceUrl, keyPairId: "K1234567890120", privateKey: "PRIVATE KEY")

然后使用 signer 的其中一种方法获取已签名的对象

  1. 为 HTTP 请求创建签名 Cookie

    let cookies = try signer.makeCookies()

  2. 使用签名 Cookie 创建 HTTP 请求

    let request = try signer.makeURLRequest()

  3. 使用签名 Cookie 创建 AVURLAsset

    let asset = try signer.AVURLAsset()

签名Cookies的参数

  • resourceUrl: 需要访问的主要资源。
  • policyResource: 将设置为策略的资源名称。可选。如果没有提供resourceUrl,则将使用resourceUrl。
  • dateLessThan: 自定义策略的dateLessThan参数。可选。如果没有提供,将使用当前日期加一分钟。
  • dateGreaterThan: 自定义策略的dateGreaterThan参数。可选。
  • ipAddress: 自定义策略的ipAddress参数。可选。
  • domain: Cookie的domain参数。可选。如果没有提供,将使用resourceUrl.host。
  • path: Cookie的path参数。可选。如果没有提供,将使用"/"。
  • policy: 用户提供的策略字符串。可选。此参数将覆盖基于参数自动构建的策略:policyResource、dateLessThan、dateGreaterThan、ipAddress。
  • keyPairId: 在CloudFront控制台注册的公钥ID。
  • privateKey: base64格式的私钥,不包含头部和尾部。可选。如果没有提供,将使用privateKeyFile或secKey。
  • privateKeyFile: 包含私钥的base64格式文件的路径。可选。如果没有提供,将使用privateKey或secKey。
  • secKey: SecKey对象实例。此参数将覆盖privateKey和privateKeyFile。

安装

AWSCloudFrontSigner通过CocoaPods提供。要安装它,只需将以下行添加到您的Podfile中。

pod "AWSCloudFrontSigner"

作者

Mark Berner, [email protected]

许可证

AWSCloudFrontSigner可在MIT许可证下使用。有关更多信息,请参阅LICENSE文件。