Skip to content

Commit 840ccef

Browse files
committed
Extract changes to separate section
1 parent fd21bf6 commit 840ccef

1 file changed

Lines changed: 41 additions & 32 deletions

File tree

index.bs

Lines changed: 41 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -114,11 +114,7 @@ from a browser or an application.
114114

115115
Therefore, this specification assumes the use of the
116116
[Authorization Code Flow](https://openid.net/specs/openid-connect-core-1_0.html#CodeFlowSteps) with
117-
PKCE, in accordance with OAuth and OIDC best practices, for interactive browser-based login.
118-
For non-interactive use cases such as scripts, automated agents, and server-to-server communication,
119-
this specification also requires support for the
120-
[Client Credentials Grant](https://www.rfc-editor.org/rfc/rfc6749#section-4.4).
121-
It is also assumed that there are no
117+
PKCE, in accordance with OAuth and OIDC best practices. It is also assumed that there are no
122118
preexisting trust relationships with the OP. This means that client registration, whether dynamic,
123119
or static, is entirely optional.
124120

@@ -296,9 +292,9 @@ Solid-OIDC defines the following `scope` value for use with claim requests:
296292

297293
# Issuer Validation after receiving the Authorization Code # {#iss-check}
298294

299-
In accordance with Best Current Practice [[RFC9700]],
300-
defense against [Mix-Up Attacks](https://www.rfc-editor.org/rfc/rfc9700.html#section-4.4)
301-
is required in Solid-OIDC as clients are expected to interact with more than one OP.
295+
In accordance with Best Current Practice [[RFC9700]],
296+
defense against [Mix-Up Attacks](https://www.rfc-editor.org/rfc/rfc9700.html#section-4.4)
297+
is required in Solid-OIDC as clients are expected to interact with more than one OP.
302298
To this end, this specification adopts the mechanism defined in [[!RFC9207]].
303299

304300
The OP MUST include the `iss` query parameter alongside the authorization code when redirecting the user agent back to the Client's redirect_uri.
@@ -321,31 +317,13 @@ Upon receiving the authorization response, the Client MUST validate the `iss` pa
321317
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.
322318

323319

324-
# Client Credentials Grant # {#client-credentials}
325-
326-
Authorization Servers MUST support the OAuth 2.0 Client Credentials Grant [[!RFC6749]] (Section 4.4)
327-
to enable non-interactive authentication for scripts, automated agents, and server-to-server
328-
communication.
329-
330-
When using the Client Credentials Grant, the Client authenticates with the OP using a
331-
`client_id` and `client_secret` pair previously obtained through client registration
332-
(either static or dynamic). The Client sends a token request to the OP's token endpoint
333-
with `grant_type=client_credentials` and the `webid` scope.
334-
335-
The OP MUST validate the `client_id` and `client_secret`, and if valid, MUST return
336-
a DPoP-bound OIDC ID Token. The Client MUST include a valid DPoP proof [[!DPOP]]
337-
with the token request.
338-
339-
The OP MUST advertise `client_credentials` in its `grant_types_supported`
340-
metadata property in its OpenID Connect Discovery 1.0 [[!OIDC-DISCOVERY]] document.
341-
342320
# Token Instantiation # {#tokens}
343321

344322
Assuming one of the following options
345-
- Client ID and Secret, and valid DPoP Proof, using either the Authorization Code Grant or the Client Credentials Grant
323+
- Client ID and Secret, and valid DPoP Proof (for dynamic and static registration)
346324
- Dereferencable Client Identifier with a proper Client ID Document and valid DPoP Proof (for a Solid client identifier)
347325

348-
the OP MUST return a DPoP-bound OIDC ID Token.
326+
the OP MUST return A DPoP-bound OIDC ID Token.
349327

350328
## DPoP-bound OIDC ID Token ## {#tokens-id}
351329

@@ -452,14 +430,45 @@ requested resource.
452430
An OpenID Provider that conforms to the Solid-OIDC specification MUST advertise it in the OpenID Connect
453431
Discovery 1.0 [[!OIDC-DISCOVERY]] resource by including `webid` in its `scopes_supported` metadata property.
454432

455-
Additionally, the OP MUST include `client_credentials` in its `grant_types_supported`
456-
metadata property to indicate support for non-interactive authentication
457-
via the Client Credentials Grant (see [[#client-credentials]]).
433+
<div class="example">
434+
<pre highlight="json">
435+
{
436+
"scopes_supported": ["openid", "offline_access", "webid"]
437+
}
438+
</pre>
439+
</div>
440+
441+
# Client Credentials Grant # {#client-credentials}
442+
443+
NOTE: This sections borrows concepts from OAuth 2.0 [[!RFC6749]], while the rest of Solid-OIDC builds on top of OpenID
444+
Connect Core 1.0 [[!OIDC-CORE]]. The section is likely to be extracted into a separate specification in the future.
445+
446+
Authorization Servers MUST support the OAuth 2.0 Client Credentials Grant [[!RFC6749]] (Section 4.4) to enable
447+
non-interactive authentication for scripts, automated agents, and server-to-server communication.
448+
449+
NOTE: Scripts and bots can also use Solid-OIDC without Client Credentials via the refresh token flow, when supported by
450+
the server.
451+
452+
When using the Client Credentials Grant, the Client authenticates with the OP using a `client_id` and `client_secret`
453+
pair previously obtained through client registration (either static or dynamic). The Client sends a token request to
454+
the OP's token endpoint with `grant_type=client_credentials` and the `webid` scope.
455+
456+
## Token Instantiation ## {#client-credentials-token-instantiation}
457+
458+
During Token Instantiation [[#tokens]], if the [Client Credentials
459+
Grant](https://www.rfc-editor.org/rfc/rfc6749#section-4.4) is used, the OP MUST validate the `client_id` and
460+
`client_secret`. If valid, the OP MUST return A DPoP-bound OIDC ID Token.
461+
462+
## Solid-OIDC Conformance Discovery ## {#client-credentials-discovery}
463+
464+
For non-interactive use cases such as scripts, automated agents, and server-to-server communication, this specification
465+
also requires that an OpenID Provider that conforms to the Solid-OIDC specification MUST advertise its support for the
466+
[Client Credentials Grant](https://www.rfc-editor.org/rfc/rfc6749#section-4.4) in the OpenID Connect Discovery 1.0
467+
[OIDC.Discovery] resource by including `client_credentials` in its `grant_types_supported` metadata property.
458468

459469
<div class="example">
460470
<pre highlight="json">
461471
{
462-
"scopes_supported": ["openid", "offline_access", "webid"],
463472
"grant_types_supported": ["authorization_code", "refresh_token", "client_credentials"]
464473
}
465474
</pre>

0 commit comments

Comments
 (0)