Solid OIDC Client Credentials Authentication

Authenticates against Community Solid Server identity providers using OAuth client credentials with DPoP proofs and performs authenticated requests against Solid resources.


solidauthr

solidauthr is an R package for Solid-OIDC client-credentials authentication against Community Solid Server identity providers.

It discovers the issuer configuration, generates a session-scoped DPoP key pair, requests DPoP-bound access tokens with the webid scope, and attaches fresh DPoP proofs to each outgoing Solid request.

Installation

Install the release version from CRAN:

install.packages("solidauthr")

Usage

library(solidauthr)
library(httr2)

session <- solid_session(
  issuer = "https://solid-idp.university.edu/",
  client_id = Sys.getenv("SOLID_CLIENT_ID"),
  client_secret = Sys.getenv("SOLID_CLIENT_SECRET")
)

resp <- session$get("https://some-pod.example.org/private/data.ttl")
httr2::resp_body_string(resp)

session$put(
  "https://some-pod.example.org/private/new.ttl",
  body = "@prefix dct: <http://purl.org/dc/terms/> . <> dct:title \"Example\" .",
  content_type = "text/turtle"
)

Session API

The constructor returns an R6 object with these methods:

  • $fetch(url, method = "GET", ...)
  • $get(url, ...)
  • $put(url, body, content_type, ...)
  • $post(url, body, content_type, ...)
  • $patch(url, body, content_type, ...)
  • $delete(url, ...)
  • $token(force_refresh = FALSE)

The session keeps one EC P-256 DPoP key pair for its lifetime and re-requests access tokens automatically when they are close to expiry.

Development

DESCRIPTION is the source of truth for R package dependencies. For local development, install them from DESCRIPTION into the package-local library first:

Rscript packages/solidauthr/scripts/install-deps.R

Build the package:

npx nx run solidauthr:build

Run unit tests:

npx nx run solidauthr:test

Run the Docker-backed integration script:

Rscript packages/solidauthr/scripts/pod-idp-integration.R

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.

install.packages("solidauthr")

0.1.2 by Jackson Morgan, 5 months ago


https://github.com/SetMeld/solidauthr


Report a bug at https://github.com/SetMeld/solidauthr/issues


Browse source code at https://github.com/cran/solidauthr


Authors: Jackson Morgan [aut, cre, cph]


Documentation:   PDF Manual  


MIT + file LICENSE license


Imports httr2, jose, jsonlite, openssl, R6, uuid

Suggests testthat


See at CRAN