1.1.0-dev • Published 5 years ago

@typenode/oauth2 v1.1.0-dev

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

OAuth2

OAuth2 authentication

Library is in development.

Installation

  • Install module:

npm install @typenode/oauth2 --save

Usage

  1. Create a Model

    JWT model

    import {JwtModel,OAuthClientContract} from '@typenode/oauth2';
    
    export class OAuthJwtModel extends JwtModel{
        async getUser(username: string, password: string): Promise<any> {
            //fetch user
            return users.find(u=>u.username === username && u.password === password);
        }
        
        async getClient(clientId: string, clientSecret: string): Promise<OAuthClientContract> {
             //fetch client
             return null;
        }
    
        async validateScope(user, client: OAuthClientContract, scope): Promise<boolean> {
            //scope validation implementation here
            return true;
        }
    
        async verifyScope(token, scope): Promise<boolean> {
            //scope verification implementation here
            return token.scope === scope;
        }
    }

or create your own model by extending abstract class Model from import {Model} from '@typenode/oauth2';

  1. initialize
    import {OAuth2} from '@typenode/oauth2';
    
    const oauth2 = new OAuth2(new OAuthJwtModel('secret1','secret2'));
  1. Request and Response
 import {OAuthRequest,OAuthResponse} from '@typenode/oauth2';
   
   let request = new OAuthRequest({/*...*/});
   let response = new OAuthResponse({/*...*/});
  1. OAuth2#authenticate()
    oauth2.authenticate(request, response,options)
      .then((token) => {
        // The request was successfully authenticated.
      })
      .catch((err) => {
        // The request failed authentication.
      });
  
  1. OAuth2#token()
    oauth2.token(request, response,options)
      .then((token) => {
        // The resource owner granted the access request.
      })
      .catch((err) => {
        // The request was invalid or not authorized.
      });
  
  1. OAuth2#authorize()
    import {AccessDeniedError} from '@typenode/oauth2';

    oauth2.authorize(request, response,options)
     .then((code) => {
       // The resource owner granted the access request.
     })
     .catch((err) => {
       if (err instanceof AccessDeniedError) {
         // The resource owner denied the access request.
       } else {
         // Access was not granted due to some other error condition.
       }
     });