ts-security-identity
TypeScript icon, indicating that this package has built-in type declarations

2.0.0 • Public • Published

ts-security-identity

A lightweight Typescript Security Identity Framework with Platform-Agnostic purposes (slightly based on WIF).

1. Getting Started

1.1 Installing

Install package from using npm

    npm install --save ts-security-identity

1.2 Build

Configure your build system to copy the files from node_modules/ts-security-identity to your dist/vendor/ts-security-identity folder.

1.3 Configuring

Recommendation to use SystemJS to load the package at runtime.

System.config({ 
  map: {
    'ts-security-identity': 'vendor/ts-security-identity/dist/prod/js/src/'
  },
  packages: {
    'ts-security-identity': {
      main: 'index.js'
    }
  }
 });

or

System.config({ 
  packageConfigPaths: ['vendor/ts-security-identity/package.json']
 });

2. Using

2.1 Initializing

To initialize, is needed to invoke the proper Initialize method.

  • With an encoded token:
let encodedAccessToken:string = "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6ImEzck1VZ...";
let encodedIdentityToken:string = "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6ImEzck1VZ...";
SecurityContextInitializer.InitializeWithEncodedTokens( [ encodedAccessToken, encodedIdentityToken ] );
  • With an token (any JSON):
let token:any = { name: 'João Vitor' };
SecurityContextInitializer.InitializeWithTokens( [ token ] );

2.2 Authentication

Check if the user is authenticated:

console.log(SecurityContext.Current.Principal.IsAuthenticated); //false
SecurityContextInitializer.InitializeWithEncodedTokens( [ "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6ImEzck1VZ..." ] );
console.log(SecurityContext.Current.Principal.IsAuthenticated); //true

2.3 Identity

Identity have a property named Claims of type Array<{key:string,value:any}> who allow us to check against informations delivered by the tokens.

Sample:

    let name = SecurityContext.Current.Principal.Identity.Claims.filter((claim) => claim.key === "name")[0].value;
  • But also, let us tho extend the built-in Identity with aditional static-typed informations:
    class CustomizedIdentity extends Identity
    {
        public get ClientId() : string 
        {
            return this.findFirst<string>('client_id');
        }
    }
    
    let customizedIdentity :CustomizedIdentity = new CustomizedIdentity( [{ key: 'client_id', value: '2380' }] );
    console.log(customizedIdentity.ClientId); // '2380'
    SecurityContext.Current.Principal.Identity = customizedIdentity;

Readme

Keywords

none

Package Sidebar

Install

npm i ts-security-identity

Weekly Downloads

47

Version

2.0.0

License

ISC

Last publish

Collaborators

  • jvitor83