AWSCloudFrontSigner
此软件包提供了一种方便的方法来访问 AWS CloudFront 受保护的内容。
访问 AWS CloudFront 受保护内容有两种方式:通过签名 URL 或通过签名 Cookie。
当前此软件包只提供签名 Cookie 访问方法。
先决条件
如果您已经有了 CloudFront 发布,您需要通过私钥来保护它。
-
创建私钥并存储在应用程序中
openssl genrsa -out private.pem 2048
此密钥将被用于初始化 CookiesSigner
-
创建公钥并将其上传到 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 的其中一种方法获取已签名的对象
-
为 HTTP 请求创建签名 Cookie
let cookies = try signer.makeCookies()
-
使用签名 Cookie 创建 HTTP 请求
let request = try signer.makeURLRequest()
-
使用签名 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文件。