koa-oauth-server

by oauthjs

Complete, compliant and well tested module for implementing an OAuth2 Server/Provider with koa in no...

202 Stars 76 Forks Last release: Not found 53 Commits 6 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

Koa OAuth Server Build Status

Complete, compliant and well tested module for implementing an OAuth2 Server/Provider with koa in node.js.

This is the koa wrapper for oauth2-server.

Installation

$ npm install koa-oauth-server

Quick Start

The module provides two middlewares - one for granting tokens and another to authorise them.

koa-oauth-server
and, consequently
oauth2-server
, expect the request body to be parsed already. The following example uses
koa-bodyparser
but you may opt for an alternative library.
var koa = require('koa');
var bodyparser = require('koa-bodyparser');
var oauthserver = require('koa-oauth-server');

var app = koa();

app.oauth = oauthserver({ model: {}, // See https://github.com/thomseddon/node-oauth2-server for specification grants: ['password'], debug: true });

app.use(bodyparser()); app.use(app.oauth.authorise());

app.use(function *(next) { this.body = 'Secret area'; yield next; });

app.listen(3000);

Using
koa-router
with
koa-mount

If you wish to integrate with

koa-router
using
koa-mount
, you may do so by combining them to mount a specific prefix for oauth operations:
var Router = require('koa-router');
var bodyparser = require('koa-bodyparser');
var koa = require('koa');
var model = require('koa-oauth-server/node_modules/oauth2-server/examples/memory/model');
var mount = require('koa-mount');
var oauthserver = require('koa-oauth-server');

// Create a new koa app. var app = koa();

// Create a router for oauth. var router = new Router();

// Enable body parsing. app.use(bodyparser());

// See https://github.com/thomseddon/node-oauth2-server for specification. app.oauth = oauthserver({ model: model, grants: ['password'], debug: true });

// Mount oauth2 route prefix. app.use(mount('/oauth2', router.middleware()));

// Register /token POST path on oauth router (i.e. /oauth2/token). router.post('/token', app.oauth.grant());

// Start koa server. app.listen(3000);

Then attempt to be granted a new oauth token:

curl -XPOST -d 'username=thomseddon&password=nightworld&grant_type=password&client_id=thom&client_secret=nightworld' http://localhost:3000/oauth2/token

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.