Skip to content

OADA/oada-client-discovery-js

Repository files navigation

  • This repository is deprecated. CLient discovery is no longer an OADA protocol. *

Build Status Coverage Status Dependency Status License

oada-client-discovery-js

Connect style middleware for OADA (openag.io) client discovery.

Getting Started

Installation

The library can be installed with npm using

$ npm install oada-client-discovery

Running the Examples

Minimal Example

See examples README

Running the tests, coverage, and style checks

The libraries test can be ran with:

$ npm test

The coverage report is generated by:

$ npm run cover

Gulp runs jshint (lint) and jscs (style) with:

$ gulp lint
$ gulp style

API

clientDiscovery(lookup, options)

Connect style middleware for OADA client discovery.

To eliminate a dependency on any particular storage system or database a lookup function that fetches client registrations must be provided by the caller.

CORS is required by OADA client discovery and therefore automatically enabled. See node-cors.

Parameters

lookup {Function} that resolves a client registration from a client ID. It takes the form function(lookup, callback).

options {Object, Optional} possibly containing the following properties:

  • cors {Object} Options object for node-cors. Default: {}

Client Registration Object

An OADA client registration is a JSON document with at least the following properties:

  • clientId {String} client ID
  • redirectUrls {Array of Strings} Array of allowable OAuth 2.0 redirect URLs.
  • licenses {Array of Strings} Array of license names the client developer has agreed to.
  • keys {JSON Web Key (JWK) Set} containing the client's JWKs for use with OADA specific OAuth 2.0/OpenID Connect client secrets.
Example Client Registration
{
  "clientId": "[email protected]",
  "redirectUrls": [
    "https://agcloud.com/redirect"
  ],
  "licenses": [
    "oada",
  ],
  "keys": [
    {
      "kty": "RSA",
      "use": "sig",
      "alg": "RS256",
      "kid": "ad8alkjca38afvudsZA",
      "n": "AOtWalmH3vZ2q2Be ... SRQjYzxqpyVR9HEJYJ",
      "e": "AQAB",
    }
  ]
}

Usage Example

var express = require('express');
var clientDiscovery = require('oada-client-discovery');

var app = express();

app.get('/clientDiscovery', clientDiscovery(
  function(clientId, cb) {
    clients.find({clientId: clientId}, function(err, clients) {
      if(err) { return cb(err); }

      cb(null, clients[0]);
    })
  }));