@@ -62,7 +62,7 @@ export class JoseUtil {
6262 }
6363 }
6464
65- static _validateJwt ( jwt , key , issuer , audience , clockSkew , now ) {
65+ static validateJwtAttributes ( jwt , issuer , audience , clockSkew , now ) {
6666 if ( ! clockSkew ) {
6767 clockSkew = 0 ;
6868 }
@@ -91,6 +91,10 @@ export class JoseUtil {
9191 Log . error ( "JoseUtil._validateJwt: Invalid audience in token" , payload . aud ) ;
9292 return Promise . reject ( new Error ( "Invalid audience in token: " + payload . aud ) ) ;
9393 }
94+ if ( payload . azp && payload . azp !== audience ) {
95+ Log . error ( "JoseUtil._validateJwt: Invalid azp in token" , payload . azp ) ;
96+ return Promise . reject ( new Error ( "Invalid azp in token: " + payload . azp ) ) ;
97+ }
9498
9599 var lowerNow = now + clockSkew ;
96100 var upperNow = now - clockSkew ;
@@ -118,18 +122,25 @@ export class JoseUtil {
118122 return Promise . reject ( new Error ( "exp is in the past:" + payload . exp ) ) ;
119123 }
120124
121- try {
122- if ( ! jws . JWS . verify ( jwt , key , AllowedSigningAlgs ) ) {
123- Log . error ( "JoseUtil._validateJwt: signature validation failed" ) ;
125+ return Promise . resolve ( payload ) ;
126+ }
127+
128+ static _validateJwt ( jwt , key , issuer , audience , clockSkew , now ) {
129+
130+ return JoseUtil . validateJwtAttributes ( jwt , issuer , audience , clockSkew , now ) . then ( payload => {
131+ try {
132+ if ( ! jws . JWS . verify ( jwt , key , AllowedSigningAlgs ) ) {
133+ Log . error ( "JoseUtil._validateJwt: signature validation failed" ) ;
134+ return Promise . reject ( new Error ( "signature validation failed" ) ) ;
135+ }
136+
137+ return payload ;
138+ }
139+ catch ( e ) {
140+ Log . error ( e && e . message || e ) ;
124141 return Promise . reject ( new Error ( "signature validation failed" ) ) ;
125142 }
126- }
127- catch ( e ) {
128- Log . error ( e && e . message || e ) ;
129- return Promise . reject ( new Error ( "signature validation failed" ) ) ;
130- }
131-
132- return Promise . resolve ( ) ;
143+ } ) ;
133144 }
134145
135146 static hashString ( value , alg ) {
0 commit comments