Package {solidauthr}


Type: Package
Title: Solid OIDC Client Credentials Authentication
Version: 0.1.2
Description: Authenticates against Community Solid Server identity providers using OAuth client credentials with DPoP proofs and performs authenticated requests against Solid resources.
License: MIT + file LICENSE
Encoding: UTF-8
Depends: R (≥ 4.1.0)
Imports: httr2, jose, jsonlite, openssl, R6, uuid
Suggests: testthat (≥ 3.0.0)
Config/testthat/edition: 3
URL: https://github.com/SetMeld/solidauthr
BugReports: https://github.com/SetMeld/solidauthr/issues
NeedsCompilation: no
Packaged: 2026-05-04 17:35:55 UTC; jacksonmorgan
Author: Jackson Morgan [aut, cre, cph]
Maintainer: Jackson Morgan <jackson@setmeld.com>
Repository: CRAN
Date/Publication: 2026-05-07 16:10:03 UTC

solidauthr: Solid OIDC Client Credentials Authentication

Description

Utilities for authenticating against Community Solid Server identity providers with OAuth client credentials and DPoP, then issuing authenticated requests to Solid resources.


Create a Solid OIDC session

Description

Discovers the issuer's OpenID configuration, creates a session-scoped DPoP key, obtains DPoP-bound access tokens with the webid scope, and attaches fresh DPoP proofs to outgoing Solid requests.

Usage

solid_session(issuer, client_id, client_secret, safety_margin = 30L)

Arguments

issuer

A length-1 character vector giving the issuer base URL for a Community Solid Server identity provider.

client_id

A length-1 character vector giving the OAuth client ID.

client_secret

A length-1 character vector giving the OAuth client secret.

safety_margin

A number of seconds to subtract from token expiry when deciding whether a token should be refreshed.

Value

An R6 SolidSession object with methods for authenticated HTTP requests and access-token retrieval.

Examples

issuer <- Sys.getenv("SOLID_ISSUER")
client_id <- Sys.getenv("SOLID_CLIENT_ID")
client_secret <- Sys.getenv("SOLID_CLIENT_SECRET")

if (nzchar(issuer) && nzchar(client_id) && nzchar(client_secret)) {
  session <- solid_session(
    issuer = issuer,
    client_id = client_id,
    client_secret = client_secret
  )

  session$token()
}