1.13.0 • Published 2 years ago

@rubensworks/solid-client-authn-browser v1.13.0

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

Solid JavaScript authentication for the browser - solid-client-authn-browser

This is a fork of inrupt/solid-client-authn-js that includes support for Web workers. If you don't need Web worker support, it is recommended to use Inrupt's original inrupt/solid-client-authn-js packages. The motivation for this fork can be found here: https://github.com/rubensworks/solid-client-authn-js/pull/1802

solid-client-authn-browser is a library designed to authenticate web apps (in the browser) with Solid identity servers. The main documentation is at the root of the repository.

Usage within Web workers

This package enables support for Web workers by setting up a communication channel that exposes a fetch-like method to the worker, and follows the following flow:

  • Worker wants to do an authenticated request.
  • Worker sends request information to the main Window.
  • Window constructs authenticated headers for the request information.
  • Window sends back authenticated headers to the Worker.
  • Worker performs request using the authenticated headers.

Example usage (Window):

   const session = getDefaultSession();
   const worker = new Worker(...);
   const windowToWorkerHandler = new WindowToWorkerHandler(this, worker, session);
   worker.onmessage = async (message) => {
      if (windowToWorkerHandler.onmessage(message)) {
        // This means that the message was taken care of by the handler
      } else {
        // Optionally, take care of any other custom messages that your worker may send.
      }
    };

Example usage (Worker):

   const workerToWindowHandler = new WorkerToWindowHandler(self);
   self.onmessage = (message => {
    if (workerToWindowHandler.onmessage(message)) {
      // This means that the message was taken care of by the handler
    } else {
      // Optionally, take care of any other custom messages that your worker may receive.
    }
   // Use the authenticated fetch function
  const authFetch = workerToWindowHandler.buildAuthenticatedFetch();
  await authFetch('https://example.org/');

A full working example can be found in: https://github.com/rubensworks/solid-client-authn-js/tree/feature/web-workers/packages/browser/examples/single/bundle

Required polyfills

Our JavaScript Client Libraries use relatively modern JavaScript features that will work in all commonly used browsers, except Internet Explorer. Additionally, @rubensworks/solid-client-authn-browser currently expects the Node.js events module. Webpack versions before version 5 used to add a polyfill for that by default; if you do not use Webpack, or use version 5 or later, please install the events npm package as well.

Underlying libraries

solid-client-authn-browser is based on oidc-client-js, forked in @inrupt/oidc-client after the original library stopped being supported. However, the latter lacks some features that are necessary to provide the developer experience we specifically want for the Solid ecosystem, so we developed oidc-client-ext to add these features.

Other Inrupt Solid JavaScript Libraries

@rubensworks/solid-client-authn-browseris part of a family open source JavaScript libraries designed to support developers building Solid applications.

Inrupt Solid JavaScript Client Libraries

Data access and permissions management - solid-client

@inrupt/solid-client allows developers to access data and manage permissions on data stored in Solid Pods.

Authentication - solid-client-authn

@inrupt/solid-client-authn allows developers to authenticate against a Solid server. This is necessary when the resources on your Pod are not public.

Vocabularies and interoperability - solid-common-vocab-rdf

@inrupt/solid-common-vocab-rdf allows developers to build interoperable apps by reusing well-known vocabularies. These libraries provide vocabulary terms as constants that you just have to import.

Issues & Help

Solid Community Forum

If you have questions about working with Solid or just want to share what you’re working on, visit the Solid forum. The Solid forum is a good place to meet the rest of the community.

Bugs and Feature Requests

  • For public feedback, bug reports, and feature requests please file an issue via GitHub.
  • For non-public feedback or support inquiries please use the Inrupt Service Desk.

Prerequisite

The solid-client-authn libraries are compatible with NSS 5.3.X and higher.

Documentation