@@ -113,6 +113,14 @@ import { jwtVerify, createRemoteJWKSet } from 'jose';
113113
114114export default {
115115 async fetch (request , env , ctx ) {
116+ // Verify the POLICY_AUD environment variable is set
117+ if (! env .POLICY_AUD ) {
118+ return new Response (' Missing required audience' , {
119+ status: 403 ,
120+ headers: { ' Content-Type' : ' text/plain' }
121+ });
122+ }
123+
116124 // Get the JWT from the request headers
117125 const token = request .headers .get (' cf-access-jwt-assertion' );
118126
@@ -268,6 +276,10 @@ def verify_token(f):
268276 Decorator that wraps a Flask API call to verify the CF Access JWT
269277 """
270278 def wrapper ():
279+ # Check for the POLICY_AUD environment variable
280+ if not POLICY_AUD :
281+ return " missing required audience" , 403
282+
271283 token = ' '
272284 if ' CF_Authorization' in request.cookies:
273285 token = request.cookies[' CF_Authorization' ]
@@ -319,6 +331,14 @@ const JWKS = jose.createRemoteJWKSet(new URL(CERTS_URL));
319331
320332// verifyToken is a middleware to verify a CF authorization token
321333const verifyToken = async (req , res , next ) => {
334+ // Check for the AUD environment variable
335+ if (! AUD ) {
336+ return res .status (403 ).send ({
337+ status: false ,
338+ message: " missing required audience" ,
339+ });
340+ }
341+
322342 const token = req .headers [" cf-access-jwt-assertion" ];
323343
324344 // Make sure that the incoming request has our token header
@@ -329,13 +349,20 @@ const verifyToken = async (req, res, next) => {
329349 });
330350 }
331351
332- const result = await jose .jwtVerify (token, JWKS , {
333- issuer: TEAM_DOMAIN ,
334- audience: AUD ,
335- });
352+ try {
353+ const result = await jose .jwtVerify (token, JWKS , {
354+ issuer: TEAM_DOMAIN ,
355+ audience: AUD ,
356+ });
336357
337- req .user = result .payload ;
338- next ();
358+ req .user = result .payload ;
359+ next ();
360+ } catch (err) {
361+ return res .status (403 ).send ({
362+ status: false ,
363+ message: " invalid token" ,
364+ });
365+ }
339366};
340367
341368const app = express ();
@@ -347,4 +374,4 @@ app.get("/", (req, res) => {
347374});
348375
349376app .listen (3333 );
350- ```
377+ ```
0 commit comments