| 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()
}