ts-security-identity
v2.0.0
Published
A lightweight Typescript Security Identity Framework with Platform-Agnostic purposes (slightly based on WIF).
Downloads
66
Readme
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;