Complete, compliant and well tested module for implementing an OAuth2 Server/Provider with restify in node.js
Switch branches/tags
Nothing to show
Clone or download
#1 Compare This branch is 6 commits ahead, 46 commits behind oauthjs:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.idea
examples
test
.gitignore
.jshintignore
.jshintrc
.travis.yml
LICENSE
Readme.md
index.js
package.json

Readme.md

Restify OAuth Server Build Status

Complete, compliant and well tested module for implementing an OAuth2 Server/Provider with restify in node.js. This module is a fork of express-oauth-server.

This is a restify wrapper for oauth2-server.

Installation

$ npm install restify-oauth-server

Quick Start

The module provides two middlewares - one for granting tokens and another to authorise them. restify-oauth-server and, consequently oauth2-server, expect the request body to be parsed already. The following example uses restify's 'body-parser but you may opt for an alternative library.

var restify = require('restify');
var OAuthServer = require('restify-oauth-server');

var server = restify.createServer();

server.oauth = new OAuthServer({
  model: {}, // See https://github.com/thomseddon/node-oauth2-server for specification
});

server.use(restify.acceptParser(server.acceptable));
server.use(restify.authorizationParser());
server.use(restify.bodyParser());

// Node Oauth2 Server expects the token request to be x-www-url-formencoded according to the Oauth2 spec
// Restify's body parser puts formencoded params in req.params, so we'll need a quick little bit of middleware to copy them over to the body
server.use(function(req, res, next) {
  if(req.headers['content-type'] === 'application/x-www-url-formencoded') req.body = req.params;
  return next();
});

server.post('/token', server.oauth.token());

server.get('/secret', server.oauth.authenticate(), function(req, res, next) {
  res.send('Authenticated!');
});

server.listen(3000);

You can find examples in the examples folder for different databases, but I haven't updated them or tested them yet, so take them for what they are.