Callaba

Signed URLs for Video: CDN Access, Expiry & DRM Limits | Callaba

Aug 08, 2026

A signed URL lets an edge or origin verify that one HTTP request matches an authorized resource and policy, usually including an expiry. It can reduce casual sharing and origin exposure, but it does not encrypt the video, control a browser's decoder or become DRM. For adaptive streaming, the policy must also cover the child playlists, segments, keys and retries a player actually requests.

A signed URL is an HTTP authorization decision

Signed URL video authorization flow A viewer authenticates with an application backend. The backend signs a resource and expiry using a protected key. The viewer sends the signed request to the CDN, which validates policy before serving a cached object or contacting the protected origin. DRM, when required, is a separate encryption and license path. VIEWERidentity + player AUTH BACKENDpolicy · path · expiryprotected signing key DRM LICENSEseparate when used CDN EDGEverify signaturescope + expirycache hit or origin ORIGINprivate media objects OPTIONAL DRM
The signing service decides who may receive an HTTP credential. The CDN enforces it per request. DRM, when needed, separately protects encrypted media through a key system and license policy.

Callaba has viewer access controls, but a general signed-delivery contract is separate

Callaba web players and groups support open, password, email-and-password and unique-credential access, with pay-per-view workflows available for live or recorded media. These controls protect the Callaba player experience. Callaba does not currently document a general CDN-style API that signs every HLS or DASH manifest, segment and key request for arbitrary external players.

RequirementAvailable Callaba pathAdditional boundary
Protect a Callaba playerUse the documented player, group or pay-per-view access modesTest viewer authorization and direct media exposure
Authorize CDN objectsNo general signed-object API is currently documentedUse a trusted signing backend and an enforcing CDN or origin
Apply DRM policyDo not infer DRM from a protected player URLPackage encrypted media and operate the selected key-system license flow

If Callaba's player access modes meet the requirement, use that narrower workflow. Add signed delivery when the architecture needs request-level control beyond the player page. Add DRM only when the rights policy calls for encrypted playback and license enforcement.

Define the signed policy before choosing parameters

A signing input normally covers a resource or path, expiry, key identifier and optional restrictions such as start time or client network. The exact canonical string and signature algorithm are provider-specific. Amazon CloudFront signed URLs, for example, validate a canned or custom policy and can restrict expiry, start time and IP range depending on the policy type.

Write the policy down before implementing it: which user can access which asset, whether variants share a path, how long playback and retries may continue, and what happens after logout or entitlement revocation. Never put a master signing key in the browser. The backend should authorize the account, build the exact policy and return only the viewer credential.

Sign the HLS or DASH request graph

An adaptive player first requests a top-level manifest, then child playlists or MPD references, initialization objects, media segments, subtitles and possibly keys. A token embedded only in the root query may disappear when relative child URLs are resolved or may not authorize a different hostname. Enumerate the graph under each packaging configuration.

Use a provider mechanism that fits many related objects: a path-scoped signed token, a signed cookie, manifest URL rewriting or another documented policy. Keep the cache key strategy deliberate. If a unique signature becomes part of the cache key, identical media can fragment into per-viewer cache entries; if signature parameters are excluded, the edge must still validate them before serving a cache hit.

Expiry must survive playback and retry behavior

The edge evaluates expiry on HTTP requests. A live player continues making new segment requests, so a token that expires during the session can cause a sequence of 403 responses even though the manifest was accepted earlier. CloudFront notes that each later range or retry request is checked at its own request time.

Set lifetime from actual playback behavior, clock skew, pause, seeking and reconnect requirements. Google Media CDN recommends a future timestamp at least one minute away or at least the stream duration, whichever is greater, for its signed-request model. That is provider guidance, not a universal value. Renew safely before expiry when long sessions require it, and test renewal without exposing a master credential.

Protect the origin as well as the CDN route

A perfect edge policy is bypassed if viewers can address a public origin directly. Restrict origin access to the CDN using the provider's supported identity, private network or origin authentication pattern. If the origin must validate a signature too, specify whether the CDN forwards the viewer token or uses a separate edge-to-origin credential.

Deny an unsigned request at both the public CDN hostname and the origin hostname during acceptance testing. Avoid relying on an obscure origin URL as protection. Monitor origin traffic for unexpected user agents, direct requests and authorization failures.

Rotate signing keys without interrupting viewers

Use named keys and a staged rotation: add the new verification key, begin issuing new signatures, wait for old credentials to expire, then remove the previous key. Maintain an emergency revocation path for a compromised signer. Separate signing permission from CDN configuration permission.

Log key ID, policy scope, issue time, expiry, decision and asset—not the private key or a reusable full URL. Limit log retention because signed URLs can remain bearer credentials until they expire.

A signed URL is not DRM

Signed delivery controls whether an HTTP request may retrieve an object. Once an authorized client receives clear media, the URL signature does not govern decoding or copying. It also does not create device security, output protection, offline-license policy or a content-decryption module.

W3C Encrypted Media Extensions defines browser APIs that interact with key systems and license/key exchange for encrypted content; the specification explicitly does not itself define one DRM system. A production DRM stack packages encrypted media and enforces key-system-specific license policy. Signed URLs and DRM can be combined, but neither substitutes for the other.

Plan for sharing, replay and revocation

A signed URL is usually a bearer credential: anyone who obtains it can use it while it remains valid and within its policy. Keep scope and lifetime narrow, use HTTPS, prevent referrer and analytics leakage where possible, and avoid placing long-lived tokens in support screenshots.

Immediate per-user revocation is difficult while a self-contained URL remains valid at distributed edges. Short lifetimes, session-bound token exchange or an online entitlement check reduce that window, but they add control-plane traffic. Treat that as an explicit tradeoff; signatures do not stop redistribution.

Example: the signed manifest loads, but every segment returns 403

The backend signs /movie/master.m3u8 for five minutes. The manifest contains relative variant and segment paths, but the CDN policy authorizes only that exact object and the token is not propagated. The player parses the root and then fails on the first child request. Capture the complete request graph and edge decision logs, replace the one-object policy with a documented path-scoped token or signed-cookie design, and keep the origin private. Verification loads each variant, subtitle and representative segment, renews the credential before expiry and confirms unsigned requests still fail. The signature was valid; its resource scope was wrong.

Use a signed-delivery acceptance test

  1. Map objects. List every hostname and resource requested during start, adaptation, seek and retry.
  2. Test policy. Accept the entitled asset and deny another asset, an altered path, expired token and wrong key ID.
  3. Test playback lifetime. Run through pause, long viewing, token renewal and post-expiry retries.
  4. Test caching. Confirm validation occurs for hits and misses without destroying cache efficiency.
  5. Test the origin. Prove direct unsigned origin access is unavailable.
  6. Test rotation. Overlap old and new verification keys, then retire the old key after its tokens expire.
  7. Test DRM separately. When required, deny a missing or invalid license even if CDN authorization succeeds.

Signed URLs for video FAQ

Does a signed URL encrypt the video?

No. It authorizes an HTTP request. Encryption and license enforcement require a separate media-protection design.

Should one signed HLS manifest URL be enough?

Usually not. The player also requests child playlists, segments, initialization data, subtitles and sometimes keys. The policy must cover the required graph.

Can a viewer share a signed URL?

Often yes while it remains valid and within its restrictions. Short scope, short lifetime and session controls reduce but do not eliminate that risk.

Does Callaba provide player access control?

Yes. Callaba documents several player and pay-per-view access modes. A general CDN signed-object API is a different contract and is not currently documented.

Design the CDN boundary Separate DRM from URL signing Review Callaba player access