openidAuthentication

An authentication system determines the identity of a user or agent and the level of trust associated with this identity.

For authentication, the ESS Solid OIDC Broker Servicearrow-up-right implements the Solid-OIDCarrow-up-right specification. Solid-OIDCarrow-up-right specification builds upon the OpenID Connectarrow-up-right (OIDC) standards, which itself builds on the OAuth 2.0arrow-up-right authorization framework.

Identity

WebID

Rather than representing the identity of users with any string (e.g., user1234 , etc.), Solid identifies users with a WebID. A WebID is a URL (e.g., https://id.<ESS Domain>.com/user1234 ) that can be dereferenced to an RDF profile document.

ESS includes a WebID Servicearrow-up-right. WebIDs issued by ESS have the form:

https://id.<ESS DOMAIN>/<username>

Client Identifier (Client ID)

In Solid-OIDCarrow-up-right, an application identifies itself using a client identifier (Client ID).

A Client ID can be:

Solid-OIDC Client ID Document

ESS supports Client Identifiers (Client IDs)arrow-up-right that are of type URL and dereference to a JSON-LD document, the Client ID Documentarrow-up-right .

Client Registration

For applications that do not use identifiers that dereference to a Client ID Document, they can registerarrow-up-right with ESS’ Solid OIDC Broker service (the Broker)arrow-up-right .

To register, a client provides various metadata about itselfarrow-up-right as part of its registration request (see RFC7591: 3.1 Client Registration Requestarrow-up-right).

Upon successful registration, the Broker responds with a unique client_id . The response may include additional fields. For details, see RFC7591: 3.2 Client Registration Responsesarrow-up-right .

Dynamic Registration

To dynamically register an application, an application POSTs to the Broker’sarrow-up-right client registration_endpoint with the client’s metadata.

circle-info

Tip To determine if the Broker supports dynamic client registration, check its /.well-known/openid-configuration for the registration_endpoint field.

Inrupt’s JavaScript client libraries provide login APIs that handle dynamic registration of applications.

Static Registration

ESS supports static registration of client applications associated with a user (i.e., WebID). Static registration results in client credentials (i.e., client_id and client_secret ). ESS’ application registration returns client_id of type UUID.

Single-user scripts and bots can use these client credentials to authenticate (on behalf of the user) without requiring browser-based user interactions with the Identity Provider.

For details, see Application Registration.

Client IDs in Allow Lists and Access Policies

ESS supports the use of Client IDs in client allow list configurations and access policies to specify which clients can be used.

For details, see Authorization and Clients.

Tokens

As part of the ESS login flow, which implements the Solid-OIDCarrow-up-right specification, ESS’ Solid OIDC Broker Servicearrow-up-right issues ID tokens and access tokens. The Solid OIDC Broker Servicearrow-up-right includes the WebID and the Client ID as claims in these tokens.

ID Tokens

An ID token asserts the identity of the user and is represented as a JSON Web Tokenarrow-up-right (JWT).

ID Token Structure

The OpenID specificationarrow-up-right defines an extensible data structure for ID Tokens. This data structure is serialized as a JSON Web Tokenarrow-up-right.

See also Broker Token Claimsarrow-up-right.

Lifespan

ESS ID tokens have a default lifespan of 5 minutes (see SMALLRYE_JWT_NEW_TOKEN_LIFESPANarrow-up-right).

Signed Access Token

The ESS login flow results in signed access tokens. Access tokens provide access to resources. An access token issued by ESS is represented as a JSON Web Tokenarrow-up-right (JWT).

ESS verifies the token signature and that the token has not expired. An invalid token cannot be used to gain access to resources.

Signed Access Token Structure

ESS uses the JWT-based structure for access tokens.

See also Broker Token Claimsarrow-up-right.

Lifespan

ESS access tokens have a default lifespan of 5 minutes (see SMALLRYE_JWT_NEW_TOKEN_LIFESPANarrow-up-right).

Demonstration of Proof-of-Possession (DPoP) Token

As an additional layer of protection against token stealing and various replay attacks, Solid clients can send an additional HTTP header (specifically a DPoP proofarrow-up-right).

A DPoP proofarrow-up-right can be used to verify that a client is in legitimate possession of an access token while also scoping the request to a particular Pod resource. This helps prevent against token exfiltration attacks.

ESS uses version 00 of DPoP.

Last updated