Authentication is the process of verifying the identity of an agent. To access private data on Solid Pods, you must authenticate as a user/agent who has been granted appropriate access to that data.

Authentication Flows#

Solid authentication is based on the Solid-OIDC specification. Solid-OIDC builds upon the OpenID Connect standards, which itself builds on the OAuth 2.0 authorization framework.

For applications implementing Authorization Code Flow:

  1. The application starts the login process by sending the user to the user’s Solid Identity Provider.

  2. The user logs in to the Solid Identity Provider.

  3. The Solid Identity Provider sends the user back to your application, where the application handles the returned authentication information to complete the login process.

Login Flow: 1) Start Login by redirecting user to Solid Identity Provider. 2) User logs in.  3) Solid Identity Provider redirects the user back to the application to handle the returned authentication information.

For applications implementing Client Credentials flow:

  1. The application (such as a single-user script) logs in, on behalf of the user who registered the client, by sending its client credentials to its Solid Identity Provider (i.e., where the user registered the client).

  2. The Solid Identity Provider returns the tokens to the app.

Inrupt Client Libraries#

Inrupt provides the following libraries for authentication:

  • solid-client-authn-browser to authenticate in a browser.

  • solid-client-authn-node to authenticate in Node.js.

Note about Client IDs

In Solid-OIDC (i.e., in OAuth 2.0 and OpenID Connect), an application identifies itself using a client identifier (Client ID).

A Client ID can be:

Inrupt’s client libraries provide login APIs that supports:

Usage Examples#