Skip to content

Enable token renewal through pathway cloning #28

@nicoweil

Description

@nicoweil

Tokens renewal was a popular SVTA meeting discussion topic, and we converged on the idea that using Content Steering to provide this functionality would be very convenient. If tokenization is done through query string parameters, we don't need anything more than what we have in the spec already, as we have "URI-REPLACEMENT.PARAMS where we can transport the new token when doing the pathway cloning.

However, when we need to transport the token in the path (as first sub-path after the hostname) - which is the preferred method to secure access to both manifests and segments without rewriting the manifests - this doesn't work anymore, as the pathway cloning would need to provide new paths for the representations. As an example, we would like to transform
https://www.example.com/< OLD-TOKEN >/path/to/content/
into
https://www.example.com/< NEW-TOKEN >/path/to/content/

In the HLS steering spec we would be doing that through URI-REPLACEMENT.PER-VARIANT-URIS and URI-REPLACEMENT.PER-RENDITION-URIS. In the DASH-IF steering spec we don't have an equivalent solution. Please note that we don't want to store < OLD-TOKEN > or < NEW-TOKEN > in the BaseURL element in manifests, as that would imply manifest manipulation per end-user (which we want to avoid).

There are multiple problems to solve here:

  • how to transport the tokens through steering server responses: URI-REPLACEMENT.PER-VARIANT-URIS and URI-REPLACEMENT.PER-RENDITION-URIS don't really work well with DASH as multiple representations are grouped in adaptation sets
  • the first URI sub-path where we transport < OLD-TOKEN > and < NEW-TOKEN > is not surfaced in the manifests, but just vended to the player with the initial MPD url when the playback session starts. The player would keep it in consideration when crafting the new urls as a consequence of the pathway cloning instructions, so we would need a mechanism (redirect?) to tell the player that it needs to update it with the < NEW-TOKEN > value.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions