Re: [Hls-interest] Accepting Playlist Variables via Query Parameter

Roger Pantos <rpantos@apple.com> Thu, 16 February 2023 22:53 UTC

Return-Path: <rpantos@apple.com>
X-Original-To: hls-interest@ietfa.amsl.com
Delivered-To: hls-interest@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id CB28EC1BE886 for <hls-interest@ietfa.amsl.com>; Thu, 16 Feb 2023 14:53:28 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.995
X-Spam-Level:
X-Spam-Status: No, score=-1.995 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, HTTPS_HTTP_MISMATCH=0.1, RCVD_IN_DNSWL_BLOCKED=0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=apple.com
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id OMEa7QGmK5bw for <hls-interest@ietfa.amsl.com>; Thu, 16 Feb 2023 14:53:27 -0800 (PST)
Received: from ma-mailsvcp-mx-lapp01.apple.com (ma-mailsvcp-mx-lapp01.apple.com [17.32.222.22]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 23779C14EB17 for <hls-interest@ietf.org>; Thu, 16 Feb 2023 14:53:27 -0800 (PST)
Received: from rn-mailsvcp-mta-lapp01.rno.apple.com (rn-mailsvcp-mta-lapp01.rno.apple.com [10.225.203.149]) by ma-mailsvcp-mx-lapp01.apple.com (Oracle Communications Messaging Server 8.1.0.20.20220923 64bit (built Sep 23 2022)) with ESMTPS id <0RQ700LP83L1T510@ma-mailsvcp-mx-lapp01.apple.com> for hls-interest@ietf.org; Thu, 16 Feb 2023 14:53:26 -0800 (PST)
X-Proofpoint-GUID: s6cNzDYhNjheNPK5hoHpCGQSMptwGBU5
X-Proofpoint-ORIG-GUID: s6cNzDYhNjheNPK5hoHpCGQSMptwGBU5
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.562, 18.0.930 definitions=2023-02-16_16:2023-02-16, 2023-02-16 signatures=0
X-Proofpoint-Spam-Details: rule=interactive_user_notspam policy=interactive_user score=0 spamscore=0 phishscore=0 mlxscore=0 malwarescore=0 suspectscore=0 mlxlogscore=999 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2302160195
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=apple.com; h=from : message-id : content-type : mime-version : subject : date : in-reply-to : cc : to : references; s=20180706; bh=lQ6W7XurBsC2X76K/Q4uNqSa0v4nw1GtZSkh/Iuqn+k=; b=UF19jA6kgai/SK1g3Z9yacs5uS5kZGJG1mwTQjxAUnN3K6UIitqLlqlwa+B4K4cIj5jl puHX/FCSUa0mYRf1HxFJlrYe8n8SpzMucLuekoEkfKsnm0VggSP3Bpjzy1uSASAKBnP4 3GEZ/+5Ky1m5CMMilpWh+rK8mbo5tKZLNy2mjBu8TW4dx5fohcK6YwOFABms+obrFi5t GUA054/svz7HpoeZd1ZCL614H0OsGBeLUCmFKpHGL4EYwOo8ntKhvr63aoaNP3KmMNwU +7WQfSkzaQONYdXKxMh5H0id4kogqiI3WGqSnsOpkAoeDrWXgtve97OJ3b0V0bMVv0lj sA==
Received: from rn-mailsvcp-policy-lapp01.rno.apple.com (rn-mailsvcp-policy-lapp01.rno.apple.com [17.179.253.18]) by rn-mailsvcp-mta-lapp01.rno.apple.com (Oracle Communications Messaging Server 8.1.0.20.20220923 64bit (built Sep 23 2022)) with ESMTPS id <0RQ7006JK3L1J8C0@rn-mailsvcp-mta-lapp01.rno.apple.com>; Thu, 16 Feb 2023 14:53:25 -0800 (PST)
Received: from process_milters-daemon.rn-mailsvcp-policy-lapp01.rno.apple.com by rn-mailsvcp-policy-lapp01.rno.apple.com (Oracle Communications Messaging Server 8.1.0.20.20220923 64bit (built Sep 23 2022)) id <0RQ700N003KJY300@rn-mailsvcp-policy-lapp01.rno.apple.com>; Thu, 16 Feb 2023 14:53:25 -0800 (PST)
X-Va-A:
X-Va-T-CD: 81ca60fce39c2560b6c4a7e5841f9b8f
X-Va-E-CD: 17cbd37963f201c3585a424e8dcebb83
X-Va-R-CD: f278800f206df4f2e809ef64c5001bcf
X-Va-ID: d063b4fa-d339-42a8-9e70-2afd2f398a41
X-Va-CD: 0
X-V-A:
X-V-T-CD: 81ca60fce39c2560b6c4a7e5841f9b8f
X-V-E-CD: 17cbd37963f201c3585a424e8dcebb83
X-V-R-CD: f278800f206df4f2e809ef64c5001bcf
X-V-ID: ba71ad4d-3591-4dcb-9604-24e6845cf4a8
X-V-CD: 0
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.562, 18.0.930 definitions=2023-02-16_16:2023-02-16, 2023-02-16 signatures=0
Received: from smtpclient.apple (unknown [17.234.71.4]) by rn-mailsvcp-policy-lapp01.rno.apple.com (Oracle Communications Messaging Server 8.1.0.20.20220923 64bit (built Sep 23 2022)) with ESMTPSA id <0RQ7010CA3L0MZ00@rn-mailsvcp-policy-lapp01.rno.apple.com>; Thu, 16 Feb 2023 14:53:24 -0800 (PST)
From: Roger Pantos <rpantos@apple.com>
Message-id: <63F471C9-DB86-49AB-9913-B86E226DED40@apple.com>
Content-type: multipart/alternative; boundary="Apple-Mail=_3B72C1AC-EB03-4917-803F-98E04D778689"
MIME-version: 1.0 (Mac OS X Mail 16.0 \(3731.500.161\))
Date: Thu, 16 Feb 2023 14:53:14 -0800
In-reply-to: <MW4PR11MB5910147B74B95286D98117B884759@MW4PR11MB5910.namprd11.prod.outlook.com>
Cc: "hls-interest@ietf.org" <hls-interest@ietf.org>
To: "Cava, Zachary" <zachary.cava=40disneystreaming.com@dmarc.ietf.org>
References: <E975179B-F25A-4E16-9B0F-9E6C680DB32D@apple.com> <AADFF6CA-8B57-468C-8D4A-F5F690E4B085@pyrmontbrewery.com.au> <6859E4AD-50DA-4D7D-80D7-EF65A3773EDD@apple.com> <SJ0PR11MB59193514FB78E58E73F5443684709@SJ0PR11MB5919.namprd11.prod.outlook.com> <8D5ADC0D-9217-47E1-B538-5E5B8E81F1FF@apple.com> <MW4PR11MB5910147B74B95286D98117B884759@MW4PR11MB5910.namprd11.prod.outlook.com>
X-Mailer: Apple Mail (2.3731.500.161)
Archived-At: <https://mailarchive.ietf.org/arch/msg/hls-interest/Spw1j3fT1k8WasJZmTqnSG8-lFk>
Subject: Re: [Hls-interest] Accepting Playlist Variables via Query Parameter
X-BeenThere: hls-interest@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: "Discussions about HTTP Live Streaming \(HLS\)." <hls-interest.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/hls-interest>, <mailto:hls-interest-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/hls-interest/>
List-Post: <mailto:hls-interest@ietf.org>
List-Help: <mailto:hls-interest-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/hls-interest>, <mailto:hls-interest-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 16 Feb 2023 22:53:29 -0000

Updating this thread with some news: we have incorporated support for this feature into iOS 16.4 (and parallel releases for tvOS and macOS). A formal update to https://datatracker.ietf.org/doc/html/draft-pantos-hls-rfc8216bis is in the works.

Here’s an example of the syntax:

Given a URL: https://example.com/playlist.m3u8?token=abc123&service=“Dingbats"

And a playlist:

#EXTM3U
#EXT-X-VERSION:8
#EXT-X-TARGETDURATION:6
#EXT-X-DEFINE:QUERYPARAM=“token”
#EXT-X-DEFINE:QUERYPARAM=“service”
#EXTINF 6,
Segment0.mp4?cdn-token={$token}&origin={$service}

The resolved segment URL will be https://example.com/Segment0.mp4?cdn-token=abc123&origin=“Dingbats"

You can try it out today with the iOS 16.4 seed that we made available earlier this week.


Roger.

> On Aug 26, 2022, at 11:35 AM, Cava, Zachary <zachary.cava=40disneystreaming.com@dmarc.ietf.org> wrote:
> 
> After I wrote that I heard from some other folks who pointed out that quoted strings aren't really significant in URL query parameters and feel somewhat artificial. Given that, I'm willing to reverse the rule and say instead that payload of the query parameter must not have quotes. (I do think that it should be a hard rule, one way or the other.)
> Agree with making it a hard rule, but I'd strongly advocate for query parameters not having quotes.
> 
> Agreed. So let's say both that the client will not search for a query parameter missing from the Media Playlist URL in the MVP URL, and also that QUERYPARAM variables in the MVP are eligible for IMPORT in the Media Playlist.
> Sounds great.
> 
> Regarding this part:
> 
> | 2) A playlist containing an EXT-X-DEFINE with a QUERYPARAM coming from a URL without such a query parameter will fail to pars
> 
> I got a question about whether we should make some provision for a default value for a variable that fails to import. I haven't heard of a compelling case for that, and generally I prefer to make subtle errors visible. But I wanted to put the question out there in case anyone wanted to argue for it.
> I omitted my initial response, but I agree with keeping this an error to prevent subtle integration misses similar to the reasoning I had on 2b.
> 
> Zack
> From: Roger Pantos <rpantos=40apple.com@dmarc.ietf.org>
> Sent: Friday, August 26, 2022 09:47
> To: Cava, Zachary <zachary.cava@disneystreaming.com>
> Cc: hls-interest@ietf.org <hls-interest@ietf.org>
> Subject: Re: [Hls-interest] Accepting Playlist Variables via Query Parameter
>  
> 
> 
>> On Aug 23, 2022, at 3:05 PM, Cava, Zachary <zachary.cava=40disneystreaming.com@dmarc.ietf.org <mailto:zachary.cava=40disneystreaming.com@dmarc.ietf.org>> wrote:
>> 
>> Hi Roger,
>> 
>> Great to hear the update from you, sorry it looks like my previous response got stuck in my drafts.
>> 
>> Net net, our previous investigations around security found there was no greater maliciousness permitted by allowing parameters via the query parameters than the body of the response. This was primarily due to our use of HTTPs only traffic though where any point or attack that gained the ability to manipulate the query parameters also gained the ability to modify the body. Similarly I concur with your comment on redirects.
>> 
>> For the constraints a few questions:
>> 
>> 1b) The payload of the query parameter in the URL must be a quoted string
>> By this do you mean the query parameter must look something like this: http://example.com/stream/mv.m3u8?myparam="value <https://nam12.safelinks.protection.outlook.com/?url=http%3A%2F%2Fexample.com%2Fstream%2Fmv.m3u8%3Fmyparam%3D%2522value&data=05%7C01%7Czachary.cava%40disneystreaming.com%7C1a1b4a7883a8409b234208da8782b977%7C65f03ca86d0a493e9e4ac85ac9526a03%7C0%7C0%7C637971292792533365%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=V9zTiqpb0u8N5xvNojOTyNEOfDAv%2F%2FoGhq9uF1AQ3ns%3D&reserved=0>"
>> Want to make sure I'm reading that right
> 
> After I wrote that I heard from some other folks who pointed out that quoted strings aren't really significant in URL query parameters and feel somewhat artificial. Given that, I'm willing to reverse the rule and say instead that payload of the query parameter must not have quotes. (I do think that it should be a hard rule, one way or the other.)
> 
>> 
>> 2b) (up for discussion)  if the query param is not present in a Media Playlist URL, we could look for it in its parent MVP URL.
>> I can go back and for on this one, while it might seem like a nice convenience, I can see implicit passing being more harmful than helpful. I think I would lean on the path of making things explicit to ensure all parties involved in the stream playout are participating and expecting the passing.
>> 
>> 4) A Media Playlist can IMPORT a variable that was defined by a QUERYPARAM in the Multivariant Playlist.
>> Agree this would be a great case and hopefully help some backwards compatibility aspects for anyone with existing media playlists. I'd almost go as far as saying this should be the explicit import signal in place of 2b.
> 
> Agreed. So let's say both that the client will not search for a query parameter missing from the Media Playlist URL in the MVP URL, and also that QUERYPARAM variables in the MVP are eligible for IMPORT in the Media Playlist.
> 
> Regarding this part:
> 
>>>> 2) A playlist containing an EXT-X-DEFINE with a QUERYPARAM coming from a URL without such a query parameter will fail to pars
> 
> I got a question about whether we should make some provision for a default value for a variable that fails to import. I haven't heard of a compelling case for that, and generally I prefer to make subtle errors visible. But I wanted to put the question out there in case anyone wanted to argue for it.
> 
> 
> Roger.
> 
>> 
>> Thanks,
>> Zack
>> 
>>  
>> From: Roger Pantos <rpantos=40apple.com@dmarc.ietf.org <mailto:rpantos=40apple.com@dmarc.ietf.org>>
>> Sent: Monday, August 22, 2022 17:40
>> To: Pyrmont Brewery <kev@pyrmontbrewery.com.au <mailto:kev@pyrmontbrewery.com.au>>
>> Cc: Cava, Zachary <zachary.cava@disneystreaming.com <mailto:zachary.cava@disneystreaming.com>>; hls-interest@ietf.org <mailto:hls-interest@ietf.org> <hls-interest@ietf.org <mailto:hls-interest@ietf.org>>; Jer Noble <jer.noble@apple.com <mailto:jer.noble@apple.com>>
>> Subject: Re: [Hls-interest] Accepting Playlist Variables via Query Parameter
>>  
>> I'm not sure if allowing query parameters from redirects opens up a much larger hole for ad blockers. If an ad blocker has the means to forge a 30x response from the content server, it seems like it could equally forge a 40x or similar for an ad asset request, which would cause that asset to be skipped.
>> 
>> 
>> Roger.
>> 
>>> On Aug 22, 2022, at 4:35 PM, Pyrmont Brewery <kev@pyrmontbrewery.com.au <mailto:kev@pyrmontbrewery.com.au>> wrote:
>>> 
>>> With 5 (obtains variables from redirects) just wondering if domain needs to be restricted (CORS like?) maybe not, but where I’m thinking here is if ad blockers, they can only proxy safari connections? (if not then they could modify the QUERYPARM and so any variables held en route)
>>> 
>>> Might be over thinking it
>>> Kev
>>> 
>>> 
>>>> On 23 Aug 2022, at 8:11 am, Roger Pantos <rpantos=40apple.com@dmarc.ietf.org <mailto:rpantos=40apple.com@dmarc.ietf.org>> wrote:
>>>> 
>>>> Okay, we looked this over from a security perspective and we didn’t see anything that requires trust that isn’t already inherently being granted. So that’s fine.
>>>> 
>>>> As I wrote earlier, we can see how this would be a useful addition, particularly where different parties are involved in producing vs. serving the playlists. There are some details that need to be nailed down, though. We would propose the following additional constraints:
>>>> 
>>>> 1) This adds a new attribute for EXT-X-DEFINE called QUERYPARAM. The value is a quoted string just like the existing NAME attribute. The QUERYPARAM value is the Variable Name; it must match a query parameter name in the URL. No other EXT-X-DEFINE can use the same Variable Name. URLs allow characters in query parameters that are not legal in HLS variables. Such characters must not be used in Variable Names.
>>>> 
>>>> 1b) The payload of the query parameter in the URL must be a quoted string
>>>> 
>>>> 2) A playlist containing an EXT-X-DEFINE with a QUERYPARAM coming from a URL without such a query parameter will fail to parse (just as the IMPORT case would). Except possibly for the case of:
>>>> 
>>>> 2b) (up for discussion)  if the query param is not present in a Media Playlist URL, we could look for it in its parent MVP URL.
>>>> 
>>>> 3) The value of the query parameter will NOT be percent-decoded before performing variable substitution in the playlist. (I’ve gone back and forth on this one. On one hand, percent-decoding would enable variable replacement of certain special characters. On the other, the target of variable replacement is most often a URL itself, where values should be percent-encoded. And, I’d like to avoid the complexity of requiring the client to know if variable replacement is being done inside a URL or not.)
>>>> 
>>>> 4) A Media Playlist can IMPORT a variable that was defined by a QUERYPARAM in the Multivariant Playlist.
>>>> 
>>>> 5) If the URL is redirected, the client will look for the query parameter in the 30x response URL
>>>> 
>>>> 6) Pathway cloning manifests allow PARAMS. Replacement of pathway-defined query parameters would apply AFTER playlist variable substitution.
>>>> 
>>>> 
>>>> Roger.
>>>> 
>>>>> On Jul 26, 2022, at 2:46 PM, Roger Pantos <rpantos=40apple.com@dmarc.ietf.org <mailto:rpantos=40apple.com@dmarc.ietf.org>> wrote:
>>>>> 
>>>>> Hi Zach. We've been discussing this internally since last week. I can clearly see how we could map query parameters into EXT-X-DEFINE imports. One concern I have is any new attack vectors it might open up. 
>>>>> 
>>>>> Have you guys done any threat analysis on this sort of approach, or ran it past any security experts (at W3C or elsewhere)?
>>>>> 
>>>>> Is there an existing precedent for this kind of processing? (It wouldn't necessarily have to be in streaming.)
>>>>> 
>>>>> 
>>>>> thanks,
>>>>> 
>>>>> Roger.
>>>>> 
>>>>>> On Jul 21, 2022, at 3:49 PM, Cava, Zachary <zachary.cava=40disneystreaming.com@dmarc.ietf.org <mailto:zachary.cava=40disneystreaming.com@dmarc.ietf.org>> wrote:
>>>>>> 
>>>>>> Hi Everyone,
>>>>>> 
>>>>>> In continued discussions around interoperability of DASH and HLS, a question has been raised about bringing great scale interoperability to Playlist variables.
>>>>>> 
>>>>>> By way of background, a common industry use case is to provide token authentication to manifest / playlists and all subsequent resources. A common pattern to enable this is for the primary token to be attached to the manifest / playlist URI and to use real-time generation / manipulation to carry the token through to other URIs present in the document (and subsequent documents). This is typically done in place of headers / cookies as they are not available across all serving scenarios and environments. While this approach functionally works, a more ideal state would be the ability to semantically describe in the manifest / playlist how to copy tokens from the document source URI to a subsequent URI described in the document. Doing this would allow for highly cacheable manifest / playlist files in place of real-time manipulation providing better scalability.
>>>>>> 
>>>>>> This capability is enabled in DASH by the Annex I Flexible Insertion of URL Parameters functionality which introduces an element that describes how to the player how to build query strings and which subsequent requests to attach the query string to. This looks something like:
>>>>>> 
>>>>>> MPD URI: https://cdn.example.com/content/content.mpd?token=12345 <https://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcdn.example.com%2Fcontent%2Fcontent.mpd%3Ftoken%3D12345&data=05%7C01%7Czachary.cava%40disneystreaming.com%7C1a1b4a7883a8409b234208da8782b977%7C65f03ca86d0a493e9e4ac85ac9526a03%7C0%7C0%7C637971292792533365%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=4IN929w3V%2BBMiQ1j6OEoVz3zmooJIwzfRFyuleMFL5k%3D&reserved=0>
>>>>>> MPD Body:
>>>>>> 
>>>>>> <MPD ...>
>>>>>>     <EssentialProperty schemeIdUri="urn:mpeg:dash:urlparam:2014" xmlns:up="urn:mpeg:dash:schema:urlparam:2014">
>>>>>>         <up:ExtUrlQueryInfo includeInRequests="segment steering" queryTemplate="token=$query:token$" useMPDUrlQuery="true"/>
>>>>>>     </EssentialProperty>
>>>>>>     <Period>...</Period>
>>>>>>     ...
>>>>>> </MPD>
>>>>>> 
>>>>>> In HLS the Playlist variables introduced with the EXT-X-DEFINE tag provide the ability to pull variables from the Multi-Variant to the Variant. Our question is if this could be extended to allow playlists to pull from the playlist URIs?
>>>>>> 
>>>>>> Conceptually this could look something like the following:
>>>>>> 
>>>>>> MV URI: https://cdn.example.com/content/mv.m3u8?token=12345 <https://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcdn.example.com%2Fcontent%2Fmv.m3u8%3Ftoken%3D12345&data=05%7C01%7Czachary.cava%40disneystreaming.com%7C1a1b4a7883a8409b234208da8782b977%7C65f03ca86d0a493e9e4ac85ac9526a03%7C0%7C0%7C637971292792533365%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=zdr6ieVsDg5qTcRbjrQHLKtbqHgmfv7NR1YAdvNA9ug%3D&reserved=0>
>>>>>> MV Body:
>>>>>> 
>>>>>> #EXTM3U
>>>>>> #EXT-X-DEFINE:QUERYPARAM="token"
>>>>>> #EXT-X-CONTENT-STEERING:SERVER-URI="/steering?token={$token}"
>>>>>> #EXT-X-STREAM-INF:BANDWIDTH=8000000,PATHWAY-ID="CDN-A"
>>>>>> high/variant.m3u8?token={$token}
>>>>>> #EXT-X-STREAM-INF:BANDWIDTH=4500000,PATHWAY-ID="CDN-B"
>>>>>> high/variant.m3u8?token={$token}
>>>>>> ...
>>>>>> 
>>>>>> Variant URI: https://cdn.example.com/content/high/variant.m3u8?token=12345 <https://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcdn.example.com%2Fcontent%2Fhigh%2Fvariant.m3u8%3Ftoken%3D12345&data=05%7C01%7Czachary.cava%40disneystreaming.com%7C1a1b4a7883a8409b234208da8782b977%7C65f03ca86d0a493e9e4ac85ac9526a03%7C0%7C0%7C637971292792533365%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=a%2FYia1ojRzUAP5kjIf4cVDiiP1y0QPEe6wbrE%2F9MLHU%3D&reserved=0>
>>>>>> Variant Body:
>>>>>> 
>>>>>> #EXTM3U
>>>>>> #EXT-X-TARGETDURATION:4
>>>>>> #EXT-X-DEFINE:IMPORT="token"
>>>>>> #EXT-X-MAP:URI="map.mp4?token={$token}"
>>>>>> #EXTINF 4,
>>>>>> segment1.mp4?token={$token}
>>>>>> #EXTINF 4,
>>>>>> segment2.mp4?token={$token}
>>>>>> ...
>>>>>> 
>>>>>> The variant could also optionally have QUERYPARAM="token" to pull it in instead of import which lets MV-less streams also use this functionality.
>>>>>> 
>>>>>> Any thoughts on this functionality extension?
>>>>>> 
>>>>>> Thanks,
>>>>>> Zack
>>>>>> -- 
>>>>>> Hls-interest mailing list
>>>>>> Hls-interest@ietf.org <mailto:Hls-interest@ietf.org>
>>>>>> https://www.ietf.org/mailman/listinfo/hls-interest <https://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.ietf.org%2Fmailman%2Flistinfo%2Fhls-interest&data=05%7C01%7Czachary.cava%40disneystreaming.com%7C1a1b4a7883a8409b234208da8782b977%7C65f03ca86d0a493e9e4ac85ac9526a03%7C0%7C0%7C637971292792533365%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=418cD0kym9rhvg%2FbCdRThZpMagYwIsNXxVAgnywKW7Y%3D&reserved=0>
>>>>> -- 
>>>>> Hls-interest mailing list
>>>>> Hls-interest@ietf.org <mailto:Hls-interest@ietf.org>
>>>>> https://www.ietf.org/mailman/listinfo/hls-interest <https://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.ietf.org%2Fmailman%2Flistinfo%2Fhls-interest&data=05%7C01%7Czachary.cava%40disneystreaming.com%7C1a1b4a7883a8409b234208da8782b977%7C65f03ca86d0a493e9e4ac85ac9526a03%7C0%7C0%7C637971292792533365%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=418cD0kym9rhvg%2FbCdRThZpMagYwIsNXxVAgnywKW7Y%3D&reserved=0>
>>>> 
>>>> -- 
>>>> Hls-interest mailing list
>>>> Hls-interest@ietf.org <mailto:Hls-interest@ietf.org>
>>>> https://www.ietf.org/mailman/listinfo/hls-interest <https://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.ietf.org%2Fmailman%2Flistinfo%2Fhls-interest&data=05%7C01%7Czachary.cava%40disneystreaming.com%7C1a1b4a7883a8409b234208da8782b977%7C65f03ca86d0a493e9e4ac85ac9526a03%7C0%7C0%7C637971292792533365%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=418cD0kym9rhvg%2FbCdRThZpMagYwIsNXxVAgnywKW7Y%3D&reserved=0>
>>> -- 
>>> Hls-interest mailing list
>>> Hls-interest@ietf.org <mailto:Hls-interest@ietf.org>
>>> https://www.ietf.org/mailman/listinfo/hls-interest <https://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.ietf.org%2Fmailman%2Flistinfo%2Fhls-interest&data=05%7C01%7Czachary.cava%40disneystreaming.com%7C1a1b4a7883a8409b234208da8782b977%7C65f03ca86d0a493e9e4ac85ac9526a03%7C0%7C0%7C637971292792689621%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=rp6NMMnaur9wJMvpXVcTGXCd7mQiC%2Bvaiprfro97ZaE%3D&reserved=0>
>> 
>> -- 
>> Hls-interest mailing list
>> Hls-interest@ietf.org <mailto:Hls-interest@ietf.org>
>> https://www.ietf.org/mailman/listinfo/hls-interest <https://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.ietf.org%2Fmailman%2Flistinfo%2Fhls-interest&data=05%7C01%7Czachary.cava%40disneystreaming.com%7C1a1b4a7883a8409b234208da8782b977%7C65f03ca86d0a493e9e4ac85ac9526a03%7C0%7C0%7C637971292792689621%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=rp6NMMnaur9wJMvpXVcTGXCd7mQiC%2Bvaiprfro97ZaE%3D&reserved=0>
> -- 
> Hls-interest mailing list
> Hls-interest@ietf.org
> https://www.ietf.org/mailman/listinfo/hls-interest