Skip to content

Commit db9b112

Browse files
authored
Merge pull request #243 from uvdsl/rfc9207
Support for RFC 9207 (Authorization Response Issuer Identification)
2 parents c15c153 + 828a25f commit db9b112

1 file changed

Lines changed: 28 additions & 0 deletions

File tree

index.bs

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,34 @@ Solid-OIDC defines the following `scope` value for use with claim requests:
288288
REQUIRED. This scope requests access to the End-User's `webid` Claim.
289289
</dl>
290290

291+
292+
# Issuer Validation after receiving the Authorization Code # {#iss-check}
293+
294+
In accordance with Best Current Practice [[RFC9700]],
295+
defense against [Mix-Up Attacks](https://www.rfc-editor.org/rfc/rfc9700.html#section-4.4)
296+
is required in Solid-OIDC as clients are expected to interact with more than one OP.
297+
To this end, this specification adopts the mechanism defined in [[!RFC9207]].
298+
299+
The OP MUST include the `iss` query parameter alongside the authorization code when redirecting the user agent back to the Client's redirect_uri.
300+
The value of the `iss` parameter MUST be the Issuer Identifier of the OP, as defined in [[OIDC-CORE]].
301+
<figure class="example">
302+
<pre highlight="http">
303+
HTTP/1.1 302 Found
304+
Location: https://client.example.com/callback?
305+
code=n0esc392ae491076
306+
&amp;state=af0ifjsldkj
307+
&amp;iss=https%3A%2F%2Fidp.example.com
308+
</pre>
309+
<figcaption>Example Authorization Response including the `iss` query parameter</figcaption>
310+
</figure>
311+
312+
Upon receiving the authorization response, the Client MUST validate the `iss` parameter:
313+
* The Client MUST check for the presence of the `iss` parameter.
314+
* The Client MUST verify that the `iss` value matches the Issuer Identifier of the OP to which the authorization request was sent.
315+
316+
If the `iss` parameter is missing or does not match the expected value, the Client MUST reject the response, MUST NOT exchange the authorization code for tokens, and SHOULD signal an error to the user.
317+
318+
291319
# Token Instantiation # {#tokens}
292320

293321
Assuming one of the following options

0 commit comments

Comments
 (0)