@@ -21,12 +21,13 @@ export const handleTokenRequest = <T extends object>({
2121 cNonceExpiresIn, // expiration in seconds
2222 issuer,
2323 interval,
24- dPoPVerifyJwtCallback,
25- requireDPoP,
24+ dpop,
2625} : Required < Pick < ITokenEndpointOpts , 'accessTokenIssuer' | 'cNonceExpiresIn' | 'interval' | 'accessTokenSignerCallback' | 'tokenExpiresIn' > > & {
2726 issuer : VcIssuer < T >
28- dPoPVerifyJwtCallback ?: DPoPVerifyJwtCallback
29- requireDPoP ?: boolean
27+ dpop ?: {
28+ requireDPoP ?: boolean
29+ dPoPVerifyJwtCallback : DPoPVerifyJwtCallback
30+ }
3031 // The full URL of the access token endpoint
3132 accessTokenEndpoint ?: string
3233} ) => {
@@ -52,18 +53,20 @@ export const handleTokenRequest = <T extends object>({
5253 }
5354
5455 let dPoPJwk : JWK | undefined
55- if ( requireDPoP && ! request . headers . dpop ) {
56+ if ( dpop ?. requireDPoP && ! request . headers . dpop ) {
5657 return sendErrorResponse ( response , 400 , {
5758 error : TokenErrorResponse . invalid_request ,
58- error_description : 'DPoP is required for requesting access tokens' ,
59+ error_description : 'DPoP is required for requesting access tokens. ' ,
5960 } )
6061 }
6162
6263 if ( request . headers . dpop ) {
63- if ( ! dPoPVerifyJwtCallback ) {
64+ if ( ! dpop ) {
65+ console . error ( 'Received unsupported DPoP header. The issuer is not configured to work with DPoP. Provide DPoP options for it to work.' )
66+
6467 return sendErrorResponse ( response , 400 , {
6568 error : TokenErrorResponse . invalid_request ,
66- error_description : 'DPOP is not supported ' ,
69+ error_description : 'Received unsupported DPoP header. ' ,
6770 } )
6871 }
6972
@@ -72,7 +75,7 @@ export const handleTokenRequest = <T extends object>({
7275 dPoPJwk = await verifyDPoP (
7376 { method : request . method , headers : request . headers , fullUrl } ,
7477 {
75- jwtVerifyCallback : dPoPVerifyJwtCallback ,
78+ jwtVerifyCallback : dpop . dPoPVerifyJwtCallback ,
7679 expectAccessToken : false ,
7780 maxIatAgeInSeconds : undefined ,
7881 } ,
0 commit comments