UNPKG

@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
"use strict"; 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