@@ -29,17 +29,7 @@ module.exports = function (env, clientConfig) {
29
29
_signin ( idp )
30
30
. then ( result => resolve ( result ) )
31
31
. catch ( err => {
32
- if ( err . message &&
33
- (
34
- / E N O T F O U N D | E T I M E D O U T | E N E T U N R E A C H | E H O S T U N R E A C H | E C O N N R E F U S E D | E H O S T D O W N | E S O C K E T T I M E D O U T | E C O N N R E S E T / . test ( err . message )
35
- ||
36
- err . message === 'Error: socket hang up'
37
- )
38
- ) {
39
- err = new OidcError ( err . message , 'E_BLN_OIDC_NETWORK' ) ;
40
- }
41
-
42
- reject ( err ) ;
32
+ reject ( _checkForNetworkErrors ( err ) ) ;
43
33
} )
44
34
} ) ;
45
35
}
@@ -50,60 +40,15 @@ module.exports = function (env, clientConfig) {
50
40
fetchServiceConfiguration ( ) . then ( config => {
51
41
configuration = config ;
52
42
initIdp ( ) ;
53
- var oidcAuth = clientConfig . get ( 'oidcProvider' ) ;
54
-
55
- if ( oidcAuth ) {
56
- clientConfig . retrieveSecret ( 'refreshToken' ) . then ( ( secret ) => {
57
- logger . info ( 'found refreshToken, trying to request new access token' , {
58
- category : 'openid-connect'
59
- } ) ;
60
-
61
- makeAccessTokenRequest ( configuration , secret ) . then ( ( response ) => {
62
- _storeSecrets ( response )
63
- . then ( ( ) => {
64
- clientConfig . set ( 'accessTokenExpires' , response . issuedAt + response . expiresIn ) ;
65
- resolve ( ) ;
66
- } )
67
- . catch ( err => {
68
- logger . error ( 'Could not store accessToken' , { catgory : 'openid-connect' , err} ) ;
69
- reject ( err ) ;
70
- } ) ;
71
- } ) . catch ( ( error ) => {
72
- logger . info ( 'failed to retrieve accessToken, request new refreshToken' , { category : 'openid-connect' , error} ) ;
73
-
74
- makeAuthorizationRequest ( )
75
- . then ( ( ) => {
76
- resolve ( true ) ;
77
- } )
78
- . catch ( ( error ) => {
79
- logger . error ( 'failed to retrieve refreshToken' , {
80
- category : 'openid-connect' ,
81
- error : error
82
- } ) ;
83
-
84
- reject ( error ) ;
85
- } ) ;
86
- } ) ;
87
- } ) . catch ( ( error ) => {
88
- logger . error ( 'failed to read refreshToken from secret store' , {
89
- category : 'openid-connect' ,
90
- error : error
91
- } ) ;
92
43
93
- reject ( error ) ;
44
+ makeAuthorizationRequest ( ) . then ( resolve ) . catch ( ( error ) => {
45
+ logger . error ( 'failed to retrieve refreshToken' , {
46
+ category : 'openid-connect' ,
47
+ error : error
94
48
} ) ;
95
- } else {
96
- makeAuthorizationRequest ( ) . then ( ( respone ) => {
97
- resolve ( true ) ;
98
- } ) . catch ( ( error ) => {
99
- logger . error ( 'failed to retrieve refreshToken' , {
100
- category : 'openid-connect' ,
101
- error : error
102
- } ) ;
103
49
104
- reject ( error ) ;
105
- } ) ;
106
- }
50
+ reject ( error ) ;
51
+ } ) ;
107
52
} ) . catch ( reject ) ; //catch fetchServiceConfiguration
108
53
} ) ;
109
54
}
@@ -241,6 +186,55 @@ module.exports = function (env, clientConfig) {
241
186
} ) ;
242
187
}
243
188
189
+ function refreshAccessToken ( idp ) {
190
+ return new Promise ( function ( resolve , reject ) {
191
+ _refreshAccessToken ( idp )
192
+ . then ( resolve )
193
+ . catch ( err => {
194
+ reject ( _checkForNetworkErrors ( err ) ) ;
195
+ } )
196
+ } ) ;
197
+ }
198
+
199
+ function _refreshAccessToken ( idp ) {
200
+ idpConfig = idp ;
201
+ return new Promise ( ( resolve , reject ) => {
202
+ fetchServiceConfiguration ( ) . then ( config => {
203
+ configuration = config ;
204
+ initIdp ( ) ;
205
+
206
+ clientConfig . retrieveSecret ( 'refreshToken' ) . then ( ( secret ) => {
207
+ logger . info ( 'found refreshToken, trying to request new access token' , {
208
+ category : 'openid-connect'
209
+ } ) ;
210
+
211
+ makeAccessTokenRequest ( configuration , secret ) . then ( ( response ) => {
212
+ _storeSecrets ( response )
213
+ . then ( ( ) => {
214
+ clientConfig . set ( 'accessTokenExpires' , response . issuedAt + response . expiresIn ) ;
215
+ resolve ( ) ;
216
+ } )
217
+ . catch ( err => {
218
+ logger . error ( 'Could not store accessToken' , { catgory : 'openid-connect' , err} ) ;
219
+ reject ( err ) ;
220
+ } ) ;
221
+ } ) . catch ( ( error ) => {
222
+ logger . info ( 'failed to refresh accessToken' , { category : 'openid-connect' , error} ) ;
223
+
224
+ reject ( error ) ;
225
+ } ) ;
226
+ } ) . catch ( ( error ) => {
227
+ logger . error ( 'failed to read refreshToken from secret store' , {
228
+ category : 'openid-connect' ,
229
+ error : error
230
+ } ) ;
231
+
232
+ reject ( error ) ;
233
+ } ) ;
234
+ } ) . catch ( reject ) ;
235
+ } ) ;
236
+ }
237
+
244
238
function makeRevokeTokenRequest ( configuration , refreshToken ) {
245
239
let options = {
246
240
token : refreshToken ,
@@ -298,8 +292,23 @@ module.exports = function (env, clientConfig) {
298
292
return Promise . all ( promises )
299
293
}
300
294
295
+ function _checkForNetworkErrors ( err ) {
296
+ if ( err . message &&
297
+ (
298
+ / E N O T F O U N D | E T I M E D O U T | E N E T U N R E A C H | E H O S T U N R E A C H | E C O N N R E F U S E D | E H O S T D O W N | E S O C K E T T I M E D O U T | E C O N N R E S E T / . test ( err . message )
299
+ ||
300
+ err . message === 'Error: socket hang up'
301
+ )
302
+ ) {
303
+ err = new OidcError ( err . message , 'E_BLN_OIDC_NETWORK' ) ;
304
+ }
305
+
306
+ return err ;
307
+ }
308
+
301
309
return {
302
310
signin,
303
- revokeToken
311
+ revokeToken,
312
+ refreshAccessToken,
304
313
} ;
305
314
} ;
0 commit comments