Option name | Type | Description |
---|---|---|
token | String | The JSON Web Token formatted token string. |
clientId | String | Optional clientId if this is an `access_token`. |
Construct a token.
Based on a JSON Web Token string, construct a token object. Optionally
if a clientId
is provided, the token may be tested for roles withhasRole()
.
function Token(token, clientId) {
this.token = token;
this.clientId = clientId;
if ( token ) {
try {
var parts = token.split('.');
this.header = JSON.parse( new Buffer( parts[0], 'base64' ).toString() );
this.content = JSON.parse( new Buffer( parts[1], 'base64' ).toString() );
this.signature = new Buffer( parts[2], 'base64' );
this.signed = parts[0] + '.' + parts[1];
} catch (err) {
this.content = {
expiresAt: 0
};
}
}
}
Determine if this token is expired.
Token.prototype.isExpired = function() {
if ( ( this.content.exp * 1000 ) < Date.now() ) {
return true;
}
};
Option name | Type | Description |
---|---|---|
name | String | The role name specifier. |
Determine if this token has an associated role.
This method is only functional if the token is constructed
with a clientId
parameter.
The parameter matches a role specification using the following rules:
clientId
.realm:
, the subsequent portionToken.prototype.hasRole = function(name) {
if ( ! this.clientId ) {
return false;
}
var parts = name.split(':');
if ( parts.length == 1 ) {
return this.hasApplicationRole( this.clientId, parts[0] );
}
if ( parts[0] == 'realm' ) {
return this.hasRealmRole( parts[1] );
}
return this.hasApplicationRole( parts[0], parts[1] );
};
Option name | Type | Description |
---|---|---|
appName | String | The identifier of the application to test. |
roleName | String | The name of the role within that application to test. |
Determine if this token has an associated specific application role.
Even if clientId
is not set, this method may be used to explicitly test
roles for any given application.
Token.prototype.hasApplicationRole = function(appName, roleName) {
var appRoles = this.content.resource_access[appName];
if ( ! appRoles ) {
return false;
}
return ( appRoles.roles.indexOf( roleName ) >= 0 );
};
Option name | Type | Description |
---|---|---|
appName | String | The identifier of the application to test. |
roleName | String | The name of the role within that application to test. |
Determine if this token has an associated specific realm-level role.
Even if clientId
is not set, this method may be used to explicitly test
roles for the realm.
Token.prototype.hasRealmRole = function(roleName) {
return ( this.content.realm_access.roles.indexOf( roleName ) >= 0 );
};
module.exports = Token;