@@ -23,6 +23,7 @@ import {
2323} from "@openid/appauth/built/authorization_request_handler" ;
2424import { AuthorizationResponse } from "@openid/appauth/built/authorization_response" ;
2525import { AuthorizationServiceConfiguration } from "@openid/appauth/built/authorization_service_configuration" ;
26+ import { NodeCrypto } from '@openid/appauth/built/node_support/' ;
2627import { NodeBasedHandler } from "@openid/appauth/built/node_support/node_request_handler" ;
2728import { NodeRequestor } from "@openid/appauth/built/node_support/node_requestor" ;
2829import {
@@ -83,7 +84,12 @@ export class AuthFlow {
8384 this . notifier . setAuthorizationListener ( ( request , response , error ) => {
8485 log ( "Authorization request complete " , request , response , error ) ;
8586 if ( response ) {
86- this . makeRefreshTokenRequest ( response . code )
87+ let codeVerifier : string | undefined ;
88+ if ( request . internal && request . internal . code_verifier ) {
89+ codeVerifier = request . internal . code_verifier ;
90+ }
91+
92+ this . makeRefreshTokenRequest ( response . code , codeVerifier )
8793 . then ( result => this . performWithFreshTokens ( ) )
8894 . then ( ( ) => {
8995 this . authStateEmitter . emit ( AuthStateEmitter . ON_TOKEN_RESPONSE ) ;
@@ -115,14 +121,14 @@ export class AuthFlow {
115121 }
116122
117123 // create a request
118- const request = new AuthorizationRequest (
119- clientId ,
120- redirectUri ,
121- scope ,
122- AuthorizationRequest . RESPONSE_TYPE_CODE ,
123- undefined /* state */ ,
124- extras
125- ) ;
124+ const request = new AuthorizationRequest ( {
125+ client_id : clientId ,
126+ redirect_uri : redirectUri ,
127+ scope : scope ,
128+ response_type : AuthorizationRequest . RESPONSE_TYPE_CODE ,
129+ state : undefined ,
130+ extras : extras
131+ } , new NodeCrypto ( ) ) ;
126132
127133 log ( "Making authorization request " , this . configuration , request ) ;
128134
@@ -132,19 +138,27 @@ export class AuthFlow {
132138 ) ;
133139 }
134140
135- private makeRefreshTokenRequest ( code : string ) : Promise < void > {
141+ private makeRefreshTokenRequest ( code : string , codeVerifier : string | undefined ) : Promise < void > {
136142 if ( ! this . configuration ) {
137143 log ( "Unknown service configuration" ) ;
138144 return Promise . resolve ( ) ;
139145 }
146+
147+ const extras : StringMap = { } ;
148+
149+ if ( codeVerifier ) {
150+ extras . code_verifier = codeVerifier ;
151+ }
152+
140153 // use the code to make the token request.
141- let request = new TokenRequest (
142- clientId ,
143- redirectUri ,
144- GRANT_TYPE_AUTHORIZATION_CODE ,
145- code ,
146- undefined
147- ) ;
154+ let request = new TokenRequest ( {
155+ client_id : clientId ,
156+ redirect_uri : redirectUri ,
157+ grant_type : GRANT_TYPE_AUTHORIZATION_CODE ,
158+ code : code ,
159+ refresh_token : undefined ,
160+ extras : extras
161+ } ) ;
148162
149163 return this . tokenHandler
150164 . performTokenRequest ( this . configuration , request )
@@ -179,13 +193,15 @@ export class AuthFlow {
179193 // do nothing
180194 return Promise . resolve ( this . accessTokenResponse . accessToken ) ;
181195 }
182- let request = new TokenRequest (
183- clientId ,
184- redirectUri ,
185- GRANT_TYPE_REFRESH_TOKEN ,
186- undefined ,
187- this . refreshToken
188- ) ;
196+ let request = new TokenRequest ( {
197+ client_id : clientId ,
198+ redirect_uri : redirectUri ,
199+ grant_type : GRANT_TYPE_REFRESH_TOKEN ,
200+ code : undefined ,
201+ refresh_token : this . refreshToken ,
202+ extras : undefined
203+ } ) ;
204+
189205 return this . tokenHandler
190206 . performTokenRequest ( this . configuration , request )
191207 . then ( response => {
0 commit comments