@microsoft/teams.apps
Version:
<p> <a href="https://www.npmjs.com/package/@microsoft/teams.apps" target="_blank"> <img src="https://img.shields.io/npm/v/@microsoft/teams.apps/latest" /> </a> <a href="https://www.npmjs.com/package/@microsoft/teams.apps?activeTab=code
38 lines • 3.09 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.withRemoteFunctionJwtValidation = withRemoteFunctionJwtValidation;
const remote_function_validator_1 = require("./auth/remote-function-validator");
/**
* JWT validation middleware used to validate the entra token when remote functions are invoked.
*/
function withRemoteFunctionJwtValidation(params) {
const entraTokenValidator = params.entraTokenValidator;
const log = params.logger;
// Create the validator once
const validator = entraTokenValidator
? new remote_function_validator_1.RemoteFunctionValidator(entraTokenValidator, log)
: null;
return async (req, res, next) => {
if (!validator) {
log.debug('unauthorized - no token validator configured');
res.status(401).send('unauthorized');
return;
}
// Convert Express headers to plain object
const headers = {};
Object.keys(req.headers).forEach(key => {
const value = req.headers[key];
if (typeof value === 'string') {
headers[key.toLowerCase()] = value;
}
});
const context = await validator.check(headers);
if (!context) {
res.status(401).send('unauthorized');
return;
}
req.context = context;
next();
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1yZW1vdGUtZnVuY3Rpb24tand0LXZhbGlkYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWlkZGxld2FyZS93aXRoLXJlbW90ZS1mdW5jdGlvbi1qd3QtdmFsaWRhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQXNCQSwwRUF3Q0M7QUF0REQsZ0ZBQTJFO0FBVzNFOztHQUVHO0FBQ0gsU0FBZ0IsK0JBQStCLENBQzdDLE1BQTZDO0lBRTdDLE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDO0lBQ3ZELE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFFMUIsNEJBQTRCO0lBQzVCLE1BQU0sU0FBUyxHQUFHLG1CQUFtQjtRQUNuQyxDQUFDLENBQUMsSUFBSSxtREFBdUIsQ0FBQyxtQkFBbUIsRUFBRSxHQUFHLENBQUM7UUFDdkQsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUVULE9BQU8sS0FBSyxFQUNWLEdBQTZCLEVBQzdCLEdBQXFCLEVBQ3JCLElBQTBCLEVBQzFCLEVBQUU7UUFDRixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDZixHQUFHLENBQUMsS0FBSyxDQUFDLDhDQUE4QyxDQUFDLENBQUM7WUFDMUQsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDckMsT0FBTztRQUNULENBQUM7UUFFRCwwQ0FBMEM7UUFDMUMsTUFBTSxPQUFPLEdBQTJCLEVBQUUsQ0FBQztRQUMzQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDckMsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMvQixJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUM5QixPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQ3JDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sT0FBTyxHQUFHLE1BQU0sU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDYixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNyQyxPQUFPO1FBQ1QsQ0FBQztRQUVELEdBQUcsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3RCLElBQUksRUFBRSxDQUFDO0lBQ1QsQ0FBQyxDQUFDO0FBQ0osQ0FBQyJ9