You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -98,11 +96,9 @@ This returns whether there are any valid private state tokens for a particular i
98
96
```
99
97
fetch('<issuer>/<redemption path>', {
100
98
privateToken: {
101
-
type: 'private-state-token',
102
99
version: 1,
103
100
operation: 'token-redemption',
104
-
issuer: <issuer>,
105
-
refreshPolicy: {'none', 'refresh'}
101
+
refreshPolicy: 'refresh' // either 'refresh' or 'none', default is 'none'
106
102
}
107
103
}).then(...)
108
104
```
@@ -115,7 +111,7 @@ The RR is HTTP-only and JavaScript is only able to access/send the RR via Privat
115
111
UA stores the RR obtained from the initial redemption. A publisher site can query whether a valid RR exists for a specific issuer using the following method.
This returns whether there are any valid RRs from the given issuer.
@@ -133,7 +129,6 @@ Redemption Records are only accessible via a new option to the Fetch API:
133
129
fetch(<resource-url>, {
134
130
...
135
131
privateToken: {
136
-
type: 'private-state-token',
137
132
version: 1,
138
133
operation: 'send-redemption-record',
139
134
issuers: [<issuer>, ...]
@@ -148,9 +143,9 @@ The RRs will be added as a new request header `Sec-Redemption-Record`. The heade
148
143
149
144
### Extension: Private State Token Versioning
150
145
151
-
In order to allow multiple versions of Private State Token to be supported in the ecosystem, issuers include the version of the protocol (i.e. "PrivateStateTokenV1") in their key commitments via the ```protocol_version``` field, and that is included in Private State Token requests via the ```Sec-Private-State-Token-Version``` header. Private State Token operations should not be performed with issuers configured with an unknown protocol version.
146
+
In order to allow multiple versions of Private State Token to be supported in the ecosystem, issuers include the version of the protocol (i.e. "PrivateStateTokenV1") in their key commitments via the ```protocol_version``` field, and that is included in Private State Token requests via the ```Sec-Private-State-Token-Crypto-Version``` header. Private State Token operations should not be performed with issuers configured with an unknown protocol version.
152
147
153
-
In addition to the core cryptographic layer, signed requests' formats (see the next section) might change from version to version. In order to make adapting to these changes easier, we could employ a mechanism like the ```Sec-Private-State-Token-Version``` header, or an addition to the requests' payloads, to tell consumers the version of the client that generated the request.
148
+
In addition to the core cryptographic layer, signed requests' formats (see the next section) might change from version to version. In order to make adapting to these changes easier, we could employ a mechanism like the ```Sec-Private-State-Token-Crypto-Version``` header, or an addition to the requests' payloads, to tell consumers the version of the client that generated the request.
154
149
155
150
156
151
### Extension: Metadata
@@ -170,7 +165,7 @@ This can be managed by assigning different keys in the key commitment to have di
170
165
171
166
### Extension: iframe Activation
172
167
173
-
Some resources requests are performed via iframes or other non-Fetch-based methods. One extension to support such use cases would be the addition of a `privateToken` attribute to iframes that includes the parameters specified in the Fetch API. This would allow an RR to be sent with an iframe by setting an attribute of `privateToken="{type:'private-state-token',version:1,operation:'send-redemption-record',issuer:<issuer>,refreshPolicy:'refresh'}"`.
168
+
Some resources requests are performed via iframes or other non-Fetch-based methods. One extension to support such use cases would be the addition of a `privateToken` attribute to iframes that includes the parameters specified in the Fetch API. This would allow an RR to be sent with an iframe by setting an attribute of `privateToken="{version:1,operation:'send-redemption-record',issuers:[<issuer>]}"`.
174
169
175
170
## Privacy Considerations
176
171
@@ -280,14 +275,14 @@ foo.example - Site requiring a Private State Token to prove the user is trusted.
280
275
281
276
282
277
1. User visits `areyouahuman.example`.
283
-
1.`areyouahuman.example` verifies the user is a human, and calls `fetch('areyouahuman.example/get-human-tokens', {privateToken: {type: 'private-state-token', version: 1, operation: 'token-request', issuer: 'areyouahuman.example'}})`.
278
+
1.`areyouahuman.example` verifies the user is a human, and calls `fetch('areyouahuman.example/get-human-tokens', {privateToken: {version: 1, operation: 'token-request'}})`.
284
279
1. The browser stores the trust tokens associated with `areyouahuman.example`.
285
280
1. Sometime later, the user visits `coolwebsite.example`.
286
-
1.`coolwebsite.example` wants to know if the user is a human, by asking `areyouahuman.example` that question, by calling `fetch('areyouahuman.example/redeem-human-token', {privateToken: {type: 'private-state-token', version: 1, operation: 'token-redemption', issuer: 'areyouahuman.example'}})`.
281
+
1.`coolwebsite.example` wants to know if the user is a human, by asking `areyouahuman.example` that question, by calling `fetch('areyouahuman.example/redeem-human-token', {privateToken: {version: 1, operation: 'token-redemption'}})`.
287
282
1. The browser requests a redemption.
288
283
1. The issuer returns an RR (this indicates that `areyouahuman.example` at some point issued a valid token to this browser).
289
284
1. When the promise returned by the method resolves, the RR can be used in subsequent resource requests.
290
-
1. Script running code in the top level `coolwebsite.example` document can call `fetch('foo.example/get-content', {privateToken: {type: 'private-state-token', version: 1, operation: 'send-redemption-record', issuer: 'areyouahuman.example'}})`
285
+
1. Script running code in the top level `coolwebsite.example` document can call `fetch('foo.example/get-content', {privateToken: {version: 1, operation: 'send-redemption-record', issuers: ['https://areyouahuman.example']}})`
291
286
1. The third-party receives the RR, and now has some indication that `areyouahuman.example` thought this user was a human.
292
287
1. The third-party responds to this fetch request based on that fact.
0 commit comments