SAP-BTP-Spielwiese/app1/node_modules/@sap/xssec/lib/ctx/ias.js
Markus Rettig 775ac7b58c completed step 3 from the tutorial
you must login with an BTP account in order to see the app
2024-02-08 16:13:36 +01:00

93 lines
No EOL
2.6 KiB
JavaScript

'use strict';
// use environment variable DEBUG with value 'xssec:*' for trace/error messages
var debug = require('debug');
var debugTrace = debug('xssec:securitycontext');
var debugError = debug('xssec:securitycontext');
const {JwtTokenValidatorIAS} = require('../validator')
debugError.log = console.error.bind(console);
debugTrace.log = console.log.bind(console);
module.exports.SecurityContext = function(config, configArr) {
this.getConfigType = function () {
return "IAS";
}
var token = null;
var tokenInfo = null;
var userInfo = {
logonName: '',
givenName: '',
familyName: '',
email: ''
};
this.getUserInfo = function() {
return userInfo;
}
this.getAppToken = function () {
return token;
};
this.getTokenInfo = function () {
return tokenInfo;
}
this.getLogonName = function () {
return userInfo.logonName;
};
this.getGivenName = function () {
return userInfo.givenName;
};
this.getFamilyName = function () {
return userInfo.familyName;
};
this.getEmail = function () {
return userInfo.email;
};
this.verifyToken = function (encodedToken, attributes, cb) {
const validator = new JwtTokenValidatorIAS(configArr, config, attributes);
validator.validateToken(encodedToken, function (err, tokenInfo) {
if (err) {
try {
cb(err, null, tokenInfo);
} catch(e) {
debugError("xssec: Unhandled Exception in Callback");
debugError(e);
}
return;
}
tokenInfo = tokenInfo;
token = encodedToken;
const decodedToken = tokenInfo.getPayload();
let givenName, familyName;
if (decodedToken.ext_attr) {
givenName = decodedToken.ext_attr.given_name || null;
familyName = decodedToken.ext_attr.family_name || null;
}
userInfo.givenName = givenName || decodedToken.given_name || '';
userInfo.familyName = familyName || decodedToken.family_name || '';
userInfo.email = decodedToken.email || '';
userInfo.logonName = decodedToken.user_name || decodedToken.email || decodedToken.user_uuid || '';
try {
cb(null, this, tokenInfo);
} catch(e) {
debugError("xssec: Unhandled Exception in Callback");
debugError(e);
}
}.bind(this));
};
};