From 74b5ba432d7a42c1fdfaa7182b31f8f5ddd6f3f8 Mon Sep 17 00:00:00 2001 From: marty30 Date: Wed, 27 Oct 2021 15:35:25 +0200 Subject: [PATCH 1/2] Check for (almost) expired tokens on refocussing the application. Add a retry mechanism that retries refreshing the tokens to avoid missing a refresh because the network was a bit spotty. --- docs/classes/AuthConfig.html | 55 ++- docs/injectables/OAuthService.html | 693 +++++++++++++++++++++-------- docs/js/search/search_index.js | 4 +- projects/lib/package.json | 2 +- projects/lib/src/auth.config.ts | 6 + projects/lib/src/oauth-service.ts | 107 ++++- 6 files changed, 664 insertions(+), 203 deletions(-) diff --git a/docs/classes/AuthConfig.html b/docs/classes/AuthConfig.html index 608705f9..0e2c9308 100644 --- a/docs/classes/AuthConfig.html +++ b/docs/classes/AuthConfig.html @@ -146,6 +146,11 @@
Properties
Optional logoutUrl +
  • + Public + Optional + maxRefreshRetries +
  • Public Optional @@ -340,7 +345,7 @@

    Constructor

    - + @@ -873,6 +878,46 @@

    The logout url.

    +
    + + + + + + + + + + + + + + + + + + + + + + @@ -981,7 +1026,7 @@

    @@ -2378,6 +2423,12 @@

    */ public disablePKCE? = false; + /** + * Give a max number of retries that can be used for refreshing a token. + * Exponential back-off is used to prevent overloading the iDP. + */ + public maxRefreshRetries? = 1; + constructor(json?: Partial<AuthConfig>) { if (json) { Object.assign(this, json); diff --git a/docs/injectables/OAuthService.html b/docs/injectables/OAuthService.html index 9ca0bd05..566e5e8d 100644 --- a/docs/injectables/OAuthService.html +++ b/docs/injectables/OAuthService.html @@ -229,6 +229,11 @@

    Properties
    OptionallogoutUrl +
  • + Public + Optional + maxRefreshRetries +
  • Public Optional @@ -643,6 +648,7 @@
    Methods
  • Protected + Async refreshInternal
  • @@ -705,6 +711,18 @@
    Methods
    Protected setupSilentRefreshEventListener
  • +
  • + Protected + shouldRefresh +
  • +
  • + Protected + shouldRefreshAccessToken +
  • +
  • + Protected + shouldRefreshIdToken +
  • Public silentRefresh @@ -792,7 +810,7 @@

    Constructor

  • @@ -965,8 +983,8 @@

    @@ -1047,8 +1065,8 @@

    @@ -1089,8 +1107,8 @@

    @@ -1171,8 +1189,8 @@

    @@ -1241,8 +1259,8 @@

    @@ -1311,8 +1329,8 @@

    @@ -1351,8 +1369,8 @@

    @@ -1421,8 +1439,8 @@

    @@ -1460,8 +1478,8 @@

    @@ -1530,8 +1548,8 @@

    @@ -1569,8 +1587,8 @@

    @@ -1608,8 +1626,8 @@

    @@ -1647,8 +1665,8 @@

    @@ -1686,8 +1704,8 @@

    @@ -1764,8 +1782,8 @@

    @@ -1804,8 +1822,8 @@

    @@ -1937,8 +1955,8 @@

    @@ -1976,8 +1994,8 @@

    @@ -2046,8 +2064,8 @@

    @@ -2163,8 +2181,8 @@

    @@ -2276,8 +2294,8 @@

    @@ -2395,8 +2413,8 @@

    @@ -2436,8 +2454,8 @@

    @@ -2478,8 +2496,8 @@

    @@ -2517,8 +2535,8 @@

    @@ -2589,8 +2607,8 @@

    @@ -2630,8 +2648,8 @@

    @@ -2671,8 +2689,8 @@

    @@ -2712,8 +2730,8 @@

    @@ -2754,8 +2772,8 @@

    @@ -2793,8 +2811,8 @@

    @@ -2832,8 +2850,8 @@

    @@ -2871,8 +2889,8 @@

    @@ -2953,8 +2971,8 @@

    @@ -2992,8 +3010,8 @@

    @@ -3031,8 +3049,8 @@

    @@ -3070,8 +3088,8 @@

    @@ -3111,8 +3129,8 @@

    @@ -3152,8 +3170,8 @@

    @@ -3244,8 +3262,8 @@

    @@ -3349,8 +3367,8 @@

    @@ -3421,8 +3439,8 @@

    @@ -3510,8 +3528,8 @@

    @@ -3602,8 +3620,8 @@

    @@ -3672,8 +3690,8 @@

    @@ -3711,8 +3729,8 @@

    @@ -3791,8 +3809,8 @@

    @@ -3870,8 +3888,8 @@

    @@ -3953,8 +3971,8 @@

    @@ -3992,8 +4010,8 @@

    @@ -4035,8 +4053,8 @@

    @@ -4078,8 +4096,8 @@

    @@ -4148,8 +4166,8 @@

    @@ -4218,8 +4236,8 @@

    @@ -4300,8 +4318,8 @@

    @@ -4389,8 +4407,8 @@

    @@ -4455,8 +4473,8 @@

    @@ -4510,6 +4528,7 @@

    Protected + Async refreshInternal @@ -4525,8 +4544,8 @@

    @@ -4600,8 +4619,8 @@

    @@ -4645,8 +4664,8 @@

    @@ -4684,8 +4703,8 @@

    @@ -4723,8 +4742,8 @@

    @@ -4764,8 +4783,8 @@

    @@ -4803,8 +4822,8 @@

    @@ -4842,8 +4861,8 @@

    @@ -4934,8 +4953,8 @@

    @@ -4973,8 +4992,8 @@

    @@ -5091,8 +5110,8 @@

    @@ -5130,8 +5149,8 @@

    @@ -5169,8 +5188,8 @@

    @@ -5208,8 +5227,8 @@

    @@ -5247,8 +5266,8 @@

    @@ -5286,8 +5305,8 @@

    @@ -5303,6 +5322,166 @@

    + + + Public + Optional + maxRefreshRetries + + +
    + Type : number + +
    + Default value : 1 +
    + +
    +

    Give a max number of retries that can be used for refreshing a token. +Exponential back-off is used to prevent overloading the iDP.

    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    + + + + + + + + + + + + + + + + + + + +
    + + + Protected + shouldRefresh + + +
    + + shouldRefresh(storedAt: number, expiration: number) +
    + +
    + +
    + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeOptional
    storedAt + number + + No +
    expiration + number + + No +
    +
    +
    +
    +
    + Returns : boolean + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + +
    + + + Protected + shouldRefreshAccessToken + + +
    + + shouldRefreshAccessToken() +
    + +
    + +
    + Returns : boolean + +
    +
    + + + + + + + + + + + + + + + + + + + +
    + + + Protected + shouldRefreshIdToken + + +
    + + shouldRefreshIdToken() +
    + +
    + +
    + Returns : boolean + +
    +
    @@ -5325,8 +5504,8 @@

    @@ -5417,8 +5596,8 @@

    @@ -5456,8 +5635,8 @@

    @@ -5498,8 +5677,8 @@

    @@ -5537,8 +5716,8 @@

    @@ -5655,8 +5834,8 @@

    @@ -5725,8 +5904,8 @@

    @@ -5795,8 +5974,8 @@

    @@ -5876,8 +6055,8 @@

    @@ -5950,8 +6129,8 @@

    @@ -6034,8 +6213,8 @@

    @@ -6104,8 +6283,8 @@

    @@ -6174,8 +6353,8 @@

    @@ -6244,8 +6423,8 @@

    @@ -6314,8 +6493,8 @@

    @@ -6384,8 +6563,8 @@

    @@ -7514,6 +7693,53 @@

    + + + +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +

    The logout url.

    +
    +
    + + + + + + + + + + + + + + + + + + + + @@ -7642,7 +7868,7 @@

    @@ -9105,6 +9331,7 @@

    protected saveNoncesInLocalStorage = false; private document: Document; + private focusEventListener: () => void; constructor( protected ngZone: NgZone, @@ -9224,15 +9451,41 @@

    listenTo?: 'access_token' | 'id_token' | 'any', noPrompt = true ): void { + this.focusEventListener = async () => { + // When the user is not actively using the application, the token_expires + // event might not be fired at the right time, or the refresh request might + // have failed. So check if the token is (almost) expired when the user + // refocusses the application and trigger the event manually. + if (this.shouldRefreshIdToken()) { + this.clearIdTokenTimer(); + this.eventsSubject.next( + new OAuthInfoEvent('token_expires', 'id_token') + ); + } + if (this.shouldRefreshAccessToken()) { + this.clearAccessTokenTimer(); + this.eventsSubject.next( + new OAuthInfoEvent('token_expires', 'access_token') + ); + } + }; + let shouldRunSilentRefresh = true; + let hasFocusEventListenerAdded = false; this.clearAutomaticRefreshTimer(); this.automaticRefreshSubscription = this.events .pipe( tap((e) => { if (e.type === 'token_received') { shouldRunSilentRefresh = true; + if (!hasFocusEventListenerAdded) { + window.addEventListener('focus', this.focusEventListener); + hasFocusEventListenerAdded = true; + } } else if (e.type === 'logout') { shouldRunSilentRefresh = false; + window.removeEventListener('focus', this.focusEventListener); + hasFocusEventListenerAdded = false; } }), filter( @@ -9244,24 +9497,46 @@

    ) .subscribe((_) => { if (shouldRunSilentRefresh) { - // this.silentRefresh(params, noPrompt).catch(_ => { - this.refreshInternal(params, noPrompt).catch((_) => { - this.debug('Automatic silent refresh did not work'); + this.refreshInternal(params, noPrompt).catch((e) => { + this.debug('Automatic silent refresh did not work', e); }); } }); - this.restartRefreshTimerIfStillLoggedIn(); } - protected refreshInternal( + protected async refreshInternal( params, noPrompt ): Promise<TokenResponse | OAuthEvent> { - if (!this.useSilentRefresh && this.responseType === 'code') { - return this.refreshToken(); - } else { - return this.silentRefresh(params, noPrompt); + const wrapperFun = () => { + if (!this.useSilentRefresh && this.responseType === 'code') { + return this.refreshToken(); + } else { + return this.silentRefresh(params, noPrompt); + } + }; + + let attempt = 0; + let lastError; + while (attempt < this.maxRefreshRetries) { + // Exponential backoff (scaled to tenths of seconds) + const sleepTime = attempt * attempt * 100; + await new Promise<void>((resolve) => { + setTimeout(() => { + resolve(); + }, sleepTime); + }); + try { + return await wrapperFun(); + } catch (e) { + lastError = e; + this.debug('Automatic silent refresh failed', e); + attempt++; + } + } + if (lastError) { + throw lastError; } } @@ -9415,6 +9690,17 @@

    const timeout = this.calcTimeout(storedAt, expiration); this.ngZone.runOutsideAngular(() => { + // if (this.useWebworkerForTimer) { + // workerTimers.setTimeout(() => { + // this.accessTokenTimeoutSubscription = of( + // new OAuthInfoEvent('token_expires', 'access_token') + // ).subscribe((e) => { + // this.ngZone.run(() => { + // this.eventsSubject.next(e); + // }); + // }); + // }, timeout); + // } else { this.accessTokenTimeoutSubscription = of( new OAuthInfoEvent('token_expires', 'access_token') ) @@ -9424,6 +9710,7 @@

    this.eventsSubject.next(e); }); }); + // } }); } @@ -9433,6 +9720,17 @@

    const timeout = this.calcTimeout(storedAt, expiration); this.ngZone.runOutsideAngular(() => { + // if (this.useWebworkerForTimer) { + // workerTimers.setTimeout(() => { + // this.accessTokenTimeoutSubscription = of( + // new OAuthInfoEvent('token_expires', 'id_token') + // ).subscribe((e) => { + // this.ngZone.run(() => { + // this.eventsSubject.next(e); + // }); + // }); + // }, timeout); + // } else { this.idTokenTimeoutSubscription = of( new OAuthInfoEvent('token_expires', 'id_token') ) @@ -9442,6 +9740,7 @@

    this.eventsSubject.next(e); }); }); + // } }); } @@ -9480,6 +9779,22 @@

    return Math.max(0, delta); } + protected shouldRefresh(storedAt: number, expiration: number): boolean { + return this.calcTimeout(storedAt, expiration) <= 0; + } + + protected shouldRefreshAccessToken(): boolean { + const expiration = this.getAccessTokenExpiration(); + const storedAt = this.getAccessTokenStoredAt(); + return !isNaN(storedAt) && this.shouldRefresh(storedAt, expiration); + } + + protected shouldRefreshIdToken(): boolean { + const expiration = this.getIdTokenExpiration(); + const storedAt = this.getIdTokenStoredAt(); + return !isNaN(storedAt) && this.shouldRefresh(storedAt, expiration); + } + /** * DEPRECATED. Use a provider for OAuthStorage instead: * diff --git a/docs/js/search/search_index.js b/docs/js/search/search_index.js index 6be81189..c27747e8 100644 --- a/docs/js/search/search_index.js +++ b/docs/js/search/search_index.js @@ -1,4 +1,4 @@ var COMPODOC_SEARCH_INDEX = { - "index": {"version":"2.3.9","fields":["title","body"],"fieldVectors":[["title/classes/AbstractValidationHandler.html",[0,0.185,1,3.19]],["body/classes/AbstractValidationHandler.html",[0,0.178,1,3.071,2,0.903,3,0.524,4,0.571,5,0.479,6,3.114,7,4.314,8,1.35,9,1.733,10,1.813,11,1.518,12,2.227,13,2.65,14,1.914,15,1.914,16,3.991,17,2.216,18,1.317,19,3.071,20,3.991,21,0.622,22,1.518,23,4.94,24,4.327,25,3.656,26,3.383,27,2.269,28,1.945,29,4.441,30,1.02,31,2.923,32,3.358,33,2.233,34,2.388,35,2.102,36,0.96,37,1.491,38,0.016,39,1.599,40,1.066,41,1.113,42,3.383,43,1.835,44,2.423,45,3.358,46,2.051,47,2.923,48,3.358,49,4.419,50,3.358,51,2.179,52,3.358,53,3.358,54,1.903,55,2.841,56,3.358,57,4.419,58,2.923,59,4.517,60,4.314,61,3.656,62,1.731,63,1.887,64,1.071,65,2.841,66,2.923,67,3.383,68,0.479,69,2.074,70,2.074,71,2.269,72,0.599,73,1.454,74,1.285,75,1.285,76,1.285,77,1.285,78,1.42,79,2.269,80,2.269,81,2.269,82,1.226,83,0.942,84,2.344,85,3.358,86,2.269,87,2.269,88,1.919,89,2.269,90,2.269,91,2.269,92,0.765,93,2.269,94,2.269,95,2.269,96,2.074,97,4.419,98,2.269,99,4.419,100,2.269,101,2.269,102,2.269,103,0.921,104,3.998,105,2.269,106,2.269,107,2.269,108,1.919,109,0.705,110,2.269,111,1.919,112,2.074,113,2.269,114,0.006,115,0.009,116,0.006]],["title/classes/DateTimeProvider.html",[0,0.185,117,2.952]],["body/classes/DateTimeProvider.html",[0,0.261,2,1.59,3,0.922,4,1.006,5,0.843,10,1.923,21,1.095,22,2.231,30,1.14,38,0.016,43,2.049,68,0.843,72,0.74,103,1.354,109,1.82,114,0.01,115,0.013,116,0.01,117,4.533,118,5.972,119,3.739,120,4.452,121,5.259,122,5.146,123,5.597,124,5.146,125,2.895,126,1.965,127,1.658,128,3.652,129,2.958,130,4.452]],["title/injectables/DefaultHashHandler.html",[126,1.389,131,3.489]],["body/injectables/DefaultHashHandler.html",[0,0.142,3,0.619,4,0.675,5,0.566,6,3.153,8,1.595,10,1.227,20,3.206,21,0.735,22,1.713,25,3.465,27,3.79,28,2.014,29,3.719,30,1.015,37,1.483,38,0.016,39,1.423,40,1.06,41,1.107,42,2.269,43,1.825,44,1.713,68,0.928,72,0.402,88,2.269,103,1.382,108,2.269,109,1.566,114,0.014,115,0.01,116,0.007,125,2.375,126,1.067,127,1.113,131,2.681,132,2.269,133,4.042,134,4.883,135,4.883,136,3.455,137,4.224,138,4.899,139,3.455,140,3.455,141,4.224,142,3.455,143,5.617,144,3.465,145,2.269,146,4.042,147,3.492,148,2.988,149,2.681,150,2.988,151,2.988,152,2.988,153,2.452,154,1.871,155,2.681,156,2.988,157,3.79,158,2.988,159,2.681,160,2.681,161,2.681,162,2.988,163,3.469,164,2.452,165,2.988,166,4.224,167,2.988,168,2.048,169,2.988,170,2.988,171,2.988,172,4.899,173,2.988,174,2.988,175,4.899,176,2.988,177,2.988,178,2.988,179,2.988,180,2.988,181,2.988,182,3.465,183,4.224,184,4.224,185,2.988,186,2.988,187,2.988,188,2.988,189,2.988,190,4.224,191,2.988,192,2.988,193,2.988]],["title/interceptors/DefaultOAuthInterceptor.html",[194,3.889,195,3.19]],["body/interceptors/DefaultOAuthInterceptor.html",[0,0.149,3,0.651,4,0.71,5,0.595,14,1.22,21,0.773,22,1.774,28,0.991,30,0.906,37,1.324,38,0.016,39,1.271,40,0.946,41,1.23,43,1.17,55,3.32,68,1.152,72,0.422,84,3.151,92,0.951,103,1.495,114,0.007,115,0.01,116,0.007,126,1.562,127,1.17,147,2.905,163,2.224,195,3.588,196,3.14,197,5.817,198,3.63,199,5.817,200,2.456,201,3.63,202,2.302,203,5.032,204,3.853,205,5.032,206,3.853,207,3.63,208,3.14,209,5.442,210,5.133,211,5.442,212,3.63,213,5.032,214,3.82,215,3.14,216,4.373,217,1.966,218,4.373,219,2.576,220,3.63,221,3.63,222,1.676,223,3.14,224,3.63,225,4.373,226,3.63,227,2.817,228,0.806,229,1.774,230,2.224,231,2.738,232,2.817,233,2.384,234,2.766,235,3.14,236,1.454,237,3.63,238,3.63,239,3.14,240,3.63,241,3.63,242,0.912,243,3.14,244,3.14,245,3.14,246,3.14,247,3.14,248,3.32,249,3.14,250,5.056,251,5.056,252,4.373,253,3.63,254,1.588,255,3.63,256,3.63,257,2.817,258,2.086,259,3.63,260,3.63,261,3.63,262,3.63,263,3.63,264,3.63,265,3.63,266,3.63,267,3.14,268,4.373,269,3.63,270,3.14]],["title/classes/HashHandler.html",[0,0.185,153,3.19]],["body/classes/HashHandler.html",[0,0.15,2,1.128,3,0.654,4,0.713,5,0.598,6,2.599,8,1.685,9,1.462,10,1.585,20,3.332,21,0.777,22,1.78,27,3.938,28,1.989,29,3.831,30,0.654,37,0.956,38,0.016,39,0.917,40,0.683,41,0.713,42,2.396,43,1.176,44,1.78,68,0.956,72,0.424,88,2.396,103,1.41,108,2.396,109,1.598,114,0.014,115,0.01,116,0.007,125,1.53,126,1.128,127,1.176,133,3.332,137,3.157,138,3.157,141,3.157,143,5.454,144,3.601,145,2.396,146,4.141,147,3.522,148,3.157,149,2.832,150,4.39,151,4.39,152,4.39,153,3.601,154,1.977,155,2.832,156,3.157,157,3.938,158,3.157,159,2.832,160,2.832,161,2.832,162,3.157,163,3.573,164,2.59,165,3.157,166,4.39,167,3.157,168,2.128,169,3.157,170,3.157,171,3.157,172,5.046,173,3.157,174,3.157,175,5.046,176,3.157,177,3.157,178,3.157,179,3.157,180,3.157,181,3.157,182,3.601,183,4.39,184,4.39,185,3.157,186,3.157,187,3.157,188,3.157,189,3.157,190,4.39,191,3.157,192,3.157,193,3.157,271,3.65]],["title/classes/JwksValidationHandler.html",[0,0.185,272,2.754]],["body/classes/JwksValidationHandler.html",[0,0.172,2,1.294,3,0.751,4,0.819,5,0.686,6,2.855,8,1.934,9,1.677,16,3.66,21,0.891,22,1.955,26,3.66,30,1.122,36,0.929,37,1.459,38,0.016,39,1.401,40,1.043,41,1.089,43,1.796,44,1.955,57,4.379,65,2.75,68,1.026,72,0.487,78,2.707,114,0.008,115,0.011,116,0.011,129,3.203,147,1.934,200,3.043,230,2.566,272,4.379,273,4.821,274,3.043,275,4.821,276,5.573,277,4.821,278,5.573,279,2.018,280,4.861,281,2.105,282,5.573,283,2.662,284,1.676,285,1.747,286,5.573,287,4.565,288,4.189,289,3.251,290,4.821,291,4.189,292,4.189,293,1.408,294,2.973,295,2.627,296,1.842,297,3.623,298,2.973,299,2.269,300,3.251,301,2.269,302,2.973,303,2.973,304,1.677,305,1.401,306,3.251,307,4.325,308,3.251,309,2.75,310,2.035,311,1.604,312,2.973,313,1.35,314,2.973,315,3.623,316,2.75,317,0.718,318,2.973,319,3.251,320,3.251,321,3.251,322,4.189,323,4.189]],["title/classes/LoginOptions.html",[0,0.185,324,2.076]],["body/classes/LoginOptions.html",[0,0.203,2,0.584,3,0.552,4,0.369,5,0.31,9,0.757,10,1.561,11,0.663,12,1.429,14,0.635,15,1.036,18,1.229,21,0.402,28,2.148,30,1.047,33,2.275,34,1.292,35,1.497,38,0.016,40,0.994,41,1.368,44,0.663,46,1.596,51,0.993,54,1.355,62,1.785,63,0.692,64,0.692,68,0.31,72,0.703,73,1.665,74,1.355,75,0.831,76,0.831,77,0.831,82,1.292,83,1.449,92,1.626,103,0.402,109,0.456,114,0.004,115,0.006,116,0.004,125,1.292,126,0.952,127,0.609,154,2.112,168,1.886,202,1.883,222,0.873,228,0.684,229,1.081,234,0.831,236,1.562,242,0.774,254,1.227,279,0.993,284,0.743,285,1.13,293,0.635,296,1.355,305,1.335,311,0.724,313,1.882,324,1.423,325,0.968,326,0.46,327,1.423,328,2.077,329,1.355,330,1.801,331,1.998,332,1.998,333,1.998,334,1.998,335,1.715,336,1.998,337,1.89,338,1.512,339,2.697,340,2.38,341,2.049,342,1.578,343,1.722,344,1.578,345,1.355,346,1.578,347,1.886,348,2.077,349,1.355,350,1.578,351,1.844,352,2.304,353,1.578,354,1.423,355,1.497,356,1.578,357,1.497,358,0.993,359,1.89,360,1.129,361,1.355,362,1.578,363,1.998,364,0.993,365,1.423,366,1.978,367,1.89,368,2.077,369,2.077,370,2.335,371,2.185,372,1.578,373,2.304,374,1.578,375,1.578,376,1.578,377,1.578,378,1.89,379,2.077,380,1.355,381,1.355,382,1.292,383,2.304,384,1.578,385,1.497,386,1.89,387,1.978,388,1.578,389,0.993,390,1.497,391,1.497,392,2.453,393,2.034,394,1.978,395,1.89,396,1.423,397,1.894,398,1.89,399,1.578,400,1.292,401,1.497,402,1.036,403,1.355,404,1.578,405,1.578,406,1.578,407,1.578,408,1.355,409,1.578,410,1.89,411,1.355,412,1.578,413,2.406,414,3.257,415,0.793,416,0.724,417,1.578,418,0.873,419,0.692,420,0.831,421,0.873,422,0.918,423,0.873,424,0.968,425,2.537,426,0.968,427,0.968,428,0.968,429,0.968,430,0.918,431,0.757,432,0.968,433,0.635,434,0.793,435,0.831,436,0.793,437,0.918,438,0.918,439,1.234,440,1.578,441,1.578,442,1.578,443,0.918,444,0.968,445,0.968,446,0.968,447,2.537,448,0.831,449,0.584,450,0.968,451,0.918,452,0.968,453,0.968,454,0.968,455,1.423,456,1.234,457,1.578,458,1.635,459,1.497,460,0.968,461,0.873,462,0.968,463,0.968,464,0.831,465,0.609,466,0.609,467,0.968,468,0.831,469,0.968,470,0.918,471,0.584,472,0.663,473,0.609,474,0.918,475,0.692,476,0.968,477,0.968,478,0.968,479,0.968,480,0.968,481,0.968,482,0.968,483,0.968,484,0.968,485,0.968,486,0.968,487,0.968,488,0.968,489,0.968,490,0.968,491,0.968,492,0.968,493,0.968,494,0.968,495,0.968,496,0.968,497,0.968,498,0.968,499,0.968,500,0.968,501,0.968,502,0.968,503,0.968,504,0.968]],["title/injectables/MemoryStorage.html",[126,1.389,443,2.184]],["body/injectables/MemoryStorage.html",[0,0.221,3,0.631,4,0.436,5,0.366,10,1.644,11,0.783,12,0.818,14,0.75,15,0.75,18,1.009,21,0.475,22,1.235,28,2.18,30,0.781,33,2.007,34,0.936,37,1.142,38,0.016,39,1.096,40,0.816,41,0.967,43,1.405,44,0.783,46,1.735,51,1.134,54,1.548,62,1.663,63,0.818,64,0.818,68,0.366,72,0.743,73,1.81,74,1.548,75,0.982,76,0.982,77,0.982,82,0.936,83,1.405,92,1.41,103,0.475,109,0.538,114,0.004,115,0.007,116,0.004,125,1.477,126,1.088,127,0.719,132,1.466,168,2.4,202,1.663,222,1.031,228,0.495,229,0.783,234,0.982,236,1.41,242,0.561,254,1.19,279,0.719,284,0.538,285,0.885,293,0.75,296,0.982,305,1.096,311,0.855,313,1.595,324,1.031,325,1.144,326,0.334,327,1.031,328,1.626,330,1.031,331,1.144,332,1.144,333,1.144,334,1.144,335,0.982,336,1.144,338,1.183,339,2.285,340,2.178,341,1.736,342,1.144,343,1.348,344,1.144,345,0.982,346,1.144,347,1.477,348,1.626,349,0.982,350,1.144,351,1.627,352,1.804,353,1.144,354,1.031,355,1.085,356,1.144,357,1.085,358,0.719,360,0.818,361,0.982,362,1.144,363,1.804,364,0.719,366,1.548,368,1.626,369,1.626,370,1.917,371,1.71,372,1.144,373,1.804,374,1.144,375,1.144,376,1.144,377,1.144,379,2.075,380,0.982,381,0.982,382,0.936,383,2.233,384,1.144,385,1.085,387,1.548,388,1.144,389,0.719,390,1.085,391,1.085,392,2.013,393,1.669,394,1.548,396,1.031,397,1.71,399,1.144,400,0.936,401,1.085,402,0.75,403,0.982,404,1.144,405,1.144,406,1.144,407,1.144,408,0.982,409,1.144,411,0.982,412,1.144,413,2.616,414,3.525,415,0.936,416,0.855,417,1.804,418,1.031,419,0.818,420,0.982,421,1.031,422,1.085,423,1.031,424,1.144,425,2.759,426,1.144,427,1.144,428,1.144,429,1.144,430,1.085,431,0.894,432,1.144,433,0.75,434,0.936,435,0.982,436,0.936,437,1.085,438,1.085,439,1.41,440,2.233,441,2.233,442,2.233,443,1.71,444,1.144,445,1.144,446,1.144,447,2.759,448,0.982,449,0.69,450,1.144,451,1.085,452,1.144,453,1.144,454,1.144,455,1.626,456,1.41,457,1.804,458,1.828,459,1.71,460,1.144,461,1.031,462,1.144,463,1.144,464,0.982,465,0.719,466,0.719,467,1.144,468,0.982,469,1.144,470,2.404,471,0.69,472,0.783,473,0.719,474,1.085,475,0.818,476,1.144,477,1.144,478,1.144,479,1.144,480,1.144,481,1.144,482,1.144,483,1.144,484,1.144,485,1.144,486,1.144,487,1.144,488,1.144,489,1.144,490,1.144,491,1.144,492,1.144,493,1.144,494,1.144,495,1.144,496,1.144,497,1.144,498,1.144,499,1.144,500,1.144,501,1.144,502,1.144,503,1.144,504,1.144,505,3.046,506,3.046,507,3.046,508,2.233,509,2.233,510,2.233]],["title/classes/NullValidationHandler.html",[0,0.185,287,2.952]],["body/classes/NullValidationHandler.html",[0,0.197,2,1.48,3,0.858,4,0.936,5,0.785,6,3.422,8,2.211,9,1.918,12,2.448,14,2.044,16,3.993,21,1.019,22,2.133,26,3.993,30,1.09,37,1.592,38,0.016,39,1.528,40,1.138,41,1.189,43,1.959,44,2.465,57,4.713,65,3.993,68,0.785,72,0.557,103,1.294,114,0.01,115,0.012,116,0.01,230,4.092,274,3.703,287,3.993,289,4.719,340,2.133,511,5.779,512,5.26,513,5.26,514,6.081,515,4.719,516,6.081,517,4.143,518,4.789,519,4.789,520,4.789]],["title/classes/OAuthErrorEvent.html",[0,0.185,521,2.754]],["body/classes/OAuthErrorEvent.html",[0,0.278,2,1.346,3,1.144,4,0.851,5,0.714,10,1.095,30,0.781,37,1.141,38,0.016,39,1.095,40,1.318,41,0.851,46,2.329,64,2.339,72,0.819,114,0.009,115,0.011,116,0.009,129,3.897,200,2.778,258,2.503,293,2.146,521,3.503,522,2.86,523,4.624,524,4.532,525,4.837,526,4.532,527,4.356,528,2.668,529,2.86,530,2.668,531,2.86,532,2.86,533,2.668,534,2.86,535,2.86,536,2.86,537,2.86,538,2.86,539,2.86,540,2.668,541,2.668,542,2.86,543,2.86,544,2.86,545,2.668,546,2.668,547,2.86,548,2.011,549,2.86,550,2.86,551,2.86,552,3.091,553,2.86,554,4.812,555,4.532,556,2.86]],["title/classes/OAuthEvent.html",[0,0.185,523,2.952]],["body/classes/OAuthEvent.html",[0,0.281,2,1.375,3,1.156,4,0.87,5,0.729,10,1.118,30,0.797,37,1.165,38,0.016,39,1.118,40,1.327,41,0.87,46,1.869,64,1.63,72,0.825,114,0.009,115,0.012,116,0.009,129,3.708,200,2.817,258,2.557,293,2.169,521,2.725,522,2.922,523,4.656,524,4.579,525,4.862,526,3.158,528,2.725,529,2.922,530,2.725,531,2.922,532,2.922,533,2.725,534,2.922,535,2.922,536,2.922,537,2.922,538,2.922,539,2.922,540,2.725,541,2.725,542,2.922,543,2.922,544,2.922,545,2.725,546,2.725,547,2.922,548,2.055,549,2.922,550,2.922,551,2.922,552,3.158,553,2.922,554,4.852,555,4.579,556,2.922,557,4.45]],["title/classes/OAuthInfoEvent.html",[0,0.185,556,2.952]],["body/classes/OAuthInfoEvent.html",[0,0.28,2,1.363,3,1.267,4,0.862,5,0.723,10,1.109,30,0.791,37,1.155,38,0.016,39,1.109,40,1.324,41,0.862,46,1.858,64,1.616,72,0.822,114,0.009,115,0.012,116,0.009,129,3.916,200,2.802,258,2.535,293,2.16,521,2.702,522,2.897,523,4.643,524,4.56,525,4.852,526,3.131,528,2.702,529,2.897,530,2.702,531,2.897,532,2.897,533,2.702,534,2.897,535,2.897,536,2.897,537,2.897,538,2.897,539,2.897,540,2.702,541,2.702,542,2.897,543,2.897,544,2.897,545,2.702,546,2.702,547,2.897,548,2.037,549,2.897,550,2.897,551,2.897,552,3.131,553,2.897,554,4.836,555,4.56,556,3.787,558,4.412]],["title/classes/OAuthLogger.html",[0,0.185,423,2.076]],["body/classes/OAuthLogger.html",[0,0.215,2,0.649,3,0.857,4,0.41,5,0.344,9,0.841,10,1.822,11,1.176,12,0.769,14,0.706,15,0.706,18,0.968,21,0.447,22,1.176,28,2.158,30,0.936,33,1.954,34,0.88,37,1.368,38,0.016,39,1.313,40,0.978,41,1.089,43,1.684,44,0.736,46,1.795,51,1.08,54,1.474,62,1.607,63,0.769,64,0.769,68,0.344,72,0.728,73,1.872,74,1.474,75,0.923,76,0.923,77,0.923,82,0.88,83,1.349,92,1.368,103,0.447,109,0.506,114,0.004,115,0.007,116,0.004,125,1.406,126,1.036,127,0.676,168,2.005,202,1.756,222,0.969,228,0.466,229,1.469,234,0.923,236,1.343,242,0.528,254,1.142,279,0.676,284,0.506,285,0.843,293,0.706,296,0.923,305,1.052,311,1.284,313,1.54,324,0.969,325,1.075,326,0.314,327,0.969,328,1.548,330,0.969,331,1.075,332,1.075,333,1.075,334,1.075,335,0.923,336,1.075,338,1.127,339,2.207,340,2.131,341,1.677,342,1.075,343,1.284,344,1.075,345,0.923,346,1.075,347,1.406,348,1.548,349,0.923,350,1.075,351,1.584,352,1.717,353,1.075,354,0.969,355,1.02,356,1.075,357,1.02,358,0.676,360,0.769,361,0.923,362,1.075,363,2.144,364,0.676,366,1.474,368,1.548,369,1.548,370,1.841,371,1.629,372,1.075,373,1.717,374,1.075,375,1.075,376,1.075,377,1.075,379,2.005,380,0.923,381,0.923,382,0.88,383,2.449,384,1.075,385,1.02,387,1.474,388,1.075,389,0.676,390,1.02,391,2.706,392,1.933,393,1.603,394,1.474,396,0.969,397,1.629,399,1.075,400,0.88,401,1.02,402,0.706,403,0.923,404,1.075,405,1.075,406,1.075,407,1.075,408,0.923,409,1.075,411,0.923,412,1.075,413,2.538,414,3.598,415,1.406,416,1.284,417,2.144,418,1.548,419,1.228,420,1.474,421,1.548,422,1.629,423,1.548,424,1.717,425,3.56,426,1.717,427,1.717,428,1.717,429,1.717,430,1.02,431,0.841,432,1.075,433,0.706,434,0.88,435,0.923,436,0.88,437,1.02,438,1.02,439,1.343,440,1.717,441,1.717,442,1.717,443,1.02,444,1.075,445,1.075,446,1.075,447,2.677,448,0.923,449,0.649,450,1.075,451,1.02,452,1.075,453,1.075,454,1.075,455,1.548,456,1.343,457,1.717,458,1.756,459,1.629,460,1.075,461,0.969,462,1.075,463,1.075,464,0.923,465,0.676,466,0.676,467,1.075,468,0.923,469,1.075,470,1.02,471,0.649,472,0.736,473,0.676,474,1.02,475,0.769,476,1.075,477,1.075,478,1.075,479,1.075,480,1.075,481,1.075,482,1.075,483,1.075,484,1.075,485,1.075,486,1.075,487,1.075,488,1.075,489,1.075,490,1.075,491,1.075,492,1.075,493,1.075,494,1.075,495,1.075,496,1.075,497,1.075,498,1.075,499,1.075,500,1.075,501,1.075,502,1.075,503,1.075,504,1.075,559,3.353,560,2.9,561,3.353,562,2.099,563,4.52,564,2.099,565,2.099,566,2.099,567,2.099]],["title/modules/OAuthModule.html",[568,3.489,569,2.952]],["body/modules/OAuthModule.html",[0,0.157,3,0.687,4,0.749,5,0.628,7,2.719,12,1.923,22,1.344,30,0.687,35,1.861,37,1.003,38,0.016,39,0.963,40,0.717,41,0.749,43,1.235,68,1.259,72,0.446,92,1.003,103,0.815,114,0.008,115,0.011,116,0.008,117,3.446,119,2.075,123,2.974,127,1.235,128,3.725,131,4.073,133,2.516,153,3.725,195,3.725,202,1.764,204,3.215,206,4.131,217,2.075,228,0.85,229,1.344,230,3.943,231,3.487,232,2.974,233,2.516,242,0.963,254,1.633,274,1.861,287,3.931,293,1.764,365,1.769,419,2.66,423,2.423,439,2.102,511,3.315,569,3.931,570,2.974,571,5.248,572,3.832,573,5.248,574,5.248,575,3.832,576,6.438,577,3.832,578,3.44,579,5.986,580,1.861,581,3.315,582,4.645,583,5.248,584,3.315,585,5.248,586,4.073,587,3.832,588,3.446,589,3.832,590,3.832,591,3.832,592,4.54,593,4.54,594,3.832,595,2.974,596,2.974,597,3.832,598,2.719,599,4.54,600,5.833,601,3.832,602,3.832]],["title/classes/OAuthModuleConfig.html",[0,0.185,206,2.754]],["body/classes/OAuthModuleConfig.html",[0,0.268,2,1.656,3,0.96,4,1.048,5,0.878,10,1.639,21,1.141,28,1.463,30,0.96,38,0.016,40,1.003,63,1.963,72,0.758,92,1.404,114,0.011,115,0.013,116,0.011,206,3.994,236,2.612,242,1.347,248,4.282,329,2.867,340,1.88,351,1.524,603,5.641,604,4.636,605,4.988,606,5.455,607,5.36,608,3.804,609,4.16,610,4.636,611,4.636,612,4.16,613,3.519,614,3.804,615,3.804,616,4.636]],["title/classes/OAuthNoopResourceServerErrorHandler.html",[0,0.185,588,2.952]],["body/classes/OAuthNoopResourceServerErrorHandler.html",[0,0.263,2,1.61,3,0.934,4,1.019,5,0.854,8,2.406,10,1.611,14,2.154,21,1.109,22,2.249,30,0.934,37,1.365,38,0.016,39,1.31,40,0.976,41,1.019,43,1.679,68,1.05,72,0.746,103,1.109,114,0.01,115,0.013,116,0.01,204,4.252,214,4.756,217,2.822,219,3.698,228,1.422,229,2.249,294,3.698,517,4.508,588,4.209,617,5.545,618,5.545,619,5.388,620,5.771,621,4.508,622,4.508]],["title/classes/OAuthResourceServerConfig.html",[0,0.185,606,3.489]],["body/classes/OAuthResourceServerConfig.html",[0,0.255,2,1.533,3,0.889,4,0.97,5,0.813,10,1.562,21,1.056,28,1.354,30,1.217,38,0.016,40,1.271,41,1.391,63,2.278,72,0.723,92,1.628,114,0.01,115,0.012,116,0.01,154,2.687,206,3.039,236,2.72,242,1.247,248,4.814,329,2.734,340,2.181,351,1.768,603,6.158,604,4.292,605,3.521,606,5.27,608,4.412,609,4.825,610,5.378,611,5.378,612,4.825,613,4.083,614,4.819,615,4.412,616,5.874,623,4.961,624,4.961,625,4.961]],["title/classes/OAuthResourceServerErrorHandler.html",[0,0.185,204,2.754]],["body/classes/OAuthResourceServerErrorHandler.html",[0,0.263,2,1.61,3,0.934,4,1.019,5,0.854,8,2.406,10,1.82,14,1.752,21,1.109,22,2.249,30,0.934,37,1.365,38,0.016,39,1.31,40,0.976,41,1.019,43,1.679,68,1.05,72,0.746,103,1.109,114,0.01,115,0.013,116,0.01,204,4.252,214,4.756,217,2.822,219,3.698,228,1.422,229,2.249,294,3.698,588,3.422,617,5.545,618,5.545,619,5.388,620,5.771,621,4.508,622,4.508,626,5.211]],["title/classes/OAuthStorage.html",[0,0.185,439,1.8]],["body/classes/OAuthStorage.html",[0,0.219,2,0.674,3,0.619,4,0.426,5,0.357,9,0.873,10,1.779,11,0.765,12,0.799,14,0.733,15,0.733,18,0.993,21,0.464,22,1.212,28,2.177,30,0.769,33,1.987,34,0.915,37,1.124,38,0.016,39,1.079,40,0.804,41,0.955,43,1.383,44,0.765,46,1.716,51,1.114,54,1.52,62,1.642,63,0.799,64,0.799,68,0.357,72,0.737,73,1.79,74,1.52,75,0.959,76,0.959,77,0.959,82,0.915,83,1.574,92,1.394,103,0.464,109,0.526,114,0.004,115,0.007,116,0.004,125,1.45,126,1.068,127,0.703,168,2.376,202,1.642,222,1.007,228,0.484,229,0.765,234,0.959,236,1.384,242,0.548,254,1.172,279,0.703,284,0.526,285,0.869,293,1.162,296,0.959,305,1.079,311,0.835,313,1.574,324,1.007,325,1.117,326,0.326,327,1.007,328,1.596,330,1.007,331,1.117,332,1.117,333,1.117,334,1.117,335,0.959,336,1.117,338,1.162,339,2.255,340,2.224,341,1.714,342,1.117,343,1.323,344,1.117,345,0.959,346,1.117,347,1.45,348,1.596,349,0.959,350,1.117,351,1.611,352,1.77,353,1.117,354,1.007,355,1.059,356,1.117,357,1.059,358,0.703,360,0.799,361,0.959,362,1.117,363,1.77,364,0.703,366,1.52,368,1.596,369,1.596,370,1.888,371,1.679,372,1.117,373,1.77,374,1.117,375,1.117,376,1.117,377,1.117,379,2.049,380,0.959,381,0.959,382,0.915,383,2.502,384,1.117,385,1.059,387,1.52,388,1.117,389,0.703,390,1.059,391,1.059,392,1.982,393,1.644,394,1.52,396,1.007,397,1.679,399,1.117,400,0.915,401,1.059,402,0.733,403,0.959,404,1.117,405,1.117,406,1.117,407,1.117,408,0.959,409,1.117,411,0.959,412,1.117,413,2.587,414,3.505,415,0.915,416,0.835,417,2.199,418,1.007,419,0.799,420,0.959,421,1.007,422,1.059,423,1.007,424,1.117,425,2.728,426,1.117,427,1.117,428,1.117,429,1.117,430,1.679,431,1.384,432,1.77,433,1.162,434,1.45,435,1.52,436,1.45,437,1.679,438,1.679,439,1.719,440,2.199,441,2.199,442,2.199,443,1.059,444,1.117,445,1.117,446,1.117,447,2.728,448,0.959,449,0.674,450,1.117,451,1.059,452,1.117,453,1.117,454,1.117,455,1.596,456,1.384,457,1.77,458,1.801,459,1.679,460,1.117,461,1.007,462,1.117,463,1.117,464,0.959,465,0.703,466,0.703,467,1.117,468,0.959,469,1.117,470,2.373,471,0.674,472,0.765,473,0.703,474,1.059,475,0.799,476,1.117,477,1.117,478,1.117,479,1.117,480,1.117,481,1.117,482,1.117,483,1.117,484,1.117,485,1.117,486,1.117,487,1.117,488,1.117,489,1.117,490,1.117,491,1.117,492,1.117,493,1.117,494,1.117,495,1.117,496,1.117,497,1.117,498,1.117,499,1.117,500,1.117,501,1.117,502,1.117,503,1.117,504,1.117,505,2.99,506,2.99,507,2.99,627,2.181,628,2.181,629,2.181]],["title/classes/OAuthSuccessEvent.html",[0,0.185,553,2.952]],["body/classes/OAuthSuccessEvent.html",[0,0.28,2,1.363,3,1.267,4,0.862,5,0.723,10,1.109,30,0.791,37,1.155,38,0.016,39,1.109,40,1.324,41,0.862,46,1.858,64,1.616,72,0.822,114,0.009,115,0.012,116,0.009,129,3.916,200,2.802,258,2.535,293,2.16,521,2.702,522,2.897,523,4.643,524,4.56,525,4.852,526,3.131,528,2.702,529,2.897,530,2.702,531,2.897,532,2.897,533,2.702,534,2.897,535,2.897,536,2.897,537,2.897,538,2.897,539,2.897,540,2.702,541,2.702,542,2.897,543,2.897,544,2.897,545,2.702,546,2.702,547,2.897,548,2.037,549,2.897,550,2.897,551,2.897,552,3.131,553,3.787,554,4.836,555,4.56,556,2.897,630,4.412]],["title/interfaces/OidcDiscoveryDoc.html",[73,1.511,474,2.184]],["body/interfaces/OidcDiscoveryDoc.html",[0,0.204,3,0.554,4,0.371,5,0.311,9,0.76,10,1.563,11,0.666,12,0.695,14,0.638,15,0.638,18,0.904,21,0.404,28,2.206,33,1.866,34,0.796,38,0.016,40,1.4,41,0.371,44,0.666,46,1.599,51,0.996,54,1.359,62,1.515,63,0.695,64,0.695,68,0.311,72,0.703,73,1.668,74,1.359,75,0.834,76,0.834,77,0.834,82,0.796,83,1.26,92,1.3,103,0.404,109,0.457,114,0.004,115,0.006,116,0.004,125,1.296,126,0.955,127,0.611,168,1.89,202,1.515,222,0.876,228,0.421,229,0.666,234,0.834,236,1.805,242,0.477,254,1.067,279,0.611,284,0.457,285,0.777,293,0.638,296,0.834,305,0.982,311,0.726,313,1.452,324,0.876,325,0.972,326,0.283,327,0.876,328,1.427,329,1.359,330,0.876,331,0.972,332,0.972,333,0.972,334,0.972,335,0.834,336,0.972,338,1.039,339,2.081,340,2.052,341,1.581,342,0.972,343,1.183,344,0.972,345,0.834,346,0.972,347,1.296,348,1.427,349,0.834,350,0.972,351,1.513,352,1.583,353,0.972,354,0.876,355,0.922,356,0.972,357,0.922,358,0.611,360,0.695,361,0.834,362,0.972,363,1.583,364,0.611,366,1.359,368,1.427,369,1.427,370,1.719,371,1.501,372,0.972,373,1.583,374,0.972,375,0.972,376,0.972,377,0.972,379,1.89,380,0.834,381,0.834,382,0.796,383,2.003,384,0.972,385,0.922,387,1.359,388,0.972,389,0.611,390,0.922,391,0.922,392,1.805,393,1.497,394,1.359,396,0.876,397,1.501,399,0.972,400,0.796,401,0.922,402,0.638,403,0.834,404,0.972,405,0.972,406,0.972,407,0.972,408,0.834,409,0.972,411,0.834,412,0.972,413,2.411,414,3.26,415,0.796,416,0.726,417,1.583,418,0.876,419,0.695,420,0.834,421,0.876,422,0.922,423,0.876,424,0.972,425,2.542,426,0.972,427,0.972,428,0.972,429,0.972,430,0.922,431,0.76,432,0.972,433,0.638,434,0.796,435,0.834,436,0.796,437,0.922,438,0.922,439,1.238,440,1.583,441,1.583,442,1.583,443,0.922,444,0.972,445,0.972,446,0.972,447,2.725,448,0.834,449,0.586,450,0.972,451,0.922,452,0.972,453,0.972,454,0.972,455,1.427,456,1.238,457,1.583,458,1.89,459,1.501,460,0.972,461,0.876,462,0.972,463,0.972,464,0.834,465,0.611,466,0.611,467,0.972,468,0.834,469,0.972,470,0.922,471,0.955,472,1.084,473,0.996,474,1.501,475,1.651,476,2.309,477,2.309,478,2.309,479,2.309,480,2.309,481,2.309,482,2.309,483,2.309,484,2.309,485,2.309,486,2.309,487,2.309,488,2.309,489,2.309,490,2.309,491,2.309,492,2.309,493,2.309,494,2.309,495,2.309,496,2.309,497,2.309,498,2.309,499,2.309,500,2.309,501,2.309,502,2.309,503,2.309,504,2.309,631,1.162]],["title/interfaces/ParsedIdToken.html",[73,1.511,451,2.184]],["body/interfaces/ParsedIdToken.html",[0,0.222,3,0.634,4,0.439,5,0.368,9,0.899,10,1.646,11,0.787,12,0.822,14,0.754,15,0.754,18,1.012,21,0.478,28,2.177,33,2.012,34,0.941,38,0.016,40,1.074,41,0.439,44,0.787,46,2.062,51,1.41,54,1.924,62,1.668,63,0.822,64,0.822,68,0.368,72,0.744,73,1.815,74,2.374,75,0.987,76,2.183,77,2.183,82,0.941,83,1.41,92,1.414,103,0.478,109,0.541,114,0.005,115,0.007,116,0.005,125,2.082,126,1.093,127,0.723,168,2.082,202,1.668,222,1.037,228,0.498,229,0.787,234,0.987,236,1.416,242,0.564,254,1.194,279,0.723,284,0.541,285,0.889,293,0.754,296,0.987,305,1.099,311,0.859,313,1.599,324,1.037,325,1.15,326,0.335,327,1.037,328,1.633,329,1.555,330,1.037,331,1.15,332,1.15,333,1.15,334,1.15,335,0.987,336,1.15,338,1.189,339,2.292,340,2.182,341,1.741,342,1.15,343,1.354,344,1.15,345,0.987,346,1.15,347,1.483,348,1.633,349,0.987,350,1.15,351,1.631,352,1.811,353,1.15,354,1.037,355,1.09,356,1.15,357,1.09,358,0.723,360,0.822,361,0.987,362,1.15,363,1.811,364,0.723,366,1.555,368,1.633,369,1.633,370,1.924,371,1.718,372,1.15,373,1.811,374,1.15,375,1.15,376,1.15,377,1.15,379,2.082,380,0.987,381,0.987,382,0.941,383,2.241,384,1.15,385,1.09,387,1.555,388,1.15,389,0.723,390,1.09,391,1.09,392,2.02,393,1.675,394,1.555,396,1.037,397,2.125,399,1.15,400,0.941,401,1.09,402,0.754,403,0.987,404,1.15,405,1.15,406,1.15,407,1.15,408,0.987,409,1.15,411,0.987,412,1.15,413,2.623,414,3.422,415,0.941,416,0.859,417,1.811,418,1.037,419,0.822,420,0.987,421,1.037,422,1.09,423,1.037,424,1.15,425,2.766,426,1.15,427,1.15,428,1.15,429,1.15,430,1.09,431,0.899,432,1.15,433,0.754,434,0.941,435,0.987,436,0.941,437,1.09,438,1.09,439,1.416,440,1.811,441,1.811,442,1.811,443,1.09,444,1.15,445,1.15,446,1.15,447,2.938,448,0.987,449,0.694,450,1.15,451,1.718,452,2.543,453,2.543,454,2.543,455,1.633,456,1.416,457,1.811,458,1.835,459,1.718,460,1.15,461,1.037,462,1.15,463,1.15,464,0.987,465,0.723,466,0.723,467,1.15,468,0.987,469,1.15,470,1.09,471,0.694,472,0.787,473,0.723,474,1.09,475,0.822,476,1.15,477,1.15,478,1.15,479,1.15,480,1.15,481,1.15,482,1.15,483,1.15,484,1.15,485,1.15,486,1.15,487,1.15,488,1.15,489,1.15,490,1.15,491,1.15,492,1.15,493,1.15,494,1.15,495,1.15,496,1.15,497,1.15,498,1.15,499,1.15,500,1.15,501,1.15,502,1.15,503,1.15,504,1.15,631,1.375]],["title/classes/ReceivedTokens.html",[0,0.185,413,2.184]],["body/classes/ReceivedTokens.html",[0,0.222,2,0.697,3,0.636,4,0.441,5,0.37,9,0.904,10,1.649,11,0.792,12,0.827,14,0.759,15,0.759,18,1.016,21,0.48,28,2.173,30,0.892,33,2.017,34,0.947,38,0.016,40,0.932,41,1.058,44,0.792,46,1.852,51,1.144,54,1.931,62,1.932,63,0.827,64,0.827,68,0.37,72,0.746,73,1.82,74,2.189,75,1.931,76,0.992,77,0.992,82,0.947,83,1.604,92,1.418,103,0.48,109,0.544,114,0.005,115,0.007,116,0.005,125,1.489,126,1.097,127,0.727,168,2.088,202,1.673,222,1.042,228,0.501,229,0.792,234,0.992,236,1.422,242,0.567,254,1.359,279,0.727,284,0.544,285,0.892,293,0.759,296,0.992,305,1.103,311,0.864,313,1.604,324,1.042,325,1.156,326,0.337,327,1.042,328,1.64,329,1.562,330,1.042,331,1.156,332,1.156,333,1.156,334,1.156,335,0.992,336,1.156,338,1.194,339,2.299,340,2.186,341,1.746,342,1.156,343,1.36,344,1.156,345,0.992,346,1.156,347,1.489,348,1.64,349,0.992,350,1.156,351,1.635,352,1.819,353,1.156,354,1.042,355,1.096,356,1.156,357,1.096,358,0.727,360,0.827,361,0.992,362,1.156,363,1.819,364,0.727,366,1.562,368,1.64,369,1.64,370,1.931,371,1.725,372,1.156,373,1.819,374,1.156,375,1.156,376,1.156,377,1.156,379,2.522,380,0.992,381,0.992,382,0.947,383,2.249,384,1.156,385,1.096,387,1.562,388,1.156,389,0.727,390,1.096,391,1.096,392,2.027,393,1.681,394,1.562,396,1.042,397,1.725,399,1.156,400,0.947,401,1.096,402,0.759,403,0.992,404,1.156,405,1.156,406,1.156,407,1.156,408,0.992,409,1.156,411,0.992,412,1.156,413,2.793,414,3.427,415,0.947,416,0.864,417,1.819,418,1.042,419,0.827,420,0.992,421,1.042,422,1.096,423,1.042,424,1.156,425,2.773,426,1.156,427,1.156,428,1.156,429,1.156,430,1.096,431,0.904,432,1.156,433,0.759,434,0.947,435,0.992,436,0.947,437,1.096,438,1.096,439,1.422,440,1.819,441,1.819,442,1.819,443,1.096,444,1.156,445,1.156,446,1.156,447,2.945,448,1.562,449,1.097,450,2.249,451,1.096,452,1.156,453,1.156,454,1.156,455,1.64,456,1.422,457,1.819,458,1.841,459,1.725,460,1.156,461,1.042,462,1.156,463,1.156,464,0.992,465,0.727,466,0.727,467,1.156,468,0.992,469,1.156,470,1.096,471,0.697,472,0.792,473,0.727,474,1.096,475,0.827,476,1.156,477,1.156,478,1.156,479,1.156,480,1.156,481,1.156,482,1.156,483,1.156,484,1.156,485,1.156,486,1.156,487,1.156,488,1.156,489,1.156,490,1.156,491,1.156,492,1.156,493,1.156,494,1.156,495,1.156,496,1.156,497,1.156,498,1.156,499,1.156,500,1.156,501,1.156,502,1.156,503,1.156,504,1.156,632,2.257,633,2.257,634,2.257,635,2.257]],["title/injectables/SystemDateTimeProvider.html",[126,1.389,128,3.19]],["body/injectables/SystemDateTimeProvider.html",[0,0.262,3,0.927,4,1.011,5,0.848,10,1.739,21,1.101,22,2.238,30,1.143,38,0.016,43,2.056,68,0.848,72,0.742,103,1.358,109,1.822,114,0.01,115,0.013,116,0.01,117,4.873,118,4.474,119,2.801,120,4.474,121,5.266,123,5.607,125,2.902,126,1.971,127,1.666,128,4.528,129,3.667,130,4.474,132,3.396,290,5.519,636,5.172,637,5.172]],["title/interfaces/TokenResponse.html",[73,1.511,461,2.076]],["body/interfaces/TokenResponse.html",[0,0.22,3,0.627,4,0.433,5,0.363,9,0.887,10,1.639,11,0.777,12,0.811,14,0.744,15,0.744,18,1.003,21,0.471,28,2.183,33,2,34,0.928,38,0.016,40,1.118,41,0.847,44,0.777,46,1.728,51,1.728,54,1.538,62,1.655,63,1.804,64,0.811,68,0.363,72,0.741,73,1.803,74,1.538,75,0.973,76,0.973,77,0.973,82,0.928,83,1.397,92,1.405,103,0.471,109,0.534,114,0.004,115,0.007,116,0.004,125,2.066,126,1.081,127,0.713,168,2.066,202,1.655,222,1.022,228,0.491,229,0.777,234,0.973,236,1.401,242,0.556,254,1.344,279,0.713,284,0.534,285,0.879,293,0.744,296,0.973,305,1.089,311,0.847,313,1.587,324,1.022,325,1.134,326,0.331,327,1.022,328,1.615,329,1.538,330,1.022,331,1.134,332,1.134,333,1.134,334,1.134,335,0.973,336,1.134,338,1.175,339,2.274,340,2.171,341,1.728,342,1.134,343,1.339,344,1.134,345,0.973,346,1.134,347,1.467,348,1.615,349,0.973,350,1.134,351,1.621,352,1.791,353,1.134,354,1.022,355,1.075,356,1.134,357,1.075,358,0.713,360,0.811,361,0.973,362,1.134,363,1.791,364,0.713,366,1.538,368,1.615,369,1.615,370,1.906,371,1.699,372,1.134,373,1.791,374,1.134,375,1.134,376,1.134,377,1.134,379,2.504,380,0.973,381,0.973,382,0.928,383,2.221,384,1.134,385,1.075,387,1.538,388,1.134,389,0.713,390,1.075,391,1.075,392,2.002,393,1.66,394,1.538,396,1.022,397,1.699,399,1.134,400,0.928,401,1.075,402,0.744,403,0.973,404,1.134,405,1.134,406,1.134,407,1.134,408,0.973,409,1.134,411,0.973,412,1.134,413,2.605,414,3.409,415,0.928,416,0.847,417,1.791,418,1.022,419,0.811,420,0.973,421,1.022,422,1.075,423,1.022,424,1.134,425,2.747,426,1.134,427,1.134,428,1.134,429,1.134,430,1.075,431,0.887,432,1.134,433,0.744,434,0.928,435,0.973,436,0.928,437,1.075,438,1.075,439,1.401,440,1.791,441,1.791,442,1.791,443,1.075,444,1.134,445,1.134,446,1.134,447,2.921,448,0.973,449,0.684,450,1.134,451,1.075,452,1.134,453,1.134,454,1.134,455,2.002,456,1.736,457,2.221,458,2.066,459,2.106,460,1.791,461,1.615,462,2.523,463,2.523,464,2.166,465,1.587,466,0.713,467,1.134,468,0.973,469,1.134,470,1.075,471,0.684,472,0.777,473,0.713,474,1.075,475,0.811,476,1.134,477,1.134,478,1.134,479,1.134,480,1.134,481,1.134,482,1.134,483,1.134,484,1.134,485,1.134,486,1.134,487,1.134,488,1.134,489,1.134,490,1.134,491,1.134,492,1.134,493,1.134,494,1.134,495,1.134,496,1.134,497,1.134,498,1.134,499,1.134,500,1.134,501,1.134,502,1.134,503,1.134,504,1.134,631,1.356]],["title/injectables/UrlHelperService.html",[126,1.389,586,3.489]],["body/injectables/UrlHelperService.html",[0,0.186,3,0.81,4,0.883,5,0.74,21,0.961,22,2.055,28,1.992,30,1.05,33,2.412,35,2.195,37,1.534,38,0.016,39,1.472,40,1.096,41,1.145,43,1.887,46,2.215,68,0.74,72,0.525,84,3.954,103,1.383,114,0.009,115,0.012,116,0.009,126,1.81,127,1.456,132,2.966,147,2.704,163,3.587,168,2.456,293,1.518,330,2.704,354,2.704,470,2.195,563,3.908,586,4.546,638,6.499,639,4.518,640,5.857,641,5.857,642,5.857,643,4.518,644,5.857,645,4.518,646,4.518,647,4.518,648,5.857,649,5.857,650,4.157,651,4.518,652,4.518,653,4.518,654,5.857,655,4.518,656,4.518,657,4.518,658,4.518,659,4.518]],["title/interfaces/UserInfo.html",[73,1.511,468,1.977]],["body/interfaces/UserInfo.html",[0,0.225,3,0.798,4,0.451,5,0.378,9,0.924,10,1.659,11,0.809,12,0.845,14,0.776,15,0.776,18,1.03,21,0.491,28,2.176,30,0.413,33,2.036,34,0.968,38,0.016,40,0.432,41,0.451,44,0.809,46,1.763,51,1.164,54,1.589,62,1.694,63,0.845,64,0.845,68,0.378,72,0.751,73,1.839,74,1.589,75,1.015,76,1.015,77,1.015,82,0.968,83,1.435,92,1.433,103,0.491,109,0.556,114,0.005,115,0.007,116,0.005,125,1.515,126,1.116,127,0.743,168,2.113,202,1.694,222,1.065,228,0.512,229,0.809,234,1.015,236,1.447,242,0.58,254,1.215,279,0.743,284,0.556,285,0.908,293,0.776,296,1.015,305,1.119,311,0.883,313,1.624,324,1.065,325,1.182,326,0.345,327,1.065,328,1.668,329,1.589,330,1.065,331,1.182,332,1.182,333,1.182,334,1.182,335,1.015,336,1.182,338,1.214,339,2.327,340,2.202,341,1.768,342,1.182,343,1.383,344,1.182,345,1.015,346,1.182,347,1.515,348,1.668,349,1.015,350,1.182,351,1.65,352,1.851,353,1.182,354,1.065,355,1.121,356,1.182,357,1.121,358,0.743,360,0.845,361,1.015,362,1.182,363,1.851,364,0.743,366,1.589,368,1.668,369,1.668,370,1.958,371,1.755,372,1.182,373,1.851,374,1.182,375,1.182,376,1.182,377,1.182,379,2.113,380,1.015,381,1.015,382,0.968,383,2.281,384,1.182,385,1.121,387,1.589,388,1.182,389,0.743,390,1.121,391,1.121,392,2.056,393,1.705,394,1.589,396,1.065,397,1.755,399,1.182,400,0.968,401,1.121,402,0.776,403,1.015,404,1.182,405,1.182,406,1.182,407,1.182,408,1.015,409,1.182,411,1.015,412,1.182,413,2.658,414,3.447,415,0.968,416,0.883,417,1.851,418,1.065,419,0.845,420,1.015,421,1.065,422,1.121,423,1.065,424,1.182,425,2.803,426,1.182,427,1.182,428,1.182,429,1.182,430,1.121,431,0.924,432,1.182,433,0.776,434,0.968,435,1.015,436,0.968,437,1.121,438,1.121,439,1.447,440,1.851,441,1.851,442,1.851,443,1.121,444,1.182,445,1.182,446,1.182,447,2.972,448,1.015,449,0.713,450,1.182,451,1.121,452,1.182,453,1.182,454,1.182,455,2.056,456,1.784,457,2.281,458,2.113,459,2.163,460,1.182,461,1.065,462,1.182,463,1.182,464,1.015,465,0.743,466,1.164,467,1.851,468,1.589,469,2.581,470,1.755,471,0.713,472,0.809,473,0.743,474,1.121,475,0.845,476,1.182,477,1.182,478,1.182,479,1.182,480,1.182,481,1.182,482,1.182,483,1.182,484,1.182,485,1.182,486,1.182,487,1.182,488,1.182,489,1.182,490,1.182,491,1.182,492,1.182,493,1.182,494,1.182,495,1.182,496,1.182,497,1.182,498,1.182,499,1.182,500,1.182,501,1.182,502,1.182,503,1.182,504,1.182,631,1.413,660,2.307,661,2.307]],["title/classes/ValidationHandler.html",[0,0.185,12,1.647]],["body/classes/ValidationHandler.html",[0,0.192,1,2.306,2,1.004,3,0.582,4,0.635,5,0.532,6,2.804,7,3.885,8,1.5,9,1.301,10,1.832,11,1.14,12,2.193,13,1.99,14,1.571,15,1.571,16,3.931,17,1.664,18,1.081,19,2.306,20,3.069,21,0.691,22,1.639,23,3.627,25,2.306,26,3.594,28,1.802,29,3.931,30,0.837,32,2.521,33,1.92,34,1.96,35,1.578,36,0.721,37,1.224,38,0.016,39,1.376,40,0.875,41,0.914,42,3.069,43,1.506,44,2.443,45,2.521,46,1.929,48,2.521,49,4.248,50,2.521,51,2.193,52,2.521,53,2.521,54,1.428,55,2.133,56,2.521,57,4.552,59,4.687,60,4.501,61,3.885,62,1.84,63,2.005,65,3.069,67,3.594,68,0.532,69,2.306,70,2.306,71,2.521,72,0.637,73,1.84,74,1.428,75,1.428,76,1.428,77,1.428,78,1.578,79,2.521,80,3.627,81,3.627,82,1.96,83,1.506,84,3.577,85,3.627,86,2.521,87,2.521,88,2.133,89,2.521,90,2.521,91,2.521,92,0.851,93,2.521,94,2.521,95,2.521,96,2.306,97,4.646,98,2.521,99,4.646,100,2.521,101,2.521,102,2.521,103,0.995,104,4.248,105,2.521,106,2.521,107,2.521,108,2.133,109,0.783,110,2.521,111,2.133,112,2.306,113,2.521,114,0.007,115,0.009,116,0.007,289,2.521,662,3.249,663,3.249]],["title/interfaces/ValidationParams.html",[57,2.754,73,1.511]],["body/interfaces/ValidationParams.html",[0,0.196,1,2.369,3,0.598,4,0.652,5,0.547,6,1.71,7,2.369,8,1.541,10,1.724,11,1.171,12,2.036,13,2.044,14,1.602,15,1.602,16,3.129,17,1.71,18,1.102,19,2.369,20,3.129,21,0.71,23,3.698,25,2.369,26,2.192,28,1.976,29,3.98,32,2.59,33,1.949,34,1.998,35,1.621,36,0.741,38,0.016,39,0.839,40,1.248,42,3.129,44,2.338,45,2.59,46,2.334,48,2.59,49,4.313,50,2.59,51,2.065,52,2.59,53,2.59,54,1.468,55,2.192,56,2.59,57,4.297,59,4.301,60,4.301,61,3.382,62,1.602,63,1.746,65,2.192,67,3.129,68,0.547,69,2.369,70,2.369,71,2.59,72,0.646,73,1.602,74,2.665,75,2.665,76,2.665,77,2.665,78,2.944,79,4.704,80,2.59,81,2.59,82,1.4,83,1.075,84,2.581,85,3.698,86,2.59,87,2.59,88,2.192,89,2.59,90,2.59,91,2.59,92,0.874,93,2.59,94,2.59,95,2.59,96,2.369,97,4.704,98,2.59,99,4.704,100,2.59,101,2.59,102,2.59,103,1.014,104,4.313,105,2.59,106,2.59,107,2.59,108,2.192,109,0.805,110,2.59,111,2.192,112,2.369,113,2.59,114,0.007,115,0.01,116,0.007,154,2.581,329,2.095,631,2.044]],["title/classes/WebHttpUrlEncodingCodec.html",[0,0.185,664,3.889]],["body/classes/WebHttpUrlEncodingCodec.html",[0,0.183,2,1.378,3,0.799,4,0.872,5,0.731,9,1.786,14,1.952,21,0.949,22,2.037,28,2.167,30,1.226,37,1.792,38,0.016,39,1.719,40,1.281,41,1.337,43,2.205,68,0.731,72,0.519,103,1.456,114,0.009,115,0.012,116,0.009,164,4.122,217,2.415,338,1.952,340,2.037,664,5.024,665,4.459,666,5.808,667,5.808,668,5.808,669,6.459,670,5.808,671,5.808,672,5.808,673,5.808,674,5.808,675,4.459,676,5.808,677,5.808,678,4.459,679,5.808,680,5.808,681,4.459,682,5.808,683,4.459,684,4.459,685,4.459,686,4.459,687,4.459]],["title/changelog.html",[688,2.249,689,2.569,690,3.384]],["body/changelog.html",[5,0.774,13,1.258,17,2.113,18,1.341,33,1.656,36,1.224,37,0.538,38,0.009,40,0.617,41,0.401,51,0.662,64,2.021,78,0.997,83,0.662,92,0.863,109,0.794,112,1.457,114,0.004,115,0.007,116,0.004,117,1.348,119,1.112,121,2.338,145,1.348,146,1.348,160,1.594,182,2.338,200,0.997,228,0.456,229,0.72,230,1.258,231,2.557,233,3.623,236,0.822,242,1.299,254,1.582,274,0.997,283,0.786,284,1.398,295,0.861,299,2.234,304,1.89,305,1.757,308,2.557,311,1.579,313,2.252,327,0.948,330,0.948,338,1.737,341,0.72,343,1.979,345,2.549,347,1.98,349,1.448,354,1.521,357,0.997,364,1.665,365,1.905,368,0.948,369,0.948,379,2.674,385,0.997,389,0.662,401,0.997,402,1.107,431,0.822,449,0.634,455,0.948,456,1.652,461,0.948,464,1.448,468,0.903,473,1.061,548,2.386,609,1.594,690,1.776,691,2.053,692,2.053,693,2.053,694,2.053,695,4.47,696,4.47,697,2.053,698,2.053,699,5.796,700,2.053,701,2.053,702,2.053,703,2.053,704,2.053,705,2.053,706,2.053,707,2.053,708,2.053,709,2.053,710,2.053,711,2.053,712,2.053,713,2.053,714,5.168,715,2.053,716,2.053,717,2.053,718,2.053,719,2.053,720,3.568,721,2.928,722,2.053,723,2.053,724,2.053,725,2.053,726,2.053,727,2.053,728,1.457,729,2.053,730,1.18,731,2.053,732,2.053,733,5.517,734,2.053,735,2.053,736,2.053,737,2.053,738,2.053,739,0.822,740,2.053,741,3.294,742,2.053,743,2.053,744,2.053,745,2.053,746,4.47,747,2.053,748,2.053,749,2.053,750,1.18,751,2.053,752,2.338,753,2.053,754,2.053,755,1.776,756,2.053,757,4.772,758,2.053,759,2.053,760,1.594,761,2.053,762,3.35,763,1.18,764,2.053,765,4.113,766,2.053,767,2.053,768,2.053,769,2.053,770,2.053,771,1.776,772,1.776,773,3.568,774,2.053,775,2.053,776,2.053,777,2.053,778,2.053,779,1.457,780,2.053,781,2.053,782,4.125,783,5.796,784,4.125,785,4.125,786,3.294,787,2.053,788,2.053,789,2.053,790,2.053,791,2.053,792,2.053,793,3.294,794,3.294,795,2.053,796,2.053,797,2.053,798,2.053,799,2.053,800,2.053,801,2.053,802,2.053,803,4.125,804,3.294,805,2.053,806,3.294,807,2.053,808,2.053,809,2.053,810,4.125,811,2.053,812,2.053,813,2.849,814,2.053,815,2.053,816,2.053,817,2.053,818,2.053,819,2.053,820,2.053,821,3.294,822,4.125,823,4.125,824,4.125,825,2.053,826,1.594,827,2.053,828,4.721,829,2.053,830,2.053,831,2.053,832,2.053,833,2.053,834,2.053,835,2.053,836,2.053,837,4.125,838,3.294,839,2.053,840,2.053,841,2.053,842,3.294,843,2.053,844,2.053,845,1.776,846,2.053,847,2.053,848,2.053,849,2.053,850,2.053,851,2.849,852,2.053,853,3.568,854,3.201,855,4.125,856,2.053,857,4.125,858,3.568,859,3.201,860,2.928,861,4.125,862,2.053,863,1.776,864,2.053,865,2.053,866,2.234,867,1.594,868,2.053,869,1.776,870,3.294,871,3.294,872,3.294,873,3.294,874,3.294,875,2.557,876,2.163,877,2.849,878,3.294,879,3.55,880,2.849,881,1.6,882,3.201,883,2.849,884,3.294,885,3.294,886,2.891,887,1.893,888,2.053,889,2.338,890,2.557,891,3.294,892,2.849,893,4.083,894,3.294,895,2.053,896,2.053,897,2.053,898,1.776,899,2.053,900,2.849,901,2.849,902,2.163,903,3.294,904,2.849,905,2.849,906,3.294,907,3.294,908,3.294,909,4.125,910,2.557,911,2.849,912,3.294,913,2.338,914,2.018,915,3.294,916,3.294,917,3.294,918,3.294,919,2.338,920,3.294,921,3.294,922,3.294,923,3.294,924,3.294,925,2.849,926,3.294,927,3.294,928,3.294,929,3.294,930,3.294,931,2.053,932,2.053,933,2.053,934,3.294,935,2.053,936,3.294,937,2.053,938,1.776,939,1.776,940,1.776,941,1.776,942,0.903,943,1.776,944,1.776,945,1.18,946,1.348,947,2.053,948,2.053,949,2.053,950,1.457,951,2.053,952,2.053,953,2.053,954,2.053,955,2.053,956,2.053,957,2.053,958,3.294,959,2.053,960,2.053,961,3.294,962,1.776,963,2.053,964,2.053,965,2.928,966,3.294,967,2.053,968,2.053,969,2.053,970,2.053,971,2.053,972,2.053,973,1.776,974,1.776,975,2.053,976,2.053,977,2.053,978,2.053,979,2.053,980,2.053,981,2.053,982,1.776,983,2.053,984,2.053]],["title/dependencies.html",[985,3.913,986,4.131]],["body/dependencies.html",[38,0.016,70,3.513,78,2.404,114,0.01,115,0.012,116,0.01,127,1.595,145,3.25,146,3.25,149,3.841,164,3.513,219,4.406,283,2.377,284,1.497,285,1.56,299,2.681,584,4.281,721,3.513,986,3.841,987,4.95,988,7.739,989,4.95,990,4.95,991,4.95,992,6.208,993,5.37,994,4.95,995,4.95,996,4.95,997,4.95,998,4.95,999,4.95,1000,4.95,1001,4.95,1002,4.281,1003,4.95,1004,3.841,1005,4.95,1006,4.95,1007,4.95,1008,4.95,1009,4.95,1010,6.208,1011,4.95,1012,4.95,1013,4.95,1014,4.95,1015,4.95,1016,4.95,1017,4.95,1018,4.95,1019,4.95,1020,4.95,1021,4.95]],["title/miscellaneous/functions.html",[1022,2.396,1023,4.605]],["body/miscellaneous/functions.html",[6,2.724,8,3.234,21,1.132,28,1.451,37,1.91,38,0.015,39,1.833,41,1.426,43,1.714,69,4.606,114,0.011,115,0.013,116,0.011,133,3.492,155,4.127,157,4.127,592,6.059,593,6.059,1022,3.257,1023,4.6,1024,6.49,1025,6.49,1026,7.005,1027,6.49,1028,6.49,1029,5.614,1030,6.49,1031,5.318,1032,5.318,1033,5.614,1034,5.318,1035,5.318,1036,5.318,1037,5.318]],["title/index.html",[21,0.833,688,2.249,689,2.569]],["body/index.html",[0,0.071,4,0.339,5,0.284,11,0.609,13,1.063,15,1.235,17,1.471,18,1.537,30,0.311,34,0.728,36,1.131,38,0.016,51,0.559,67,1.139,68,0.835,72,0.334,78,0.843,83,0.559,92,0.962,96,1.231,109,0.418,111,1.886,114,0.003,115,0.006,116,0.006,119,0.94,121,2.038,147,0.801,154,0.94,194,1.501,217,0.94,228,1.299,231,2.761,242,0.722,248,1.886,254,1.689,272,2.25,279,1.184,280,1.347,281,2.261,283,2.818,284,1.525,285,1.555,295,1.204,298,1.231,299,3.171,300,2.851,301,2.562,302,1.231,304,2.261,305,1.728,306,2.229,307,3.672,309,1.886,310,0.843,311,0.664,312,2.038,313,2.076,314,2.038,316,1.886,317,0.63,318,2.038,319,2.229,320,2.229,321,1.347,326,0.259,338,0.965,340,1.289,341,0.609,348,0.801,351,1.045,358,1.184,360,0.636,361,0.763,364,1.376,365,1.326,380,1.263,381,0.763,382,1.204,389,1.739,396,0.801,400,1.541,402,0.965,411,0.763,415,1.984,420,1.263,433,0.965,434,0.728,436,0.728,448,0.763,449,0.887,456,1.71,458,1.204,459,1.395,465,1.184,466,1.739,468,0.763,471,1.135,472,1.289,473,1.376,475,1.052,513,2.484,548,1.696,569,1.139,580,1.395,582,2.229,595,1.347,596,1.347,605,1.231,608,1.231,614,2.038,615,1.231,695,2.484,696,1.501,720,1.501,721,1.231,728,2.038,730,2.454,739,1.471,746,2.484,750,0.997,752,2.038,757,1.501,762,1.231,779,2.038,813,1.501,826,2.229,854,1.347,860,1.231,866,2.313,869,1.501,876,1.886,879,2.616,881,0.843,882,1.347,883,1.501,887,2.454,889,3.618,892,1.501,893,1.501,898,2.484,902,1.886,910,1.347,911,1.501,914,1.759,919,1.231,925,1.501,938,1.501,939,1.501,940,1.501,941,1.501,942,2.08,943,1.501,944,1.501,945,1.65,946,1.139,965,1.231,1002,1.501,1004,1.347,1038,1.735,1039,3.674,1040,2.607,1041,1.735,1042,1.735,1043,2.872,1044,1.735,1045,1.735,1046,2.229,1047,1.735,1048,2.872,1049,3.672,1050,1.735,1051,1.735,1052,3.618,1053,3.674,1054,1.735,1055,2.484,1056,1.347,1057,1.735,1058,1.735,1059,4.27,1060,1.735,1061,2.872,1062,2.872,1063,1.501,1064,2.872,1065,1.735,1066,1.735,1067,1.735,1068,3.107,1069,1.735,1070,1.735,1071,1.735,1072,2.872,1073,1.735,1074,1.735,1075,2.872,1076,3.03,1077,2.484,1078,0.843,1079,2.229,1080,1.347,1081,1.231,1082,1.347,1083,1.501,1084,2.229,1085,2.229,1086,0.889,1087,1.501,1088,2.229,1089,3.674,1090,1.735,1091,1.735,1092,2.616,1093,1.759,1094,1.735,1095,6.033,1096,4.092,1097,2.872,1098,1.735,1099,1.735,1100,1.735,1101,1.735,1102,3.674,1103,2.872,1104,1.139,1105,1.735,1106,2.872,1107,1.735,1108,1.735,1109,2.872,1110,1.735,1111,1.735,1112,1.735,1113,1.735,1114,3.674,1115,2.872,1116,1.735,1117,1.735,1118,1.501,1119,1.735,1120,1.501,1121,1.347,1122,1.735,1123,1.735,1124,1.735,1125,1.735,1126,1.735,1127,1.735,1128,1.231,1129,1.735,1130,1.735,1131,1.735,1132,1.735,1133,4.731,1134,1.501,1135,1.347,1136,2.872,1137,2.229,1138,1.735,1139,1.231,1140,1.063,1141,1.735,1142,1.347,1143,2.872,1144,1.501,1145,1.759,1146,1.501,1147,1.501,1148,2.872,1149,1.735,1150,2.25,1151,1.735,1152,1.501,1153,1.735,1154,1.735,1155,1.231,1156,1.735,1157,2.229,1158,1.501,1159,1.735,1160,1.735,1161,1.501,1162,1.735,1163,1.735,1164,1.735,1165,2.313,1166,1.735,1167,3.674,1168,1.735,1169,1.735,1170,1.735,1171,1.735,1172,1.735,1173,2.484,1174,3.178,1175,2.229,1176,1.759,1177,1.347,1178,1.501,1179,1.347,1180,1.735,1181,1.886,1182,1.735,1183,1.501,1184,1.735,1185,0.728,1186,1.231,1187,1.759,1188,1.735,1189,1.735,1190,0.94,1191,0.997,1192,0.997,1193,1.231,1194,1.759,1195,1.735,1196,1.501,1197,2.484,1198,2.872,1199,2.484,1200,1.347,1201,1.735,1202,1.735,1203,1.735,1204,1.231,1205,1.501,1206,0.997,1207,1.555,1208,1.063,1209,1.735,1210,1.735,1211,2.038,1212,2.25,1213,1.139,1214,1.063,1215,0.889,1216,0.889,1217,1.735,1218,1.735,1219,1.735,1220,2.872,1221,1.735,1222,1.735,1223,1.735,1224,1.886,1225,1.139,1226,1.735,1227,1.735,1228,1.501,1229,1.735,1230,1.735,1231,1.735,1232,1.735,1233,1.735,1234,2.229,1235,1.063,1236,1.735,1237,2.872,1238,1.735,1239,1.886,1240,1.231,1241,1.735,1242,1.735,1243,1.735,1244,1.501,1245,1.886,1246,1.231,1247,1.347,1248,1.735,1249,1.735,1250,1.231,1251,1.735,1252,1.501,1253,1.735,1254,2.484,1255,1.501,1256,0.997,1257,1.347,1258,1.735,1259,1.347,1260,2.872,1261,1.735,1262,1.735,1263,1.735,1264,1.501,1265,1.501,1266,1.735,1267,1.501,1268,1.139,1269,1.347,1270,0.94,1271,2.872,1272,1.735,1273,1.735,1274,1.735,1275,1.735,1276,2.872,1277,2.872,1278,1.735,1279,1.735,1280,1.735,1281,1.735,1282,1.735,1283,1.735,1284,1.735,1285,1.735,1286,1.347,1287,1.735,1288,1.735,1289,1.735,1290,1.735,1291,1.735,1292,1.735,1293,1.735,1294,1.231,1295,1.735,1296,1.735,1297,1.735,1298,1.735,1299,1.231,1300,1.735,1301,3.178,1302,1.347,1303,1.735,1304,1.735,1305,1.735,1306,1.735,1307,1.735]],["title/license.html",[688,2.249,689,2.569,858,3.384]],["body/license.html",[18,1.432,38,0.012,114,0.01,115,0.012,116,0.01,218,4.261,358,1.587,390,2.393,763,2.831,845,5.354,973,4.261,974,4.261,1052,3.496,1056,3.823,1121,3.823,1150,3.017,1267,4.261,1270,2.668,1308,6.768,1309,4.926,1310,4.926,1311,6.19,1312,4.926,1313,4.926,1314,4.926,1315,4.926,1316,4.926,1317,6.19,1318,7.732,1319,4.926,1320,4.926,1321,4.926,1322,4.444,1323,4.926,1324,4.261,1325,4.926,1326,4.926,1327,4.926,1328,4.926,1329,4.926,1330,4.926,1331,4.926,1332,6.19,1333,4.926,1334,4.926,1335,4.926,1336,4.926,1337,4.926,1338,6.19,1339,6.19,1340,4.926,1341,4.926,1342,4.926,1343,4.926,1344,4.926,1345,4.926,1346,4.926,1347,4.926,1348,4.926,1349,4.926,1350,4.926,1351,4.261,1352,4.926,1353,4.926,1354,4.926,1355,4.926,1356,4.926,1357,4.926,1358,4.926,1359,4.926,1360,4.261,1361,4.926,1362,4.926,1363,4.926,1364,4.926,1365,4.926]],["title/modules.html",[570,4.531]],["body/modules.html",[38,0.014,114,0.012,115,0.014,116,0.012,569,4.067,570,4.807,1299,4.395,1366,6.193,1367,6.193]],["title/overview.html",[1368,5.05]],["body/overview.html",[2,1.858,38,0.014,114,0.012,115,0.014,116,0.012,132,3.949,568,4.667,631,3.683,650,4.268,986,5.419,1150,3.683,1302,4.667,1368,5.202,1369,6.983,1370,6.013,1371,6.983]],["title/miscellaneous/typealiases.html",[1022,2.396,1372,5.323]],["body/miscellaneous/typealiases.html",[21,1.141,38,0.016,40,1.003,114,0.011,115,0.013,116,0.011,258,3.08,522,3.519,525,4.282,528,3.283,529,3.519,530,3.283,531,3.519,532,3.519,533,3.283,534,3.519,535,3.519,536,3.519,537,3.519,538,3.519,539,3.519,540,3.283,541,3.283,542,3.519,543,3.519,544,3.519,545,3.283,546,3.283,547,3.519,548,2.475,549,3.519,550,3.519,551,3.519,1022,3.283,1373,5.36,1374,5.36]],["title/miscellaneous/variables.html",[1022,2.396,1375,4.605]],["body/miscellaneous/variables.html",[6,3.18,8,3.284,21,1.053,35,3.295,36,1.098,38,0.015,68,1.017,78,3.016,109,1.194,114,0.01,115,0.012,116,0.012,133,3.25,144,3.513,146,4.077,272,3.803,273,4.281,274,3.016,279,1.595,280,3.841,281,1.664,283,2.597,284,1.636,285,1.705,294,4.406,295,2.845,296,2.176,297,4.281,298,3.513,299,2.681,300,3.841,301,2.681,302,3.513,303,3.513,304,1.982,305,1.56,306,3.841,307,4.818,308,3.841,309,3.25,310,2.404,311,1.895,312,3.513,313,1.595,314,3.513,315,4.281,316,3.25,317,0.848,318,3.513,319,3.841,320,3.841,321,3.841,365,3.132,1022,3.032,1029,4.281,1375,4.281,1376,6.208,1377,4.95,1378,4.95,1379,4.95,1380,4.95]],["title/additional-documentation/getting-started.html",[317,0.594,326,0.517,688,1.99,689,2.274]],["body/additional-documentation/getting-started.html",[38,0.014,114,0.012,115,0.014,116,0.012,295,2.567,688,4.054,689,4.632,1225,4.019,1270,3.315,1381,4.75,1382,6.12]],["title/additional-documentation/preserving-state-(like-the-requested-url).html",[242,0.708,317,0.483,326,0.421,379,1.181,1383,2.436,1384,1.85]],["body/additional-documentation/preserving-state-(like-the-requested-url).html",[3,1.047,38,0.016,41,1.142,114,0.012,115,0.014,116,0.012,242,1.726,296,2.569,335,2.569,345,2.569,379,3.058,739,2.34,1250,4.147,1286,4.535,1383,5.055,1384,4.509,1385,5.844,1386,5.844,1387,4.147,1388,5.844,1389,5.844]],["title/additional-documentation/refreshing-a-token.html",[254,0.945,317,0.594,326,0.517,1140,2.121]],["body/additional-documentation/refreshing-a-token.html",[15,2.041,17,2.448,35,2.321,36,1.481,38,0.012,114,0.01,115,0.012,116,0.01,119,3.615,163,2.927,202,1.606,223,4.133,231,2.588,254,1.978,279,1.54,295,2.546,304,2.432,305,1.822,310,2.321,313,2.15,358,1.54,364,2.15,365,2.206,380,2.101,381,2.101,382,2.004,393,1.829,464,2.101,465,1.54,473,1.54,650,3.391,730,3.835,763,3.835,867,3.708,875,3.708,876,3.138,1128,3.391,1139,3.391,1140,3.719,1142,4.712,1144,4.133,1181,3.138,1183,4.133,1199,4.133,1207,2.588,1211,3.391,1294,4.309,1324,4.133,1390,3.391,1391,3.708,1392,4.778,1393,4.778,1394,4.133,1395,6.072,1396,3.708,1397,4.778,1398,4.133,1399,4.778,1400,4.778,1401,4.778,1402,3.708,1403,4.133,1404,5.252,1405,4.133,1406,4.133,1407,5.252,1408,5.252,1409,4.133,1410,4.133,1411,4.133,1412,3.708,1413,4.133,1414,4.133,1415,3.391,1416,4.133,1417,4.133,1418,4.133,1419,4.133]],["title/additional-documentation/silent-refresh.html",[317,0.594,326,0.517,343,1.326,364,1.116]],["body/additional-documentation/silent-refresh.html",[3,0.491,5,0.812,11,1.445,15,1.385,17,1.402,18,1.146,28,1.124,30,0.491,33,1.738,35,2.407,36,1.43,38,0.016,46,0.882,51,0.882,62,1.385,68,0.449,72,0.318,83,1.905,92,1.079,103,0.583,109,0.994,114,0.008,115,0.008,116,0.006,119,2.683,147,1.264,154,1.483,159,2.125,163,1.677,202,1.665,210,2.125,225,2.368,228,1.099,229,1.738,242,1.385,254,1.81,279,0.882,283,1.577,284,0.66,285,1.035,295,2.078,299,1.483,301,1.483,304,2.488,305,1.765,309,2.706,310,1.33,313,2.137,339,1.902,343,2.598,347,1.728,349,1.204,351,1.568,358,1.776,360,1.815,361,1.812,364,2.228,365,2.288,366,1.812,370,1.204,389,1.776,391,2.407,393,2.263,408,1.812,416,1.048,419,1.003,420,1.812,430,1.33,431,1.096,433,0.92,449,1.273,455,1.902,464,1.204,465,1.328,466,1.776,471,0.846,475,1.003,578,1.573,580,2.407,613,1.798,650,1.943,688,1.573,730,2.368,739,1.984,750,1.573,762,1.943,763,3.168,779,1.943,859,2.125,860,1.943,866,1.483,875,2.125,876,1.798,877,2.368,881,1.33,886,2.524,889,1.943,942,1.812,946,3.253,1033,2.368,1081,1.943,1086,1.402,1092,1.677,1128,1.943,1139,2.924,1140,3.035,1142,3.198,1165,2.986,1185,1.148,1186,1.943,1187,3.035,1190,2.683,1191,1.573,1192,1.573,1193,1.943,1194,1.677,1200,2.125,1206,1.573,1207,1.483,1208,1.677,1212,1.677,1213,1.798,1214,1.677,1215,1.402,1216,1.402,1246,1.943,1252,3.564,1256,1.573,1259,2.125,1268,1.798,1270,1.483,1294,2.924,1301,2.368,1302,2.125,1322,1.798,1396,2.125,1402,2.125,1403,2.368,1404,3.564,1405,2.368,1406,2.368,1407,3.564,1408,3.564,1409,2.368,1410,2.368,1411,2.368,1412,2.125,1413,2.368,1414,2.368,1415,1.943,1416,2.368,1417,2.368,1418,2.368,1419,2.368,1420,2.738,1421,4.12,1422,2.125,1423,3.198,1424,2.738,1425,2.738,1426,2.738,1427,2.738,1428,2.738,1429,2.738,1430,4.12,1431,5.512,1432,1.943,1433,2.368,1434,2.738,1435,2.738,1436,2.738,1437,2.738,1438,2.738,1439,3.564,1440,2.368,1441,1.573,1442,1.798,1443,2.738,1444,1.943,1445,1.943,1446,1.573,1447,2.738,1448,2.738,1449,2.738,1450,2.368,1451,4.286,1452,3.198,1453,2.368,1454,2.738,1455,2.738,1456,2.738,1457,2.738,1458,3.845,1459,2.125,1460,2.738,1461,2.738,1462,2.738,1463,2.368,1464,2.738,1465,2.738,1466,2.738,1467,2.738,1468,2.738,1469,2.738,1470,2.738,1471,2.738,1472,4.12,1473,2.738,1474,4.12,1475,2.368,1476,2.125,1477,3.564,1478,2.738,1479,2.738,1480,2.738,1481,2.738,1482,2.738,1483,2.738,1484,2.738,1485,2.738,1486,2.738,1487,2.738,1488,2.368,1489,2.738,1490,2.738,1491,2.125,1492,4.12,1493,2.738,1494,2.738,1495,2.738,1496,2.738,1497,2.738,1498,2.738,1499,2.125,1500,2.738,1501,2.738,1502,2.738,1503,2.738,1504,2.738,1505,2.738,1506,2.738]],["title/additional-documentation/working-with-httpinterceptors.html",[317,0.594,326,0.517,962,2.996,1507,3.463]],["body/additional-documentation/working-with-httpinterceptors.html",[0,0.239,10,0.911,14,1.697,18,1.168,28,0.989,38,0.016,41,0.987,55,3.316,62,1.218,63,1.85,68,1.151,72,0.587,84,1.963,92,1.322,103,1.495,114,0.007,115,0.01,116,0.007,126,1.56,127,1.168,195,2.572,196,5.027,200,1.76,202,1.697,203,3.135,204,4.049,205,3.135,206,3.093,208,3.135,209,4.368,210,2.813,211,4.368,213,3.135,214,3.816,215,3.135,216,5.027,217,1.963,227,4.511,228,1.29,229,2.319,230,3.093,231,1.963,232,2.813,233,3.316,234,2.764,235,3.135,236,1.451,239,3.135,242,0.911,243,3.135,244,3.135,245,3.135,246,3.135,247,5.438,248,4.128,249,3.135,252,3.135,254,1.586,267,3.135,268,4.368,270,3.135,281,1.218,283,1.387,284,0.874,285,0.911,311,1.387,338,1.697,351,1.436,358,1.168,365,2.332,382,1.52,416,1.387,419,1.328,421,1.673,439,2.328,588,2.38,605,2.572,608,3.584,614,3.584,615,2.572,619,2.813,620,3.919,773,3.135,901,3.135,1077,3.135,1078,1.76,1086,1.856,1120,3.135,1121,2.813,1175,2.813,1200,2.813,1204,2.572,1246,2.572,1254,4.368,1255,3.135,1256,2.083,1257,2.813,1396,2.813,1450,3.135,1459,2.813,1508,3.624,1509,3.624,1510,3.624,1511,3.135,1512,3.135,1513,3.624,1514,3.624,1515,3.624,1516,3.624,1517,3.624,1518,3.624,1519,3.624,1520,3.624,1521,3.624,1522,4.368,1523,2.38,1524,3.624,1525,3.624,1526,3.624,1527,3.624,1528,3.624,1529,3.624,1530,3.624,1531,3.624,1532,3.135,1533,3.624,1534,2.813,1535,3.624,1536,3.624,1537,3.624,1538,3.624,1539,3.624,1540,3.919,1541,3.624,1542,3.624,1543,3.624,1544,3.624,1545,3.624,1546,3.624]],["title/additional-documentation/callback-after-login.html",[317,0.594,326,0.517,739,1.387,1547,2.688]],["body/additional-documentation/callback-after-login.html",[38,0.016,51,2.162,62,1.889,63,2.059,114,0.011,115,0.013,116,0.011,335,2.951,387,2.472,397,2.731,402,2.256,420,2.472,739,2.688,859,4.363,1104,3.691,1240,3.99,1256,3.231,1351,4.863,1384,3.691,1387,3.99,1547,5.209,1548,5.622,1549,5.622,1550,5.622,1551,5.622,1552,5.622,1553,5.622]],["title/additional-documentation/popup-based-login.html",[317,0.533,326,0.464,347,1.303,739,1.244,913,2.205]],["body/additional-documentation/popup-based-login.html",[17,2.76,18,1.513,38,0.015,114,0.011,115,0.013,116,0.011,281,1.811,293,1.811,295,2.743,301,2.918,310,3.178,341,1.89,343,2.697,347,2.743,364,1.736,382,2.259,415,2.743,437,2.617,466,1.736,772,4.66,854,4.181,887,3.096,910,4.181,946,3.538,965,3.823,1055,4.66,1068,3.538,1078,2.617,1128,3.823,1179,4.181,1185,2.259,1214,3.3,1422,4.181,1453,4.66,1475,4.66,1499,4.181,1554,4.66,1555,5.387,1556,4.66,1557,5.387,1558,5.387,1559,5.387,1560,5.387,1561,5.387,1562,4.181,1563,5.387,1564,5.387,1565,5.387,1566,4.181,1567,5.387]],["title/additional-documentation/custom-query-parameters.html",[37,0.814,317,0.533,326,0.464,338,1.044,408,1.366]],["body/additional-documentation/custom-query-parameters.html",[33,2.073,37,1.548,38,0.015,114,0.012,115,0.014,116,0.012,304,2.367,305,1.485,338,2.323,351,1.681,393,2.263,408,2.599,950,4.195,1568,5.113,1569,5.91,1570,5.91,1571,5.91,1572,5.91,1573,5.91,1574,5.91,1575,5.91]],["title/additional-documentation/events.html",[317,0.671,326,0.584,394,1.72]],["body/additional-documentation/events.html",[5,0.72,18,1.016,28,1.199,36,0.975,38,0.016,62,1.476,68,0.72,78,2.134,83,1.415,114,0.009,115,0.012,116,0.009,214,2.885,229,1.541,233,3.777,254,1.199,258,2.525,281,1.933,283,1.682,284,1.387,285,1.104,299,2.379,304,1.759,305,1.104,327,2.028,328,2.028,343,2.202,364,2.066,369,2.656,370,1.932,379,2.412,394,3.185,396,3.26,403,1.932,418,2.028,471,1.357,521,3.523,528,2.691,530,2.691,533,2.691,540,2.691,541,2.691,545,2.691,560,3.8,730,2.525,763,2.525,765,3.118,866,3.115,886,2.691,890,3.409,902,2.885,913,3.118,1068,2.885,1092,3.523,1093,3.523,1145,2.691,1256,2.525,1299,3.118,1384,3.777,1394,4.975,1452,3.409,1459,3.409,1476,3.409,1576,4.393,1577,4.393,1578,4.393,1579,3.8,1580,4.393,1581,4.393,1582,3.8,1583,3.8,1584,4.393,1585,4.393,1586,4.393,1587,4.393,1588,4.393,1589,3.8,1590,4.393,1591,4.393,1592,4.393,1593,4.393,1594,4.393,1595,4.393,1596,5.751,1597,7.381,1598,5.751,1599,4.393,1600,4.393,1601,4.393,1602,4.393,1603,3.8,1604,4.393,1605,4.393,1606,3.8,1607,5.751,1608,5.751,1609,4.393,1610,4.393,1611,4.393,1612,4.393,1613,4.393,1614,4.393]],["title/additional-documentation/routing-with-the-hashstrategy.html",[317,0.594,326,0.517,914,2.121,1269,2.688]],["body/additional-documentation/routing-with-the-hashstrategy.html",[13,3.184,18,1.203,19,4.542,33,1.823,36,1.42,38,0.015,62,1.747,72,0.605,83,1.675,92,1.361,114,0.01,115,0.013,116,0.01,281,1.747,328,2.4,339,2.4,360,2.345,361,2.814,365,2.4,366,2.286,368,2.4,371,2.525,515,4.034,568,4.034,876,3.413,914,3.92,982,4.496,1063,5.999,1086,2.663,1186,3.689,1204,3.689,1235,3.184,1245,3.413,1256,2.987,1264,4.496,1268,3.413,1269,4.967,1432,3.689,1477,6.26,1491,4.034,1499,4.034,1615,4.034,1616,5.198,1617,4.496,1618,6.935,1619,5.198,1620,5.198,1621,5.198,1622,5.198,1623,5.198,1624,5.198,1625,5.198,1626,5.198,1627,5.198,1628,4.034,1629,5.198]],["title/additional-documentation/adapt-id_token-validation.html",[51,1.001,274,1.509,317,0.533,326,0.464,1630,2.687]],["body/additional-documentation/adapt-id_token-validation.html",[11,1.779,12,2.512,30,0.909,38,0.016,51,2.031,59,3.599,60,3.599,61,3.599,62,2.118,67,4.139,68,0.831,73,1.704,78,2.463,82,2.127,84,2.746,109,1.223,114,0.01,115,0.013,116,0.01,272,4.201,274,3.062,279,2.031,281,1.704,283,1.941,284,1.223,285,1.274,287,3.33,311,2.413,393,2.413,411,2.23,418,2.341,419,1.858,422,3.062,433,1.704,434,2.127,438,2.463,472,1.779,473,1.634,598,3.599,600,4.386,760,3.935,1068,3.33,1185,2.127,1259,3.935,1415,3.599,1458,3.935,1534,3.935,1556,4.386,1615,3.935,1630,4.386,1631,5.071,1632,5.071,1633,5.071,1634,5.071,1635,4.386,1636,5.071,1637,4.386,1638,5.071,1639,5.071,1640,4.386,1641,5.071]],["title/additional-documentation/session-checks.html",[317,0.594,326,0.517,765,2.458,886,2.121]],["body/additional-documentation/session-checks.html",[30,0.746,36,1.386,38,0.016,68,0.682,72,0.484,83,1.788,92,1.09,114,0.008,115,0.011,116,0.008,147,1.922,228,1.232,254,1.515,257,3.231,281,1.866,283,1.594,284,1.004,285,1.046,295,2.328,298,2.955,299,3.006,301,2.255,304,1.667,305,1.395,310,2.696,313,1.341,318,2.955,338,1.399,340,1.947,343,2.391,351,1.184,355,2.022,364,2.299,389,1.341,393,1.594,394,1.831,402,1.399,411,1.831,458,1.746,465,1.341,466,1.341,471,1.715,475,1.525,546,3.4,548,1.922,580,2.696,750,2.393,752,2.955,760,3.231,763,3.19,765,5.252,771,4.801,863,3.601,880,3.601,881,2.022,886,3.825,889,2.955,942,2.929,946,2.734,1040,2.955,1086,2.133,1093,2.55,1139,2.955,1145,3.4,1150,2.55,1165,2.255,1179,3.231,1181,4.1,1185,1.746,1187,3.825,1190,3.006,1191,2.393,1194,2.55,1215,2.133,1216,2.133,1224,2.734,1245,2.734,1250,2.955,1360,3.601,1391,3.231,1415,3.939,1439,3.601,1441,2.393,1442,2.734,1446,2.393,1491,3.231,1532,3.601,1603,3.601,1617,3.601,1642,4.163,1643,4.163,1644,4.163,1645,4.163,1646,4.163,1647,4.163,1648,4.163,1649,4.163,1650,4.163,1651,4.163,1652,4.163,1653,3.231,1654,5.551,1655,4.163,1656,5.551,1657,4.163,1658,4.163,1659,4.163,1660,4.163,1661,4.163,1662,4.163,1663,4.163,1664,4.163,1665,4.163,1666,4.163,1667,4.163,1668,4.163]],["title/additional-documentation/server-side-rendering.html",[228,0.689,317,0.533,326,0.464,434,1.303,1669,2.687]],["body/additional-documentation/server-side-rendering.html",[38,0.014,114,0.012,115,0.014,116,0.012,228,1.616,277,5.041,281,1.959,340,2.044,434,3.055,851,5.041,879,3.569,1078,2.831,1084,4.522,1085,4.522,1523,3.826,1540,4.522,1554,5.041,1669,6.301,1670,5.827,1671,5.827,1672,5.041,1673,5.827,1674,5.827,1675,5.827]],["title/additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html",[281,0.74,304,0.881,305,0.553,317,0.377,326,0.329,472,0.772,473,0.709,1185,0.923,1322,1.445]],["body/additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html",[0,0.181,11,1.544,15,1.48,18,1.332,38,0.016,40,0.824,72,0.512,109,1.062,114,0.009,115,0.012,116,0.009,202,1.936,228,1.278,242,1.711,281,1.48,295,1.846,304,1.763,305,1.106,310,2.139,316,2.891,317,0.755,329,1.936,341,1.544,351,1.638,358,1.418,360,1.613,389,2.068,403,1.936,416,1.685,431,1.763,433,1.48,435,1.936,436,1.846,449,1.983,456,1.763,465,1.418,466,2.068,471,1.36,472,2.02,473,1.856,548,2.033,578,3.31,580,2.139,613,2.891,728,3.124,739,2.571,879,2.696,881,2.139,942,2.532,945,2.53,1076,3.124,1078,2.139,1092,2.696,1093,2.696,1150,2.696,1152,3.808,1157,3.417,1165,3.476,1176,2.696,1185,2.415,1190,2.384,1191,2.53,1192,2.53,1206,2.53,1207,2.384,1212,3.528,1215,2.255,1216,2.255,1225,2.891,1235,2.696,1240,3.124,1247,3.417,1270,2.384,1322,2.891,1387,3.124,1390,3.124,1423,3.417,1432,3.124,1441,3.31,1446,2.53,1562,3.417,1653,3.417,1676,3.808,1677,3.124,1678,3.124,1679,4.402,1680,4.402,1681,3.417,1682,3.124,1683,3.417,1684,3.808,1685,3.808,1686,3.808,1687,4.402,1688,4.402,1689,4.402,1690,3.808,1691,3.808,1692,4.402]],["title/additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html",[36,0.488,274,1.069,317,0.377,326,0.329,449,0.68,472,0.772,473,0.709,580,1.069,1693,2.2]],["body/additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html",[18,1.008,30,1.025,38,0.016,64,1.596,68,0.714,72,0.507,92,1.141,114,0.009,115,0.011,116,0.009,147,2.011,228,0.967,242,1.77,274,3.102,279,1.403,281,1.464,283,1.668,284,1.05,285,1.437,345,1.915,349,1.915,351,1.816,360,1.596,365,2.011,366,2.515,389,1.403,419,1.596,433,1.464,449,2.176,458,1.827,465,1.843,466,1.403,471,1.973,472,2.535,473,2.329,475,2.339,580,3.294,598,4.059,739,1.744,750,2.503,881,2.116,942,2.515,950,4.532,1056,3.381,1068,2.86,1145,3.911,1165,3.459,1187,3.911,1190,2.359,1191,2.503,1192,2.503,1193,3.091,1194,2.668,1206,2.503,1207,2.359,1208,2.668,1213,2.86,1214,2.668,1215,2.231,1216,2.231,1265,3.768,1270,2.359,1433,3.768,1441,2.503,1442,2.86,1444,3.091,1445,3.091,1446,2.503,1589,3.768,1694,6.386,1695,4.356,1696,5.865,1697,4.356,1698,4.947,1699,4.356,1700,4.356,1701,4.356,1702,4.356,1703,4.356,1704,4.356,1705,4.356,1706,4.356,1707,4.356,1708,4.356,1709,4.356,1710,4.356,1711,3.768,1712,3.768,1713,4.356]],["title/additional-documentation/using-systemjs.html",[36,0.769,317,0.594,326,0.517,1714,2.996]],["body/additional-documentation/using-systemjs.html",[36,1.196,38,0.016,114,0.011,115,0.013,116,0.011,145,3.538,222,2.488,283,2.805,284,1.767,285,1.77,578,3.096,721,4.643,965,4.643,1093,3.3,1146,4.66,1452,4.181,1714,6.094,1715,5.387,1716,5.387,1717,5.387,1718,5.387,1719,6.542,1720,6.542,1721,5.387,1722,5.387,1723,5.387,1724,5.387,1725,5.387,1726,5.387,1727,5.387,1728,5.387]],["title/additional-documentation/using-implicit-flow.html",[36,0.689,304,1.244,305,0.781,317,0.533,326,0.464]],["body/additional-documentation/using-implicit-flow.html",[0,0.212,30,0.672,36,1.147,38,0.016,39,1.299,46,1.208,68,1.162,72,0.688,84,3.205,103,1.1,109,0.904,114,0.008,115,0.01,116,0.008,127,1.666,147,1.731,202,2.383,228,0.832,231,2.03,234,1.648,242,1.299,272,3.166,279,1.208,281,1.26,283,2.442,284,1.614,285,1.738,293,1.26,302,2.66,303,2.66,304,2.37,305,1.682,309,3.395,313,1.208,316,2.462,317,0.886,341,1.315,351,1.066,358,1.208,360,1.373,380,1.648,381,1.648,389,1.208,392,1.731,433,1.26,448,2.273,449,1.597,465,1.666,466,1.208,471,1.158,475,1.373,548,1.731,578,2.154,580,1.821,612,2.909,739,2.839,750,2.154,779,2.66,881,1.821,942,2.273,945,2.154,1040,2.66,1161,3.243,1165,3.205,1176,2.296,1177,2.909,1185,2.168,1187,3.907,1190,2.03,1191,2.154,1192,2.154,1194,2.296,1206,2.154,1207,2.03,1208,2.296,1213,2.462,1214,2.296,1215,1.92,1216,1.92,1239,2.462,1244,3.243,1245,2.462,1268,2.462,1286,2.909,1294,2.66,1402,2.909,1441,2.154,1442,2.462,1444,2.66,1445,2.66,1446,2.154,1522,3.243,1523,2.462,1583,3.243,1615,2.909,1628,2.909,1637,3.243,1677,4.527,1678,3.669,1729,3.749,1730,3.749,1731,3.749,1732,3.749,1733,3.749,1734,3.749,1735,3.749,1736,5.17,1737,3.749,1738,3.749,1739,3.749,1740,3.749,1741,3.749,1742,3.243,1743,3.749,1744,3.749,1745,3.243,1746,3.243,1747,3.749,1748,5.17,1749,3.749,1750,3.749,1751,3.749]],["title/additional-documentation/using-password-flow.html",[36,0.689,305,0.781,317,0.533,326,0.464,1137,2.411]],["body/additional-documentation/using-password-flow.html",[0,0.168,3,0.485,11,0.949,17,2.092,18,1.361,36,1.53,38,0.016,39,0.68,40,0.506,43,0.872,51,0.872,72,0.475,103,0.576,109,0.652,114,0.005,115,0.008,116,0.005,161,2.1,168,2.298,182,2.898,200,1.314,202,1.842,227,3.169,228,1.372,231,1.465,242,1.236,254,1.752,275,4.74,279,0.872,281,1.653,285,1.026,295,2.467,303,1.92,304,1.083,305,1.804,310,2.662,313,0.872,329,1.796,340,2.169,341,0.949,348,1.249,351,1.673,358,0.872,364,1.316,387,2.163,389,1.992,392,1.249,393,1.563,400,1.713,402,0.909,415,1.135,416,1.563,431,1.083,433,2.317,435,1.19,436,1.135,448,2.409,449,1.817,456,1.083,465,1.585,466,2.129,471,1.262,472,1.922,473,1.765,512,2.34,515,2.1,730,1.555,739,1.635,866,1.465,867,3.169,879,2.501,881,1.984,902,3.23,904,3.532,913,1.92,914,1.657,919,2.898,942,2.163,993,3.532,1040,1.92,1078,2.857,1092,1.657,1104,1.776,1118,3.532,1135,3.169,1137,5.35,1140,1.657,1145,2.501,1158,3.532,1165,3.186,1176,3.013,1181,2.682,1185,2.298,1192,2.347,1196,2.34,1197,5.963,1204,2.898,1205,3.532,1206,2.347,1207,2.212,1211,3.491,1215,2.52,1216,2.52,1228,2.34,1235,1.657,1239,1.776,1240,3.491,1246,1.92,1256,1.555,1268,1.776,1322,3.23,1384,1.776,1412,2.1,1422,3.169,1432,1.92,1441,2.827,1446,2.347,1451,2.34,1458,2.1,1488,2.34,1523,1.776,1534,2.1,1582,2.34,1635,2.34,1640,3.532,1653,3.169,1677,2.898,1678,2.898,1682,2.898,1683,3.169,1684,2.34,1685,2.34,1686,2.34,1745,3.532,1746,3.532,1752,2.705,1753,2.705,1754,2.705,1755,2.705,1756,2.705,1757,2.705,1758,2.705,1759,2.705,1760,2.705,1761,2.34,1762,2.34,1763,2.705,1764,2.705,1765,2.705,1766,4.084,1767,2.705,1768,4.084,1769,4.084,1770,4.084,1771,4.084,1772,4.084,1773,4.084,1774,2.34,1775,2.705,1776,2.705,1777,2.705,1778,2.705,1779,2.705,1780,2.705,1781,2.705,1782,2.705,1783,2.705,1784,4.084,1785,2.705,1786,2.705,1787,2.705,1788,2.705,1789,2.705,1790,4.084,1791,2.705,1792,4.084,1793,2.705,1794,2.705,1795,2.705,1796,2.705,1797,2.705,1798,2.705]],["title/additional-documentation/configure-custom-oauthstorage.html",[317,0.533,326,0.464,338,1.044,439,1.244,1185,1.303]],["body/additional-documentation/configure-custom-oauthstorage.html",[0,0.247,18,1.392,36,1.336,38,0.016,68,0.986,72,0.7,103,1.003,114,0.009,115,0.012,116,0.009,119,2.553,144,3.345,154,2.553,217,2.553,281,1.584,283,1.804,284,1.136,285,1.184,301,2.553,338,2.229,341,1.653,365,2.176,400,2.524,416,1.804,419,1.727,431,2.798,435,3.246,436,2.524,439,2.798,569,3.095,580,3.221,582,3.658,595,3.658,596,3.658,598,3.345,599,4.077,762,4.271,860,3.345,1004,3.658,1052,3.345,1078,2.289,1086,2.414,1173,5.206,1174,5.736,1175,3.658,1176,3.687,1177,3.658,1178,5.206,1185,1.976,1186,4.706,1270,2.553,1299,3.345,1476,3.658,1540,3.658,1799,4.713,1800,4.713,1801,4.077,1802,4.713,1803,6.019,1804,4.713]],["title/additional-documentation/manually-skipping-login-form.html",[317,0.483,326,0.421,739,1.128,1235,1.725,1239,1.85,1805,2.436]],["body/additional-documentation/manually-skipping-login-form.html",[15,1.559,18,1.378,36,1.029,38,0.016,44,1.627,83,1.92,103,1.401,109,1.119,114,0.009,115,0.012,116,0.009,228,1.029,242,1.166,254,1.626,257,3.6,301,2.513,305,1.166,312,3.292,317,0.795,324,2.751,335,2.04,341,1.627,358,1.495,370,2.04,400,1.945,421,2.142,449,1.433,466,1.495,728,3.292,739,1.858,763,2.666,853,4.013,866,2.513,886,2.841,900,4.013,902,3.046,905,4.013,942,2.04,945,2.666,1086,2.376,1092,2.841,1104,3.046,1135,3.6,1181,3.046,1208,2.841,1235,2.841,1239,3.046,1245,3.046,1250,3.292,1547,3.6,1579,4.013,1606,4.013,1628,3.6,1672,4.013,1742,4.013,1805,4.013,1806,5.958,1807,4.639,1808,4.639,1809,4.639,1810,5.958,1811,4.639,1812,5.958,1813,4.639,1814,4.639,1815,4.639,1816,4.639,1817,4.639,1818,4.639,1819,4.639,1820,4.639,1821,4.639,1822,4.639,1823,4.639,1824,4.639,1825,4.639,1826,4.639]],["title/additional-documentation/original-config-api.html",[317,0.533,326,0.464,578,1.785,1212,1.903,1390,2.205]],["body/additional-documentation/original-config-api.html",[0,0.169,15,1.385,18,0.954,30,0.739,35,2.002,38,0.016,39,1.036,72,0.479,109,0.994,111,2.707,114,0.008,115,0.011,116,0.008,200,2.002,202,1.853,228,1.379,242,1.561,254,1.125,274,3.018,279,1.328,281,1.385,284,0.994,285,1.036,295,1.729,310,2.002,314,2.925,317,0.707,329,1.812,351,1.568,358,1.777,360,1.51,387,1.812,389,2.002,403,1.812,416,2.111,433,1.385,449,1.92,465,1.328,466,2.137,471,1.274,472,2.327,473,2.137,475,1.51,578,3.812,580,2.002,613,2.707,730,2.369,739,2.488,866,2.232,879,3.377,881,2.002,890,3.199,914,2.525,942,1.812,945,2.369,1076,2.925,1093,2.525,1096,3.565,1104,2.707,1157,3.199,1165,3.365,1176,3.377,1185,1.729,1190,2.232,1191,2.369,1192,2.369,1193,2.925,1206,2.369,1207,2.232,1208,2.525,1212,4.063,1213,2.707,1214,2.525,1215,2.111,1216,2.111,1225,2.707,1247,3.199,1270,2.232,1381,3.199,1387,2.925,1390,3.913,1391,3.199,1423,4.279,1441,2.369,1442,2.707,1444,2.925,1445,2.925,1446,2.369,1511,3.565,1512,3.565,1562,3.199,1676,3.565,1677,2.925,1678,2.925,1681,3.199,1682,2.925,1683,3.199,1690,3.565,1691,3.565,1696,4.769,1698,3.565,1711,3.565,1712,3.565,1761,3.565,1762,3.565,1774,3.565,1827,4.122,1828,4.122,1829,4.122,1830,4.122,1831,4.122,1832,4.122,1833,4.122,1834,4.122,1835,4.122,1836,4.122,1837,4.122]],["title/additional-documentation/authorization-servers.html",[317,0.594,326,0.517,1234,2.688,1838,2.996]],["body/additional-documentation/authorization-servers.html",[36,1.297,38,0.014,114,0.012,115,0.014,116,0.012,284,1.409,389,1.883,402,2.308,458,2.451,471,1.806,752,4.147,887,3.358,1134,5.055,1147,5.055,1234,5.66,1398,5.055,1440,5.055,1523,3.837,1566,4.535,1801,5.055,1839,5.844,1840,6.867,1841,5.844,1842,5.844,1843,5.844]],["title/additional-documentation/authorization-servers/using-identity-server.html",[36,0.689,228,0.689,317,0.533,326,0.464,942,1.366]],["body/additional-documentation/authorization-servers/using-identity-server.html",[36,1.354,38,0.014,114,0.012,115,0.014,116,0.012,228,1.563,402,2.051,887,3.507,942,3.097,1078,2.964,1155,4.331,1224,4.007]],["title/additional-documentation/authorization-servers/using-keycloak.html",[36,0.769,317,0.594,326,0.517,1046,2.688]],["body/additional-documentation/authorization-servers/using-keycloak.html",[36,1.362,38,0.014,114,0.012,115,0.014,116,0.012,402,2.063,887,3.528,1046,5.484,1078,2.982,1155,4.356,1224,4.031]],["title/additional-documentation/authorization-servers/auth0.html",[317,0.671,326,0.584,1049,3.037]],["body/additional-documentation/authorization-servers/auth0.html",[5,0.748,18,1.365,36,1.45,37,1.196,38,0.016,39,1.148,41,0.893,68,0.748,72,0.531,92,1.196,114,0.009,115,0.012,116,0.009,147,2.109,254,1.783,283,2.258,284,1.422,285,1.482,295,1.915,313,1.901,317,0.783,351,1.299,364,1.901,402,1.535,415,1.915,419,1.673,433,1.535,449,1.411,456,2.362,465,1.472,471,1.411,475,1.673,548,2.724,581,5.102,688,2.625,750,2.625,755,5.102,826,3.545,866,2.474,881,2.219,882,3.545,887,2.625,919,4.186,945,3.39,950,3.241,1049,5.359,1052,3.241,1078,2.219,1086,2.34,1088,3.545,1140,2.798,1145,3.613,1150,2.798,1155,3.241,1185,2.474,1187,4.002,1190,2.474,1194,2.798,1211,3.241,1212,2.798,1215,2.34,1216,2.34,1224,2.999,1225,2.999,1257,3.545,1381,3.545,1463,3.951,1566,4.578,1568,3.951,1681,3.545,1682,3.241,1838,3.951,1844,4.567,1845,4.567,1846,4.567,1847,5.899,1848,4.567,1849,4.567,1850,4.567,1851,4.567,1852,4.567,1853,4.567,1854,4.567,1855,4.567,1856,4.567,1857,5.899,1858,5.899,1859,4.567,1860,4.567,1861,4.567,1862,4.567,1863,4.567]],["title/additional-documentation/authorization-servers/azure-ad-(active-directory).html",[317,0.483,326,0.421,1079,2.186,1080,2.186,1081,1.999,1082,2.186]],["body/additional-documentation/authorization-servers/azure-ad-(active-directory).html",[36,1.537,38,0.014,114,0.012,115,0.014,116,0.012,281,1.992,326,0.885,1076,4.207,1079,5.693,1080,4.6,1081,4.207,1082,5.374,1083,5.127,1084,5.374,1085,5.374,1086,3.036,1087,5.127,1088,4.6]]],"invertedIndex":[["",{"_index":38,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/DateTimeProvider.html":{},"injectables/DefaultHashHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/HashHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthModuleConfig.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerConfig.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/OAuthStorage.html":{},"classes/OAuthSuccessEvent.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"injectables/SystemDateTimeProvider.html":{},"interfaces/TokenResponse.html":{},"injectables/UrlHelperService.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"changelog.html":{},"dependencies.html":{},"miscellaneous/functions.html":{},"index.html":{},"license.html":{},"modules.html":{},"overview.html":{},"miscellaneous/typealiases.html":{},"miscellaneous/variables.html":{},"additional-documentation/getting-started.html":{},"additional-documentation/preserving-state-(like-the-requested-url).html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/callback-after-login.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/custom-query-parameters.html":{},"additional-documentation/events.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/server-side-rendering.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-systemjs.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/manually-skipping-login-form.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers.html":{},"additional-documentation/authorization-servers/using-identity-server.html":{},"additional-documentation/authorization-servers/using-keycloak.html":{},"additional-documentation/authorization-servers/auth0.html":{},"additional-documentation/authorization-servers/azure-ad-(active-directory).html":{}}}],["0",{"_index":163,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/HashHandler.html":{},"injectables/UrlHelperService.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{}}}],["0.1.3",{"_index":800,"title":{},"body":{"changelog.html":{}}}],["0.1.4",{"_index":801,"title":{},"body":{"changelog.html":{}}}],["0.11.4",{"_index":1021,"title":{},"body":{"dependencies.html":{}}}],["0.33",{"_index":1417,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{}}}],["0.43.0",{"_index":1018,"title":{},"body":{"dependencies.html":{}}}],["0.5",{"_index":1414,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{}}}],["026dcb3",{"_index":824,"title":{},"body":{"changelog.html":{}}}],["03",{"_index":936,"title":{},"body":{"changelog.html":{}}}],["04",{"_index":933,"title":{},"body":{"changelog.html":{}}}],["05",{"_index":931,"title":{},"body":{"changelog.html":{}}}],["06",{"_index":784,"title":{},"body":{"changelog.html":{}}}],["07",{"_index":693,"title":{},"body":{"changelog.html":{}}}],["07bb62d",{"_index":929,"title":{},"body":{"changelog.html":{}}}],["09",{"_index":932,"title":{},"body":{"changelog.html":{}}}],["0c0a4a7",{"_index":748,"title":{},"body":{"changelog.html":{}}}],["0f03d39",{"_index":912,"title":{},"body":{"changelog.html":{}}}],["1",{"_index":650,"title":{},"body":{"injectables/UrlHelperService.html":{},"overview.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{}}}],["1.0",{"_index":1646,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["1.3.0",{"_index":1006,"title":{},"body":{"dependencies.html":{}}}],["1.4.3",{"_index":1000,"title":{},"body":{"dependencies.html":{}}}],["1.5.1",{"_index":1003,"title":{},"body":{"dependencies.html":{}}}],["10",{"_index":1075,"title":{},"body":{"index.html":{}}}],["10.0.0",{"_index":782,"title":{},"body":{"changelog.html":{}}}],["10.0.3",{"_index":1001,"title":{},"body":{"dependencies.html":{}}}],["10.2.0",{"_index":722,"title":{},"body":{"changelog.html":{}}}],["10.3.0",{"_index":1007,"title":{},"body":{"dependencies.html":{}}}],["10.x",{"_index":1097,"title":{},"body":{"index.html":{}}}],["1061",{"_index":724,"title":{},"body":{"changelog.html":{}}}],["11",{"_index":911,"title":{},"body":{"changelog.html":{},"index.html":{}}}],["12",{"_index":1062,"title":{},"body":{"index.html":{}}}],["12.0.0",{"_index":691,"title":{},"body":{"changelog.html":{}}}],["12.1.2",{"_index":988,"title":{},"body":{"dependencies.html":{}}}],["12.x",{"_index":1094,"title":{},"body":{"index.html":{}}}],["132c624",{"_index":855,"title":{},"body":{"changelog.html":{}}}],["16",{"_index":694,"title":{},"body":{"changelog.html":{}}}],["169d749",{"_index":827,"title":{},"body":{"changelog.html":{}}}],["1816e7b",{"_index":839,"title":{},"body":{"changelog.html":{}}}],["1_0.html#tokenendpoint",{"_index":460,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["1_0.html#userinfo",{"_index":467,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["1cae011",{"_index":906,"title":{},"body":{"changelog.html":{}}}],["2",{"_index":96,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"index.html":{}}}],["2.0",{"_index":1183,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{}}}],["2.0.0",{"_index":1016,"title":{},"body":{"dependencies.html":{}}}],["2.1",{"_index":1040,"title":{},"body":{"index.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{}}}],["2.3.0",{"_index":1010,"title":{},"body":{"dependencies.html":{}}}],["2.9.2",{"_index":997,"title":{},"body":{"dependencies.html":{}}}],["2/oidc",{"_index":1272,"title":{},"body":{"index.html":{}}}],["20",{"_index":1302,"title":{},"body":{"index.html":{},"overview.html":{},"additional-documentation/silent-refresh.html":{}}}],["20.000",{"_index":1505,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["2017",{"_index":1310,"title":{},"body":{"license.html":{}}}],["2020",{"_index":783,"title":{},"body":{"changelog.html":{}}}],["2021",{"_index":692,"title":{},"body":{"changelog.html":{}}}],["2204c5a",{"_index":732,"title":{},"body":{"changelog.html":{}}}],["23",{"_index":934,"title":{},"body":{"changelog.html":{}}}],["256",{"_index":819,"title":{},"body":{"changelog.html":{}}}],["28",{"_index":937,"title":{},"body":{"changelog.html":{}}}],["2nd",{"_index":1861,"title":{},"body":{"additional-documentation/authorization-servers/auth0.html":{}}}],["3.1",{"_index":1508,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["3.4.1",{"_index":1005,"title":{},"body":{"dependencies.html":{}}}],["30",{"_index":785,"title":{},"body":{"changelog.html":{}}}],["31c6273",{"_index":899,"title":{},"body":{"changelog.html":{}}}],["38c7c3f",{"_index":829,"title":{},"body":{"changelog.html":{}}}],["3d331f2",{"_index":930,"title":{},"body":{"changelog.html":{}}}],["3f44eca",{"_index":915,"title":{},"body":{"changelog.html":{}}}],["4",{"_index":880,"title":{},"body":{"changelog.html":{},"additional-documentation/session-checks.html":{}}}],["4.3",{"_index":1061,"title":{},"body":{"index.html":{}}}],["4.x",{"_index":1103,"title":{},"body":{"index.html":{}}}],["401",{"_index":1516,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["403",{"_index":1517,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["40f5ae5",{"_index":807,"title":{},"body":{"changelog.html":{}}}],["415e053",{"_index":792,"title":{},"body":{"changelog.html":{}}}],["4202",{"_index":1168,"title":{},"body":{"index.html":{}}}],["4202]/index.html",{"_index":1169,"title":{},"body":{"index.html":{}}}],["4202]/silent",{"_index":1170,"title":{},"body":{"index.html":{}}}],["429ed2c",{"_index":894,"title":{},"body":{"changelog.html":{}}}],["4607d55",{"_index":822,"title":{},"body":{"changelog.html":{}}}],["4711",{"_index":1573,"title":{},"body":{"additional-documentation/custom-query-parameters.html":{}}}],["4bf8901",{"_index":891,"title":{},"body":{"changelog.html":{}}}],["4def1c1",{"_index":797,"title":{},"body":{"changelog.html":{}}}],["4th",{"_index":1445,"title":{},"body":{"additional-documentation/silent-refresh.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["5",{"_index":1371,"title":{},"body":{"overview.html":{}}}],["5.x",{"_index":1106,"title":{},"body":{"index.html":{}}}],["51e438a",{"_index":698,"title":{},"body":{"changelog.html":{}}}],["58a8132",{"_index":848,"title":{},"body":{"changelog.html":{}}}],["58c6354",{"_index":885,"title":{},"body":{"changelog.html":{}}}],["59f65d2",{"_index":726,"title":{},"body":{"changelog.html":{}}}],["5c5288c",{"_index":849,"title":{},"body":{"changelog.html":{}}}],["6",{"_index":1102,"title":{},"body":{"index.html":{}}}],["6.5.3",{"_index":1011,"title":{},"body":{"dependencies.html":{}}}],["6.6.7",{"_index":1013,"title":{},"body":{"dependencies.html":{}}}],["61sdfs.eu.auth0.com",{"_index":1848,"title":{},"body":{"additional-documentation/authorization-servers/auth0.html":{}}}],["61sdfs.eu.auth0.com/v2/logout",{"_index":1852,"title":{},"body":{"additional-documentation/authorization-servers/auth0.html":{}}}],["65c2b95",{"_index":852,"title":{},"body":{"changelog.html":{}}}],["678ff95",{"_index":843,"title":{},"body":{"changelog.html":{}}}],["687",{"_index":907,"title":{},"body":{"changelog.html":{}}}],["7",{"_index":1100,"title":{},"body":{"index.html":{}}}],["7.x",{"_index":1101,"title":{},"body":{"index.html":{}}}],["7009",{"_index":940,"title":{},"body":{"changelog.html":{},"index.html":{}}}],["70fd826",{"_index":710,"title":{},"body":{"changelog.html":{}}}],["71b705c",{"_index":921,"title":{},"body":{"changelog.html":{}}}],["728",{"_index":697,"title":{},"body":{"changelog.html":{}}}],["735",{"_index":963,"title":{},"body":{"changelog.html":{}}}],["741",{"_index":957,"title":{},"body":{"changelog.html":{}}}],["75",{"_index":1405,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{}}}],["755",{"_index":948,"title":{},"body":{"changelog.html":{}}}],["773",{"_index":842,"title":{},"body":{"changelog.html":{}}}],["77cb37a",{"_index":896,"title":{},"body":{"changelog.html":{}}}],["7a15194",{"_index":805,"title":{},"body":{"changelog.html":{}}}],["7eac8ae",{"_index":924,"title":{},"body":{"changelog.html":{}}}],["8",{"_index":898,"title":{},"body":{"changelog.html":{},"index.html":{}}}],["8.0.12",{"_index":795,"title":{},"body":{"changelog.html":{}}}],["8.0.19",{"_index":796,"title":{},"body":{"changelog.html":{}}}],["8.x",{"_index":1099,"title":{},"body":{"index.html":{}}}],["808969225",{"_index":702,"title":{},"body":{"changelog.html":{}}}],["825",{"_index":828,"title":{},"body":{"changelog.html":{}}}],["84d95a7",{"_index":789,"title":{},"body":{"changelog.html":{}}}],["8ab853b",{"_index":874,"title":{},"body":{"changelog.html":{}}}],["8fa99ff",{"_index":917,"title":{},"body":{"changelog.html":{}}}],["9",{"_index":300,"title":{},"body":{"classes/JwksValidationHandler.html":{},"index.html":{},"miscellaneous/variables.html":{}}}],["9.0.0",{"_index":1002,"title":{},"body":{"dependencies.html":{},"index.html":{}}}],["9.1.0",{"_index":941,"title":{},"body":{"changelog.html":{},"index.html":{}}}],["9.2",{"_index":790,"title":{},"body":{"changelog.html":{}}}],["9.2.0",{"_index":935,"title":{},"body":{"changelog.html":{}}}],["9.2.1",{"_index":804,"title":{},"body":{"changelog.html":{}}}],["9.2.2",{"_index":806,"title":{},"body":{"changelog.html":{}}}],["9.3.0",{"_index":808,"title":{},"body":{"changelog.html":{}}}],["9.x",{"_index":1098,"title":{},"body":{"index.html":{}}}],["92ee76d",{"_index":820,"title":{},"body":{"changelog.html":{}}}],["93902a5",{"_index":878,"title":{},"body":{"changelog.html":{}}}],["970",{"_index":705,"title":{},"body":{"changelog.html":{}}}],["972",{"_index":719,"title":{},"body":{"changelog.html":{}}}],["9761bad",{"_index":736,"title":{},"body":{"changelog.html":{}}}],["9]{3",{"_index":107,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["9e257d0",{"_index":717,"title":{},"body":{"changelog.html":{}}}],["9e95c73",{"_index":836,"title":{},"body":{"changelog.html":{}}}],["_throw(err",{"_index":1527,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["a021627fd9d3the",{"_index":1673,"title":{},"body":{"additional-documentation/server-side-rendering.html":{}}}],["a05bd8a",{"_index":723,"title":{},"body":{"changelog.html":{}}}],["above",{"_index":1270,"title":{},"body":{"index.html":{},"license.html":{},"additional-documentation/getting-started.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/original-config-api.html":{}}}],["abstract",{"_index":10,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/DateTimeProvider.html":{},"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthLogger.html":{},"classes/OAuthModuleConfig.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerConfig.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/OAuthStorage.html":{},"classes/OAuthSuccessEvent.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"injectables/SystemDateTimeProvider.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["abstraction",{"_index":150,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["abstractvalidationhandler",{"_index":1,"title":{"classes/AbstractValidationHandler.html":{}},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["accept",{"_index":735,"title":{},"body":{"changelog.html":{}}}],["access",{"_index":902,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/events.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["access_token",{"_index":63,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/callback-after-login.html":{}}}],["accesstoken",{"_index":75,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["according",{"_index":938,"title":{},"body":{"changelog.html":{},"index.html":{}}}],["account",{"_index":1845,"title":{},"body":{"additional-documentation/authorization-servers/auth0.html":{}}}],["acr_values_supported",{"_index":487,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["action",{"_index":1360,"title":{},"body":{"license.html":{},"additional-documentation/session-checks.html":{}}}],["activate",{"_index":1654,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["activated",{"_index":1647,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["active",{"_index":1080,"title":{"additional-documentation/authorization-servers/azure-ad-(active-directory).html":{}},"body":{"index.html":{},"additional-documentation/authorization-servers/azure-ad-(active-directory).html":{}}}],["actual",{"_index":342,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["ad",{"_index":1082,"title":{"additional-documentation/authorization-servers/azure-ad-(active-directory).html":{}},"body":{"index.html":{},"additional-documentation/authorization-servers/azure-ad-(active-directory).html":{}}}],["adapt",{"_index":1630,"title":{"additional-documentation/adapt-id_token-validation.html":{}},"body":{"additional-documentation/adapt-id_token-validation.html":{}}}],["add",{"_index":762,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["added",{"_index":756,"title":{},"body":{"changelog.html":{}}}],["adding",{"_index":1717,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["addition",{"_index":1651,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["additional",{"_index":326,"title":{"additional-documentation/getting-started.html":{},"additional-documentation/preserving-state-(like-the-requested-url).html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/callback-after-login.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/custom-query-parameters.html":{},"additional-documentation/events.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/server-side-rendering.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-systemjs.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/manually-skipping-login-form.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers.html":{},"additional-documentation/authorization-servers/using-identity-server.html":{},"additional-documentation/authorization-servers/using-keycloak.html":{},"additional-documentation/authorization-servers/auth0.html":{},"additional-documentation/authorization-servers/azure-ad-(active-directory).html":{}},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"index.html":{},"additional-documentation/authorization-servers/azure-ad-(active-directory).html":{}}}],["adhere",{"_index":1706,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["adjust",{"_index":1409,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{}}}],["advanced",{"_index":1463,"title":{},"body":{"additional-documentation/silent-refresh.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["against",{"_index":61,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["alert(1",{"_index":181,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["alg",{"_index":49,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["alg.match(/^.s[0",{"_index":106,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["alg.substr(2",{"_index":113,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["algorithm",{"_index":29,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["algorithms",{"_index":152,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["aliases",{"_index":1373,"title":{},"body":{"miscellaneous/typealiases.html":{}}}],["alice/alice",{"_index":1163,"title":{},"body":{"index.html":{}}}],["align",{"_index":1180,"title":{},"body":{"index.html":{}}}],["allow",{"_index":875,"title":{},"body":{"changelog.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{}}}],["allowedurls",{"_index":614,"title":{},"body":{"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{},"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["allows",{"_index":666,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["already",{"_index":13,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"changelog.html":{},"index.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["alternative",{"_index":1447,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["although",{"_index":1769,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["ambient",{"_index":832,"title":{},"body":{"changelog.html":{}}}],["analyzing",{"_index":984,"title":{},"body":{"changelog.html":{}}}],["and/or",{"_index":1330,"title":{},"body":{"license.html":{}}}],["angular",{"_index":283,"title":{},"body":{"classes/JwksValidationHandler.html":{},"changelog.html":{},"dependencies.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/events.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-systemjs.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["angular/animations",{"_index":987,"title":{},"body":{"dependencies.html":{}}}],["angular/common",{"_index":584,"title":{},"body":{"modules/OAuthModule.html":{},"dependencies.html":{}}}],["angular/common/http",{"_index":217,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"modules/OAuthModule.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["angular/compiler",{"_index":989,"title":{},"body":{"dependencies.html":{}}}],["angular/core",{"_index":127,"title":{},"body":{"classes/DateTimeProvider.html":{},"injectables/DefaultHashHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/HashHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"injectables/SystemDateTimeProvider.html":{},"interfaces/TokenResponse.html":{},"injectables/UrlHelperService.html":{},"interfaces/UserInfo.html":{},"dependencies.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/using-implicit-flow.html":{}}}],["angular/elements",{"_index":990,"title":{},"body":{"dependencies.html":{}}}],["angular/forms",{"_index":991,"title":{},"body":{"dependencies.html":{}}}],["angular/platform",{"_index":992,"title":{},"body":{"dependencies.html":{}}}],["angular/router",{"_index":995,"title":{},"body":{"dependencies.html":{}}}],["another",{"_index":1432,"title":{},"body":{"additional-documentation/silent-refresh.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{}}}],["any).array(valuetohash",{"_index":174,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["anymore",{"_index":405,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["aot",{"_index":1802,"title":{},"body":{"additional-documentation/configure-custom-oauthstorage.html":{}}}],["api",{"_index":1212,"title":{"additional-documentation/original-config-api.html":{}},"body":{"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["api's",{"_index":1853,"title":{},"body":{"additional-documentation/authorization-servers/auth0.html":{}}}],["app",{"_index":945,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/manually-skipping-login-form.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["app's",{"_index":1849,"title":{},"body":{"additional-documentation/authorization-servers/auth0.html":{}}}],["app.component.html",{"_index":1737,"title":{},"body":{"additional-documentation/using-implicit-flow.html":{}}}],["app/home.html",{"_index":1741,"title":{},"body":{"additional-documentation/using-implicit-flow.html":{}}}],["appcomponent",{"_index":1176,"title":{},"body":{"index.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/original-config-api.html":{}}}],["applicable",{"_index":1610,"title":{},"body":{"additional-documentation/events.html":{}}}],["application",{"_index":309,"title":{},"body":{"classes/JwksValidationHandler.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/using-implicit-flow.html":{}}}],["applications",{"_index":318,"title":{},"body":{"classes/JwksValidationHandler.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/session-checks.html":{}}}],["appmodule",{"_index":1178,"title":{},"body":{"index.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["approach",{"_index":1438,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["approutermodule",{"_index":1622,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["arbitrary",{"_index":1469,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["argument",{"_index":1285,"title":{},"body":{"index.html":{}}}],["arising",{"_index":1363,"title":{},"body":{"license.html":{}}}],["arr",{"_index":1037,"title":{},"body":{"miscellaneous/functions.html":{}}}],["array",{"_index":615,"title":{},"body":{"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{},"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["arraybuffer",{"_index":138,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["aspnetcore",{"_index":1675,"title":{},"body":{"additional-documentation/server-side-rendering.html":{}}}],["asset",{"_index":1487,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["assets",{"_index":1490,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["associated",{"_index":1319,"title":{},"body":{"license.html":{}}}],["asstring",{"_index":91,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["assumes",{"_index":1156,"title":{},"body":{"index.html":{}}}],["async",{"_index":25,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"injectables/DefaultHashHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["at_hash",{"_index":60,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["athash",{"_index":97,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["attacks",{"_index":373,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["attempts",{"_index":1470,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["audience",{"_index":1854,"title":{},"body":{"additional-documentation/authorization-servers/auth0.html":{}}}],["auth",{"_index":389,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers.html":{}}}],["auth.config",{"_index":1733,"title":{},"body":{"additional-documentation/using-implicit-flow.html":{}}}],["auth0",{"_index":1049,"title":{"additional-documentation/authorization-servers/auth0.html":{}},"body":{"index.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["auth0's",{"_index":1855,"title":{},"body":{"additional-documentation/authorization-servers/auth0.html":{}}}],["auth_config",{"_index":1376,"title":{},"body":{"miscellaneous/variables.html":{}}}],["authcodeflowconfig",{"_index":1188,"title":{},"body":{"index.html":{}}}],["authconfig",{"_index":1187,"title":{},"body":{"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["authenticated",{"_index":1672,"title":{},"body":{"additional-documentation/server-side-rendering.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["authentication",{"_index":1301,"title":{},"body":{"index.html":{},"additional-documentation/silent-refresh.html":{}}}],["authorization",{"_index":1838,"title":{"additional-documentation/authorization-servers.html":{}},"body":{"additional-documentation/authorization-servers/auth0.html":{}}}],["authorization_endpoint",{"_index":476,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["authorizations",{"_index":1840,"title":{},"body":{"additional-documentation/authorization-servers.html":{}}}],["authors",{"_index":1353,"title":{},"body":{"license.html":{}}}],["authstorage",{"_index":1539,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["automate",{"_index":1251,"title":{},"body":{"index.html":{}}}],["automatic",{"_index":870,"title":{},"body":{"changelog.html":{}}}],["automatically",{"_index":1139,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/session-checks.html":{}}}],["available",{"_index":1299,"title":{},"body":{"index.html":{},"modules.html":{},"additional-documentation/events.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["avoid",{"_index":371,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["await",{"_index":88,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["awesome",{"_index":981,"title":{},"body":{"changelog.html":{}}}],["azure",{"_index":1079,"title":{"additional-documentation/authorization-servers/azure-ad-(active-directory).html":{}},"body":{"index.html":{},"additional-documentation/authorization-servers/azure-ad-(active-directory).html":{}}}],["b",{"_index":161,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{},"additional-documentation/using-password-flow.html":{}}}],["b486546",{"_index":817,"title":{},"body":{"changelog.html":{}}}],["b64decodeunicode",{"_index":1024,"title":{},"body":{"miscellaneous/functions.html":{}}}],["b64decodeunicode(str",{"_index":1032,"title":{},"body":{"miscellaneous/functions.html":{}}}],["back",{"_index":1562,"title":{},"body":{"additional-documentation/popup-based-login.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{}}}],["backend",{"_index":1045,"title":{},"body":{"index.html":{}}}],["backwards",{"_index":1829,"title":{},"body":{"additional-documentation/original-config-api.html":{}}}],["base",{"_index":1698,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/original-config-api.html":{}}}],["base64",{"_index":70,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"dependencies.html":{}}}],["base64urlencode",{"_index":69,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"miscellaneous/functions.html":{}}}],["base64urlencode(leftmosthalf",{"_index":98,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["base64urlencode(str",{"_index":1034,"title":{},"body":{"miscellaneous/functions.html":{}}}],["based",{"_index":913,"title":{"additional-documentation/popup-based-login.html":{}},"body":{"changelog.html":{},"additional-documentation/events.html":{},"additional-documentation/using-password-flow.html":{}}}],["bbff95b",{"_index":745,"title":{},"body":{"changelog.html":{}}}],["bearer",{"_index":267,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["beaugrand",{"_index":1716,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["beeing",{"_index":775,"title":{},"body":{"changelog.html":{}}}],["before",{"_index":730,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/events.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["beginning",{"_index":298,"title":{},"body":{"classes/JwksValidationHandler.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/session-checks.html":{}}}],["behavior",{"_index":1843,"title":{},"body":{"additional-documentation/authorization-servers.html":{}}}],["below",{"_index":1767,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["best",{"_index":380,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/using-implicit-flow.html":{}}}],["better",{"_index":1754,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["between",{"_index":1412,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/using-password-flow.html":{}}}],["big",{"_index":966,"title":{},"body":{"changelog.html":{}}}],["bind",{"_index":1659,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["blocked",{"_index":776,"title":{},"body":{"changelog.html":{}}}],["blockers",{"_index":777,"title":{},"body":{"changelog.html":{}}}],["blog",{"_index":1084,"title":{},"body":{"index.html":{},"additional-documentation/server-side-rendering.html":{},"additional-documentation/authorization-servers/azure-ad-(active-directory).html":{}}}],["bob/bob",{"_index":1162,"title":{},"body":{"index.html":{}}}],["boolean",{"_index":236,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["bootstrap",{"_index":1004,"title":{},"body":{"dependencies.html":{},"index.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["bootstrapping",{"_index":1227,"title":{},"body":{"index.html":{}}}],["breaking",{"_index":1276,"title":{},"body":{"index.html":{}}}],["brecht",{"_index":968,"title":{},"body":{"changelog.html":{}}}],["browse",{"_index":1367,"title":{},"body":{"modules.html":{}}}],["browser",{"_index":993,"title":{},"body":{"dependencies.html":{},"additional-documentation/using-password-flow.html":{}}}],["browsers",{"_index":1154,"title":{},"body":{"index.html":{}}}],["buffer",{"_index":140,"title":{},"body":{"injectables/DefaultHashHandler.html":{}}}],["bug",{"_index":695,"title":{},"body":{"changelog.html":{},"index.html":{}}}],["bugfixes",{"_index":1117,"title":{},"body":{"index.html":{}}}],["build",{"_index":860,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["bump",{"_index":794,"title":{},"body":{"changelog.html":{}}}],["bundle",{"_index":320,"title":{},"body":{"classes/JwksValidationHandler.html":{},"index.html":{},"miscellaneous/variables.html":{}}}],["bundling",{"_index":1067,"title":{},"body":{"index.html":{}}}],["button",{"_index":740,"title":{},"body":{"changelog.html":{}}}],["bytearray",{"_index":143,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["bytearray].map(value",{"_index":187,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["c",{"_index":1309,"title":{},"body":{"license.html":{}}}],["c2b2753",{"_index":704,"title":{},"body":{"changelog.html":{}}}],["c799ead",{"_index":903,"title":{},"body":{"changelog.html":{}}}],["c9a2c55",{"_index":718,"title":{},"body":{"changelog.html":{}}}],["ca435c0",{"_index":812,"title":{},"body":{"changelog.html":{}}}],["cae715e",{"_index":802,"title":{},"body":{"changelog.html":{}}}],["calchash",{"_index":20,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["calchash(valuetohash",{"_index":27,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["calculates",{"_index":32,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["call",{"_index":1294,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/using-implicit-flow.html":{}}}],["callback",{"_index":1547,"title":{"additional-documentation/callback-after-login.html":{}},"body":{"additional-documentation/callback-after-login.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["called",{"_index":387,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/callback-after-login.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["calling",{"_index":1250,"title":{},"body":{"index.html":{},"additional-documentation/preserving-state-(like-the-requested-url).html":{},"additional-documentation/session-checks.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["calls",{"_index":609,"title":{},"body":{"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{},"changelog.html":{}}}],["cand",{"_index":180,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["candhash",{"_index":172,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["care",{"_index":1396,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["carefully",{"_index":297,"title":{},"body":{"classes/JwksValidationHandler.html":{},"miscellaneous/variables.html":{}}}],["carlier",{"_index":969,"title":{},"body":{"changelog.html":{}}}],["carry",{"_index":1811,"title":{},"body":{"additional-documentation/manually-skipping-login-form.html":{}}}],["case",{"_index":1256,"title":{},"body":{"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/callback-after-login.html":{},"additional-documentation/events.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/using-password-flow.html":{}}}],["cases",{"_index":1458,"title":{},"body":{"additional-documentation/silent-refresh.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/using-password-flow.html":{}}}],["catch",{"_index":1263,"title":{},"body":{"index.html":{}}}],["catch(err",{"_index":1496,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["catcherror",{"_index":220,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["catcherror((_",{"_index":260,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["change",{"_index":1277,"title":{},"body":{"index.html":{}}}],["changelog",{"_index":690,"title":{"changelog.html":{}},"body":{"changelog.html":{}}}],["changes",{"_index":863,"title":{},"body":{"changelog.html":{},"additional-documentation/session-checks.html":{}}}],["charactes",{"_index":667,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["charge",{"_index":1314,"title":{},"body":{"license.html":{}}}],["check",{"_index":370,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/events.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["check_session_iframe",{"_index":481,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["checks",{"_index":886,"title":{"additional-documentation/session-checks.html":{}},"body":{"changelog.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/events.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["checkurl(url",{"_index":235,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["chore",{"_index":786,"title":{},"body":{"changelog.html":{}}}],["chore(deps",{"_index":793,"title":{},"body":{"changelog.html":{}}}],["chore(release",{"_index":803,"title":{},"body":{"changelog.html":{}}}],["circular",{"_index":1531,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["cites",{"_index":1770,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["cjs",{"_index":1725,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["claim",{"_index":1356,"title":{},"body":{"license.html":{}}}],["claim_types_supported",{"_index":499,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["claims",{"_index":448,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"index.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{}}}],["claims.given_name",{"_index":1746,"title":{},"body":{"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{}}}],["claims_parameter_supported",{"_index":501,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["claims_supported",{"_index":500,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["claimsathash",{"_index":99,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["class",{"_index":0,"title":{"classes/AbstractValidationHandler.html":{},"classes/DateTimeProvider.html":{},"classes/HashHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthLogger.html":{},"classes/OAuthModuleConfig.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerConfig.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/OAuthStorage.html":{},"classes/OAuthSuccessEvent.html":{},"classes/ReceivedTokens.html":{},"classes/ValidationHandler.html":{},"classes/WebHttpUrlEncodingCodec.html":{}},"body":{"classes/AbstractValidationHandler.html":{},"classes/DateTimeProvider.html":{},"injectables/DefaultHashHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/HashHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthModuleConfig.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerConfig.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/OAuthStorage.html":{},"classes/OAuthSuccessEvent.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"injectables/SystemDateTimeProvider.html":{},"interfaces/TokenResponse.html":{},"injectables/UrlHelperService.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/original-config-api.html":{}}}],["classes",{"_index":2,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/DateTimeProvider.html":{},"classes/HashHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthLogger.html":{},"classes/OAuthModuleConfig.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerConfig.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/OAuthStorage.html":{},"classes/OAuthSuccessEvent.html":{},"classes/ReceivedTokens.html":{},"classes/ValidationHandler.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"overview.html":{}}}],["clear",{"_index":401,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{}}}],["clears",{"_index":1231,"title":{},"body":{"index.html":{}}}],["cli",{"_index":1485,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["cli.json",{"_index":1489,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["click",{"_index":738,"title":{},"body":{"changelog.html":{}}}],["client",{"_index":433,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["client_id",{"_index":1857,"title":{},"body":{"additional-documentation/authorization-servers/auth0.html":{}}}],["clientid",{"_index":1194,"title":{},"body":{"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["clientids",{"_index":1164,"title":{},"body":{"index.html":{}}}],["closes",{"_index":699,"title":{},"body":{"changelog.html":{}}}],["code",{"_index":313,"title":{},"body":{"classes/JwksValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["code_challenge",{"_index":847,"title":{},"body":{"changelog.html":{}}}],["code_error",{"_index":536,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["codeflow",{"_index":768,"title":{},"body":{"changelog.html":{}}}],["codes",{"_index":1515,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["come",{"_index":1440,"title":{},"body":{"additional-documentation/silent-refresh.html":{},"additional-documentation/authorization-servers.html":{}}}],["commands",{"_index":1131,"title":{},"body":{"index.html":{}}}],["commit",{"_index":868,"title":{},"body":{"changelog.html":{}}}],["commonjs",{"_index":1066,"title":{},"body":{"index.html":{}}}],["commonmodule",{"_index":583,"title":{},"body":{"modules/OAuthModule.html":{}}}],["communication",{"_index":1500,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["community",{"_index":1055,"title":{},"body":{"index.html":{},"additional-documentation/popup-based-login.html":{}}}],["compat",{"_index":1012,"title":{},"body":{"dependencies.html":{}}}],["compatibility",{"_index":1830,"title":{},"body":{"additional-documentation/original-config-api.html":{}}}],["compatible",{"_index":417,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["compensates",{"_index":1427,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["complex",{"_index":1480,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["compliant",{"_index":1839,"title":{},"body":{"additional-documentation/authorization-servers.html":{}}}],["compodoc/compodoc",{"_index":1132,"title":{},"body":{"index.html":{}}}],["component",{"_index":1677,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["components",{"_index":1296,"title":{},"body":{"index.html":{}}}],["conditions",{"_index":1337,"title":{},"body":{"license.html":{}}}],["config",{"_index":578,"title":{"additional-documentation/original-config-api.html":{}},"body":{"modules/OAuthModule.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-systemjs.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["configuration",{"_index":1145,"title":{},"body":{"index.html":{},"additional-documentation/events.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["configure",{"_index":1185,"title":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}},"body":{"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["configured",{"_index":779,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/using-implicit-flow.html":{}}}],["configuring",{"_index":1402,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/using-implicit-flow.html":{}}}],["connect",{"_index":458,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"index.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/authorization-servers.html":{}}}],["connection",{"_index":1364,"title":{},"body":{"license.html":{}}}],["considered",{"_index":1289,"title":{},"body":{"index.html":{}}}],["consistent",{"_index":1711,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/original-config-api.html":{}}}],["console",{"_index":418,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/events.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["console.debug(\"logged",{"_index":1552,"title":{},"body":{"additional-documentation/callback-after-login.html":{}}}],["console.debug('given_name",{"_index":1792,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["console.debug('hash",{"_index":178,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["console.debug('ok",{"_index":1798,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["console.debug('refresh",{"_index":1494,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["console.debug('state",{"_index":1388,"title":{},"body":{"additional-documentation/preserving-state-(like-the-requested-url).html":{}}}],["console.debug('your",{"_index":1667,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["console.debug(context",{"_index":1553,"title":{},"body":{"additional-documentation/callback-after-login.html":{}}}],["console.error('actual",{"_index":102,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["console.error('exptected",{"_index":101,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["console.error('refresh",{"_index":1497,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["console.error(err",{"_index":323,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["console.error(event",{"_index":1593,"title":{},"body":{"additional-documentation/events.html":{}}}],["console.log(e));or",{"_index":1585,"title":{},"body":{"additional-documentation/events.html":{}}}],["console.warn(event",{"_index":1594,"title":{},"body":{"additional-documentation/events.html":{}}}],["const",{"_index":147,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/HashHandler.html":{},"classes/JwksValidationHandler.html":{},"injectables/UrlHelperService.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["constructor",{"_index":200,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"classes/JwksValidationHandler.html":{},"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"changelog.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["constructor(oauthservice",{"_index":201,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["constructor(private",{"_index":1678,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["constructor(readonly",{"_index":552,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{}}}],["constructor(type",{"_index":524,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{}}}],["contain",{"_index":1114,"title":{},"body":{"index.html":{}}}],["contains",{"_index":1628,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["context",{"_index":1549,"title":{},"body":{"additional-documentation/callback-after-login.html":{}}}],["contract",{"_index":1361,"title":{},"body":{"license.html":{}}}],["contribute",{"_index":1125,"title":{},"body":{"index.html":{}}}],["contributer",{"_index":815,"title":{},"body":{"changelog.html":{}}}],["contributers",{"_index":967,"title":{},"body":{"changelog.html":{}}}],["contribution",{"_index":1555,"title":{},"body":{"additional-documentation/popup-based-login.html":{}}}],["contributions",{"_index":1119,"title":{},"body":{"index.html":{}}}],["contributors",{"_index":1307,"title":{},"body":{"index.html":{}}}],["control",{"_index":1807,"title":{},"body":{"additional-documentation/manually-skipping-login-form.html":{}}}],["controls",{"_index":406,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["convenience",{"_index":1220,"title":{},"body":{"index.html":{}}}],["cookie",{"_index":1435,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["cookies",{"_index":884,"title":{},"body":{"changelog.html":{}}}],["copied",{"_index":1484,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["copies",{"_index":1332,"title":{},"body":{"license.html":{}}}],["copy",{"_index":1317,"title":{},"body":{"license.html":{}}}],["copying",{"_index":857,"title":{},"body":{"changelog.html":{}}}],["copyright",{"_index":1308,"title":{},"body":{"license.html":{}}}],["core",{"_index":459,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"index.html":{}}}],["correctly",{"_index":706,"title":{},"body":{"changelog.html":{}}}],["corrupted",{"_index":729,"title":{},"body":{"changelog.html":{}}}],["cors",{"_index":1863,"title":{},"body":{"additional-documentation/authorization-servers/auth0.html":{}}}],["cought",{"_index":1526,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["counterparts",{"_index":1287,"title":{},"body":{"index.html":{}}}],["create",{"_index":437,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/popup-based-login.html":{}}}],["created",{"_index":1090,"title":{},"body":{"index.html":{}}}],["createdefaultlogger",{"_index":592,"title":{},"body":{"modules/OAuthModule.html":{},"miscellaneous/functions.html":{}}}],["createdefaultstorage",{"_index":593,"title":{},"body":{"modules/OAuthModule.html":{},"miscellaneous/functions.html":{}}}],["creates",{"_index":1530,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["credentials",{"_index":1787,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["credits",{"_index":1041,"title":{},"body":{"index.html":{}}}],["critical",{"_index":1116,"title":{},"body":{"index.html":{}}}],["cross",{"_index":1482,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["crypto",{"_index":151,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["current",{"_index":1181,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["cust",{"_index":823,"title":{},"body":{"changelog.html":{}}}],["custom",{"_index":338,"title":{"additional-documentation/custom-query-parameters.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"changelog.html":{},"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/custom-query-parameters.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["customhashfragment",{"_index":330,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"injectables/UrlHelperService.html":{},"interfaces/UserInfo.html":{},"changelog.html":{}}}],["customize",{"_index":1799,"title":{},"body":{"additional-documentation/configure-custom-oauthstorage.html":{}}}],["customparameters",{"_index":734,"title":{},"body":{"changelog.html":{}}}],["customqueryparams",{"_index":1568,"title":{},"body":{"additional-documentation/custom-query-parameters.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["customredirecturi",{"_index":331,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["customurlvalidation",{"_index":616,"title":{},"body":{"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{}}}],["cycle",{"_index":1110,"title":{},"body":{"index.html":{}}}],["d",{"_index":160,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{},"changelog.html":{}}}],["da16494",{"_index":754,"title":{},"body":{"changelog.html":{}}}],["damages",{"_index":1357,"title":{},"body":{"license.html":{}}}],["daniel",{"_index":970,"title":{},"body":{"changelog.html":{}}}],["data",{"_index":168,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"injectables/UrlHelperService.html":{},"interfaces/UserInfo.html":{},"additional-documentation/using-password-flow.html":{}}}],["date",{"_index":123,"title":{},"body":{"classes/DateTimeProvider.html":{},"modules/OAuthModule.html":{},"injectables/SystemDateTimeProvider.html":{}}}],["date.now",{"_index":130,"title":{},"body":{"classes/DateTimeProvider.html":{},"injectables/SystemDateTimeProvider.html":{}}}],["datetimeprovider",{"_index":117,"title":{"classes/DateTimeProvider.html":{}},"body":{"classes/DateTimeProvider.html":{},"modules/OAuthModule.html":{},"injectables/SystemDateTimeProvider.html":{},"changelog.html":{}}}],["datetimeprovider:10",{"_index":637,"title":{},"body":{"injectables/SystemDateTimeProvider.html":{}}}],["datetimeprovider:14",{"_index":636,"title":{},"body":{"injectables/SystemDateTimeProvider.html":{}}}],["deal",{"_index":1321,"title":{},"body":{"license.html":{}}}],["dealings",{"_index":1365,"title":{},"body":{"license.html":{}}}],["debug",{"_index":559,"title":{},"body":{"classes/OAuthLogger.html":{}}}],["debug(message",{"_index":424,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["debugging",{"_index":1581,"title":{},"body":{"additional-documentation/events.html":{}}}],["decide",{"_index":1641,"title":{},"body":{"additional-documentation/adapt-id_token-validation.html":{}}}],["declarations",{"_index":596,"title":{},"body":{"modules/OAuthModule.html":{},"index.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["decodekey",{"_index":670,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["decodekey(k",{"_index":674,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["decodeuricomponent(hash",{"_index":647,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["decodeuricomponent(k",{"_index":686,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["decodeuricomponent(v",{"_index":687,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["decodeutf8",{"_index":1028,"title":{},"body":{"miscellaneous/functions.html":{}}}],["decodeutf8(s",{"_index":155,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{},"miscellaneous/functions.html":{}}}],["decodevalue",{"_index":671,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["decodevalue(v",{"_index":677,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["default",{"_index":365,"title":{},"body":{"classes/LoginOptions.html":{},"modules/OAuthModule.html":{},"changelog.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["defaultextension",{"_index":1726,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["defaulthashhandler",{"_index":131,"title":{"injectables/DefaultHashHandler.html":{}},"body":{"injectables/DefaultHashHandler.html":{},"modules/OAuthModule.html":{}}}],["defaultoauthinterceptor",{"_index":195,"title":{"interceptors/DefaultOAuthInterceptor.html":{}},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"modules/OAuthModule.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["defaults",{"_index":1443,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["define",{"_index":1486,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["defined",{"_index":30,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/DateTimeProvider.html":{},"injectables/DefaultHashHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/HashHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthModuleConfig.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerConfig.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/OAuthStorage.html":{},"classes/OAuthSuccessEvent.html":{},"classes/ReceivedTokens.html":{},"injectables/SystemDateTimeProvider.html":{},"injectables/UrlHelperService.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["defines",{"_index":383,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["deleted",{"_index":1650,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["demand",{"_index":1118,"title":{},"body":{"index.html":{},"additional-documentation/using-password-flow.html":{}}}],["demands",{"_index":1196,"title":{},"body":{"index.html":{},"additional-documentation/using-password-flow.html":{}}}],["demo",{"_index":881,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["demonstration",{"_index":1550,"title":{},"body":{"additional-documentation/callback-after-login.html":{}}}],["dep",{"_index":814,"title":{},"body":{"changelog.html":{}}}],["dependancy",{"_index":895,"title":{},"body":{"changelog.html":{}}}],["dependencies",{"_index":986,"title":{"dependencies.html":{}},"body":{"dependencies.html":{},"overview.html":{}}}],["dependency",{"_index":311,"title":{},"body":{"classes/JwksValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["depending",{"_index":1222,"title":{},"body":{"index.html":{}}}],["deprecated",{"_index":392,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{}}}],["deps",{"_index":1720,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["described",{"_index":1422,"title":{},"body":{"additional-documentation/silent-refresh.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/using-password-flow.html":{}}}],["describes",{"_index":1827,"title":{},"body":{"additional-documentation/original-config-api.html":{}}}],["description",{"_index":9,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/HashHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"classes/WebHttpUrlEncodingCodec.html":{}}}],["design",{"_index":1795,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["details",{"_index":890,"title":{},"body":{"changelog.html":{},"additional-documentation/events.html":{},"additional-documentation/original-config-api.html":{}}}],["detects",{"_index":388,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["different",{"_index":1589,"title":{},"body":{"additional-documentation/events.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["directed",{"_index":1823,"title":{},"body":{"additional-documentation/manually-skipping-login-form.html":{}}}],["directly",{"_index":1246,"title":{},"body":{"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/using-password-flow.html":{}}}],["directory",{"_index":1081,"title":{"additional-documentation/authorization-servers/azure-ad-(active-directory).html":{}},"body":{"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/authorization-servers/azure-ad-(active-directory).html":{}}}],["disable",{"_index":368,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["disableathashcheck",{"_index":825,"title":{},"body":{"changelog.html":{}}}],["disabled",{"_index":1601,"title":{},"body":{"additional-documentation/events.html":{}}}],["disablenoncecheck",{"_index":332,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["disableoauth2statecheck",{"_index":333,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["discovery",{"_index":472,"title":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"index.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["discovery_document_load_error",{"_index":531,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["discovery_document_loaded",{"_index":528,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{},"additional-documentation/events.html":{}}}],["discovery_document_validation_error",{"_index":532,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["display",{"_index":1241,"title":{},"body":{"index.html":{}}}],["display_values_supported",{"_index":498,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["displayed",{"_index":404,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["distribute",{"_index":1328,"title":{},"body":{"license.html":{}}}],["docs",{"_index":889,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/session-checks.html":{}}}],["docs(readme",{"_index":850,"title":{},"body":{"changelog.html":{}}}],["document",{"_index":473,"title":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["documentation",{"_index":1052,"title":{},"body":{"index.html":{},"license.html":{},"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["documentation/refreshing",{"_index":1261,"title":{},"body":{"index.html":{}}}],["documentation/using",{"_index":1274,"title":{},"body":{"index.html":{}}}],["documented",{"_index":865,"title":{},"body":{"changelog.html":{}}}],["doesn't",{"_index":1692,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{}}}],["doing",{"_index":385,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{}}}],["domain",{"_index":1483,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["domains",{"_index":1704,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["don't",{"_index":1240,"title":{},"body":{"index.html":{},"additional-documentation/callback-after-login.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{}}}],["dosn't",{"_index":1833,"title":{},"body":{"additional-documentation/original-config-api.html":{}}}],["draft",{"_index":1182,"title":{},"body":{"index.html":{}}}],["dummy",{"_index":275,"title":{},"body":{"classes/JwksValidationHandler.html":{},"additional-documentation/using-password-flow.html":{}}}],["dummyclientsecret",{"_index":1205,"title":{},"body":{"index.html":{},"additional-documentation/using-password-flow.html":{}}}],["during",{"_index":1476,"title":{},"body":{"additional-documentation/silent-refresh.html":{},"additional-documentation/events.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["dynamic",{"_index":994,"title":{},"body":{"dependencies.html":{}}}],["e",{"_index":182,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{},"changelog.html":{},"additional-documentation/using-password-flow.html":{}}}],["e.g",{"_index":1481,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["e.type",{"_index":257,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["e2599e0",{"_index":908,"title":{},"body":{"changelog.html":{}}}],["e2e",{"_index":711,"title":{},"body":{"changelog.html":{}}}],["e89aa6d",{"_index":861,"title":{},"body":{"changelog.html":{}}}],["each",{"_index":1113,"title":{},"body":{"index.html":{}}}],["ease",{"_index":1144,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{}}}],["easier",{"_index":1425,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["easiest",{"_index":1533,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["edge",{"_index":1461,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["elements",{"_index":999,"title":{},"body":{"dependencies.html":{}}}],["email",{"_index":1216,"title":{},"body":{"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["enable",{"_index":1687,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{}}}],["encode",{"_index":1295,"title":{},"body":{"index.html":{}}}],["encodekey",{"_index":672,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["encodekey(k",{"_index":680,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["encoder",{"_index":164,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"dependencies.html":{}}}],["encoder.encode(valuetohash",{"_index":169,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["encodeuricomponent",{"_index":1284,"title":{},"body":{"index.html":{}}}],["encodeuricomponent(k",{"_index":684,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["encodeuricomponent(v",{"_index":685,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["encodeutf8",{"_index":1030,"title":{},"body":{"miscellaneous/functions.html":{}}}],["encodeutf8(arr",{"_index":1036,"title":{},"body":{"miscellaneous/functions.html":{}}}],["encodeutf8(fsha256(decodeutf8(valuetohash",{"_index":173,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["encodevalue",{"_index":673,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["encodevalue(v",{"_index":682,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["encounter",{"_index":1596,"title":{},"body":{"additional-documentation/events.html":{}}}],["end",{"_index":1088,"title":{},"body":{"index.html":{},"additional-documentation/authorization-servers/auth0.html":{},"additional-documentation/authorization-servers/azure-ad-(active-directory).html":{}}}],["end_session_endpoint",{"_index":482,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["endpoint",{"_index":456,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"index.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["endpoints",{"_index":1696,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/original-config-api.html":{}}}],["endpont",{"_index":1780,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["ends",{"_index":1648,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["enforce",{"_index":1201,"title":{},"body":{"index.html":{}}}],["enhancements",{"_index":1123,"title":{},"body":{"index.html":{}}}],["ensure",{"_index":1249,"title":{},"body":{"index.html":{}}}],["ensures",{"_index":1695,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["enter",{"_index":1752,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["enters",{"_index":1138,"title":{},"body":{"index.html":{}}}],["enum",{"_index":1613,"title":{},"body":{"additional-documentation/events.html":{}}}],["environment",{"_index":1060,"title":{},"body":{"index.html":{}}}],["environments",{"_index":377,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["erazerbrecht",{"_index":964,"title":{},"body":{"changelog.html":{}}}],["err",{"_index":294,"title":{},"body":{"classes/JwksValidationHandler.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"miscellaneous/variables.html":{}}}],["err));when",{"_index":1498,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["error",{"_index":229,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/events.html":{}}}],["error('algorithm",{"_index":110,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["error(message",{"_index":429,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["errorhandler",{"_index":203,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["errors",{"_index":1512,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/original-config-api.html":{}}}],["escapedkey",{"_index":657,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["escapedvalue",{"_index":658,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["esm",{"_index":818,"title":{},"body":{"changelog.html":{}}}],["etc",{"_index":1174,"title":{},"body":{"index.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["event",{"_index":763,"title":{},"body":{"changelog.html":{},"license.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/events.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["events",{"_index":394,"title":{"additional-documentation/events.html":{}},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/events.html":{},"additional-documentation/session-checks.html":{}}}],["events.ts",{"_index":1614,"title":{},"body":{"additional-documentation/events.html":{}}}],["eventtype",{"_index":525,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["example",{"_index":1086,"title":{},"body":{"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/manually-skipping-login-form.html":{},"additional-documentation/authorization-servers/auth0.html":{},"additional-documentation/authorization-servers/azure-ad-(active-directory).html":{}}}],["examples",{"_index":1155,"title":{},"body":{"index.html":{},"additional-documentation/authorization-servers/using-identity-server.html":{},"additional-documentation/authorization-servers/using-keycloak.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["execute",{"_index":1226,"title":{},"body":{"index.html":{}}}],["existing",{"_index":1237,"title":{},"body":{"index.html":{}}}],["expected",{"_index":1602,"title":{},"body":{"additional-documentation/events.html":{}}}],["expects",{"_index":1856,"title":{},"body":{"additional-documentation/authorization-servers/auth0.html":{}}}],["experience",{"_index":1841,"title":{},"body":{"additional-documentation/authorization-servers.html":{}}}],["expired",{"_index":1796,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["expires",{"_index":1142,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{}}}],["expires_in",{"_index":463,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["explicit",{"_index":900,"title":{},"body":{"changelog.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["explicitly",{"_index":1640,"title":{},"body":{"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/using-password-flow.html":{}}}],["export",{"_index":72,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/DateTimeProvider.html":{},"injectables/DefaultHashHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/HashHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthModuleConfig.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerConfig.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/OAuthStorage.html":{},"classes/OAuthSuccessEvent.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"injectables/SystemDateTimeProvider.html":{},"interfaces/TokenResponse.html":{},"injectables/UrlHelperService.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["exports",{"_index":597,"title":{},"body":{"modules/OAuthModule.html":{}}}],["express",{"_index":1344,"title":{},"body":{"license.html":{}}}],["extend",{"_index":1804,"title":{},"body":{"additional-documentation/configure-custom-oauthstorage.html":{}}}],["extends",{"_index":129,"title":{},"body":{"classes/DateTimeProvider.html":{},"classes/JwksValidationHandler.html":{},"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"injectables/SystemDateTimeProvider.html":{}}}],["extensions",{"_index":799,"title":{},"body":{"changelog.html":{}}}],["extensive",{"_index":1587,"title":{},"body":{"additional-documentation/events.html":{}}}],["extraction",{"_index":960,"title":{},"body":{"changelog.html":{}}}],["f42f943",{"_index":809,"title":{},"body":{"changelog.html":{}}}],["f5bd96c",{"_index":713,"title":{},"body":{"changelog.html":{}}}],["fact",{"_index":1428,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["factor",{"_index":1410,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{}}}],["factories",{"_index":594,"title":{},"body":{"modules/OAuthModule.html":{}}}],["factory",{"_index":144,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{},"miscellaneous/variables.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["fail",{"_index":1708,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["fails",{"_index":1693,"title":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}},"body":{}}],["fall",{"_index":1561,"title":{},"body":{"additional-documentation/popup-based-login.html":{}}}],["fallback",{"_index":1479,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["false",{"_index":366,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["far",{"_index":1424,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["fast",{"_index":149,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{},"dependencies.html":{}}}],["fb3afe4",{"_index":830,"title":{},"body":{"changelog.html":{}}}],["feat(oauth",{"_index":821,"title":{},"body":{"changelog.html":{}}}],["features",{"_index":746,"title":{},"body":{"changelog.html":{},"index.html":{}}}],["feel",{"_index":1120,"title":{},"body":{"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["fetch",{"_index":1228,"title":{},"body":{"index.html":{},"additional-documentation/using-password-flow.html":{}}}],["fetching",{"_index":1784,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["ff7d1d9",{"_index":751,"title":{},"body":{"changelog.html":{}}}],["fhash",{"_index":170,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["field",{"_index":50,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["file",{"_index":5,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/DateTimeProvider.html":{},"injectables/DefaultHashHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/HashHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthModuleConfig.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerConfig.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/OAuthStorage.html":{},"classes/OAuthSuccessEvent.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"injectables/SystemDateTimeProvider.html":{},"interfaces/TokenResponse.html":{},"injectables/UrlHelperService.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"changelog.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/events.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["files",{"_index":1320,"title":{},"body":{"license.html":{}}}],["filter",{"_index":221,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["filter((e",{"_index":256,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["finally",{"_index":1478,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["find",{"_index":1381,"title":{},"body":{"additional-documentation/getting-started.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["fine",{"_index":1266,"title":{},"body":{"index.html":{}}}],["fired",{"_index":1404,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{}}}],["first",{"_index":1208,"title":{},"body":{"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/manually-skipping-login-form.html":{},"additional-documentation/original-config-api.html":{}}}],["fitness",{"_index":1349,"title":{},"body":{"license.html":{}}}],["fix",{"_index":714,"title":{},"body":{"changelog.html":{}}}],["fix(lib",{"_index":856,"title":{},"body":{"changelog.html":{}}}],["fixed",{"_index":909,"title":{},"body":{"changelog.html":{}}}],["fixes",{"_index":696,"title":{},"body":{"changelog.html":{},"index.html":{}}}],["flag",{"_index":374,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["flight",{"_index":1735,"title":{},"body":{"additional-documentation/using-implicit-flow.html":{}}}],["flow",{"_index":305,"title":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{}},"body":{"classes/JwksValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/custom-query-parameters.html":{},"additional-documentation/events.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["flow.html",{"_index":1275,"title":{},"body":{"index.html":{}}}],["flow.md",{"_index":838,"title":{},"body":{"changelog.html":{}}}],["flows",{"_index":348,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"index.html":{},"additional-documentation/using-password-flow.html":{}}}],["focusing",{"_index":743,"title":{},"body":{"changelog.html":{}}}],["folder",{"_index":1127,"title":{},"body":{"index.html":{}}}],["followed",{"_index":353,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["following",{"_index":358,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"index.html":{},"license.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/manually-skipping-login-form.html":{},"additional-documentation/original-config-api.html":{}}}],["follows",{"_index":1801,"title":{},"body":{"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/authorization-servers.html":{}}}],["for(var",{"_index":1465,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["form",{"_index":1239,"title":{"additional-documentation/manually-skipping-login-form.html":{}},"body":{"index.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["format",{"_index":1724,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["former",{"_index":1633,"title":{},"body":{"additional-documentation/adapt-id_token-validation.html":{}}}],["forroot",{"_index":574,"title":{},"body":{"modules/OAuthModule.html":{}}}],["forroot(config",{"_index":575,"title":{},"body":{"modules/OAuthModule.html":{}}}],["forward",{"_index":1471,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["forwards",{"_index":1233,"title":{},"body":{"index.html":{}}}],["found",{"_index":1540,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/server-side-rendering.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["foundation",{"_index":1184,"title":{},"body":{"index.html":{}}}],["four",{"_index":1209,"title":{},"body":{"index.html":{}}}],["fragment",{"_index":339,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["free",{"_index":1121,"title":{},"body":{"index.html":{},"license.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["fsha256",{"_index":148,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["fsha256(valuetohash",{"_index":171,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["full",{"_index":1612,"title":{},"body":{"additional-documentation/events.html":{}}}],["function",{"_index":154,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{},"classes/LoginOptions.html":{},"classes/OAuthResourceServerConfig.html":{},"interfaces/ValidationParams.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["functions",{"_index":1023,"title":{"miscellaneous/functions.html":{}},"body":{"miscellaneous/functions.html":{}}}],["furnished",{"_index":1335,"title":{},"body":{"license.html":{}}}],["further",{"_index":1148,"title":{},"body":{"index.html":{}}}],["g",{"_index":919,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["geheim",{"_index":1773,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["geheim').then",{"_index":1794,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["geheim').then((resp",{"_index":1789,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["general",{"_index":1198,"title":{},"body":{"index.html":{}}}],["generate",{"_index":1130,"title":{},"body":{"index.html":{}}}],["gethashfragmentparams",{"_index":640,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["gethashfragmentparams(customhashfragment",{"_index":642,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["getitem",{"_index":505,"title":{},"body":{"injectables/MemoryStorage.html":{},"classes/OAuthStorage.html":{}}}],["getitem(key",{"_index":440,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["gets",{"_index":846,"title":{},"body":{"changelog.html":{}}}],["getting",{"_index":688,"title":{"changelog.html":{},"index.html":{},"license.html":{},"additional-documentation/getting-started.html":{}},"body":{"additional-documentation/getting-started.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["github.com/manfredsteyer/angular",{"_index":700,"title":{},"body":{"changelog.html":{}}}],["give",{"_index":1501,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["go",{"_index":1462,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["gone",{"_index":1608,"title":{},"body":{"additional-documentation/events.html":{}}}],["google",{"_index":1701,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["grant",{"_index":755,"title":{},"body":{"changelog.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["grant_types_supported",{"_index":489,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["granted",{"_index":1313,"title":{},"body":{"license.html":{}}}],["graph",{"_index":1366,"title":{},"body":{"modules.html":{}}}],["great",{"_index":1554,"title":{},"body":{"additional-documentation/popup-based-login.html":{},"additional-documentation/server-side-rendering.html":{}}}],["guard",{"_index":905,"title":{},"body":{"changelog.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["guards",{"_index":1058,"title":{},"body":{"index.html":{}}}],["guide",{"_index":1382,"title":{},"body":{"additional-documentation/getting-started.html":{}}}],["guidelines",{"_index":869,"title":{},"body":{"changelog.html":{},"index.html":{}}}],["half",{"_index":1416,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{}}}],["hallo",{"_index":1748,"title":{},"body":{"additional-documentation/using-implicit-flow.html":{}}}],["handle",{"_index":707,"title":{},"body":{"changelog.html":{}}}],["handle(req",{"_index":250,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["handleerror",{"_index":618,"title":{},"body":{"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{}}}],["handleerror(err",{"_index":619,"title":{},"body":{"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["handler",{"_index":230,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"classes/JwksValidationHandler.html":{},"classes/NullValidationHandler.html":{},"modules/OAuthModule.html":{},"changelog.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["handler.ts",{"_index":8,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"miscellaneous/functions.html":{},"miscellaneous/variables.html":{}}}],["handler.ts:11",{"_index":517,"title":{},"body":{"classes/NullValidationHandler.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{}}}],["handler.ts:12",{"_index":271,"title":{},"body":{"classes/HashHandler.html":{}}}],["handler.ts:20",{"_index":663,"title":{},"body":{"classes/ValidationHandler.html":{}}}],["handler.ts:25",{"_index":288,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["handler.ts:27",{"_index":662,"title":{},"body":{"classes/ValidationHandler.html":{}}}],["handler.ts:33",{"_index":136,"title":{},"body":{"injectables/DefaultHashHandler.html":{}}}],["handler.ts:41",{"_index":66,"title":{},"body":{"classes/AbstractValidationHandler.html":{}}}],["handler.ts:46",{"_index":58,"title":{},"body":{"classes/AbstractValidationHandler.html":{}}}],["handler.ts:5",{"_index":626,"title":{},"body":{"classes/OAuthResourceServerErrorHandler.html":{}}}],["handler.ts:52",{"_index":142,"title":{},"body":{"injectables/DefaultHashHandler.html":{}}}],["handler.ts:60",{"_index":139,"title":{},"body":{"injectables/DefaultHashHandler.html":{}}}],["handler.ts:71",{"_index":47,"title":{},"body":{"classes/AbstractValidationHandler.html":{}}}],["handler.ts:8",{"_index":518,"title":{},"body":{"classes/NullValidationHandler.html":{}}}],["handler.ts:88",{"_index":31,"title":{},"body":{"classes/AbstractValidationHandler.html":{}}}],["handlers",{"_index":80,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["handling",{"_index":1510,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["hash",{"_index":33,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"injectables/UrlHelperService.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"changelog.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/custom-query-parameters.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["hash.indexof",{"_index":648,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["hash.substr(1",{"_index":652,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["hash.substr(questionmarkposition",{"_index":651,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["hashalg",{"_index":85,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["hasharray",{"_index":166,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["hashhandler",{"_index":153,"title":{"classes/HashHandler.html":{}},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{},"modules/OAuthModule.html":{}}}],["hashing",{"_index":1042,"title":{},"body":{"index.html":{}}}],["hashlocationstrategy",{"_index":1065,"title":{},"body":{"index.html":{}}}],["hashstrategy",{"_index":1269,"title":{"additional-documentation/routing-with-the-hashstrategy.html":{}},"body":{"index.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["hashstring",{"_index":175,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["hasreceivedtokens",{"_index":1810,"title":{},"body":{"additional-documentation/manually-skipping-login-form.html":{}}}],["header",{"_index":55,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["headers",{"_index":268,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["helper",{"_index":71,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["helper.service",{"_index":587,"title":{},"body":{"modules/OAuthModule.html":{}}}],["helper.service.ts",{"_index":639,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["helper.service.ts:25",{"_index":645,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["helper.service.ts:5",{"_index":643,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["helper.ts",{"_index":1026,"title":{},"body":{"miscellaneous/functions.html":{}}}],["hence",{"_index":1134,"title":{},"body":{"index.html":{},"additional-documentation/authorization-servers.html":{}}}],["here",{"_index":1078,"title":{},"body":{"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/server-side-rendering.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/authorization-servers/using-identity-server.html":{},"additional-documentation/authorization-servers/using-keycloak.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["here's",{"_index":1595,"title":{},"body":{"additional-documentation/events.html":{}}}],["hereby",{"_index":1312,"title":{},"body":{"license.html":{}}}],["hexcode",{"_index":188,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["hexcode.padstart(2",{"_index":191,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["hexcodes",{"_index":186,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["hexcodes.join",{"_index":192,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["hexstring(buffer",{"_index":185,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["hidden",{"_index":1430,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["holders",{"_index":1354,"title":{},"body":{"license.html":{}}}],["home",{"_index":1551,"title":{},"body":{"additional-documentation/callback-after-login.html":{}}}],["homecomponent",{"_index":1177,"title":{},"body":{"index.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["hook",{"_index":411,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"index.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/session-checks.html":{}}}],["hooked",{"_index":81,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["html",{"_index":1474,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["http",{"_index":1513,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["http://localhost:4200",{"_index":1159,"title":{},"body":{"index.html":{}}}],["http://localhost:8080/#/home",{"_index":1629,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["http://openid.net/specs/openid",{"_index":457,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["http://www.angular.at/api",{"_index":1257,"title":{},"body":{"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["http_interceptors",{"_index":585,"title":{},"body":{"modules/OAuthModule.html":{}}}],["httpclientmodule",{"_index":1173,"title":{},"body":{"index.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["httperrorresponse",{"_index":1536,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["httpevent",{"_index":215,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["httphandler",{"_index":211,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["httpinterceptor",{"_index":216,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["httpinterceptors",{"_index":1507,"title":{"additional-documentation/working-with-httpinterceptors.html":{}},"body":{}}],["httpmodule",{"_index":923,"title":{},"body":{"changelog.html":{}}}],["httpparametercodec",{"_index":669,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["httprequest",{"_index":209,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["httpresponse",{"_index":620,"title":{},"body":{"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["https://dev",{"_index":1847,"title":{},"body":{"additional-documentation/authorization-servers/auth0.html":{}}}],["https://github.com/jeroenheijmans/sample",{"_index":1057,"title":{},"body":{"index.html":{}}}],["https://github.com/lankaapura/angular",{"_index":1674,"title":{},"body":{"additional-documentation/server-side-rendering.html":{}}}],["https://github.com/manfredsteyer/angular",{"_index":757,"title":{},"body":{"changelog.html":{},"index.html":{}}}],["https://idsvr4.azurewebsites.net",{"_index":1189,"title":{},"body":{"index.html":{}}}],["https://manfredsteyer.github.io/angular",{"_index":1053,"title":{},"body":{"index.html":{}}}],["https://medium.com/lankapura/angular",{"_index":1671,"title":{},"body":{"additional-documentation/server-side-rendering.html":{}}}],["https://steyer",{"_index":1441,"title":{},"body":{"additional-documentation/silent-refresh.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["i.e",{"_index":1700,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["i=0",{"_index":1466,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["id",{"_index":449,"title":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/manually-skipping-login-form.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["id_token",{"_index":51,"title":{"additional-documentation/adapt-id_token-validation.html":{}},"body":{"classes/AbstractValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"changelog.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/callback-after-login.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/using-password-flow.html":{}}}],["id_token's",{"_index":53,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["id_token_encryption_alg_values_supported",{"_index":495,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["id_token_encryption_enc_values_supported",{"_index":496,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["id_token_signing_alg_values_supported",{"_index":494,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["idclaims",{"_index":450,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["ideas",{"_index":1122,"title":{},"body":{"index.html":{}}}],["identity",{"_index":942,"title":{"additional-documentation/authorization-servers/using-identity-server.html":{}},"body":{"changelog.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/manually-skipping-login-form.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers/using-identity-server.html":{}}}],["identityserver",{"_index":1071,"title":{},"body":{"index.html":{}}}],["idsvr",{"_index":851,"title":{},"body":{"changelog.html":{},"additional-documentation/server-side-rendering.html":{}}}],["idtoken",{"_index":74,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["idtokenclaims",{"_index":77,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["idtokenclaimsjson",{"_index":452,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["idtokenexpiresat",{"_index":454,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["idtokenheader",{"_index":76,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["idtokenheaderjson",{"_index":453,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["ie",{"_index":910,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/popup-based-login.html":{}}}],["iframe",{"_index":1431,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["iframes",{"_index":346,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["ignores",{"_index":1862,"title":{},"body":{"additional-documentation/authorization-servers/auth0.html":{}}}],["implcit",{"_index":1765,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["implemantion",{"_index":1524,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["implement",{"_index":1522,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/using-implicit-flow.html":{}}}],["implementation",{"_index":11,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{}}}],["implementations",{"_index":438,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["implemented",{"_index":1644,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["implementing",{"_index":302,"title":{},"body":{"classes/JwksValidationHandler.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/using-implicit-flow.html":{}}}],["implements",{"_index":14,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthLogger.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["implicit",{"_index":304,"title":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-implicit-flow.html":{}},"body":{"classes/JwksValidationHandler.html":{},"changelog.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/custom-query-parameters.html":{},"additional-documentation/events.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{}}}],["implied",{"_index":1345,"title":{},"body":{"license.html":{}}}],["import",{"_index":68,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/DateTimeProvider.html":{},"injectables/DefaultHashHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/HashHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"injectables/SystemDateTimeProvider.html":{},"interfaces/TokenResponse.html":{},"injectables/UrlHelperService.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/events.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["important",{"_index":1210,"title":{},"body":{"index.html":{}}}],["imports",{"_index":595,"title":{},"body":{"modules/OAuthModule.html":{},"index.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["included",{"_index":390,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"license.html":{}}}],["includes",{"_index":384,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["including",{"_index":845,"title":{},"body":{"changelog.html":{},"license.html":{}}}],["increase",{"_index":787,"title":{},"body":{"changelog.html":{}}}],["indeed",{"_index":1467,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["index",{"_index":21,"title":{"index.html":{}},"body":{"classes/AbstractValidationHandler.html":{},"classes/DateTimeProvider.html":{},"injectables/DefaultHashHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/HashHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthLogger.html":{},"classes/OAuthModuleConfig.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerConfig.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"injectables/SystemDateTimeProvider.html":{},"interfaces/TokenResponse.html":{},"injectables/UrlHelperService.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"miscellaneous/functions.html":{},"miscellaneous/typealiases.html":{},"miscellaneous/variables.html":{}}}],["index.html",{"_index":1191,"title":{},"body":{"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["indexable",{"_index":660,"title":{},"body":{"interfaces/UserInfo.html":{}}}],["inferhashalgorithm",{"_index":24,"title":{},"body":{"classes/AbstractValidationHandler.html":{}}}],["inferhashalgorithm(jwtheader",{"_index":45,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["infers",{"_index":48,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["info",{"_index":3,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/DateTimeProvider.html":{},"injectables/DefaultHashHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/HashHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthModuleConfig.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerConfig.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/OAuthStorage.html":{},"classes/OAuthSuccessEvent.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"injectables/SystemDateTimeProvider.html":{},"interfaces/TokenResponse.html":{},"injectables/UrlHelperService.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"additional-documentation/preserving-state-(like-the-requested-url).html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/using-password-flow.html":{}}}],["info(message",{"_index":426,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["info.state",{"_index":1389,"title":{},"body":{"additional-documentation/preserving-state-(like-the-requested-url).html":{}}}],["information",{"_index":1093,"title":{},"body":{"index.html":{},"additional-documentation/events.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-systemjs.html":{},"additional-documentation/original-config-api.html":{}}}],["informs",{"_index":1576,"title":{},"body":{"additional-documentation/events.html":{}}}],["inherited",{"_index":290,"title":{},"body":{"classes/JwksValidationHandler.html":{},"injectables/SystemDateTimeProvider.html":{}}}],["initial",{"_index":1477,"title":{},"body":{"additional-documentation/silent-refresh.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["initialize",{"_index":1218,"title":{},"body":{"index.html":{}}}],["initializes",{"_index":1221,"title":{},"body":{"index.html":{}}}],["initialnavigation",{"_index":1625,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["initimplicitflow",{"_index":1286,"title":{},"body":{"index.html":{},"additional-documentation/preserving-state-(like-the-requested-url).html":{},"additional-documentation/using-implicit-flow.html":{}}}],["initloginflow",{"_index":854,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/popup-based-login.html":{}}}],["initloginflowinpopup",{"_index":772,"title":{},"body":{"changelog.html":{},"additional-documentation/popup-based-login.html":{}}}],["inject",{"_index":1535,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["injectable",{"_index":126,"title":{"injectables/DefaultHashHandler.html":{},"injectables/MemoryStorage.html":{},"injectables/SystemDateTimeProvider.html":{},"injectables/UrlHelperService.html":{}},"body":{"classes/DateTimeProvider.html":{},"injectables/DefaultHashHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/HashHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"injectables/SystemDateTimeProvider.html":{},"interfaces/TokenResponse.html":{},"injectables/UrlHelperService.html":{},"interfaces/UserInfo.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["injectables",{"_index":132,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"injectables/MemoryStorage.html":{},"injectables/SystemDateTimeProvider.html":{},"injectables/UrlHelperService.html":{},"overview.html":{}}}],["injecting",{"_index":1529,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["injection",{"_index":422,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["injectiontoken",{"_index":956,"title":{},"body":{"changelog.html":{}}}],["injectiontoken('auth_config",{"_index":1380,"title":{},"body":{"miscellaneous/variables.html":{}}}],["inline",{"_index":811,"title":{},"body":{"changelog.html":{}}}],["install",{"_index":306,"title":{},"body":{"classes/JwksValidationHandler.html":{},"index.html":{},"miscellaneous/variables.html":{}}}],["installing",{"_index":1171,"title":{},"body":{"index.html":{}}}],["instance",{"_index":1413,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{}}}],["instanceof",{"_index":1592,"title":{},"body":{"additional-documentation/events.html":{}}}],["instead",{"_index":341,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"index.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["intended",{"_index":1730,"title":{},"body":{"additional-documentation/using-implicit-flow.html":{}}}],["interaction",{"_index":1437,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["intercept",{"_index":199,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["intercept(req",{"_index":208,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["intercepted",{"_index":610,"title":{},"body":{"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{}}}],["interceptor",{"_index":194,"title":{"interceptors/DefaultOAuthInterceptor.html":{}},"body":{"index.html":{}}}],["interceptors",{"_index":196,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["interceptors/default",{"_index":590,"title":{},"body":{"modules/OAuthModule.html":{}}}],["interceptors/resource",{"_index":589,"title":{},"body":{"modules/OAuthModule.html":{}}}],["interesting",{"_index":1808,"title":{},"body":{"additional-documentation/manually-skipping-login-form.html":{}}}],["interface",{"_index":73,"title":{"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"interfaces/ValidationParams.html":{}},"body":{"classes/AbstractValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["interfaces",{"_index":631,"title":{},"body":{"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"interfaces/ValidationParams.html":{},"overview.html":{}}}],["internally",{"_index":363,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["introduce",{"_index":747,"title":{},"body":{"changelog.html":{}}}],["invalid_nonce_in_state",{"_index":530,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{},"additional-documentation/events.html":{}}}],["ionic",{"_index":1305,"title":{},"body":{"index.html":{}}}],["isn't",{"_index":512,"title":{},"body":{"classes/NullValidationHandler.html":{},"additional-documentation/using-password-flow.html":{}}}],["isresponse(str",{"_index":1464,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["issue",{"_index":831,"title":{},"body":{"changelog.html":{}}}],["issuer",{"_index":475,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["issues",{"_index":882,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["issuing",{"_index":1429,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["ivy",{"_index":835,"title":{},"body":{"changelog.html":{}}}],["java",{"_index":1048,"title":{},"body":{"index.html":{}}}],["jeroenheijmans",{"_index":980,"title":{},"body":{"changelog.html":{}}}],["jie",{"_index":971,"title":{},"body":{"changelog.html":{}}}],["job",{"_index":982,"title":{},"body":{"changelog.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["js",{"_index":145,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{},"changelog.html":{},"dependencies.html":{},"additional-documentation/using-systemjs.html":{}}}],["jsrsasign",{"_index":721,"title":{},"body":{"changelog.html":{},"dependencies.html":{},"index.html":{},"additional-documentation/using-systemjs.html":{}}}],["jwks",{"_index":78,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"changelog.html":{},"dependencies.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/events.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["jwks';instead",{"_index":1282,"title":{},"body":{"index.html":{}}}],["jwks_load_error",{"_index":529,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["jwks_uri",{"_index":483,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["jwksvalidationhandler",{"_index":272,"title":{"classes/JwksValidationHandler.html":{}},"body":{"classes/JwksValidationHandler.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/using-implicit-flow.html":{}}}],["jwksvalidationhandler();in",{"_index":1638,"title":{},"body":{"additional-documentation/adapt-id_token-validation.html":{}}}],["jwt",{"_index":753,"title":{},"body":{"changelog.html":{}}}],["jwtheader",{"_index":52,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["jwtheader['alg",{"_index":105,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["k",{"_index":676,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["keep",{"_index":1450,"title":{},"body":{"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["kevin",{"_index":1715,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["key",{"_index":470,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"injectables/UrlHelperService.html":{},"interfaces/UserInfo.html":{}}}],["keycloak",{"_index":1046,"title":{"additional-documentation/authorization-servers/using-keycloak.html":{}},"body":{"index.html":{},"additional-documentation/authorization-servers/using-keycloak.html":{}}}],["keys",{"_index":1634,"title":{},"body":{"additional-documentation/adapt-id_token-validation.html":{}}}],["kicks",{"_index":1762,"title":{},"body":{"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["kind",{"_index":1343,"title":{},"body":{"license.html":{}}}],["known",{"_index":1426,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["known/openid",{"_index":1776,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["labat",{"_index":979,"title":{},"body":{"changelog.html":{}}}],["labels",{"_index":1124,"title":{},"body":{"index.html":{}}}],["laing",{"_index":977,"title":{},"body":{"changelog.html":{}}}],["later",{"_index":1635,"title":{},"body":{"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/using-password-flow.html":{}}}],["leads",{"_index":1532,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/session-checks.html":{}}}],["leftmosthalf",{"_index":93,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["levels",{"_index":1590,"title":{},"body":{"additional-documentation/events.html":{}}}],["leveraging",{"_index":1615,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/using-implicit-flow.html":{}}}],["liability",{"_index":1358,"title":{},"body":{"license.html":{}}}],["liable",{"_index":1355,"title":{},"body":{"license.html":{}}}],["lib",{"_index":402,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"index.html":{},"additional-documentation/callback-after-login.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/authorization-servers.html":{},"additional-documentation/authorization-servers/using-identity-server.html":{},"additional-documentation/authorization-servers/using-keycloak.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["library",{"_index":281,"title":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{}},"body":{"classes/JwksValidationHandler.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/events.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/server-side-rendering.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers/azure-ad-(active-directory).html":{}}}],["library's",{"_index":1709,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["license",{"_index":858,"title":{"license.html":{}},"body":{"changelog.html":{}}}],["life",{"_index":1407,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{}}}],["lifetime",{"_index":1661,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["limitation",{"_index":1324,"title":{},"body":{"license.html":{},"additional-documentation/refreshing-a-token.html":{}}}],["limited",{"_index":1346,"title":{},"body":{"license.html":{}}}],["lin",{"_index":972,"title":{},"body":{"changelog.html":{}}}],["line",{"_index":1488,"title":{},"body":{"additional-documentation/silent-refresh.html":{},"additional-documentation/using-password-flow.html":{}}}],["linjie997",{"_index":949,"title":{},"body":{"changelog.html":{}}}],["linked",{"_index":1087,"title":{},"body":{"index.html":{},"additional-documentation/authorization-servers/azure-ad-(active-directory).html":{}}}],["links",{"_index":1091,"title":{},"body":{"index.html":{}}}],["list",{"_index":1394,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/events.html":{}}}],["listed",{"_index":1520,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["listen",{"_index":759,"title":{},"body":{"changelog.html":{}}}],["lite",{"_index":1015,"title":{},"body":{"dependencies.html":{}}}],["load",{"_index":1774,"title":{},"body":{"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["loaddiscoverydocumentandlogin",{"_index":853,"title":{},"body":{"changelog.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["loaddiscoverydocumentandtrylogin",{"_index":1806,"title":{},"body":{"additional-documentation/manually-skipping-login-form.html":{}}}],["loaded",{"_index":1451,"title":{},"body":{"additional-documentation/silent-refresh.html":{},"additional-documentation/using-password-flow.html":{}}}],["loading",{"_index":1790,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["loadkeys",{"_index":79,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["loaduserprofile",{"_index":1604,"title":{},"body":{"additional-documentation/events.html":{}}}],["local",{"_index":1649,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["localhost:[4200",{"_index":1167,"title":{},"body":{"index.html":{}}}],["localstorage",{"_index":435,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["location",{"_index":708,"title":{},"body":{"changelog.html":{}}}],["location.hash",{"_index":703,"title":{},"body":{"changelog.html":{}}}],["location.origin",{"_index":1456,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["location.search",{"_index":1455,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["locationstrategy",{"_index":1616,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["log",{"_index":560,"title":{},"body":{"classes/OAuthLogger.html":{},"additional-documentation/events.html":{}}}],["log(message",{"_index":427,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["logged",{"_index":1434,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["loggin",{"_index":1781,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["logging",{"_index":415,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"index.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["login",{"_index":739,"title":{"additional-documentation/callback-after-login.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/manually-skipping-login-form.html":{}},"body":{"changelog.html":{},"index.html":{},"additional-documentation/preserving-state-(like-the-requested-url).html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/callback-after-login.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/manually-skipping-login-form.html":{},"additional-documentation/original-config-api.html":{}}}],["loginhint",{"_index":767,"title":{},"body":{"changelog.html":{}}}],["loginoptions",{"_index":324,"title":{"classes/LoginOptions.html":{}},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["logoff",{"_index":1743,"title":{},"body":{"additional-documentation/using-implicit-flow.html":{}}}],["logout",{"_index":548,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"changelog.html":{},"index.html":{},"miscellaneous/typealiases.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["logouturl",{"_index":1851,"title":{},"body":{"additional-documentation/authorization-servers/auth0.html":{}}}],["logs",{"_index":1588,"title":{},"body":{"additional-documentation/events.html":{}}}],["long",{"_index":1611,"title":{},"body":{"additional-documentation/events.html":{}}}],["longer",{"_index":1586,"title":{},"body":{"additional-documentation/events.html":{}}}],["look",{"_index":1076,"title":{},"body":{"index.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers/azure-ad-(active-directory).html":{}}}],["lookup",{"_index":1273,"title":{},"body":{"index.html":{}}}],["lower",{"_index":1255,"title":{},"body":{"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["main",{"_index":1452,"title":{},"body":{"additional-documentation/silent-refresh.html":{},"additional-documentation/events.html":{},"additional-documentation/using-systemjs.html":{}}}],["maintain",{"_index":1710,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["major",{"_index":1112,"title":{},"body":{"index.html":{}}}],["make",{"_index":17,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"changelog.html":{},"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/using-password-flow.html":{}}}],["making",{"_index":1567,"title":{},"body":{"additional-documentation/popup-based-login.html":{}}}],["management",{"_index":1645,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["mandatory",{"_index":1288,"title":{},"body":{"index.html":{}}}],["manfred",{"_index":973,"title":{},"body":{"changelog.html":{},"license.html":{}}}],["manner",{"_index":350,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["manually",{"_index":1235,"title":{"additional-documentation/manually-skipping-login-form.html":{}},"body":{"index.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["map",{"_index":222,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/using-systemjs.html":{}}}],["map((_",{"_index":262,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["mark",{"_index":356,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["matching",{"_index":115,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/DateTimeProvider.html":{},"injectables/DefaultHashHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/HashHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthModuleConfig.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerConfig.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/OAuthStorage.html":{},"classes/OAuthSuccessEvent.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"injectables/SystemDateTimeProvider.html":{},"interfaces/TokenResponse.html":{},"injectables/UrlHelperService.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"changelog.html":{},"dependencies.html":{},"miscellaneous/functions.html":{},"index.html":{},"license.html":{},"modules.html":{},"overview.html":{},"miscellaneous/typealiases.html":{},"miscellaneous/variables.html":{},"additional-documentation/getting-started.html":{},"additional-documentation/preserving-state-(like-the-requested-url).html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/callback-after-login.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/custom-query-parameters.html":{},"additional-documentation/events.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/server-side-rendering.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-systemjs.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/manually-skipping-login-form.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers.html":{},"additional-documentation/authorization-servers/using-identity-server.html":{},"additional-documentation/authorization-servers/using-keycloak.html":{},"additional-documentation/authorization-servers/auth0.html":{},"additional-documentation/authorization-servers/azure-ad-(active-directory).html":{}}}],["max/geheim",{"_index":1161,"title":{},"body":{"index.html":{},"additional-documentation/using-implicit-flow.html":{}}}],["mccloghry",{"_index":976,"title":{},"body":{"changelog.html":{}}}],["mean",{"_index":1558,"title":{},"body":{"additional-documentation/popup-based-login.html":{}}}],["means",{"_index":1415,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/session-checks.html":{}}}],["meanwhile",{"_index":1731,"title":{},"body":{"additional-documentation/using-implicit-flow.html":{}}}],["memorystorage",{"_index":443,"title":{"injectables/MemoryStorage.html":{}},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["mentioned",{"_index":1391,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/original-config-api.html":{}}}],["merchantability",{"_index":1348,"title":{},"body":{"license.html":{}}}],["merge",{"_index":218,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"license.html":{}}}],["mergemap",{"_index":224,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["mergemap((token",{"_index":266,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["message",{"_index":391,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/silent-refresh.html":{}}}],["meta",{"_index":1719,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["method",{"_index":15,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/manually-skipping-login-form.html":{},"additional-documentation/original-config-api.html":{}}}],["methods",{"_index":22,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/DateTimeProvider.html":{},"injectables/DefaultHashHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/HashHandler.html":{},"classes/JwksValidationHandler.html":{},"injectables/MemoryStorage.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/OAuthStorage.html":{},"injectables/SystemDateTimeProvider.html":{},"injectables/UrlHelperService.html":{},"classes/ValidationHandler.html":{},"classes/WebHttpUrlEncodingCodec.html":{}}}],["mind",{"_index":1200,"title":{},"body":{"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["minutes",{"_index":1303,"title":{},"body":{"index.html":{}}}],["miscellaneous",{"_index":1022,"title":{"miscellaneous/functions.html":{},"miscellaneous/typealiases.html":{},"miscellaneous/variables.html":{}},"body":{"miscellaneous/functions.html":{},"miscellaneous/typealiases.html":{},"miscellaneous/variables.html":{}}}],["missing",{"_index":922,"title":{},"body":{"changelog.html":{}}}],["mode",{"_index":737,"title":{},"body":{"changelog.html":{}}}],["moderating",{"_index":983,"title":{},"body":{"changelog.html":{}}}],["modern",{"_index":1153,"title":{},"body":{"index.html":{}}}],["modify",{"_index":1326,"title":{},"body":{"license.html":{}}}],["module",{"_index":568,"title":{"modules/OAuthModule.html":{}},"body":{"overview.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["module.config",{"_index":232,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"modules/OAuthModule.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["module.config.ts",{"_index":604,"title":{},"body":{"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{}}}],["module.config.ts:11",{"_index":623,"title":{},"body":{"classes/OAuthResourceServerConfig.html":{}}}],["module.config.ts:12",{"_index":625,"title":{},"body":{"classes/OAuthResourceServerConfig.html":{}}}],["module.config.ts:13",{"_index":624,"title":{},"body":{"classes/OAuthResourceServerConfig.html":{}}}],["module.config.ts:2",{"_index":607,"title":{},"body":{"classes/OAuthModuleConfig.html":{}}}],["moduleconfig",{"_index":205,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["modules",{"_index":570,"title":{"modules.html":{}},"body":{"modules/OAuthModule.html":{},"modules.html":{}}}],["modulewithproviders",{"_index":579,"title":{},"body":{"modules/OAuthModule.html":{}}}],["moment",{"_index":1663,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["moos",{"_index":958,"title":{},"body":{"changelog.html":{}}}],["more",{"_index":1092,"title":{},"body":{"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/events.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["moved",{"_index":280,"title":{},"body":{"classes/JwksValidationHandler.html":{},"index.html":{},"miscellaneous/variables.html":{}}}],["msec",{"_index":1504,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["much",{"_index":1107,"title":{},"body":{"index.html":{}}}],["multi",{"_index":602,"title":{},"body":{"modules/OAuthModule.html":{}}}],["multiple",{"_index":741,"title":{},"body":{"changelog.html":{}}}],["multiplying",{"_index":725,"title":{},"body":{"changelog.html":{}}}],["name",{"_index":39,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"injectables/DefaultHashHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/HashHandler.html":{},"classes/JwksValidationHandler.html":{},"injectables/MemoryStorage.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/OAuthStorage.html":{},"classes/OAuthSuccessEvent.html":{},"injectables/UrlHelperService.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"miscellaneous/functions.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["namely",{"_index":282,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["navigation",{"_index":1618,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["need",{"_index":301,"title":{},"body":{"classes/JwksValidationHandler.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["needed",{"_index":312,"title":{},"body":{"classes/JwksValidationHandler.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["needs",{"_index":1658,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["net",{"_index":1072,"title":{},"body":{"index.html":{}}}],["net/.net",{"_index":1044,"title":{},"body":{"index.html":{}}}],["never",{"_index":375,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["new",{"_index":109,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/DateTimeProvider.html":{},"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"injectables/SystemDateTimeProvider.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"changelog.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/manually-skipping-login-form.html":{},"additional-documentation/original-config-api.html":{}}}],["newer",{"_index":1105,"title":{},"body":{"index.html":{}}}],["newest",{"_index":1657,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["next",{"_index":210,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["next.handle(req",{"_index":247,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["next.handle(req).catch(err",{"_index":1546,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["ngmodule",{"_index":582,"title":{},"body":{"modules/OAuthModule.html":{},"index.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["ngx",{"_index":1008,"title":{},"body":{"dependencies.html":{}}}],["ngzone",{"_index":928,"title":{},"body":{"changelog.html":{}}}],["node_modules/jsrsasign/lib/jsrsasign",{"_index":1727,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["nonce",{"_index":369,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"additional-documentation/events.html":{}}}],["noninfringement",{"_index":1352,"title":{},"body":{"license.html":{}}}],["normally",{"_index":399,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["notable",{"_index":862,"title":{},"body":{"changelog.html":{}}}],["note",{"_index":310,"title":{},"body":{"classes/JwksValidationHandler.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["notes",{"_index":1420,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["nothing",{"_index":514,"title":{},"body":{"classes/NullValidationHandler.html":{}}}],["notice",{"_index":1338,"title":{},"body":{"license.html":{}}}],["notification",{"_index":1642,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["notifications",{"_index":1655,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["notified",{"_index":1664,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["now",{"_index":121,"title":{},"body":{"classes/DateTimeProvider.html":{},"injectables/SystemDateTimeProvider.html":{},"changelog.html":{},"index.html":{}}}],["nowadays",{"_index":314,"title":{},"body":{"classes/JwksValidationHandler.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/original-config-api.html":{}}}],["npm",{"_index":307,"title":{},"body":{"classes/JwksValidationHandler.html":{},"index.html":{},"miscellaneous/variables.html":{}}}],["null",{"_index":293,"title":{},"body":{"classes/JwksValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthStorage.html":{},"classes/OAuthSuccessEvent.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"injectables/UrlHelperService.html":{},"interfaces/UserInfo.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/using-implicit-flow.html":{}}}],["nullvalidationhandler",{"_index":287,"title":{"classes/NullValidationHandler.html":{}},"body":{"classes/JwksValidationHandler.html":{},"classes/NullValidationHandler.html":{},"modules/OAuthModule.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["nullvalidationhandler:11",{"_index":291,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["nullvalidationhandler:8",{"_index":292,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["number",{"_index":125,"title":{},"body":{"classes/DateTimeProvider.html":{},"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"injectables/SystemDateTimeProvider.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["oauth",{"_index":231,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"modules/OAuthModule.html":{},"changelog.html":{},"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{}}}],["oauth.interceptor",{"_index":591,"title":{},"body":{"modules/OAuthModule.html":{}}}],["oauth.interceptor.ts",{"_index":198,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["oauth.interceptor.ts:23",{"_index":207,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["oauth.interceptor.ts:44",{"_index":212,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["oauth2",{"_index":284,"title":{},"body":{"classes/JwksValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"dependencies.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/events.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-systemjs.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["oauth2/oidc",{"_index":303,"title":{},"body":{"classes/JwksValidationHandler.html":{},"miscellaneous/variables.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{}}}],["oautherrorevent",{"_index":521,"title":{"classes/OAuthErrorEvent.html":{}},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"additional-documentation/events.html":{}}}],["oauthevent",{"_index":523,"title":{"classes/OAuthEvent.html":{}},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{}}}],["oauthinfoevent",{"_index":556,"title":{"classes/OAuthInfoEvent.html":{}},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{}}}],["oauthlogger",{"_index":423,"title":{"classes/OAuthLogger.html":{}},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["oauthmodule",{"_index":569,"title":{"modules/OAuthModule.html":{}},"body":{"modules/OAuthModule.html":{},"index.html":{},"modules.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["oauthmodule.forroot",{"_index":1175,"title":{},"body":{"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["oauthmoduleconfig",{"_index":206,"title":{"classes/OAuthModuleConfig.html":{}},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"modules/OAuthModule.html":{},"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["oauthnoopresourceservererrorhandler",{"_index":588,"title":{"classes/OAuthNoopResourceServerErrorHandler.html":{}},"body":{"modules/OAuthModule.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["oauthresourceserverconfig",{"_index":606,"title":{"classes/OAuthResourceServerConfig.html":{}},"body":{"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{}}}],["oauthresourceservererrorhandler",{"_index":204,"title":{"classes/OAuthResourceServerErrorHandler.html":{}},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"modules/OAuthModule.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["oauthservice",{"_index":202,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["oauthstorage",{"_index":439,"title":{"classes/OAuthStorage.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["oauthsuccessevent",{"_index":553,"title":{"classes/OAuthSuccessEvent.html":{}},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{}}}],["object",{"_index":46,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"classes/OAuthSuccessEvent.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"injectables/UrlHelperService.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/using-implicit-flow.html":{}}}],["observable",{"_index":214,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/events.html":{}}}],["obtaining",{"_index":1316,"title":{},"body":{"license.html":{}}}],["occur",{"_index":1580,"title":{},"body":{"additional-documentation/events.html":{}}}],["of(null",{"_index":261,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["of(this.oauthservice.getaccesstoken()).pipe(filter((token",{"_index":253,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["officially",{"_index":1074,"title":{},"body":{"index.html":{}}}],["offline_access",{"_index":1211,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["oidc",{"_index":285,"title":{},"body":{"classes/JwksValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"dependencies.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/events.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-systemjs.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["oidc';please",{"_index":1283,"title":{},"body":{"index.html":{}}}],["oidc.module.ts",{"_index":572,"title":{},"body":{"modules/OAuthModule.html":{}}}],["oidc.module.ts:30",{"_index":577,"title":{},"body":{"modules/OAuthModule.html":{}}}],["oidc.umd.js",{"_index":1723,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["oidc/docs",{"_index":1054,"title":{},"body":{"index.html":{}}}],["oidc/docs/additional",{"_index":1260,"title":{},"body":{"index.html":{}}}],["oidc/issues/728#issuecomment",{"_index":701,"title":{},"body":{"changelog.html":{}}}],["oidc/pull/1020",{"_index":781,"title":{},"body":{"changelog.html":{}}}],["oidc/pull/919",{"_index":758,"title":{},"body":{"changelog.html":{}}}],["oidc/pull/935",{"_index":761,"title":{},"body":{"changelog.html":{}}}],["oidc/pull/936",{"_index":766,"title":{},"body":{"changelog.html":{}}}],["oidc/pull/938",{"_index":769,"title":{},"body":{"changelog.html":{}}}],["oidc/pull/965",{"_index":778,"title":{},"body":{"changelog.html":{}}}],["oidcdiscoverydoc",{"_index":474,"title":{"interfaces/OidcDiscoveryDoc.html":{}},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["ok",{"_index":1495,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["okta",{"_index":1089,"title":{},"body":{"index.html":{}}}],["older",{"_index":1096,"title":{},"body":{"index.html":{},"additional-documentation/original-config-api.html":{}}}],["one",{"_index":279,"title":{},"body":{"classes/JwksValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["online",{"_index":1300,"title":{},"body":{"index.html":{}}}],["onloginerror",{"_index":334,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["ontokenreceived",{"_index":335,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/preserving-state-(like-the-requested-url).html":{},"additional-documentation/callback-after-login.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["open",{"_index":1844,"title":{},"body":{"additional-documentation/authorization-servers/auth0.html":{}}}],["opened",{"_index":744,"title":{},"body":{"changelog.html":{}}}],["opener",{"_index":1475,"title":{},"body":{"additional-documentation/silent-refresh.html":{},"additional-documentation/popup-based-login.html":{}}}],["openid",{"_index":471,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/events.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["opens",{"_index":742,"title":{},"body":{"changelog.html":{}}}],["opht1tkt9e9fvqtzpbvf1thvhjrxvyvx",{"_index":1850,"title":{},"body":{"additional-documentation/authorization-servers/auth0.html":{}}}],["option",{"_index":771,"title":{},"body":{"changelog.html":{},"additional-documentation/session-checks.html":{}}}],["optional",{"_index":41,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"injectables/DefaultHashHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/HashHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerConfig.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/OAuthStorage.html":{},"classes/OAuthSuccessEvent.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"injectables/UrlHelperService.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"changelog.html":{},"miscellaneous/functions.html":{},"additional-documentation/preserving-state-(like-the-requested-url).html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["optionalparams",{"_index":425,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["options",{"_index":327,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"additional-documentation/events.html":{}}}],["orig",{"_index":179,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["original",{"_index":1390,"title":{"additional-documentation/original-config-api.html":{}},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{}}}],["originally",{"_index":1729,"title":{},"body":{"additional-documentation/using-implicit-flow.html":{}}}],["otherparam",{"_index":1574,"title":{},"body":{"additional-documentation/custom-query-parameters.html":{}}}],["otherwise",{"_index":1267,"title":{},"body":{"index.html":{},"license.html":{}}}],["out",{"_index":1150,"title":{},"body":{"index.html":{},"license.html":{},"overview.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["output",{"_index":859,"title":{},"body":{"changelog.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/callback-after-login.html":{}}}],["outside",{"_index":927,"title":{},"body":{"changelog.html":{}}}],["over",{"_index":1408,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{}}}],["override",{"_index":19,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["overview",{"_index":1368,"title":{"overview.html":{}},"body":{"overview.html":{}}}],["owner",{"_index":1766,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["package",{"_index":985,"title":{"dependencies.html":{}},"body":{}}],["package.json",{"_index":788,"title":{},"body":{"changelog.html":{}}}],["packages",{"_index":1632,"title":{},"body":{"additional-documentation/adapt-id_token-validation.html":{}}}],["paddedhexcode",{"_index":190,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["page",{"_index":317,"title":{"additional-documentation/getting-started.html":{},"additional-documentation/preserving-state-(like-the-requested-url).html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/callback-after-login.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/custom-query-parameters.html":{},"additional-documentation/events.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/server-side-rendering.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-systemjs.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/manually-skipping-login-form.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers.html":{},"additional-documentation/authorization-servers/using-identity-server.html":{},"additional-documentation/authorization-servers/using-keycloak.html":{},"additional-documentation/authorization-servers/auth0.html":{},"additional-documentation/authorization-servers/azure-ad-(active-directory).html":{}},"body":{"classes/JwksValidationHandler.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/manually-skipping-login-form.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["pair",{"_index":655,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["pairs",{"_index":654,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["param",{"_index":104,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["parameter",{"_index":950,"title":{},"body":{"changelog.html":{},"additional-documentation/custom-query-parameters.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["parameters",{"_index":37,"title":{"additional-documentation/custom-query-parameters.html":{}},"body":{"classes/AbstractValidationHandler.html":{},"injectables/DefaultHashHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/HashHandler.html":{},"classes/JwksValidationHandler.html":{},"injectables/MemoryStorage.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/OAuthStorage.html":{},"classes/OAuthSuccessEvent.html":{},"injectables/UrlHelperService.html":{},"classes/ValidationHandler.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"changelog.html":{},"miscellaneous/functions.html":{},"additional-documentation/custom-query-parameters.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["params",{"_index":64,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"classes/OAuthSuccessEvent.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["params.idtokenclaims['at_hash'].replace(/=/g",{"_index":100,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["parent",{"_index":1472,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["parse",{"_index":1691,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{}}}],["parsed",{"_index":54,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["parsedidtoken",{"_index":451,"title":{"interfaces/ParsedIdToken.html":{}},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["parsequerystring",{"_index":641,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["parsequerystring(querystring",{"_index":644,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["particular",{"_index":1350,"title":{},"body":{"license.html":{}}}],["pass",{"_index":345,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"additional-documentation/preserving-state-(like-the-requested-url).html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["passed",{"_index":34,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"index.html":{}}}],["passes",{"_index":1525,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["passing",{"_index":918,"title":{},"body":{"changelog.html":{}}}],["password",{"_index":1137,"title":{"additional-documentation/using-password-flow.html":{}},"body":{"index.html":{},"additional-documentation/using-password-flow.html":{}}}],["passwords",{"_index":668,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["path",{"_index":1265,"title":{},"body":{"index.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["pathlocationstrategy",{"_index":1064,"title":{},"body":{"index.html":{}}}],["perform",{"_index":1491,"title":{},"body":{"additional-documentation/silent-refresh.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/session-checks.html":{}}}],["performs",{"_index":1617,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/session-checks.html":{}}}],["permission",{"_index":1311,"title":{},"body":{"license.html":{}}}],["permissions",{"_index":1206,"title":{},"body":{"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["permit",{"_index":1333,"title":{},"body":{"license.html":{}}}],["person",{"_index":1315,"title":{},"body":{"license.html":{}}}],["persons",{"_index":1334,"title":{},"body":{"license.html":{}}}],["perspective",{"_index":1753,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["phil",{"_index":975,"title":{},"body":{"changelog.html":{}}}],["pingone",{"_index":1703,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["pipe",{"_index":264,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["pipe(catcherror((err",{"_index":251,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["pkce",{"_index":1133,"title":{},"body":{"index.html":{}}}],["plan",{"_index":1111,"title":{},"body":{"index.html":{}}}],["please",{"_index":295,"title":{},"body":{"classes/JwksValidationHandler.html":{},"changelog.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/getting-started.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["pls",{"_index":888,"title":{},"body":{"changelog.html":{}}}],["plus",{"_index":727,"title":{},"body":{"changelog.html":{}}}],["pmccloghrylaing",{"_index":951,"title":{},"body":{"changelog.html":{}}}],["popperjs/core",{"_index":996,"title":{},"body":{"dependencies.html":{}}}],["popup",{"_index":347,"title":{"additional-documentation/popup-based-login.html":{}},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/popup-based-login.html":{}}}],["popup_blocked",{"_index":550,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["popup_closed",{"_index":549,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["portions",{"_index":1341,"title":{},"body":{"license.html":{}}}],["possible",{"_index":1760,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["post",{"_index":1085,"title":{},"body":{"index.html":{},"additional-documentation/server-side-rendering.html":{},"additional-documentation/authorization-servers/azure-ad-(active-directory).html":{}}}],["postlogoutredirecturi",{"_index":749,"title":{},"body":{"changelog.html":{}}}],["ppanthony",{"_index":1721,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["practice",{"_index":381,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/using-implicit-flow.html":{}}}],["practices",{"_index":1202,"title":{},"body":{"index.html":{}}}],["predefined",{"_index":959,"title":{},"body":{"changelog.html":{}}}],["prefixes",{"_index":1254,"title":{},"body":{"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["prepared",{"_index":1038,"title":{},"body":{"index.html":{}}}],["present",{"_index":357,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{}}}],["preserving",{"_index":1383,"title":{"additional-documentation/preserving-state-(like-the-requested-url).html":{}},"body":{"additional-documentation/preserving-state-(like-the-requested-url).html":{}}}],["prevent",{"_index":773,"title":{},"body":{"changelog.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["preventclearhashafterlogin",{"_index":336,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["prevents",{"_index":1499,"title":{},"body":{"additional-documentation/silent-refresh.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["previously",{"_index":1818,"title":{},"body":{"additional-documentation/manually-skipping-login-form.html":{}}}],["private",{"_index":234,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/using-implicit-flow.html":{}}}],["production",{"_index":376,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["profile",{"_index":1215,"title":{},"body":{"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["progressing",{"_index":1821,"title":{},"body":{"additional-documentation/manually-skipping-login-form.html":{}}}],["project",{"_index":864,"title":{},"body":{"changelog.html":{}}}],["project's",{"_index":1676,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{}}}],["projects/.../base64",{"_index":1025,"title":{},"body":{"miscellaneous/functions.html":{}}}],["projects/.../events.ts",{"_index":1374,"title":{},"body":{"miscellaneous/typealiases.html":{}}}],["projects/.../factories.ts",{"_index":1027,"title":{},"body":{"miscellaneous/functions.html":{}}}],["projects/.../hash",{"_index":1029,"title":{},"body":{"miscellaneous/functions.html":{},"miscellaneous/variables.html":{}}}],["projects/.../jwks",{"_index":1378,"title":{},"body":{"miscellaneous/variables.html":{}}}],["projects/.../tokens.ts",{"_index":1377,"title":{},"body":{"miscellaneous/variables.html":{}}}],["projects/lib/src/angular",{"_index":571,"title":{},"body":{"modules/OAuthModule.html":{}}}],["projects/lib/src/base64",{"_index":1031,"title":{},"body":{"miscellaneous/functions.html":{}}}],["projects/lib/src/date",{"_index":118,"title":{},"body":{"classes/DateTimeProvider.html":{},"injectables/SystemDateTimeProvider.html":{}}}],["projects/lib/src/encoder.ts",{"_index":665,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["projects/lib/src/encoder.ts:10",{"_index":683,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["projects/lib/src/encoder.ts:14",{"_index":675,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["projects/lib/src/encoder.ts:18",{"_index":678,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["projects/lib/src/encoder.ts:6",{"_index":681,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["projects/lib/src/events.ts",{"_index":522,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["projects/lib/src/events.ts:28",{"_index":557,"title":{},"body":{"classes/OAuthEvent.html":{}}}],["projects/lib/src/events.ts:32",{"_index":630,"title":{},"body":{"classes/OAuthSuccessEvent.html":{}}}],["projects/lib/src/events.ts:38",{"_index":558,"title":{},"body":{"classes/OAuthInfoEvent.html":{}}}],["projects/lib/src/events.ts:44",{"_index":527,"title":{},"body":{"classes/OAuthErrorEvent.html":{}}}],["projects/lib/src/factories.ts",{"_index":1035,"title":{},"body":{"miscellaneous/functions.html":{}}}],["projects/lib/src/interceptors/default",{"_index":197,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["projects/lib/src/interceptors/resource",{"_index":617,"title":{},"body":{"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{}}}],["projects/lib/src/oauth",{"_index":603,"title":{},"body":{"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{}}}],["projects/lib/src/token",{"_index":6,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/NullValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"miscellaneous/functions.html":{},"miscellaneous/variables.html":{}}}],["projects/lib/src/tokens.ts",{"_index":1379,"title":{},"body":{"miscellaneous/variables.html":{}}}],["projects/lib/src/types.ts",{"_index":325,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["projects/lib/src/types.ts:100",{"_index":629,"title":{},"body":{"classes/OAuthStorage.html":{}}}],["projects/lib/src/types.ts:107",{"_index":508,"title":{},"body":{"injectables/MemoryStorage.html":{}}}],["projects/lib/src/types.ts:111",{"_index":509,"title":{},"body":{"injectables/MemoryStorage.html":{}}}],["projects/lib/src/types.ts:115",{"_index":510,"title":{},"body":{"injectables/MemoryStorage.html":{}}}],["projects/lib/src/types.ts:125",{"_index":634,"title":{},"body":{"classes/ReceivedTokens.html":{}}}],["projects/lib/src/types.ts:126",{"_index":632,"title":{},"body":{"classes/ReceivedTokens.html":{}}}],["projects/lib/src/types.ts:127",{"_index":633,"title":{},"body":{"classes/ReceivedTokens.html":{}}}],["projects/lib/src/types.ts:128",{"_index":635,"title":{},"body":{"classes/ReceivedTokens.html":{}}}],["projects/lib/src/types.ts:13",{"_index":395,"title":{},"body":{"classes/LoginOptions.html":{}}}],["projects/lib/src/types.ts:162",{"_index":661,"title":{},"body":{"interfaces/UserInfo.html":{}}}],["projects/lib/src/types.ts:20",{"_index":410,"title":{},"body":{"classes/LoginOptions.html":{}}}],["projects/lib/src/types.ts:28",{"_index":386,"title":{},"body":{"classes/LoginOptions.html":{}}}],["projects/lib/src/types.ts:40",{"_index":337,"title":{},"body":{"classes/LoginOptions.html":{}}}],["projects/lib/src/types.ts:50",{"_index":378,"title":{},"body":{"classes/LoginOptions.html":{}}}],["projects/lib/src/types.ts:59",{"_index":367,"title":{},"body":{"classes/LoginOptions.html":{}}}],["projects/lib/src/types.ts:67",{"_index":398,"title":{},"body":{"classes/LoginOptions.html":{}}}],["projects/lib/src/types.ts:74",{"_index":359,"title":{},"body":{"classes/LoginOptions.html":{}}}],["projects/lib/src/types.ts:84",{"_index":562,"title":{},"body":{"classes/OAuthLogger.html":{}}}],["projects/lib/src/types.ts:85",{"_index":565,"title":{},"body":{"classes/OAuthLogger.html":{}}}],["projects/lib/src/types.ts:86",{"_index":566,"title":{},"body":{"classes/OAuthLogger.html":{}}}],["projects/lib/src/types.ts:87",{"_index":567,"title":{},"body":{"classes/OAuthLogger.html":{}}}],["projects/lib/src/types.ts:88",{"_index":564,"title":{},"body":{"classes/OAuthLogger.html":{}}}],["projects/lib/src/types.ts:98",{"_index":627,"title":{},"body":{"classes/OAuthStorage.html":{}}}],["projects/lib/src/types.ts:99",{"_index":628,"title":{},"body":{"classes/OAuthStorage.html":{}}}],["projects/lib/src/url",{"_index":638,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["promise",{"_index":44,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["promise(resolve",{"_index":1824,"title":{},"body":{"additional-documentation/manually-skipping-login-form.html":{}}}],["promise.resolve",{"_index":1812,"title":{},"body":{"additional-documentation/manually-skipping-login-form.html":{}}}],["promise.resolve(null",{"_index":519,"title":{},"body":{"classes/NullValidationHandler.html":{}}}],["promise.resolve(true",{"_index":520,"title":{},"body":{"classes/NullValidationHandler.html":{}}}],["properties",{"_index":329,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"interfaces/ValidationParams.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["property",{"_index":393,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/custom-query-parameters.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-password-flow.html":{}}}],["proposes",{"_index":1392,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["protected",{"_index":23,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["provding",{"_index":1521,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["provide",{"_index":419,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["provided",{"_index":1056,"title":{},"body":{"index.html":{},"license.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["provider",{"_index":580,"title":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}},"body":{"modules/OAuthModule.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/original-config-api.html":{}}}],["provider.ts",{"_index":120,"title":{},"body":{"classes/DateTimeProvider.html":{},"injectables/SystemDateTimeProvider.html":{}}}],["provider.ts:4",{"_index":124,"title":{},"body":{"classes/DateTimeProvider.html":{}}}],["provider.ts:5",{"_index":122,"title":{},"body":{"classes/DateTimeProvider.html":{}}}],["providers",{"_index":598,"title":{},"body":{"modules/OAuthModule.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["provides",{"_index":1534,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/using-password-flow.html":{}}}],["providing",{"_index":1785,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["prs",{"_index":1115,"title":{},"body":{"index.html":{}}}],["public",{"_index":84,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"injectables/UrlHelperService.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/using-implicit-flow.html":{}}}],["publish",{"_index":1327,"title":{},"body":{"license.html":{}}}],["published",{"_index":1597,"title":{},"body":{"additional-documentation/events.html":{}}}],["publishes",{"_index":1578,"title":{},"body":{"additional-documentation/events.html":{}}}],["pull",{"_index":943,"title":{},"body":{"changelog.html":{},"index.html":{}}}],["purpose",{"_index":1351,"title":{},"body":{"license.html":{},"additional-documentation/callback-after-login.html":{}}}],["put",{"_index":1518,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["pwa",{"_index":1304,"title":{},"body":{"index.html":{}}}],["query",{"_index":408,"title":{"additional-documentation/custom-query-parameters.html":{}},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/custom-query-parameters.html":{}}}],["querying",{"_index":1143,"title":{},"body":{"index.html":{}}}],["querystring",{"_index":354,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"injectables/UrlHelperService.html":{},"interfaces/UserInfo.html":{},"changelog.html":{}}}],["querystring.split",{"_index":659,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["question",{"_index":355,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/session-checks.html":{}}}],["questionmarkposition",{"_index":649,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["quite",{"_index":1763,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["read",{"_index":296,"title":{},"body":{"classes/JwksValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"miscellaneous/variables.html":{},"additional-documentation/preserving-state-(like-the-requested-url).html":{}}}],["reading",{"_index":1619,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["readme",{"_index":1225,"title":{},"body":{"index.html":{},"additional-documentation/getting-started.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["readonly",{"_index":554,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{}}}],["ready",{"_index":791,"title":{},"body":{"changelog.html":{}}}],["real",{"_index":278,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["reason",{"_index":526,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{}}}],["receive",{"_index":760,"title":{},"body":{"changelog.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/session-checks.html":{}}}],["received",{"_index":62,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/callback-after-login.html":{},"additional-documentation/events.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["receivedtokens",{"_index":413,"title":{"classes/ReceivedTokens.html":{}},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["receives",{"_index":1815,"title":{},"body":{"additional-documentation/manually-skipping-login-form.html":{}}}],["receiving",{"_index":1835,"title":{},"body":{"additional-documentation/original-config-api.html":{}}}],["recommend",{"_index":1083,"title":{},"body":{"index.html":{},"additional-documentation/authorization-servers/azure-ad-(active-directory).html":{}}}],["recommended",{"_index":1271,"title":{},"body":{"index.html":{}}}],["recommented",{"_index":315,"title":{},"body":{"classes/JwksValidationHandler.html":{},"miscellaneous/variables.html":{}}}],["redhat",{"_index":1047,"title":{},"body":{"index.html":{}}}],["redhat's",{"_index":1073,"title":{},"body":{"index.html":{}}}],["redirect",{"_index":360,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["redirected",{"_index":1136,"title":{},"body":{"index.html":{}}}],["redirecting",{"_index":1151,"title":{},"body":{"index.html":{}}}],["redirects",{"_index":1247,"title":{},"body":{"index.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{}}}],["redirecturi",{"_index":750,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["redirecturis",{"_index":1166,"title":{},"body":{"index.html":{}}}],["refactor",{"_index":810,"title":{},"body":{"changelog.html":{}}}],["refresh",{"_index":364,"title":{"additional-documentation/silent-refresh.html":{}},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/events.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["refresh.html",{"_index":946,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/session-checks.html":{}}}],["refresh.html\";please",{"_index":1449,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["refresh_token",{"_index":464,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{}}}],["refresh_tokens",{"_index":1397,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["refreshed",{"_index":1609,"title":{},"body":{"additional-documentation/events.html":{}}}],["refreshes",{"_index":344,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["refreshing",{"_index":1140,"title":{"additional-documentation/refreshing-a-token.html":{}},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["refreshtoken",{"_index":1400,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["regarding",{"_index":1146,"title":{},"body":{"index.html":{},"additional-documentation/using-systemjs.html":{}}}],["regards",{"_index":1278,"title":{},"body":{"index.html":{}}}],["regfesh.html",{"_index":1559,"title":{},"body":{"additional-documentation/popup-based-login.html":{}}}],["register",{"_index":1653,"title":{},"body":{"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{}}}],["registerd",{"_index":1193,"title":{},"body":{"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/original-config-api.html":{}}}],["registered",{"_index":612,"title":{},"body":{"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{},"additional-documentation/using-implicit-flow.html":{}}}],["registration_endpoint",{"_index":484,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["related",{"_index":1511,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/original-config-api.html":{}}}],["relations",{"_index":1758,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["release",{"_index":1109,"title":{},"body":{"index.html":{}}}],["removal",{"_index":716,"title":{},"body":{"changelog.html":{}}}],["remove",{"_index":813,"title":{},"body":{"changelog.html":{},"index.html":{}}}],["removed",{"_index":1290,"title":{},"body":{"index.html":{}}}],["removeitem",{"_index":506,"title":{},"body":{"injectables/MemoryStorage.html":{},"classes/OAuthStorage.html":{}}}],["removeitem(key",{"_index":441,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["removing",{"_index":407,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["rendering",{"_index":1669,"title":{"additional-documentation/server-side-rendering.html":{}},"body":{"additional-documentation/server-side-rendering.html":{}}}],["replace",{"_index":955,"title":{},"body":{"changelog.html":{}}}],["replaced",{"_index":840,"title":{},"body":{"changelog.html":{}}}],["replacements",{"_index":709,"title":{},"body":{"changelog.html":{}}}],["replay",{"_index":372,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["represents",{"_index":447,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["req",{"_index":213,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["req.clone",{"_index":270,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["req.headers",{"_index":1544,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["req.headers.set('authorization",{"_index":269,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["req.url.tolowercase",{"_index":243,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["request",{"_index":1207,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["request_object_signing_alg_values_supported",{"_index":497,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["requested",{"_index":1384,"title":{"additional-documentation/preserving-state-(like-the-requested-url).html":{}},"body":{"additional-documentation/preserving-state-(like-the-requested-url).html":{},"additional-documentation/callback-after-login.html":{},"additional-documentation/events.html":{},"additional-documentation/using-password-flow.html":{}}}],["requests",{"_index":944,"title":{},"body":{"changelog.html":{},"index.html":{}}}],["require','jsrsasign",{"_index":1728,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["requirements",{"_index":1395,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["reset",{"_index":1370,"title":{},"body":{"overview.html":{}}}],["resolve",{"_index":1822,"title":{},"body":{"additional-documentation/manually-skipping-login-form.html":{}}}],["resolve(true",{"_index":1826,"title":{},"body":{"additional-documentation/manually-skipping-login-form.html":{}}}],["resolves",{"_index":1605,"title":{},"body":{"additional-documentation/events.html":{}}}],["resource",{"_index":227,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/using-password-flow.html":{}}}],["resources",{"_index":1050,"title":{},"body":{"index.html":{}}}],["resourceserver",{"_index":605,"title":{},"body":{"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{},"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["resourceservererrorhandler",{"_index":611,"title":{},"body":{"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{}}}],["respect",{"_index":1398,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/authorization-servers.html":{}}}],["respective",{"_index":1077,"title":{},"body":{"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["respond",{"_index":1436,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["response",{"_index":455,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"additional-documentation/silent-refresh.html":{}}}],["response_modes_supported",{"_index":488,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["response_types",{"_index":844,"title":{},"body":{"changelog.html":{}}}],["response_types_supported",{"_index":486,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["responsetype",{"_index":826,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["restriction",{"_index":1323,"title":{},"body":{"license.html":{}}}],["result",{"_index":114,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/DateTimeProvider.html":{},"injectables/DefaultHashHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/HashHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthModuleConfig.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerConfig.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/OAuthStorage.html":{},"classes/OAuthSuccessEvent.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"injectables/SystemDateTimeProvider.html":{},"interfaces/TokenResponse.html":{},"injectables/UrlHelperService.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"changelog.html":{},"dependencies.html":{},"miscellaneous/functions.html":{},"index.html":{},"license.html":{},"modules.html":{},"overview.html":{},"miscellaneous/typealiases.html":{},"miscellaneous/variables.html":{},"additional-documentation/getting-started.html":{},"additional-documentation/preserving-state-(like-the-requested-url).html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/callback-after-login.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/custom-query-parameters.html":{},"additional-documentation/events.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/server-side-rendering.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-systemjs.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/manually-skipping-login-form.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers.html":{},"additional-documentation/authorization-servers/using-identity-server.html":{},"additional-documentation/authorization-servers/using-keycloak.html":{},"additional-documentation/authorization-servers/auth0.html":{},"additional-documentation/authorization-servers/azure-ad-(active-directory).html":{}}}],["results",{"_index":116,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/DateTimeProvider.html":{},"injectables/DefaultHashHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/HashHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthModuleConfig.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerConfig.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/OAuthStorage.html":{},"classes/OAuthSuccessEvent.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"injectables/SystemDateTimeProvider.html":{},"interfaces/TokenResponse.html":{},"injectables/UrlHelperService.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"changelog.html":{},"dependencies.html":{},"miscellaneous/functions.html":{},"index.html":{},"license.html":{},"modules.html":{},"overview.html":{},"miscellaneous/typealiases.html":{},"miscellaneous/variables.html":{},"additional-documentation/getting-started.html":{},"additional-documentation/preserving-state-(like-the-requested-url).html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/callback-after-login.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/custom-query-parameters.html":{},"additional-documentation/events.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/server-side-rendering.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-systemjs.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/manually-skipping-login-form.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers.html":{},"additional-documentation/authorization-servers/using-identity-server.html":{},"additional-documentation/authorization-servers/using-keycloak.html":{},"additional-documentation/authorization-servers/auth0.html":{},"additional-documentation/authorization-servers/azure-ad-(active-directory).html":{}}}],["retrieved",{"_index":1599,"title":{},"body":{"additional-documentation/events.html":{}}}],["retrieving",{"_index":362,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["return",{"_index":103,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/DateTimeProvider.html":{},"injectables/DefaultHashHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/HashHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"injectables/SystemDateTimeProvider.html":{},"interfaces/TokenResponse.html":{},"injectables/UrlHelperService.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["returned",{"_index":1468,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["returns",{"_index":43,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/DateTimeProvider.html":{},"injectables/DefaultHashHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/HashHandler.html":{},"classes/JwksValidationHandler.html":{},"injectables/MemoryStorage.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/OAuthStorage.html":{},"injectables/SystemDateTimeProvider.html":{},"injectables/UrlHelperService.html":{},"classes/ValidationHandler.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"miscellaneous/functions.html":{},"additional-documentation/using-password-flow.html":{}}}],["returnto",{"_index":1858,"title":{},"body":{"additional-documentation/authorization-servers/auth0.html":{}}}],["reverse",{"_index":1291,"title":{},"body":{"index.html":{}}}],["revocation",{"_index":892,"title":{},"body":{"changelog.html":{},"index.html":{}}}],["revocation_endpoint",{"_index":504,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["revocationendpoint",{"_index":780,"title":{},"body":{"changelog.html":{}}}],["revoke",{"_index":893,"title":{},"body":{"changelog.html":{},"index.html":{}}}],["revoketokenandlogout",{"_index":733,"title":{},"body":{"changelog.html":{}}}],["rfc",{"_index":939,"title":{},"body":{"changelog.html":{},"index.html":{}}}],["rights",{"_index":1325,"title":{},"body":{"license.html":{}}}],["risk",{"_index":516,"title":{},"body":{"classes/NullValidationHandler.html":{}}}],["robin",{"_index":978,"title":{},"body":{"changelog.html":{}}}],["roblabat",{"_index":954,"title":{},"body":{"changelog.html":{}}}],["root",{"_index":1621,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["rotation",{"_index":1846,"title":{},"body":{"additional-documentation/authorization-servers/auth0.html":{}}}],["route",{"_index":1264,"title":{},"body":{"index.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["router",{"_index":1063,"title":{},"body":{"index.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["routermodule.forroot(app_routes",{"_index":1623,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["routes",{"_index":1620,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["routing",{"_index":914,"title":{"additional-documentation/routing-with-the-hashstrategy.html":{}},"body":{"changelog.html":{},"index.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["run",{"_index":925,"title":{},"body":{"changelog.html":{},"index.html":{}}}],["running",{"_index":833,"title":{},"body":{"changelog.html":{}}}],["runs",{"_index":1158,"title":{},"body":{"index.html":{},"additional-documentation/using-password-flow.html":{}}}],["rxjs",{"_index":219,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"dependencies.html":{}}}],["rxjs/add/operator/catch",{"_index":1538,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["rxjs/observable",{"_index":1537,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["rxjs/operators",{"_index":226,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["s",{"_index":157,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{},"miscellaneous/functions.html":{}}}],["safe",{"_index":1135,"title":{},"body":{"index.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["sake",{"_index":1828,"title":{},"body":{"additional-documentation/original-config-api.html":{}}}],["same",{"_index":349,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["sample",{"_index":879,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/server-side-rendering.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["save",{"_index":308,"title":{},"body":{"classes/JwksValidationHandler.html":{},"changelog.html":{},"miscellaneous/variables.html":{}}}],["saveafter",{"_index":1281,"title":{},"body":{"index.html":{}}}],["saved",{"_index":1600,"title":{},"body":{"additional-documentation/events.html":{}}}],["saveimporting",{"_index":1172,"title":{},"body":{"index.html":{}}}],["scenario",{"_index":1837,"title":{},"body":{"additional-documentation/original-config-api.html":{}}}],["scope",{"_index":465,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["scope/state",{"_index":715,"title":{},"body":{"changelog.html":{}}}],["scopes_supported",{"_index":485,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["script",{"_index":947,"title":{},"body":{"changelog.html":{}}}],["search",{"_index":1460,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["seconds",{"_index":1506,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["secret",{"_index":1197,"title":{},"body":{"index.html":{},"additional-documentation/using-password-flow.html":{}}}],["section",{"_index":1268,"title":{},"body":{"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{}}}],["security",{"_index":382,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/popup-based-login.html":{}}}],["see",{"_index":866,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/events.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/manually-skipping-login-form.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["selector",{"_index":1734,"title":{},"body":{"additional-documentation/using-implicit-flow.html":{}}}],["sell",{"_index":1331,"title":{},"body":{"license.html":{}}}],["semantic",{"_index":1009,"title":{},"body":{"dependencies.html":{}}}],["send",{"_index":613,"title":{},"body":{"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{}}}],["sendaccesstoken",{"_index":248,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{},"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["sending",{"_index":731,"title":{},"body":{"changelog.html":{}}}],["sends",{"_index":1652,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["sense",{"_index":904,"title":{},"body":{"changelog.html":{},"additional-documentation/using-password-flow.html":{}}}],["separatorindex",{"_index":656,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["server",{"_index":228,"title":{"additional-documentation/server-side-rendering.html":{},"additional-documentation/authorization-servers/using-identity-server.html":{}},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/server-side-rendering.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/manually-skipping-login-form.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers/using-identity-server.html":{}}}],["server's",{"_index":1152,"title":{},"body":{"index.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{}}}],["server.azurewebsites.net/identity",{"_index":1442,"title":{},"body":{"additional-documentation/silent-refresh.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["server.azurewebsites.net/identity/.well",{"_index":1775,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["server.azurewebsites.net/identity/connect/authorize",{"_index":1680,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{}}}],["server.azurewebsites.net/identity/connect/endsession",{"_index":1689,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{}}}],["server.azurewebsites.net/identity/connect/token",{"_index":1779,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["server.azurewebsites.net/identity/connect/userinfo",{"_index":1783,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["server.code",{"_index":1195,"title":{},"body":{"index.html":{}}}],["servers",{"_index":1234,"title":{"additional-documentation/authorization-servers.html":{}},"body":{"index.html":{},"additional-documentation/authorization-servers.html":{}}}],["service",{"_index":233,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"modules/OAuthModule.html":{},"changelog.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/events.html":{}}}],["service_documentation",{"_index":502,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["session",{"_index":765,"title":{"additional-documentation/session-checks.html":{}},"body":{"changelog.html":{},"additional-documentation/events.html":{},"additional-documentation/session-checks.html":{}}}],["session's",{"_index":1660,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["session_changed",{"_index":544,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["session_error",{"_index":545,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{},"additional-documentation/events.html":{}}}],["session_state",{"_index":916,"title":{},"body":{"changelog.html":{}}}],["session_terminated",{"_index":546,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{},"additional-documentation/session-checks.html":{}}}],["session_terminated')).subscribe(e",{"_index":1666,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["session_unchanged",{"_index":547,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["sessionchecksenabled",{"_index":1656,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["sessionstorage",{"_index":436,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"index.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["set",{"_index":351,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/custom-query-parameters.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["set('authorization",{"_index":1545,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["setitem",{"_index":507,"title":{},"body":{"injectables/MemoryStorage.html":{},"classes/OAuthStorage.html":{}}}],["setitem(key",{"_index":442,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["sets",{"_index":1564,"title":{},"body":{"additional-documentation/popup-based-login.html":{}}}],["setstorage",{"_index":1684,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{}}}],["setting",{"_index":876,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["settings",{"_index":1566,"title":{},"body":{"additional-documentation/popup-based-login.html":{},"additional-documentation/authorization-servers.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["setup",{"_index":1259,"title":{},"body":{"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["several",{"_index":1699,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["sha",{"_index":112,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"changelog.html":{}}}],["sha256",{"_index":146,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{},"changelog.html":{},"dependencies.html":{},"miscellaneous/variables.html":{}}}],["sha256(accesstoken",{"_index":90,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["shaking",{"_index":1280,"title":{},"body":{"index.html":{}}}],["shall",{"_index":1339,"title":{},"body":{"license.html":{}}}],["share",{"_index":1697,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["sharing",{"_index":1722,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["ship",{"_index":1759,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["short",{"_index":1582,"title":{},"body":{"additional-documentation/events.html":{},"additional-documentation/using-password-flow.html":{}}}],["showdebuginformation",{"_index":1217,"title":{},"body":{"index.html":{}}}],["shown",{"_index":1224,"title":{},"body":{"index.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/authorization-servers/using-identity-server.html":{},"additional-documentation/authorization-servers/using-keycloak.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["shows",{"_index":1523,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/server-side-rendering.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/authorization-servers.html":{}}}],["side",{"_index":434,"title":{"additional-documentation/server-side-rendering.html":{}},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"index.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/server-side-rendering.html":{}}}],["sign",{"_index":728,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["signature",{"_index":67,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"index.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["signs",{"_index":1643,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["silent",{"_index":343,"title":{"additional-documentation/silent-refresh.html":{}},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/events.html":{},"additional-documentation/session-checks.html":{}}}],["silent_refresh_error",{"_index":539,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["silent_refresh_timeout",{"_index":541,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{},"additional-documentation/events.html":{}}}],["silently_refreshed",{"_index":540,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{},"additional-documentation/events.html":{}}}],["silentrefresh",{"_index":1492,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["silentrefreshredirecturi",{"_index":1439,"title":{},"body":{"additional-documentation/silent-refresh.html":{},"additional-documentation/session-checks.html":{}}}],["silentrefreshtimeout",{"_index":1503,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["similar",{"_index":1764,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["simple",{"_index":430,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/silent-refresh.html":{}}}],["single",{"_index":316,"title":{},"body":{"classes/JwksValidationHandler.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-implicit-flow.html":{}}}],["site",{"_index":883,"title":{},"body":{"changelog.html":{},"index.html":{}}}],["size",{"_index":1108,"title":{},"body":{"index.html":{}}}],["sizes",{"_index":321,"title":{},"body":{"classes/JwksValidationHandler.html":{},"index.html":{},"miscellaneous/variables.html":{}}}],["skip",{"_index":515,"title":{},"body":{"classes/NullValidationHandler.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/using-password-flow.html":{}}}],["skipping",{"_index":1805,"title":{"additional-documentation/manually-skipping-login-form.html":{}},"body":{"additional-documentation/manually-skipping-login-form.html":{}}}],["skips",{"_index":1636,"title":{},"body":{"additional-documentation/adapt-id_token-validation.html":{}}}],["smaller",{"_index":319,"title":{},"body":{"classes/JwksValidationHandler.html":{},"index.html":{},"miscellaneous/variables.html":{}}}],["snippet",{"_index":1583,"title":{},"body":{"additional-documentation/events.html":{},"additional-documentation/using-implicit-flow.html":{}}}],["software",{"_index":1318,"title":{},"body":{"license.html":{}}}],["solution",{"_index":1186,"title":{},"body":{"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["something",{"_index":1814,"title":{},"body":{"additional-documentation/manually-skipping-login-form.html":{}}}],["somevalue",{"_index":1575,"title":{},"body":{"additional-documentation/custom-query-parameters.html":{}}}],["source",{"_index":4,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/DateTimeProvider.html":{},"injectables/DefaultHashHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/HashHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthModuleConfig.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerConfig.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/OAuthStorage.html":{},"classes/OAuthSuccessEvent.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"injectables/SystemDateTimeProvider.html":{},"interfaces/TokenResponse.html":{},"injectables/UrlHelperService.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"index.html":{}}}],["sources",{"_index":1051,"title":{},"body":{"index.html":{}}}],["spa",{"_index":1165,"title":{},"body":{"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["spa's",{"_index":1192,"title":{},"body":{"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["spas",{"_index":1199,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{}}}],["spec",{"_index":1603,"title":{},"body":{"additional-documentation/events.html":{},"additional-documentation/session-checks.html":{}}}],["special",{"_index":1842,"title":{},"body":{"additional-documentation/authorization-servers.html":{}}}],["specific",{"_index":1214,"title":{},"body":{"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["specification",{"_index":1707,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["specifies",{"_index":1393,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["specs",{"_index":1147,"title":{},"body":{"index.html":{},"additional-documentation/authorization-servers.html":{}}}],["src",{"_index":1126,"title":{},"body":{"index.html":{}}}],["standard",{"_index":867,"title":{},"body":{"changelog.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/using-password-flow.html":{}}}],["start",{"_index":1713,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["started",{"_index":689,"title":{"changelog.html":{},"index.html":{},"license.html":{},"additional-documentation/getting-started.html":{}},"body":{"additional-documentation/getting-started.html":{}}}],["starting",{"_index":1570,"title":{},"body":{"additional-documentation/custom-query-parameters.html":{}}}],["starts",{"_index":1732,"title":{},"body":{"additional-documentation/using-implicit-flow.html":{}}}],["startup",{"_index":1761,"title":{},"body":{"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["state",{"_index":379,"title":{"additional-documentation/preserving-state-(like-the-requested-url).html":{}},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"additional-documentation/preserving-state-(like-the-requested-url).html":{},"additional-documentation/events.html":{}}}],["static",{"_index":573,"title":{},"body":{"modules/OAuthModule.html":{}}}],["status",{"_index":1514,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["steyer",{"_index":974,"title":{},"body":{"changelog.html":{},"license.html":{}}}],["still",{"_index":1433,"title":{},"body":{"additional-documentation/silent-refresh.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["stopautomaticrefresh",{"_index":871,"title":{},"body":{"changelog.html":{}}}],["stops",{"_index":872,"title":{},"body":{"changelog.html":{}}}],["storage",{"_index":431,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["storagefactory",{"_index":1803,"title":{},"body":{"additional-documentation/configure-custom-oauthstorage.html":{}}}],["store",{"_index":1232,"title":{},"body":{"index.html":{}}}],["stored",{"_index":1606,"title":{},"body":{"additional-documentation/events.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["storing",{"_index":432,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["str",{"_index":1033,"title":{},"body":{"miscellaneous/functions.html":{},"additional-documentation/silent-refresh.html":{}}}],["strategy",{"_index":1421,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["stream",{"_index":1579,"title":{},"body":{"additional-documentation/events.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["strict",{"_index":1836,"title":{},"body":{"additional-documentation/original-config-api.html":{}}}],["strictdiscoverydocumentvalidation",{"_index":1694,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["string",{"_index":28,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"injectables/DefaultHashHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/HashHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"injectables/UrlHelperService.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"miscellaneous/functions.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/events.html":{}}}],["string.fromcharcode(e",{"_index":183,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["strong",{"_index":1756,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["sub",{"_index":469,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["subject",{"_index":1336,"title":{},"body":{"license.html":{}}}],["subject_types_supported",{"_index":490,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["sublicense",{"_index":1329,"title":{},"body":{"license.html":{}}}],["substantial",{"_index":1340,"title":{},"body":{"license.html":{}}}],["succeeded",{"_index":1386,"title":{},"body":{"additional-documentation/preserving-state-(like-the-requested-url).html":{}}}],["successful",{"_index":1548,"title":{},"body":{"additional-documentation/callback-after-login.html":{}}}],["successfully",{"_index":396,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"index.html":{},"additional-documentation/events.html":{}}}],["such",{"_index":1204,"title":{},"body":{"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/using-password-flow.html":{}}}],["sufficient",{"_index":1457,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["suited",{"_index":1755,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["summary.json",{"_index":1129,"title":{},"body":{"index.html":{}}}],["super",{"_index":322,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["super(type",{"_index":555,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{}}}],["support",{"_index":752,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/authorization-servers.html":{}}}],["supported",{"_index":111,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"index.html":{},"additional-documentation/original-config-api.html":{}}}],["supports",{"_index":1179,"title":{},"body":{"index.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/session-checks.html":{}}}],["sure",{"_index":1128,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/popup-based-login.html":{}}}],["switching",{"_index":1253,"title":{},"body":{"index.html":{}}}],["symbol",{"_index":352,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["system.config",{"_index":1718,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["systemdatetimeprovider",{"_index":128,"title":{"injectables/SystemDateTimeProvider.html":{}},"body":{"classes/DateTimeProvider.html":{},"modules/OAuthModule.html":{},"injectables/SystemDateTimeProvider.html":{}}}],["systemjs",{"_index":1714,"title":{"additional-documentation/using-systemjs.html":{}},"body":{"additional-documentation/using-systemjs.html":{}}}],["table",{"_index":816,"title":{},"body":{"changelog.html":{}}}],["take",{"_index":223,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/refreshing-a-token.html":{}}}],["take(1",{"_index":265,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["takes",{"_index":1459,"title":{},"body":{"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/events.html":{}}}],["targeting",{"_index":1560,"title":{},"body":{"additional-documentation/popup-based-login.html":{}}}],["task",{"_index":1252,"title":{},"body":{"index.html":{},"additional-documentation/silent-refresh.html":{}}}],["tasks",{"_index":1577,"title":{},"body":{"additional-documentation/events.html":{}}}],["telling",{"_index":276,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["tells",{"_index":1242,"title":{},"body":{"index.html":{}}}],["template",{"_index":1747,"title":{},"body":{"additional-documentation/using-implicit-flow.html":{}}}],["templateurl",{"_index":1736,"title":{},"body":{"additional-documentation/using-implicit-flow.html":{}}}],["tenant",{"_index":1572,"title":{},"body":{"additional-documentation/custom-query-parameters.html":{}}}],["terminated",{"_index":1668,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["tested",{"_index":1059,"title":{},"body":{"index.html":{}}}],["testen",{"_index":1751,"title":{},"body":{"additional-documentation/using-implicit-flow.html":{}}}],["testing",{"_index":1043,"title":{},"body":{"index.html":{}}}],["tests",{"_index":712,"title":{},"body":{"changelog.html":{}}}],["text",{"_index":1014,"title":{},"body":{"dependencies.html":{}}}],["textencoder",{"_index":165,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["thanks",{"_index":965,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/using-systemjs.html":{}}}],["that's",{"_index":1771,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["then(info",{"_index":1493,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["things",{"_index":1557,"title":{},"body":{"additional-documentation/popup-based-login.html":{}}}],["third",{"_index":1419,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{}}}],["this.authservice.events.subscribe(event",{"_index":1591,"title":{},"body":{"additional-documentation/events.html":{}}}],["this.authstorage.getitem('access_token",{"_index":1543,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["this.calchash(params.accesstoken",{"_index":89,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["this.checkurl(url",{"_index":246,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["this.configure",{"_index":1738,"title":{},"body":{"additional-documentation/using-implicit-flow.html":{}}}],["this.data.delete(key",{"_index":445,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["this.data.get(key",{"_index":444,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["this.data.set(key",{"_index":446,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["this.document",{"_index":841,"title":{},"body":{"changelog.html":{}}}],["this.errorhandler.handleerror(err",{"_index":252,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["this.inferhashalgorithm(params.idtokenheader",{"_index":86,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["this.moduleconfig",{"_index":244,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["this.moduleconfig.resourceserver",{"_index":245,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["this.moduleconfig.resourceserver.allowedurls",{"_index":239,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["this.moduleconfig.resourceserver.allowedurls.find((u",{"_index":240,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["this.moduleconfig.resourceserver.allowedurls.find(u",{"_index":1541,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["this.moduleconfig.resourceserver.customurlvalidation",{"_index":237,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["this.moduleconfig.resourceserver.customurlvalidation(url",{"_index":238,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["this.moduleconfig.resourceserver.sendaccesstoken",{"_index":249,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["this.oauthservice",{"_index":1809,"title":{},"body":{"additional-documentation/manually-skipping-login-form.html":{}}}],["this.oauthservice.clientid",{"_index":1682,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["this.oauthservice.configure(authcodeflowconfig",{"_index":1229,"title":{},"body":{"index.html":{}}}],["this.oauthservice.configure(authconfig",{"_index":1739,"title":{},"body":{"additional-documentation/using-implicit-flow.html":{}}}],["this.oauthservice.customqueryparams",{"_index":1571,"title":{},"body":{"additional-documentation/custom-query-parameters.html":{}}}],["this.oauthservice.dummyclientsecret",{"_index":1772,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["this.oauthservice.events(filter(e",{"_index":1816,"title":{},"body":{"additional-documentation/manually-skipping-login-form.html":{}}}],["this.oauthservice.events.pipe",{"_index":255,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["this.oauthservice.events.pipe(filter(e",{"_index":1665,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["this.oauthservice.events.subscribe(e",{"_index":1584,"title":{},"body":{"additional-documentation/events.html":{}}}],["this.oauthservice.fetchtokenusingpasswordflow('max",{"_index":1788,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["this.oauthservice.fetchtokenusingpasswordflowandloaduserprofile('max",{"_index":1793,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["this.oauthservice.getaccesstoken",{"_index":263,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["this.oauthservice.getidentityclaims",{"_index":1745,"title":{},"body":{"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{}}}],["this.oauthservice.hasvalidaccesstoken",{"_index":1819,"title":{},"body":{"additional-documentation/manually-skipping-login-form.html":{}}}],["this.oauthservice.hasvalididtoken",{"_index":1820,"title":{},"body":{"additional-documentation/manually-skipping-login-form.html":{}}}],["this.oauthservice.initcodeflow();there",{"_index":1219,"title":{},"body":{"index.html":{}}}],["this.oauthservice.initimplicitflow('http://www.myurl.com/x/y/z');after",{"_index":1385,"title":{},"body":{"additional-documentation/preserving-state-(like-the-requested-url).html":{}}}],["this.oauthservice.initloginflow",{"_index":1742,"title":{},"body":{"additional-documentation/using-implicit-flow.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["this.oauthservice.initloginflow();also",{"_index":1223,"title":{},"body":{"index.html":{}}}],["this.oauthservice.issuer",{"_index":1831,"title":{},"body":{"additional-documentation/original-config-api.html":{}}}],["this.oauthservice.loaddiscoverydocument().then",{"_index":1832,"title":{},"body":{"additional-documentation/original-config-api.html":{}}}],["this.oauthservice.loaddiscoverydocument(url).then",{"_index":1777,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["this.oauthservice.loaddiscoverydocumentandlogin",{"_index":1243,"title":{},"body":{"index.html":{}}}],["this.oauthservice.loaddiscoverydocumentandtrylogin",{"_index":1244,"title":{},"body":{"index.html":{},"additional-documentation/using-implicit-flow.html":{}}}],["this.oauthservice.loaddiscoverydocumentandtrylogin();logging",{"_index":1230,"title":{},"body":{"index.html":{}}}],["this.oauthservice.loaduserprofile",{"_index":1791,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["this.oauthservice.loginurl",{"_index":1679,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{}}}],["this.oauthservice.logout",{"_index":1744,"title":{},"body":{"additional-documentation/using-implicit-flow.html":{}}}],["this.oauthservice.logout();if",{"_index":1236,"title":{},"body":{"index.html":{}}}],["this.oauthservice.logouturl",{"_index":1688,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{}}}],["this.oauthservice.redirecturi",{"_index":1681,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["this.oauthservice.refreshtoken().then",{"_index":1797,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["this.oauthservice.refreshtoken();automatically",{"_index":1401,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["this.oauthservice.revoketokenandlogout",{"_index":1859,"title":{},"body":{"additional-documentation/authorization-servers/auth0.html":{}}}],["this.oauthservice.revoketokenandlogout();skipping",{"_index":1238,"title":{},"body":{"index.html":{}}}],["this.oauthservice.scope",{"_index":1683,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["this.oauthservice.setstorage(sessionstorage",{"_index":1686,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{}}}],["this.oauthservice.setupautomaticsilentrefresh();by",{"_index":1403,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{}}}],["this.oauthservice.silentrefreshredirecturi",{"_index":1448,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["this.oauthservice.tokenendpoint",{"_index":1778,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["this.oauthservice.tokenvalidationhandler",{"_index":1637,"title":{},"body":{"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/using-implicit-flow.html":{}}}],["this.oauthservice.trylogin",{"_index":1387,"title":{},"body":{"additional-documentation/preserving-state-(like-the-requested-url).html":{},"additional-documentation/callback-after-login.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{}}}],["this.oauthservice.trylogin().then(_",{"_index":1626,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["this.oauthservice.userinfoendpoint",{"_index":1782,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["this.parsequerystring(hash",{"_index":653,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["this.router.navigate",{"_index":1627,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["this.tohashstring(hasharray",{"_index":176,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["this.tohashstring2(hasharray",{"_index":177,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["this.window.addeventlistener('unload",{"_index":1825,"title":{},"body":{"additional-documentation/manually-skipping-login-form.html":{}}}],["those",{"_index":1399,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["three",{"_index":1444,"title":{},"body":{"additional-documentation/silent-refresh.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["through",{"_index":421,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["throw",{"_index":108,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["throwerror",{"_index":621,"title":{},"body":{"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{}}}],["throwerror(err",{"_index":622,"title":{},"body":{"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{}}}],["time",{"_index":119,"title":{},"body":{"classes/DateTimeProvider.html":{},"modules/OAuthModule.html":{},"injectables/SystemDateTimeProvider.html":{},"changelog.html":{},"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["timeout",{"_index":225,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/silent-refresh.html":{}}}],["timeout(this.oauthservice.waitfortokeninmsec",{"_index":259,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["timeoutfactor",{"_index":1411,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{}}}],["timer",{"_index":1607,"title":{},"body":{"additional-documentation/events.html":{}}}],["timers",{"_index":873,"title":{},"body":{"changelog.html":{}}}],["timespan",{"_index":1502,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["together",{"_index":1670,"title":{},"body":{"additional-documentation/server-side-rendering.html":{}}}],["tohashstring",{"_index":134,"title":{},"body":{"injectables/DefaultHashHandler.html":{}}}],["tohashstring(buffer",{"_index":137,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["tohashstring(hexstring",{"_index":193,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["tohashstring2",{"_index":135,"title":{},"body":{"injectables/DefaultHashHandler.html":{}}}],["tohashstring2(bytearray",{"_index":141,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["token",{"_index":254,"title":{"additional-documentation/refreshing-a-token.html":{}},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/events.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/manually-skipping-login-form.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["token's",{"_index":1406,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{}}}],["token(s",{"_index":403,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/events.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{}}}],["token.html",{"_index":1262,"title":{},"body":{"index.html":{}}}],["token_endpoint",{"_index":477,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["token_endpoint_auth_methods_supported",{"_index":478,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["token_endpoint_auth_signing_alg_values_supported",{"_index":479,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["token_error",{"_index":535,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["token_expires",{"_index":543,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["token_received",{"_index":258,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{},"additional-documentation/events.html":{}}}],["token_received')).subscribe",{"_index":1817,"title":{},"body":{"additional-documentation/manually-skipping-login-form.html":{}}}],["token_refresh_error",{"_index":538,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["token_refreshed",{"_index":537,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["token_revoke_error",{"_index":551,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["token_type",{"_index":462,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["token_validation_error",{"_index":542,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["tokenhash",{"_index":87,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["tokenhash.length",{"_index":95,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["tokenhash.substr(0",{"_index":94,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["tokenresponse",{"_index":461,"title":{"interfaces/TokenResponse.html":{}},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{}}}],["tokens",{"_index":83,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"changelog.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/events.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["tokensetup",{"_index":926,"title":{},"body":{"changelog.html":{}}}],["tokenvalidationhandler",{"_index":412,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["tokenvalidator",{"_index":1631,"title":{},"body":{"additional-documentation/adapt-id_token-validation.html":{}}}],["tort",{"_index":1362,"title":{},"body":{"license.html":{}}}],["transmit",{"_index":1768,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["transmitted",{"_index":1569,"title":{},"body":{"additional-documentation/custom-query-parameters.html":{}}}],["transmitting",{"_index":1509,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["tree",{"_index":1279,"title":{},"body":{"index.html":{}}}],["tries",{"_index":1690,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{}}}],["triggers",{"_index":1418,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{}}}],["true",{"_index":92,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"changelog.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["true);the",{"_index":1860,"title":{},"body":{"additional-documentation/authorization-servers/auth0.html":{}}}],["trust",{"_index":1757,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["try",{"_index":1104,"title":{},"body":{"index.html":{},"additional-documentation/callback-after-login.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/manually-skipping-login-form.html":{},"additional-documentation/original-config-api.html":{}}}],["trylogin",{"_index":328,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/events.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["trylogincodeflow",{"_index":953,"title":{},"body":{"changelog.html":{}}}],["ts",{"_index":1685,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{}}}],["tsickle",{"_index":1017,"title":{},"body":{"dependencies.html":{}}}],["tslib",{"_index":1019,"title":{},"body":{"dependencies.html":{}}}],["turn",{"_index":1712,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/original-config-api.html":{}}}],["tutorial",{"_index":1298,"title":{},"body":{"index.html":{}}}],["tutorials",{"_index":1297,"title":{},"body":{"index.html":{}}}],["two",{"_index":1556,"title":{},"body":{"additional-documentation/popup-based-login.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["type",{"_index":40,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"injectables/DefaultHashHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/HashHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthModuleConfig.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerConfig.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/OAuthStorage.html":{},"classes/OAuthSuccessEvent.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"injectables/UrlHelperService.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"changelog.html":{},"miscellaneous/typealiases.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{}}}],["typealiases",{"_index":1372,"title":{"miscellaneous/typealiases.html":{}},"body":{}}],["typeerror('expected",{"_index":158,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["typeof",{"_index":156,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["types",{"_index":581,"title":{},"body":{"modules/OAuthModule.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["typo",{"_index":837,"title":{},"body":{"changelog.html":{}}}],["ui_locales_supported",{"_index":503,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["uint8array(buffer",{"_index":184,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["uint8array(d.length",{"_index":162,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["unchanged",{"_index":764,"title":{},"body":{"changelog.html":{}}}],["under",{"_index":1565,"title":{},"body":{"additional-documentation/popup-based-login.html":{}}}],["unfortunately",{"_index":1662,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["universal",{"_index":834,"title":{},"body":{"changelog.html":{}}}],["up",{"_index":1245,"title":{},"body":{"index.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["upcoming",{"_index":1039,"title":{},"body":{"index.html":{}}}],["update",{"_index":720,"title":{},"body":{"changelog.html":{},"index.html":{}}}],["upgrade",{"_index":897,"title":{},"body":{"changelog.html":{}}}],["upgrading",{"_index":1293,"title":{},"body":{"index.html":{}}}],["uri",{"_index":361,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["url",{"_index":242,"title":{"additional-documentation/preserving-state-(like-the-requested-url).html":{}},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"index.html":{},"additional-documentation/preserving-state-(like-the-requested-url).html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/manually-skipping-login-form.html":{},"additional-documentation/original-config-api.html":{}}}],["url.startswith(u",{"_index":1542,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["url.tolowercase().startswith(u.tolowercase",{"_index":241,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["url?x=1",{"_index":920,"title":{},"body":{"changelog.html":{}}}],["urlhelperservice",{"_index":586,"title":{"injectables/UrlHelperService.html":{}},"body":{"modules/OAuthModule.html":{},"injectables/UrlHelperService.html":{}}}],["urls",{"_index":608,"title":{},"body":{"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{},"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["usage",{"_index":952,"title":{},"body":{"changelog.html":{}}}],["use",{"_index":18,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"changelog.html":{},"index.html":{},"license.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/events.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/manually-skipping-login-form.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["usecase",{"_index":1213,"title":{},"body":{"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["useclass",{"_index":600,"title":{},"body":{"modules/OAuthModule.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["used",{"_index":340,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthLogger.html":{},"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"index.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/server-side-rendering.html":{},"additional-documentation/using-password-flow.html":{}}}],["usefactory",{"_index":599,"title":{},"body":{"modules/OAuthModule.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["usehash",{"_index":1624,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["user",{"_index":466,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/manually-skipping-login-form.html":{},"additional-documentation/original-config-api.html":{}}}],["user's",{"_index":1786,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["user_profile_load_error",{"_index":534,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["user_profile_loaded",{"_index":533,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{},"additional-documentation/events.html":{}}}],["userinfo",{"_index":468,"title":{"interfaces/UserInfo.html":{}},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"index.html":{}}}],["userinfo_encryption_alg_values_supported",{"_index":492,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["userinfo_encryption_enc_values_supported",{"_index":493,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["userinfo_endpoint",{"_index":480,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["userinfo_signing_alg_values_supported",{"_index":491,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["username/password",{"_index":1160,"title":{},"body":{"index.html":{}}}],["username/passwort",{"_index":1749,"title":{},"body":{"additional-documentation/using-implicit-flow.html":{}}}],["users",{"_index":277,"title":{},"body":{"classes/JwksValidationHandler.html":{},"additional-documentation/server-side-rendering.html":{}}}],["uses",{"_index":416,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/original-config-api.html":{}}}],["usesilentrefresh",{"_index":877,"title":{},"body":{"changelog.html":{},"additional-documentation/silent-refresh.html":{}}}],["usevalue",{"_index":601,"title":{},"body":{"modules/OAuthModule.html":{}}}],["using",{"_index":36,"title":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-systemjs.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/authorization-servers/using-identity-server.html":{},"additional-documentation/authorization-servers/using-keycloak.html":{}},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"changelog.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/events.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-systemjs.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/manually-skipping-login-form.html":{},"additional-documentation/authorization-servers.html":{},"additional-documentation/authorization-servers/using-identity-server.html":{},"additional-documentation/authorization-servers/using-keycloak.html":{},"additional-documentation/authorization-servers/auth0.html":{},"additional-documentation/authorization-servers/azure-ad-(active-directory).html":{}}}],["utils",{"_index":286,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["v",{"_index":679,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["valid",{"_index":1248,"title":{},"body":{"index.html":{}}}],["validate",{"_index":82,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["validateathash",{"_index":16,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/NullValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["validateathash(params",{"_index":56,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["validateathash(validationparams",{"_index":289,"title":{},"body":{"classes/JwksValidationHandler.html":{},"classes/NullValidationHandler.html":{},"classes/ValidationHandler.html":{}}}],["validated",{"_index":397,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/callback-after-login.html":{}}}],["validates",{"_index":59,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["validatesignature",{"_index":26,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/NullValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["validatesignature(validationparams",{"_index":65,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/NullValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["validating",{"_index":513,"title":{},"body":{"classes/NullValidationHandler.html":{},"index.html":{}}}],["validation",{"_index":274,"title":{"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}},"body":{"classes/JwksValidationHandler.html":{},"classes/NullValidationHandler.html":{},"modules/OAuthModule.html":{},"changelog.html":{},"miscellaneous/variables.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/original-config-api.html":{}}}],["validation/hash",{"_index":133,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{},"modules/OAuthModule.html":{},"miscellaneous/functions.html":{},"miscellaneous/variables.html":{}}}],["validation/jwks",{"_index":273,"title":{},"body":{"classes/JwksValidationHandler.html":{},"miscellaneous/variables.html":{}}}],["validation/null",{"_index":511,"title":{},"body":{"classes/NullValidationHandler.html":{},"modules/OAuthModule.html":{}}}],["validation/validation",{"_index":7,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"modules/OAuthModule.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["validationhandler",{"_index":12,"title":{"classes/ValidationHandler.html":{}},"body":{"classes/AbstractValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["validationhandlerclass",{"_index":576,"title":{},"body":{"modules/OAuthModule.html":{}}}],["validationparams",{"_index":57,"title":{"interfaces/ValidationParams.html":{}},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/NullValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["validations",{"_index":1149,"title":{},"body":{"index.html":{}}}],["value",{"_index":35,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/LoginOptions.html":{},"modules/OAuthModule.html":{},"injectables/UrlHelperService.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"miscellaneous/variables.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/original-config-api.html":{}}}],["value.tostring(16",{"_index":189,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["values",{"_index":409,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["valuetohash",{"_index":42,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["var",{"_index":159,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{},"additional-documentation/silent-refresh.html":{}}}],["variables",{"_index":1375,"title":{"miscellaneous/variables.html":{}},"body":{"miscellaneous/variables.html":{}}}],["various",{"_index":1705,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["vdveer",{"_index":961,"title":{},"body":{"changelog.html":{}}}],["versatility",{"_index":1258,"title":{},"body":{"index.html":{}}}],["version",{"_index":299,"title":{},"body":{"classes/JwksValidationHandler.html":{},"changelog.html":{},"dependencies.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/events.html":{},"additional-documentation/session-checks.html":{}}}],["versions",{"_index":1095,"title":{},"body":{"index.html":{}}}],["via",{"_index":1068,"title":{},"body":{"index.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/events.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["vital",{"_index":1203,"title":{},"body":{"index.html":{}}}],["void",{"_index":414,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["voucher",{"_index":1446,"title":{},"body":{"additional-documentation/silent-refresh.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["want",{"_index":400,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"index.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["warn",{"_index":561,"title":{},"body":{"classes/OAuthLogger.html":{}}}],["warn(message",{"_index":428,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["warning",{"_index":1639,"title":{},"body":{"additional-documentation/adapt-id_token-validation.html":{}}}],["warranties",{"_index":1347,"title":{},"body":{"license.html":{}}}],["warranty",{"_index":1342,"title":{},"body":{"license.html":{}}}],["way",{"_index":901,"title":{},"body":{"changelog.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["we've",{"_index":1070,"title":{},"body":{"index.html":{}}}],["web",{"_index":1157,"title":{},"body":{"index.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{}}}],["webcomponents/custom",{"_index":998,"title":{},"body":{"dependencies.html":{}}}],["webhttpurlencodingcodec",{"_index":664,"title":{"classes/WebHttpUrlEncodingCodec.html":{}},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["webpack",{"_index":1069,"title":{},"body":{"index.html":{}}}],["websocket",{"_index":798,"title":{},"body":{"changelog.html":{}}}],["well",{"_index":420,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/callback-after-login.html":{}}}],["when/some",{"_index":1141,"title":{},"body":{"index.html":{}}}],["whenever",{"_index":1598,"title":{},"body":{"additional-documentation/events.html":{}}}],["whether",{"_index":1359,"title":{},"body":{"license.html":{}}}],["white",{"_index":1519,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["widow",{"_index":1473,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["window",{"_index":774,"title":{},"body":{"changelog.html":{}}}],["window.crypto.subtle.digest(algorithm",{"_index":167,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["window.location.hash",{"_index":646,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["window.location.origin",{"_index":1190,"title":{},"body":{"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["window.opener",{"_index":1453,"title":{},"body":{"additional-documentation/silent-refresh.html":{},"additional-documentation/popup-based-login.html":{}}}],["window.parent",{"_index":1563,"title":{},"body":{"additional-documentation/popup-based-login.html":{}}}],["window.parent).postmessage(location.hash",{"_index":1454,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["windowref",{"_index":770,"title":{},"body":{"changelog.html":{}}}],["wish",{"_index":1813,"title":{},"body":{"additional-documentation/manually-skipping-login-form.html":{}}}],["within",{"_index":1423,"title":{},"body":{"additional-documentation/silent-refresh.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{}}}],["without",{"_index":1322,"title":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{}},"body":{"license.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{}}}],["work",{"_index":887,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/authorization-servers.html":{},"additional-documentation/authorization-servers/using-identity-server.html":{},"additional-documentation/authorization-servers/using-keycloak.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["working",{"_index":962,"title":{"additional-documentation/working-with-httpinterceptors.html":{}},"body":{"changelog.html":{}}}],["works",{"_index":1800,"title":{},"body":{"additional-documentation/configure-custom-oauthstorage.html":{}}}],["workshops",{"_index":1306,"title":{},"body":{"index.html":{}}}],["write",{"_index":1528,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["ws02",{"_index":1702,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["yes",{"_index":563,"title":{},"body":{"classes/OAuthLogger.html":{},"injectables/UrlHelperService.html":{}}}],["you're",{"_index":1292,"title":{},"body":{"index.html":{}}}],["you've",{"_index":1740,"title":{},"body":{"additional-documentation/using-implicit-flow.html":{}}}],["yourself",{"_index":1834,"title":{},"body":{"additional-documentation/original-config-api.html":{}}}],["zone.js",{"_index":1020,"title":{},"body":{"dependencies.html":{}}}],["zoom",{"_index":1369,"title":{},"body":{"overview.html":{}}}],["zum",{"_index":1750,"title":{},"body":{"additional-documentation/using-implicit-flow.html":{}}}]],"pipeline":["stemmer"]}, - "store": {"classes/AbstractValidationHandler.html":{"url":"classes/AbstractValidationHandler.html","title":"class - AbstractValidationHandler","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n AbstractValidationHandler\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/token-validation/validation-handler.ts\n \n\n\n \n Description\n \n \n This abstract implementation of ValidationHandler already implements\nthe method validateAtHash. However, to make use of it,\nyou have to override the method calcHash.\n\n \n\n\n \n Implements\n \n \n ValidationHandler\n \n\n\n \n Index\n \n \n\n \n \n Methods\n \n \n \n \n \n \n Protected\n Abstract\n calcHash\n \n \n Protected\n inferHashAlgorithm\n \n \n Async\n validateAtHash\n \n \n Abstract\n validateSignature\n \n \n \n \n\n\n\n\n\n \n \n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n Protected\n Abstract\n calcHash\n \n \n \n \n \n \n \n calcHash(valueToHash: string, algorithm: string)\n \n \n\n\n \n \n Defined in projects/lib/src/token-validation/validation-handler.ts:88\n \n \n\n\n \n \n Calculates the hash for the passed value by using\nthe passed hash algorithm.\n\n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n valueToHash\n \n string\n \n\n \n No\n \n\n\n \n \n algorithm\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : Promise\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Protected\n inferHashAlgorithm\n \n \n \n \n \n \n \n inferHashAlgorithm(jwtHeader: object)\n \n \n\n\n \n \n Defined in projects/lib/src/token-validation/validation-handler.ts:71\n \n \n\n\n \n \n Infers the name of the hash algorithm to use\nfrom the alg field of an id_token.\n\n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n Description\n \n \n \n \n jwtHeader\n \n object\n \n\n \n No\n \n\n\n \n the id_token's parsed header\n\n \n \n \n \n \n \n \n \n Returns : string\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Async\n validateAtHash\n \n \n \n \n \n \n \n validateAtHash(params: ValidationParams)\n \n \n\n\n \n \n Defined in projects/lib/src/token-validation/validation-handler.ts:46\n \n \n\n\n \n \n Validates the at_hash in an id_token against the received access_token.\n\n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n params\n \n ValidationParams\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : Promise\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Abstract\n validateSignature\n \n \n \n \n \n \n \n validateSignature(validationParams: ValidationParams)\n \n \n\n\n \n \n Defined in projects/lib/src/token-validation/validation-handler.ts:41\n \n \n\n\n \n \n Validates the signature of an id_token.\n\n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n validationParams\n \n ValidationParams\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : Promise\n\n \n \n \n \n \n \n \n \n\n\n\n\n\n\n \n\n\n \n import { base64UrlEncode } from '../base64-helper';\n\nexport interface ValidationParams {\n idToken: string;\n accessToken: string;\n idTokenHeader: object;\n idTokenClaims: object;\n jwks: object;\n loadKeys: () => Promise;\n}\n\n/**\n * Interface for Handlers that are hooked in to\n * validate tokens.\n */\nexport abstract class ValidationHandler {\n /**\n * Validates the signature of an id_token.\n */\n public abstract validateSignature(\n validationParams: ValidationParams\n ): Promise;\n\n /**\n * Validates the at_hash in an id_token against the received access_token.\n */\n public abstract validateAtHash(\n validationParams: ValidationParams\n ): Promise;\n}\n\n/**\n * This abstract implementation of ValidationHandler already implements\n * the method validateAtHash. However, to make use of it,\n * you have to override the method calcHash.\n */\nexport abstract class AbstractValidationHandler implements ValidationHandler {\n /**\n * Validates the signature of an id_token.\n */\n abstract validateSignature(validationParams: ValidationParams): Promise;\n\n /**\n * Validates the at_hash in an id_token against the received access_token.\n */\n async validateAtHash(params: ValidationParams): Promise {\n let hashAlg = this.inferHashAlgorithm(params.idTokenHeader);\n\n let tokenHash = await this.calcHash(params.accessToken, hashAlg); // sha256(accessToken, { asString: true });\n\n let leftMostHalf = tokenHash.substr(0, tokenHash.length / 2);\n\n let atHash = base64UrlEncode(leftMostHalf);\n\n let claimsAtHash = params.idTokenClaims['at_hash'].replace(/=/g, '');\n\n if (atHash !== claimsAtHash) {\n console.error('exptected at_hash: ' + atHash);\n console.error('actual at_hash: ' + claimsAtHash);\n }\n\n return atHash === claimsAtHash;\n }\n\n /**\n * Infers the name of the hash algorithm to use\n * from the alg field of an id_token.\n *\n * @param jwtHeader the id_token's parsed header\n */\n protected inferHashAlgorithm(jwtHeader: object): string {\n let alg: string = jwtHeader['alg'];\n\n if (!alg.match(/^.S[0-9]{3}$/)) {\n throw new Error('Algorithm not supported: ' + alg);\n }\n\n return 'sha-' + alg.substr(2);\n }\n\n /**\n * Calculates the hash for the passed value by using\n * the passed hash algorithm.\n *\n * @param valueToHash\n * @param algorithm\n */\n protected abstract calcHash(\n valueToHash: string,\n algorithm: string\n ): Promise;\n}\n\n \n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/DateTimeProvider.html":{"url":"classes/DateTimeProvider.html","title":"class - DateTimeProvider","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n DateTimeProvider\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/date-time-provider.ts\n \n\n\n\n\n\n\n \n Index\n \n \n\n \n \n Methods\n \n \n \n \n \n \n Abstract\n new\n \n \n Abstract\n now\n \n \n \n \n\n\n\n\n\n \n \n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n Abstract\n new\n \n \n \n \n \n \n \n new()\n \n \n\n\n \n \n Defined in projects/lib/src/date-time-provider.ts:5\n \n \n\n\n \n \n\n \n Returns : Date\n\n \n \n \n \n \n \n \n \n \n \n \n Abstract\n now\n \n \n \n \n \n \n \n now()\n \n \n\n\n \n \n Defined in projects/lib/src/date-time-provider.ts:4\n \n \n\n\n \n \n\n \n Returns : number\n\n \n \n \n \n \n\n\n\n\n\n\n \n\n\n \n import { Injectable } from '@angular/core';\n\nexport abstract class DateTimeProvider {\n abstract now(): number;\n abstract new(): Date;\n}\n\n@Injectable()\nexport class SystemDateTimeProvider extends DateTimeProvider {\n now(): number {\n return Date.now();\n }\n\n new(): Date {\n return new Date();\n }\n}\n\n \n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"injectables/DefaultHashHandler.html":{"url":"injectables/DefaultHashHandler.html","title":"injectable - DefaultHashHandler","body":"\n \n\n\n\n\n\n\n\n\n Injectables\n DefaultHashHandler\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/token-validation/hash-handler.ts\n \n\n\n\n\n\n \n Index\n \n \n\n \n \n Methods\n \n \n \n \n \n \n Async\n calcHash\n \n \n toHashString\n \n \n toHashString2\n \n \n \n \n\n\n\n\n\n \n \n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n Async\n calcHash\n \n \n \n \n \n \n \n calcHash(valueToHash: string, algorithm: string)\n \n \n\n\n \n \n Defined in projects/lib/src/token-validation/hash-handler.ts:33\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n valueToHash\n \n string\n \n\n \n No\n \n\n\n \n \n algorithm\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : Promise\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n toHashString\n \n \n \n \n \n \ntoHashString(buffer: ArrayBuffer)\n \n \n\n\n \n \n Defined in projects/lib/src/token-validation/hash-handler.ts:60\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n buffer\n \n ArrayBuffer\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : string\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n toHashString2\n \n \n \n \n \n \ntoHashString2(byteArray: number[])\n \n \n\n\n \n \n Defined in projects/lib/src/token-validation/hash-handler.ts:52\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n byteArray\n \n number[]\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : string\n\n \n \n \n \n \n \n \n \n\n\n \n\n\n \n import { Injectable } from '@angular/core';\n\nimport { factory } from './js-sha256';\nconst sha256 = factory();\n\nimport fsha256 from 'fast-sha256';\n\n/**\n * Abstraction for crypto algorithms\n */\nexport abstract class HashHandler {\n abstract calcHash(valueToHash: string, algorithm: string): Promise;\n}\n\nfunction decodeUTF8(s) {\n if (typeof s !== 'string') throw new TypeError('expected string');\n var i,\n d = s,\n b = new Uint8Array(d.length);\n for (i = 0; i {\n // const encoder = new TextEncoder();\n // const hashArray = await window.crypto.subtle.digest(algorithm, data);\n // const data = encoder.encode(valueToHash);\n\n // const fhash = fsha256(valueToHash);\n\n const candHash = encodeUTF8(fsha256(decodeUTF8(valueToHash)));\n\n // const hashArray = (sha256 as any).array(valueToHash);\n // // const hashString = this.toHashString(hashArray);\n // const hashString = this.toHashString2(hashArray);\n\n // console.debug('hash orig - cand', candHash, hashString);\n // alert(1);\n\n return candHash;\n }\n\n toHashString2(byteArray: number[]) {\n let result = '';\n for (let e of byteArray) {\n result += String.fromCharCode(e);\n }\n return result;\n }\n\n toHashString(buffer: ArrayBuffer) {\n const byteArray = new Uint8Array(buffer);\n let result = '';\n for (let e of byteArray) {\n result += String.fromCharCode(e);\n }\n return result;\n }\n\n // hexString(buffer) {\n // const byteArray = new Uint8Array(buffer);\n // const hexCodes = [...byteArray].map(value => {\n // const hexCode = value.toString(16);\n // const paddedHexCode = hexCode.padStart(2, '0');\n // return paddedHexCode;\n // });\n\n // return hexCodes.join('');\n // }\n\n // toHashString(hexString: string) {\n // let result = '';\n // for (let i = 0; i \n \n\n\n\n\n\n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"interceptors/DefaultOAuthInterceptor.html":{"url":"interceptors/DefaultOAuthInterceptor.html","title":"interceptor - DefaultOAuthInterceptor","body":"\n \n\n\n\n\n\n\n\n\n\n Interceptors\n DefaultOAuthInterceptor\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/interceptors/default-oauth.interceptor.ts\n \n\n\n\n\n \n Index\n \n \n\n \n \n Methods\n \n \n \n \n \n \n Public\n intercept\n \n \n \n \n\n\n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor(oAuthService: OAuthService, errorHandler: OAuthResourceServerErrorHandler, moduleConfig: OAuthModuleConfig)\n \n \n \n \n Defined in projects/lib/src/interceptors/default-oauth.interceptor.ts:23\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n oAuthService\n \n \n OAuthService\n \n \n \n No\n \n \n \n \n errorHandler\n \n \n OAuthResourceServerErrorHandler\n \n \n \n No\n \n \n \n \n moduleConfig\n \n \n OAuthModuleConfig\n \n \n \n No\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n Public\n intercept\n \n \n \n \n \n \n \n intercept(req: HttpRequest, next: HttpHandler)\n \n \n\n\n \n \n Defined in projects/lib/src/interceptors/default-oauth.interceptor.ts:44\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n req\n \n HttpRequest\n \n\n \n No\n \n\n\n \n \n next\n \n HttpHandler\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : Observable>\n\n \n \n \n \n \n \n \n \n\n\n \n\n\n \n import { Injectable, Optional } from '@angular/core';\n\nimport {\n HttpEvent,\n HttpHandler,\n HttpInterceptor,\n HttpRequest,\n} from '@angular/common/http';\nimport { Observable, of, merge } from 'rxjs';\nimport {\n catchError,\n filter,\n map,\n take,\n mergeMap,\n timeout,\n} from 'rxjs/operators';\nimport { OAuthResourceServerErrorHandler } from './resource-server-error-handler';\nimport { OAuthModuleConfig } from '../oauth-module.config';\nimport { OAuthService } from '../oauth-service';\n\n@Injectable()\nexport class DefaultOAuthInterceptor implements HttpInterceptor {\n constructor(\n private oAuthService: OAuthService,\n private errorHandler: OAuthResourceServerErrorHandler,\n @Optional() private moduleConfig: OAuthModuleConfig\n ) {}\n\n private checkUrl(url: string): boolean {\n if (this.moduleConfig.resourceServer.customUrlValidation) {\n return this.moduleConfig.resourceServer.customUrlValidation(url);\n }\n\n if (this.moduleConfig.resourceServer.allowedUrls) {\n return !!this.moduleConfig.resourceServer.allowedUrls.find((u) =>\n url.toLowerCase().startsWith(u.toLowerCase())\n );\n }\n\n return true;\n }\n\n public intercept(\n req: HttpRequest,\n next: HttpHandler\n ): Observable> {\n const url = req.url.toLowerCase();\n\n if (\n !this.moduleConfig ||\n !this.moduleConfig.resourceServer ||\n !this.checkUrl(url)\n ) {\n return next.handle(req);\n }\n\n const sendAccessToken = this.moduleConfig.resourceServer.sendAccessToken;\n\n if (!sendAccessToken) {\n return next\n .handle(req)\n .pipe(catchError((err) => this.errorHandler.handleError(err)));\n }\n\n return merge(\n of(this.oAuthService.getAccessToken()).pipe(filter((token) => !!token)),\n this.oAuthService.events.pipe(\n filter((e) => e.type === 'token_received'),\n timeout(this.oAuthService.waitForTokenInMsec || 0),\n catchError((_) => of(null)), // timeout is not an error\n map((_) => this.oAuthService.getAccessToken())\n )\n ).pipe(\n take(1),\n mergeMap((token) => {\n if (token) {\n const header = 'Bearer ' + token;\n const headers = req.headers.set('Authorization', header);\n req = req.clone({ headers });\n }\n\n return next\n .handle(req)\n .pipe(catchError((err) => this.errorHandler.handleError(err)));\n })\n );\n }\n}\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/HashHandler.html":{"url":"classes/HashHandler.html","title":"class - HashHandler","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n HashHandler\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/token-validation/hash-handler.ts\n \n\n\n \n Description\n \n \n Abstraction for crypto algorithms\n\n \n\n\n\n\n \n Index\n \n \n\n \n \n Methods\n \n \n \n \n \n \n Abstract\n calcHash\n \n \n \n \n\n\n\n\n\n \n \n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n Abstract\n calcHash\n \n \n \n \n \n \n \n calcHash(valueToHash: string, algorithm: string)\n \n \n\n\n \n \n Defined in projects/lib/src/token-validation/hash-handler.ts:12\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n valueToHash\n \n string\n \n\n \n No\n \n\n\n \n \n algorithm\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : Promise\n\n \n \n \n \n \n \n \n \n\n\n\n\n\n\n \n\n\n \n import { Injectable } from '@angular/core';\n\nimport { factory } from './js-sha256';\nconst sha256 = factory();\n\nimport fsha256 from 'fast-sha256';\n\n/**\n * Abstraction for crypto algorithms\n */\nexport abstract class HashHandler {\n abstract calcHash(valueToHash: string, algorithm: string): Promise;\n}\n\nfunction decodeUTF8(s) {\n if (typeof s !== 'string') throw new TypeError('expected string');\n var i,\n d = s,\n b = new Uint8Array(d.length);\n for (i = 0; i {\n // const encoder = new TextEncoder();\n // const hashArray = await window.crypto.subtle.digest(algorithm, data);\n // const data = encoder.encode(valueToHash);\n\n // const fhash = fsha256(valueToHash);\n\n const candHash = encodeUTF8(fsha256(decodeUTF8(valueToHash)));\n\n // const hashArray = (sha256 as any).array(valueToHash);\n // // const hashString = this.toHashString(hashArray);\n // const hashString = this.toHashString2(hashArray);\n\n // console.debug('hash orig - cand', candHash, hashString);\n // alert(1);\n\n return candHash;\n }\n\n toHashString2(byteArray: number[]) {\n let result = '';\n for (let e of byteArray) {\n result += String.fromCharCode(e);\n }\n return result;\n }\n\n toHashString(buffer: ArrayBuffer) {\n const byteArray = new Uint8Array(buffer);\n let result = '';\n for (let e of byteArray) {\n result += String.fromCharCode(e);\n }\n return result;\n }\n\n // hexString(buffer) {\n // const byteArray = new Uint8Array(buffer);\n // const hexCodes = [...byteArray].map(value => {\n // const hexCode = value.toString(16);\n // const paddedHexCode = hexCode.padStart(2, '0');\n // return paddedHexCode;\n // });\n\n // return hexCodes.join('');\n // }\n\n // toHashString(hexString: string) {\n // let result = '';\n // for (let i = 0; i \n \n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/JwksValidationHandler.html":{"url":"classes/JwksValidationHandler.html","title":"class - JwksValidationHandler","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n JwksValidationHandler\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/token-validation/jwks-validation-handler.ts\n \n\n\n \n Description\n \n \n This is just a dummy of the JwksValidationHandler\ntelling the users that the real one has been moved\nto an library of its own, namely angular-oauth2-oidc-utils\n\n \n\n \n Extends\n \n \n NullValidationHandler\n \n\n\n\n \n Index\n \n \n\n \n \n Methods\n \n \n \n \n \n \n validateAtHash\n \n \n validateSignature\n \n \n \n \n\n\n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor()\n \n \n \n \n Defined in projects/lib/src/token-validation/jwks-validation-handler.ts:25\n \n \n\n \n \n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n validateAtHash\n \n \n \n \n \n \nvalidateAtHash(validationParams: ValidationParams)\n \n \n\n\n \n \n Inherited from NullValidationHandler\n\n \n \n \n \n Defined in NullValidationHandler:11\n\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n validationParams\n \n ValidationParams\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : Promise\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n validateSignature\n \n \n \n \n \n \nvalidateSignature(validationParams: ValidationParams)\n \n \n\n\n \n \n Inherited from NullValidationHandler\n\n \n \n \n \n Defined in NullValidationHandler:8\n\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n validationParams\n \n ValidationParams\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : Promise\n\n \n \n \n \n \n \n \n \n\n\n\n\n\n\n \n\n\n \n import { NullValidationHandler } from './null-validation-handler';\n\nconst err = `PLEASE READ THIS CAREFULLY:\n\nBeginning with angular-oauth2-oidc version 9, the JwksValidationHandler\nhas been moved to an library of its own. If you need it for implementing\nOAuth2/OIDC **implicit flow**, please install it using npm:\n\n npm i angular-oauth2-oidc-jwks --save\n\nAfter that, you can import it into your application:\n\n import { JwksValidationHandler } from 'angular-oauth2-oidc-jwks';\n\nPlease note, that this dependency is not needed for the **code flow**,\nwhich is nowadays the **recommented** one for single page applications.\nThis also results in smaller bundle sizes.\n`;\n\n/**\n * This is just a dummy of the JwksValidationHandler\n * telling the users that the real one has been moved\n * to an library of its own, namely angular-oauth2-oidc-utils\n */\nexport class JwksValidationHandler extends NullValidationHandler {\n constructor() {\n super();\n console.error(err);\n }\n}\n\n \n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/LoginOptions.html":{"url":"classes/LoginOptions.html","title":"class - LoginOptions","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n LoginOptions\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/types.ts\n \n\n\n \n Description\n \n \n Additional options that can be passed to tryLogin.\n\n \n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Optional\n customHashFragment\n \n \n Optional\n customRedirectUri\n \n \n Optional\n disableNonceCheck\n \n \n Optional\n disableOAuth2StateCheck\n \n \n Optional\n onLoginError\n \n \n Optional\n onTokenReceived\n \n \n Optional\n preventClearHashAfterLogin\n \n \n Optional\n validationHandler\n \n \n \n \n\n\n\n\n\n\n \n \n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n Optional\n customHashFragment\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in projects/lib/src/types.ts:40\n \n \n\n \n \n A custom hash fragment to be used instead of the\nactual one. This is used for silent refreshes, to\npass the iframes hash fragment to this method, and\nis also used by popup flows in the same manner.\nThis can be used with code flow, where is must be set\nto a hash symbol followed by the querystring. The\nquestion mark is optional, but may be present following\nthe hash symbol.\n\n \n \n\n \n \n \n \n \n \n \n \n Optional\n customRedirectUri\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in projects/lib/src/types.ts:74\n \n \n\n \n \n Set this for code flow if you used a custom redirect Uri\nwhen retrieving the code. This is used internally for silent\nrefresh and popup flows.\n\n \n \n\n \n \n \n \n \n \n \n \n Optional\n disableNonceCheck\n \n \n \n \n \n \n Default value : false\n \n \n \n \n Defined in projects/lib/src/types.ts:59\n \n \n\n \n \n Set this to true to disable the nonce\ncheck which is used to avoid\nreplay attacks.\nThis flag should never be true in\nproduction environments.\n\n \n \n\n \n \n \n \n \n \n \n \n Optional\n disableOAuth2StateCheck\n \n \n \n \n \n \n Type : boolean\n\n \n \n \n \n Defined in projects/lib/src/types.ts:50\n \n \n\n \n \n Set this to true to disable the oauth2 state\ncheck which is a best practice to avoid\nsecurity attacks.\nAs OIDC defines a nonce check that includes\nthis, this can be set to true when only doing\nOIDC.\n\n \n \n\n \n \n \n \n \n \n \n \n Optional\n onLoginError\n \n \n \n \n \n \n Type : function\n\n \n \n \n \n Defined in projects/lib/src/types.ts:28\n \n \n\n \n \n Called when tryLogin detects that the auth server\nincluded an error message into the hash fragment.\nDeprecated: Use property events on OAuthService instead.\n\n \n \n\n \n \n \n \n \n \n \n \n Optional\n onTokenReceived\n \n \n \n \n \n \n Type : function\n\n \n \n \n \n Defined in projects/lib/src/types.ts:13\n \n \n\n \n \n Is called, after a token has been received and\nsuccessfully validated.\nDeprecated: Use property events on OAuthService instead.\n\n \n \n\n \n \n \n \n \n \n \n \n Optional\n preventClearHashAfterLogin\n \n \n \n \n \n \n Default value : false\n \n \n \n \n Defined in projects/lib/src/types.ts:67\n \n \n\n \n \n Normally, you want to clear your hash fragment after\nthe lib read the token(s) so that they are not displayed\nanymore in the url. If not, set this to true. For code flow\nthis controls removing query string values.\n\n \n \n\n \n \n \n \n \n \n \n \n Optional\n validationHandler\n \n \n \n \n \n \n Type : function\n\n \n \n \n \n Defined in projects/lib/src/types.ts:20\n \n \n\n \n \n Hook, to validate the received tokens.\nDeprecated: Use property tokenValidationHandler on OAuthService instead.\n\n \n \n\n \n \n\n\n\n\n\n\n\n\n \n\n\n \n import { Injectable } from '@angular/core';\n\n/**\n * Additional options that can be passed to tryLogin.\n */\nexport class LoginOptions {\n /**\n * Is called, after a token has been received and\n * successfully validated.\n *\n * Deprecated: Use property ``events`` on OAuthService instead.\n */\n onTokenReceived?: (receivedTokens: ReceivedTokens) => void;\n\n /**\n * Hook, to validate the received tokens.\n *\n * Deprecated: Use property ``tokenValidationHandler`` on OAuthService instead.\n */\n validationHandler?: (receivedTokens: ReceivedTokens) => Promise;\n\n /**\n * Called when tryLogin detects that the auth server\n * included an error message into the hash fragment.\n *\n * Deprecated: Use property ``events`` on OAuthService instead.\n */\n onLoginError?: (params: object) => void;\n\n /**\n * A custom hash fragment to be used instead of the\n * actual one. This is used for silent refreshes, to\n * pass the iframes hash fragment to this method, and\n * is also used by popup flows in the same manner.\n * This can be used with code flow, where is must be set\n * to a hash symbol followed by the querystring. The\n * question mark is optional, but may be present following\n * the hash symbol.\n */\n customHashFragment?: string;\n\n /**\n * Set this to true to disable the oauth2 state\n * check which is a best practice to avoid\n * security attacks.\n * As OIDC defines a nonce check that includes\n * this, this can be set to true when only doing\n * OIDC.\n */\n disableOAuth2StateCheck?: boolean;\n\n /**\n * Set this to true to disable the nonce\n * check which is used to avoid\n * replay attacks.\n * This flag should never be true in\n * production environments.\n */\n disableNonceCheck? = false;\n\n /**\n * Normally, you want to clear your hash fragment after\n * the lib read the token(s) so that they are not displayed\n * anymore in the url. If not, set this to true. For code flow\n * this controls removing query string values.\n */\n preventClearHashAfterLogin? = false;\n\n /**\n * Set this for code flow if you used a custom redirect Uri\n * when retrieving the code. This is used internally for silent\n * refresh and popup flows.\n */\n customRedirectUri?: string;\n}\n\n/**\n * Defines the logging interface the OAuthService uses\n * internally. Is compatible with the `console` object,\n * but you can provide your own implementation as well\n * through dependency injection.\n */\nexport abstract class OAuthLogger {\n abstract debug(message?: any, ...optionalParams: any[]): void;\n abstract info(message?: any, ...optionalParams: any[]): void;\n abstract log(message?: any, ...optionalParams: any[]): void;\n abstract warn(message?: any, ...optionalParams: any[]): void;\n abstract error(message?: any, ...optionalParams: any[]): void;\n}\n\n/**\n * Defines a simple storage that can be used for\n * storing the tokens at client side.\n * Is compatible to localStorage and sessionStorage,\n * but you can also create your own implementations.\n */\nexport abstract class OAuthStorage {\n abstract getItem(key: string): string | null;\n abstract removeItem(key: string): void;\n abstract setItem(key: string, data: string): void;\n}\n\n@Injectable()\nexport class MemoryStorage implements OAuthStorage {\n private data = new Map();\n\n getItem(key: string): string {\n return this.data.get(key);\n }\n\n removeItem(key: string): void {\n this.data.delete(key);\n }\n\n setItem(key: string, data: string): void {\n this.data.set(key, data);\n }\n}\n\n/**\n * Represents the received tokens, the received state\n * and the parsed claims from the id-token.\n */\nexport class ReceivedTokens {\n idToken: string;\n accessToken: string;\n idClaims?: object;\n state?: string;\n}\n\n/**\n * Represents the parsed and validated id_token.\n */\nexport interface ParsedIdToken {\n idToken: string;\n idTokenClaims: object;\n idTokenHeader: object;\n idTokenClaimsJson: string;\n idTokenHeaderJson: string;\n idTokenExpiresAt: number;\n}\n\n/**\n * Represents the response from the token endpoint\n * http://openid.net/specs/openid-connect-core-1_0.html#TokenEndpoint\n */\nexport interface TokenResponse {\n access_token: string;\n id_token: string;\n token_type: string;\n expires_in: number;\n refresh_token: string;\n scope: string;\n state?: string;\n}\n\n/**\n * Represents the response from the user info endpoint\n * http://openid.net/specs/openid-connect-core-1_0.html#UserInfo\n */\nexport interface UserInfo {\n sub: string;\n [key: string]: any;\n}\n\n/**\n * Represents an OpenID Connect discovery document\n */\nexport interface OidcDiscoveryDoc {\n issuer: string;\n authorization_endpoint: string;\n token_endpoint: string;\n token_endpoint_auth_methods_supported: string[];\n token_endpoint_auth_signing_alg_values_supported: string[];\n userinfo_endpoint: string;\n check_session_iframe: string;\n end_session_endpoint: string;\n jwks_uri: string;\n registration_endpoint: string;\n scopes_supported: string[];\n response_types_supported: string[];\n acr_values_supported: string[];\n response_modes_supported: string[];\n grant_types_supported: string[];\n subject_types_supported: string[];\n userinfo_signing_alg_values_supported: string[];\n userinfo_encryption_alg_values_supported: string[];\n userinfo_encryption_enc_values_supported: string[];\n id_token_signing_alg_values_supported: string[];\n id_token_encryption_alg_values_supported: string[];\n id_token_encryption_enc_values_supported: string[];\n request_object_signing_alg_values_supported: string[];\n display_values_supported: string[];\n claim_types_supported: string[];\n claims_supported: string[];\n claims_parameter_supported: boolean;\n service_documentation: string;\n ui_locales_supported: string[];\n revocation_endpoint: string;\n}\n\n \n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"injectables/MemoryStorage.html":{"url":"injectables/MemoryStorage.html","title":"injectable - MemoryStorage","body":"\n \n\n\n\n\n\n\n\n\n Injectables\n MemoryStorage\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/types.ts\n \n\n\n\n\n\n \n Index\n \n \n\n \n \n Methods\n \n \n \n \n \n \n getItem\n \n \n removeItem\n \n \n setItem\n \n \n \n \n\n\n\n\n\n \n \n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n getItem\n \n \n \n \n \n \ngetItem(key: string)\n \n \n\n\n \n \n Defined in projects/lib/src/types.ts:107\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n key\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : string\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n removeItem\n \n \n \n \n \n \nremoveItem(key: string)\n \n \n\n\n \n \n Defined in projects/lib/src/types.ts:111\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n key\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n setItem\n \n \n \n \n \n \nsetItem(key: string, data: string)\n \n \n\n\n \n \n Defined in projects/lib/src/types.ts:115\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n key\n \n string\n \n\n \n No\n \n\n\n \n \n data\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n\n\n \n\n\n \n import { Injectable } from '@angular/core';\n\n/**\n * Additional options that can be passed to tryLogin.\n */\nexport class LoginOptions {\n /**\n * Is called, after a token has been received and\n * successfully validated.\n *\n * Deprecated: Use property ``events`` on OAuthService instead.\n */\n onTokenReceived?: (receivedTokens: ReceivedTokens) => void;\n\n /**\n * Hook, to validate the received tokens.\n *\n * Deprecated: Use property ``tokenValidationHandler`` on OAuthService instead.\n */\n validationHandler?: (receivedTokens: ReceivedTokens) => Promise;\n\n /**\n * Called when tryLogin detects that the auth server\n * included an error message into the hash fragment.\n *\n * Deprecated: Use property ``events`` on OAuthService instead.\n */\n onLoginError?: (params: object) => void;\n\n /**\n * A custom hash fragment to be used instead of the\n * actual one. This is used for silent refreshes, to\n * pass the iframes hash fragment to this method, and\n * is also used by popup flows in the same manner.\n * This can be used with code flow, where is must be set\n * to a hash symbol followed by the querystring. The\n * question mark is optional, but may be present following\n * the hash symbol.\n */\n customHashFragment?: string;\n\n /**\n * Set this to true to disable the oauth2 state\n * check which is a best practice to avoid\n * security attacks.\n * As OIDC defines a nonce check that includes\n * this, this can be set to true when only doing\n * OIDC.\n */\n disableOAuth2StateCheck?: boolean;\n\n /**\n * Set this to true to disable the nonce\n * check which is used to avoid\n * replay attacks.\n * This flag should never be true in\n * production environments.\n */\n disableNonceCheck? = false;\n\n /**\n * Normally, you want to clear your hash fragment after\n * the lib read the token(s) so that they are not displayed\n * anymore in the url. If not, set this to true. For code flow\n * this controls removing query string values.\n */\n preventClearHashAfterLogin? = false;\n\n /**\n * Set this for code flow if you used a custom redirect Uri\n * when retrieving the code. This is used internally for silent\n * refresh and popup flows.\n */\n customRedirectUri?: string;\n}\n\n/**\n * Defines the logging interface the OAuthService uses\n * internally. Is compatible with the `console` object,\n * but you can provide your own implementation as well\n * through dependency injection.\n */\nexport abstract class OAuthLogger {\n abstract debug(message?: any, ...optionalParams: any[]): void;\n abstract info(message?: any, ...optionalParams: any[]): void;\n abstract log(message?: any, ...optionalParams: any[]): void;\n abstract warn(message?: any, ...optionalParams: any[]): void;\n abstract error(message?: any, ...optionalParams: any[]): void;\n}\n\n/**\n * Defines a simple storage that can be used for\n * storing the tokens at client side.\n * Is compatible to localStorage and sessionStorage,\n * but you can also create your own implementations.\n */\nexport abstract class OAuthStorage {\n abstract getItem(key: string): string | null;\n abstract removeItem(key: string): void;\n abstract setItem(key: string, data: string): void;\n}\n\n@Injectable()\nexport class MemoryStorage implements OAuthStorage {\n private data = new Map();\n\n getItem(key: string): string {\n return this.data.get(key);\n }\n\n removeItem(key: string): void {\n this.data.delete(key);\n }\n\n setItem(key: string, data: string): void {\n this.data.set(key, data);\n }\n}\n\n/**\n * Represents the received tokens, the received state\n * and the parsed claims from the id-token.\n */\nexport class ReceivedTokens {\n idToken: string;\n accessToken: string;\n idClaims?: object;\n state?: string;\n}\n\n/**\n * Represents the parsed and validated id_token.\n */\nexport interface ParsedIdToken {\n idToken: string;\n idTokenClaims: object;\n idTokenHeader: object;\n idTokenClaimsJson: string;\n idTokenHeaderJson: string;\n idTokenExpiresAt: number;\n}\n\n/**\n * Represents the response from the token endpoint\n * http://openid.net/specs/openid-connect-core-1_0.html#TokenEndpoint\n */\nexport interface TokenResponse {\n access_token: string;\n id_token: string;\n token_type: string;\n expires_in: number;\n refresh_token: string;\n scope: string;\n state?: string;\n}\n\n/**\n * Represents the response from the user info endpoint\n * http://openid.net/specs/openid-connect-core-1_0.html#UserInfo\n */\nexport interface UserInfo {\n sub: string;\n [key: string]: any;\n}\n\n/**\n * Represents an OpenID Connect discovery document\n */\nexport interface OidcDiscoveryDoc {\n issuer: string;\n authorization_endpoint: string;\n token_endpoint: string;\n token_endpoint_auth_methods_supported: string[];\n token_endpoint_auth_signing_alg_values_supported: string[];\n userinfo_endpoint: string;\n check_session_iframe: string;\n end_session_endpoint: string;\n jwks_uri: string;\n registration_endpoint: string;\n scopes_supported: string[];\n response_types_supported: string[];\n acr_values_supported: string[];\n response_modes_supported: string[];\n grant_types_supported: string[];\n subject_types_supported: string[];\n userinfo_signing_alg_values_supported: string[];\n userinfo_encryption_alg_values_supported: string[];\n userinfo_encryption_enc_values_supported: string[];\n id_token_signing_alg_values_supported: string[];\n id_token_encryption_alg_values_supported: string[];\n id_token_encryption_enc_values_supported: string[];\n request_object_signing_alg_values_supported: string[];\n display_values_supported: string[];\n claim_types_supported: string[];\n claims_supported: string[];\n claims_parameter_supported: boolean;\n service_documentation: string;\n ui_locales_supported: string[];\n revocation_endpoint: string;\n}\n\n \n\n\n\n\n\n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/NullValidationHandler.html":{"url":"classes/NullValidationHandler.html","title":"class - NullValidationHandler","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n NullValidationHandler\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/token-validation/null-validation-handler.ts\n \n\n\n \n Description\n \n \n A validation handler that isn't validating nothing.\nCan be used to skip validation (at your own risk).\n\n \n\n\n \n Implements\n \n \n ValidationHandler\n \n\n\n \n Index\n \n \n\n \n \n Methods\n \n \n \n \n \n \n validateAtHash\n \n \n validateSignature\n \n \n \n \n\n\n\n\n\n \n \n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n validateAtHash\n \n \n \n \n \n \nvalidateAtHash(validationParams: ValidationParams)\n \n \n\n\n \n \n Defined in projects/lib/src/token-validation/null-validation-handler.ts:11\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n validationParams\n \n ValidationParams\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : Promise\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n validateSignature\n \n \n \n \n \n \nvalidateSignature(validationParams: ValidationParams)\n \n \n\n\n \n \n Defined in projects/lib/src/token-validation/null-validation-handler.ts:8\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n validationParams\n \n ValidationParams\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : Promise\n\n \n \n \n \n \n \n \n \n\n\n\n\n\n\n \n\n\n \n import { ValidationHandler, ValidationParams } from './validation-handler';\n\n/**\n * A validation handler that isn't validating nothing.\n * Can be used to skip validation (at your own risk).\n */\nexport class NullValidationHandler implements ValidationHandler {\n validateSignature(validationParams: ValidationParams): Promise {\n return Promise.resolve(null);\n }\n validateAtHash(validationParams: ValidationParams): Promise {\n return Promise.resolve(true);\n }\n}\n\n \n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/OAuthErrorEvent.html":{"url":"classes/OAuthErrorEvent.html","title":"class - OAuthErrorEvent","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n OAuthErrorEvent\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/events.ts\n \n\n\n\n \n Extends\n \n \n OAuthEvent\n \n\n\n\n\n \n Constructor\n \n \n \n \nconstructor(type: EventType, reason: object, params: object)\n \n \n \n \n Defined in projects/lib/src/events.ts:44\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n type\n \n \n EventType\n \n \n \n No\n \n \n \n \n reason\n \n \n object\n \n \n \n No\n \n \n \n \n params\n \n \n object\n \n \n \n No\n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n\n\n \n\n\n \n export type EventType =\n | 'discovery_document_loaded'\n | 'jwks_load_error'\n | 'invalid_nonce_in_state'\n | 'discovery_document_load_error'\n | 'discovery_document_validation_error'\n | 'user_profile_loaded'\n | 'user_profile_load_error'\n | 'token_received'\n | 'token_error'\n | 'code_error'\n | 'token_refreshed'\n | 'token_refresh_error'\n | 'silent_refresh_error'\n | 'silently_refreshed'\n | 'silent_refresh_timeout'\n | 'token_validation_error'\n | 'token_expires'\n | 'session_changed'\n | 'session_error'\n | 'session_terminated'\n | 'session_unchanged'\n | 'logout'\n | 'popup_closed'\n | 'popup_blocked'\n | 'token_revoke_error';\n\nexport abstract class OAuthEvent {\n constructor(readonly type: EventType) {}\n}\n\nexport class OAuthSuccessEvent extends OAuthEvent {\n constructor(type: EventType, readonly info: any = null) {\n super(type);\n }\n}\n\nexport class OAuthInfoEvent extends OAuthEvent {\n constructor(type: EventType, readonly info: any = null) {\n super(type);\n }\n}\n\nexport class OAuthErrorEvent extends OAuthEvent {\n constructor(\n type: EventType,\n readonly reason: object,\n readonly params: object = null\n ) {\n super(type);\n }\n}\n\n \n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/OAuthEvent.html":{"url":"classes/OAuthEvent.html","title":"class - OAuthEvent","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n OAuthEvent\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/events.ts\n \n\n\n\n\n\n\n\n \n Constructor\n \n \n \n \nconstructor(type: EventType)\n \n \n \n \n Defined in projects/lib/src/events.ts:28\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n type\n \n \n EventType\n \n \n \n No\n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n\n\n \n\n\n \n export type EventType =\n | 'discovery_document_loaded'\n | 'jwks_load_error'\n | 'invalid_nonce_in_state'\n | 'discovery_document_load_error'\n | 'discovery_document_validation_error'\n | 'user_profile_loaded'\n | 'user_profile_load_error'\n | 'token_received'\n | 'token_error'\n | 'code_error'\n | 'token_refreshed'\n | 'token_refresh_error'\n | 'silent_refresh_error'\n | 'silently_refreshed'\n | 'silent_refresh_timeout'\n | 'token_validation_error'\n | 'token_expires'\n | 'session_changed'\n | 'session_error'\n | 'session_terminated'\n | 'session_unchanged'\n | 'logout'\n | 'popup_closed'\n | 'popup_blocked'\n | 'token_revoke_error';\n\nexport abstract class OAuthEvent {\n constructor(readonly type: EventType) {}\n}\n\nexport class OAuthSuccessEvent extends OAuthEvent {\n constructor(type: EventType, readonly info: any = null) {\n super(type);\n }\n}\n\nexport class OAuthInfoEvent extends OAuthEvent {\n constructor(type: EventType, readonly info: any = null) {\n super(type);\n }\n}\n\nexport class OAuthErrorEvent extends OAuthEvent {\n constructor(\n type: EventType,\n readonly reason: object,\n readonly params: object = null\n ) {\n super(type);\n }\n}\n\n \n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/OAuthInfoEvent.html":{"url":"classes/OAuthInfoEvent.html","title":"class - OAuthInfoEvent","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n OAuthInfoEvent\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/events.ts\n \n\n\n\n \n Extends\n \n \n OAuthEvent\n \n\n\n\n\n \n Constructor\n \n \n \n \nconstructor(type: EventType, info: any)\n \n \n \n \n Defined in projects/lib/src/events.ts:38\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n type\n \n \n EventType\n \n \n \n No\n \n \n \n \n info\n \n \n any\n \n \n \n No\n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n\n\n \n\n\n \n export type EventType =\n | 'discovery_document_loaded'\n | 'jwks_load_error'\n | 'invalid_nonce_in_state'\n | 'discovery_document_load_error'\n | 'discovery_document_validation_error'\n | 'user_profile_loaded'\n | 'user_profile_load_error'\n | 'token_received'\n | 'token_error'\n | 'code_error'\n | 'token_refreshed'\n | 'token_refresh_error'\n | 'silent_refresh_error'\n | 'silently_refreshed'\n | 'silent_refresh_timeout'\n | 'token_validation_error'\n | 'token_expires'\n | 'session_changed'\n | 'session_error'\n | 'session_terminated'\n | 'session_unchanged'\n | 'logout'\n | 'popup_closed'\n | 'popup_blocked'\n | 'token_revoke_error';\n\nexport abstract class OAuthEvent {\n constructor(readonly type: EventType) {}\n}\n\nexport class OAuthSuccessEvent extends OAuthEvent {\n constructor(type: EventType, readonly info: any = null) {\n super(type);\n }\n}\n\nexport class OAuthInfoEvent extends OAuthEvent {\n constructor(type: EventType, readonly info: any = null) {\n super(type);\n }\n}\n\nexport class OAuthErrorEvent extends OAuthEvent {\n constructor(\n type: EventType,\n readonly reason: object,\n readonly params: object = null\n ) {\n super(type);\n }\n}\n\n \n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/OAuthLogger.html":{"url":"classes/OAuthLogger.html","title":"class - OAuthLogger","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n OAuthLogger\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/types.ts\n \n\n\n \n Description\n \n \n Defines the logging interface the OAuthService uses\ninternally. Is compatible with the console object,\nbut you can provide your own implementation as well\nthrough dependency injection.\n\n \n\n\n\n\n \n Index\n \n \n\n \n \n Methods\n \n \n \n \n \n \n Abstract\n debug\n \n \n Abstract\n error\n \n \n Abstract\n info\n \n \n Abstract\n log\n \n \n Abstract\n warn\n \n \n \n \n\n\n\n\n\n \n \n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n Abstract\n debug\n \n \n \n \n \n \n \n debug(message?: any, ...optionalParams: any[])\n \n \n\n\n \n \n Defined in projects/lib/src/types.ts:84\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n message\n \n any\n \n\n \n Yes\n \n\n\n \n \n optionalParams\n \n any[]\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Abstract\n error\n \n \n \n \n \n \n \n error(message?: any, ...optionalParams: any[])\n \n \n\n\n \n \n Defined in projects/lib/src/types.ts:88\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n message\n \n any\n \n\n \n Yes\n \n\n\n \n \n optionalParams\n \n any[]\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Abstract\n info\n \n \n \n \n \n \n \n info(message?: any, ...optionalParams: any[])\n \n \n\n\n \n \n Defined in projects/lib/src/types.ts:85\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n message\n \n any\n \n\n \n Yes\n \n\n\n \n \n optionalParams\n \n any[]\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Abstract\n log\n \n \n \n \n \n \n \n log(message?: any, ...optionalParams: any[])\n \n \n\n\n \n \n Defined in projects/lib/src/types.ts:86\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n message\n \n any\n \n\n \n Yes\n \n\n\n \n \n optionalParams\n \n any[]\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Abstract\n warn\n \n \n \n \n \n \n \n warn(message?: any, ...optionalParams: any[])\n \n \n\n\n \n \n Defined in projects/lib/src/types.ts:87\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n message\n \n any\n \n\n \n Yes\n \n\n\n \n \n optionalParams\n \n any[]\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n\n\n\n\n\n\n \n\n\n \n import { Injectable } from '@angular/core';\n\n/**\n * Additional options that can be passed to tryLogin.\n */\nexport class LoginOptions {\n /**\n * Is called, after a token has been received and\n * successfully validated.\n *\n * Deprecated: Use property ``events`` on OAuthService instead.\n */\n onTokenReceived?: (receivedTokens: ReceivedTokens) => void;\n\n /**\n * Hook, to validate the received tokens.\n *\n * Deprecated: Use property ``tokenValidationHandler`` on OAuthService instead.\n */\n validationHandler?: (receivedTokens: ReceivedTokens) => Promise;\n\n /**\n * Called when tryLogin detects that the auth server\n * included an error message into the hash fragment.\n *\n * Deprecated: Use property ``events`` on OAuthService instead.\n */\n onLoginError?: (params: object) => void;\n\n /**\n * A custom hash fragment to be used instead of the\n * actual one. This is used for silent refreshes, to\n * pass the iframes hash fragment to this method, and\n * is also used by popup flows in the same manner.\n * This can be used with code flow, where is must be set\n * to a hash symbol followed by the querystring. The\n * question mark is optional, but may be present following\n * the hash symbol.\n */\n customHashFragment?: string;\n\n /**\n * Set this to true to disable the oauth2 state\n * check which is a best practice to avoid\n * security attacks.\n * As OIDC defines a nonce check that includes\n * this, this can be set to true when only doing\n * OIDC.\n */\n disableOAuth2StateCheck?: boolean;\n\n /**\n * Set this to true to disable the nonce\n * check which is used to avoid\n * replay attacks.\n * This flag should never be true in\n * production environments.\n */\n disableNonceCheck? = false;\n\n /**\n * Normally, you want to clear your hash fragment after\n * the lib read the token(s) so that they are not displayed\n * anymore in the url. If not, set this to true. For code flow\n * this controls removing query string values.\n */\n preventClearHashAfterLogin? = false;\n\n /**\n * Set this for code flow if you used a custom redirect Uri\n * when retrieving the code. This is used internally for silent\n * refresh and popup flows.\n */\n customRedirectUri?: string;\n}\n\n/**\n * Defines the logging interface the OAuthService uses\n * internally. Is compatible with the `console` object,\n * but you can provide your own implementation as well\n * through dependency injection.\n */\nexport abstract class OAuthLogger {\n abstract debug(message?: any, ...optionalParams: any[]): void;\n abstract info(message?: any, ...optionalParams: any[]): void;\n abstract log(message?: any, ...optionalParams: any[]): void;\n abstract warn(message?: any, ...optionalParams: any[]): void;\n abstract error(message?: any, ...optionalParams: any[]): void;\n}\n\n/**\n * Defines a simple storage that can be used for\n * storing the tokens at client side.\n * Is compatible to localStorage and sessionStorage,\n * but you can also create your own implementations.\n */\nexport abstract class OAuthStorage {\n abstract getItem(key: string): string | null;\n abstract removeItem(key: string): void;\n abstract setItem(key: string, data: string): void;\n}\n\n@Injectable()\nexport class MemoryStorage implements OAuthStorage {\n private data = new Map();\n\n getItem(key: string): string {\n return this.data.get(key);\n }\n\n removeItem(key: string): void {\n this.data.delete(key);\n }\n\n setItem(key: string, data: string): void {\n this.data.set(key, data);\n }\n}\n\n/**\n * Represents the received tokens, the received state\n * and the parsed claims from the id-token.\n */\nexport class ReceivedTokens {\n idToken: string;\n accessToken: string;\n idClaims?: object;\n state?: string;\n}\n\n/**\n * Represents the parsed and validated id_token.\n */\nexport interface ParsedIdToken {\n idToken: string;\n idTokenClaims: object;\n idTokenHeader: object;\n idTokenClaimsJson: string;\n idTokenHeaderJson: string;\n idTokenExpiresAt: number;\n}\n\n/**\n * Represents the response from the token endpoint\n * http://openid.net/specs/openid-connect-core-1_0.html#TokenEndpoint\n */\nexport interface TokenResponse {\n access_token: string;\n id_token: string;\n token_type: string;\n expires_in: number;\n refresh_token: string;\n scope: string;\n state?: string;\n}\n\n/**\n * Represents the response from the user info endpoint\n * http://openid.net/specs/openid-connect-core-1_0.html#UserInfo\n */\nexport interface UserInfo {\n sub: string;\n [key: string]: any;\n}\n\n/**\n * Represents an OpenID Connect discovery document\n */\nexport interface OidcDiscoveryDoc {\n issuer: string;\n authorization_endpoint: string;\n token_endpoint: string;\n token_endpoint_auth_methods_supported: string[];\n token_endpoint_auth_signing_alg_values_supported: string[];\n userinfo_endpoint: string;\n check_session_iframe: string;\n end_session_endpoint: string;\n jwks_uri: string;\n registration_endpoint: string;\n scopes_supported: string[];\n response_types_supported: string[];\n acr_values_supported: string[];\n response_modes_supported: string[];\n grant_types_supported: string[];\n subject_types_supported: string[];\n userinfo_signing_alg_values_supported: string[];\n userinfo_encryption_alg_values_supported: string[];\n userinfo_encryption_enc_values_supported: string[];\n id_token_signing_alg_values_supported: string[];\n id_token_encryption_alg_values_supported: string[];\n id_token_encryption_enc_values_supported: string[];\n request_object_signing_alg_values_supported: string[];\n display_values_supported: string[];\n claim_types_supported: string[];\n claims_supported: string[];\n claims_parameter_supported: boolean;\n service_documentation: string;\n ui_locales_supported: string[];\n revocation_endpoint: string;\n}\n\n \n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"modules/OAuthModule.html":{"url":"modules/OAuthModule.html","title":"module - OAuthModule","body":"\n \n\n\n\n\n Modules\n OAuthModule\n\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n\n \n File\n \n \n projects/lib/src/angular-oauth-oidc.module.ts\n \n\n\n\n\n\n \n \n \n \n\n \n \n \n Methods\n \n \n \n \n \n \n \n Static\n forRoot\n \n \n \n \n \n \n \n forRoot(config: OAuthModuleConfig, validationHandlerClass)\n \n \n\n\n \n \n Defined in projects/lib/src/angular-oauth-oidc.module.ts:30\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n Default value\n \n \n \n \n config\n \n OAuthModuleConfig\n \n\n \n No\n \n\n \n null\n \n\n \n \n validationHandlerClass\n \n \n\n \n No\n \n\n \n NullValidationHandler\n \n\n \n \n \n \n \n \n \n Returns : ModuleWithProviders\n\n \n \n \n \n \n \n \n \n\n \n\n\n \n import { DateTimeProvider, SystemDateTimeProvider } from './date-time-provider';\nimport { OAuthStorage, OAuthLogger } from './types';\nimport { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\n\nimport { OAuthService } from './oauth-service';\nimport { UrlHelperService } from './url-helper.service';\n\nimport { OAuthModuleConfig } from './oauth-module.config';\nimport {\n OAuthResourceServerErrorHandler,\n OAuthNoopResourceServerErrorHandler,\n} from './interceptors/resource-server-error-handler';\nimport { DefaultOAuthInterceptor } from './interceptors/default-oauth.interceptor';\nimport { ValidationHandler } from './token-validation/validation-handler';\nimport { NullValidationHandler } from './token-validation/null-validation-handler';\nimport { createDefaultLogger, createDefaultStorage } from './factories';\nimport {\n HashHandler,\n DefaultHashHandler,\n} from './token-validation/hash-handler';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [],\n exports: [],\n})\nexport class OAuthModule {\n static forRoot(\n config: OAuthModuleConfig = null,\n validationHandlerClass = NullValidationHandler\n ): ModuleWithProviders {\n return {\n ngModule: OAuthModule,\n providers: [\n OAuthService,\n UrlHelperService,\n { provide: OAuthLogger, useFactory: createDefaultLogger },\n { provide: OAuthStorage, useFactory: createDefaultStorage },\n { provide: ValidationHandler, useClass: validationHandlerClass },\n { provide: HashHandler, useClass: DefaultHashHandler },\n {\n provide: OAuthResourceServerErrorHandler,\n useClass: OAuthNoopResourceServerErrorHandler,\n },\n { provide: OAuthModuleConfig, useValue: config },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: DefaultOAuthInterceptor,\n multi: true,\n },\n { provide: DateTimeProvider, useClass: SystemDateTimeProvider },\n ],\n };\n }\n}\n\n \n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/OAuthModuleConfig.html":{"url":"classes/OAuthModuleConfig.html","title":"class - OAuthModuleConfig","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n OAuthModuleConfig\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/oauth-module.config.ts\n \n\n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n resourceServer\n \n \n \n \n\n\n\n\n\n\n \n \n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n resourceServer\n \n \n \n \n \n \n Type : OAuthResourceServerConfig\n\n \n \n \n \n Defined in projects/lib/src/oauth-module.config.ts:2\n \n \n\n\n \n \n\n\n\n\n\n\n\n\n \n\n\n \n export abstract class OAuthModuleConfig {\n resourceServer: OAuthResourceServerConfig;\n}\n\nexport abstract class OAuthResourceServerConfig {\n /**\n * Urls for which calls should be intercepted.\n * If there is an ResourceServerErrorHandler registered, it is used for them.\n * If sendAccessToken is set to true, the access_token is send to them too.\n */\n allowedUrls?: Array;\n sendAccessToken: boolean;\n customUrlValidation?: (url: string) => boolean;\n}\n\n \n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/OAuthNoopResourceServerErrorHandler.html":{"url":"classes/OAuthNoopResourceServerErrorHandler.html","title":"class - OAuthNoopResourceServerErrorHandler","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n OAuthNoopResourceServerErrorHandler\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/interceptors/resource-server-error-handler.ts\n \n\n\n\n\n \n Implements\n \n \n OAuthResourceServerErrorHandler\n \n\n\n \n Index\n \n \n\n \n \n Methods\n \n \n \n \n \n \n handleError\n \n \n \n \n\n\n\n\n\n \n \n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n handleError\n \n \n \n \n \n \nhandleError(err: HttpResponse)\n \n \n\n\n \n \n Defined in projects/lib/src/interceptors/resource-server-error-handler.ts:11\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n err\n \n HttpResponse\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : Observable\n\n \n \n \n \n \n \n \n \n\n\n\n\n\n\n \n\n\n \n import { HttpResponse } from '@angular/common/http';\nimport { Observable, throwError } from 'rxjs';\n\nexport abstract class OAuthResourceServerErrorHandler {\n abstract handleError(err: HttpResponse): Observable;\n}\n\nexport class OAuthNoopResourceServerErrorHandler\n implements OAuthResourceServerErrorHandler\n{\n handleError(err: HttpResponse): Observable {\n return throwError(err);\n }\n}\n\n \n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/OAuthResourceServerConfig.html":{"url":"classes/OAuthResourceServerConfig.html","title":"class - OAuthResourceServerConfig","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n OAuthResourceServerConfig\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/oauth-module.config.ts\n \n\n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Optional\n allowedUrls\n \n \n Optional\n customUrlValidation\n \n \n sendAccessToken\n \n \n \n \n\n\n\n\n\n\n \n \n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n Optional\n allowedUrls\n \n \n \n \n \n \n Type : Array\n\n \n \n \n \n Defined in projects/lib/src/oauth-module.config.ts:11\n \n \n\n \n \n Urls for which calls should be intercepted.\nIf there is an ResourceServerErrorHandler registered, it is used for them.\nIf sendAccessToken is set to true, the access_token is send to them too.\n\n \n \n\n \n \n \n \n \n \n \n \n Optional\n customUrlValidation\n \n \n \n \n \n \n Type : function\n\n \n \n \n \n Defined in projects/lib/src/oauth-module.config.ts:13\n \n \n\n\n \n \n \n \n \n \n \n \n sendAccessToken\n \n \n \n \n \n \n Type : boolean\n\n \n \n \n \n Defined in projects/lib/src/oauth-module.config.ts:12\n \n \n\n\n \n \n\n\n\n\n\n\n\n\n \n\n\n \n export abstract class OAuthModuleConfig {\n resourceServer: OAuthResourceServerConfig;\n}\n\nexport abstract class OAuthResourceServerConfig {\n /**\n * Urls for which calls should be intercepted.\n * If there is an ResourceServerErrorHandler registered, it is used for them.\n * If sendAccessToken is set to true, the access_token is send to them too.\n */\n allowedUrls?: Array;\n sendAccessToken: boolean;\n customUrlValidation?: (url: string) => boolean;\n}\n\n \n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/OAuthResourceServerErrorHandler.html":{"url":"classes/OAuthResourceServerErrorHandler.html","title":"class - OAuthResourceServerErrorHandler","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n OAuthResourceServerErrorHandler\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/interceptors/resource-server-error-handler.ts\n \n\n\n\n\n\n\n \n Index\n \n \n\n \n \n Methods\n \n \n \n \n \n \n Abstract\n handleError\n \n \n \n \n\n\n\n\n\n \n \n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n Abstract\n handleError\n \n \n \n \n \n \n \n handleError(err: HttpResponse)\n \n \n\n\n \n \n Defined in projects/lib/src/interceptors/resource-server-error-handler.ts:5\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n err\n \n HttpResponse\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : Observable\n\n \n \n \n \n \n \n \n \n\n\n\n\n\n\n \n\n\n \n import { HttpResponse } from '@angular/common/http';\nimport { Observable, throwError } from 'rxjs';\n\nexport abstract class OAuthResourceServerErrorHandler {\n abstract handleError(err: HttpResponse): Observable;\n}\n\nexport class OAuthNoopResourceServerErrorHandler\n implements OAuthResourceServerErrorHandler\n{\n handleError(err: HttpResponse): Observable {\n return throwError(err);\n }\n}\n\n \n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/OAuthStorage.html":{"url":"classes/OAuthStorage.html","title":"class - OAuthStorage","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n OAuthStorage\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/types.ts\n \n\n\n \n Description\n \n \n Defines a simple storage that can be used for\nstoring the tokens at client side.\nIs compatible to localStorage and sessionStorage,\nbut you can also create your own implementations.\n\n \n\n\n\n\n \n Index\n \n \n\n \n \n Methods\n \n \n \n \n \n \n Abstract\n getItem\n \n \n Abstract\n removeItem\n \n \n Abstract\n setItem\n \n \n \n \n\n\n\n\n\n \n \n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n Abstract\n getItem\n \n \n \n \n \n \n \n getItem(key: string)\n \n \n\n\n \n \n Defined in projects/lib/src/types.ts:98\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n key\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : string | null\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Abstract\n removeItem\n \n \n \n \n \n \n \n removeItem(key: string)\n \n \n\n\n \n \n Defined in projects/lib/src/types.ts:99\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n key\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Abstract\n setItem\n \n \n \n \n \n \n \n setItem(key: string, data: string)\n \n \n\n\n \n \n Defined in projects/lib/src/types.ts:100\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n key\n \n string\n \n\n \n No\n \n\n\n \n \n data\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n\n\n\n\n\n\n \n\n\n \n import { Injectable } from '@angular/core';\n\n/**\n * Additional options that can be passed to tryLogin.\n */\nexport class LoginOptions {\n /**\n * Is called, after a token has been received and\n * successfully validated.\n *\n * Deprecated: Use property ``events`` on OAuthService instead.\n */\n onTokenReceived?: (receivedTokens: ReceivedTokens) => void;\n\n /**\n * Hook, to validate the received tokens.\n *\n * Deprecated: Use property ``tokenValidationHandler`` on OAuthService instead.\n */\n validationHandler?: (receivedTokens: ReceivedTokens) => Promise;\n\n /**\n * Called when tryLogin detects that the auth server\n * included an error message into the hash fragment.\n *\n * Deprecated: Use property ``events`` on OAuthService instead.\n */\n onLoginError?: (params: object) => void;\n\n /**\n * A custom hash fragment to be used instead of the\n * actual one. This is used for silent refreshes, to\n * pass the iframes hash fragment to this method, and\n * is also used by popup flows in the same manner.\n * This can be used with code flow, where is must be set\n * to a hash symbol followed by the querystring. The\n * question mark is optional, but may be present following\n * the hash symbol.\n */\n customHashFragment?: string;\n\n /**\n * Set this to true to disable the oauth2 state\n * check which is a best practice to avoid\n * security attacks.\n * As OIDC defines a nonce check that includes\n * this, this can be set to true when only doing\n * OIDC.\n */\n disableOAuth2StateCheck?: boolean;\n\n /**\n * Set this to true to disable the nonce\n * check which is used to avoid\n * replay attacks.\n * This flag should never be true in\n * production environments.\n */\n disableNonceCheck? = false;\n\n /**\n * Normally, you want to clear your hash fragment after\n * the lib read the token(s) so that they are not displayed\n * anymore in the url. If not, set this to true. For code flow\n * this controls removing query string values.\n */\n preventClearHashAfterLogin? = false;\n\n /**\n * Set this for code flow if you used a custom redirect Uri\n * when retrieving the code. This is used internally for silent\n * refresh and popup flows.\n */\n customRedirectUri?: string;\n}\n\n/**\n * Defines the logging interface the OAuthService uses\n * internally. Is compatible with the `console` object,\n * but you can provide your own implementation as well\n * through dependency injection.\n */\nexport abstract class OAuthLogger {\n abstract debug(message?: any, ...optionalParams: any[]): void;\n abstract info(message?: any, ...optionalParams: any[]): void;\n abstract log(message?: any, ...optionalParams: any[]): void;\n abstract warn(message?: any, ...optionalParams: any[]): void;\n abstract error(message?: any, ...optionalParams: any[]): void;\n}\n\n/**\n * Defines a simple storage that can be used for\n * storing the tokens at client side.\n * Is compatible to localStorage and sessionStorage,\n * but you can also create your own implementations.\n */\nexport abstract class OAuthStorage {\n abstract getItem(key: string): string | null;\n abstract removeItem(key: string): void;\n abstract setItem(key: string, data: string): void;\n}\n\n@Injectable()\nexport class MemoryStorage implements OAuthStorage {\n private data = new Map();\n\n getItem(key: string): string {\n return this.data.get(key);\n }\n\n removeItem(key: string): void {\n this.data.delete(key);\n }\n\n setItem(key: string, data: string): void {\n this.data.set(key, data);\n }\n}\n\n/**\n * Represents the received tokens, the received state\n * and the parsed claims from the id-token.\n */\nexport class ReceivedTokens {\n idToken: string;\n accessToken: string;\n idClaims?: object;\n state?: string;\n}\n\n/**\n * Represents the parsed and validated id_token.\n */\nexport interface ParsedIdToken {\n idToken: string;\n idTokenClaims: object;\n idTokenHeader: object;\n idTokenClaimsJson: string;\n idTokenHeaderJson: string;\n idTokenExpiresAt: number;\n}\n\n/**\n * Represents the response from the token endpoint\n * http://openid.net/specs/openid-connect-core-1_0.html#TokenEndpoint\n */\nexport interface TokenResponse {\n access_token: string;\n id_token: string;\n token_type: string;\n expires_in: number;\n refresh_token: string;\n scope: string;\n state?: string;\n}\n\n/**\n * Represents the response from the user info endpoint\n * http://openid.net/specs/openid-connect-core-1_0.html#UserInfo\n */\nexport interface UserInfo {\n sub: string;\n [key: string]: any;\n}\n\n/**\n * Represents an OpenID Connect discovery document\n */\nexport interface OidcDiscoveryDoc {\n issuer: string;\n authorization_endpoint: string;\n token_endpoint: string;\n token_endpoint_auth_methods_supported: string[];\n token_endpoint_auth_signing_alg_values_supported: string[];\n userinfo_endpoint: string;\n check_session_iframe: string;\n end_session_endpoint: string;\n jwks_uri: string;\n registration_endpoint: string;\n scopes_supported: string[];\n response_types_supported: string[];\n acr_values_supported: string[];\n response_modes_supported: string[];\n grant_types_supported: string[];\n subject_types_supported: string[];\n userinfo_signing_alg_values_supported: string[];\n userinfo_encryption_alg_values_supported: string[];\n userinfo_encryption_enc_values_supported: string[];\n id_token_signing_alg_values_supported: string[];\n id_token_encryption_alg_values_supported: string[];\n id_token_encryption_enc_values_supported: string[];\n request_object_signing_alg_values_supported: string[];\n display_values_supported: string[];\n claim_types_supported: string[];\n claims_supported: string[];\n claims_parameter_supported: boolean;\n service_documentation: string;\n ui_locales_supported: string[];\n revocation_endpoint: string;\n}\n\n \n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/OAuthSuccessEvent.html":{"url":"classes/OAuthSuccessEvent.html","title":"class - OAuthSuccessEvent","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n OAuthSuccessEvent\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/events.ts\n \n\n\n\n \n Extends\n \n \n OAuthEvent\n \n\n\n\n\n \n Constructor\n \n \n \n \nconstructor(type: EventType, info: any)\n \n \n \n \n Defined in projects/lib/src/events.ts:32\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n type\n \n \n EventType\n \n \n \n No\n \n \n \n \n info\n \n \n any\n \n \n \n No\n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n\n\n \n\n\n \n export type EventType =\n | 'discovery_document_loaded'\n | 'jwks_load_error'\n | 'invalid_nonce_in_state'\n | 'discovery_document_load_error'\n | 'discovery_document_validation_error'\n | 'user_profile_loaded'\n | 'user_profile_load_error'\n | 'token_received'\n | 'token_error'\n | 'code_error'\n | 'token_refreshed'\n | 'token_refresh_error'\n | 'silent_refresh_error'\n | 'silently_refreshed'\n | 'silent_refresh_timeout'\n | 'token_validation_error'\n | 'token_expires'\n | 'session_changed'\n | 'session_error'\n | 'session_terminated'\n | 'session_unchanged'\n | 'logout'\n | 'popup_closed'\n | 'popup_blocked'\n | 'token_revoke_error';\n\nexport abstract class OAuthEvent {\n constructor(readonly type: EventType) {}\n}\n\nexport class OAuthSuccessEvent extends OAuthEvent {\n constructor(type: EventType, readonly info: any = null) {\n super(type);\n }\n}\n\nexport class OAuthInfoEvent extends OAuthEvent {\n constructor(type: EventType, readonly info: any = null) {\n super(type);\n }\n}\n\nexport class OAuthErrorEvent extends OAuthEvent {\n constructor(\n type: EventType,\n readonly reason: object,\n readonly params: object = null\n ) {\n super(type);\n }\n}\n\n \n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"interfaces/OidcDiscoveryDoc.html":{"url":"interfaces/OidcDiscoveryDoc.html","title":"interface - OidcDiscoveryDoc","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n Interfaces\n \n OidcDiscoveryDoc\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/types.ts\n \n\n\n \n Description\n \n \n Represents an OpenID Connect discovery document\n\n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n \n acr_values_supported\n \n \n \n \n authorization_endpoint\n \n \n \n \n check_session_iframe\n \n \n \n \n claim_types_supported\n \n \n \n \n claims_parameter_supported\n \n \n \n \n claims_supported\n \n \n \n \n display_values_supported\n \n \n \n \n end_session_endpoint\n \n \n \n \n grant_types_supported\n \n \n \n \n id_token_encryption_alg_values_supported\n \n \n \n \n id_token_encryption_enc_values_supported\n \n \n \n \n id_token_signing_alg_values_supported\n \n \n \n \n issuer\n \n \n \n \n jwks_uri\n \n \n \n \n registration_endpoint\n \n \n \n \n request_object_signing_alg_values_supported\n \n \n \n \n response_modes_supported\n \n \n \n \n response_types_supported\n \n \n \n \n revocation_endpoint\n \n \n \n \n scopes_supported\n \n \n \n \n service_documentation\n \n \n \n \n subject_types_supported\n \n \n \n \n token_endpoint\n \n \n \n \n token_endpoint_auth_methods_supported\n \n \n \n \n token_endpoint_auth_signing_alg_values_supported\n \n \n \n \n ui_locales_supported\n \n \n \n \n userinfo_encryption_alg_values_supported\n \n \n \n \n userinfo_encryption_enc_values_supported\n \n \n \n \n userinfo_endpoint\n \n \n \n \n userinfo_signing_alg_values_supported\n \n \n \n \n \n \n \n \n\n\n\n \n Properties\n \n \n \n \n \n acr_values_supported\n \n \n \n \n \n \n \n \n acr_values_supported: string[]\n\n \n \n\n\n \n \n Type : string[]\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n authorization_endpoint\n \n \n \n \n \n \n \n \n authorization_endpoint: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n check_session_iframe\n \n \n \n \n \n \n \n \n check_session_iframe: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n claim_types_supported\n \n \n \n \n \n \n \n \n claim_types_supported: string[]\n\n \n \n\n\n \n \n Type : string[]\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n claims_parameter_supported\n \n \n \n \n \n \n \n \n claims_parameter_supported: boolean\n\n \n \n\n\n \n \n Type : boolean\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n claims_supported\n \n \n \n \n \n \n \n \n claims_supported: string[]\n\n \n \n\n\n \n \n Type : string[]\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n display_values_supported\n \n \n \n \n \n \n \n \n display_values_supported: string[]\n\n \n \n\n\n \n \n Type : string[]\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n end_session_endpoint\n \n \n \n \n \n \n \n \n end_session_endpoint: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n grant_types_supported\n \n \n \n \n \n \n \n \n grant_types_supported: string[]\n\n \n \n\n\n \n \n Type : string[]\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n id_token_encryption_alg_values_supported\n \n \n \n \n \n \n \n \n id_token_encryption_alg_values_supported: string[]\n\n \n \n\n\n \n \n Type : string[]\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n id_token_encryption_enc_values_supported\n \n \n \n \n \n \n \n \n id_token_encryption_enc_values_supported: string[]\n\n \n \n\n\n \n \n Type : string[]\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n id_token_signing_alg_values_supported\n \n \n \n \n \n \n \n \n id_token_signing_alg_values_supported: string[]\n\n \n \n\n\n \n \n Type : string[]\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n issuer\n \n \n \n \n \n \n \n \n issuer: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n jwks_uri\n \n \n \n \n \n \n \n \n jwks_uri: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n registration_endpoint\n \n \n \n \n \n \n \n \n registration_endpoint: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n request_object_signing_alg_values_supported\n \n \n \n \n \n \n \n \n request_object_signing_alg_values_supported: string[]\n\n \n \n\n\n \n \n Type : string[]\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n response_modes_supported\n \n \n \n \n \n \n \n \n response_modes_supported: string[]\n\n \n \n\n\n \n \n Type : string[]\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n response_types_supported\n \n \n \n \n \n \n \n \n response_types_supported: string[]\n\n \n \n\n\n \n \n Type : string[]\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n revocation_endpoint\n \n \n \n \n \n \n \n \n revocation_endpoint: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n scopes_supported\n \n \n \n \n \n \n \n \n scopes_supported: string[]\n\n \n \n\n\n \n \n Type : string[]\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n service_documentation\n \n \n \n \n \n \n \n \n service_documentation: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n subject_types_supported\n \n \n \n \n \n \n \n \n subject_types_supported: string[]\n\n \n \n\n\n \n \n Type : string[]\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n token_endpoint\n \n \n \n \n \n \n \n \n token_endpoint: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n token_endpoint_auth_methods_supported\n \n \n \n \n \n \n \n \n token_endpoint_auth_methods_supported: string[]\n\n \n \n\n\n \n \n Type : string[]\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n token_endpoint_auth_signing_alg_values_supported\n \n \n \n \n \n \n \n \n token_endpoint_auth_signing_alg_values_supported: string[]\n\n \n \n\n\n \n \n Type : string[]\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n ui_locales_supported\n \n \n \n \n \n \n \n \n ui_locales_supported: string[]\n\n \n \n\n\n \n \n Type : string[]\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n userinfo_encryption_alg_values_supported\n \n \n \n \n \n \n \n \n userinfo_encryption_alg_values_supported: string[]\n\n \n \n\n\n \n \n Type : string[]\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n userinfo_encryption_enc_values_supported\n \n \n \n \n \n \n \n \n userinfo_encryption_enc_values_supported: string[]\n\n \n \n\n\n \n \n Type : string[]\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n userinfo_endpoint\n \n \n \n \n \n \n \n \n userinfo_endpoint: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n userinfo_signing_alg_values_supported\n \n \n \n \n \n \n \n \n userinfo_signing_alg_values_supported: string[]\n\n \n \n\n\n \n \n Type : string[]\n\n \n \n\n\n\n\n\n \n \n \n \n\n\n \n import { Injectable } from '@angular/core';\n\n/**\n * Additional options that can be passed to tryLogin.\n */\nexport class LoginOptions {\n /**\n * Is called, after a token has been received and\n * successfully validated.\n *\n * Deprecated: Use property ``events`` on OAuthService instead.\n */\n onTokenReceived?: (receivedTokens: ReceivedTokens) => void;\n\n /**\n * Hook, to validate the received tokens.\n *\n * Deprecated: Use property ``tokenValidationHandler`` on OAuthService instead.\n */\n validationHandler?: (receivedTokens: ReceivedTokens) => Promise;\n\n /**\n * Called when tryLogin detects that the auth server\n * included an error message into the hash fragment.\n *\n * Deprecated: Use property ``events`` on OAuthService instead.\n */\n onLoginError?: (params: object) => void;\n\n /**\n * A custom hash fragment to be used instead of the\n * actual one. This is used for silent refreshes, to\n * pass the iframes hash fragment to this method, and\n * is also used by popup flows in the same manner.\n * This can be used with code flow, where is must be set\n * to a hash symbol followed by the querystring. The\n * question mark is optional, but may be present following\n * the hash symbol.\n */\n customHashFragment?: string;\n\n /**\n * Set this to true to disable the oauth2 state\n * check which is a best practice to avoid\n * security attacks.\n * As OIDC defines a nonce check that includes\n * this, this can be set to true when only doing\n * OIDC.\n */\n disableOAuth2StateCheck?: boolean;\n\n /**\n * Set this to true to disable the nonce\n * check which is used to avoid\n * replay attacks.\n * This flag should never be true in\n * production environments.\n */\n disableNonceCheck? = false;\n\n /**\n * Normally, you want to clear your hash fragment after\n * the lib read the token(s) so that they are not displayed\n * anymore in the url. If not, set this to true. For code flow\n * this controls removing query string values.\n */\n preventClearHashAfterLogin? = false;\n\n /**\n * Set this for code flow if you used a custom redirect Uri\n * when retrieving the code. This is used internally for silent\n * refresh and popup flows.\n */\n customRedirectUri?: string;\n}\n\n/**\n * Defines the logging interface the OAuthService uses\n * internally. Is compatible with the `console` object,\n * but you can provide your own implementation as well\n * through dependency injection.\n */\nexport abstract class OAuthLogger {\n abstract debug(message?: any, ...optionalParams: any[]): void;\n abstract info(message?: any, ...optionalParams: any[]): void;\n abstract log(message?: any, ...optionalParams: any[]): void;\n abstract warn(message?: any, ...optionalParams: any[]): void;\n abstract error(message?: any, ...optionalParams: any[]): void;\n}\n\n/**\n * Defines a simple storage that can be used for\n * storing the tokens at client side.\n * Is compatible to localStorage and sessionStorage,\n * but you can also create your own implementations.\n */\nexport abstract class OAuthStorage {\n abstract getItem(key: string): string | null;\n abstract removeItem(key: string): void;\n abstract setItem(key: string, data: string): void;\n}\n\n@Injectable()\nexport class MemoryStorage implements OAuthStorage {\n private data = new Map();\n\n getItem(key: string): string {\n return this.data.get(key);\n }\n\n removeItem(key: string): void {\n this.data.delete(key);\n }\n\n setItem(key: string, data: string): void {\n this.data.set(key, data);\n }\n}\n\n/**\n * Represents the received tokens, the received state\n * and the parsed claims from the id-token.\n */\nexport class ReceivedTokens {\n idToken: string;\n accessToken: string;\n idClaims?: object;\n state?: string;\n}\n\n/**\n * Represents the parsed and validated id_token.\n */\nexport interface ParsedIdToken {\n idToken: string;\n idTokenClaims: object;\n idTokenHeader: object;\n idTokenClaimsJson: string;\n idTokenHeaderJson: string;\n idTokenExpiresAt: number;\n}\n\n/**\n * Represents the response from the token endpoint\n * http://openid.net/specs/openid-connect-core-1_0.html#TokenEndpoint\n */\nexport interface TokenResponse {\n access_token: string;\n id_token: string;\n token_type: string;\n expires_in: number;\n refresh_token: string;\n scope: string;\n state?: string;\n}\n\n/**\n * Represents the response from the user info endpoint\n * http://openid.net/specs/openid-connect-core-1_0.html#UserInfo\n */\nexport interface UserInfo {\n sub: string;\n [key: string]: any;\n}\n\n/**\n * Represents an OpenID Connect discovery document\n */\nexport interface OidcDiscoveryDoc {\n issuer: string;\n authorization_endpoint: string;\n token_endpoint: string;\n token_endpoint_auth_methods_supported: string[];\n token_endpoint_auth_signing_alg_values_supported: string[];\n userinfo_endpoint: string;\n check_session_iframe: string;\n end_session_endpoint: string;\n jwks_uri: string;\n registration_endpoint: string;\n scopes_supported: string[];\n response_types_supported: string[];\n acr_values_supported: string[];\n response_modes_supported: string[];\n grant_types_supported: string[];\n subject_types_supported: string[];\n userinfo_signing_alg_values_supported: string[];\n userinfo_encryption_alg_values_supported: string[];\n userinfo_encryption_enc_values_supported: string[];\n id_token_signing_alg_values_supported: string[];\n id_token_encryption_alg_values_supported: string[];\n id_token_encryption_enc_values_supported: string[];\n request_object_signing_alg_values_supported: string[];\n display_values_supported: string[];\n claim_types_supported: string[];\n claims_supported: string[];\n claims_parameter_supported: boolean;\n service_documentation: string;\n ui_locales_supported: string[];\n revocation_endpoint: string;\n}\n\n \n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"interfaces/ParsedIdToken.html":{"url":"interfaces/ParsedIdToken.html","title":"interface - ParsedIdToken","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n Interfaces\n \n ParsedIdToken\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/types.ts\n \n\n\n \n Description\n \n \n Represents the parsed and validated id_token.\n\n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n \n idToken\n \n \n \n \n idTokenClaims\n \n \n \n \n idTokenClaimsJson\n \n \n \n \n idTokenExpiresAt\n \n \n \n \n idTokenHeader\n \n \n \n \n idTokenHeaderJson\n \n \n \n \n \n \n \n \n\n\n\n \n Properties\n \n \n \n \n \n idToken\n \n \n \n \n \n \n \n \n idToken: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n idTokenClaims\n \n \n \n \n \n \n \n \n idTokenClaims: object\n\n \n \n\n\n \n \n Type : object\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n idTokenClaimsJson\n \n \n \n \n \n \n \n \n idTokenClaimsJson: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n idTokenExpiresAt\n \n \n \n \n \n \n \n \n idTokenExpiresAt: number\n\n \n \n\n\n \n \n Type : number\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n idTokenHeader\n \n \n \n \n \n \n \n \n idTokenHeader: object\n\n \n \n\n\n \n \n Type : object\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n idTokenHeaderJson\n \n \n \n \n \n \n \n \n idTokenHeaderJson: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n\n\n \n import { Injectable } from '@angular/core';\n\n/**\n * Additional options that can be passed to tryLogin.\n */\nexport class LoginOptions {\n /**\n * Is called, after a token has been received and\n * successfully validated.\n *\n * Deprecated: Use property ``events`` on OAuthService instead.\n */\n onTokenReceived?: (receivedTokens: ReceivedTokens) => void;\n\n /**\n * Hook, to validate the received tokens.\n *\n * Deprecated: Use property ``tokenValidationHandler`` on OAuthService instead.\n */\n validationHandler?: (receivedTokens: ReceivedTokens) => Promise;\n\n /**\n * Called when tryLogin detects that the auth server\n * included an error message into the hash fragment.\n *\n * Deprecated: Use property ``events`` on OAuthService instead.\n */\n onLoginError?: (params: object) => void;\n\n /**\n * A custom hash fragment to be used instead of the\n * actual one. This is used for silent refreshes, to\n * pass the iframes hash fragment to this method, and\n * is also used by popup flows in the same manner.\n * This can be used with code flow, where is must be set\n * to a hash symbol followed by the querystring. The\n * question mark is optional, but may be present following\n * the hash symbol.\n */\n customHashFragment?: string;\n\n /**\n * Set this to true to disable the oauth2 state\n * check which is a best practice to avoid\n * security attacks.\n * As OIDC defines a nonce check that includes\n * this, this can be set to true when only doing\n * OIDC.\n */\n disableOAuth2StateCheck?: boolean;\n\n /**\n * Set this to true to disable the nonce\n * check which is used to avoid\n * replay attacks.\n * This flag should never be true in\n * production environments.\n */\n disableNonceCheck? = false;\n\n /**\n * Normally, you want to clear your hash fragment after\n * the lib read the token(s) so that they are not displayed\n * anymore in the url. If not, set this to true. For code flow\n * this controls removing query string values.\n */\n preventClearHashAfterLogin? = false;\n\n /**\n * Set this for code flow if you used a custom redirect Uri\n * when retrieving the code. This is used internally for silent\n * refresh and popup flows.\n */\n customRedirectUri?: string;\n}\n\n/**\n * Defines the logging interface the OAuthService uses\n * internally. Is compatible with the `console` object,\n * but you can provide your own implementation as well\n * through dependency injection.\n */\nexport abstract class OAuthLogger {\n abstract debug(message?: any, ...optionalParams: any[]): void;\n abstract info(message?: any, ...optionalParams: any[]): void;\n abstract log(message?: any, ...optionalParams: any[]): void;\n abstract warn(message?: any, ...optionalParams: any[]): void;\n abstract error(message?: any, ...optionalParams: any[]): void;\n}\n\n/**\n * Defines a simple storage that can be used for\n * storing the tokens at client side.\n * Is compatible to localStorage and sessionStorage,\n * but you can also create your own implementations.\n */\nexport abstract class OAuthStorage {\n abstract getItem(key: string): string | null;\n abstract removeItem(key: string): void;\n abstract setItem(key: string, data: string): void;\n}\n\n@Injectable()\nexport class MemoryStorage implements OAuthStorage {\n private data = new Map();\n\n getItem(key: string): string {\n return this.data.get(key);\n }\n\n removeItem(key: string): void {\n this.data.delete(key);\n }\n\n setItem(key: string, data: string): void {\n this.data.set(key, data);\n }\n}\n\n/**\n * Represents the received tokens, the received state\n * and the parsed claims from the id-token.\n */\nexport class ReceivedTokens {\n idToken: string;\n accessToken: string;\n idClaims?: object;\n state?: string;\n}\n\n/**\n * Represents the parsed and validated id_token.\n */\nexport interface ParsedIdToken {\n idToken: string;\n idTokenClaims: object;\n idTokenHeader: object;\n idTokenClaimsJson: string;\n idTokenHeaderJson: string;\n idTokenExpiresAt: number;\n}\n\n/**\n * Represents the response from the token endpoint\n * http://openid.net/specs/openid-connect-core-1_0.html#TokenEndpoint\n */\nexport interface TokenResponse {\n access_token: string;\n id_token: string;\n token_type: string;\n expires_in: number;\n refresh_token: string;\n scope: string;\n state?: string;\n}\n\n/**\n * Represents the response from the user info endpoint\n * http://openid.net/specs/openid-connect-core-1_0.html#UserInfo\n */\nexport interface UserInfo {\n sub: string;\n [key: string]: any;\n}\n\n/**\n * Represents an OpenID Connect discovery document\n */\nexport interface OidcDiscoveryDoc {\n issuer: string;\n authorization_endpoint: string;\n token_endpoint: string;\n token_endpoint_auth_methods_supported: string[];\n token_endpoint_auth_signing_alg_values_supported: string[];\n userinfo_endpoint: string;\n check_session_iframe: string;\n end_session_endpoint: string;\n jwks_uri: string;\n registration_endpoint: string;\n scopes_supported: string[];\n response_types_supported: string[];\n acr_values_supported: string[];\n response_modes_supported: string[];\n grant_types_supported: string[];\n subject_types_supported: string[];\n userinfo_signing_alg_values_supported: string[];\n userinfo_encryption_alg_values_supported: string[];\n userinfo_encryption_enc_values_supported: string[];\n id_token_signing_alg_values_supported: string[];\n id_token_encryption_alg_values_supported: string[];\n id_token_encryption_enc_values_supported: string[];\n request_object_signing_alg_values_supported: string[];\n display_values_supported: string[];\n claim_types_supported: string[];\n claims_supported: string[];\n claims_parameter_supported: boolean;\n service_documentation: string;\n ui_locales_supported: string[];\n revocation_endpoint: string;\n}\n\n \n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/ReceivedTokens.html":{"url":"classes/ReceivedTokens.html","title":"class - ReceivedTokens","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n ReceivedTokens\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/types.ts\n \n\n\n \n Description\n \n \n Represents the received tokens, the received state\nand the parsed claims from the id-token.\n\n \n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n accessToken\n \n \n Optional\n idClaims\n \n \n idToken\n \n \n Optional\n state\n \n \n \n \n\n\n\n\n\n\n \n \n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n accessToken\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in projects/lib/src/types.ts:126\n \n \n\n\n \n \n \n \n \n \n \n \n Optional\n idClaims\n \n \n \n \n \n \n Type : object\n\n \n \n \n \n Defined in projects/lib/src/types.ts:127\n \n \n\n\n \n \n \n \n \n \n \n \n idToken\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in projects/lib/src/types.ts:125\n \n \n\n\n \n \n \n \n \n \n \n \n Optional\n state\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in projects/lib/src/types.ts:128\n \n \n\n\n \n \n\n\n\n\n\n\n\n\n \n\n\n \n import { Injectable } from '@angular/core';\n\n/**\n * Additional options that can be passed to tryLogin.\n */\nexport class LoginOptions {\n /**\n * Is called, after a token has been received and\n * successfully validated.\n *\n * Deprecated: Use property ``events`` on OAuthService instead.\n */\n onTokenReceived?: (receivedTokens: ReceivedTokens) => void;\n\n /**\n * Hook, to validate the received tokens.\n *\n * Deprecated: Use property ``tokenValidationHandler`` on OAuthService instead.\n */\n validationHandler?: (receivedTokens: ReceivedTokens) => Promise;\n\n /**\n * Called when tryLogin detects that the auth server\n * included an error message into the hash fragment.\n *\n * Deprecated: Use property ``events`` on OAuthService instead.\n */\n onLoginError?: (params: object) => void;\n\n /**\n * A custom hash fragment to be used instead of the\n * actual one. This is used for silent refreshes, to\n * pass the iframes hash fragment to this method, and\n * is also used by popup flows in the same manner.\n * This can be used with code flow, where is must be set\n * to a hash symbol followed by the querystring. The\n * question mark is optional, but may be present following\n * the hash symbol.\n */\n customHashFragment?: string;\n\n /**\n * Set this to true to disable the oauth2 state\n * check which is a best practice to avoid\n * security attacks.\n * As OIDC defines a nonce check that includes\n * this, this can be set to true when only doing\n * OIDC.\n */\n disableOAuth2StateCheck?: boolean;\n\n /**\n * Set this to true to disable the nonce\n * check which is used to avoid\n * replay attacks.\n * This flag should never be true in\n * production environments.\n */\n disableNonceCheck? = false;\n\n /**\n * Normally, you want to clear your hash fragment after\n * the lib read the token(s) so that they are not displayed\n * anymore in the url. If not, set this to true. For code flow\n * this controls removing query string values.\n */\n preventClearHashAfterLogin? = false;\n\n /**\n * Set this for code flow if you used a custom redirect Uri\n * when retrieving the code. This is used internally for silent\n * refresh and popup flows.\n */\n customRedirectUri?: string;\n}\n\n/**\n * Defines the logging interface the OAuthService uses\n * internally. Is compatible with the `console` object,\n * but you can provide your own implementation as well\n * through dependency injection.\n */\nexport abstract class OAuthLogger {\n abstract debug(message?: any, ...optionalParams: any[]): void;\n abstract info(message?: any, ...optionalParams: any[]): void;\n abstract log(message?: any, ...optionalParams: any[]): void;\n abstract warn(message?: any, ...optionalParams: any[]): void;\n abstract error(message?: any, ...optionalParams: any[]): void;\n}\n\n/**\n * Defines a simple storage that can be used for\n * storing the tokens at client side.\n * Is compatible to localStorage and sessionStorage,\n * but you can also create your own implementations.\n */\nexport abstract class OAuthStorage {\n abstract getItem(key: string): string | null;\n abstract removeItem(key: string): void;\n abstract setItem(key: string, data: string): void;\n}\n\n@Injectable()\nexport class MemoryStorage implements OAuthStorage {\n private data = new Map();\n\n getItem(key: string): string {\n return this.data.get(key);\n }\n\n removeItem(key: string): void {\n this.data.delete(key);\n }\n\n setItem(key: string, data: string): void {\n this.data.set(key, data);\n }\n}\n\n/**\n * Represents the received tokens, the received state\n * and the parsed claims from the id-token.\n */\nexport class ReceivedTokens {\n idToken: string;\n accessToken: string;\n idClaims?: object;\n state?: string;\n}\n\n/**\n * Represents the parsed and validated id_token.\n */\nexport interface ParsedIdToken {\n idToken: string;\n idTokenClaims: object;\n idTokenHeader: object;\n idTokenClaimsJson: string;\n idTokenHeaderJson: string;\n idTokenExpiresAt: number;\n}\n\n/**\n * Represents the response from the token endpoint\n * http://openid.net/specs/openid-connect-core-1_0.html#TokenEndpoint\n */\nexport interface TokenResponse {\n access_token: string;\n id_token: string;\n token_type: string;\n expires_in: number;\n refresh_token: string;\n scope: string;\n state?: string;\n}\n\n/**\n * Represents the response from the user info endpoint\n * http://openid.net/specs/openid-connect-core-1_0.html#UserInfo\n */\nexport interface UserInfo {\n sub: string;\n [key: string]: any;\n}\n\n/**\n * Represents an OpenID Connect discovery document\n */\nexport interface OidcDiscoveryDoc {\n issuer: string;\n authorization_endpoint: string;\n token_endpoint: string;\n token_endpoint_auth_methods_supported: string[];\n token_endpoint_auth_signing_alg_values_supported: string[];\n userinfo_endpoint: string;\n check_session_iframe: string;\n end_session_endpoint: string;\n jwks_uri: string;\n registration_endpoint: string;\n scopes_supported: string[];\n response_types_supported: string[];\n acr_values_supported: string[];\n response_modes_supported: string[];\n grant_types_supported: string[];\n subject_types_supported: string[];\n userinfo_signing_alg_values_supported: string[];\n userinfo_encryption_alg_values_supported: string[];\n userinfo_encryption_enc_values_supported: string[];\n id_token_signing_alg_values_supported: string[];\n id_token_encryption_alg_values_supported: string[];\n id_token_encryption_enc_values_supported: string[];\n request_object_signing_alg_values_supported: string[];\n display_values_supported: string[];\n claim_types_supported: string[];\n claims_supported: string[];\n claims_parameter_supported: boolean;\n service_documentation: string;\n ui_locales_supported: string[];\n revocation_endpoint: string;\n}\n\n \n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"injectables/SystemDateTimeProvider.html":{"url":"injectables/SystemDateTimeProvider.html","title":"injectable - SystemDateTimeProvider","body":"\n \n\n\n\n\n\n\n\n\n Injectables\n SystemDateTimeProvider\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/date-time-provider.ts\n \n\n\n\n \n Extends\n \n \n DateTimeProvider\n \n\n\n \n Index\n \n \n\n \n \n Methods\n \n \n \n \n \n \n new\n \n \n now\n \n \n \n \n\n\n\n\n\n \n \n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n new\n \n \n \n \n \n \nnew()\n \n \n\n\n \n \n Inherited from DateTimeProvider\n\n \n \n \n \n Defined in DateTimeProvider:14\n\n \n \n\n\n \n \n\n \n Returns : Date\n\n \n \n \n \n \n \n \n \n \n \n \n now\n \n \n \n \n \n \nnow()\n \n \n\n\n \n \n Inherited from DateTimeProvider\n\n \n \n \n \n Defined in DateTimeProvider:10\n\n \n \n\n\n \n \n\n \n Returns : number\n\n \n \n \n \n \n\n\n \n\n\n \n import { Injectable } from '@angular/core';\n\nexport abstract class DateTimeProvider {\n abstract now(): number;\n abstract new(): Date;\n}\n\n@Injectable()\nexport class SystemDateTimeProvider extends DateTimeProvider {\n now(): number {\n return Date.now();\n }\n\n new(): Date {\n return new Date();\n }\n}\n\n \n\n\n\n\n\n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"interfaces/TokenResponse.html":{"url":"interfaces/TokenResponse.html","title":"interface - TokenResponse","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n Interfaces\n \n TokenResponse\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/types.ts\n \n\n\n \n Description\n \n \n Represents the response from the token endpoint\nhttp://openid.net/specs/openid-connect-core-1_0.html#TokenEndpoint\n\n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n \n access_token\n \n \n \n \n expires_in\n \n \n \n \n id_token\n \n \n \n \n refresh_token\n \n \n \n \n scope\n \n \n \n Optional\n \n state\n \n \n \n \n token_type\n \n \n \n \n \n \n \n \n\n\n\n \n Properties\n \n \n \n \n \n access_token\n \n \n \n \n \n \n \n \n access_token: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n expires_in\n \n \n \n \n \n \n \n \n expires_in: number\n\n \n \n\n\n \n \n Type : number\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n id_token\n \n \n \n \n \n \n \n \n id_token: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n refresh_token\n \n \n \n \n \n \n \n \n refresh_token: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n scope\n \n \n \n \n \n \n \n \n scope: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n state\n \n \n \n \n \n \n \n \n state: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n \n \n Optional\n \n \n\n\n\n\n \n \n \n \n \n \n \n token_type\n \n \n \n \n \n \n \n \n token_type: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n\n\n \n import { Injectable } from '@angular/core';\n\n/**\n * Additional options that can be passed to tryLogin.\n */\nexport class LoginOptions {\n /**\n * Is called, after a token has been received and\n * successfully validated.\n *\n * Deprecated: Use property ``events`` on OAuthService instead.\n */\n onTokenReceived?: (receivedTokens: ReceivedTokens) => void;\n\n /**\n * Hook, to validate the received tokens.\n *\n * Deprecated: Use property ``tokenValidationHandler`` on OAuthService instead.\n */\n validationHandler?: (receivedTokens: ReceivedTokens) => Promise;\n\n /**\n * Called when tryLogin detects that the auth server\n * included an error message into the hash fragment.\n *\n * Deprecated: Use property ``events`` on OAuthService instead.\n */\n onLoginError?: (params: object) => void;\n\n /**\n * A custom hash fragment to be used instead of the\n * actual one. This is used for silent refreshes, to\n * pass the iframes hash fragment to this method, and\n * is also used by popup flows in the same manner.\n * This can be used with code flow, where is must be set\n * to a hash symbol followed by the querystring. The\n * question mark is optional, but may be present following\n * the hash symbol.\n */\n customHashFragment?: string;\n\n /**\n * Set this to true to disable the oauth2 state\n * check which is a best practice to avoid\n * security attacks.\n * As OIDC defines a nonce check that includes\n * this, this can be set to true when only doing\n * OIDC.\n */\n disableOAuth2StateCheck?: boolean;\n\n /**\n * Set this to true to disable the nonce\n * check which is used to avoid\n * replay attacks.\n * This flag should never be true in\n * production environments.\n */\n disableNonceCheck? = false;\n\n /**\n * Normally, you want to clear your hash fragment after\n * the lib read the token(s) so that they are not displayed\n * anymore in the url. If not, set this to true. For code flow\n * this controls removing query string values.\n */\n preventClearHashAfterLogin? = false;\n\n /**\n * Set this for code flow if you used a custom redirect Uri\n * when retrieving the code. This is used internally for silent\n * refresh and popup flows.\n */\n customRedirectUri?: string;\n}\n\n/**\n * Defines the logging interface the OAuthService uses\n * internally. Is compatible with the `console` object,\n * but you can provide your own implementation as well\n * through dependency injection.\n */\nexport abstract class OAuthLogger {\n abstract debug(message?: any, ...optionalParams: any[]): void;\n abstract info(message?: any, ...optionalParams: any[]): void;\n abstract log(message?: any, ...optionalParams: any[]): void;\n abstract warn(message?: any, ...optionalParams: any[]): void;\n abstract error(message?: any, ...optionalParams: any[]): void;\n}\n\n/**\n * Defines a simple storage that can be used for\n * storing the tokens at client side.\n * Is compatible to localStorage and sessionStorage,\n * but you can also create your own implementations.\n */\nexport abstract class OAuthStorage {\n abstract getItem(key: string): string | null;\n abstract removeItem(key: string): void;\n abstract setItem(key: string, data: string): void;\n}\n\n@Injectable()\nexport class MemoryStorage implements OAuthStorage {\n private data = new Map();\n\n getItem(key: string): string {\n return this.data.get(key);\n }\n\n removeItem(key: string): void {\n this.data.delete(key);\n }\n\n setItem(key: string, data: string): void {\n this.data.set(key, data);\n }\n}\n\n/**\n * Represents the received tokens, the received state\n * and the parsed claims from the id-token.\n */\nexport class ReceivedTokens {\n idToken: string;\n accessToken: string;\n idClaims?: object;\n state?: string;\n}\n\n/**\n * Represents the parsed and validated id_token.\n */\nexport interface ParsedIdToken {\n idToken: string;\n idTokenClaims: object;\n idTokenHeader: object;\n idTokenClaimsJson: string;\n idTokenHeaderJson: string;\n idTokenExpiresAt: number;\n}\n\n/**\n * Represents the response from the token endpoint\n * http://openid.net/specs/openid-connect-core-1_0.html#TokenEndpoint\n */\nexport interface TokenResponse {\n access_token: string;\n id_token: string;\n token_type: string;\n expires_in: number;\n refresh_token: string;\n scope: string;\n state?: string;\n}\n\n/**\n * Represents the response from the user info endpoint\n * http://openid.net/specs/openid-connect-core-1_0.html#UserInfo\n */\nexport interface UserInfo {\n sub: string;\n [key: string]: any;\n}\n\n/**\n * Represents an OpenID Connect discovery document\n */\nexport interface OidcDiscoveryDoc {\n issuer: string;\n authorization_endpoint: string;\n token_endpoint: string;\n token_endpoint_auth_methods_supported: string[];\n token_endpoint_auth_signing_alg_values_supported: string[];\n userinfo_endpoint: string;\n check_session_iframe: string;\n end_session_endpoint: string;\n jwks_uri: string;\n registration_endpoint: string;\n scopes_supported: string[];\n response_types_supported: string[];\n acr_values_supported: string[];\n response_modes_supported: string[];\n grant_types_supported: string[];\n subject_types_supported: string[];\n userinfo_signing_alg_values_supported: string[];\n userinfo_encryption_alg_values_supported: string[];\n userinfo_encryption_enc_values_supported: string[];\n id_token_signing_alg_values_supported: string[];\n id_token_encryption_alg_values_supported: string[];\n id_token_encryption_enc_values_supported: string[];\n request_object_signing_alg_values_supported: string[];\n display_values_supported: string[];\n claim_types_supported: string[];\n claims_supported: string[];\n claims_parameter_supported: boolean;\n service_documentation: string;\n ui_locales_supported: string[];\n revocation_endpoint: string;\n}\n\n \n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"injectables/UrlHelperService.html":{"url":"injectables/UrlHelperService.html","title":"injectable - UrlHelperService","body":"\n \n\n\n\n\n\n\n\n\n Injectables\n UrlHelperService\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/url-helper.service.ts\n \n\n\n\n\n\n \n Index\n \n \n\n \n \n Methods\n \n \n \n \n \n \n Public\n getHashFragmentParams\n \n \n Public\n parseQueryString\n \n \n \n \n\n\n\n\n\n \n \n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n Public\n getHashFragmentParams\n \n \n \n \n \n \n \n getHashFragmentParams(customHashFragment?: string)\n \n \n\n\n \n \n Defined in projects/lib/src/url-helper.service.ts:5\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n customHashFragment\n \n string\n \n\n \n Yes\n \n\n\n \n \n \n \n \n \n \n Returns : object\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Public\n parseQueryString\n \n \n \n \n \n \n \n parseQueryString(queryString: string)\n \n \n\n\n \n \n Defined in projects/lib/src/url-helper.service.ts:25\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n queryString\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : object\n\n \n \n \n \n \n \n \n \n\n\n \n\n\n \n import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class UrlHelperService {\n public getHashFragmentParams(customHashFragment?: string): object {\n let hash = customHashFragment || window.location.hash;\n\n hash = decodeURIComponent(hash);\n\n if (hash.indexOf('#') !== 0) {\n return {};\n }\n\n const questionMarkPosition = hash.indexOf('?');\n\n if (questionMarkPosition > -1) {\n hash = hash.substr(questionMarkPosition + 1);\n } else {\n hash = hash.substr(1);\n }\n\n return this.parseQueryString(hash);\n }\n\n public parseQueryString(queryString: string): object {\n const data = {};\n let pairs, pair, separatorIndex, escapedKey, escapedValue, key, value;\n\n if (queryString === null) {\n return data;\n }\n\n pairs = queryString.split('&');\n\n for (let i = 0; i \n \n\n\n\n\n\n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"interfaces/UserInfo.html":{"url":"interfaces/UserInfo.html","title":"interface - UserInfo","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n Interfaces\n \n UserInfo\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/types.ts\n \n\n\n \n Description\n \n \n Represents the response from the user info endpoint\nhttp://openid.net/specs/openid-connect-core-1_0.html#UserInfo\n\n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n \n sub\n \n \n \n \n \n \n \n \n\n\n \n Indexable\n \n \n \n \n [key: string]: any\n\n \n \n \n \n Defined in projects/lib/src/types.ts:162\n \n \n \n \n\n\n \n Properties\n \n \n \n \n \n sub\n \n \n \n \n \n \n \n \n sub: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n\n\n \n import { Injectable } from '@angular/core';\n\n/**\n * Additional options that can be passed to tryLogin.\n */\nexport class LoginOptions {\n /**\n * Is called, after a token has been received and\n * successfully validated.\n *\n * Deprecated: Use property ``events`` on OAuthService instead.\n */\n onTokenReceived?: (receivedTokens: ReceivedTokens) => void;\n\n /**\n * Hook, to validate the received tokens.\n *\n * Deprecated: Use property ``tokenValidationHandler`` on OAuthService instead.\n */\n validationHandler?: (receivedTokens: ReceivedTokens) => Promise;\n\n /**\n * Called when tryLogin detects that the auth server\n * included an error message into the hash fragment.\n *\n * Deprecated: Use property ``events`` on OAuthService instead.\n */\n onLoginError?: (params: object) => void;\n\n /**\n * A custom hash fragment to be used instead of the\n * actual one. This is used for silent refreshes, to\n * pass the iframes hash fragment to this method, and\n * is also used by popup flows in the same manner.\n * This can be used with code flow, where is must be set\n * to a hash symbol followed by the querystring. The\n * question mark is optional, but may be present following\n * the hash symbol.\n */\n customHashFragment?: string;\n\n /**\n * Set this to true to disable the oauth2 state\n * check which is a best practice to avoid\n * security attacks.\n * As OIDC defines a nonce check that includes\n * this, this can be set to true when only doing\n * OIDC.\n */\n disableOAuth2StateCheck?: boolean;\n\n /**\n * Set this to true to disable the nonce\n * check which is used to avoid\n * replay attacks.\n * This flag should never be true in\n * production environments.\n */\n disableNonceCheck? = false;\n\n /**\n * Normally, you want to clear your hash fragment after\n * the lib read the token(s) so that they are not displayed\n * anymore in the url. If not, set this to true. For code flow\n * this controls removing query string values.\n */\n preventClearHashAfterLogin? = false;\n\n /**\n * Set this for code flow if you used a custom redirect Uri\n * when retrieving the code. This is used internally for silent\n * refresh and popup flows.\n */\n customRedirectUri?: string;\n}\n\n/**\n * Defines the logging interface the OAuthService uses\n * internally. Is compatible with the `console` object,\n * but you can provide your own implementation as well\n * through dependency injection.\n */\nexport abstract class OAuthLogger {\n abstract debug(message?: any, ...optionalParams: any[]): void;\n abstract info(message?: any, ...optionalParams: any[]): void;\n abstract log(message?: any, ...optionalParams: any[]): void;\n abstract warn(message?: any, ...optionalParams: any[]): void;\n abstract error(message?: any, ...optionalParams: any[]): void;\n}\n\n/**\n * Defines a simple storage that can be used for\n * storing the tokens at client side.\n * Is compatible to localStorage and sessionStorage,\n * but you can also create your own implementations.\n */\nexport abstract class OAuthStorage {\n abstract getItem(key: string): string | null;\n abstract removeItem(key: string): void;\n abstract setItem(key: string, data: string): void;\n}\n\n@Injectable()\nexport class MemoryStorage implements OAuthStorage {\n private data = new Map();\n\n getItem(key: string): string {\n return this.data.get(key);\n }\n\n removeItem(key: string): void {\n this.data.delete(key);\n }\n\n setItem(key: string, data: string): void {\n this.data.set(key, data);\n }\n}\n\n/**\n * Represents the received tokens, the received state\n * and the parsed claims from the id-token.\n */\nexport class ReceivedTokens {\n idToken: string;\n accessToken: string;\n idClaims?: object;\n state?: string;\n}\n\n/**\n * Represents the parsed and validated id_token.\n */\nexport interface ParsedIdToken {\n idToken: string;\n idTokenClaims: object;\n idTokenHeader: object;\n idTokenClaimsJson: string;\n idTokenHeaderJson: string;\n idTokenExpiresAt: number;\n}\n\n/**\n * Represents the response from the token endpoint\n * http://openid.net/specs/openid-connect-core-1_0.html#TokenEndpoint\n */\nexport interface TokenResponse {\n access_token: string;\n id_token: string;\n token_type: string;\n expires_in: number;\n refresh_token: string;\n scope: string;\n state?: string;\n}\n\n/**\n * Represents the response from the user info endpoint\n * http://openid.net/specs/openid-connect-core-1_0.html#UserInfo\n */\nexport interface UserInfo {\n sub: string;\n [key: string]: any;\n}\n\n/**\n * Represents an OpenID Connect discovery document\n */\nexport interface OidcDiscoveryDoc {\n issuer: string;\n authorization_endpoint: string;\n token_endpoint: string;\n token_endpoint_auth_methods_supported: string[];\n token_endpoint_auth_signing_alg_values_supported: string[];\n userinfo_endpoint: string;\n check_session_iframe: string;\n end_session_endpoint: string;\n jwks_uri: string;\n registration_endpoint: string;\n scopes_supported: string[];\n response_types_supported: string[];\n acr_values_supported: string[];\n response_modes_supported: string[];\n grant_types_supported: string[];\n subject_types_supported: string[];\n userinfo_signing_alg_values_supported: string[];\n userinfo_encryption_alg_values_supported: string[];\n userinfo_encryption_enc_values_supported: string[];\n id_token_signing_alg_values_supported: string[];\n id_token_encryption_alg_values_supported: string[];\n id_token_encryption_enc_values_supported: string[];\n request_object_signing_alg_values_supported: string[];\n display_values_supported: string[];\n claim_types_supported: string[];\n claims_supported: string[];\n claims_parameter_supported: boolean;\n service_documentation: string;\n ui_locales_supported: string[];\n revocation_endpoint: string;\n}\n\n \n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/ValidationHandler.html":{"url":"classes/ValidationHandler.html","title":"class - ValidationHandler","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n ValidationHandler\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/token-validation/validation-handler.ts\n \n\n\n \n Description\n \n \n Interface for Handlers that are hooked in to\nvalidate tokens.\n\n \n\n\n\n\n \n Index\n \n \n\n \n \n Methods\n \n \n \n \n \n \n Public\n Abstract\n validateAtHash\n \n \n Public\n Abstract\n validateSignature\n \n \n \n \n\n\n\n\n\n \n \n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n Public\n Abstract\n validateAtHash\n \n \n \n \n \n \n \n validateAtHash(validationParams: ValidationParams)\n \n \n\n\n \n \n Defined in projects/lib/src/token-validation/validation-handler.ts:27\n \n \n\n\n \n \n Validates the at_hash in an id_token against the received access_token.\n\n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n validationParams\n \n ValidationParams\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : Promise\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Public\n Abstract\n validateSignature\n \n \n \n \n \n \n \n validateSignature(validationParams: ValidationParams)\n \n \n\n\n \n \n Defined in projects/lib/src/token-validation/validation-handler.ts:20\n \n \n\n\n \n \n Validates the signature of an id_token.\n\n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n validationParams\n \n ValidationParams\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : Promise\n\n \n \n \n \n \n \n \n \n\n\n\n\n\n\n \n\n\n \n import { base64UrlEncode } from '../base64-helper';\n\nexport interface ValidationParams {\n idToken: string;\n accessToken: string;\n idTokenHeader: object;\n idTokenClaims: object;\n jwks: object;\n loadKeys: () => Promise;\n}\n\n/**\n * Interface for Handlers that are hooked in to\n * validate tokens.\n */\nexport abstract class ValidationHandler {\n /**\n * Validates the signature of an id_token.\n */\n public abstract validateSignature(\n validationParams: ValidationParams\n ): Promise;\n\n /**\n * Validates the at_hash in an id_token against the received access_token.\n */\n public abstract validateAtHash(\n validationParams: ValidationParams\n ): Promise;\n}\n\n/**\n * This abstract implementation of ValidationHandler already implements\n * the method validateAtHash. However, to make use of it,\n * you have to override the method calcHash.\n */\nexport abstract class AbstractValidationHandler implements ValidationHandler {\n /**\n * Validates the signature of an id_token.\n */\n abstract validateSignature(validationParams: ValidationParams): Promise;\n\n /**\n * Validates the at_hash in an id_token against the received access_token.\n */\n async validateAtHash(params: ValidationParams): Promise {\n let hashAlg = this.inferHashAlgorithm(params.idTokenHeader);\n\n let tokenHash = await this.calcHash(params.accessToken, hashAlg); // sha256(accessToken, { asString: true });\n\n let leftMostHalf = tokenHash.substr(0, tokenHash.length / 2);\n\n let atHash = base64UrlEncode(leftMostHalf);\n\n let claimsAtHash = params.idTokenClaims['at_hash'].replace(/=/g, '');\n\n if (atHash !== claimsAtHash) {\n console.error('exptected at_hash: ' + atHash);\n console.error('actual at_hash: ' + claimsAtHash);\n }\n\n return atHash === claimsAtHash;\n }\n\n /**\n * Infers the name of the hash algorithm to use\n * from the alg field of an id_token.\n *\n * @param jwtHeader the id_token's parsed header\n */\n protected inferHashAlgorithm(jwtHeader: object): string {\n let alg: string = jwtHeader['alg'];\n\n if (!alg.match(/^.S[0-9]{3}$/)) {\n throw new Error('Algorithm not supported: ' + alg);\n }\n\n return 'sha-' + alg.substr(2);\n }\n\n /**\n * Calculates the hash for the passed value by using\n * the passed hash algorithm.\n *\n * @param valueToHash\n * @param algorithm\n */\n protected abstract calcHash(\n valueToHash: string,\n algorithm: string\n ): Promise;\n}\n\n \n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"interfaces/ValidationParams.html":{"url":"interfaces/ValidationParams.html","title":"interface - ValidationParams","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n Interfaces\n \n ValidationParams\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/token-validation/validation-handler.ts\n \n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n \n accessToken\n \n \n \n \n idToken\n \n \n \n \n idTokenClaims\n \n \n \n \n idTokenHeader\n \n \n \n \n jwks\n \n \n \n \n loadKeys\n \n \n \n \n \n \n \n \n\n\n\n \n Properties\n \n \n \n \n \n accessToken\n \n \n \n \n \n \n \n \n accessToken: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n idToken\n \n \n \n \n \n \n \n \n idToken: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n idTokenClaims\n \n \n \n \n \n \n \n \n idTokenClaims: object\n\n \n \n\n\n \n \n Type : object\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n idTokenHeader\n \n \n \n \n \n \n \n \n idTokenHeader: object\n\n \n \n\n\n \n \n Type : object\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n jwks\n \n \n \n \n \n \n \n \n jwks: object\n\n \n \n\n\n \n \n Type : object\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n loadKeys\n \n \n \n \n \n \n \n \n loadKeys: function\n\n \n \n\n\n \n \n Type : function\n\n \n \n\n\n\n\n\n \n \n \n \n\n\n \n import { base64UrlEncode } from '../base64-helper';\n\nexport interface ValidationParams {\n idToken: string;\n accessToken: string;\n idTokenHeader: object;\n idTokenClaims: object;\n jwks: object;\n loadKeys: () => Promise;\n}\n\n/**\n * Interface for Handlers that are hooked in to\n * validate tokens.\n */\nexport abstract class ValidationHandler {\n /**\n * Validates the signature of an id_token.\n */\n public abstract validateSignature(\n validationParams: ValidationParams\n ): Promise;\n\n /**\n * Validates the at_hash in an id_token against the received access_token.\n */\n public abstract validateAtHash(\n validationParams: ValidationParams\n ): Promise;\n}\n\n/**\n * This abstract implementation of ValidationHandler already implements\n * the method validateAtHash. However, to make use of it,\n * you have to override the method calcHash.\n */\nexport abstract class AbstractValidationHandler implements ValidationHandler {\n /**\n * Validates the signature of an id_token.\n */\n abstract validateSignature(validationParams: ValidationParams): Promise;\n\n /**\n * Validates the at_hash in an id_token against the received access_token.\n */\n async validateAtHash(params: ValidationParams): Promise {\n let hashAlg = this.inferHashAlgorithm(params.idTokenHeader);\n\n let tokenHash = await this.calcHash(params.accessToken, hashAlg); // sha256(accessToken, { asString: true });\n\n let leftMostHalf = tokenHash.substr(0, tokenHash.length / 2);\n\n let atHash = base64UrlEncode(leftMostHalf);\n\n let claimsAtHash = params.idTokenClaims['at_hash'].replace(/=/g, '');\n\n if (atHash !== claimsAtHash) {\n console.error('exptected at_hash: ' + atHash);\n console.error('actual at_hash: ' + claimsAtHash);\n }\n\n return atHash === claimsAtHash;\n }\n\n /**\n * Infers the name of the hash algorithm to use\n * from the alg field of an id_token.\n *\n * @param jwtHeader the id_token's parsed header\n */\n protected inferHashAlgorithm(jwtHeader: object): string {\n let alg: string = jwtHeader['alg'];\n\n if (!alg.match(/^.S[0-9]{3}$/)) {\n throw new Error('Algorithm not supported: ' + alg);\n }\n\n return 'sha-' + alg.substr(2);\n }\n\n /**\n * Calculates the hash for the passed value by using\n * the passed hash algorithm.\n *\n * @param valueToHash\n * @param algorithm\n */\n protected abstract calcHash(\n valueToHash: string,\n algorithm: string\n ): Promise;\n}\n\n \n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/WebHttpUrlEncodingCodec.html":{"url":"classes/WebHttpUrlEncodingCodec.html","title":"class - WebHttpUrlEncodingCodec","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n WebHttpUrlEncodingCodec\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/encoder.ts\n \n\n\n \n Description\n \n \n This custom encoder allows charactes like +, % and / to be used in passwords\n\n \n\n\n \n Implements\n \n \n HttpParameterCodec\n \n\n\n \n Index\n \n \n\n \n \n Methods\n \n \n \n \n \n \n decodeKey\n \n \n decodeValue\n \n \n encodeKey\n \n \n encodeValue\n \n \n \n \n\n\n\n\n\n \n \n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n decodeKey\n \n \n \n \n \n \ndecodeKey(k: string)\n \n \n\n\n \n \n Defined in projects/lib/src/encoder.ts:14\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n k\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : string\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n decodeValue\n \n \n \n \n \n \ndecodeValue(v: string)\n \n \n\n\n \n \n Defined in projects/lib/src/encoder.ts:18\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n v\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : any\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n encodeKey\n \n \n \n \n \n \nencodeKey(k: string)\n \n \n\n\n \n \n Defined in projects/lib/src/encoder.ts:6\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n k\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : string\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n encodeValue\n \n \n \n \n \n \nencodeValue(v: string)\n \n \n\n\n \n \n Defined in projects/lib/src/encoder.ts:10\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n v\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : string\n\n \n \n \n \n \n \n \n \n\n\n\n\n\n\n \n\n\n \n import { HttpParameterCodec } from '@angular/common/http';\n/**\n * This custom encoder allows charactes like +, % and / to be used in passwords\n */\nexport class WebHttpUrlEncodingCodec implements HttpParameterCodec {\n encodeKey(k: string): string {\n return encodeURIComponent(k);\n }\n\n encodeValue(v: string): string {\n return encodeURIComponent(v);\n }\n\n decodeKey(k: string): string {\n return decodeURIComponent(k);\n }\n\n decodeValue(v: string) {\n return decodeURIComponent(v);\n }\n}\n\n \n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"changelog.html":{"url":"changelog.html","title":"getting-started - changelog","body":"\n \n\n12.0.0 (2021-07-16)\nBug Fixes\n\n#728 (51e438a), closes /github.com/manfredsteyer/angular-oauth2-oidc/issues/728#issuecomment-808969225\nclear location.hash only if it is present (c2b2753), closes #970\ncorrectly handle ? and & in location replacements (70fd826)\nDisable nonce validation for id token for e2e tests (f5bd96c)\nfix scope/state removal for implicit flow with hash (9e257d0)\nin code flow pass options to error handler (c9a2c55), closes #972\njwks: update jsrsasign dependency to 10.2.0 (a05bd8a), closes #1061\nmultiplying calls to token endpoint in code flow (59f65d2)\nRefresh tokens with a plus sign get corrupted before sending to token endpoint (2204c5a)\nrevoketokenandlogout: 'customParameters' should accept boolean (9761bad)\nWhile Using POPUP mode, we click on login button multiple time it opens multiple popup instead of focusing already opened (bbff95b)\n\nFeatures\n\nintroduce DateTimeProvider (0c0a4a7)\nlogout: postLogoutRedirectUri should not default to redirectUri (ff7d1d9)\nsupport JWT response on userinfo endpoint (da16494)\nCustom grant type added (https://github.com/manfredsteyer/angular-oauth2-oidc/pull/919)\nListen for storage to receive auth hash from popup (https://github.com/manfredsteyer/angular-oauth2-oidc/pull/935)\nAdd event for unchanged session (https://github.com/manfredsteyer/angular-oauth2-oidc/pull/936)\nAdd loginHint to codeFlow (https://github.com/manfredsteyer/angular-oauth2-oidc/pull/938)\nAdd a windowRef option to initLoginFlowInPopup to prevent the window from beeing blocked by popup blockers (https://github.com/manfredsteyer/angular-oauth2-oidc/pull/965)\nUse configured revocationEndpoint by default (https://github.com/manfredsteyer/angular-oauth2-oidc/pull/1020)\n\n10.0.0 (2020-06-30)\n\nchore: increase version in package.json (84d95a7)\nchore: make version 9.2 ready (415e053)\nchore(deps): bump jsrsasign from 8.0.12 to 8.0.19 (4def1c1)\nchore(deps): bump websocket-extensions from 0.1.3 to 0.1.4 (cae715e)\nchore(release): 9.2.1 (7a15194)\nchore(release): 9.2.2 (40f5ae5)\nchore(release): 9.3.0 (f42f943)\nrefactor: inline js-sha256 (ca435c0)\nrefactor: remove dep on contributer-table (b486546)\nrefactor: use esm for sha-256 (92ee76d)\nfeat(oauth-service): pass custom url params to logOut (4607d55)\nfeat(oauth-service): revokeTokenAndLogout with cust params (026dcb3)\n'disableAtHashCheck' by default if responseType is 'id_token' (169d749)\n#825: (38c7c3f), closes #825\n#825: (fb3afe4), closes #825\nFix issue with ambient type in constructor when running Universal with Ivy (9e95c73)\nFix typo in code-flow.md (1816e7b)\nReplaced document by this.document #773 (678ff95), closes #773\nresponse_types including 'code' gets a code_challenge (58a8132)\nUpdate code-flow.md (5c5288c)\ndocs(readme): use our own idsvr (65c2b95)\nfix: loadDiscoveryDocumentAndLogin should pass state into initLoginFlow (132c624)\nfix(lib): copying LICENSE file to output build (e89aa6d)\n\n10.0.0 (2020-06-30)\nBug Fixes\n\nloadDiscoveryDocumentAndLogin should pass state into initLoginFlow (132c624)\nlib: copying LICENSE file to output build (e89aa6d)\n\nFeatures\n\noauth-service: pass custom url params to logOut (4607d55)\noauth-service: revokeTokenAndLogout with cust params (026dcb3)\n\n10.0.0 (2020-06-30)\nChangelog\nAll notable changes to this project will be documented in this file. See standard-version for commit guidelines.\nFeatures\n\nautomatic silent refresh: stopAutomaticRefresh stops all timers. (8ab853b)\ncode-flow: allow using implicit flow by setting useSilentRefresh to true (93902a5)\noauth-service: pass custom url params to logOut (4607d55)\noauth-service: revokeTokenAndLogout with cust params (026dcb3)\nsample: also use new idsvr 4 for implicit flow demo to prevent issues with same site cookies (58c6354)\nsession checks: Session checks work now for code flow too. Pls see Docs for details. (4bf8901)\ntoken-revocation: also revoke refresh_token (429ed2c)\nremove jsrsasign dependancy (77cb37a)\nUpgrade to angular 8 (31c6273)\n\nBug Fixes\n\nloadDiscoveryDocumentAndLogin should pass state into initLoginFlow (132c624)\nlib: copying LICENSE file to output build (e89aa6d)\nrevoketokenandlogout: explicit way to revoke an access token (c799ead)\nsample: make sense of the guard (1cae011)\n#687 (e2599e0)\ncode flow: Fixed code flow for IE 11 (0f03d39)\nsample: use hash-based routing (3f44eca)\nsession state: save session_state also when using code flow (8fa99ff)\nstate: passing an url with a querystring as the state, e. g. url?x=1 (71b705c)\nmissing HttpModule dependency (7eac8ae)\nrun tokensetup outside ngzone (07bb62d)\ntypo (3d331f2)\n\n9.2.2 (2020-05-09)\n9.2.1 (2020-04-23)\n9.2.0 (2020-03-28)\nFeatures\n\nrevoketokenandlogout: explicit way to revoke an access token according to RFC 7009 (c799ead)\n\ntoken-revocation: also revoke refresh_token (429ed2c)\n\n\nBug Fixes\n\nsample: make sense of the guard (1cae011)\n\n9.1.0 (2020-03-23)\nFeatures\n\nautomatic silent refresh: stopAutomaticRefresh stops all timers. (8ab853b)\ncode-flow: allow using silent refresh by setting useSilentRefresh to true (93902a5)\nsample: Also use new Identity Server 4 for implicit flow demo to prevent issues with same site cookies (58c6354)\nsession checks: Session checks work now for code flow too. Please see docs for details. (4bf8901)\n\nBug Fixes\n\ncode flow: Fixed code flow for IE 11 (0f03d39)\nsample: use hash-based routing (3f44eca)\nsession state: save session_state also when using code flow (8fa99ff)\nstate: passing an url with a querystring as the state, e. g. url?x=1 (71b705c)\n#687 (e2599e0)\nmissing HttpModule dependency (7eac8ae)\nrun tokensetup outside ngzone (07bb62d)\ntypo (3d331f2)\n\nPull Requests\n\nUpdate sample app and silent-refresh.html script #755, linjie997\nAdd optional state parameter for logout, pmccloghrylaing\nfix customHashFragment usage in tryLoginCodeFlow, roblabat\nreplace document with injectionToken #741, d-moos\nSupport predefined custom parameters extraction from the TokenResponse, vdveer\nFixed not working silent refresh when using 'code' #735, ErazerBrecht\n\nThanks\nBig Thanks to all contributers: Brecht Carlier, Daniel Moos, Jie Lin, Manfred Steyer, Phil McCloghry-Laing, robin labat, vdveer\nAlso, big thanks to jeroenheijmans for doing an awesome job with moderating and analyzing the issues!\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"dependencies.html":{"url":"dependencies.html","title":"package-dependencies - dependencies","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n Dependencies\n \n \n \n @angular/animations : 12.1.2\n \n @angular/common : 12.1.2\n \n @angular/compiler : 12.1.2\n \n @angular/core : 12.1.2\n \n @angular/elements : 12.1.2\n \n @angular/forms : 12.1.2\n \n @angular/platform-browser : 12.1.2\n \n @angular/platform-browser-dynamic : 12.1.2\n \n @angular/router : 12.1.2\n \n @popperjs/core : ^2.9.2\n \n @webcomponents/custom-elements : ^1.4.3\n \n angular-oauth2-oidc : ^10.0.3\n \n angular-oauth2-oidc-jwks : ^9.0.0\n \n base64-js : ^1.5.1\n \n bootstrap : ^3.4.1\n \n fast-sha256 : ^1.3.0\n \n jsrsasign : ^10.3.0\n \n ngx-semantic-version : ^2.3.0\n \n rxjs : ^6.5.3\n \n rxjs-compat : ^6.6.7\n \n text-encoder-lite : ^2.0.0\n \n tsickle : ^0.43.0\n \n tslib : ^2.3.0\n \n zone.js : ~0.11.4\n \n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"miscellaneous/functions.html":{"url":"miscellaneous/functions.html","title":"miscellaneous-functions - functions","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n Miscellaneous\n Functions\n\n\n\n Index\n \n \n \n \n \n \n b64DecodeUnicode   (projects/.../base64-helper.ts)\n \n \n base64UrlEncode   (projects/.../base64-helper.ts)\n \n \n createDefaultLogger   (projects/.../factories.ts)\n \n \n createDefaultStorage   (projects/.../factories.ts)\n \n \n decodeUTF8   (projects/.../hash-handler.ts)\n \n \n encodeUTF8   (projects/.../hash-handler.ts)\n \n \n \n \n \n \n\n\n projects/lib/src/base64-helper.ts\n \n \n \n \n \n \n \n b64DecodeUnicode\n \n \n \n \n \n \nb64DecodeUnicode(str)\n \n \n\n\n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Optional\n \n \n \n \n str\n\n \n No\n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n base64UrlEncode\n \n \n \n \n \n \nbase64UrlEncode(str)\n \n \n\n\n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Optional\n \n \n \n \n str\n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : string\n\n \n \n \n \n \n \n \n \n projects/lib/src/factories.ts\n \n \n \n \n \n \n \n createDefaultLogger\n \n \n \n \n \n \ncreateDefaultLogger()\n \n \n\n\n\n\n \n \n \n \n \n \n \n \n createDefaultStorage\n \n \n \n \n \n \ncreateDefaultStorage()\n \n \n\n\n\n\n \n \n projects/lib/src/token-validation/hash-handler.ts\n \n \n \n \n \n \n \n decodeUTF8\n \n \n \n \n \n \ndecodeUTF8(s)\n \n \n\n\n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Optional\n \n \n \n \n s\n\n \n No\n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n encodeUTF8\n \n \n \n \n \n \nencodeUTF8(arr)\n \n \n\n\n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Optional\n \n \n \n \n arr\n\n \n No\n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"index.html":{"url":"index.html","title":"getting-started - index","body":"\n \n\nangular-oauth2-oidc\nSupport for OAuth 2 and OpenId Connect (OIDC) in Angular. Already prepared for the upcoming OAuth 2.1.\n\nCredits\n\njsrsasign for validating token signature and for hashing\nIdentity Server for testing with an .NET/.NET Core Backend\nKeycloak (Redhat) for testing with Java\nAuth0\n\nResources\n\nSources and Sample: https://github.com/manfredsteyer/angular-oauth2-oidc\nSource Code Documentation: https://manfredsteyer.github.io/angular-oauth2-oidc/docs\nCommunity-provided sample implementation: https://github.com/jeroenheijmans/sample-angular-oauth2-oidc-with-auth-guards/\n\nTested Environment\nSuccessfully tested with Angular 4.3 to Angular 12 and its Router, PathLocationStrategy as well as HashLocationStrategy and CommonJS-Bundling via webpack. \nAt server side we've used IdentityServer (.NET / .NET Core), Redhat's Keycloak (Java), and Auth0 (Auth0 is officially supported since version 10 of this lib). For Auth0, please have a look into the respective documentation page here.\nFor using this library with Azure Active Directory (Azure AD), we recommend an additional look to this blog post and the example linked at the end of this blog post.\nAlso, the Okta community created some guidelines on how to use this lib with Okta. See the links at the end of this page for more information.\nAngular 12: Use 12.x versions of this library (should also work with older Angular versions!).\nAngular 11: Use 10.x versions of this library (should also work with older Angular versions!).\nAngular 10: Use 10.x versions of this library (should also work with older Angular versions!).\nAngular 9: Use 9.x versions of this library (should also work with older Angular versions!).\nAngular 8: Use 8.x versions of this library.\nAngular 7: Use 7.x versions of this library.\nAngular 6: Use Version 4.x of this library. Version 4.x was tested with Angular 6. You can also try the newer version 5.x of this library which has a much smaller bundle size.\nAngular 5.x or 4.3: If you need support for Angular \nRelease Cycle\n\nWe plan one major release for each Angular version\nWill contain new features\nWill contain bug fixes and PRs\n\n\nCritical bugfixes on demand\n\nContributions\n\nFeel free to file pull requests\n\nThe issues contain some ideas for PRs and enhancements (see labels)\n\nIf you want to contribute to the docs, you can do so in the docs-src folder. Make sure you update summary.json as well. Then generate the docs with the following commands:\nnpm install -g @compodoc/compodoc\nnpm run docs\n\nFeatures\n\nLogging in via Code Flow + PKCE\nHence, you are safe for the upcoming OAuth 2.1\n\n\nLogging in via Implicit Flow (where a user is redirected to Identity Provider)\n\"Logging in\" via Password Flow (where a user enters their password into the client)\nToken Refresh for all supported flows\nAutomatically refreshing a token when/some time before it expires\nQuerying Userinfo Endpoint\nQuerying Discovery Document to ease configuration\nValidating claims of the id_token regarding the specs\nHook for further custom validations\nSingle-Sign-Out by redirecting to the auth-server's logout-endpoint\nTested with all modern browsers and IE\nToken Revocation according to RFC 7009\n\nSample-Auth-Server\nYou can use the OIDC-Sample-Server used in our examples. It assumes, that your Web-App runs on http://localhost:4200\nUsername/Password:\n\nmax/geheim\nbob/bob\nalice/alice\n\nclientIds:\n\nspa (Code Flow + PKCE)\nimplicit (implicit flow)\n\nredirectUris:\n\nlocalhost:[4200-4202]\nlocalhost:[4200-4202]/index.html\nlocalhost:[4200-4202]/silent-refresh.html\n\nInstalling\nnpm i angular-oauth2-oidc --saveImporting the NgModule\nimport { HttpClientModule } from '@angular/common/http';\nimport { OAuthModule } from 'angular-oauth2-oidc';\n// etc.\n\n@NgModule({\n imports: [\n // etc.\n HttpClientModule,\n OAuthModule.forRoot()\n ],\n declarations: [\n AppComponent,\n HomeComponent,\n // etc.\n ],\n bootstrap: [\n AppComponent\n ]\n})\nexport class AppModule {\n}Logging in\nSince Version 8, this library supports code flow and PKCE to align with the current draft of the OAuth 2.0 Security Best Current Practice document. This is also the foundation of the upcoming OAuth 2.1.\nTo configure your solution for code flow + PKCE you have to set the responseType to code:\n import { AuthConfig } from 'angular-oauth2-oidc';\n\n export const authCodeFlowConfig: AuthConfig = {\n // Url of the Identity Provider\n issuer: 'https://idsvr4.azurewebsites.net',\n\n // URL of the SPA to redirect the user to after login\n redirectUri: window.location.origin + '/index.html',\n\n // The SPA's id. The SPA is registerd with this id at the auth-server\n // clientId: 'server.code',\n clientId: 'spa',\n\n // Just needed if your auth server demands a secret. In general, this\n // is a sign that the auth server is not configured with SPAs in mind\n // and it might not enforce further best practices vital for security\n // such applications.\n // dummyClientSecret: 'secret',\n\n responseType: 'code',\n\n // set the scope for the permissions the client should request\n // The first four are defined by OIDC.\n // Important: Request offline_access to get a refresh token\n // The api scope is a usecase specific one\n scope: 'openid profile email offline_access api',\n\n showDebugInformation: true,\n };After this, you can initialize the code flow using:\nthis.oauthService.initCodeFlow();There is also a convenience method initLoginFlow which initializes either the code flow or the implicit flow depending on your configuration.\nthis.oauthService.initLoginFlow();Also -- as shown in the readme -- you have to execute the following code when bootstrapping to make the library to fetch the token:\nthis.oauthService.configure(authCodeFlowConfig);\nthis.oauthService.loadDiscoveryDocumentAndTryLogin();Logging out\nThe logOut method clears the used token store (by default sessionStorage) and forwards the user to the auth servers logout endpoint if one was configured (manually or via the discovery document).\nthis.oauthService.logOut();If you want to revoke the existing access token and the existing refresh token before logging out, use the following method:\nthis.oauthService.revokeTokenAndLogout();Skipping the Login Form\nIf you don't want to display a login form that tells the user that they are redirected to the identity server, you can use the convenience function this.oauthService.loadDiscoveryDocumentAndLogin(); instead of this.oauthService.loadDiscoveryDocumentAndTryLogin(); when setting up the library.\nThis directly redirects the user to the identity server if there are no valid tokens. Ensure you have your issuer set to your discovery document endpoint!\nCalling a Web API with an Access Token\nYou can automate this task by switching sendAccessToken on and by setting allowedUrls to an array with prefixes for the respective URLs. Use lower case for the prefixes.\nOAuthModule.forRoot({\n resourceServer: {\n allowedUrls: ['http://www.angular.at/api'],\n sendAccessToken: true\n }\n})If you need more versatility, you can look in the documentation how to setup a custom interceptor.\nToken Refresh\nSee docs: https://manfredsteyer.github.io/angular-oauth2-oidc/docs/additional-documentation/refreshing-a-token.html\nRouting\nIf you use the PathLocationStrategy (which is on by default) and have a general catch-all-route (path: '**') you should be fine. Otherwise look up the section Routing with the HashStrategy in the documentation.\nImplicit Flow\nNowadays, using code flow + PKCE -- as shown above -- is the recommended OAuth 2/OIDC flow for SPAs. To use the older implicit flow, lookup this docs: https://manfredsteyer.github.io/angular-oauth2-oidc/docs/additional-documentation/using-implicit-flow.html\nMore Documentation (!)\nSee the documentation for more information about this library.\nBreaking Change in Version 9\nWith regards to tree shaking, beginning with version 9, the JwksValidationHandler has been moved to a library of its own. If you need it for implementing implicit flow, please install it using npm:\nnpm i angular-oauth2-oidc-jwks --saveAfter that, you can import it into your application by using this:\nimport { JwksValidationHandler } from 'angular-oauth2-oidc-jwks';instead of that:\nimport { JwksValidationHandler } from 'angular-oauth2-oidc';Please note, that this dependency is not needed for the code flow, which is nowadays the recommended flow for single page applications. This also results in smaller bundle sizes.\nBreaking change in 9.1.0\nThe use of encodeURIComponent on the argument passed to initImplicitFlow and its Code Flow counterparts was mandatory before this version.\nSince that was considered a bug, the need to do so was removed.\nNow the reverse is true if you're upgrading from before 9.0.0: you need to remove any call to encode URI components in your own application, as the library will now do it for you.\nTutorials\n\nTutorial with Demo Servers available online\nAngular Authentication with OpenID Connect and Okta in 20 Minutes\nAdd Authentication to Your Angular PWA\nBuild an Ionic App with User Authentication\nOn-Site Workshops\nAngular 6 with Auth0 using this library\n\nThanks to all Contributors\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"license.html":{"url":"license.html","title":"getting-started - license","body":"\n \n\nCopyright (c) 2017 Manfred Steyer\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"modules.html":{"url":"modules.html","title":"modules - modules","body":"\n \n\n\n\n\n Modules\n\n\n \n \n \n \n OAuthModule\n \n \n \n No graph available.\n \n \n Browse\n \n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"overview.html":{"url":"overview.html","title":"overview - overview","body":"\n \n\n\n\n Overview\n\n \n\n \n \n\n\n\n\n\ndependencies\n\ndependencies\n\n\n\n \n \n \n Zoom in\n Reset\n Zoom out\n \n\n \n\n \n \n \n \n \n \n 1 Module\n \n \n \n \n \n \n \n \n 5 Injectables\n \n \n \n \n \n \n \n 20 Classes\n \n \n \n \n \n \n \n 5 Interfaces\n \n \n \n \n\n\n \n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"miscellaneous/typealiases.html":{"url":"miscellaneous/typealiases.html","title":"miscellaneous-typealiases - typealiases","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n Miscellaneous\n Type aliases\n\n\n\n Index\n \n \n \n \n \n \n EventType   (projects/.../events.ts)\n \n \n \n \n \n \n\n\n projects/lib/src/events.ts\n \n \n \n \n \n \n EventType\n \n \n \n \n \"discovery_document_loaded\" | \"jwks_load_error\" | \"invalid_nonce_in_state\" | \"discovery_document_load_error\" | \"discovery_document_validation_error\" | \"user_profile_loaded\" | \"user_profile_load_error\" | \"token_received\" | \"token_error\" | \"code_error\" | \"token_refreshed\" | \"token_refresh_error\" | \"silent_refresh_error\" | \"silently_refreshed\" | \"silent_refresh_timeout\" | \"token_validation_error\" | \"token_expires\" | \"session_changed\" | \"session_error\" | \"session_terminated\" | \"session_unchanged\" | \"logout\" | \"popup_closed\" | \"popup_blocked\" | \"token_revoke_error\"\n\n \n \n \n \n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"miscellaneous/variables.html":{"url":"miscellaneous/variables.html","title":"miscellaneous-variables - variables","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n Miscellaneous\n Variables\n\n\n\n Index\n \n \n \n \n \n \n AUTH_CONFIG   (projects/.../tokens.ts)\n \n \n err   (projects/.../jwks-validation-handler.ts)\n \n \n sha256   (projects/.../hash-handler.ts)\n \n \n \n \n \n \n\n\n projects/lib/src/tokens.ts\n \n \n \n \n \n \n \n AUTH_CONFIG\n \n \n \n \n \n \n Default value : new InjectionToken('AUTH_CONFIG')\n \n \n\n\n \n \n\n projects/lib/src/token-validation/jwks-validation-handler.ts\n \n \n \n \n \n \n \n err\n \n \n \n \n \n \n Default value : `PLEASE READ THIS CAREFULLY:\n\nBeginning with angular-oauth2-oidc version 9, the JwksValidationHandler\nhas been moved to an library of its own. If you need it for implementing\nOAuth2/OIDC **implicit flow**, please install it using npm:\n\n npm i angular-oauth2-oidc-jwks --save\n\nAfter that, you can import it into your application:\n\n import { JwksValidationHandler } from 'angular-oauth2-oidc-jwks';\n\nPlease note, that this dependency is not needed for the **code flow**,\nwhich is nowadays the **recommented** one for single page applications.\nThis also results in smaller bundle sizes.\n`\n \n \n\n\n \n \n\n projects/lib/src/token-validation/hash-handler.ts\n \n \n \n \n \n \n \n sha256\n \n \n \n \n \n \n Default value : factory()\n \n \n\n\n \n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"additional-documentation/getting-started.html":{"url":"additional-documentation/getting-started.html","title":"additional-page - Getting Started","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\nGetting Started\nPlease find the Getting Started Guide in the README above.\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"additional-documentation/preserving-state-(like-the-requested-url).html":{"url":"additional-documentation/preserving-state-(like-the-requested-url).html","title":"additional-page - Preserving State (like the Requested URL)","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\nPreserving State (like the Requested URL)\nWhen calling initImplicitFlow, you can pass an optional state which could be the requested url:\nthis.oauthService.initImplicitFlow('http://www.myurl.com/x/y/z');After login succeeded, you can read this state:\nthis.oauthService.tryLogin({\n onTokenReceived: (info) => {\n console.debug('state', info.state);\n }\n})\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"additional-documentation/refreshing-a-token.html":{"url":"additional-documentation/refreshing-a-token.html","title":"additional-page - Refreshing a Token","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\nRefreshing a Token using Code Flow (not Implicit Flow!)\nWhen using code flow, you can get an refresh_token. While the original standard DOES NOT allow this for SPAs, the mentioned OAuth 2.0 Security Best Current Practice document proposes to ease this limitation. However, it specifies a list of requirements one should take care about before using refresh_tokens. Please make sure you respect those requirements.\nPlease also note, that you have to request the offline_access scope to get a refresh token.\nTo refresh your token, just call the refreshToken method:\nthis.oauthService.refreshToken();Automatically refreshing a token when/ before it expires (Code Flow and Implicit Flow)\nTo automatically refresh a token when/ some time before it expires, just call the following method after configuring the OAuthService:\nthis.oauthService.setupAutomaticSilentRefresh();By default, this event is fired after 75% of the token's life time is over. You can adjust this factor by setting the property timeoutFactor to a value between 0 and 1. For instance, 0.5 means, that the event is fired after half of the life time is over and 0.33 triggers the event after a third.\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"additional-documentation/silent-refresh.html":{"url":"additional-documentation/silent-refresh.html","title":"additional-page - Silent Refresh","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\nRefreshing when using Implicit Flow (Implicit Flow and Code Flow)\nNotes for Code Flow: You can also use this strategy for refreshing tokens when using code flow. However, please note, the strategy described within Token Refresh is far easier in this case.\nTo refresh your tokens when using implicit flow you can use a silent refresh. This is a well-known solution that compensates the fact that implicit flow does not allow for issuing a refresh token. It uses a hidden iframe to get another token from the auth server. When the user is there still logged in (by using a cookie) it will respond without user interaction and provide new tokens.\nTo use this approach, setup a redirect uri for the silent refresh.\nFor this, you can set the property silentRefreshRedirectUri in the config object:\n// This api will come in the next version\n\nimport { AuthConfig } from 'angular-oauth2-oidc';\n\nexport const authConfig: AuthConfig = {\n\n // Url of the Identity Provider\n issuer: 'https://steyer-identity-server.azurewebsites.net/identity',\n\n // URL of the SPA to redirect the user to after login\n redirectUri: window.location.origin + '/index.html',\n\n // URL of the SPA to redirect the user after silent refresh\n silentRefreshRedirectUri: window.location.origin + '/silent-refresh.html',\n\n // defaults to true for implicit flow and false for code flow\n // as for code code the default is using a refresh_token\n // Also see docs section 'Token Refresh'\n useSilentRefresh: true,\n\n // The SPA's id. The SPA is registerd with this id at the auth-server\n clientId: 'spa-demo',\n\n // set the scope for the permissions the client should request\n // The first three are defined by OIDC. The 4th is a usecase-specific one\n scope: 'openid profile email voucher',\n}As an alternative, you can set the same property directly with the OAuthService:\nthis.oauthService.silentRefreshRedirectUri = window.location.origin + \"/silent-refresh.html\";Please keep in mind that this uri has to be configured at the auth-server too.\nThis file is loaded into the hidden iframe after getting new tokens. Its only task is to send the received tokens to the main application:\n\n\n \n (window.opener || window.parent).postMessage(location.hash || ('#' + location.search), location.origin);\n \n\nThis simple implementation within silent-refresh.html is sufficient in most cases. It takes care of the hash fragment as well as of the query string (property search). For edge cases you need to check if the received hash fragment is a token response. For this, please go with the following more advanced implementation:\n\n \n \n var checks = [/[\\?|&|#]code=/, /[\\?|&|#]error=/, /[\\?|&|#]token=/, /[\\?|&|#]id_token=/];\n\n function isResponse(str) {\n if (!str) return false;\n for(var i=0; i\n \nThe above example checks if the message in the URL (either hash or query string) is indeed a message returned with a response from an authentication provider and not an arbitrary value and then attempts to forward this message to a parent widow either by .parent (when this html is loaded in an iframe as a result of silent refresh) or by .opener (when the html is loaded into a popup during initial login) or finally using a storage event (as a fallback for complex cases, e.g. initial login in a popup with a cross-domain auth provider).\nPlease make sure that this file is copied to your output directory by your build task. When using the CLI you can define it as an asset for this. For this, you have to add the following line to the file .angular-cli.json:\n\"assets\": [\n [...],\n \"silent-refresh.html\"\n],To perform a silent refresh, just call the following method:\nthis\n .oauthService\n .silentRefresh()\n .then(info => console.debug('refresh ok', info))\n .catch(err => console.error('refresh error', err));When there is an error in the iframe that prevents the communication with the main application, silentRefresh will give you a timeout. To configure the timespan for this, you can set the property silentRefreshTimeout (msec). The default value is 20.000 (20 seconds).\nAutomatically refreshing a token when/ before it expires (Code Flow and Implicit Flow)\nTo automatically refresh a token when/ some time before it expires, just call the following method after configuring the OAuthService:\nthis.oauthService.setupAutomaticSilentRefresh();By default, this event is fired after 75% of the token's life time is over. You can adjust this factor by setting the property timeoutFactor to a value between 0 and 1. For instance, 0.5 means, that the event is fired after half of the life time is over and 0.33 triggers the event after a third.\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"additional-documentation/working-with-httpinterceptors.html":{"url":"additional-documentation/working-with-httpinterceptors.html","title":"additional-page - Working with HttpInterceptors","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\nInterceptors\nSince 3.1 the library uses a default HttpInterceptor that takes care about transmitting the access_token to the resource server and about error handling for security related errors (HTTP status codes 401 and 403) received from the resource server. To put in on, just set sendAccessToken to true and set allowedUrls to an array with prefixes for the respective urls. Use lower case for the prefixes:\nOAuthModule.forRoot({\n resourceServer: {\n allowedUrls: ['http://www.angular.at/api'],\n sendAccessToken: true\n }\n})You can provide an error handler for the urls white listed here by provding a service for the token OAuthResourceServerErrorHandler.\nTo implement such a service, implement the abstract class OAuthResourceServerErrorHandler. The following example shows the default implemantion that just passes the cought error through:\nexport class OAuthNoopResourceServerErrorHandler implements OAuthResourceServerErrorHandler {\n \n handleError(err: HttpResponse): Observable {\n return _throw(err);\n }\n\n}Custom Interceptors\nFeel free to write custom interceptors but keep in mind that injecting the OAuthService into them creates a circular dependency which leads to an error. The easiest way to prevent this is to use the OAuthStorage directly which also provides the access_token:\nimport { Injectable, Inject, Optional } from '@angular/core';\nimport { OAuthService, OAuthStorage } from 'angular-oauth2-oidc';\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse, HttpErrorResponse } from '@angular/common/http';\nimport {Observable} from 'rxjs/Observable';\nimport { OAuthResourceServerErrorHandler } from \"./resource-server-error-handler\";\nimport { OAuthModuleConfig } from \"../oauth-module.config\";\n\nimport 'rxjs/add/operator/catch';\n\n@Injectable()\nexport class DefaultOAuthInterceptor implements HttpInterceptor {\n \n constructor(\n private authStorage: OAuthStorage,\n private errorHandler: OAuthResourceServerErrorHandler,\n @Optional() private moduleConfig: OAuthModuleConfig\n ) {\n }\n\n private checkUrl(url: string): boolean {\n let found = this.moduleConfig.resourceServer.allowedUrls.find(u => url.startsWith(u));\n return !!found;\n }\n\n public intercept(req: HttpRequest, next: HttpHandler): Observable> {\n \n let url = req.url.toLowerCase();\n\n if (!this.moduleConfig) return next.handle(req);\n if (!this.moduleConfig.resourceServer) return next.handle(req);\n if (!this.moduleConfig.resourceServer.allowedUrls) return next.handle(req);\n if (!this.checkUrl(url)) return next.handle(req);\n\n let sendAccessToken = this.moduleConfig.resourceServer.sendAccessToken;\n \n if (sendAccessToken) {\n\n let token = this.authStorage.getItem('access_token');\n let header = 'Bearer ' + token;\n\n let headers = req.headers\n .set('Authorization', header);\n\n req = req.clone({ headers });\n }\n\n return next.handle(req).catch(err => this.errorHandler.handleError(err));\n\n }\n\n}\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"additional-documentation/callback-after-login.html":{"url":"additional-documentation/callback-after-login.html","title":"additional-page - Callback after login","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\nCallback after login\nThere is a callback onTokenReceived, that is called after a successful login. In this case, the lib received the access_token as\nwell as the id_token, if it was requested. If there is an id_token, the lib validated it.\nthis.oauthService.tryLogin({\n onTokenReceived: context => {\n //\n // Output just for purpose of demonstration\n // Don't try this at home ... ;-)\n //\n console.debug(\"logged in\");\n console.debug(context);\n }\n});\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"additional-documentation/popup-based-login.html":{"url":"additional-documentation/popup-based-login.html","title":"additional-page - Popup-based Login","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\nLogging in With a Popup\nThanks to a great community contribution, this library also supports logging the user in via a popup. For this, you need to do two things:\n\nUse initLoginFlowInPopup instead of initLoginFlow.\nCreate and configure a silent-refresh.html as described here *.\n\n* Please note this does not mean that you have to use silent refresh too.\nAlso, for your silent-regfesh.html, make sure you are also targeting\nwindow.opener and fall back to window.parent:\nPlease note: IE sets opener to null under specific security settings. This prevents making this work.\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"additional-documentation/custom-query-parameters.html":{"url":"additional-documentation/custom-query-parameters.html","title":"additional-page - Custom Query Parameters","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\nCustom Query Parameters\nYou can set the property customQueryParams to a hash with custom parameter that are transmitted when starting implicit flow.\nthis.oauthService.customQueryParams = {\n 'tenant': '4711',\n 'otherParam': 'someValue'\n};\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"additional-documentation/events.html":{"url":"additional-documentation/events.html","title":"additional-page - Events","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\nEvents\nThe library informs you about its tasks and state using events.\nThis is an Observable which publishes a stream of events as they occur in the service.\nYou can log these events to the console for debugging information.\nA short snippet you could use:\nthis.oauthService.events.subscribe(e => console.log(e));Or a longer, more extensive version that logs them at different levels:\nimport { OAuthErrorEvent } from 'angular-oauth2-oidc';\n\n// ...\n\nthis.authService.events.subscribe(event => {\n if (event instanceof OAuthErrorEvent) {\n console.error(event);\n } else {\n console.warn(event);\n }\n});Here's a list of the main events you might encounter:\n\ndiscovery_document_loaded is published whenever the service has retrieved the openid configuration and successfully saved the jwks information\ninvalid_nonce_in_state is published during tryLogin, when an access token has been requested and the state check was not disabled via the options, only in case the nonce is not as expected (see OAuth2 spec for more details about the nonce)\nuser_profile_loaded is published just before loadUserProfile() successfully resolves\ntoken_received is published whenever the requested token(s) have been successfully received and stored\nsilently_refreshed is published when the silent refresh timer has gone off and the library has also successfully refreshed the tokens (only applicable to Implicit Flow)\nsilent_refresh_timeout is published if the silent refresh timer has gone off but it takes too long to successfully refresh\nsession_error will only be published if the session checks encounter an error\n\nFor a full list of available events see the string based enum in the file events.ts.\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"additional-documentation/routing-with-the-hashstrategy.html":{"url":"additional-documentation/routing-with-the-hashstrategy.html","title":"additional-page - Routing with the HashStrategy","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\nRouting with the HashStrategy\nIf you are leveraging the LocationStrategy which the Router is using by default, you can skip this section.\nWhen using the HashStrategy for Routing, the Router will override the received hash fragment with the tokens when it performs it initial navigation. This prevents the library from reading them. To avoid this, disable initial navigation when setting up the routes for your root module:\nexport let AppRouterModule = RouterModule.forRoot(APP_ROUTES, {\n useHash: true,\n initialNavigation: false\n});After tryLogin did its job, you can manually perform the initial navigation:\nthis.oauthService.tryLogin().then(_ => {\n this.router.navigate(['/']);\n})Another solution is the use a redirect uri that already contains the initial route. In this case the router will not override it. An example for such a redirect uri is\n http://localhost:8080/#/home\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"additional-documentation/adapt-id_token-validation.html":{"url":"additional-documentation/adapt-id_token-validation.html","title":"additional-page - Adapt id_token Validation","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\nConfigure/ Adapt id_token Validation\nYou can hook in an implementation of the interface TokenValidator to validate the signature of the received id_token and its at_hash property. This packages provides two implementations:\n\nJwksValidationHandler\nNullValidationHandler\n\nThe former one validates the signature against public keys received via the discovery document (property jwks) and the later one skips the validation on client side.\nimport { JwksValidationHandler } from 'angular-oauth2-oidc';\n\n[...]\n\nthis.oauthService.tokenValidationHandler = new JwksValidationHandler();In cases where no ValidationHandler is defined, you receive a warning on the console. This means that the library wants you to explicitly decide on this.\nDependency Injection\nYou can also setup a ValidationHandler by leveraging dependency injection:\n[...]\nproviders: [\n { provide: ValidationHandler, useClass: JwksValidationHandler },\n],\n[...]\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"additional-documentation/session-checks.html":{"url":"additional-documentation/session-checks.html","title":"additional-page - Session Checks","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\nSession Checks\nBeginning with version 2.1, you can receive a notification when the user signs out with the identity provider.\nThis is implemented as defined by the OpenID Connect Session Management 1.0 spec.\nWhen this option is activated, the library also automatically ends your local session. This means, the current tokens\nare deleted by calling logOut. In addition to that, the library sends a session_terminated event, you can register\nfor to perform a custom action.\nPlease note that this option can only be used when also the identity provider in question supports it.\nConfiguration\nTo activate the session checks that leads to the mentioned notifications, set the configuration property\nsessionChecksEnabled:\nimport { AuthConfig } from 'angular-oauth2-oidc';\n\nexport const authConfig: AuthConfig = {\n issuer: 'https://steyer-identity-server.azurewebsites.net/identity',\n redirectUri: window.location.origin + '/index.html',\n silentRefreshRedirectUri: window.location.origin + '/silent-refresh.html',\n clientId: 'spa-demo',\n scope: 'openid profile email voucher',\n\n // Activate Session Checks:\n sessionChecksEnabled: true,\n}Refresh\nPlease note that the lib performs a token refresh when the session changes to get the newest information about the current session. When using implicit flow, this means you have to configure silent refresh; when using code flow you either need silent refresh or a refresh token.\nIf using refresh tokens, your Auth Server needs to bind them to the current session's lifetime. Unfortunately, the used version of Identity Server 4, shown in the docs and in the example applications, does not support this at the moment.\nEvents\nTo get notified, you can hook up for the event session_terminated:\nthis.oauthService.events.pipe(filter(e => e.type === 'session_terminated')).subscribe(e => {\n console.debug('Your session has been terminated!');\n})\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"additional-documentation/server-side-rendering.html":{"url":"additional-documentation/server-side-rendering.html","title":"additional-page - Server Side Rendering","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\nServer Side Rendering\nThere is a great blog post that shows how this library can be used together with server side rendering:\nhttps://medium.com/lankapura/angular-server-side-rendering-for-authenticated-users-a021627fd9d3The sample for this can be found here:\nhttps://github.com/lankaapura/Angular-AspNetCore-Idsvr\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{"url":"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html","title":"additional-page - Configure Library for Implicit Flow without discovery document","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\nConfigure Library for Implicit Flow (without discovery document)\nWhen you don't have a discovery document, you have to configure more properties manually:\nPlease note that the following sample uses the original config API. For information about the new config API have a look to the project's README above.\n@Component({ ... })\nexport class AppComponent {\n\n constructor(private oauthService: OAuthService) {\n\n // Login-Url\n this.oauthService.loginUrl = \"https://steyer-identity-server.azurewebsites.net/identity/connect/authorize\"; //Id-Provider?\n\n // URL of the SPA to redirect the user to after login\n this.oauthService.redirectUri = window.location.origin + \"/index.html\";\n\n // The SPA's id. Register SPA with this id at the auth-server\n this.oauthService.clientId = \"spa-demo\";\n\n // set the scope for the permissions the client should request\n this.oauthService.scope = \"openid profile email voucher\";\n\n // Use setStorage to use sessionStorage or another implementation of the TS-type Storage\n // instead of localStorage\n this.oauthService.setStorage(sessionStorage);\n\n // To also enable single-sign-out set the url for your auth-server's logout-endpoint here\n this.oauthService.logoutUrl = \"https://steyer-identity-server.azurewebsites.net/identity/connect/endsession\";\n\n // This method just tries to parse the token(s) within the url when\n // the auth-server redirects the user back to the web-app\n // It doesn't send the user the the login page\n this.oauthService.tryLogin();\n\n\n }\n\n}\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{"url":"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html","title":"additional-page - Using an ID Provider that Fails Discovery Document Validation","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\nDiscovery Document Validation\nThe configuration parameter strictDiscoveryDocumentValidation is set true by default. This ensures that all of the endpoints provided via the ID Provider discovery document share the same base URL as the issuer parameter.\nSeveral ID Providers (i.e. Google OpenID, WS02-IS, PingOne) provide different domains or path params for various endpoints in the discovery document. These providers may still adhere to the OpenID Connect Provider Configuration specification, but will fail to pass this library's discovery document validation.\nTo use this library with an ID Provider that does not maintain a consistent base URL across the discovery document endpoints, set the strictDiscoveryDocumentValidation parameter to false in your configuration:\nimport { AuthConfig } from 'angular-oauth2-oidc';\n\nexport const authConfig: AuthConfig = {\n\n // Url of the Identity Provider\n issuer: 'https://steyer-identity-server.azurewebsites.net/identity',\n\n // URL of the SPA to redirect the user to after login\n redirectUri: window.location.origin + '/index.html',\n\n // The SPA's id. The SPA is registerd with this id at the auth-server\n clientId: 'spa-demo',\n\n // set the scope for the permissions the client should request\n // The first three are defined by OIDC. The 4th is a usecase-specific one\n scope: 'openid profile email voucher',\n\n // turn off validation that discovery document endpoints start with the issuer url defined above\n strictDiscoveryDocumentValidation: false\n}\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"additional-documentation/using-systemjs.html":{"url":"additional-documentation/using-systemjs.html","title":"additional-page - Using SystemJS","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\nUsing SystemJS\nThanks to Kevin BEAUGRAND for adding this information regarding SystemJS.\nSystem.config({\n...\n meta: {\n 'angular-oauth2-oidc': {\n deps: ['jsrsasign']\n },\n }\n...\n});Also thanks to ppanthony for sharing his SystemJS config:\n'angular-oauth2-oidc': {\n main: 'angular-oauth2-oidc.umd.js',\n format: 'cjs',\n defaultExtension: 'js',\n map: {\n 'jsrsasign': '/node_modules/jsrsasign/lib/jsrsasign',\n },\n meta: {\n 'angular-oauth2-oidc': {\n deps: ['require','jsrsasign']\n },\n }\n}\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"additional-documentation/using-implicit-flow.html":{"url":"additional-documentation/using-implicit-flow.html","title":"additional-page - Using Implicit Flow","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\nConfiguring for Implicit Flow\nThis section shows how to implement login leveraging implicit flow. This is the OAuth2/OIDC flow which was originally intended for Single Page Application. \nMeanwhile using Code Flow instead is a best practice and with OAuth 2.1 implicit flow will be deprecated*.\nimport { AuthConfig } from 'angular-oauth2-oidc';\n\nexport const authConfig: AuthConfig = {\n // Url of the Identity Provider\n issuer: 'https://steyer-identity-server.azurewebsites.net/identity',\n\n // URL of the SPA to redirect the user to after login\n redirectUri: window.location.origin + '/index.html',\n\n // The SPA's id. The SPA is registered with this id at the auth-server\n clientId: 'spa-demo',\n\n // set the scope for the permissions the client should request\n // The first three are defined by OIDC. The 4th is a usecase-specific one\n scope: 'openid profile email voucher',\n}Configure the OAuthService with this config object when the application starts up:\nimport { OAuthService } from 'angular-oauth2-oidc';\nimport { JwksValidationHandler } from 'angular-oauth2-oidc';\nimport { authConfig } from './auth.config';\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'flight-app',\n templateUrl: './app.component.html'\n})\nexport class AppComponent {\n\n constructor(private oauthService: OAuthService) {\n this.configure();\n }\n\n private configure() {\n this.oauthService.configure(authConfig);\n this.oauthService.tokenValidationHandler = new JwksValidationHandler();\n this.oauthService.loadDiscoveryDocumentAndTryLogin();\n }\n}Implementing a Login Form\nAfter you've configured the library, you just have to call initImplicitFlow to login using OAuth2/ OIDC.\nimport { Component } from '@angular/core';\nimport { OAuthService } from 'angular-oauth2-oidc';\n\n@Component({\n templateUrl: \"app/home.html\"\n})\nexport class HomeComponent {\n\n constructor(private oauthService: OAuthService) {\n }\n\n public login() {\n this.oauthService.initLoginFlow();\n }\n\n public logoff() {\n this.oauthService.logOut();\n }\n\n public get name() {\n let claims = this.oauthService.getIdentityClaims();\n if (!claims) return null;\n return claims.given_name;\n }\n\n}The following snippet contains the template for the login page:\n\n Hallo\n\n\n Hallo, {{name}}\n\n\n\n Login\n\n\n Logout\n\n\n\n Username/Passwort zum Testen: max/geheim\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"additional-documentation/using-password-flow.html":{"url":"additional-documentation/using-password-flow.html","title":"additional-page - Using Password Flow","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\nUsing Password-Flow\nThis section shows how to use the password flow, which demands the user to directly enter his or her password into the client.\nPlease note that from an OAuth2/OIDC perspective, the code flow is better suited for logging into a SPA and the flow described here should only be used,\nwhen a) there is a strong trust relations ship between the client and the auth server and when b) other flows are not possible.\nPlease also note that with OAuth 2.1, password flow will be deprecated. \nConfigure Library for Password Flow (using discovery document)\nTo configure the library you just have to set some properties on startup. For this, the following sample uses the constructor of the AppComponent which is called before routing kicks in.\nPlease not, that this configuration is quite similar to the one for the implcit flow.\n@Component({ ... })\nexport class AppComponent {\n\n constructor(private oauthService: OAuthService) {\n\n // The SPA's id. Register SPA with this id at the auth-server\n this.oauthService.clientId = \"demo-resource-owner\";\n\n // set the scope for the permissions the client should request\n // The auth-server used here only returns a refresh token (see below), when the scope offline_access is requested\n this.oauthService.scope = \"openid profile email voucher offline_access\";\n\n // Use setStorage to use sessionStorage or another implementation of the TS-type Storage\n // instead of localStorage\n this.oauthService.setStorage(sessionStorage);\n\n // Set a dummy secret\n // Please note that the auth-server used here demand the client to transmit a client secret, although\n // the standard explicitly cites that the password flow can also be used without it. Using a client secret\n // does not make sense for a SPA that runs in the browser. That's why the property is called dummyClientSecret\n // Using such a dummy secret is as safe as using no secret.\n this.oauthService.dummyClientSecret = \"geheim\";\n\n // Load Discovery Document and then try to login the user\n let url = 'https://steyer-identity-server.azurewebsites.net/identity/.well-known/openid-configuration';\n this.oauthService.loadDiscoveryDocument(url).then(() => {\n // Do what ever you want here\n });\n\n }\n\n}Configure Library for Password Flow (without discovery document)\nIn cases where you don't have an OIDC based discovery document you have to configure some more properties manually:\n@Component({ ... })\nexport class AppComponent {\n\n constructor(private oauthService: OAuthService) {\n\n // Login-Url\n this.oauthService.tokenEndpoint = \"https://steyer-identity-server.azurewebsites.net/identity/connect/token\";\n\n // Url with user info endpoint\n // This endpont is described by OIDC and provides data about the loggin user\n // This sample uses it, because we don't get an id_token when we use the password flow\n // If you don't want this lib to fetch data about the user (e. g. id, name, email) you can skip this line\n this.oauthService.userinfoEndpoint = \"https://steyer-identity-server.azurewebsites.net/identity/connect/userinfo\";\n\n // The SPA's id. Register SPA with this id at the auth-server\n this.oauthService.clientId = \"demo-resource-owner\";\n\n // set the scope for the permissions the client should request\n this.oauthService.scope = \"openid profile email voucher offline_access\";\n\n // Set a dummy secret\n // Please note that the auth-server used here demand the client to transmit a client secret, although\n // the standard explicitly cites that the password flow can also be used without it. Using a client secret\n // does not make sense for a SPA that runs in the browser. That's why the property is called dummyClientSecret\n // Using such a dummy secret is as safe as using no secret.\n this.oauthService.dummyClientSecret = \"geheim\";\n\n }\n\n}Fetching an Access Token by providing the current user's credentials\nthis.oauthService.fetchTokenUsingPasswordFlow('max', 'geheim').then((resp) => {\n\n // Loading data about the user\n return this.oauthService.loadUserProfile();\n\n}).then(() => {\n\n // Using the loaded user data\n let claims = this.oAuthService.getIdentityClaims();\n if (claims) console.debug('given_name', claims.given_name);\n\n})There is also a short form for fetching the token and loading the user profile:\nthis.oauthService.fetchTokenUsingPasswordFlowAndLoadUserProfile('max', 'geheim').then(() => {\n let claims = this.oAuthService.getIdentityClaims();\n if (claims) console.debug('given_name', claims.given_name);\n});Refreshing the current Access Token\nUsing the password flow you MIGHT get a refresh token (which isn't the case with the implicit flow by design!). You can use this token later to get a new access token, e. g. after it expired.\nthis.oauthService.refreshToken().then(() => {\n console.debug('ok');\n})\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"additional-documentation/configure-custom-oauthstorage.html":{"url":"additional-documentation/configure-custom-oauthstorage.html","title":"additional-page - Configure custom OAuthStorage","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\nConfigure custom OAuthStorage\nThis library uses sessionStorage as the default storage provider. You can customize this by using localStorage or your own storage solution.\nUsing localStorage\nIf you want to use localStorage instead of sessionStorage, you can add a provider to your AppModule. This works as follows:\nimport { HttpClientModule } from '@angular/common/http';\nimport { OAuthModule } from 'angular-oauth2-oidc';\n// etc.\n\n// We need a factory, since localStorage is not available during AOT build time.\nexport function storageFactory() : OAuthStorage {\n return localStorage\n}\n \n@NgModule({\n imports: [ \n // etc.\n HttpClientModule,\n OAuthModule.forRoot()\n ],\n declarations: [\n AppComponent,\n HomeComponent,\n // etc.\n ],\n bootstrap: [\n AppComponent \n ],\n providers: [\n { provide: OAuthStorage, useFactory: storageFactory }\n ]\n})\nexport class AppModule {\n}Custom storage solution\nIf you want to use a custom storage solution, you can extend the OAuthStorage class. Documentation can be found here. Then add it as a provider, just like in the localStorage example above.\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"additional-documentation/manually-skipping-login-form.html":{"url":"additional-documentation/manually-skipping-login-form.html","title":"additional-page - Manually Skipping Login Form","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\nManually Skipping the Login Form\nFirst, try to use the loadDiscoveryDocumentAndLogin method instead of loadDiscoveryDocumentAndTryLogin. If you need more control, the following could be interesting for you.\nthis.oauthService\n .loadDiscoveryDocumentAndTryLogin(/* { your LoginOptions }*/) // checks to see if the current url contains id token and access token\n .(hasReceivedTokens => {\n // this would have stored all the tokens needed\n if (hasReceivedTokens) {\n // carry on with your app\n return Promise.resolve();\n\n /* if you wish to do something when the user receives tokens from the identity server,\n * use the event stream or the `onTokenReceived` callback in LoginOptions.\n *\n * this.oauthService.events(filter(e => e.type === 'token_received')).subscribe()\n */\n } else {\n // may want to check if you were previously authenticated\n if (this.oauthService.hasValidAccessToken() && this.oauthService.hasValidIdToken()) {\n return Promise.resolve();\n } else {\n // to safe guard this from progressing through the calling promise,\n // resolve it when it directed to the sign up page\n return new Promise(resolve => {\n this.oauthService.initLoginFlow();\n // example if you are using explicit flow\n this.window.addEventListener('unload', () => {\n resolve(true);\n });\n });\n }\n }\n })\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"additional-documentation/original-config-api.html":{"url":"additional-documentation/original-config-api.html","title":"additional-page - Original Config API","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\nOriginal Config API\n\nThis describes the older config API which is nowadays only supported for the sake of backwards compatibility. \n\nTo configure the library you just have to set some properties on startup. For this, the following sample uses the constructor of the AppComponent which is called before routing kicks in.\nPlease note that the following sample uses the original config API. For information about the new config API have a look to the project's README above.\n@Component({ ... })\nexport class AppComponent {\n\n constructor(private oauthService: OAuthService) {\n\n // URL of the SPA to redirect the user to after login\n this.oauthService.redirectUri = window.location.origin + \"/index.html\";\n\n // The SPA's id. The SPA is registerd with this id at the auth-server\n this.oauthService.clientId = \"spa-demo\";\n\n // set the scope for the permissions the client should request\n // The first three are defined by OIDC. The 4th is a usecase-specific one\n this.oauthService.scope = \"openid profile email voucher\";\n\n // The name of the auth-server that has to be mentioned within the token\n this.oauthService.issuer = \"https://steyer-identity-server.azurewebsites.net/identity\";\n\n // Load Discovery Document and then try to login the user\n this.oauthService.loadDiscoveryDocument().then(() => {\n\n // This method just tries to parse the token(s) within the url when\n // the auth-server redirects the user back to the web-app\n // It dosn't send the user the the login page\n this.oauthService.tryLogin();\n\n });\n\n }\n\n}If you find yourself receiving errors related to discovery document validation, your ID Provider may have OAuth2 endpoints that do not use the issuer value as a consistent base URL. You can turn off strict validation of discovery document endpoints for this scenario. See Discovery Document Validation for details.\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"additional-documentation/authorization-servers.html":{"url":"additional-documentation/authorization-servers.html","title":"additional-page - Authorization Servers","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\nSupport for Auth Servers\nAs this lib follows the OAuth2 and OpenId Connect specs, it should work with all compliant authorizations servers.\nHowever, experience shows that some authorizations servers come with some special behavior or settings. Hence, we must respect this when using this lib.\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"additional-documentation/authorization-servers/using-identity-server.html":{"url":"additional-documentation/authorization-servers/using-identity-server.html","title":"additional-page - Using Identity Server","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\nUsing Identity Server\nThis lib should work as shown in all examples here with Identity Server. \n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"additional-documentation/authorization-servers/using-keycloak.html":{"url":"additional-documentation/authorization-servers/using-keycloak.html","title":"additional-page - Using Keycloak","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\nUsing Keycloak\nThis lib should work as shown in all examples here with Keycloak. \n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"additional-documentation/authorization-servers/auth0.html":{"url":"additional-documentation/authorization-servers/auth0.html","title":"additional-page - Auth0","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\nUsing Auth0\nTo use this lib with Auth0, open your Auth0 account and configure:\n\nAn app \nAn API\n\nConfigure the app to use refresh token rotation and the grant types authorization code and refresh token. For grant types, see the advanced settings at the end of the settings page.\nConfiguration\nProvide a configuration like this:\nimport { AuthConfig } from 'angular-oauth2-oidc';\n\nexport const authConfig: AuthConfig = {\n\n issuer: 'https://dev-g-61sdfs.eu.auth0.com/',\n\n // Your app's client id:\n clientId: 'opHt1Tkt9E9fVQTZPBVF1tHVhjrxvyVX',\n redirectUri: window.location.origin,\n\n scope: 'openid profile email offline_access',\n\n responseType: 'code',\n\n logoutUrl: 'https://dev-g-61sdfs.eu.auth0.com/v2/logout',\n\n customQueryParams: {\n // Your API's name\n audience: 'http://www.angular.at/api'\n },\n};Getting, Using, and Refreshing a Token\nThis should work as shown in the other examples in this documentation and in the readme file.\nLogging out\nAuth0's logout endpoint expects the parameters client_id and returnTo:\nthis.oauthService.revokeTokenAndLogout({\n client_id: this.oauthService.clientId,\n returnTo: this.oauthService.redirectUri\n}, true);The optional 2nd parameter set to true ignores CORS issues with the logout endpoint.\nExample\nPlease find a demo for using Auth0 with angular-oauth2-oidc here.\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"additional-documentation/authorization-servers/azure-ad-(active-directory).html":{"url":"additional-documentation/authorization-servers/azure-ad-(active-directory).html","title":"additional-page - Azure AD (Active Directory)","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\nUsing with Azure AD\nFor using this library with Azure Active Directory (Azure AD), we recommend an additional look to this blog post and the example linked at the end of this blog post.\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"}} + "index": {"version":"2.3.9","fields":["title","body"],"fieldVectors":[["title/classes/AbstractValidationHandler.html",[0,0.185,1,3.19]],["body/classes/AbstractValidationHandler.html",[0,0.178,1,3.071,2,0.903,3,0.524,4,0.571,5,0.479,6,3.114,7,4.314,8,1.35,9,1.733,10,1.813,11,1.518,12,2.227,13,2.651,14,1.914,15,1.914,16,3.992,17,2.217,18,1.317,19,3.071,20,3.992,21,0.622,22,1.518,23,4.94,24,4.327,25,3.656,26,3.383,27,2.269,28,1.945,29,4.441,30,1.02,31,2.923,32,3.358,33,2.233,34,2.388,35,2.102,36,0.96,37,1.491,38,0.016,39,1.6,40,1.066,41,1.113,42,3.383,43,1.835,44,2.423,45,3.358,46,2.051,47,2.923,48,3.358,49,4.42,50,3.358,51,2.179,52,3.358,53,3.358,54,1.903,55,2.842,56,3.358,57,4.419,58,2.923,59,4.517,60,4.314,61,3.656,62,1.732,63,1.887,64,1.071,65,2.842,66,2.923,67,3.383,68,0.479,69,2.075,70,2.075,71,2.269,72,0.599,73,1.454,74,1.285,75,1.285,76,1.285,77,1.285,78,1.42,79,2.269,80,2.269,81,2.269,82,1.226,83,0.942,84,2.344,85,3.358,86,2.269,87,2.269,88,1.92,89,2.269,90,2.269,91,2.269,92,0.766,93,2.269,94,2.269,95,2.269,96,2.075,97,4.42,98,2.269,99,4.42,100,2.269,101,2.269,102,2.269,103,0.921,104,3.998,105,2.269,106,2.269,107,2.269,108,1.92,109,0.705,110,2.269,111,1.92,112,2.075,113,2.269,114,0.006,115,0.009,116,0.006]],["title/classes/DateTimeProvider.html",[0,0.185,117,2.952]],["body/classes/DateTimeProvider.html",[0,0.261,2,1.59,3,0.922,4,1.006,5,0.843,10,1.923,21,1.095,22,2.231,30,1.14,38,0.016,43,2.049,68,0.843,72,0.74,103,1.354,109,1.82,114,0.01,115,0.013,116,0.01,117,4.534,118,5.972,119,3.739,120,4.452,121,5.259,122,5.147,123,5.597,124,5.147,125,2.895,126,1.965,127,1.658,128,3.653,129,2.958,130,4.452]],["title/injectables/DefaultHashHandler.html",[126,1.389,131,3.489]],["body/injectables/DefaultHashHandler.html",[0,0.142,3,0.619,4,0.675,5,0.566,6,3.153,8,1.595,10,1.227,20,3.207,21,0.735,22,1.713,25,3.466,27,3.79,28,2.014,29,3.719,30,1.015,37,1.483,38,0.016,39,1.423,40,1.06,41,1.107,42,2.269,43,1.825,44,1.713,68,0.928,72,0.402,88,2.269,103,1.382,108,2.269,109,1.566,114,0.014,115,0.01,116,0.007,125,2.375,126,1.068,127,1.113,131,2.681,132,2.269,133,4.042,134,4.883,135,4.883,136,3.455,137,4.224,138,4.899,139,3.455,140,3.455,141,4.224,142,3.455,143,5.618,144,3.466,145,2.269,146,4.042,147,3.492,148,2.989,149,2.681,150,2.989,151,2.989,152,2.989,153,2.452,154,1.871,155,2.681,156,2.989,157,3.79,158,2.989,159,2.681,160,2.681,161,2.681,162,2.989,163,3.469,164,2.452,165,2.989,166,4.224,167,2.989,168,2.048,169,2.989,170,2.989,171,2.989,172,4.899,173,2.989,174,2.989,175,4.899,176,2.989,177,2.989,178,2.989,179,2.989,180,2.989,181,2.989,182,3.466,183,4.224,184,4.224,185,2.989,186,2.989,187,2.989,188,2.989,189,2.989,190,4.224,191,2.989,192,2.989,193,2.989]],["title/interceptors/DefaultOAuthInterceptor.html",[194,3.889,195,3.19]],["body/interceptors/DefaultOAuthInterceptor.html",[0,0.149,3,0.651,4,0.71,5,0.595,14,1.22,21,0.773,22,1.774,28,0.991,30,0.906,37,1.324,38,0.016,39,1.271,40,0.947,41,1.23,43,1.17,55,3.32,68,1.152,72,0.422,84,3.151,92,0.951,103,1.495,114,0.007,115,0.01,116,0.007,126,1.562,127,1.17,147,2.905,163,2.224,195,3.588,196,3.141,197,5.818,198,3.631,199,5.818,200,2.456,201,3.631,202,2.302,203,5.032,204,3.854,205,5.032,206,3.854,207,3.631,208,3.141,209,5.442,210,5.134,211,5.442,212,3.631,213,5.032,214,3.82,215,3.141,216,4.374,217,1.966,218,4.374,219,2.577,220,3.631,221,3.631,222,1.676,223,3.141,224,3.631,225,4.374,226,3.631,227,2.818,228,0.806,229,1.774,230,2.224,231,2.739,232,2.818,233,2.384,234,2.766,235,3.141,236,1.454,237,3.631,238,3.631,239,3.141,240,3.631,241,3.631,242,0.912,243,3.141,244,3.141,245,3.141,246,3.141,247,3.141,248,3.32,249,3.141,250,5.056,251,5.056,252,4.374,253,3.631,254,1.588,255,3.631,256,3.631,257,2.818,258,2.087,259,3.631,260,3.631,261,3.631,262,3.631,263,3.631,264,3.631,265,3.631,266,3.631,267,3.141,268,4.374,269,3.631,270,3.141]],["title/classes/HashHandler.html",[0,0.185,153,3.19]],["body/classes/HashHandler.html",[0,0.15,2,1.128,3,0.654,4,0.713,5,0.598,6,2.6,8,1.685,9,1.462,10,1.585,20,3.333,21,0.777,22,1.78,27,3.939,28,1.989,29,3.831,30,0.654,37,0.956,38,0.016,39,0.917,40,0.683,41,0.713,42,2.397,43,1.176,44,1.78,68,0.956,72,0.425,88,2.397,103,1.41,108,2.397,109,1.598,114,0.014,115,0.01,116,0.007,125,1.531,126,1.128,127,1.176,133,3.333,137,3.157,138,3.157,141,3.157,143,5.455,144,3.602,145,2.397,146,4.141,147,3.522,148,3.157,149,2.833,150,4.39,151,4.39,152,4.39,153,3.602,154,1.977,155,2.833,156,3.157,157,3.939,158,3.157,159,2.833,160,2.833,161,2.833,162,3.157,163,3.574,164,2.59,165,3.157,166,4.39,167,3.157,168,2.128,169,3.157,170,3.157,171,3.157,172,5.047,173,3.157,174,3.157,175,5.047,176,3.157,177,3.157,178,3.157,179,3.157,180,3.157,181,3.157,182,3.602,183,4.39,184,4.39,185,3.157,186,3.157,187,3.157,188,3.157,189,3.157,190,4.39,191,3.157,192,3.157,193,3.157,271,3.65]],["title/classes/JwksValidationHandler.html",[0,0.185,272,2.754]],["body/classes/JwksValidationHandler.html",[0,0.172,2,1.294,3,0.751,4,0.819,5,0.686,6,2.855,8,1.934,9,1.678,16,3.66,21,0.891,22,1.955,26,3.66,30,1.122,36,0.93,37,1.46,38,0.016,39,1.401,40,1.043,41,1.089,43,1.796,44,1.955,57,4.379,65,2.751,68,1.026,72,0.487,78,2.707,114,0.008,115,0.011,116,0.011,129,3.203,147,1.934,200,3.043,230,2.566,272,4.379,273,4.821,274,3.043,275,4.821,276,5.573,277,4.821,278,5.573,279,2.018,280,4.861,281,2.105,282,5.573,283,2.662,284,1.676,285,1.747,286,5.573,287,4.565,288,4.189,289,3.251,290,4.821,291,4.189,292,4.189,293,1.408,294,2.973,295,2.627,296,1.842,297,3.623,298,2.973,299,2.269,300,3.251,301,2.269,302,2.973,303,2.973,304,1.678,305,1.401,306,3.251,307,4.326,308,3.251,309,2.751,310,2.035,311,1.604,312,2.973,313,1.35,314,2.973,315,3.623,316,2.751,317,0.718,318,2.973,319,3.251,320,3.251,321,3.251,322,4.189,323,4.189]],["title/classes/LoginOptions.html",[0,0.185,324,2.076]],["body/classes/LoginOptions.html",[0,0.203,2,0.584,3,0.552,4,0.37,5,0.31,9,0.757,10,1.561,11,0.663,12,1.429,14,0.635,15,1.036,18,1.229,21,0.402,28,2.148,30,1.047,33,2.275,34,1.292,35,1.497,38,0.016,40,0.994,41,1.369,44,0.663,46,1.596,51,0.993,54,1.355,62,1.785,63,0.693,64,0.693,68,0.31,72,0.703,73,1.665,74,1.355,75,0.831,76,0.831,77,0.831,82,1.292,83,1.449,92,1.627,103,0.402,109,0.456,114,0.004,115,0.006,116,0.004,125,1.292,126,0.952,127,0.609,154,2.112,168,1.886,202,1.883,222,0.873,228,0.684,229,1.081,234,0.831,236,1.562,242,0.774,254,1.227,279,0.993,284,0.743,285,1.13,293,0.635,296,1.355,305,1.335,311,0.724,313,1.882,324,1.423,325,0.968,326,0.46,327,1.423,328,2.077,329,1.355,330,1.801,331,1.998,332,1.998,333,1.998,334,1.998,335,1.715,336,1.998,337,1.891,338,1.512,339,2.697,340,2.38,341,2.049,342,1.578,343,1.722,344,1.578,345,1.355,346,1.578,347,1.886,348,2.077,349,1.355,350,1.578,351,1.844,352,2.304,353,1.578,354,1.423,355,1.497,356,1.578,357,1.497,358,0.993,359,1.891,360,1.129,361,1.355,362,1.578,363,1.998,364,0.993,365,1.423,366,1.978,367,1.891,368,2.077,369,2.077,370,2.336,371,2.185,372,1.578,373,2.304,374,1.578,375,1.578,376,1.578,377,1.578,378,1.891,379,2.077,380,1.355,381,1.355,382,1.292,383,2.304,384,1.578,385,1.497,386,1.891,387,1.978,388,1.578,389,0.993,390,1.497,391,1.497,392,2.453,393,2.034,394,1.978,395,1.891,396,1.423,397,1.895,398,1.891,399,1.578,400,1.292,401,1.497,402,1.036,403,1.355,404,1.578,405,1.578,406,1.578,407,1.578,408,1.355,409,1.578,410,1.891,411,1.355,412,1.578,413,2.406,414,3.257,415,0.793,416,0.724,417,1.578,418,0.873,419,0.693,420,0.831,421,0.873,422,0.918,423,0.873,424,0.968,425,2.537,426,0.968,427,0.968,428,0.968,429,0.968,430,0.918,431,0.757,432,0.968,433,0.635,434,0.793,435,0.831,436,0.793,437,0.918,438,0.918,439,1.234,440,1.578,441,1.578,442,1.578,443,0.918,444,0.968,445,0.968,446,0.968,447,2.537,448,0.831,449,0.584,450,0.968,451,0.918,452,0.968,453,0.968,454,0.968,455,1.423,456,1.234,457,1.578,458,1.636,459,1.497,460,0.968,461,0.873,462,0.968,463,0.968,464,0.831,465,0.609,466,0.609,467,0.968,468,0.831,469,0.968,470,0.918,471,0.584,472,0.663,473,0.609,474,0.918,475,0.693,476,0.968,477,0.968,478,0.968,479,0.968,480,0.968,481,0.968,482,0.968,483,0.968,484,0.968,485,0.968,486,0.968,487,0.968,488,0.968,489,0.968,490,0.968,491,0.968,492,0.968,493,0.968,494,0.968,495,0.968,496,0.968,497,0.968,498,0.968,499,0.968,500,0.968,501,0.968,502,0.968,503,0.968,504,0.968]],["title/injectables/MemoryStorage.html",[126,1.389,443,2.184]],["body/injectables/MemoryStorage.html",[0,0.221,3,0.631,4,0.436,5,0.366,10,1.644,11,0.783,12,0.818,14,0.751,15,0.751,18,1.009,21,0.475,22,1.235,28,2.18,30,0.781,33,2.008,34,0.936,37,1.142,38,0.016,39,1.096,40,0.816,41,0.967,43,1.405,44,0.783,46,1.735,51,1.135,54,1.548,62,1.664,63,0.818,64,0.818,68,0.366,72,0.743,73,1.81,74,1.548,75,0.982,76,0.982,77,0.982,82,0.936,83,1.405,92,1.411,103,0.475,109,0.538,114,0.004,115,0.007,116,0.004,125,1.477,126,1.088,127,0.719,132,1.466,168,2.4,202,1.664,222,1.031,228,0.496,229,0.783,234,0.982,236,1.41,242,0.561,254,1.19,279,0.719,284,0.538,285,0.885,293,0.751,296,0.982,305,1.096,311,0.855,313,1.595,324,1.031,325,1.144,326,0.334,327,1.031,328,1.626,330,1.031,331,1.144,332,1.144,333,1.144,334,1.144,335,0.982,336,1.144,338,1.184,339,2.285,340,2.178,341,1.736,342,1.144,343,1.348,344,1.144,345,0.982,346,1.144,347,1.477,348,1.626,349,0.982,350,1.144,351,1.628,352,1.804,353,1.144,354,1.031,355,1.085,356,1.144,357,1.085,358,0.719,360,0.818,361,0.982,362,1.144,363,1.804,364,0.719,366,1.548,368,1.626,369,1.626,370,1.917,371,1.711,372,1.144,373,1.804,374,1.144,375,1.144,376,1.144,377,1.144,379,2.076,380,0.982,381,0.982,382,0.936,383,2.233,384,1.144,385,1.085,387,1.548,388,1.144,389,0.719,390,1.085,391,1.085,392,2.013,393,1.669,394,1.548,396,1.031,397,1.711,399,1.144,400,0.936,401,1.085,402,0.751,403,0.982,404,1.144,405,1.144,406,1.144,407,1.144,408,0.982,409,1.144,411,0.982,412,1.144,413,2.617,414,3.525,415,0.936,416,0.855,417,1.804,418,1.031,419,0.818,420,0.982,421,1.031,422,1.085,423,1.031,424,1.144,425,2.759,426,1.144,427,1.144,428,1.144,429,1.144,430,1.085,431,0.894,432,1.144,433,0.751,434,0.936,435,0.982,436,0.936,437,1.085,438,1.085,439,1.41,440,2.233,441,2.233,442,2.233,443,1.711,444,1.144,445,1.144,446,1.144,447,2.759,448,0.982,449,0.69,450,1.144,451,1.085,452,1.144,453,1.144,454,1.144,455,1.626,456,1.41,457,1.804,458,1.829,459,1.711,460,1.144,461,1.031,462,1.144,463,1.144,464,0.982,465,0.719,466,0.719,467,1.144,468,0.982,469,1.144,470,2.404,471,0.69,472,0.783,473,0.719,474,1.085,475,0.818,476,1.144,477,1.144,478,1.144,479,1.144,480,1.144,481,1.144,482,1.144,483,1.144,484,1.144,485,1.144,486,1.144,487,1.144,488,1.144,489,1.144,490,1.144,491,1.144,492,1.144,493,1.144,494,1.144,495,1.144,496,1.144,497,1.144,498,1.144,499,1.144,500,1.144,501,1.144,502,1.144,503,1.144,504,1.144,505,3.046,506,3.046,507,3.046,508,2.233,509,2.233,510,2.233]],["title/classes/NullValidationHandler.html",[0,0.185,287,2.952]],["body/classes/NullValidationHandler.html",[0,0.197,2,1.48,3,0.858,4,0.936,5,0.785,6,3.422,8,2.212,9,1.918,12,2.448,14,2.044,16,3.993,21,1.019,22,2.133,26,3.993,30,1.09,37,1.592,38,0.016,39,1.528,40,1.138,41,1.189,43,1.959,44,2.465,57,4.713,65,3.993,68,0.785,72,0.557,103,1.294,114,0.01,115,0.012,116,0.01,230,4.092,274,3.703,287,3.993,289,4.719,340,2.133,511,5.779,512,5.26,513,5.26,514,6.081,515,4.719,516,6.081,517,4.143,518,4.79,519,4.79,520,4.79]],["title/classes/OAuthErrorEvent.html",[0,0.185,521,2.754]],["body/classes/OAuthErrorEvent.html",[0,0.278,2,1.346,3,1.144,4,0.852,5,0.714,10,1.095,30,0.781,37,1.141,38,0.016,39,1.095,40,1.318,41,0.852,46,2.329,64,2.339,72,0.819,114,0.009,115,0.011,116,0.009,129,3.897,200,2.779,258,2.504,293,2.146,521,3.503,522,2.861,523,4.624,524,4.532,525,4.837,526,4.532,527,4.356,528,2.668,529,2.861,530,2.668,531,2.861,532,2.861,533,2.668,534,2.861,535,2.861,536,2.861,537,2.861,538,2.861,539,2.861,540,2.668,541,2.668,542,2.861,543,2.861,544,2.861,545,2.668,546,2.668,547,2.861,548,2.011,549,2.861,550,2.861,551,2.861,552,3.092,553,2.861,554,4.812,555,4.532,556,2.861]],["title/classes/OAuthEvent.html",[0,0.185,523,2.952]],["body/classes/OAuthEvent.html",[0,0.281,2,1.375,3,1.156,4,0.87,5,0.729,10,1.118,30,0.797,37,1.165,38,0.016,39,1.118,40,1.327,41,0.87,46,1.869,64,1.63,72,0.825,114,0.009,115,0.012,116,0.009,129,3.708,200,2.817,258,2.557,293,2.169,521,2.726,522,2.922,523,4.656,524,4.579,525,4.862,526,3.158,528,2.726,529,2.922,530,2.726,531,2.922,532,2.922,533,2.726,534,2.922,535,2.922,536,2.922,537,2.922,538,2.922,539,2.922,540,2.726,541,2.726,542,2.922,543,2.922,544,2.922,545,2.726,546,2.726,547,2.922,548,2.055,549,2.922,550,2.922,551,2.922,552,3.158,553,2.922,554,4.852,555,4.579,556,2.922,557,4.45]],["title/classes/OAuthInfoEvent.html",[0,0.185,556,2.952]],["body/classes/OAuthInfoEvent.html",[0,0.28,2,1.363,3,1.267,4,0.862,5,0.723,10,1.109,30,0.791,37,1.155,38,0.016,39,1.109,40,1.324,41,0.862,46,1.858,64,1.616,72,0.822,114,0.009,115,0.012,116,0.009,129,3.916,200,2.802,258,2.536,293,2.16,521,2.702,522,2.897,523,4.643,524,4.56,525,4.852,526,3.131,528,2.702,529,2.897,530,2.702,531,2.897,532,2.897,533,2.702,534,2.897,535,2.897,536,2.897,537,2.897,538,2.897,539,2.897,540,2.702,541,2.702,542,2.897,543,2.897,544,2.897,545,2.702,546,2.702,547,2.897,548,2.037,549,2.897,550,2.897,551,2.897,552,3.131,553,2.897,554,4.836,555,4.56,556,3.787,558,4.412]],["title/classes/OAuthLogger.html",[0,0.185,423,2.076]],["body/classes/OAuthLogger.html",[0,0.215,2,0.649,3,0.857,4,0.41,5,0.344,9,0.841,10,1.822,11,1.176,12,0.769,14,0.706,15,0.706,18,0.969,21,0.447,22,1.176,28,2.158,30,0.936,33,1.954,34,0.88,37,1.369,38,0.016,39,1.313,40,0.978,41,1.089,43,1.684,44,0.736,46,1.795,51,1.08,54,1.474,62,1.607,63,0.769,64,0.769,68,0.344,72,0.728,73,1.873,74,1.474,75,0.923,76,0.923,77,0.923,82,0.88,83,1.349,92,1.369,103,0.447,109,0.506,114,0.004,115,0.007,116,0.004,125,1.406,126,1.036,127,0.676,168,2.005,202,1.756,222,0.969,228,0.466,229,1.469,234,0.923,236,1.343,242,0.528,254,1.143,279,0.676,284,0.506,285,0.843,293,0.706,296,0.923,305,1.052,311,1.284,313,1.54,324,0.969,325,1.075,326,0.314,327,0.969,328,1.548,330,0.969,331,1.075,332,1.075,333,1.075,334,1.075,335,0.923,336,1.075,338,1.127,339,2.208,340,2.131,341,1.677,342,1.075,343,1.284,344,1.075,345,0.923,346,1.075,347,1.406,348,1.548,349,0.923,350,1.075,351,1.584,352,1.718,353,1.075,354,0.969,355,1.02,356,1.075,357,1.02,358,0.676,360,0.769,361,0.923,362,1.075,363,2.145,364,0.676,366,1.474,368,1.548,369,1.548,370,1.841,371,1.629,372,1.075,373,1.718,374,1.075,375,1.075,376,1.075,377,1.075,379,2.005,380,0.923,381,0.923,382,0.88,383,2.449,384,1.075,385,1.02,387,1.474,388,1.075,389,0.676,390,1.02,391,2.707,392,1.933,393,1.603,394,1.474,396,0.969,397,1.629,399,1.075,400,0.88,401,1.02,402,0.706,403,0.923,404,1.075,405,1.075,406,1.075,407,1.075,408,0.923,409,1.075,411,0.923,412,1.075,413,2.539,414,3.598,415,1.406,416,1.284,417,2.145,418,1.548,419,1.228,420,1.474,421,1.548,422,1.629,423,1.548,424,1.718,425,3.561,426,1.718,427,1.718,428,1.718,429,1.718,430,1.02,431,0.841,432,1.075,433,0.706,434,0.88,435,0.923,436,0.88,437,1.02,438,1.02,439,1.343,440,1.718,441,1.718,442,1.718,443,1.02,444,1.075,445,1.075,446,1.075,447,2.677,448,0.923,449,0.649,450,1.075,451,1.02,452,1.075,453,1.075,454,1.075,455,1.548,456,1.343,457,1.718,458,1.756,459,1.629,460,1.075,461,0.969,462,1.075,463,1.075,464,0.923,465,0.676,466,0.676,467,1.075,468,0.923,469,1.075,470,1.02,471,0.649,472,0.736,473,0.676,474,1.02,475,0.769,476,1.075,477,1.075,478,1.075,479,1.075,480,1.075,481,1.075,482,1.075,483,1.075,484,1.075,485,1.075,486,1.075,487,1.075,488,1.075,489,1.075,490,1.075,491,1.075,492,1.075,493,1.075,494,1.075,495,1.075,496,1.075,497,1.075,498,1.075,499,1.075,500,1.075,501,1.075,502,1.075,503,1.075,504,1.075,559,3.353,560,2.901,561,3.353,562,2.1,563,4.52,564,2.1,565,2.1,566,2.1,567,2.1]],["title/modules/OAuthModule.html",[568,3.489,569,2.952]],["body/modules/OAuthModule.html",[0,0.157,3,0.687,4,0.749,5,0.628,7,2.72,12,1.923,22,1.344,30,0.687,35,1.862,37,1.004,38,0.016,39,0.963,40,0.717,41,0.749,43,1.235,68,1.259,72,0.446,92,1.004,103,0.816,114,0.008,115,0.011,116,0.008,117,3.447,119,2.076,123,2.974,127,1.235,128,3.725,131,4.073,133,2.517,153,3.725,195,3.725,202,1.764,204,3.215,206,4.131,217,2.076,228,0.85,229,1.344,230,3.943,231,3.487,232,2.974,233,2.517,242,0.963,254,1.633,274,1.862,287,3.931,293,1.764,365,1.77,419,2.66,423,2.423,439,2.102,511,3.315,569,3.931,570,2.974,571,5.249,572,3.832,573,5.249,574,5.249,575,3.832,576,6.438,577,3.832,578,3.44,579,5.986,580,1.862,581,3.315,582,4.646,583,5.249,584,3.315,585,5.249,586,4.073,587,3.832,588,3.447,589,3.832,590,3.832,591,3.832,592,4.54,593,4.54,594,3.832,595,2.974,596,2.974,597,3.832,598,2.72,599,4.54,600,5.834,601,3.832,602,3.832]],["title/classes/OAuthModuleConfig.html",[0,0.185,206,2.754]],["body/classes/OAuthModuleConfig.html",[0,0.268,2,1.656,3,0.96,4,1.048,5,0.878,10,1.639,21,1.141,28,1.463,30,0.96,38,0.016,40,1.003,63,1.964,72,0.759,92,1.404,114,0.011,115,0.013,116,0.011,206,3.994,236,2.612,242,1.347,248,4.282,329,2.867,340,1.88,351,1.524,603,5.641,604,4.636,605,4.988,606,5.455,607,5.36,608,3.804,609,4.16,610,4.636,611,4.636,612,4.16,613,3.52,614,3.804,615,3.804,616,4.636]],["title/classes/OAuthNoopResourceServerErrorHandler.html",[0,0.185,588,2.952]],["body/classes/OAuthNoopResourceServerErrorHandler.html",[0,0.263,2,1.61,3,0.934,4,1.019,5,0.854,8,2.406,10,1.611,14,2.155,21,1.109,22,2.249,30,0.934,37,1.365,38,0.016,39,1.31,40,0.976,41,1.019,43,1.679,68,1.05,72,0.746,103,1.109,114,0.01,115,0.013,116,0.01,204,4.252,214,4.756,217,2.823,219,3.698,228,1.422,229,2.249,294,3.698,517,4.508,588,4.209,617,5.545,618,5.545,619,5.388,620,5.771,621,4.508,622,4.508]],["title/classes/OAuthResourceServerConfig.html",[0,0.185,606,3.489]],["body/classes/OAuthResourceServerConfig.html",[0,0.255,2,1.533,3,0.889,4,0.97,5,0.813,10,1.563,21,1.056,28,1.354,30,1.217,38,0.016,40,1.271,41,1.391,63,2.278,72,0.723,92,1.628,114,0.01,115,0.012,116,0.01,154,2.687,206,3.039,236,2.72,242,1.247,248,4.814,329,2.734,340,2.181,351,1.768,603,6.158,604,4.292,605,3.521,606,5.27,608,4.413,609,4.826,610,5.378,611,5.378,612,4.826,613,4.083,614,4.819,615,4.413,616,5.874,623,4.962,624,4.962,625,4.962]],["title/classes/OAuthResourceServerErrorHandler.html",[0,0.185,204,2.754]],["body/classes/OAuthResourceServerErrorHandler.html",[0,0.263,2,1.61,3,0.934,4,1.019,5,0.854,8,2.406,10,1.82,14,1.752,21,1.109,22,2.249,30,0.934,37,1.365,38,0.016,39,1.31,40,0.976,41,1.019,43,1.679,68,1.05,72,0.746,103,1.109,114,0.01,115,0.013,116,0.01,204,4.252,214,4.756,217,2.823,219,3.698,228,1.422,229,2.249,294,3.698,588,3.422,617,5.545,618,5.545,619,5.388,620,5.771,621,4.508,622,4.508,626,5.211]],["title/classes/OAuthStorage.html",[0,0.185,439,1.8]],["body/classes/OAuthStorage.html",[0,0.219,2,0.674,3,0.619,4,0.426,5,0.357,9,0.874,10,1.779,11,0.765,12,0.799,14,0.733,15,0.733,18,0.993,21,0.464,22,1.213,28,2.177,30,0.769,33,1.987,34,0.915,37,1.124,38,0.016,39,1.079,40,0.804,41,0.955,43,1.383,44,0.765,46,1.716,51,1.114,54,1.52,62,1.642,63,0.799,64,0.799,68,0.357,72,0.738,73,1.79,74,1.52,75,0.959,76,0.959,77,0.959,82,0.915,83,1.574,92,1.395,103,0.464,109,0.526,114,0.004,115,0.007,116,0.004,125,1.45,126,1.068,127,0.703,168,2.376,202,1.642,222,1.007,228,0.484,229,0.765,234,0.959,236,1.384,242,0.548,254,1.172,279,0.703,284,0.526,285,0.869,293,1.162,296,0.959,305,1.079,311,0.835,313,1.574,324,1.007,325,1.117,326,0.326,327,1.007,328,1.596,330,1.007,331,1.117,332,1.117,333,1.117,334,1.117,335,0.959,336,1.117,338,1.162,339,2.256,340,2.224,341,1.714,342,1.117,343,1.324,344,1.117,345,0.959,346,1.117,347,1.45,348,1.596,349,0.959,350,1.117,351,1.611,352,1.771,353,1.117,354,1.007,355,1.06,356,1.117,357,1.06,358,0.703,360,0.799,361,0.959,362,1.117,363,1.771,364,0.703,366,1.52,368,1.596,369,1.596,370,1.888,371,1.679,372,1.117,373,1.771,374,1.117,375,1.117,376,1.117,377,1.117,379,2.049,380,0.959,381,0.959,382,0.915,383,2.502,384,1.117,385,1.06,387,1.52,388,1.117,389,0.703,390,1.06,391,1.06,392,1.983,393,1.644,394,1.52,396,1.007,397,1.679,399,1.117,400,0.915,401,1.06,402,0.733,403,0.959,404,1.117,405,1.117,406,1.117,407,1.117,408,0.959,409,1.117,411,0.959,412,1.117,413,2.587,414,3.505,415,0.915,416,0.835,417,2.199,418,1.007,419,0.799,420,0.959,421,1.007,422,1.06,423,1.007,424,1.117,425,2.728,426,1.117,427,1.117,428,1.117,429,1.117,430,1.679,431,1.384,432,1.771,433,1.162,434,1.45,435,1.52,436,1.45,437,1.679,438,1.679,439,1.72,440,2.199,441,2.199,442,2.199,443,1.06,444,1.117,445,1.117,446,1.117,447,2.728,448,0.959,449,0.674,450,1.117,451,1.06,452,1.117,453,1.117,454,1.117,455,1.596,456,1.384,457,1.771,458,1.801,459,1.679,460,1.117,461,1.007,462,1.117,463,1.117,464,0.959,465,0.703,466,0.703,467,1.117,468,0.959,469,1.117,470,2.373,471,0.674,472,0.765,473,0.703,474,1.06,475,0.799,476,1.117,477,1.117,478,1.117,479,1.117,480,1.117,481,1.117,482,1.117,483,1.117,484,1.117,485,1.117,486,1.117,487,1.117,488,1.117,489,1.117,490,1.117,491,1.117,492,1.117,493,1.117,494,1.117,495,1.117,496,1.117,497,1.117,498,1.117,499,1.117,500,1.117,501,1.117,502,1.117,503,1.117,504,1.117,505,2.99,506,2.99,507,2.99,627,2.181,628,2.181,629,2.181]],["title/classes/OAuthSuccessEvent.html",[0,0.185,553,2.952]],["body/classes/OAuthSuccessEvent.html",[0,0.28,2,1.363,3,1.267,4,0.862,5,0.723,10,1.109,30,0.791,37,1.155,38,0.016,39,1.109,40,1.324,41,0.862,46,1.858,64,1.616,72,0.822,114,0.009,115,0.012,116,0.009,129,3.916,200,2.802,258,2.536,293,2.16,521,2.702,522,2.897,523,4.643,524,4.56,525,4.852,526,3.131,528,2.702,529,2.897,530,2.702,531,2.897,532,2.897,533,2.702,534,2.897,535,2.897,536,2.897,537,2.897,538,2.897,539,2.897,540,2.702,541,2.702,542,2.897,543,2.897,544,2.897,545,2.702,546,2.702,547,2.897,548,2.037,549,2.897,550,2.897,551,2.897,552,3.131,553,3.787,554,4.836,555,4.56,556,2.897,630,4.412]],["title/interfaces/OidcDiscoveryDoc.html",[73,1.511,474,2.184]],["body/interfaces/OidcDiscoveryDoc.html",[0,0.204,3,0.554,4,0.371,5,0.311,9,0.76,10,1.563,11,0.666,12,0.695,14,0.638,15,0.638,18,0.905,21,0.404,28,2.206,33,1.867,34,0.796,38,0.016,40,1.4,41,0.371,44,0.666,46,1.599,51,0.996,54,1.359,62,1.515,63,0.695,64,0.695,68,0.311,72,0.704,73,1.668,74,1.359,75,0.834,76,0.834,77,0.834,82,0.796,83,1.26,92,1.3,103,0.404,109,0.458,114,0.004,115,0.006,116,0.004,125,1.296,126,0.955,127,0.611,168,1.89,202,1.515,222,0.876,228,0.421,229,0.666,234,0.834,236,1.805,242,0.477,254,1.067,279,0.611,284,0.458,285,0.777,293,0.638,296,0.834,305,0.983,311,0.726,313,1.452,324,0.876,325,0.972,326,0.283,327,0.876,328,1.427,329,1.359,330,0.876,331,0.972,332,0.972,333,0.972,334,0.972,335,0.834,336,0.972,338,1.039,339,2.081,340,2.052,341,1.581,342,0.972,343,1.183,344,0.972,345,0.834,346,0.972,347,1.296,348,1.427,349,0.834,350,0.972,351,1.513,352,1.583,353,0.972,354,0.876,355,0.922,356,0.972,357,0.922,358,0.611,360,0.695,361,0.834,362,0.972,363,1.583,364,0.611,366,1.359,368,1.427,369,1.427,370,1.719,371,1.501,372,0.972,373,1.583,374,0.972,375,0.972,376,0.972,377,0.972,379,1.89,380,0.834,381,0.834,382,0.796,383,2.003,384,0.972,385,0.922,387,1.359,388,0.972,389,0.611,390,0.922,391,0.922,392,1.805,393,1.497,394,1.359,396,0.876,397,1.501,399,0.972,400,0.796,401,0.922,402,0.638,403,0.834,404,0.972,405,0.972,406,0.972,407,0.972,408,0.834,409,0.972,411,0.834,412,0.972,413,2.411,414,3.26,415,0.796,416,0.726,417,1.583,418,0.876,419,0.695,420,0.834,421,0.876,422,0.922,423,0.876,424,0.972,425,2.542,426,0.972,427,0.972,428,0.972,429,0.972,430,0.922,431,0.76,432,0.972,433,0.638,434,0.796,435,0.834,436,0.796,437,0.922,438,0.922,439,1.238,440,1.583,441,1.583,442,1.583,443,0.922,444,0.972,445,0.972,446,0.972,447,2.726,448,0.834,449,0.586,450,0.972,451,0.922,452,0.972,453,0.972,454,0.972,455,1.427,456,1.238,457,1.583,458,1.89,459,1.501,460,0.972,461,0.876,462,0.972,463,0.972,464,0.834,465,0.611,466,0.611,467,0.972,468,0.834,469,0.972,470,0.922,471,0.955,472,1.084,473,0.996,474,1.501,475,1.651,476,2.309,477,2.309,478,2.309,479,2.309,480,2.309,481,2.309,482,2.309,483,2.309,484,2.309,485,2.309,486,2.309,487,2.309,488,2.309,489,2.309,490,2.309,491,2.309,492,2.309,493,2.309,494,2.309,495,2.309,496,2.309,497,2.309,498,2.309,499,2.309,500,2.309,501,2.309,502,2.309,503,2.309,504,2.309,631,1.162]],["title/interfaces/ParsedIdToken.html",[73,1.511,451,2.184]],["body/interfaces/ParsedIdToken.html",[0,0.222,3,0.634,4,0.439,5,0.368,9,0.899,10,1.646,11,0.788,12,0.823,14,0.755,15,0.755,18,1.012,21,0.478,28,2.177,33,2.012,34,0.942,38,0.016,40,1.074,41,0.439,44,0.788,46,2.062,51,1.41,54,1.924,62,1.669,63,0.823,64,0.823,68,0.368,72,0.744,73,1.815,74,2.375,75,0.987,76,2.183,77,2.183,82,0.942,83,1.41,92,1.414,103,0.478,109,0.541,114,0.005,115,0.007,116,0.005,125,2.082,126,1.093,127,0.723,168,2.082,202,1.669,222,1.037,228,0.498,229,0.788,234,0.987,236,1.416,242,0.564,254,1.194,279,0.723,284,0.541,285,0.889,293,0.755,296,0.987,305,1.1,311,0.86,313,1.599,324,1.037,325,1.15,326,0.335,327,1.037,328,1.633,329,1.555,330,1.037,331,1.15,332,1.15,333,1.15,334,1.15,335,0.987,336,1.15,338,1.189,339,2.292,340,2.182,341,1.741,342,1.15,343,1.354,344,1.15,345,0.987,346,1.15,347,1.483,348,1.633,349,0.987,350,1.15,351,1.631,352,1.812,353,1.15,354,1.037,355,1.091,356,1.15,357,1.091,358,0.723,360,0.823,361,0.987,362,1.15,363,1.812,364,0.723,366,1.555,368,1.633,369,1.633,370,1.924,371,1.718,372,1.15,373,1.812,374,1.15,375,1.15,376,1.15,377,1.15,379,2.082,380,0.987,381,0.987,382,0.942,383,2.241,384,1.15,385,1.091,387,1.555,388,1.15,389,0.723,390,1.091,391,1.091,392,2.02,393,1.675,394,1.555,396,1.037,397,2.126,399,1.15,400,0.942,401,1.091,402,0.755,403,0.987,404,1.15,405,1.15,406,1.15,407,1.15,408,0.987,409,1.15,411,0.987,412,1.15,413,2.623,414,3.422,415,0.942,416,0.86,417,1.812,418,1.037,419,0.823,420,0.987,421,1.037,422,1.091,423,1.037,424,1.15,425,2.766,426,1.15,427,1.15,428,1.15,429,1.15,430,1.091,431,0.899,432,1.15,433,0.755,434,0.942,435,0.987,436,0.942,437,1.091,438,1.091,439,1.416,440,1.812,441,1.812,442,1.812,443,1.091,444,1.15,445,1.15,446,1.15,447,2.938,448,0.987,449,0.694,450,1.15,451,1.718,452,2.543,453,2.543,454,2.543,455,1.633,456,1.416,457,1.812,458,1.835,459,1.718,460,1.15,461,1.037,462,1.15,463,1.15,464,0.987,465,0.723,466,0.723,467,1.15,468,0.987,469,1.15,470,1.091,471,0.694,472,0.788,473,0.723,474,1.091,475,0.823,476,1.15,477,1.15,478,1.15,479,1.15,480,1.15,481,1.15,482,1.15,483,1.15,484,1.15,485,1.15,486,1.15,487,1.15,488,1.15,489,1.15,490,1.15,491,1.15,492,1.15,493,1.15,494,1.15,495,1.15,496,1.15,497,1.15,498,1.15,499,1.15,500,1.15,501,1.15,502,1.15,503,1.15,504,1.15,631,1.375]],["title/classes/ReceivedTokens.html",[0,0.185,413,2.184]],["body/classes/ReceivedTokens.html",[0,0.222,2,0.697,3,0.636,4,0.441,5,0.37,9,0.904,10,1.649,11,0.792,12,0.827,14,0.759,15,0.759,18,1.016,21,0.48,28,2.173,30,0.892,33,2.017,34,0.947,38,0.016,40,0.932,41,1.058,44,0.792,46,1.852,51,1.144,54,1.931,62,1.932,63,0.827,64,0.827,68,0.37,72,0.746,73,1.82,74,2.189,75,1.931,76,0.993,77,0.993,82,0.947,83,1.604,92,1.418,103,0.48,109,0.544,114,0.005,115,0.007,116,0.005,125,1.489,126,1.097,127,0.727,168,2.088,202,1.674,222,1.042,228,0.501,229,0.792,234,0.993,236,1.422,242,0.567,254,1.359,279,0.727,284,0.544,285,0.893,293,0.759,296,0.993,305,1.103,311,0.864,313,1.604,324,1.042,325,1.156,326,0.337,327,1.042,328,1.64,329,1.562,330,1.042,331,1.156,332,1.156,333,1.156,334,1.156,335,0.993,336,1.156,338,1.194,339,2.299,340,2.186,341,1.747,342,1.156,343,1.36,344,1.156,345,0.993,346,1.156,347,1.489,348,1.64,349,0.993,350,1.156,351,1.635,352,1.819,353,1.156,354,1.042,355,1.097,356,1.156,357,1.097,358,0.727,360,0.827,361,0.993,362,1.156,363,1.819,364,0.727,366,1.562,368,1.64,369,1.64,370,1.931,371,1.725,372,1.156,373,1.819,374,1.156,375,1.156,376,1.156,377,1.156,379,2.523,380,0.993,381,0.993,382,0.947,383,2.249,384,1.156,385,1.097,387,1.562,388,1.156,389,0.727,390,1.097,391,1.097,392,2.027,393,1.681,394,1.562,396,1.042,397,1.725,399,1.156,400,0.947,401,1.097,402,0.759,403,0.993,404,1.156,405,1.156,406,1.156,407,1.156,408,0.993,409,1.156,411,0.993,412,1.156,413,2.793,414,3.427,415,0.947,416,0.864,417,1.819,418,1.042,419,0.827,420,0.993,421,1.042,422,1.097,423,1.042,424,1.156,425,2.773,426,1.156,427,1.156,428,1.156,429,1.156,430,1.097,431,0.904,432,1.156,433,0.759,434,0.947,435,0.993,436,0.947,437,1.097,438,1.097,439,1.422,440,1.819,441,1.819,442,1.819,443,1.097,444,1.156,445,1.156,446,1.156,447,2.945,448,1.562,449,1.097,450,2.249,451,1.097,452,1.156,453,1.156,454,1.156,455,1.64,456,1.422,457,1.819,458,1.841,459,1.725,460,1.156,461,1.042,462,1.156,463,1.156,464,0.993,465,0.727,466,0.727,467,1.156,468,0.993,469,1.156,470,1.097,471,0.697,472,0.792,473,0.727,474,1.097,475,0.827,476,1.156,477,1.156,478,1.156,479,1.156,480,1.156,481,1.156,482,1.156,483,1.156,484,1.156,485,1.156,486,1.156,487,1.156,488,1.156,489,1.156,490,1.156,491,1.156,492,1.156,493,1.156,494,1.156,495,1.156,496,1.156,497,1.156,498,1.156,499,1.156,500,1.156,501,1.156,502,1.156,503,1.156,504,1.156,632,2.257,633,2.257,634,2.257,635,2.257]],["title/injectables/SystemDateTimeProvider.html",[126,1.389,128,3.19]],["body/injectables/SystemDateTimeProvider.html",[0,0.262,3,0.927,4,1.011,5,0.848,10,1.739,21,1.101,22,2.238,30,1.143,38,0.016,43,2.056,68,0.848,72,0.742,103,1.358,109,1.822,114,0.01,115,0.013,116,0.01,117,4.873,118,4.474,119,2.801,120,4.474,121,5.266,123,5.607,125,2.902,126,1.971,127,1.667,128,4.528,129,3.667,130,4.474,132,3.396,290,5.519,636,5.172,637,5.172]],["title/interfaces/TokenResponse.html",[73,1.511,461,2.076]],["body/interfaces/TokenResponse.html",[0,0.22,3,0.627,4,0.433,5,0.363,9,0.887,10,1.64,11,0.777,12,0.811,14,0.744,15,0.744,18,1.003,21,0.471,28,2.183,33,2,34,0.928,38,0.016,40,1.118,41,0.847,44,0.777,46,1.728,51,1.728,54,1.538,62,1.656,63,1.805,64,0.811,68,0.363,72,0.741,73,1.803,74,1.538,75,0.974,76,0.974,77,0.974,82,0.928,83,1.397,92,1.405,103,0.471,109,0.534,114,0.004,115,0.007,116,0.004,125,2.066,126,1.081,127,0.713,168,2.066,202,1.656,222,1.022,228,0.491,229,0.777,234,0.974,236,1.401,242,0.556,254,1.344,279,0.713,284,0.534,285,0.879,293,0.744,296,0.974,305,1.09,311,0.848,313,1.587,324,1.022,325,1.134,326,0.331,327,1.022,328,1.615,329,1.538,330,1.022,331,1.134,332,1.134,333,1.134,334,1.134,335,0.974,336,1.134,338,1.176,339,2.275,340,2.171,341,1.728,342,1.134,343,1.339,344,1.134,345,0.974,346,1.134,347,1.467,348,1.615,349,0.974,350,1.134,351,1.622,352,1.792,353,1.134,354,1.022,355,1.076,356,1.134,357,1.076,358,0.713,360,0.811,361,0.974,362,1.134,363,1.792,364,0.713,366,1.538,368,1.615,369,1.615,370,1.906,371,1.699,372,1.134,373,1.792,374,1.134,375,1.134,376,1.134,377,1.134,379,2.504,380,0.974,381,0.974,382,0.928,383,2.221,384,1.134,385,1.076,387,1.538,388,1.134,389,0.713,390,1.076,391,1.076,392,2.002,393,1.66,394,1.538,396,1.022,397,1.699,399,1.134,400,0.928,401,1.076,402,0.744,403,0.974,404,1.134,405,1.134,406,1.134,407,1.134,408,0.974,409,1.134,411,0.974,412,1.134,413,2.606,414,3.409,415,0.928,416,0.848,417,1.792,418,1.022,419,0.811,420,0.974,421,1.022,422,1.076,423,1.022,424,1.134,425,2.748,426,1.134,427,1.134,428,1.134,429,1.134,430,1.076,431,0.887,432,1.134,433,0.744,434,0.928,435,0.974,436,0.928,437,1.076,438,1.076,439,1.401,440,1.792,441,1.792,442,1.792,443,1.076,444,1.134,445,1.134,446,1.134,447,2.921,448,0.974,449,0.684,450,1.134,451,1.076,452,1.134,453,1.134,454,1.134,455,2.002,456,1.736,457,2.221,458,2.066,459,2.106,460,1.792,461,1.615,462,2.523,463,2.523,464,2.166,465,1.587,466,0.713,467,1.134,468,0.974,469,1.134,470,1.076,471,0.684,472,0.777,473,0.713,474,1.076,475,0.811,476,1.134,477,1.134,478,1.134,479,1.134,480,1.134,481,1.134,482,1.134,483,1.134,484,1.134,485,1.134,486,1.134,487,1.134,488,1.134,489,1.134,490,1.134,491,1.134,492,1.134,493,1.134,494,1.134,495,1.134,496,1.134,497,1.134,498,1.134,499,1.134,500,1.134,501,1.134,502,1.134,503,1.134,504,1.134,631,1.356]],["title/injectables/UrlHelperService.html",[126,1.389,586,3.489]],["body/injectables/UrlHelperService.html",[0,0.186,3,0.81,4,0.883,5,0.74,21,0.961,22,2.055,28,1.992,30,1.05,33,2.412,35,2.195,37,1.534,38,0.016,39,1.472,40,1.096,41,1.145,43,1.887,46,2.216,68,0.74,72,0.525,84,3.954,103,1.383,114,0.009,115,0.012,116,0.009,126,1.81,127,1.456,132,2.967,147,2.705,163,3.588,168,2.456,293,1.518,330,2.705,354,2.705,470,2.195,563,3.908,586,4.546,638,6.499,639,4.518,640,5.857,641,5.857,642,5.857,643,4.518,644,5.857,645,4.518,646,4.518,647,4.518,648,5.857,649,5.857,650,4.157,651,4.518,652,4.518,653,4.518,654,5.857,655,4.518,656,4.518,657,4.518,658,4.518,659,4.518]],["title/interfaces/UserInfo.html",[73,1.511,468,1.977]],["body/interfaces/UserInfo.html",[0,0.225,3,0.798,4,0.451,5,0.378,9,0.924,10,1.659,11,0.81,12,0.845,14,0.776,15,0.776,18,1.03,21,0.491,28,2.176,30,0.414,33,2.036,34,0.968,38,0.016,40,0.432,41,0.451,44,0.81,46,1.763,51,1.164,54,1.589,62,1.694,63,0.845,64,0.845,68,0.378,72,0.751,73,1.839,74,1.589,75,1.015,76,1.015,77,1.015,82,0.968,83,1.435,92,1.433,103,0.491,109,0.556,114,0.005,115,0.007,116,0.005,125,1.515,126,1.117,127,0.744,168,2.114,202,1.694,222,1.066,228,0.512,229,0.81,234,1.015,236,1.447,242,0.58,254,1.215,279,0.744,284,0.556,285,0.908,293,0.776,296,1.015,305,1.119,311,0.884,313,1.624,324,1.066,325,1.182,326,0.345,327,1.066,328,1.669,329,1.589,330,1.066,331,1.182,332,1.182,333,1.182,334,1.182,335,1.015,336,1.182,338,1.215,339,2.327,340,2.203,341,1.768,342,1.182,343,1.384,344,1.182,345,1.015,346,1.182,347,1.515,348,1.669,349,1.015,350,1.182,351,1.65,352,1.851,353,1.182,354,1.066,355,1.121,356,1.182,357,1.121,358,0.744,360,0.845,361,1.015,362,1.182,363,1.851,364,0.744,366,1.589,368,1.669,369,1.669,370,1.958,371,1.755,372,1.182,373,1.851,374,1.182,375,1.182,376,1.182,377,1.182,379,2.114,380,1.015,381,1.015,382,0.968,383,2.281,384,1.182,385,1.121,387,1.589,388,1.182,389,0.744,390,1.121,391,1.121,392,2.057,393,1.705,394,1.589,396,1.066,397,1.755,399,1.182,400,0.968,401,1.121,402,0.776,403,1.015,404,1.182,405,1.182,406,1.182,407,1.182,408,1.015,409,1.182,411,1.015,412,1.182,413,2.658,414,3.447,415,0.968,416,0.884,417,1.851,418,1.066,419,0.845,420,1.015,421,1.066,422,1.121,423,1.066,424,1.182,425,2.803,426,1.182,427,1.182,428,1.182,429,1.182,430,1.121,431,0.924,432,1.182,433,0.776,434,0.968,435,1.015,436,0.968,437,1.121,438,1.121,439,1.447,440,1.851,441,1.851,442,1.851,443,1.121,444,1.182,445,1.182,446,1.182,447,2.973,448,1.015,449,0.713,450,1.182,451,1.121,452,1.182,453,1.182,454,1.182,455,2.057,456,1.784,457,2.281,458,2.114,459,2.164,460,1.182,461,1.066,462,1.182,463,1.182,464,1.015,465,0.744,466,1.164,467,1.851,468,1.589,469,2.582,470,1.755,471,0.713,472,0.81,473,0.744,474,1.121,475,0.845,476,1.182,477,1.182,478,1.182,479,1.182,480,1.182,481,1.182,482,1.182,483,1.182,484,1.182,485,1.182,486,1.182,487,1.182,488,1.182,489,1.182,490,1.182,491,1.182,492,1.182,493,1.182,494,1.182,495,1.182,496,1.182,497,1.182,498,1.182,499,1.182,500,1.182,501,1.182,502,1.182,503,1.182,504,1.182,631,1.414,660,2.308,661,2.308]],["title/classes/ValidationHandler.html",[0,0.185,12,1.647]],["body/classes/ValidationHandler.html",[0,0.192,1,2.306,2,1.004,3,0.582,4,0.635,5,0.532,6,2.804,7,3.885,8,1.5,9,1.301,10,1.832,11,1.14,12,2.193,13,1.99,14,1.571,15,1.571,16,3.931,17,1.664,18,1.081,19,2.306,20,3.069,21,0.691,22,1.64,23,3.628,25,2.306,26,3.595,28,1.802,29,3.931,30,0.838,32,2.522,33,1.92,34,1.96,35,1.578,36,0.721,37,1.224,38,0.016,39,1.376,40,0.875,41,0.914,42,3.069,43,1.506,44,2.443,45,2.522,46,1.929,48,2.522,49,4.249,50,2.522,51,2.193,52,2.522,53,2.522,54,1.429,55,2.134,56,2.522,57,4.552,59,4.688,60,4.502,61,3.885,62,1.84,63,2.005,65,3.069,67,3.595,68,0.532,69,2.306,70,2.306,71,2.522,72,0.637,73,1.84,74,1.429,75,1.429,76,1.429,77,1.429,78,1.578,79,2.522,80,3.628,81,3.628,82,1.96,83,1.506,84,3.578,85,3.628,86,2.522,87,2.522,88,2.134,89,2.522,90,2.522,91,2.522,92,0.851,93,2.522,94,2.522,95,2.522,96,2.306,97,4.646,98,2.522,99,4.646,100,2.522,101,2.522,102,2.522,103,0.995,104,4.249,105,2.522,106,2.522,107,2.522,108,2.134,109,0.783,110,2.522,111,2.134,112,2.306,113,2.522,114,0.007,115,0.009,116,0.007,289,2.522,662,3.249,663,3.249]],["title/interfaces/ValidationParams.html",[57,2.754,73,1.511]],["body/interfaces/ValidationParams.html",[0,0.196,1,2.369,3,0.598,4,0.652,5,0.547,6,1.71,7,2.369,8,1.541,10,1.724,11,1.171,12,2.036,13,2.045,14,1.602,15,1.602,16,3.129,17,1.71,18,1.102,19,2.369,20,3.129,21,0.71,23,3.698,25,2.369,26,2.192,28,1.977,29,3.98,32,2.591,33,1.95,34,1.998,35,1.622,36,0.741,38,0.016,39,0.839,40,1.248,42,3.129,44,2.338,45,2.591,46,2.334,48,2.591,49,4.313,50,2.591,51,2.065,52,2.591,53,2.591,54,1.468,55,2.192,56,2.591,57,4.297,59,4.302,60,4.302,61,3.382,62,1.602,63,1.746,65,2.192,67,3.129,68,0.547,69,2.369,70,2.369,71,2.591,72,0.646,73,1.602,74,2.665,75,2.665,76,2.665,77,2.665,78,2.944,79,4.704,80,2.591,81,2.591,82,1.4,83,1.076,84,2.581,85,3.698,86,2.591,87,2.591,88,2.192,89,2.591,90,2.591,91,2.591,92,0.874,93,2.591,94,2.591,95,2.591,96,2.369,97,4.704,98,2.591,99,4.704,100,2.591,101,2.591,102,2.591,103,1.014,104,4.313,105,2.591,106,2.591,107,2.591,108,2.192,109,0.805,110,2.591,111,2.192,112,2.369,113,2.591,114,0.007,115,0.01,116,0.007,154,2.581,329,2.095,631,2.045]],["title/classes/WebHttpUrlEncodingCodec.html",[0,0.185,664,3.889]],["body/classes/WebHttpUrlEncodingCodec.html",[0,0.183,2,1.378,3,0.799,4,0.872,5,0.731,9,1.786,14,1.952,21,0.949,22,2.037,28,2.167,30,1.226,37,1.792,38,0.016,39,1.72,40,1.281,41,1.337,43,2.205,68,0.731,72,0.519,103,1.456,114,0.009,115,0.012,116,0.009,164,4.122,217,2.415,338,1.952,340,2.037,664,5.024,665,4.46,666,5.808,667,5.808,668,5.808,669,6.459,670,5.808,671,5.808,672,5.808,673,5.808,674,5.808,675,4.46,676,5.808,677,5.808,678,4.46,679,5.808,680,5.808,681,4.46,682,5.808,683,4.46,684,4.46,685,4.46,686,4.46,687,4.46]],["title/changelog.html",[688,2.249,689,2.569,690,3.384]],["body/changelog.html",[5,0.774,13,1.258,17,2.113,18,1.341,33,1.656,36,1.224,37,0.538,38,0.009,40,0.617,41,0.401,51,0.662,64,2.021,78,0.998,83,0.662,92,0.863,109,0.794,112,1.457,114,0.004,115,0.007,116,0.004,117,1.349,119,1.112,121,2.338,145,1.349,146,1.349,160,1.594,182,2.338,200,0.998,228,0.456,229,0.72,230,1.258,231,2.557,233,3.623,236,0.822,242,1.299,254,1.582,274,0.998,283,0.786,284,1.398,295,0.861,299,2.235,304,1.891,305,1.757,308,2.557,311,1.58,313,2.252,327,0.948,330,0.948,338,1.737,341,0.72,343,1.979,345,2.549,347,1.98,349,1.449,354,1.521,357,0.998,364,1.665,365,1.905,368,0.948,369,0.948,379,2.675,385,0.998,389,0.662,401,0.998,402,1.107,431,0.822,449,0.635,455,0.948,456,1.652,461,0.948,464,1.449,468,0.903,473,1.062,548,2.387,609,1.594,690,1.776,691,2.054,692,2.054,693,2.054,694,2.054,695,4.471,696,4.471,697,2.054,698,2.054,699,5.796,700,2.054,701,2.054,702,2.054,703,2.054,704,2.054,705,2.054,706,2.054,707,2.054,708,2.054,709,2.054,710,2.054,711,2.054,712,2.054,713,2.054,714,5.169,715,2.054,716,2.054,717,2.054,718,2.054,719,2.054,720,3.569,721,2.928,722,2.054,723,2.054,724,2.054,725,2.054,726,2.054,727,2.054,728,1.457,729,2.054,730,1.18,731,2.054,732,2.054,733,5.517,734,2.054,735,2.054,736,2.054,737,2.054,738,2.054,739,0.822,740,2.054,741,3.295,742,2.054,743,2.054,744,2.054,745,2.054,746,4.471,747,2.054,748,2.054,749,2.054,750,1.18,751,2.054,752,2.338,753,2.054,754,2.054,755,1.776,756,2.054,757,4.772,758,2.054,759,2.054,760,1.594,761,2.054,762,3.35,763,1.18,764,2.054,765,4.114,766,2.054,767,2.054,768,2.054,769,2.054,770,2.054,771,1.776,772,1.776,773,3.569,774,2.054,775,2.054,776,2.054,777,2.054,778,2.054,779,1.457,780,2.054,781,2.054,782,4.126,783,5.796,784,4.126,785,4.126,786,3.295,787,2.054,788,2.054,789,2.054,790,2.054,791,2.054,792,2.054,793,3.295,794,3.295,795,2.054,796,2.054,797,2.054,798,2.054,799,2.054,800,2.054,801,2.054,802,2.054,803,4.126,804,3.295,805,2.054,806,3.295,807,2.054,808,2.054,809,2.054,810,4.126,811,2.054,812,2.054,813,2.85,814,2.054,815,2.054,816,2.054,817,2.054,818,2.054,819,2.054,820,2.054,821,3.295,822,4.126,823,4.126,824,4.126,825,2.054,826,1.594,827,2.054,828,4.721,829,2.054,830,2.054,831,2.054,832,2.054,833,2.054,834,2.054,835,2.054,836,2.054,837,4.126,838,3.295,839,2.054,840,2.054,841,2.054,842,3.295,843,2.054,844,2.054,845,1.776,846,2.054,847,2.054,848,2.054,849,2.054,850,2.054,851,2.85,852,2.054,853,3.569,854,3.202,855,4.126,856,2.054,857,4.126,858,3.569,859,3.202,860,2.928,861,4.126,862,2.054,863,1.776,864,2.054,865,2.054,866,2.235,867,1.594,868,2.054,869,1.776,870,3.295,871,3.295,872,3.295,873,2.85,874,3.295,875,2.557,876,2.163,877,2.85,878,3.295,879,3.55,880,2.85,881,1.6,882,3.202,883,2.85,884,3.295,885,3.295,886,2.892,887,1.893,888,2.054,889,2.338,890,2.557,891,3.295,892,2.85,893,4.084,894,3.295,895,2.054,896,2.054,897,2.054,898,1.776,899,2.054,900,2.85,901,2.85,902,2.163,903,3.295,904,2.85,905,2.85,906,3.295,907,3.295,908,3.295,909,4.126,910,2.557,911,2.85,912,3.295,913,2.338,914,2.018,915,3.295,916,3.295,917,3.295,918,3.295,919,2.338,920,3.295,921,3.295,922,3.295,923,3.295,924,3.295,925,2.85,926,3.295,927,3.295,928,3.295,929,3.295,930,3.295,931,2.054,932,2.054,933,2.054,934,3.295,935,2.054,936,3.295,937,2.054,938,1.776,939,1.776,940,1.776,941,1.776,942,0.903,943,1.776,944,1.776,945,1.18,946,1.349,947,2.054,948,2.054,949,2.054,950,1.457,951,2.054,952,2.054,953,2.054,954,2.054,955,2.054,956,2.054,957,2.054,958,3.295,959,2.054,960,2.054,961,3.295,962,1.776,963,2.054,964,2.054,965,2.928,966,3.295,967,2.054,968,2.054,969,2.054,970,2.054,971,2.054,972,2.054,973,1.776,974,1.776,975,2.054,976,2.054,977,2.054,978,2.054,979,2.054,980,2.054,981,2.054,982,1.776,983,2.054,984,2.054]],["title/dependencies.html",[985,3.913,986,4.131]],["body/dependencies.html",[38,0.016,70,3.48,78,2.382,114,0.01,115,0.012,116,0.01,127,1.58,145,3.22,146,3.22,149,3.805,164,3.48,219,4.38,283,2.363,284,1.488,285,1.551,299,2.656,584,4.241,721,3.48,873,4.241,986,3.805,987,4.903,988,7.726,989,4.903,990,4.903,991,4.903,992,6.171,993,5.338,994,4.903,995,4.903,996,4.903,997,4.903,998,4.903,999,4.903,1000,4.903,1001,4.903,1002,4.241,1003,4.903,1004,3.805,1005,4.903,1006,4.903,1007,4.903,1008,4.903,1009,4.903,1010,6.171,1011,4.903,1012,4.903,1013,4.903,1014,4.903,1015,4.903,1016,4.903,1017,4.903,1018,4.903,1019,4.903,1020,4.903,1021,4.903,1022,4.903,1023,4.903]],["title/miscellaneous/functions.html",[1024,2.396,1025,4.605]],["body/miscellaneous/functions.html",[6,2.724,8,3.235,21,1.132,28,1.451,37,1.91,38,0.015,39,1.833,41,1.426,43,1.714,69,4.606,114,0.011,115,0.013,116,0.011,133,3.492,155,4.128,157,4.128,592,6.06,593,6.06,1024,3.258,1025,4.601,1026,6.491,1027,6.491,1028,7.005,1029,6.491,1030,6.491,1031,5.614,1032,6.491,1033,5.319,1034,5.319,1035,5.614,1036,5.319,1037,5.319,1038,5.319,1039,5.319]],["title/index.html",[21,0.833,688,2.249,689,2.569]],["body/index.html",[0,0.071,4,0.339,5,0.284,11,0.609,13,1.063,15,1.235,17,1.471,18,1.537,30,0.311,34,0.728,36,1.131,38,0.016,51,0.559,67,1.14,68,0.835,72,0.334,78,0.843,83,0.559,92,0.962,96,1.232,109,0.418,111,1.886,114,0.003,115,0.006,116,0.006,119,0.94,121,2.038,147,0.801,154,0.94,194,1.501,217,0.94,228,1.299,231,2.761,242,0.722,248,1.886,254,1.689,272,2.251,279,1.184,280,1.347,281,2.261,283,2.818,284,1.525,285,1.555,295,1.204,298,1.232,299,3.171,300,2.852,301,2.563,302,1.232,304,2.261,305,1.728,306,2.229,307,3.672,309,1.886,310,0.843,311,0.664,312,2.038,313,2.076,314,2.038,316,1.886,317,0.63,318,2.038,319,2.229,320,2.229,321,1.347,326,0.259,338,0.965,340,1.289,341,0.609,348,0.801,351,1.045,358,1.184,360,0.636,361,0.763,364,1.376,365,1.326,380,1.263,381,0.763,382,1.204,389,1.739,396,0.801,400,1.541,402,0.965,411,0.763,415,1.984,420,1.263,433,0.965,434,0.728,436,0.728,448,0.763,449,0.887,456,1.71,458,1.204,459,1.395,465,1.184,466,1.739,468,0.763,471,1.135,472,1.289,473,1.376,475,1.052,513,2.484,548,1.697,569,1.14,580,1.395,582,2.229,595,1.347,596,1.347,605,1.232,608,1.232,614,2.038,615,1.232,695,2.484,696,1.501,720,1.501,721,1.232,728,2.038,730,2.454,739,1.471,746,2.484,750,0.997,752,2.038,757,1.501,762,1.232,779,2.038,813,1.501,826,2.229,854,1.347,860,1.232,866,2.313,869,1.501,876,1.886,879,2.616,881,0.843,882,1.347,883,1.501,887,2.454,889,3.618,892,1.501,893,1.501,898,2.484,902,1.886,910,1.347,911,1.501,914,1.759,919,1.232,925,1.501,938,1.501,939,1.501,940,1.501,941,1.501,942,2.081,943,1.501,944,1.501,945,1.651,946,1.14,965,1.232,1002,1.501,1004,1.347,1040,1.735,1041,3.674,1042,2.608,1043,1.735,1044,1.735,1045,2.872,1046,1.735,1047,1.735,1048,2.229,1049,1.735,1050,2.872,1051,3.672,1052,1.735,1053,1.735,1054,3.618,1055,3.674,1056,1.735,1057,2.484,1058,1.347,1059,1.735,1060,1.735,1061,4.271,1062,1.735,1063,2.872,1064,2.872,1065,1.501,1066,2.872,1067,1.735,1068,1.735,1069,1.735,1070,3.107,1071,1.735,1072,1.735,1073,1.735,1074,2.872,1075,1.735,1076,1.735,1077,2.872,1078,3.031,1079,2.484,1080,0.843,1081,2.229,1082,1.347,1083,1.232,1084,1.347,1085,1.501,1086,2.229,1087,2.229,1088,0.889,1089,1.501,1090,2.229,1091,3.674,1092,1.735,1093,1.735,1094,2.616,1095,1.759,1096,1.735,1097,6.034,1098,4.093,1099,2.872,1100,1.735,1101,1.735,1102,1.735,1103,1.735,1104,3.674,1105,2.872,1106,1.14,1107,1.735,1108,2.872,1109,1.735,1110,1.735,1111,2.872,1112,1.735,1113,1.735,1114,1.735,1115,1.735,1116,3.674,1117,2.872,1118,1.735,1119,1.735,1120,1.501,1121,1.735,1122,1.501,1123,1.347,1124,1.735,1125,1.735,1126,1.735,1127,1.735,1128,1.735,1129,1.735,1130,1.232,1131,1.735,1132,1.735,1133,1.735,1134,1.735,1135,4.732,1136,1.501,1137,1.347,1138,2.872,1139,2.229,1140,1.735,1141,1.232,1142,1.063,1143,1.735,1144,1.347,1145,2.872,1146,1.501,1147,1.759,1148,1.501,1149,1.501,1150,2.872,1151,1.735,1152,2.251,1153,1.735,1154,1.501,1155,1.735,1156,1.735,1157,1.232,1158,1.735,1159,2.229,1160,1.501,1161,1.735,1162,1.735,1163,1.501,1164,1.735,1165,1.735,1166,1.735,1167,2.313,1168,1.735,1169,3.674,1170,1.735,1171,1.735,1172,1.735,1173,1.735,1174,1.735,1175,2.484,1176,3.178,1177,2.229,1178,1.759,1179,1.347,1180,1.501,1181,1.347,1182,1.735,1183,1.886,1184,1.735,1185,1.501,1186,1.735,1187,0.728,1188,1.232,1189,1.759,1190,1.735,1191,1.735,1192,0.94,1193,0.997,1194,0.997,1195,1.232,1196,1.759,1197,1.735,1198,1.501,1199,2.484,1200,2.872,1201,2.484,1202,1.347,1203,1.735,1204,1.735,1205,1.735,1206,1.232,1207,1.501,1208,0.997,1209,1.556,1210,1.063,1211,1.735,1212,1.735,1213,2.038,1214,2.251,1215,1.14,1216,1.063,1217,0.889,1218,0.889,1219,1.735,1220,1.735,1221,1.735,1222,2.872,1223,1.735,1224,1.735,1225,1.735,1226,1.886,1227,1.14,1228,1.735,1229,1.735,1230,1.501,1231,1.735,1232,1.735,1233,1.735,1234,1.735,1235,1.735,1236,2.229,1237,1.063,1238,1.735,1239,2.872,1240,1.735,1241,1.886,1242,1.232,1243,1.735,1244,1.735,1245,1.735,1246,1.501,1247,1.886,1248,1.232,1249,1.347,1250,1.735,1251,1.735,1252,1.232,1253,1.735,1254,1.501,1255,1.735,1256,2.484,1257,1.501,1258,0.997,1259,1.347,1260,1.735,1261,1.347,1262,2.872,1263,1.735,1264,1.735,1265,1.735,1266,1.501,1267,1.501,1268,1.735,1269,1.501,1270,1.14,1271,1.347,1272,0.94,1273,2.872,1274,1.735,1275,1.735,1276,1.735,1277,1.735,1278,2.872,1279,2.872,1280,1.735,1281,1.735,1282,1.735,1283,1.735,1284,1.735,1285,1.735,1286,1.735,1287,1.735,1288,1.347,1289,1.735,1290,1.735,1291,1.735,1292,1.735,1293,1.735,1294,1.735,1295,1.735,1296,1.232,1297,1.735,1298,1.735,1299,1.735,1300,1.735,1301,1.232,1302,1.735,1303,3.178,1304,1.347,1305,1.735,1306,1.735,1307,1.735,1308,1.735,1309,1.735]],["title/license.html",[688,2.249,689,2.569,858,3.384]],["body/license.html",[18,1.432,38,0.012,114,0.01,115,0.012,116,0.01,218,4.261,358,1.587,390,2.393,763,2.831,845,5.354,973,4.261,974,4.261,1054,3.496,1058,3.823,1123,3.823,1152,3.017,1269,4.261,1272,2.668,1310,6.769,1311,4.926,1312,4.926,1313,6.19,1314,4.926,1315,4.926,1316,4.926,1317,4.926,1318,4.926,1319,6.19,1320,7.732,1321,4.926,1322,4.926,1323,4.926,1324,4.445,1325,4.926,1326,4.261,1327,4.926,1328,4.926,1329,4.926,1330,4.926,1331,4.926,1332,4.926,1333,4.926,1334,6.19,1335,4.926,1336,4.926,1337,4.926,1338,4.926,1339,4.926,1340,6.19,1341,6.19,1342,4.926,1343,4.926,1344,4.926,1345,4.926,1346,4.926,1347,4.926,1348,4.926,1349,4.926,1350,4.926,1351,4.926,1352,4.926,1353,4.261,1354,4.926,1355,4.926,1356,4.926,1357,4.926,1358,4.926,1359,4.926,1360,4.926,1361,4.926,1362,4.261,1363,4.926,1364,4.926,1365,4.926,1366,4.926,1367,4.926]],["title/modules.html",[570,4.531]],["body/modules.html",[38,0.014,114,0.012,115,0.014,116,0.012,569,4.067,570,4.807,1301,4.395,1368,6.193,1369,6.193]],["title/overview.html",[1370,5.05]],["body/overview.html",[2,1.858,38,0.014,114,0.012,115,0.014,116,0.012,132,3.949,568,4.667,631,3.683,650,4.268,986,5.419,1152,3.683,1304,4.667,1370,5.202,1371,6.983,1372,6.013,1373,6.983]],["title/miscellaneous/typealiases.html",[1024,2.396,1374,5.323]],["body/miscellaneous/typealiases.html",[21,1.141,38,0.016,40,1.003,114,0.011,115,0.013,116,0.011,258,3.08,522,3.52,525,4.282,528,3.283,529,3.52,530,3.283,531,3.52,532,3.52,533,3.283,534,3.52,535,3.52,536,3.52,537,3.52,538,3.52,539,3.52,540,3.283,541,3.283,542,3.52,543,3.52,544,3.52,545,3.283,546,3.283,547,3.52,548,2.475,549,3.52,550,3.52,551,3.52,1024,3.283,1375,5.36,1376,5.36]],["title/miscellaneous/variables.html",[1024,2.396,1377,4.605]],["body/miscellaneous/variables.html",[6,3.18,8,3.284,21,1.053,35,3.295,36,1.098,38,0.015,68,1.017,78,3.016,109,1.194,114,0.01,115,0.012,116,0.012,133,3.25,144,3.513,146,4.077,272,3.803,273,4.282,274,3.016,279,1.595,280,3.842,281,1.664,283,2.597,284,1.636,285,1.705,294,4.406,295,2.845,296,2.176,297,4.282,298,3.513,299,2.681,300,3.842,301,2.681,302,3.513,303,3.513,304,1.982,305,1.56,306,3.842,307,4.818,308,3.842,309,3.25,310,2.405,311,1.895,312,3.513,313,1.595,314,3.513,315,4.282,316,3.25,317,0.849,318,3.513,319,3.842,320,3.842,321,3.842,365,3.132,1024,3.032,1031,4.282,1377,4.282,1378,6.208,1379,4.95,1380,4.95,1381,4.95,1382,4.95]],["title/additional-documentation/getting-started.html",[317,0.594,326,0.517,688,1.99,689,2.274]],["body/additional-documentation/getting-started.html",[38,0.014,114,0.012,115,0.014,116,0.012,295,2.567,688,4.054,689,4.632,1227,4.019,1272,3.315,1383,4.75,1384,6.12]],["title/additional-documentation/preserving-state-(like-the-requested-url).html",[242,0.708,317,0.483,326,0.421,379,1.181,1385,2.436,1386,1.85]],["body/additional-documentation/preserving-state-(like-the-requested-url).html",[3,1.047,38,0.016,41,1.142,114,0.012,115,0.014,116,0.012,242,1.726,296,2.57,335,2.57,345,2.57,379,3.058,739,2.34,1252,4.147,1288,4.535,1385,5.055,1386,4.509,1387,5.844,1388,5.844,1389,4.147,1390,5.844,1391,5.844]],["title/additional-documentation/refreshing-a-token.html",[254,0.945,317,0.594,326,0.517,1142,2.121]],["body/additional-documentation/refreshing-a-token.html",[15,2.041,17,2.448,35,2.321,36,1.481,38,0.012,114,0.01,115,0.012,116,0.01,119,3.615,163,2.927,202,1.606,223,4.133,231,2.588,254,1.978,279,1.54,295,2.546,304,2.432,305,1.822,310,2.321,313,2.15,358,1.54,364,2.15,365,2.206,380,2.101,381,2.101,382,2.004,393,1.83,464,2.101,465,1.54,473,1.54,650,3.391,730,3.836,763,3.836,867,3.709,875,3.709,876,3.138,1130,3.391,1141,3.391,1142,3.719,1144,4.712,1146,4.133,1183,3.138,1185,4.133,1201,4.133,1209,2.588,1213,3.391,1296,4.309,1326,4.133,1392,3.391,1393,3.709,1394,4.779,1395,4.779,1396,4.133,1397,6.072,1398,3.709,1399,4.779,1400,4.133,1401,4.779,1402,4.779,1403,4.779,1404,3.709,1405,4.133,1406,5.252,1407,4.133,1408,4.133,1409,5.252,1410,5.252,1411,4.133,1412,4.133,1413,4.133,1414,3.709,1415,4.133,1416,4.133,1417,3.391,1418,4.133,1419,4.133,1420,4.133,1421,4.133]],["title/additional-documentation/silent-refresh.html",[317,0.594,326,0.517,343,1.326,364,1.116]],["body/additional-documentation/silent-refresh.html",[3,0.491,5,0.812,11,1.445,15,1.385,17,1.402,18,1.146,28,1.124,30,0.491,33,1.738,35,2.407,36,1.43,38,0.016,46,0.882,51,0.882,62,1.385,68,0.449,72,0.318,83,1.905,92,1.079,103,0.583,109,0.994,114,0.008,115,0.008,116,0.006,119,2.684,147,1.264,154,1.483,159,2.125,163,1.677,202,1.665,210,2.125,225,2.368,228,1.1,229,1.738,242,1.385,254,1.81,279,0.882,283,1.578,284,0.66,285,1.036,295,2.078,299,1.483,301,1.483,304,2.488,305,1.765,309,2.706,310,1.33,313,2.137,339,1.903,343,2.598,347,1.728,349,1.204,351,1.568,358,1.776,360,1.815,361,1.812,364,2.228,365,2.288,366,1.812,370,1.204,389,1.776,391,2.407,393,2.264,408,1.812,416,1.048,419,1.003,420,1.812,430,1.33,431,1.096,433,0.92,449,1.273,455,1.903,464,1.204,465,1.328,466,1.776,471,0.846,475,1.003,578,1.573,580,2.407,613,1.798,650,1.943,688,1.573,730,2.368,739,1.984,750,1.573,762,1.943,763,3.168,779,1.943,859,2.125,860,1.943,866,1.483,875,2.125,876,1.798,877,2.368,881,1.33,886,2.524,889,1.943,942,1.812,946,3.254,1035,2.368,1083,1.943,1088,1.402,1094,1.677,1130,1.943,1141,2.924,1142,3.035,1144,3.198,1167,2.986,1187,1.148,1188,1.943,1189,3.035,1192,2.684,1193,1.573,1194,1.573,1195,1.943,1196,1.677,1202,2.125,1208,1.573,1209,1.483,1210,1.677,1214,1.677,1215,1.798,1216,1.677,1217,1.402,1218,1.402,1248,1.943,1254,3.564,1258,1.573,1261,2.125,1270,1.798,1272,1.483,1296,2.924,1303,2.368,1304,2.125,1324,1.798,1398,2.125,1404,2.125,1405,2.368,1406,3.564,1407,2.368,1408,2.368,1409,3.564,1410,3.564,1411,2.368,1412,2.368,1413,2.368,1414,2.125,1415,2.368,1416,2.368,1417,1.943,1418,2.368,1419,2.368,1420,2.368,1421,2.368,1422,2.738,1423,4.121,1424,2.125,1425,3.198,1426,2.738,1427,2.738,1428,2.738,1429,2.738,1430,2.738,1431,2.738,1432,4.121,1433,5.513,1434,1.943,1435,2.368,1436,2.738,1437,2.738,1438,2.738,1439,2.738,1440,2.738,1441,3.564,1442,2.368,1443,1.573,1444,1.798,1445,2.738,1446,1.943,1447,1.943,1448,1.573,1449,2.738,1450,2.738,1451,2.738,1452,2.368,1453,4.286,1454,3.198,1455,2.368,1456,2.738,1457,2.738,1458,2.738,1459,2.738,1460,3.845,1461,2.125,1462,2.738,1463,2.738,1464,2.738,1465,2.368,1466,2.738,1467,2.738,1468,2.738,1469,2.738,1470,2.738,1471,2.738,1472,2.738,1473,2.738,1474,4.121,1475,2.738,1476,4.121,1477,2.368,1478,2.125,1479,3.564,1480,2.738,1481,2.738,1482,2.738,1483,2.738,1484,2.738,1485,2.738,1486,2.738,1487,2.738,1488,2.738,1489,2.738,1490,2.368,1491,2.738,1492,2.738,1493,2.125,1494,4.121,1495,2.738,1496,2.738,1497,2.738,1498,2.738,1499,2.738,1500,2.738,1501,2.125,1502,2.738,1503,2.738,1504,2.738,1505,2.738,1506,2.738,1507,2.738,1508,2.738]],["title/additional-documentation/working-with-httpinterceptors.html",[317,0.594,326,0.517,962,2.996,1509,3.463]],["body/additional-documentation/working-with-httpinterceptors.html",[0,0.239,10,0.911,14,1.697,18,1.168,28,0.989,38,0.016,41,0.987,55,3.316,62,1.218,63,1.85,68,1.151,72,0.587,84,1.963,92,1.323,103,1.495,114,0.007,115,0.01,116,0.007,126,1.56,127,1.168,195,2.572,196,5.028,200,1.761,202,1.697,203,3.135,204,4.049,205,3.135,206,3.093,208,3.135,209,4.368,210,2.813,211,4.368,213,3.135,214,3.817,215,3.135,216,5.028,217,1.963,227,4.511,228,1.29,229,2.319,230,3.093,231,1.963,232,2.813,233,3.316,234,2.764,235,3.135,236,1.452,239,3.135,242,0.911,243,3.135,244,3.135,245,3.135,246,3.135,247,5.438,248,4.128,249,3.135,252,3.135,254,1.586,267,3.135,268,4.368,270,3.135,281,1.218,283,1.388,284,0.874,285,0.911,311,1.388,338,1.697,351,1.436,358,1.168,365,2.332,382,1.52,416,1.388,419,1.328,421,1.674,439,2.328,588,2.38,605,2.572,608,3.584,614,3.584,615,2.572,619,2.813,620,3.919,773,3.135,901,3.135,1079,3.135,1080,1.761,1088,1.857,1122,3.135,1123,2.813,1177,2.813,1202,2.813,1206,2.572,1248,2.572,1256,4.368,1257,3.135,1258,2.083,1259,2.813,1398,2.813,1452,3.135,1461,2.813,1510,3.624,1511,3.624,1512,3.624,1513,3.135,1514,3.135,1515,3.624,1516,3.624,1517,3.624,1518,3.624,1519,3.624,1520,3.624,1521,3.624,1522,3.624,1523,3.624,1524,4.368,1525,2.38,1526,3.624,1527,3.624,1528,3.624,1529,3.624,1530,3.624,1531,3.624,1532,3.624,1533,3.624,1534,3.135,1535,3.624,1536,2.813,1537,3.624,1538,3.624,1539,3.624,1540,3.624,1541,3.624,1542,3.919,1543,3.624,1544,3.624,1545,3.624,1546,3.624,1547,3.624,1548,3.624]],["title/additional-documentation/callback-after-login.html",[317,0.594,326,0.517,739,1.387,1549,2.688]],["body/additional-documentation/callback-after-login.html",[38,0.016,51,2.162,62,1.889,63,2.059,114,0.011,115,0.013,116,0.011,335,2.951,387,2.472,397,2.731,402,2.256,420,2.472,739,2.688,859,4.363,1106,3.692,1242,3.99,1258,3.231,1353,4.863,1386,3.692,1389,3.99,1549,5.209,1550,5.622,1551,5.622,1552,5.622,1553,5.622,1554,5.622,1555,5.622]],["title/additional-documentation/popup-based-login.html",[317,0.533,326,0.464,347,1.303,739,1.244,913,2.205]],["body/additional-documentation/popup-based-login.html",[17,2.76,18,1.513,38,0.015,114,0.011,115,0.013,116,0.011,281,1.811,293,1.811,295,2.743,301,2.918,310,3.178,341,1.89,343,2.697,347,2.743,364,1.736,382,2.259,415,2.743,437,2.617,466,1.736,772,4.66,854,4.181,887,3.096,910,4.181,946,3.538,965,3.824,1057,4.66,1070,3.538,1080,2.617,1130,3.824,1181,4.181,1187,2.259,1216,3.3,1424,4.181,1455,4.66,1477,4.66,1501,4.181,1556,4.66,1557,5.388,1558,4.66,1559,5.388,1560,5.388,1561,5.388,1562,5.388,1563,5.388,1564,4.181,1565,5.388,1566,5.388,1567,5.388,1568,4.181,1569,5.388]],["title/additional-documentation/custom-query-parameters.html",[37,0.814,317,0.533,326,0.464,338,1.044,408,1.366]],["body/additional-documentation/custom-query-parameters.html",[33,2.073,37,1.548,38,0.015,114,0.012,115,0.014,116,0.012,304,2.367,305,1.485,338,2.324,351,1.681,393,2.263,408,2.599,950,4.195,1570,5.113,1571,5.911,1572,5.911,1573,5.911,1574,5.911,1575,5.911,1576,5.911,1577,5.911]],["title/additional-documentation/events.html",[317,0.671,326,0.584,394,1.72]],["body/additional-documentation/events.html",[5,0.72,18,1.016,28,1.199,36,0.975,38,0.016,62,1.477,68,0.72,78,2.134,83,1.415,114,0.009,115,0.012,116,0.009,214,2.885,229,1.541,233,3.777,254,1.199,258,2.525,281,1.933,283,1.682,284,1.387,285,1.104,299,2.38,304,1.759,305,1.104,327,2.029,328,2.029,343,2.202,364,2.066,369,2.656,370,1.932,379,2.412,394,3.185,396,3.26,403,1.932,418,2.029,471,1.357,521,3.523,528,2.691,530,2.691,533,2.691,540,2.691,541,2.691,545,2.691,560,3.8,730,2.525,763,2.525,765,3.118,866,3.115,886,2.691,890,3.41,902,2.885,913,3.118,1070,2.885,1094,3.523,1095,3.523,1147,2.691,1258,2.525,1301,3.118,1386,3.777,1396,4.975,1454,3.41,1461,3.41,1478,3.41,1578,4.393,1579,4.393,1580,4.393,1581,3.8,1582,4.393,1583,4.393,1584,3.8,1585,3.8,1586,4.393,1587,4.393,1588,4.393,1589,4.393,1590,4.393,1591,3.8,1592,4.393,1593,4.393,1594,4.393,1595,4.393,1596,4.393,1597,4.393,1598,5.752,1599,7.381,1600,5.752,1601,4.393,1602,4.393,1603,4.393,1604,4.393,1605,3.8,1606,4.393,1607,4.393,1608,3.8,1609,5.752,1610,5.752,1611,4.393,1612,4.393,1613,4.393,1614,4.393,1615,4.393,1616,4.393]],["title/additional-documentation/routing-with-the-hashstrategy.html",[317,0.594,326,0.517,914,2.121,1271,2.688]],["body/additional-documentation/routing-with-the-hashstrategy.html",[13,3.184,18,1.203,19,4.542,33,1.824,36,1.42,38,0.015,62,1.747,72,0.605,83,1.675,92,1.361,114,0.01,115,0.013,116,0.01,281,1.747,328,2.4,339,2.4,360,2.345,361,2.814,365,2.4,366,2.286,368,2.4,371,2.525,515,4.034,568,4.034,876,3.414,914,3.92,982,4.497,1065,5.999,1088,2.663,1188,3.689,1206,3.689,1237,3.184,1247,3.414,1258,2.987,1266,4.497,1270,3.414,1271,4.967,1434,3.689,1479,6.26,1493,4.034,1501,4.034,1617,4.034,1618,5.198,1619,4.497,1620,6.935,1621,5.198,1622,5.198,1623,5.198,1624,5.198,1625,5.198,1626,5.198,1627,5.198,1628,5.198,1629,5.198,1630,4.034,1631,5.198]],["title/additional-documentation/adapt-id_token-validation.html",[51,1.001,274,1.509,317,0.533,326,0.464,1632,2.687]],["body/additional-documentation/adapt-id_token-validation.html",[11,1.779,12,2.512,30,0.909,38,0.016,51,2.031,59,3.599,60,3.599,61,3.599,62,2.118,67,4.139,68,0.831,73,1.704,78,2.463,82,2.127,84,2.747,109,1.223,114,0.01,115,0.013,116,0.01,272,4.201,274,3.062,279,2.031,281,1.704,283,1.942,284,1.223,285,1.274,287,3.33,311,2.413,393,2.413,411,2.23,418,2.342,419,1.858,422,3.062,433,1.704,434,2.127,438,2.463,472,1.779,473,1.634,598,3.599,600,4.387,760,3.936,1070,3.33,1187,2.127,1261,3.936,1417,3.599,1460,3.936,1536,3.936,1558,4.387,1617,3.936,1632,4.387,1633,5.071,1634,5.071,1635,5.071,1636,5.071,1637,4.387,1638,5.071,1639,4.387,1640,5.071,1641,5.071,1642,4.387,1643,5.071]],["title/additional-documentation/session-checks.html",[317,0.594,326,0.517,765,2.458,886,2.121]],["body/additional-documentation/session-checks.html",[30,0.746,36,1.386,38,0.016,68,0.682,72,0.484,83,1.789,92,1.09,114,0.008,115,0.011,116,0.008,147,1.923,228,1.232,254,1.515,257,3.231,281,1.866,283,1.594,284,1.004,285,1.046,295,2.328,298,2.955,299,3.007,301,2.255,304,1.667,305,1.395,310,2.697,313,1.342,318,2.955,338,1.399,340,1.947,343,2.391,351,1.184,355,2.023,364,2.299,389,1.342,393,1.594,394,1.831,402,1.399,411,1.831,458,1.746,465,1.342,466,1.342,471,1.715,475,1.525,546,3.4,548,1.923,580,2.697,750,2.393,752,2.955,760,3.231,763,3.19,765,5.252,771,4.802,863,3.602,880,3.602,881,2.023,886,3.825,889,2.955,942,2.929,946,2.734,1042,2.955,1088,2.133,1095,2.55,1141,2.955,1147,3.4,1152,2.55,1167,2.255,1181,3.231,1183,4.101,1187,1.746,1189,3.825,1192,3.007,1193,2.393,1196,2.55,1217,2.133,1218,2.133,1226,2.734,1247,2.734,1252,2.955,1362,3.602,1393,3.231,1417,3.94,1441,3.602,1443,2.393,1444,2.734,1448,2.393,1493,3.231,1534,3.602,1605,3.602,1619,3.602,1644,4.164,1645,4.164,1646,4.164,1647,4.164,1648,4.164,1649,4.164,1650,4.164,1651,4.164,1652,4.164,1653,4.164,1654,4.164,1655,3.231,1656,5.551,1657,4.164,1658,5.551,1659,4.164,1660,4.164,1661,4.164,1662,4.164,1663,4.164,1664,4.164,1665,4.164,1666,4.164,1667,4.164,1668,4.164,1669,4.164,1670,4.164]],["title/additional-documentation/server-side-rendering.html",[228,0.689,317,0.533,326,0.464,434,1.303,1671,2.687]],["body/additional-documentation/server-side-rendering.html",[38,0.014,114,0.012,115,0.014,116,0.012,228,1.616,277,5.041,281,1.959,340,2.044,434,3.055,851,5.041,879,3.569,1080,2.831,1086,4.523,1087,4.523,1525,3.827,1542,4.523,1556,5.041,1671,6.301,1672,5.827,1673,5.827,1674,5.041,1675,5.827,1676,5.827,1677,5.827]],["title/additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html",[281,0.74,304,0.881,305,0.553,317,0.377,326,0.329,472,0.772,473,0.709,1187,0.923,1324,1.445]],["body/additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html",[0,0.181,11,1.544,15,1.48,18,1.332,38,0.016,40,0.824,72,0.512,109,1.062,114,0.009,115,0.012,116,0.009,202,1.936,228,1.278,242,1.711,281,1.48,295,1.846,304,1.763,305,1.106,310,2.139,316,2.891,317,0.755,329,1.936,341,1.544,351,1.638,358,1.419,360,1.613,389,2.068,403,1.936,416,1.686,431,1.763,433,1.48,435,1.936,436,1.846,449,1.983,456,1.763,465,1.419,466,2.068,471,1.36,472,2.02,473,1.856,548,2.033,578,3.31,580,2.139,613,2.891,728,3.124,739,2.571,879,2.697,881,2.139,942,2.532,945,2.53,1078,3.124,1080,2.139,1094,2.697,1095,2.697,1152,2.697,1154,3.808,1159,3.417,1167,3.477,1178,2.697,1187,2.415,1192,2.385,1193,2.53,1194,2.53,1208,2.53,1209,2.385,1214,3.528,1217,2.255,1218,2.255,1227,2.891,1237,2.697,1242,3.124,1249,3.417,1272,2.385,1324,2.891,1389,3.124,1392,3.124,1425,3.417,1434,3.124,1443,3.31,1448,2.53,1564,3.417,1655,3.417,1678,3.808,1679,3.124,1680,3.124,1681,4.403,1682,4.403,1683,3.417,1684,3.124,1685,3.417,1686,3.808,1687,3.808,1688,3.808,1689,4.403,1690,4.403,1691,4.403,1692,3.808,1693,3.808,1694,4.403]],["title/additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html",[36,0.488,274,1.069,317,0.377,326,0.329,449,0.68,472,0.772,473,0.709,580,1.069,1695,2.2]],["body/additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html",[18,1.008,30,1.025,38,0.016,64,1.596,68,0.714,72,0.507,92,1.141,114,0.009,115,0.011,116,0.009,147,2.011,228,0.967,242,1.77,274,3.102,279,1.404,281,1.464,283,1.668,284,1.05,285,1.437,345,1.916,349,1.916,351,1.816,360,1.596,365,2.011,366,2.515,389,1.404,419,1.596,433,1.464,449,2.176,458,1.827,465,1.843,466,1.404,471,1.973,472,2.535,473,2.329,475,2.339,580,3.294,598,4.059,739,1.745,750,2.504,881,2.116,942,2.515,950,4.532,1058,3.381,1070,2.861,1147,3.911,1167,3.459,1189,3.911,1192,2.359,1193,2.504,1194,2.504,1195,3.092,1196,2.668,1208,2.504,1209,2.359,1210,2.668,1215,2.861,1216,2.668,1217,2.231,1218,2.231,1267,3.768,1272,2.359,1435,3.768,1443,2.504,1444,2.861,1446,3.092,1447,3.092,1448,2.504,1591,3.768,1696,6.386,1697,4.356,1698,5.865,1699,4.356,1700,4.948,1701,4.356,1702,4.356,1703,4.356,1704,4.356,1705,4.356,1706,4.356,1707,4.356,1708,4.356,1709,4.356,1710,4.356,1711,4.356,1712,4.356,1713,3.768,1714,3.768,1715,4.356]],["title/additional-documentation/using-systemjs.html",[36,0.769,317,0.594,326,0.517,1716,2.996]],["body/additional-documentation/using-systemjs.html",[36,1.196,38,0.016,114,0.011,115,0.013,116,0.011,145,3.538,222,2.488,283,2.805,284,1.767,285,1.77,578,3.096,721,4.643,965,4.643,1095,3.3,1148,4.66,1454,4.181,1716,6.094,1717,5.388,1718,5.388,1719,5.388,1720,5.388,1721,6.542,1722,6.542,1723,5.388,1724,5.388,1725,5.388,1726,5.388,1727,5.388,1728,5.388,1729,5.388,1730,5.388]],["title/additional-documentation/using-implicit-flow.html",[36,0.689,304,1.244,305,0.781,317,0.533,326,0.464]],["body/additional-documentation/using-implicit-flow.html",[0,0.212,30,0.672,36,1.147,38,0.016,39,1.299,46,1.208,68,1.162,72,0.688,84,3.205,103,1.1,109,0.904,114,0.008,115,0.01,116,0.008,127,1.666,147,1.731,202,2.383,228,0.832,231,2.031,234,1.648,242,1.299,272,3.167,279,1.208,281,1.26,283,2.442,284,1.614,285,1.738,293,1.26,302,2.661,303,2.661,304,2.37,305,1.682,309,3.395,313,1.208,316,2.462,317,0.886,341,1.315,351,1.066,358,1.208,360,1.373,380,1.648,381,1.648,389,1.208,392,1.731,433,1.26,448,2.273,449,1.597,465,1.666,466,1.208,471,1.158,475,1.373,548,1.731,578,2.155,580,1.821,612,2.91,739,2.839,750,2.155,779,2.661,881,1.821,942,2.273,945,2.155,1042,2.661,1163,3.243,1167,3.205,1178,2.296,1179,2.91,1187,2.168,1189,3.907,1192,2.031,1193,2.155,1194,2.155,1196,2.296,1208,2.155,1209,2.031,1210,2.296,1215,2.462,1216,2.296,1217,1.92,1218,1.92,1241,2.462,1246,3.243,1247,2.462,1270,2.462,1288,2.91,1296,2.661,1404,2.91,1443,2.155,1444,2.462,1446,2.661,1447,2.661,1448,2.155,1524,3.243,1525,2.462,1585,3.243,1617,2.91,1630,2.91,1639,3.243,1679,4.527,1680,3.669,1731,3.749,1732,3.749,1733,3.749,1734,3.749,1735,3.749,1736,3.749,1737,3.749,1738,5.17,1739,3.749,1740,3.749,1741,3.749,1742,3.749,1743,3.749,1744,3.243,1745,3.749,1746,3.749,1747,3.243,1748,3.243,1749,3.749,1750,5.17,1751,3.749,1752,3.749,1753,3.749]],["title/additional-documentation/using-password-flow.html",[36,0.689,305,0.781,317,0.533,326,0.464,1139,2.411]],["body/additional-documentation/using-password-flow.html",[0,0.168,3,0.485,11,0.949,17,2.092,18,1.361,36,1.53,38,0.016,39,0.68,40,0.507,43,0.872,51,0.872,72,0.475,103,0.576,109,0.652,114,0.005,115,0.008,116,0.005,161,2.1,168,2.298,182,2.898,200,1.314,202,1.842,227,3.17,228,1.372,231,1.465,242,1.236,254,1.752,275,4.74,279,0.872,281,1.653,285,1.026,295,2.467,303,1.92,304,1.084,305,1.804,310,2.662,313,0.872,329,1.796,340,2.169,341,0.949,348,1.249,351,1.673,358,0.872,364,1.316,387,2.163,389,1.993,392,1.249,393,1.564,400,1.713,402,0.909,415,1.135,416,1.564,431,1.084,433,2.317,435,1.19,436,1.135,448,2.41,449,1.817,456,1.084,465,1.585,466,2.129,471,1.262,472,1.922,473,1.766,512,2.34,515,2.1,730,1.555,739,1.636,866,1.465,867,3.17,879,2.502,881,1.984,902,3.23,904,3.533,913,1.92,914,1.657,919,2.898,942,2.163,993,3.533,1042,1.92,1080,2.857,1094,1.657,1106,1.777,1120,3.533,1137,3.17,1139,5.35,1142,1.657,1147,2.502,1160,3.533,1167,3.186,1178,3.013,1183,2.682,1187,2.298,1194,2.347,1198,2.34,1199,5.963,1206,2.898,1207,3.533,1208,2.347,1209,2.212,1213,3.491,1217,2.52,1218,2.52,1230,2.34,1237,1.657,1241,1.777,1242,3.491,1248,1.92,1258,1.555,1270,1.777,1324,3.23,1386,1.777,1414,2.1,1424,3.17,1434,1.92,1443,2.827,1448,2.347,1453,2.34,1460,2.1,1490,2.34,1525,1.777,1536,2.1,1584,2.34,1637,2.34,1642,3.533,1655,3.17,1679,2.898,1680,2.898,1684,2.898,1685,3.17,1686,2.34,1687,2.34,1688,2.34,1747,3.533,1748,3.533,1754,2.706,1755,2.706,1756,2.706,1757,2.706,1758,2.706,1759,2.706,1760,2.706,1761,2.706,1762,2.706,1763,2.34,1764,2.34,1765,2.706,1766,2.706,1767,2.706,1768,4.084,1769,2.706,1770,4.084,1771,4.084,1772,4.084,1773,4.084,1774,4.084,1775,4.084,1776,2.34,1777,2.706,1778,2.706,1779,2.706,1780,2.706,1781,2.706,1782,2.706,1783,2.706,1784,2.706,1785,2.706,1786,4.084,1787,2.706,1788,2.706,1789,2.706,1790,2.706,1791,2.706,1792,4.084,1793,2.706,1794,4.084,1795,2.706,1796,2.706,1797,2.706,1798,2.706,1799,2.706,1800,2.706]],["title/additional-documentation/configure-custom-oauthstorage.html",[317,0.533,326,0.464,338,1.044,439,1.244,1187,1.303]],["body/additional-documentation/configure-custom-oauthstorage.html",[0,0.247,18,1.392,36,1.336,38,0.016,68,0.986,72,0.7,103,1.003,114,0.009,115,0.012,116,0.009,119,2.553,144,3.345,154,2.553,217,2.553,281,1.584,283,1.805,284,1.137,285,1.184,301,2.553,338,2.229,341,1.653,365,2.176,400,2.524,416,1.805,419,1.727,431,2.798,435,3.246,436,2.524,439,2.798,569,3.095,580,3.221,582,3.658,595,3.658,596,3.658,598,3.345,599,4.077,762,4.272,860,3.345,1004,3.658,1054,3.345,1080,2.29,1088,2.414,1175,5.206,1176,5.736,1177,3.658,1178,3.687,1179,3.658,1180,5.206,1187,1.977,1188,4.706,1272,2.553,1301,3.345,1478,3.658,1542,3.658,1801,4.713,1802,4.713,1803,4.077,1804,4.713,1805,6.019,1806,4.713]],["title/additional-documentation/manually-skipping-login-form.html",[317,0.483,326,0.421,739,1.128,1237,1.725,1241,1.85,1807,2.436]],["body/additional-documentation/manually-skipping-login-form.html",[15,1.559,18,1.378,36,1.03,38,0.016,44,1.627,83,1.92,103,1.401,109,1.119,114,0.009,115,0.012,116,0.009,228,1.03,242,1.166,254,1.626,257,3.601,301,2.513,305,1.166,312,3.292,317,0.795,324,2.751,335,2.04,341,1.627,358,1.495,370,2.04,400,1.946,421,2.142,449,1.433,466,1.495,728,3.292,739,1.858,763,2.666,853,4.013,866,2.513,886,2.842,900,4.013,902,3.046,905,4.013,942,2.04,945,2.666,1088,2.376,1094,2.842,1106,3.046,1137,3.601,1183,3.046,1210,2.842,1237,2.842,1241,3.046,1247,3.046,1252,3.292,1549,3.601,1581,4.013,1608,4.013,1630,3.601,1674,4.013,1744,4.013,1807,4.013,1808,5.958,1809,4.639,1810,4.639,1811,4.639,1812,5.958,1813,4.639,1814,5.958,1815,4.639,1816,4.639,1817,4.639,1818,4.639,1819,4.639,1820,4.639,1821,4.639,1822,4.639,1823,4.639,1824,4.639,1825,4.639,1826,4.639,1827,4.639,1828,4.639]],["title/additional-documentation/original-config-api.html",[317,0.533,326,0.464,578,1.785,1214,1.903,1392,2.205]],["body/additional-documentation/original-config-api.html",[0,0.169,15,1.386,18,0.954,30,0.739,35,2.002,38,0.016,39,1.036,72,0.479,109,0.994,111,2.707,114,0.008,115,0.011,116,0.008,200,2.002,202,1.853,228,1.379,242,1.561,254,1.125,274,3.018,279,1.328,281,1.386,284,0.994,285,1.036,295,1.729,310,2.002,314,2.925,317,0.707,329,1.813,351,1.568,358,1.777,360,1.51,387,1.813,389,2.002,403,1.813,416,2.111,433,1.386,449,1.92,465,1.328,466,2.137,471,1.274,472,2.327,473,2.137,475,1.51,578,3.813,580,2.002,613,2.707,730,2.369,739,2.488,866,2.233,879,3.377,881,2.002,890,3.199,914,2.525,942,1.813,945,2.369,1078,2.925,1095,2.525,1098,3.566,1106,2.707,1159,3.199,1167,3.365,1178,3.377,1187,1.729,1192,2.233,1193,2.369,1194,2.369,1195,2.925,1208,2.369,1209,2.233,1210,2.525,1214,4.063,1215,2.707,1216,2.525,1217,2.112,1218,2.112,1227,2.707,1249,3.199,1272,2.233,1383,3.199,1389,2.925,1392,3.913,1393,3.199,1425,4.279,1443,2.369,1444,2.707,1446,2.925,1447,2.925,1448,2.369,1513,3.566,1514,3.566,1564,3.199,1678,3.566,1679,2.925,1680,2.925,1683,3.199,1684,2.925,1685,3.199,1692,3.566,1693,3.566,1698,4.77,1700,3.566,1713,3.566,1714,3.566,1763,3.566,1764,3.566,1776,3.566,1829,4.122,1830,4.122,1831,4.122,1832,4.122,1833,4.122,1834,4.122,1835,4.122,1836,4.122,1837,4.122,1838,4.122,1839,4.122]],["title/additional-documentation/authorization-servers.html",[317,0.594,326,0.517,1236,2.688,1840,2.996]],["body/additional-documentation/authorization-servers.html",[36,1.297,38,0.014,114,0.012,115,0.014,116,0.012,284,1.409,389,1.883,402,2.308,458,2.451,471,1.806,752,4.147,887,3.358,1136,5.055,1149,5.055,1236,5.66,1400,5.055,1442,5.055,1525,3.837,1568,4.535,1803,5.055,1841,5.844,1842,6.867,1843,5.844,1844,5.844,1845,5.844]],["title/additional-documentation/authorization-servers/using-identity-server.html",[36,0.689,228,0.689,317,0.533,326,0.464,942,1.366]],["body/additional-documentation/authorization-servers/using-identity-server.html",[36,1.354,38,0.014,114,0.012,115,0.014,116,0.012,228,1.563,402,2.051,887,3.507,942,3.097,1080,2.964,1157,4.331,1226,4.007]],["title/additional-documentation/authorization-servers/using-keycloak.html",[36,0.769,317,0.594,326,0.517,1048,2.688]],["body/additional-documentation/authorization-servers/using-keycloak.html",[36,1.362,38,0.014,114,0.012,115,0.014,116,0.012,402,2.063,887,3.528,1048,5.484,1080,2.982,1157,4.356,1226,4.031]],["title/additional-documentation/authorization-servers/auth0.html",[317,0.671,326,0.584,1051,3.037]],["body/additional-documentation/authorization-servers/auth0.html",[5,0.749,18,1.365,36,1.45,37,1.196,38,0.016,39,1.148,41,0.893,68,0.749,72,0.531,92,1.196,114,0.009,115,0.012,116,0.009,147,2.109,254,1.783,283,2.258,284,1.422,285,1.482,295,1.916,313,1.901,317,0.783,351,1.299,364,1.901,402,1.535,415,1.916,419,1.673,433,1.535,449,1.411,456,2.362,465,1.472,471,1.411,475,1.673,548,2.724,581,5.103,688,2.625,750,2.625,755,5.103,826,3.545,866,2.474,881,2.219,882,3.545,887,2.625,919,4.186,945,3.39,950,3.242,1051,5.359,1054,3.242,1080,2.219,1088,2.34,1090,3.545,1142,2.798,1147,3.613,1152,2.798,1157,3.242,1187,2.474,1189,4.002,1192,2.474,1196,2.798,1213,3.242,1214,2.798,1217,2.34,1218,2.34,1226,2.999,1227,2.999,1259,3.545,1383,3.545,1465,3.951,1568,4.578,1570,3.951,1683,3.545,1684,3.242,1840,3.951,1846,4.568,1847,4.568,1848,4.568,1849,5.899,1850,4.568,1851,4.568,1852,4.568,1853,4.568,1854,4.568,1855,4.568,1856,4.568,1857,4.568,1858,4.568,1859,5.899,1860,5.899,1861,4.568,1862,4.568,1863,4.568,1864,4.568,1865,4.568]],["title/additional-documentation/authorization-servers/azure-ad-(active-directory).html",[317,0.483,326,0.421,1081,2.186,1082,2.186,1083,1.999,1084,2.186]],["body/additional-documentation/authorization-servers/azure-ad-(active-directory).html",[36,1.537,38,0.014,114,0.012,115,0.014,116,0.012,281,1.992,326,0.885,1078,4.207,1081,5.693,1082,4.6,1083,4.207,1084,5.374,1085,5.127,1086,5.374,1087,5.374,1088,3.036,1089,5.127,1090,4.6]]],"invertedIndex":[["",{"_index":38,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/DateTimeProvider.html":{},"injectables/DefaultHashHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/HashHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthModuleConfig.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerConfig.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/OAuthStorage.html":{},"classes/OAuthSuccessEvent.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"injectables/SystemDateTimeProvider.html":{},"interfaces/TokenResponse.html":{},"injectables/UrlHelperService.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"changelog.html":{},"dependencies.html":{},"miscellaneous/functions.html":{},"index.html":{},"license.html":{},"modules.html":{},"overview.html":{},"miscellaneous/typealiases.html":{},"miscellaneous/variables.html":{},"additional-documentation/getting-started.html":{},"additional-documentation/preserving-state-(like-the-requested-url).html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/callback-after-login.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/custom-query-parameters.html":{},"additional-documentation/events.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/server-side-rendering.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-systemjs.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/manually-skipping-login-form.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers.html":{},"additional-documentation/authorization-servers/using-identity-server.html":{},"additional-documentation/authorization-servers/using-keycloak.html":{},"additional-documentation/authorization-servers/auth0.html":{},"additional-documentation/authorization-servers/azure-ad-(active-directory).html":{}}}],["0",{"_index":163,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/HashHandler.html":{},"injectables/UrlHelperService.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{}}}],["0.1.3",{"_index":800,"title":{},"body":{"changelog.html":{}}}],["0.1.4",{"_index":801,"title":{},"body":{"changelog.html":{}}}],["0.11.4",{"_index":1023,"title":{},"body":{"dependencies.html":{}}}],["0.33",{"_index":1419,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{}}}],["0.43.0",{"_index":1018,"title":{},"body":{"dependencies.html":{}}}],["0.5",{"_index":1416,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{}}}],["026dcb3",{"_index":824,"title":{},"body":{"changelog.html":{}}}],["03",{"_index":936,"title":{},"body":{"changelog.html":{}}}],["04",{"_index":933,"title":{},"body":{"changelog.html":{}}}],["05",{"_index":931,"title":{},"body":{"changelog.html":{}}}],["06",{"_index":784,"title":{},"body":{"changelog.html":{}}}],["07",{"_index":693,"title":{},"body":{"changelog.html":{}}}],["07bb62d",{"_index":929,"title":{},"body":{"changelog.html":{}}}],["09",{"_index":932,"title":{},"body":{"changelog.html":{}}}],["0c0a4a7",{"_index":748,"title":{},"body":{"changelog.html":{}}}],["0f03d39",{"_index":912,"title":{},"body":{"changelog.html":{}}}],["1",{"_index":650,"title":{},"body":{"injectables/UrlHelperService.html":{},"overview.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{}}}],["1.0",{"_index":1648,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["1.3.0",{"_index":1006,"title":{},"body":{"dependencies.html":{}}}],["1.4.3",{"_index":1000,"title":{},"body":{"dependencies.html":{}}}],["1.5.1",{"_index":1003,"title":{},"body":{"dependencies.html":{}}}],["10",{"_index":1077,"title":{},"body":{"index.html":{}}}],["10.0.0",{"_index":782,"title":{},"body":{"changelog.html":{}}}],["10.0.3",{"_index":1001,"title":{},"body":{"dependencies.html":{}}}],["10.2.0",{"_index":722,"title":{},"body":{"changelog.html":{}}}],["10.3.0",{"_index":1007,"title":{},"body":{"dependencies.html":{}}}],["10.x",{"_index":1099,"title":{},"body":{"index.html":{}}}],["1061",{"_index":724,"title":{},"body":{"changelog.html":{}}}],["11",{"_index":911,"title":{},"body":{"changelog.html":{},"index.html":{}}}],["12",{"_index":1064,"title":{},"body":{"index.html":{}}}],["12.0.0",{"_index":691,"title":{},"body":{"changelog.html":{}}}],["12.1.2",{"_index":988,"title":{},"body":{"dependencies.html":{}}}],["12.x",{"_index":1096,"title":{},"body":{"index.html":{}}}],["132c624",{"_index":855,"title":{},"body":{"changelog.html":{}}}],["16",{"_index":694,"title":{},"body":{"changelog.html":{}}}],["169d749",{"_index":827,"title":{},"body":{"changelog.html":{}}}],["1816e7b",{"_index":839,"title":{},"body":{"changelog.html":{}}}],["1_0.html#tokenendpoint",{"_index":460,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["1_0.html#userinfo",{"_index":467,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["1cae011",{"_index":906,"title":{},"body":{"changelog.html":{}}}],["2",{"_index":96,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"index.html":{}}}],["2.0",{"_index":1185,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{}}}],["2.0.0",{"_index":1016,"title":{},"body":{"dependencies.html":{}}}],["2.1",{"_index":1042,"title":{},"body":{"index.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{}}}],["2.3.0",{"_index":1010,"title":{},"body":{"dependencies.html":{}}}],["2.9.2",{"_index":997,"title":{},"body":{"dependencies.html":{}}}],["2/oidc",{"_index":1274,"title":{},"body":{"index.html":{}}}],["20",{"_index":1304,"title":{},"body":{"index.html":{},"overview.html":{},"additional-documentation/silent-refresh.html":{}}}],["20.000",{"_index":1507,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["2017",{"_index":1312,"title":{},"body":{"license.html":{}}}],["2020",{"_index":783,"title":{},"body":{"changelog.html":{}}}],["2021",{"_index":692,"title":{},"body":{"changelog.html":{}}}],["2204c5a",{"_index":732,"title":{},"body":{"changelog.html":{}}}],["23",{"_index":934,"title":{},"body":{"changelog.html":{}}}],["256",{"_index":819,"title":{},"body":{"changelog.html":{}}}],["28",{"_index":937,"title":{},"body":{"changelog.html":{}}}],["2nd",{"_index":1863,"title":{},"body":{"additional-documentation/authorization-servers/auth0.html":{}}}],["3.1",{"_index":1510,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["3.4.1",{"_index":1005,"title":{},"body":{"dependencies.html":{}}}],["30",{"_index":785,"title":{},"body":{"changelog.html":{}}}],["31c6273",{"_index":899,"title":{},"body":{"changelog.html":{}}}],["38c7c3f",{"_index":829,"title":{},"body":{"changelog.html":{}}}],["3d331f2",{"_index":930,"title":{},"body":{"changelog.html":{}}}],["3f44eca",{"_index":915,"title":{},"body":{"changelog.html":{}}}],["4",{"_index":880,"title":{},"body":{"changelog.html":{},"additional-documentation/session-checks.html":{}}}],["4.3",{"_index":1063,"title":{},"body":{"index.html":{}}}],["4.x",{"_index":1105,"title":{},"body":{"index.html":{}}}],["401",{"_index":1518,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["403",{"_index":1519,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["40f5ae5",{"_index":807,"title":{},"body":{"changelog.html":{}}}],["415e053",{"_index":792,"title":{},"body":{"changelog.html":{}}}],["4202",{"_index":1170,"title":{},"body":{"index.html":{}}}],["4202]/index.html",{"_index":1171,"title":{},"body":{"index.html":{}}}],["4202]/silent",{"_index":1172,"title":{},"body":{"index.html":{}}}],["429ed2c",{"_index":894,"title":{},"body":{"changelog.html":{}}}],["4607d55",{"_index":822,"title":{},"body":{"changelog.html":{}}}],["4711",{"_index":1575,"title":{},"body":{"additional-documentation/custom-query-parameters.html":{}}}],["4bf8901",{"_index":891,"title":{},"body":{"changelog.html":{}}}],["4def1c1",{"_index":797,"title":{},"body":{"changelog.html":{}}}],["4th",{"_index":1447,"title":{},"body":{"additional-documentation/silent-refresh.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["5",{"_index":1373,"title":{},"body":{"overview.html":{}}}],["5.x",{"_index":1108,"title":{},"body":{"index.html":{}}}],["51e438a",{"_index":698,"title":{},"body":{"changelog.html":{}}}],["58a8132",{"_index":848,"title":{},"body":{"changelog.html":{}}}],["58c6354",{"_index":885,"title":{},"body":{"changelog.html":{}}}],["59f65d2",{"_index":726,"title":{},"body":{"changelog.html":{}}}],["5c5288c",{"_index":849,"title":{},"body":{"changelog.html":{}}}],["6",{"_index":1104,"title":{},"body":{"index.html":{}}}],["6.5.3",{"_index":1011,"title":{},"body":{"dependencies.html":{}}}],["6.6.7",{"_index":1013,"title":{},"body":{"dependencies.html":{}}}],["61sdfs.eu.auth0.com",{"_index":1850,"title":{},"body":{"additional-documentation/authorization-servers/auth0.html":{}}}],["61sdfs.eu.auth0.com/v2/logout",{"_index":1854,"title":{},"body":{"additional-documentation/authorization-servers/auth0.html":{}}}],["65c2b95",{"_index":852,"title":{},"body":{"changelog.html":{}}}],["678ff95",{"_index":843,"title":{},"body":{"changelog.html":{}}}],["687",{"_index":907,"title":{},"body":{"changelog.html":{}}}],["7",{"_index":1102,"title":{},"body":{"index.html":{}}}],["7.0.40",{"_index":1021,"title":{},"body":{"dependencies.html":{}}}],["7.x",{"_index":1103,"title":{},"body":{"index.html":{}}}],["7009",{"_index":940,"title":{},"body":{"changelog.html":{},"index.html":{}}}],["70fd826",{"_index":710,"title":{},"body":{"changelog.html":{}}}],["71b705c",{"_index":921,"title":{},"body":{"changelog.html":{}}}],["728",{"_index":697,"title":{},"body":{"changelog.html":{}}}],["735",{"_index":963,"title":{},"body":{"changelog.html":{}}}],["741",{"_index":957,"title":{},"body":{"changelog.html":{}}}],["75",{"_index":1407,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{}}}],["755",{"_index":948,"title":{},"body":{"changelog.html":{}}}],["773",{"_index":842,"title":{},"body":{"changelog.html":{}}}],["77cb37a",{"_index":896,"title":{},"body":{"changelog.html":{}}}],["7a15194",{"_index":805,"title":{},"body":{"changelog.html":{}}}],["7eac8ae",{"_index":924,"title":{},"body":{"changelog.html":{}}}],["8",{"_index":898,"title":{},"body":{"changelog.html":{},"index.html":{}}}],["8.0.12",{"_index":795,"title":{},"body":{"changelog.html":{}}}],["8.0.19",{"_index":796,"title":{},"body":{"changelog.html":{}}}],["8.x",{"_index":1101,"title":{},"body":{"index.html":{}}}],["808969225",{"_index":702,"title":{},"body":{"changelog.html":{}}}],["825",{"_index":828,"title":{},"body":{"changelog.html":{}}}],["84d95a7",{"_index":789,"title":{},"body":{"changelog.html":{}}}],["8ab853b",{"_index":874,"title":{},"body":{"changelog.html":{}}}],["8fa99ff",{"_index":917,"title":{},"body":{"changelog.html":{}}}],["9",{"_index":300,"title":{},"body":{"classes/JwksValidationHandler.html":{},"index.html":{},"miscellaneous/variables.html":{}}}],["9.0.0",{"_index":1002,"title":{},"body":{"dependencies.html":{},"index.html":{}}}],["9.1.0",{"_index":941,"title":{},"body":{"changelog.html":{},"index.html":{}}}],["9.2",{"_index":790,"title":{},"body":{"changelog.html":{}}}],["9.2.0",{"_index":935,"title":{},"body":{"changelog.html":{}}}],["9.2.1",{"_index":804,"title":{},"body":{"changelog.html":{}}}],["9.2.2",{"_index":806,"title":{},"body":{"changelog.html":{}}}],["9.3.0",{"_index":808,"title":{},"body":{"changelog.html":{}}}],["9.x",{"_index":1100,"title":{},"body":{"index.html":{}}}],["92ee76d",{"_index":820,"title":{},"body":{"changelog.html":{}}}],["93902a5",{"_index":878,"title":{},"body":{"changelog.html":{}}}],["970",{"_index":705,"title":{},"body":{"changelog.html":{}}}],["972",{"_index":719,"title":{},"body":{"changelog.html":{}}}],["9761bad",{"_index":736,"title":{},"body":{"changelog.html":{}}}],["9]{3",{"_index":107,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["9e257d0",{"_index":717,"title":{},"body":{"changelog.html":{}}}],["9e95c73",{"_index":836,"title":{},"body":{"changelog.html":{}}}],["_throw(err",{"_index":1529,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["a021627fd9d3the",{"_index":1675,"title":{},"body":{"additional-documentation/server-side-rendering.html":{}}}],["a05bd8a",{"_index":723,"title":{},"body":{"changelog.html":{}}}],["above",{"_index":1272,"title":{},"body":{"index.html":{},"license.html":{},"additional-documentation/getting-started.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/original-config-api.html":{}}}],["abstract",{"_index":10,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/DateTimeProvider.html":{},"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthLogger.html":{},"classes/OAuthModuleConfig.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerConfig.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/OAuthStorage.html":{},"classes/OAuthSuccessEvent.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"injectables/SystemDateTimeProvider.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["abstraction",{"_index":150,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["abstractvalidationhandler",{"_index":1,"title":{"classes/AbstractValidationHandler.html":{}},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["accept",{"_index":735,"title":{},"body":{"changelog.html":{}}}],["access",{"_index":902,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/events.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["access_token",{"_index":63,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/callback-after-login.html":{}}}],["accesstoken",{"_index":75,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["according",{"_index":938,"title":{},"body":{"changelog.html":{},"index.html":{}}}],["account",{"_index":1847,"title":{},"body":{"additional-documentation/authorization-servers/auth0.html":{}}}],["acr_values_supported",{"_index":487,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["action",{"_index":1362,"title":{},"body":{"license.html":{},"additional-documentation/session-checks.html":{}}}],["activate",{"_index":1656,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["activated",{"_index":1649,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["active",{"_index":1082,"title":{"additional-documentation/authorization-servers/azure-ad-(active-directory).html":{}},"body":{"index.html":{},"additional-documentation/authorization-servers/azure-ad-(active-directory).html":{}}}],["actual",{"_index":342,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["ad",{"_index":1084,"title":{"additional-documentation/authorization-servers/azure-ad-(active-directory).html":{}},"body":{"index.html":{},"additional-documentation/authorization-servers/azure-ad-(active-directory).html":{}}}],["adapt",{"_index":1632,"title":{"additional-documentation/adapt-id_token-validation.html":{}},"body":{"additional-documentation/adapt-id_token-validation.html":{}}}],["add",{"_index":762,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["added",{"_index":756,"title":{},"body":{"changelog.html":{}}}],["adding",{"_index":1719,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["addition",{"_index":1653,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["additional",{"_index":326,"title":{"additional-documentation/getting-started.html":{},"additional-documentation/preserving-state-(like-the-requested-url).html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/callback-after-login.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/custom-query-parameters.html":{},"additional-documentation/events.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/server-side-rendering.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-systemjs.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/manually-skipping-login-form.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers.html":{},"additional-documentation/authorization-servers/using-identity-server.html":{},"additional-documentation/authorization-servers/using-keycloak.html":{},"additional-documentation/authorization-servers/auth0.html":{},"additional-documentation/authorization-servers/azure-ad-(active-directory).html":{}},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"index.html":{},"additional-documentation/authorization-servers/azure-ad-(active-directory).html":{}}}],["adhere",{"_index":1708,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["adjust",{"_index":1411,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{}}}],["advanced",{"_index":1465,"title":{},"body":{"additional-documentation/silent-refresh.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["against",{"_index":61,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["alert(1",{"_index":181,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["alg",{"_index":49,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["alg.match(/^.s[0",{"_index":106,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["alg.substr(2",{"_index":113,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["algorithm",{"_index":29,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["algorithms",{"_index":152,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["aliases",{"_index":1375,"title":{},"body":{"miscellaneous/typealiases.html":{}}}],["alice/alice",{"_index":1165,"title":{},"body":{"index.html":{}}}],["align",{"_index":1182,"title":{},"body":{"index.html":{}}}],["allow",{"_index":875,"title":{},"body":{"changelog.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{}}}],["allowedurls",{"_index":614,"title":{},"body":{"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{},"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["allows",{"_index":666,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["already",{"_index":13,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"changelog.html":{},"index.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["alternative",{"_index":1449,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["although",{"_index":1771,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["ambient",{"_index":832,"title":{},"body":{"changelog.html":{}}}],["analyzing",{"_index":984,"title":{},"body":{"changelog.html":{}}}],["and/or",{"_index":1332,"title":{},"body":{"license.html":{}}}],["angular",{"_index":283,"title":{},"body":{"classes/JwksValidationHandler.html":{},"changelog.html":{},"dependencies.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/events.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-systemjs.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["angular/animations",{"_index":987,"title":{},"body":{"dependencies.html":{}}}],["angular/common",{"_index":584,"title":{},"body":{"modules/OAuthModule.html":{},"dependencies.html":{}}}],["angular/common/http",{"_index":217,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"modules/OAuthModule.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["angular/compiler",{"_index":989,"title":{},"body":{"dependencies.html":{}}}],["angular/core",{"_index":127,"title":{},"body":{"classes/DateTimeProvider.html":{},"injectables/DefaultHashHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/HashHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"injectables/SystemDateTimeProvider.html":{},"interfaces/TokenResponse.html":{},"injectables/UrlHelperService.html":{},"interfaces/UserInfo.html":{},"dependencies.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/using-implicit-flow.html":{}}}],["angular/elements",{"_index":990,"title":{},"body":{"dependencies.html":{}}}],["angular/forms",{"_index":991,"title":{},"body":{"dependencies.html":{}}}],["angular/platform",{"_index":992,"title":{},"body":{"dependencies.html":{}}}],["angular/router",{"_index":995,"title":{},"body":{"dependencies.html":{}}}],["another",{"_index":1434,"title":{},"body":{"additional-documentation/silent-refresh.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{}}}],["any).array(valuetohash",{"_index":174,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["anymore",{"_index":405,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["aot",{"_index":1804,"title":{},"body":{"additional-documentation/configure-custom-oauthstorage.html":{}}}],["api",{"_index":1214,"title":{"additional-documentation/original-config-api.html":{}},"body":{"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["api's",{"_index":1855,"title":{},"body":{"additional-documentation/authorization-servers/auth0.html":{}}}],["app",{"_index":945,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/manually-skipping-login-form.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["app's",{"_index":1851,"title":{},"body":{"additional-documentation/authorization-servers/auth0.html":{}}}],["app.component.html",{"_index":1739,"title":{},"body":{"additional-documentation/using-implicit-flow.html":{}}}],["app/home.html",{"_index":1743,"title":{},"body":{"additional-documentation/using-implicit-flow.html":{}}}],["appcomponent",{"_index":1178,"title":{},"body":{"index.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/original-config-api.html":{}}}],["applicable",{"_index":1612,"title":{},"body":{"additional-documentation/events.html":{}}}],["application",{"_index":309,"title":{},"body":{"classes/JwksValidationHandler.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/using-implicit-flow.html":{}}}],["applications",{"_index":318,"title":{},"body":{"classes/JwksValidationHandler.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/session-checks.html":{}}}],["appmodule",{"_index":1180,"title":{},"body":{"index.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["approach",{"_index":1440,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["approutermodule",{"_index":1624,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["arbitrary",{"_index":1471,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["argument",{"_index":1287,"title":{},"body":{"index.html":{}}}],["arising",{"_index":1365,"title":{},"body":{"license.html":{}}}],["arr",{"_index":1039,"title":{},"body":{"miscellaneous/functions.html":{}}}],["array",{"_index":615,"title":{},"body":{"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{},"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["arraybuffer",{"_index":138,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["aspnetcore",{"_index":1677,"title":{},"body":{"additional-documentation/server-side-rendering.html":{}}}],["asset",{"_index":1489,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["assets",{"_index":1492,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["associated",{"_index":1321,"title":{},"body":{"license.html":{}}}],["asstring",{"_index":91,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["assumes",{"_index":1158,"title":{},"body":{"index.html":{}}}],["async",{"_index":25,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"injectables/DefaultHashHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["at_hash",{"_index":60,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["athash",{"_index":97,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["attacks",{"_index":373,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["attempts",{"_index":1472,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["audience",{"_index":1856,"title":{},"body":{"additional-documentation/authorization-servers/auth0.html":{}}}],["auth",{"_index":389,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers.html":{}}}],["auth.config",{"_index":1735,"title":{},"body":{"additional-documentation/using-implicit-flow.html":{}}}],["auth0",{"_index":1051,"title":{"additional-documentation/authorization-servers/auth0.html":{}},"body":{"index.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["auth0's",{"_index":1857,"title":{},"body":{"additional-documentation/authorization-servers/auth0.html":{}}}],["auth_config",{"_index":1378,"title":{},"body":{"miscellaneous/variables.html":{}}}],["authcodeflowconfig",{"_index":1190,"title":{},"body":{"index.html":{}}}],["authconfig",{"_index":1189,"title":{},"body":{"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["authenticated",{"_index":1674,"title":{},"body":{"additional-documentation/server-side-rendering.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["authentication",{"_index":1303,"title":{},"body":{"index.html":{},"additional-documentation/silent-refresh.html":{}}}],["authorization",{"_index":1840,"title":{"additional-documentation/authorization-servers.html":{}},"body":{"additional-documentation/authorization-servers/auth0.html":{}}}],["authorization_endpoint",{"_index":476,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["authorizations",{"_index":1842,"title":{},"body":{"additional-documentation/authorization-servers.html":{}}}],["authors",{"_index":1355,"title":{},"body":{"license.html":{}}}],["authstorage",{"_index":1541,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["automate",{"_index":1253,"title":{},"body":{"index.html":{}}}],["automatic",{"_index":870,"title":{},"body":{"changelog.html":{}}}],["automatically",{"_index":1141,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/session-checks.html":{}}}],["available",{"_index":1301,"title":{},"body":{"index.html":{},"modules.html":{},"additional-documentation/events.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["avoid",{"_index":371,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["await",{"_index":88,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["awesome",{"_index":981,"title":{},"body":{"changelog.html":{}}}],["azure",{"_index":1081,"title":{"additional-documentation/authorization-servers/azure-ad-(active-directory).html":{}},"body":{"index.html":{},"additional-documentation/authorization-servers/azure-ad-(active-directory).html":{}}}],["b",{"_index":161,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{},"additional-documentation/using-password-flow.html":{}}}],["b486546",{"_index":817,"title":{},"body":{"changelog.html":{}}}],["b64decodeunicode",{"_index":1026,"title":{},"body":{"miscellaneous/functions.html":{}}}],["b64decodeunicode(str",{"_index":1034,"title":{},"body":{"miscellaneous/functions.html":{}}}],["back",{"_index":1564,"title":{},"body":{"additional-documentation/popup-based-login.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{}}}],["backend",{"_index":1047,"title":{},"body":{"index.html":{}}}],["backwards",{"_index":1831,"title":{},"body":{"additional-documentation/original-config-api.html":{}}}],["base",{"_index":1700,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/original-config-api.html":{}}}],["base64",{"_index":70,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"dependencies.html":{}}}],["base64urlencode",{"_index":69,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"miscellaneous/functions.html":{}}}],["base64urlencode(leftmosthalf",{"_index":98,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["base64urlencode(str",{"_index":1036,"title":{},"body":{"miscellaneous/functions.html":{}}}],["based",{"_index":913,"title":{"additional-documentation/popup-based-login.html":{}},"body":{"changelog.html":{},"additional-documentation/events.html":{},"additional-documentation/using-password-flow.html":{}}}],["bbff95b",{"_index":745,"title":{},"body":{"changelog.html":{}}}],["bearer",{"_index":267,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["beaugrand",{"_index":1718,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["beeing",{"_index":775,"title":{},"body":{"changelog.html":{}}}],["before",{"_index":730,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/events.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["beginning",{"_index":298,"title":{},"body":{"classes/JwksValidationHandler.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/session-checks.html":{}}}],["behavior",{"_index":1845,"title":{},"body":{"additional-documentation/authorization-servers.html":{}}}],["below",{"_index":1769,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["best",{"_index":380,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/using-implicit-flow.html":{}}}],["better",{"_index":1756,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["between",{"_index":1414,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/using-password-flow.html":{}}}],["big",{"_index":966,"title":{},"body":{"changelog.html":{}}}],["bind",{"_index":1661,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["blocked",{"_index":776,"title":{},"body":{"changelog.html":{}}}],["blockers",{"_index":777,"title":{},"body":{"changelog.html":{}}}],["blog",{"_index":1086,"title":{},"body":{"index.html":{},"additional-documentation/server-side-rendering.html":{},"additional-documentation/authorization-servers/azure-ad-(active-directory).html":{}}}],["bob/bob",{"_index":1164,"title":{},"body":{"index.html":{}}}],["boolean",{"_index":236,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["bootstrap",{"_index":1004,"title":{},"body":{"dependencies.html":{},"index.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["bootstrapping",{"_index":1229,"title":{},"body":{"index.html":{}}}],["breaking",{"_index":1278,"title":{},"body":{"index.html":{}}}],["brecht",{"_index":968,"title":{},"body":{"changelog.html":{}}}],["browse",{"_index":1369,"title":{},"body":{"modules.html":{}}}],["browser",{"_index":993,"title":{},"body":{"dependencies.html":{},"additional-documentation/using-password-flow.html":{}}}],["browsers",{"_index":1156,"title":{},"body":{"index.html":{}}}],["buffer",{"_index":140,"title":{},"body":{"injectables/DefaultHashHandler.html":{}}}],["bug",{"_index":695,"title":{},"body":{"changelog.html":{},"index.html":{}}}],["bugfixes",{"_index":1119,"title":{},"body":{"index.html":{}}}],["build",{"_index":860,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["bump",{"_index":794,"title":{},"body":{"changelog.html":{}}}],["bundle",{"_index":320,"title":{},"body":{"classes/JwksValidationHandler.html":{},"index.html":{},"miscellaneous/variables.html":{}}}],["bundling",{"_index":1069,"title":{},"body":{"index.html":{}}}],["button",{"_index":740,"title":{},"body":{"changelog.html":{}}}],["bytearray",{"_index":143,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["bytearray].map(value",{"_index":187,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["c",{"_index":1311,"title":{},"body":{"license.html":{}}}],["c2b2753",{"_index":704,"title":{},"body":{"changelog.html":{}}}],["c799ead",{"_index":903,"title":{},"body":{"changelog.html":{}}}],["c9a2c55",{"_index":718,"title":{},"body":{"changelog.html":{}}}],["ca435c0",{"_index":812,"title":{},"body":{"changelog.html":{}}}],["cae715e",{"_index":802,"title":{},"body":{"changelog.html":{}}}],["calchash",{"_index":20,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["calchash(valuetohash",{"_index":27,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["calculates",{"_index":32,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["call",{"_index":1296,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/using-implicit-flow.html":{}}}],["callback",{"_index":1549,"title":{"additional-documentation/callback-after-login.html":{}},"body":{"additional-documentation/callback-after-login.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["called",{"_index":387,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/callback-after-login.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["calling",{"_index":1252,"title":{},"body":{"index.html":{},"additional-documentation/preserving-state-(like-the-requested-url).html":{},"additional-documentation/session-checks.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["calls",{"_index":609,"title":{},"body":{"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{},"changelog.html":{}}}],["cand",{"_index":180,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["candhash",{"_index":172,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["care",{"_index":1398,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["carefully",{"_index":297,"title":{},"body":{"classes/JwksValidationHandler.html":{},"miscellaneous/variables.html":{}}}],["carlier",{"_index":969,"title":{},"body":{"changelog.html":{}}}],["carry",{"_index":1813,"title":{},"body":{"additional-documentation/manually-skipping-login-form.html":{}}}],["case",{"_index":1258,"title":{},"body":{"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/callback-after-login.html":{},"additional-documentation/events.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/using-password-flow.html":{}}}],["cases",{"_index":1460,"title":{},"body":{"additional-documentation/silent-refresh.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/using-password-flow.html":{}}}],["catch",{"_index":1265,"title":{},"body":{"index.html":{}}}],["catch(err",{"_index":1498,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["catcherror",{"_index":220,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["catcherror((_",{"_index":260,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["change",{"_index":1279,"title":{},"body":{"index.html":{}}}],["changelog",{"_index":690,"title":{"changelog.html":{}},"body":{"changelog.html":{}}}],["changes",{"_index":863,"title":{},"body":{"changelog.html":{},"additional-documentation/session-checks.html":{}}}],["charactes",{"_index":667,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["charge",{"_index":1316,"title":{},"body":{"license.html":{}}}],["check",{"_index":370,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/events.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["check_session_iframe",{"_index":481,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["checks",{"_index":886,"title":{"additional-documentation/session-checks.html":{}},"body":{"changelog.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/events.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["checkurl(url",{"_index":235,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["chore",{"_index":786,"title":{},"body":{"changelog.html":{}}}],["chore(deps",{"_index":793,"title":{},"body":{"changelog.html":{}}}],["chore(release",{"_index":803,"title":{},"body":{"changelog.html":{}}}],["circular",{"_index":1533,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["cites",{"_index":1772,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["cjs",{"_index":1727,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["claim",{"_index":1358,"title":{},"body":{"license.html":{}}}],["claim_types_supported",{"_index":499,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["claims",{"_index":448,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"index.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{}}}],["claims.given_name",{"_index":1748,"title":{},"body":{"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{}}}],["claims_parameter_supported",{"_index":501,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["claims_supported",{"_index":500,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["claimsathash",{"_index":99,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["class",{"_index":0,"title":{"classes/AbstractValidationHandler.html":{},"classes/DateTimeProvider.html":{},"classes/HashHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthLogger.html":{},"classes/OAuthModuleConfig.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerConfig.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/OAuthStorage.html":{},"classes/OAuthSuccessEvent.html":{},"classes/ReceivedTokens.html":{},"classes/ValidationHandler.html":{},"classes/WebHttpUrlEncodingCodec.html":{}},"body":{"classes/AbstractValidationHandler.html":{},"classes/DateTimeProvider.html":{},"injectables/DefaultHashHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/HashHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthModuleConfig.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerConfig.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/OAuthStorage.html":{},"classes/OAuthSuccessEvent.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"injectables/SystemDateTimeProvider.html":{},"interfaces/TokenResponse.html":{},"injectables/UrlHelperService.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/original-config-api.html":{}}}],["classes",{"_index":2,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/DateTimeProvider.html":{},"classes/HashHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthLogger.html":{},"classes/OAuthModuleConfig.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerConfig.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/OAuthStorage.html":{},"classes/OAuthSuccessEvent.html":{},"classes/ReceivedTokens.html":{},"classes/ValidationHandler.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"overview.html":{}}}],["clear",{"_index":401,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{}}}],["clears",{"_index":1233,"title":{},"body":{"index.html":{}}}],["cli",{"_index":1487,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["cli.json",{"_index":1491,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["click",{"_index":738,"title":{},"body":{"changelog.html":{}}}],["client",{"_index":433,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["client_id",{"_index":1859,"title":{},"body":{"additional-documentation/authorization-servers/auth0.html":{}}}],["clientid",{"_index":1196,"title":{},"body":{"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["clientids",{"_index":1166,"title":{},"body":{"index.html":{}}}],["closes",{"_index":699,"title":{},"body":{"changelog.html":{}}}],["code",{"_index":313,"title":{},"body":{"classes/JwksValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["code_challenge",{"_index":847,"title":{},"body":{"changelog.html":{}}}],["code_error",{"_index":536,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["codeflow",{"_index":768,"title":{},"body":{"changelog.html":{}}}],["codes",{"_index":1517,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["come",{"_index":1442,"title":{},"body":{"additional-documentation/silent-refresh.html":{},"additional-documentation/authorization-servers.html":{}}}],["commands",{"_index":1133,"title":{},"body":{"index.html":{}}}],["commit",{"_index":868,"title":{},"body":{"changelog.html":{}}}],["commonjs",{"_index":1068,"title":{},"body":{"index.html":{}}}],["commonmodule",{"_index":583,"title":{},"body":{"modules/OAuthModule.html":{}}}],["communication",{"_index":1502,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["community",{"_index":1057,"title":{},"body":{"index.html":{},"additional-documentation/popup-based-login.html":{}}}],["compat",{"_index":1012,"title":{},"body":{"dependencies.html":{}}}],["compatibility",{"_index":1832,"title":{},"body":{"additional-documentation/original-config-api.html":{}}}],["compatible",{"_index":417,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["compensates",{"_index":1429,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["complex",{"_index":1482,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["compliant",{"_index":1841,"title":{},"body":{"additional-documentation/authorization-servers.html":{}}}],["compodoc/compodoc",{"_index":1134,"title":{},"body":{"index.html":{}}}],["component",{"_index":1679,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["components",{"_index":1298,"title":{},"body":{"index.html":{}}}],["conditions",{"_index":1339,"title":{},"body":{"license.html":{}}}],["config",{"_index":578,"title":{"additional-documentation/original-config-api.html":{}},"body":{"modules/OAuthModule.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-systemjs.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["configuration",{"_index":1147,"title":{},"body":{"index.html":{},"additional-documentation/events.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["configure",{"_index":1187,"title":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}},"body":{"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["configured",{"_index":779,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/using-implicit-flow.html":{}}}],["configuring",{"_index":1404,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/using-implicit-flow.html":{}}}],["connect",{"_index":458,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"index.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/authorization-servers.html":{}}}],["connection",{"_index":1366,"title":{},"body":{"license.html":{}}}],["considered",{"_index":1291,"title":{},"body":{"index.html":{}}}],["consistent",{"_index":1713,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/original-config-api.html":{}}}],["console",{"_index":418,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/events.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["console.debug(\"logged",{"_index":1554,"title":{},"body":{"additional-documentation/callback-after-login.html":{}}}],["console.debug('given_name",{"_index":1794,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["console.debug('hash",{"_index":178,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["console.debug('ok",{"_index":1800,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["console.debug('refresh",{"_index":1496,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["console.debug('state",{"_index":1390,"title":{},"body":{"additional-documentation/preserving-state-(like-the-requested-url).html":{}}}],["console.debug('your",{"_index":1669,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["console.debug(context",{"_index":1555,"title":{},"body":{"additional-documentation/callback-after-login.html":{}}}],["console.error('actual",{"_index":102,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["console.error('exptected",{"_index":101,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["console.error('refresh",{"_index":1499,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["console.error(err",{"_index":323,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["console.error(event",{"_index":1595,"title":{},"body":{"additional-documentation/events.html":{}}}],["console.log(e));or",{"_index":1587,"title":{},"body":{"additional-documentation/events.html":{}}}],["console.warn(event",{"_index":1596,"title":{},"body":{"additional-documentation/events.html":{}}}],["const",{"_index":147,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/HashHandler.html":{},"classes/JwksValidationHandler.html":{},"injectables/UrlHelperService.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["constructor",{"_index":200,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"classes/JwksValidationHandler.html":{},"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"changelog.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["constructor(oauthservice",{"_index":201,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["constructor(private",{"_index":1680,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["constructor(readonly",{"_index":552,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{}}}],["constructor(type",{"_index":524,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{}}}],["contain",{"_index":1116,"title":{},"body":{"index.html":{}}}],["contains",{"_index":1630,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["context",{"_index":1551,"title":{},"body":{"additional-documentation/callback-after-login.html":{}}}],["contract",{"_index":1363,"title":{},"body":{"license.html":{}}}],["contribute",{"_index":1127,"title":{},"body":{"index.html":{}}}],["contributer",{"_index":815,"title":{},"body":{"changelog.html":{}}}],["contributers",{"_index":967,"title":{},"body":{"changelog.html":{}}}],["contribution",{"_index":1557,"title":{},"body":{"additional-documentation/popup-based-login.html":{}}}],["contributions",{"_index":1121,"title":{},"body":{"index.html":{}}}],["contributors",{"_index":1309,"title":{},"body":{"index.html":{}}}],["control",{"_index":1809,"title":{},"body":{"additional-documentation/manually-skipping-login-form.html":{}}}],["controls",{"_index":406,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["convenience",{"_index":1222,"title":{},"body":{"index.html":{}}}],["cookie",{"_index":1437,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["cookies",{"_index":884,"title":{},"body":{"changelog.html":{}}}],["copied",{"_index":1486,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["copies",{"_index":1334,"title":{},"body":{"license.html":{}}}],["copy",{"_index":1319,"title":{},"body":{"license.html":{}}}],["copying",{"_index":857,"title":{},"body":{"changelog.html":{}}}],["copyright",{"_index":1310,"title":{},"body":{"license.html":{}}}],["core",{"_index":459,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"index.html":{}}}],["correctly",{"_index":706,"title":{},"body":{"changelog.html":{}}}],["corrupted",{"_index":729,"title":{},"body":{"changelog.html":{}}}],["cors",{"_index":1865,"title":{},"body":{"additional-documentation/authorization-servers/auth0.html":{}}}],["cought",{"_index":1528,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["counterparts",{"_index":1289,"title":{},"body":{"index.html":{}}}],["create",{"_index":437,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/popup-based-login.html":{}}}],["created",{"_index":1092,"title":{},"body":{"index.html":{}}}],["createdefaultlogger",{"_index":592,"title":{},"body":{"modules/OAuthModule.html":{},"miscellaneous/functions.html":{}}}],["createdefaultstorage",{"_index":593,"title":{},"body":{"modules/OAuthModule.html":{},"miscellaneous/functions.html":{}}}],["creates",{"_index":1532,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["credentials",{"_index":1789,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["credits",{"_index":1043,"title":{},"body":{"index.html":{}}}],["critical",{"_index":1118,"title":{},"body":{"index.html":{}}}],["cross",{"_index":1484,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["crypto",{"_index":151,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["current",{"_index":1183,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["cust",{"_index":823,"title":{},"body":{"changelog.html":{}}}],["custom",{"_index":338,"title":{"additional-documentation/custom-query-parameters.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"changelog.html":{},"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/custom-query-parameters.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["customhashfragment",{"_index":330,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"injectables/UrlHelperService.html":{},"interfaces/UserInfo.html":{},"changelog.html":{}}}],["customize",{"_index":1801,"title":{},"body":{"additional-documentation/configure-custom-oauthstorage.html":{}}}],["customparameters",{"_index":734,"title":{},"body":{"changelog.html":{}}}],["customqueryparams",{"_index":1570,"title":{},"body":{"additional-documentation/custom-query-parameters.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["customredirecturi",{"_index":331,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["customurlvalidation",{"_index":616,"title":{},"body":{"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{}}}],["cycle",{"_index":1112,"title":{},"body":{"index.html":{}}}],["d",{"_index":160,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{},"changelog.html":{}}}],["da16494",{"_index":754,"title":{},"body":{"changelog.html":{}}}],["damages",{"_index":1359,"title":{},"body":{"license.html":{}}}],["daniel",{"_index":970,"title":{},"body":{"changelog.html":{}}}],["data",{"_index":168,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"injectables/UrlHelperService.html":{},"interfaces/UserInfo.html":{},"additional-documentation/using-password-flow.html":{}}}],["date",{"_index":123,"title":{},"body":{"classes/DateTimeProvider.html":{},"modules/OAuthModule.html":{},"injectables/SystemDateTimeProvider.html":{}}}],["date.now",{"_index":130,"title":{},"body":{"classes/DateTimeProvider.html":{},"injectables/SystemDateTimeProvider.html":{}}}],["datetimeprovider",{"_index":117,"title":{"classes/DateTimeProvider.html":{}},"body":{"classes/DateTimeProvider.html":{},"modules/OAuthModule.html":{},"injectables/SystemDateTimeProvider.html":{},"changelog.html":{}}}],["datetimeprovider:10",{"_index":637,"title":{},"body":{"injectables/SystemDateTimeProvider.html":{}}}],["datetimeprovider:14",{"_index":636,"title":{},"body":{"injectables/SystemDateTimeProvider.html":{}}}],["deal",{"_index":1323,"title":{},"body":{"license.html":{}}}],["dealings",{"_index":1367,"title":{},"body":{"license.html":{}}}],["debug",{"_index":559,"title":{},"body":{"classes/OAuthLogger.html":{}}}],["debug(message",{"_index":424,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["debugging",{"_index":1583,"title":{},"body":{"additional-documentation/events.html":{}}}],["decide",{"_index":1643,"title":{},"body":{"additional-documentation/adapt-id_token-validation.html":{}}}],["declarations",{"_index":596,"title":{},"body":{"modules/OAuthModule.html":{},"index.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["decodekey",{"_index":670,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["decodekey(k",{"_index":674,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["decodeuricomponent(hash",{"_index":647,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["decodeuricomponent(k",{"_index":686,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["decodeuricomponent(v",{"_index":687,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["decodeutf8",{"_index":1030,"title":{},"body":{"miscellaneous/functions.html":{}}}],["decodeutf8(s",{"_index":155,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{},"miscellaneous/functions.html":{}}}],["decodevalue",{"_index":671,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["decodevalue(v",{"_index":677,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["default",{"_index":365,"title":{},"body":{"classes/LoginOptions.html":{},"modules/OAuthModule.html":{},"changelog.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["defaultextension",{"_index":1728,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["defaulthashhandler",{"_index":131,"title":{"injectables/DefaultHashHandler.html":{}},"body":{"injectables/DefaultHashHandler.html":{},"modules/OAuthModule.html":{}}}],["defaultoauthinterceptor",{"_index":195,"title":{"interceptors/DefaultOAuthInterceptor.html":{}},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"modules/OAuthModule.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["defaults",{"_index":1445,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["define",{"_index":1488,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["defined",{"_index":30,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/DateTimeProvider.html":{},"injectables/DefaultHashHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/HashHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthModuleConfig.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerConfig.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/OAuthStorage.html":{},"classes/OAuthSuccessEvent.html":{},"classes/ReceivedTokens.html":{},"injectables/SystemDateTimeProvider.html":{},"injectables/UrlHelperService.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["defines",{"_index":383,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["deleted",{"_index":1652,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["demand",{"_index":1120,"title":{},"body":{"index.html":{},"additional-documentation/using-password-flow.html":{}}}],["demands",{"_index":1198,"title":{},"body":{"index.html":{},"additional-documentation/using-password-flow.html":{}}}],["demo",{"_index":881,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["demonstration",{"_index":1552,"title":{},"body":{"additional-documentation/callback-after-login.html":{}}}],["dep",{"_index":814,"title":{},"body":{"changelog.html":{}}}],["dependancy",{"_index":895,"title":{},"body":{"changelog.html":{}}}],["dependencies",{"_index":986,"title":{"dependencies.html":{}},"body":{"dependencies.html":{},"overview.html":{}}}],["dependency",{"_index":311,"title":{},"body":{"classes/JwksValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["depending",{"_index":1224,"title":{},"body":{"index.html":{}}}],["deprecated",{"_index":392,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{}}}],["deps",{"_index":1722,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["described",{"_index":1424,"title":{},"body":{"additional-documentation/silent-refresh.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/using-password-flow.html":{}}}],["describes",{"_index":1829,"title":{},"body":{"additional-documentation/original-config-api.html":{}}}],["description",{"_index":9,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/HashHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"classes/WebHttpUrlEncodingCodec.html":{}}}],["design",{"_index":1797,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["details",{"_index":890,"title":{},"body":{"changelog.html":{},"additional-documentation/events.html":{},"additional-documentation/original-config-api.html":{}}}],["detects",{"_index":388,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["different",{"_index":1591,"title":{},"body":{"additional-documentation/events.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["directed",{"_index":1825,"title":{},"body":{"additional-documentation/manually-skipping-login-form.html":{}}}],["directly",{"_index":1248,"title":{},"body":{"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/using-password-flow.html":{}}}],["directory",{"_index":1083,"title":{"additional-documentation/authorization-servers/azure-ad-(active-directory).html":{}},"body":{"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/authorization-servers/azure-ad-(active-directory).html":{}}}],["disable",{"_index":368,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["disableathashcheck",{"_index":825,"title":{},"body":{"changelog.html":{}}}],["disabled",{"_index":1603,"title":{},"body":{"additional-documentation/events.html":{}}}],["disablenoncecheck",{"_index":332,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["disableoauth2statecheck",{"_index":333,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["discovery",{"_index":472,"title":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"index.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["discovery_document_load_error",{"_index":531,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["discovery_document_loaded",{"_index":528,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{},"additional-documentation/events.html":{}}}],["discovery_document_validation_error",{"_index":532,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["display",{"_index":1243,"title":{},"body":{"index.html":{}}}],["display_values_supported",{"_index":498,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["displayed",{"_index":404,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["distribute",{"_index":1330,"title":{},"body":{"license.html":{}}}],["docs",{"_index":889,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/session-checks.html":{}}}],["docs(readme",{"_index":850,"title":{},"body":{"changelog.html":{}}}],["document",{"_index":473,"title":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["documentation",{"_index":1054,"title":{},"body":{"index.html":{},"license.html":{},"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["documentation/refreshing",{"_index":1263,"title":{},"body":{"index.html":{}}}],["documentation/using",{"_index":1276,"title":{},"body":{"index.html":{}}}],["documented",{"_index":865,"title":{},"body":{"changelog.html":{}}}],["doesn't",{"_index":1694,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{}}}],["doing",{"_index":385,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{}}}],["domain",{"_index":1485,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["domains",{"_index":1706,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["don't",{"_index":1242,"title":{},"body":{"index.html":{},"additional-documentation/callback-after-login.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{}}}],["dosn't",{"_index":1835,"title":{},"body":{"additional-documentation/original-config-api.html":{}}}],["draft",{"_index":1184,"title":{},"body":{"index.html":{}}}],["dummy",{"_index":275,"title":{},"body":{"classes/JwksValidationHandler.html":{},"additional-documentation/using-password-flow.html":{}}}],["dummyclientsecret",{"_index":1207,"title":{},"body":{"index.html":{},"additional-documentation/using-password-flow.html":{}}}],["during",{"_index":1478,"title":{},"body":{"additional-documentation/silent-refresh.html":{},"additional-documentation/events.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["dynamic",{"_index":994,"title":{},"body":{"dependencies.html":{}}}],["e",{"_index":182,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{},"changelog.html":{},"additional-documentation/using-password-flow.html":{}}}],["e.g",{"_index":1483,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["e.type",{"_index":257,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["e2599e0",{"_index":908,"title":{},"body":{"changelog.html":{}}}],["e2e",{"_index":711,"title":{},"body":{"changelog.html":{}}}],["e89aa6d",{"_index":861,"title":{},"body":{"changelog.html":{}}}],["each",{"_index":1115,"title":{},"body":{"index.html":{}}}],["ease",{"_index":1146,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{}}}],["easier",{"_index":1427,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["easiest",{"_index":1535,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["edge",{"_index":1463,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["elements",{"_index":999,"title":{},"body":{"dependencies.html":{}}}],["email",{"_index":1218,"title":{},"body":{"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["enable",{"_index":1689,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{}}}],["encode",{"_index":1297,"title":{},"body":{"index.html":{}}}],["encodekey",{"_index":672,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["encodekey(k",{"_index":680,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["encoder",{"_index":164,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"dependencies.html":{}}}],["encoder.encode(valuetohash",{"_index":169,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["encodeuricomponent",{"_index":1286,"title":{},"body":{"index.html":{}}}],["encodeuricomponent(k",{"_index":684,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["encodeuricomponent(v",{"_index":685,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["encodeutf8",{"_index":1032,"title":{},"body":{"miscellaneous/functions.html":{}}}],["encodeutf8(arr",{"_index":1038,"title":{},"body":{"miscellaneous/functions.html":{}}}],["encodeutf8(fsha256(decodeutf8(valuetohash",{"_index":173,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["encodevalue",{"_index":673,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["encodevalue(v",{"_index":682,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["encounter",{"_index":1598,"title":{},"body":{"additional-documentation/events.html":{}}}],["end",{"_index":1090,"title":{},"body":{"index.html":{},"additional-documentation/authorization-servers/auth0.html":{},"additional-documentation/authorization-servers/azure-ad-(active-directory).html":{}}}],["end_session_endpoint",{"_index":482,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["endpoint",{"_index":456,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"index.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["endpoints",{"_index":1698,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/original-config-api.html":{}}}],["endpont",{"_index":1782,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["ends",{"_index":1650,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["enforce",{"_index":1203,"title":{},"body":{"index.html":{}}}],["enhancements",{"_index":1125,"title":{},"body":{"index.html":{}}}],["ensure",{"_index":1251,"title":{},"body":{"index.html":{}}}],["ensures",{"_index":1697,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["enter",{"_index":1754,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["enters",{"_index":1140,"title":{},"body":{"index.html":{}}}],["enum",{"_index":1615,"title":{},"body":{"additional-documentation/events.html":{}}}],["environment",{"_index":1062,"title":{},"body":{"index.html":{}}}],["environments",{"_index":377,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["erazerbrecht",{"_index":964,"title":{},"body":{"changelog.html":{}}}],["err",{"_index":294,"title":{},"body":{"classes/JwksValidationHandler.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"miscellaneous/variables.html":{}}}],["err));when",{"_index":1500,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["error",{"_index":229,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/events.html":{}}}],["error('algorithm",{"_index":110,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["error(message",{"_index":429,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["errorhandler",{"_index":203,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["errors",{"_index":1514,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/original-config-api.html":{}}}],["escapedkey",{"_index":657,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["escapedvalue",{"_index":658,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["esm",{"_index":818,"title":{},"body":{"changelog.html":{}}}],["etc",{"_index":1176,"title":{},"body":{"index.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["event",{"_index":763,"title":{},"body":{"changelog.html":{},"license.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/events.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["events",{"_index":394,"title":{"additional-documentation/events.html":{}},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/events.html":{},"additional-documentation/session-checks.html":{}}}],["events.ts",{"_index":1616,"title":{},"body":{"additional-documentation/events.html":{}}}],["eventtype",{"_index":525,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["example",{"_index":1088,"title":{},"body":{"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/manually-skipping-login-form.html":{},"additional-documentation/authorization-servers/auth0.html":{},"additional-documentation/authorization-servers/azure-ad-(active-directory).html":{}}}],["examples",{"_index":1157,"title":{},"body":{"index.html":{},"additional-documentation/authorization-servers/using-identity-server.html":{},"additional-documentation/authorization-servers/using-keycloak.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["execute",{"_index":1228,"title":{},"body":{"index.html":{}}}],["existing",{"_index":1239,"title":{},"body":{"index.html":{}}}],["expected",{"_index":1604,"title":{},"body":{"additional-documentation/events.html":{}}}],["expects",{"_index":1858,"title":{},"body":{"additional-documentation/authorization-servers/auth0.html":{}}}],["experience",{"_index":1843,"title":{},"body":{"additional-documentation/authorization-servers.html":{}}}],["expired",{"_index":1798,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["expires",{"_index":1144,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{}}}],["expires_in",{"_index":463,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["explicit",{"_index":900,"title":{},"body":{"changelog.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["explicitly",{"_index":1642,"title":{},"body":{"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/using-password-flow.html":{}}}],["export",{"_index":72,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/DateTimeProvider.html":{},"injectables/DefaultHashHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/HashHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthModuleConfig.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerConfig.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/OAuthStorage.html":{},"classes/OAuthSuccessEvent.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"injectables/SystemDateTimeProvider.html":{},"interfaces/TokenResponse.html":{},"injectables/UrlHelperService.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["exports",{"_index":597,"title":{},"body":{"modules/OAuthModule.html":{}}}],["express",{"_index":1346,"title":{},"body":{"license.html":{}}}],["extend",{"_index":1806,"title":{},"body":{"additional-documentation/configure-custom-oauthstorage.html":{}}}],["extends",{"_index":129,"title":{},"body":{"classes/DateTimeProvider.html":{},"classes/JwksValidationHandler.html":{},"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"injectables/SystemDateTimeProvider.html":{}}}],["extensions",{"_index":799,"title":{},"body":{"changelog.html":{}}}],["extensive",{"_index":1589,"title":{},"body":{"additional-documentation/events.html":{}}}],["extraction",{"_index":960,"title":{},"body":{"changelog.html":{}}}],["f42f943",{"_index":809,"title":{},"body":{"changelog.html":{}}}],["f5bd96c",{"_index":713,"title":{},"body":{"changelog.html":{}}}],["fact",{"_index":1430,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["factor",{"_index":1412,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{}}}],["factories",{"_index":594,"title":{},"body":{"modules/OAuthModule.html":{}}}],["factory",{"_index":144,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{},"miscellaneous/variables.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["fail",{"_index":1710,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["fails",{"_index":1695,"title":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}},"body":{}}],["fall",{"_index":1563,"title":{},"body":{"additional-documentation/popup-based-login.html":{}}}],["fallback",{"_index":1481,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["false",{"_index":366,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["far",{"_index":1426,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["fast",{"_index":149,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{},"dependencies.html":{}}}],["fb3afe4",{"_index":830,"title":{},"body":{"changelog.html":{}}}],["feat(oauth",{"_index":821,"title":{},"body":{"changelog.html":{}}}],["features",{"_index":746,"title":{},"body":{"changelog.html":{},"index.html":{}}}],["feel",{"_index":1122,"title":{},"body":{"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["fetch",{"_index":1230,"title":{},"body":{"index.html":{},"additional-documentation/using-password-flow.html":{}}}],["fetching",{"_index":1786,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["ff7d1d9",{"_index":751,"title":{},"body":{"changelog.html":{}}}],["fhash",{"_index":170,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["field",{"_index":50,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["file",{"_index":5,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/DateTimeProvider.html":{},"injectables/DefaultHashHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/HashHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthModuleConfig.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerConfig.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/OAuthStorage.html":{},"classes/OAuthSuccessEvent.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"injectables/SystemDateTimeProvider.html":{},"interfaces/TokenResponse.html":{},"injectables/UrlHelperService.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"changelog.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/events.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["files",{"_index":1322,"title":{},"body":{"license.html":{}}}],["filter",{"_index":221,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["filter((e",{"_index":256,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["finally",{"_index":1480,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["find",{"_index":1383,"title":{},"body":{"additional-documentation/getting-started.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["fine",{"_index":1268,"title":{},"body":{"index.html":{}}}],["fired",{"_index":1406,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{}}}],["first",{"_index":1210,"title":{},"body":{"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/manually-skipping-login-form.html":{},"additional-documentation/original-config-api.html":{}}}],["fitness",{"_index":1351,"title":{},"body":{"license.html":{}}}],["fix",{"_index":714,"title":{},"body":{"changelog.html":{}}}],["fix(lib",{"_index":856,"title":{},"body":{"changelog.html":{}}}],["fixed",{"_index":909,"title":{},"body":{"changelog.html":{}}}],["fixes",{"_index":696,"title":{},"body":{"changelog.html":{},"index.html":{}}}],["flag",{"_index":374,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["flight",{"_index":1737,"title":{},"body":{"additional-documentation/using-implicit-flow.html":{}}}],["flow",{"_index":305,"title":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{}},"body":{"classes/JwksValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/custom-query-parameters.html":{},"additional-documentation/events.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["flow.html",{"_index":1277,"title":{},"body":{"index.html":{}}}],["flow.md",{"_index":838,"title":{},"body":{"changelog.html":{}}}],["flows",{"_index":348,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"index.html":{},"additional-documentation/using-password-flow.html":{}}}],["focusing",{"_index":743,"title":{},"body":{"changelog.html":{}}}],["folder",{"_index":1129,"title":{},"body":{"index.html":{}}}],["followed",{"_index":353,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["following",{"_index":358,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"index.html":{},"license.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/manually-skipping-login-form.html":{},"additional-documentation/original-config-api.html":{}}}],["follows",{"_index":1803,"title":{},"body":{"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/authorization-servers.html":{}}}],["for(var",{"_index":1467,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["form",{"_index":1241,"title":{"additional-documentation/manually-skipping-login-form.html":{}},"body":{"index.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["format",{"_index":1726,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["former",{"_index":1635,"title":{},"body":{"additional-documentation/adapt-id_token-validation.html":{}}}],["forroot",{"_index":574,"title":{},"body":{"modules/OAuthModule.html":{}}}],["forroot(config",{"_index":575,"title":{},"body":{"modules/OAuthModule.html":{}}}],["forward",{"_index":1473,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["forwards",{"_index":1235,"title":{},"body":{"index.html":{}}}],["found",{"_index":1542,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/server-side-rendering.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["foundation",{"_index":1186,"title":{},"body":{"index.html":{}}}],["four",{"_index":1211,"title":{},"body":{"index.html":{}}}],["fragment",{"_index":339,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["free",{"_index":1123,"title":{},"body":{"index.html":{},"license.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["fsha256",{"_index":148,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["fsha256(valuetohash",{"_index":171,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["full",{"_index":1614,"title":{},"body":{"additional-documentation/events.html":{}}}],["function",{"_index":154,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{},"classes/LoginOptions.html":{},"classes/OAuthResourceServerConfig.html":{},"interfaces/ValidationParams.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["functions",{"_index":1025,"title":{"miscellaneous/functions.html":{}},"body":{"miscellaneous/functions.html":{}}}],["furnished",{"_index":1337,"title":{},"body":{"license.html":{}}}],["further",{"_index":1150,"title":{},"body":{"index.html":{}}}],["g",{"_index":919,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["geheim",{"_index":1775,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["geheim').then",{"_index":1796,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["geheim').then((resp",{"_index":1791,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["general",{"_index":1200,"title":{},"body":{"index.html":{}}}],["generate",{"_index":1132,"title":{},"body":{"index.html":{}}}],["gethashfragmentparams",{"_index":640,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["gethashfragmentparams(customhashfragment",{"_index":642,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["getitem",{"_index":505,"title":{},"body":{"injectables/MemoryStorage.html":{},"classes/OAuthStorage.html":{}}}],["getitem(key",{"_index":440,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["gets",{"_index":846,"title":{},"body":{"changelog.html":{}}}],["getting",{"_index":688,"title":{"changelog.html":{},"index.html":{},"license.html":{},"additional-documentation/getting-started.html":{}},"body":{"additional-documentation/getting-started.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["github.com/manfredsteyer/angular",{"_index":700,"title":{},"body":{"changelog.html":{}}}],["give",{"_index":1503,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["go",{"_index":1464,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["gone",{"_index":1610,"title":{},"body":{"additional-documentation/events.html":{}}}],["google",{"_index":1703,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["grant",{"_index":755,"title":{},"body":{"changelog.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["grant_types_supported",{"_index":489,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["granted",{"_index":1315,"title":{},"body":{"license.html":{}}}],["graph",{"_index":1368,"title":{},"body":{"modules.html":{}}}],["great",{"_index":1556,"title":{},"body":{"additional-documentation/popup-based-login.html":{},"additional-documentation/server-side-rendering.html":{}}}],["guard",{"_index":905,"title":{},"body":{"changelog.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["guards",{"_index":1060,"title":{},"body":{"index.html":{}}}],["guide",{"_index":1384,"title":{},"body":{"additional-documentation/getting-started.html":{}}}],["guidelines",{"_index":869,"title":{},"body":{"changelog.html":{},"index.html":{}}}],["half",{"_index":1418,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{}}}],["hallo",{"_index":1750,"title":{},"body":{"additional-documentation/using-implicit-flow.html":{}}}],["handle",{"_index":707,"title":{},"body":{"changelog.html":{}}}],["handle(req",{"_index":250,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["handleerror",{"_index":618,"title":{},"body":{"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{}}}],["handleerror(err",{"_index":619,"title":{},"body":{"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["handler",{"_index":230,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"classes/JwksValidationHandler.html":{},"classes/NullValidationHandler.html":{},"modules/OAuthModule.html":{},"changelog.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["handler.ts",{"_index":8,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"miscellaneous/functions.html":{},"miscellaneous/variables.html":{}}}],["handler.ts:11",{"_index":517,"title":{},"body":{"classes/NullValidationHandler.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{}}}],["handler.ts:12",{"_index":271,"title":{},"body":{"classes/HashHandler.html":{}}}],["handler.ts:20",{"_index":663,"title":{},"body":{"classes/ValidationHandler.html":{}}}],["handler.ts:25",{"_index":288,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["handler.ts:27",{"_index":662,"title":{},"body":{"classes/ValidationHandler.html":{}}}],["handler.ts:33",{"_index":136,"title":{},"body":{"injectables/DefaultHashHandler.html":{}}}],["handler.ts:41",{"_index":66,"title":{},"body":{"classes/AbstractValidationHandler.html":{}}}],["handler.ts:46",{"_index":58,"title":{},"body":{"classes/AbstractValidationHandler.html":{}}}],["handler.ts:5",{"_index":626,"title":{},"body":{"classes/OAuthResourceServerErrorHandler.html":{}}}],["handler.ts:52",{"_index":142,"title":{},"body":{"injectables/DefaultHashHandler.html":{}}}],["handler.ts:60",{"_index":139,"title":{},"body":{"injectables/DefaultHashHandler.html":{}}}],["handler.ts:71",{"_index":47,"title":{},"body":{"classes/AbstractValidationHandler.html":{}}}],["handler.ts:8",{"_index":518,"title":{},"body":{"classes/NullValidationHandler.html":{}}}],["handler.ts:88",{"_index":31,"title":{},"body":{"classes/AbstractValidationHandler.html":{}}}],["handlers",{"_index":80,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["handling",{"_index":1512,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["hash",{"_index":33,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"injectables/UrlHelperService.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"changelog.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/custom-query-parameters.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["hash.indexof",{"_index":648,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["hash.substr(1",{"_index":652,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["hash.substr(questionmarkposition",{"_index":651,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["hashalg",{"_index":85,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["hasharray",{"_index":166,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["hashhandler",{"_index":153,"title":{"classes/HashHandler.html":{}},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{},"modules/OAuthModule.html":{}}}],["hashing",{"_index":1044,"title":{},"body":{"index.html":{}}}],["hashlocationstrategy",{"_index":1067,"title":{},"body":{"index.html":{}}}],["hashstrategy",{"_index":1271,"title":{"additional-documentation/routing-with-the-hashstrategy.html":{}},"body":{"index.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["hashstring",{"_index":175,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["hasreceivedtokens",{"_index":1812,"title":{},"body":{"additional-documentation/manually-skipping-login-form.html":{}}}],["header",{"_index":55,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["headers",{"_index":268,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["helper",{"_index":71,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["helper.service",{"_index":587,"title":{},"body":{"modules/OAuthModule.html":{}}}],["helper.service.ts",{"_index":639,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["helper.service.ts:25",{"_index":645,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["helper.service.ts:5",{"_index":643,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["helper.ts",{"_index":1028,"title":{},"body":{"miscellaneous/functions.html":{}}}],["hence",{"_index":1136,"title":{},"body":{"index.html":{},"additional-documentation/authorization-servers.html":{}}}],["here",{"_index":1080,"title":{},"body":{"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/server-side-rendering.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/authorization-servers/using-identity-server.html":{},"additional-documentation/authorization-servers/using-keycloak.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["here's",{"_index":1597,"title":{},"body":{"additional-documentation/events.html":{}}}],["hereby",{"_index":1314,"title":{},"body":{"license.html":{}}}],["hexcode",{"_index":188,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["hexcode.padstart(2",{"_index":191,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["hexcodes",{"_index":186,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["hexcodes.join",{"_index":192,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["hexstring(buffer",{"_index":185,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["hidden",{"_index":1432,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["holders",{"_index":1356,"title":{},"body":{"license.html":{}}}],["home",{"_index":1553,"title":{},"body":{"additional-documentation/callback-after-login.html":{}}}],["homecomponent",{"_index":1179,"title":{},"body":{"index.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["hook",{"_index":411,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"index.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/session-checks.html":{}}}],["hooked",{"_index":81,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["html",{"_index":1476,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["http",{"_index":1515,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["http://localhost:4200",{"_index":1161,"title":{},"body":{"index.html":{}}}],["http://localhost:8080/#/home",{"_index":1631,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["http://openid.net/specs/openid",{"_index":457,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["http://www.angular.at/api",{"_index":1259,"title":{},"body":{"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["http_interceptors",{"_index":585,"title":{},"body":{"modules/OAuthModule.html":{}}}],["httpclientmodule",{"_index":1175,"title":{},"body":{"index.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["httperrorresponse",{"_index":1538,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["httpevent",{"_index":215,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["httphandler",{"_index":211,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["httpinterceptor",{"_index":216,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["httpinterceptors",{"_index":1509,"title":{"additional-documentation/working-with-httpinterceptors.html":{}},"body":{}}],["httpmodule",{"_index":923,"title":{},"body":{"changelog.html":{}}}],["httpparametercodec",{"_index":669,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["httprequest",{"_index":209,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["httpresponse",{"_index":620,"title":{},"body":{"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["https://dev",{"_index":1849,"title":{},"body":{"additional-documentation/authorization-servers/auth0.html":{}}}],["https://github.com/jeroenheijmans/sample",{"_index":1059,"title":{},"body":{"index.html":{}}}],["https://github.com/lankaapura/angular",{"_index":1676,"title":{},"body":{"additional-documentation/server-side-rendering.html":{}}}],["https://github.com/manfredsteyer/angular",{"_index":757,"title":{},"body":{"changelog.html":{},"index.html":{}}}],["https://idsvr4.azurewebsites.net",{"_index":1191,"title":{},"body":{"index.html":{}}}],["https://manfredsteyer.github.io/angular",{"_index":1055,"title":{},"body":{"index.html":{}}}],["https://medium.com/lankapura/angular",{"_index":1673,"title":{},"body":{"additional-documentation/server-side-rendering.html":{}}}],["https://steyer",{"_index":1443,"title":{},"body":{"additional-documentation/silent-refresh.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["i.e",{"_index":1702,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["i=0",{"_index":1468,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["id",{"_index":449,"title":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/manually-skipping-login-form.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["id_token",{"_index":51,"title":{"additional-documentation/adapt-id_token-validation.html":{}},"body":{"classes/AbstractValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"changelog.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/callback-after-login.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/using-password-flow.html":{}}}],["id_token's",{"_index":53,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["id_token_encryption_alg_values_supported",{"_index":495,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["id_token_encryption_enc_values_supported",{"_index":496,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["id_token_signing_alg_values_supported",{"_index":494,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["idclaims",{"_index":450,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["ideas",{"_index":1124,"title":{},"body":{"index.html":{}}}],["identity",{"_index":942,"title":{"additional-documentation/authorization-servers/using-identity-server.html":{}},"body":{"changelog.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/manually-skipping-login-form.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers/using-identity-server.html":{}}}],["identityserver",{"_index":1073,"title":{},"body":{"index.html":{}}}],["idsvr",{"_index":851,"title":{},"body":{"changelog.html":{},"additional-documentation/server-side-rendering.html":{}}}],["idtoken",{"_index":74,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["idtokenclaims",{"_index":77,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["idtokenclaimsjson",{"_index":452,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["idtokenexpiresat",{"_index":454,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["idtokenheader",{"_index":76,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["idtokenheaderjson",{"_index":453,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["ie",{"_index":910,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/popup-based-login.html":{}}}],["iframe",{"_index":1433,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["iframes",{"_index":346,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["ignores",{"_index":1864,"title":{},"body":{"additional-documentation/authorization-servers/auth0.html":{}}}],["implcit",{"_index":1767,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["implemantion",{"_index":1526,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["implement",{"_index":1524,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/using-implicit-flow.html":{}}}],["implementation",{"_index":11,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{}}}],["implementations",{"_index":438,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["implemented",{"_index":1646,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["implementing",{"_index":302,"title":{},"body":{"classes/JwksValidationHandler.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/using-implicit-flow.html":{}}}],["implements",{"_index":14,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthLogger.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["implicit",{"_index":304,"title":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-implicit-flow.html":{}},"body":{"classes/JwksValidationHandler.html":{},"changelog.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/custom-query-parameters.html":{},"additional-documentation/events.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{}}}],["implied",{"_index":1347,"title":{},"body":{"license.html":{}}}],["import",{"_index":68,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/DateTimeProvider.html":{},"injectables/DefaultHashHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/HashHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"injectables/SystemDateTimeProvider.html":{},"interfaces/TokenResponse.html":{},"injectables/UrlHelperService.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/events.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["important",{"_index":1212,"title":{},"body":{"index.html":{}}}],["imports",{"_index":595,"title":{},"body":{"modules/OAuthModule.html":{},"index.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["included",{"_index":390,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"license.html":{}}}],["includes",{"_index":384,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["including",{"_index":845,"title":{},"body":{"changelog.html":{},"license.html":{}}}],["increase",{"_index":787,"title":{},"body":{"changelog.html":{}}}],["indeed",{"_index":1469,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["index",{"_index":21,"title":{"index.html":{}},"body":{"classes/AbstractValidationHandler.html":{},"classes/DateTimeProvider.html":{},"injectables/DefaultHashHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/HashHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthLogger.html":{},"classes/OAuthModuleConfig.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerConfig.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"injectables/SystemDateTimeProvider.html":{},"interfaces/TokenResponse.html":{},"injectables/UrlHelperService.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"miscellaneous/functions.html":{},"miscellaneous/typealiases.html":{},"miscellaneous/variables.html":{}}}],["index.html",{"_index":1193,"title":{},"body":{"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["indexable",{"_index":660,"title":{},"body":{"interfaces/UserInfo.html":{}}}],["inferhashalgorithm",{"_index":24,"title":{},"body":{"classes/AbstractValidationHandler.html":{}}}],["inferhashalgorithm(jwtheader",{"_index":45,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["infers",{"_index":48,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["info",{"_index":3,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/DateTimeProvider.html":{},"injectables/DefaultHashHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/HashHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthModuleConfig.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerConfig.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/OAuthStorage.html":{},"classes/OAuthSuccessEvent.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"injectables/SystemDateTimeProvider.html":{},"interfaces/TokenResponse.html":{},"injectables/UrlHelperService.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"additional-documentation/preserving-state-(like-the-requested-url).html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/using-password-flow.html":{}}}],["info(message",{"_index":426,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["info.state",{"_index":1391,"title":{},"body":{"additional-documentation/preserving-state-(like-the-requested-url).html":{}}}],["information",{"_index":1095,"title":{},"body":{"index.html":{},"additional-documentation/events.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-systemjs.html":{},"additional-documentation/original-config-api.html":{}}}],["informs",{"_index":1578,"title":{},"body":{"additional-documentation/events.html":{}}}],["inherited",{"_index":290,"title":{},"body":{"classes/JwksValidationHandler.html":{},"injectables/SystemDateTimeProvider.html":{}}}],["initial",{"_index":1479,"title":{},"body":{"additional-documentation/silent-refresh.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["initialize",{"_index":1220,"title":{},"body":{"index.html":{}}}],["initializes",{"_index":1223,"title":{},"body":{"index.html":{}}}],["initialnavigation",{"_index":1627,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["initimplicitflow",{"_index":1288,"title":{},"body":{"index.html":{},"additional-documentation/preserving-state-(like-the-requested-url).html":{},"additional-documentation/using-implicit-flow.html":{}}}],["initloginflow",{"_index":854,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/popup-based-login.html":{}}}],["initloginflowinpopup",{"_index":772,"title":{},"body":{"changelog.html":{},"additional-documentation/popup-based-login.html":{}}}],["inject",{"_index":1537,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["injectable",{"_index":126,"title":{"injectables/DefaultHashHandler.html":{},"injectables/MemoryStorage.html":{},"injectables/SystemDateTimeProvider.html":{},"injectables/UrlHelperService.html":{}},"body":{"classes/DateTimeProvider.html":{},"injectables/DefaultHashHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/HashHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"injectables/SystemDateTimeProvider.html":{},"interfaces/TokenResponse.html":{},"injectables/UrlHelperService.html":{},"interfaces/UserInfo.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["injectables",{"_index":132,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"injectables/MemoryStorage.html":{},"injectables/SystemDateTimeProvider.html":{},"injectables/UrlHelperService.html":{},"overview.html":{}}}],["injecting",{"_index":1531,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["injection",{"_index":422,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["injectiontoken",{"_index":956,"title":{},"body":{"changelog.html":{}}}],["injectiontoken('auth_config",{"_index":1382,"title":{},"body":{"miscellaneous/variables.html":{}}}],["inline",{"_index":811,"title":{},"body":{"changelog.html":{}}}],["install",{"_index":306,"title":{},"body":{"classes/JwksValidationHandler.html":{},"index.html":{},"miscellaneous/variables.html":{}}}],["installing",{"_index":1173,"title":{},"body":{"index.html":{}}}],["instance",{"_index":1415,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{}}}],["instanceof",{"_index":1594,"title":{},"body":{"additional-documentation/events.html":{}}}],["instead",{"_index":341,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"index.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["intended",{"_index":1732,"title":{},"body":{"additional-documentation/using-implicit-flow.html":{}}}],["interaction",{"_index":1439,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["intercept",{"_index":199,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["intercept(req",{"_index":208,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["intercepted",{"_index":610,"title":{},"body":{"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{}}}],["interceptor",{"_index":194,"title":{"interceptors/DefaultOAuthInterceptor.html":{}},"body":{"index.html":{}}}],["interceptors",{"_index":196,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["interceptors/default",{"_index":590,"title":{},"body":{"modules/OAuthModule.html":{}}}],["interceptors/resource",{"_index":589,"title":{},"body":{"modules/OAuthModule.html":{}}}],["interesting",{"_index":1810,"title":{},"body":{"additional-documentation/manually-skipping-login-form.html":{}}}],["interface",{"_index":73,"title":{"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"interfaces/ValidationParams.html":{}},"body":{"classes/AbstractValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["interfaces",{"_index":631,"title":{},"body":{"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"interfaces/ValidationParams.html":{},"overview.html":{}}}],["internally",{"_index":363,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["introduce",{"_index":747,"title":{},"body":{"changelog.html":{}}}],["invalid_nonce_in_state",{"_index":530,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{},"additional-documentation/events.html":{}}}],["ionic",{"_index":1307,"title":{},"body":{"index.html":{}}}],["isn't",{"_index":512,"title":{},"body":{"classes/NullValidationHandler.html":{},"additional-documentation/using-password-flow.html":{}}}],["isresponse(str",{"_index":1466,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["issue",{"_index":831,"title":{},"body":{"changelog.html":{}}}],["issuer",{"_index":475,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["issues",{"_index":882,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["issuing",{"_index":1431,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["ivy",{"_index":835,"title":{},"body":{"changelog.html":{}}}],["java",{"_index":1050,"title":{},"body":{"index.html":{}}}],["jeroenheijmans",{"_index":980,"title":{},"body":{"changelog.html":{}}}],["jie",{"_index":971,"title":{},"body":{"changelog.html":{}}}],["job",{"_index":982,"title":{},"body":{"changelog.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["js",{"_index":145,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{},"changelog.html":{},"dependencies.html":{},"additional-documentation/using-systemjs.html":{}}}],["jsrsasign",{"_index":721,"title":{},"body":{"changelog.html":{},"dependencies.html":{},"index.html":{},"additional-documentation/using-systemjs.html":{}}}],["jwks",{"_index":78,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"changelog.html":{},"dependencies.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/events.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["jwks';instead",{"_index":1284,"title":{},"body":{"index.html":{}}}],["jwks_load_error",{"_index":529,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["jwks_uri",{"_index":483,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["jwksvalidationhandler",{"_index":272,"title":{"classes/JwksValidationHandler.html":{}},"body":{"classes/JwksValidationHandler.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/using-implicit-flow.html":{}}}],["jwksvalidationhandler();in",{"_index":1640,"title":{},"body":{"additional-documentation/adapt-id_token-validation.html":{}}}],["jwt",{"_index":753,"title":{},"body":{"changelog.html":{}}}],["jwtheader",{"_index":52,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["jwtheader['alg",{"_index":105,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["k",{"_index":676,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["keep",{"_index":1452,"title":{},"body":{"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["kevin",{"_index":1717,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["key",{"_index":470,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"injectables/UrlHelperService.html":{},"interfaces/UserInfo.html":{}}}],["keycloak",{"_index":1048,"title":{"additional-documentation/authorization-servers/using-keycloak.html":{}},"body":{"index.html":{},"additional-documentation/authorization-servers/using-keycloak.html":{}}}],["keys",{"_index":1636,"title":{},"body":{"additional-documentation/adapt-id_token-validation.html":{}}}],["kicks",{"_index":1764,"title":{},"body":{"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["kind",{"_index":1345,"title":{},"body":{"license.html":{}}}],["known",{"_index":1428,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["known/openid",{"_index":1778,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["labat",{"_index":979,"title":{},"body":{"changelog.html":{}}}],["labels",{"_index":1126,"title":{},"body":{"index.html":{}}}],["laing",{"_index":977,"title":{},"body":{"changelog.html":{}}}],["later",{"_index":1637,"title":{},"body":{"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/using-password-flow.html":{}}}],["leads",{"_index":1534,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/session-checks.html":{}}}],["leftmosthalf",{"_index":93,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["levels",{"_index":1592,"title":{},"body":{"additional-documentation/events.html":{}}}],["leveraging",{"_index":1617,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/using-implicit-flow.html":{}}}],["liability",{"_index":1360,"title":{},"body":{"license.html":{}}}],["liable",{"_index":1357,"title":{},"body":{"license.html":{}}}],["lib",{"_index":402,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"index.html":{},"additional-documentation/callback-after-login.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/authorization-servers.html":{},"additional-documentation/authorization-servers/using-identity-server.html":{},"additional-documentation/authorization-servers/using-keycloak.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["library",{"_index":281,"title":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{}},"body":{"classes/JwksValidationHandler.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/events.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/server-side-rendering.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers/azure-ad-(active-directory).html":{}}}],["library's",{"_index":1711,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["license",{"_index":858,"title":{"license.html":{}},"body":{"changelog.html":{}}}],["life",{"_index":1409,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{}}}],["lifetime",{"_index":1663,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["limitation",{"_index":1326,"title":{},"body":{"license.html":{},"additional-documentation/refreshing-a-token.html":{}}}],["limited",{"_index":1348,"title":{},"body":{"license.html":{}}}],["lin",{"_index":972,"title":{},"body":{"changelog.html":{}}}],["line",{"_index":1490,"title":{},"body":{"additional-documentation/silent-refresh.html":{},"additional-documentation/using-password-flow.html":{}}}],["linjie997",{"_index":949,"title":{},"body":{"changelog.html":{}}}],["linked",{"_index":1089,"title":{},"body":{"index.html":{},"additional-documentation/authorization-servers/azure-ad-(active-directory).html":{}}}],["links",{"_index":1093,"title":{},"body":{"index.html":{}}}],["list",{"_index":1396,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/events.html":{}}}],["listed",{"_index":1522,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["listen",{"_index":759,"title":{},"body":{"changelog.html":{}}}],["lite",{"_index":1015,"title":{},"body":{"dependencies.html":{}}}],["load",{"_index":1776,"title":{},"body":{"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["loaddiscoverydocumentandlogin",{"_index":853,"title":{},"body":{"changelog.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["loaddiscoverydocumentandtrylogin",{"_index":1808,"title":{},"body":{"additional-documentation/manually-skipping-login-form.html":{}}}],["loaded",{"_index":1453,"title":{},"body":{"additional-documentation/silent-refresh.html":{},"additional-documentation/using-password-flow.html":{}}}],["loading",{"_index":1792,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["loadkeys",{"_index":79,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["loaduserprofile",{"_index":1606,"title":{},"body":{"additional-documentation/events.html":{}}}],["local",{"_index":1651,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["localhost:[4200",{"_index":1169,"title":{},"body":{"index.html":{}}}],["localstorage",{"_index":435,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["location",{"_index":708,"title":{},"body":{"changelog.html":{}}}],["location.hash",{"_index":703,"title":{},"body":{"changelog.html":{}}}],["location.origin",{"_index":1458,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["location.search",{"_index":1457,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["locationstrategy",{"_index":1618,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["log",{"_index":560,"title":{},"body":{"classes/OAuthLogger.html":{},"additional-documentation/events.html":{}}}],["log(message",{"_index":427,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["logged",{"_index":1436,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["loggin",{"_index":1783,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["logging",{"_index":415,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"index.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["login",{"_index":739,"title":{"additional-documentation/callback-after-login.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/manually-skipping-login-form.html":{}},"body":{"changelog.html":{},"index.html":{},"additional-documentation/preserving-state-(like-the-requested-url).html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/callback-after-login.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/manually-skipping-login-form.html":{},"additional-documentation/original-config-api.html":{}}}],["loginhint",{"_index":767,"title":{},"body":{"changelog.html":{}}}],["loginoptions",{"_index":324,"title":{"classes/LoginOptions.html":{}},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["logoff",{"_index":1745,"title":{},"body":{"additional-documentation/using-implicit-flow.html":{}}}],["logout",{"_index":548,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"changelog.html":{},"index.html":{},"miscellaneous/typealiases.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["logouturl",{"_index":1853,"title":{},"body":{"additional-documentation/authorization-servers/auth0.html":{}}}],["logs",{"_index":1590,"title":{},"body":{"additional-documentation/events.html":{}}}],["long",{"_index":1613,"title":{},"body":{"additional-documentation/events.html":{}}}],["longer",{"_index":1588,"title":{},"body":{"additional-documentation/events.html":{}}}],["look",{"_index":1078,"title":{},"body":{"index.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers/azure-ad-(active-directory).html":{}}}],["lookup",{"_index":1275,"title":{},"body":{"index.html":{}}}],["lower",{"_index":1257,"title":{},"body":{"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["main",{"_index":1454,"title":{},"body":{"additional-documentation/silent-refresh.html":{},"additional-documentation/events.html":{},"additional-documentation/using-systemjs.html":{}}}],["maintain",{"_index":1712,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["major",{"_index":1114,"title":{},"body":{"index.html":{}}}],["make",{"_index":17,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"changelog.html":{},"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/using-password-flow.html":{}}}],["making",{"_index":1569,"title":{},"body":{"additional-documentation/popup-based-login.html":{}}}],["management",{"_index":1647,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["mandatory",{"_index":1290,"title":{},"body":{"index.html":{}}}],["manfred",{"_index":973,"title":{},"body":{"changelog.html":{},"license.html":{}}}],["manner",{"_index":350,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["manually",{"_index":1237,"title":{"additional-documentation/manually-skipping-login-form.html":{}},"body":{"index.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["map",{"_index":222,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/using-systemjs.html":{}}}],["map((_",{"_index":262,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["mark",{"_index":356,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["matching",{"_index":115,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/DateTimeProvider.html":{},"injectables/DefaultHashHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/HashHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthModuleConfig.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerConfig.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/OAuthStorage.html":{},"classes/OAuthSuccessEvent.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"injectables/SystemDateTimeProvider.html":{},"interfaces/TokenResponse.html":{},"injectables/UrlHelperService.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"changelog.html":{},"dependencies.html":{},"miscellaneous/functions.html":{},"index.html":{},"license.html":{},"modules.html":{},"overview.html":{},"miscellaneous/typealiases.html":{},"miscellaneous/variables.html":{},"additional-documentation/getting-started.html":{},"additional-documentation/preserving-state-(like-the-requested-url).html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/callback-after-login.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/custom-query-parameters.html":{},"additional-documentation/events.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/server-side-rendering.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-systemjs.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/manually-skipping-login-form.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers.html":{},"additional-documentation/authorization-servers/using-identity-server.html":{},"additional-documentation/authorization-servers/using-keycloak.html":{},"additional-documentation/authorization-servers/auth0.html":{},"additional-documentation/authorization-servers/azure-ad-(active-directory).html":{}}}],["max/geheim",{"_index":1163,"title":{},"body":{"index.html":{},"additional-documentation/using-implicit-flow.html":{}}}],["mccloghry",{"_index":976,"title":{},"body":{"changelog.html":{}}}],["mean",{"_index":1560,"title":{},"body":{"additional-documentation/popup-based-login.html":{}}}],["means",{"_index":1417,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/session-checks.html":{}}}],["meanwhile",{"_index":1733,"title":{},"body":{"additional-documentation/using-implicit-flow.html":{}}}],["memorystorage",{"_index":443,"title":{"injectables/MemoryStorage.html":{}},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["mentioned",{"_index":1393,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/original-config-api.html":{}}}],["merchantability",{"_index":1350,"title":{},"body":{"license.html":{}}}],["merge",{"_index":218,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"license.html":{}}}],["mergemap",{"_index":224,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["mergemap((token",{"_index":266,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["message",{"_index":391,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/silent-refresh.html":{}}}],["meta",{"_index":1721,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["method",{"_index":15,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/manually-skipping-login-form.html":{},"additional-documentation/original-config-api.html":{}}}],["methods",{"_index":22,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/DateTimeProvider.html":{},"injectables/DefaultHashHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/HashHandler.html":{},"classes/JwksValidationHandler.html":{},"injectables/MemoryStorage.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/OAuthStorage.html":{},"injectables/SystemDateTimeProvider.html":{},"injectables/UrlHelperService.html":{},"classes/ValidationHandler.html":{},"classes/WebHttpUrlEncodingCodec.html":{}}}],["mind",{"_index":1202,"title":{},"body":{"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["minutes",{"_index":1305,"title":{},"body":{"index.html":{}}}],["miscellaneous",{"_index":1024,"title":{"miscellaneous/functions.html":{},"miscellaneous/typealiases.html":{},"miscellaneous/variables.html":{}},"body":{"miscellaneous/functions.html":{},"miscellaneous/typealiases.html":{},"miscellaneous/variables.html":{}}}],["missing",{"_index":922,"title":{},"body":{"changelog.html":{}}}],["mode",{"_index":737,"title":{},"body":{"changelog.html":{}}}],["moderating",{"_index":983,"title":{},"body":{"changelog.html":{}}}],["modern",{"_index":1155,"title":{},"body":{"index.html":{}}}],["modify",{"_index":1328,"title":{},"body":{"license.html":{}}}],["module",{"_index":568,"title":{"modules/OAuthModule.html":{}},"body":{"overview.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["module.config",{"_index":232,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"modules/OAuthModule.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["module.config.ts",{"_index":604,"title":{},"body":{"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{}}}],["module.config.ts:11",{"_index":623,"title":{},"body":{"classes/OAuthResourceServerConfig.html":{}}}],["module.config.ts:12",{"_index":625,"title":{},"body":{"classes/OAuthResourceServerConfig.html":{}}}],["module.config.ts:13",{"_index":624,"title":{},"body":{"classes/OAuthResourceServerConfig.html":{}}}],["module.config.ts:2",{"_index":607,"title":{},"body":{"classes/OAuthModuleConfig.html":{}}}],["moduleconfig",{"_index":205,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["modules",{"_index":570,"title":{"modules.html":{}},"body":{"modules/OAuthModule.html":{},"modules.html":{}}}],["modulewithproviders",{"_index":579,"title":{},"body":{"modules/OAuthModule.html":{}}}],["moment",{"_index":1665,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["moos",{"_index":958,"title":{},"body":{"changelog.html":{}}}],["more",{"_index":1094,"title":{},"body":{"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/events.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["moved",{"_index":280,"title":{},"body":{"classes/JwksValidationHandler.html":{},"index.html":{},"miscellaneous/variables.html":{}}}],["msec",{"_index":1506,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["much",{"_index":1109,"title":{},"body":{"index.html":{}}}],["multi",{"_index":602,"title":{},"body":{"modules/OAuthModule.html":{}}}],["multiple",{"_index":741,"title":{},"body":{"changelog.html":{}}}],["multiplying",{"_index":725,"title":{},"body":{"changelog.html":{}}}],["name",{"_index":39,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"injectables/DefaultHashHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/HashHandler.html":{},"classes/JwksValidationHandler.html":{},"injectables/MemoryStorage.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/OAuthStorage.html":{},"classes/OAuthSuccessEvent.html":{},"injectables/UrlHelperService.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"miscellaneous/functions.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["namely",{"_index":282,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["navigation",{"_index":1620,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["need",{"_index":301,"title":{},"body":{"classes/JwksValidationHandler.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["needed",{"_index":312,"title":{},"body":{"classes/JwksValidationHandler.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["needs",{"_index":1660,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["net",{"_index":1074,"title":{},"body":{"index.html":{}}}],["net/.net",{"_index":1046,"title":{},"body":{"index.html":{}}}],["never",{"_index":375,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["new",{"_index":109,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/DateTimeProvider.html":{},"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"injectables/SystemDateTimeProvider.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"changelog.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/manually-skipping-login-form.html":{},"additional-documentation/original-config-api.html":{}}}],["newer",{"_index":1107,"title":{},"body":{"index.html":{}}}],["newest",{"_index":1659,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["next",{"_index":210,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["next.handle(req",{"_index":247,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["next.handle(req).catch(err",{"_index":1548,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["ngmodule",{"_index":582,"title":{},"body":{"modules/OAuthModule.html":{},"index.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["ngx",{"_index":1008,"title":{},"body":{"dependencies.html":{}}}],["ngzone",{"_index":928,"title":{},"body":{"changelog.html":{}}}],["node_modules/jsrsasign/lib/jsrsasign",{"_index":1729,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["nonce",{"_index":369,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"additional-documentation/events.html":{}}}],["noninfringement",{"_index":1354,"title":{},"body":{"license.html":{}}}],["normally",{"_index":399,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["notable",{"_index":862,"title":{},"body":{"changelog.html":{}}}],["note",{"_index":310,"title":{},"body":{"classes/JwksValidationHandler.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["notes",{"_index":1422,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["nothing",{"_index":514,"title":{},"body":{"classes/NullValidationHandler.html":{}}}],["notice",{"_index":1340,"title":{},"body":{"license.html":{}}}],["notification",{"_index":1644,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["notifications",{"_index":1657,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["notified",{"_index":1666,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["now",{"_index":121,"title":{},"body":{"classes/DateTimeProvider.html":{},"injectables/SystemDateTimeProvider.html":{},"changelog.html":{},"index.html":{}}}],["nowadays",{"_index":314,"title":{},"body":{"classes/JwksValidationHandler.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/original-config-api.html":{}}}],["npm",{"_index":307,"title":{},"body":{"classes/JwksValidationHandler.html":{},"index.html":{},"miscellaneous/variables.html":{}}}],["null",{"_index":293,"title":{},"body":{"classes/JwksValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthStorage.html":{},"classes/OAuthSuccessEvent.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"injectables/UrlHelperService.html":{},"interfaces/UserInfo.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/using-implicit-flow.html":{}}}],["nullvalidationhandler",{"_index":287,"title":{"classes/NullValidationHandler.html":{}},"body":{"classes/JwksValidationHandler.html":{},"classes/NullValidationHandler.html":{},"modules/OAuthModule.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["nullvalidationhandler:11",{"_index":291,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["nullvalidationhandler:8",{"_index":292,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["number",{"_index":125,"title":{},"body":{"classes/DateTimeProvider.html":{},"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"injectables/SystemDateTimeProvider.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["oauth",{"_index":231,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"modules/OAuthModule.html":{},"changelog.html":{},"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{}}}],["oauth.interceptor",{"_index":591,"title":{},"body":{"modules/OAuthModule.html":{}}}],["oauth.interceptor.ts",{"_index":198,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["oauth.interceptor.ts:23",{"_index":207,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["oauth.interceptor.ts:44",{"_index":212,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["oauth2",{"_index":284,"title":{},"body":{"classes/JwksValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"dependencies.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/events.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-systemjs.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["oauth2/oidc",{"_index":303,"title":{},"body":{"classes/JwksValidationHandler.html":{},"miscellaneous/variables.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{}}}],["oautherrorevent",{"_index":521,"title":{"classes/OAuthErrorEvent.html":{}},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"additional-documentation/events.html":{}}}],["oauthevent",{"_index":523,"title":{"classes/OAuthEvent.html":{}},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{}}}],["oauthinfoevent",{"_index":556,"title":{"classes/OAuthInfoEvent.html":{}},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{}}}],["oauthlogger",{"_index":423,"title":{"classes/OAuthLogger.html":{}},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["oauthmodule",{"_index":569,"title":{"modules/OAuthModule.html":{}},"body":{"modules/OAuthModule.html":{},"index.html":{},"modules.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["oauthmodule.forroot",{"_index":1177,"title":{},"body":{"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["oauthmoduleconfig",{"_index":206,"title":{"classes/OAuthModuleConfig.html":{}},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"modules/OAuthModule.html":{},"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["oauthnoopresourceservererrorhandler",{"_index":588,"title":{"classes/OAuthNoopResourceServerErrorHandler.html":{}},"body":{"modules/OAuthModule.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["oauthresourceserverconfig",{"_index":606,"title":{"classes/OAuthResourceServerConfig.html":{}},"body":{"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{}}}],["oauthresourceservererrorhandler",{"_index":204,"title":{"classes/OAuthResourceServerErrorHandler.html":{}},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"modules/OAuthModule.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["oauthservice",{"_index":202,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["oauthstorage",{"_index":439,"title":{"classes/OAuthStorage.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["oauthsuccessevent",{"_index":553,"title":{"classes/OAuthSuccessEvent.html":{}},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{}}}],["object",{"_index":46,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"classes/OAuthSuccessEvent.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"injectables/UrlHelperService.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/using-implicit-flow.html":{}}}],["observable",{"_index":214,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/events.html":{}}}],["obtaining",{"_index":1318,"title":{},"body":{"license.html":{}}}],["occur",{"_index":1582,"title":{},"body":{"additional-documentation/events.html":{}}}],["of(null",{"_index":261,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["of(this.oauthservice.getaccesstoken()).pipe(filter((token",{"_index":253,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["officially",{"_index":1076,"title":{},"body":{"index.html":{}}}],["offline_access",{"_index":1213,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["oidc",{"_index":285,"title":{},"body":{"classes/JwksValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"dependencies.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/events.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-systemjs.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["oidc';please",{"_index":1285,"title":{},"body":{"index.html":{}}}],["oidc.module.ts",{"_index":572,"title":{},"body":{"modules/OAuthModule.html":{}}}],["oidc.module.ts:30",{"_index":577,"title":{},"body":{"modules/OAuthModule.html":{}}}],["oidc.umd.js",{"_index":1725,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["oidc/docs",{"_index":1056,"title":{},"body":{"index.html":{}}}],["oidc/docs/additional",{"_index":1262,"title":{},"body":{"index.html":{}}}],["oidc/issues/728#issuecomment",{"_index":701,"title":{},"body":{"changelog.html":{}}}],["oidc/pull/1020",{"_index":781,"title":{},"body":{"changelog.html":{}}}],["oidc/pull/919",{"_index":758,"title":{},"body":{"changelog.html":{}}}],["oidc/pull/935",{"_index":761,"title":{},"body":{"changelog.html":{}}}],["oidc/pull/936",{"_index":766,"title":{},"body":{"changelog.html":{}}}],["oidc/pull/938",{"_index":769,"title":{},"body":{"changelog.html":{}}}],["oidc/pull/965",{"_index":778,"title":{},"body":{"changelog.html":{}}}],["oidcdiscoverydoc",{"_index":474,"title":{"interfaces/OidcDiscoveryDoc.html":{}},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["ok",{"_index":1497,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["okta",{"_index":1091,"title":{},"body":{"index.html":{}}}],["older",{"_index":1098,"title":{},"body":{"index.html":{},"additional-documentation/original-config-api.html":{}}}],["one",{"_index":279,"title":{},"body":{"classes/JwksValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["online",{"_index":1302,"title":{},"body":{"index.html":{}}}],["onloginerror",{"_index":334,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["ontokenreceived",{"_index":335,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/preserving-state-(like-the-requested-url).html":{},"additional-documentation/callback-after-login.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["open",{"_index":1846,"title":{},"body":{"additional-documentation/authorization-servers/auth0.html":{}}}],["opened",{"_index":744,"title":{},"body":{"changelog.html":{}}}],["opener",{"_index":1477,"title":{},"body":{"additional-documentation/silent-refresh.html":{},"additional-documentation/popup-based-login.html":{}}}],["openid",{"_index":471,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/events.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["opens",{"_index":742,"title":{},"body":{"changelog.html":{}}}],["opht1tkt9e9fvqtzpbvf1thvhjrxvyvx",{"_index":1852,"title":{},"body":{"additional-documentation/authorization-servers/auth0.html":{}}}],["option",{"_index":771,"title":{},"body":{"changelog.html":{},"additional-documentation/session-checks.html":{}}}],["optional",{"_index":41,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"injectables/DefaultHashHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/HashHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerConfig.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/OAuthStorage.html":{},"classes/OAuthSuccessEvent.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"injectables/UrlHelperService.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"changelog.html":{},"miscellaneous/functions.html":{},"additional-documentation/preserving-state-(like-the-requested-url).html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["optionalparams",{"_index":425,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["options",{"_index":327,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"additional-documentation/events.html":{}}}],["orig",{"_index":179,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["original",{"_index":1392,"title":{"additional-documentation/original-config-api.html":{}},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{}}}],["originally",{"_index":1731,"title":{},"body":{"additional-documentation/using-implicit-flow.html":{}}}],["otherparam",{"_index":1576,"title":{},"body":{"additional-documentation/custom-query-parameters.html":{}}}],["otherwise",{"_index":1269,"title":{},"body":{"index.html":{},"license.html":{}}}],["out",{"_index":1152,"title":{},"body":{"index.html":{},"license.html":{},"overview.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["output",{"_index":859,"title":{},"body":{"changelog.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/callback-after-login.html":{}}}],["outside",{"_index":927,"title":{},"body":{"changelog.html":{}}}],["over",{"_index":1410,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{}}}],["override",{"_index":19,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["overview",{"_index":1370,"title":{"overview.html":{}},"body":{"overview.html":{}}}],["owner",{"_index":1768,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["package",{"_index":985,"title":{"dependencies.html":{}},"body":{}}],["package.json",{"_index":788,"title":{},"body":{"changelog.html":{}}}],["packages",{"_index":1634,"title":{},"body":{"additional-documentation/adapt-id_token-validation.html":{}}}],["paddedhexcode",{"_index":190,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["page",{"_index":317,"title":{"additional-documentation/getting-started.html":{},"additional-documentation/preserving-state-(like-the-requested-url).html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/callback-after-login.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/custom-query-parameters.html":{},"additional-documentation/events.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/server-side-rendering.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-systemjs.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/manually-skipping-login-form.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers.html":{},"additional-documentation/authorization-servers/using-identity-server.html":{},"additional-documentation/authorization-servers/using-keycloak.html":{},"additional-documentation/authorization-servers/auth0.html":{},"additional-documentation/authorization-servers/azure-ad-(active-directory).html":{}},"body":{"classes/JwksValidationHandler.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/manually-skipping-login-form.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["pair",{"_index":655,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["pairs",{"_index":654,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["param",{"_index":104,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["parameter",{"_index":950,"title":{},"body":{"changelog.html":{},"additional-documentation/custom-query-parameters.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["parameters",{"_index":37,"title":{"additional-documentation/custom-query-parameters.html":{}},"body":{"classes/AbstractValidationHandler.html":{},"injectables/DefaultHashHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/HashHandler.html":{},"classes/JwksValidationHandler.html":{},"injectables/MemoryStorage.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/OAuthStorage.html":{},"classes/OAuthSuccessEvent.html":{},"injectables/UrlHelperService.html":{},"classes/ValidationHandler.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"changelog.html":{},"miscellaneous/functions.html":{},"additional-documentation/custom-query-parameters.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["params",{"_index":64,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"classes/OAuthSuccessEvent.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["params.idtokenclaims['at_hash'].replace(/=/g",{"_index":100,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["parent",{"_index":1474,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["parse",{"_index":1693,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{}}}],["parsed",{"_index":54,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["parsedidtoken",{"_index":451,"title":{"interfaces/ParsedIdToken.html":{}},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["parsequerystring",{"_index":641,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["parsequerystring(querystring",{"_index":644,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["particular",{"_index":1352,"title":{},"body":{"license.html":{}}}],["pass",{"_index":345,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"additional-documentation/preserving-state-(like-the-requested-url).html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["passed",{"_index":34,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"index.html":{}}}],["passes",{"_index":1527,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["passing",{"_index":918,"title":{},"body":{"changelog.html":{}}}],["password",{"_index":1139,"title":{"additional-documentation/using-password-flow.html":{}},"body":{"index.html":{},"additional-documentation/using-password-flow.html":{}}}],["passwords",{"_index":668,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["path",{"_index":1267,"title":{},"body":{"index.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["pathlocationstrategy",{"_index":1066,"title":{},"body":{"index.html":{}}}],["perform",{"_index":1493,"title":{},"body":{"additional-documentation/silent-refresh.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/session-checks.html":{}}}],["performs",{"_index":1619,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/session-checks.html":{}}}],["permission",{"_index":1313,"title":{},"body":{"license.html":{}}}],["permissions",{"_index":1208,"title":{},"body":{"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["permit",{"_index":1335,"title":{},"body":{"license.html":{}}}],["person",{"_index":1317,"title":{},"body":{"license.html":{}}}],["persons",{"_index":1336,"title":{},"body":{"license.html":{}}}],["perspective",{"_index":1755,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["phil",{"_index":975,"title":{},"body":{"changelog.html":{}}}],["pingone",{"_index":1705,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["pipe",{"_index":264,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["pipe(catcherror((err",{"_index":251,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["pkce",{"_index":1135,"title":{},"body":{"index.html":{}}}],["plan",{"_index":1113,"title":{},"body":{"index.html":{}}}],["please",{"_index":295,"title":{},"body":{"classes/JwksValidationHandler.html":{},"changelog.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/getting-started.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["pls",{"_index":888,"title":{},"body":{"changelog.html":{}}}],["plus",{"_index":727,"title":{},"body":{"changelog.html":{}}}],["pmccloghrylaing",{"_index":951,"title":{},"body":{"changelog.html":{}}}],["popperjs/core",{"_index":996,"title":{},"body":{"dependencies.html":{}}}],["popup",{"_index":347,"title":{"additional-documentation/popup-based-login.html":{}},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/popup-based-login.html":{}}}],["popup_blocked",{"_index":550,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["popup_closed",{"_index":549,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["portions",{"_index":1343,"title":{},"body":{"license.html":{}}}],["possible",{"_index":1762,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["post",{"_index":1087,"title":{},"body":{"index.html":{},"additional-documentation/server-side-rendering.html":{},"additional-documentation/authorization-servers/azure-ad-(active-directory).html":{}}}],["postlogoutredirecturi",{"_index":749,"title":{},"body":{"changelog.html":{}}}],["ppanthony",{"_index":1723,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["practice",{"_index":381,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/using-implicit-flow.html":{}}}],["practices",{"_index":1204,"title":{},"body":{"index.html":{}}}],["predefined",{"_index":959,"title":{},"body":{"changelog.html":{}}}],["prefixes",{"_index":1256,"title":{},"body":{"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["prepared",{"_index":1040,"title":{},"body":{"index.html":{}}}],["present",{"_index":357,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{}}}],["preserving",{"_index":1385,"title":{"additional-documentation/preserving-state-(like-the-requested-url).html":{}},"body":{"additional-documentation/preserving-state-(like-the-requested-url).html":{}}}],["prevent",{"_index":773,"title":{},"body":{"changelog.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["preventclearhashafterlogin",{"_index":336,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["prevents",{"_index":1501,"title":{},"body":{"additional-documentation/silent-refresh.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["previously",{"_index":1820,"title":{},"body":{"additional-documentation/manually-skipping-login-form.html":{}}}],["private",{"_index":234,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/using-implicit-flow.html":{}}}],["production",{"_index":376,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["profile",{"_index":1217,"title":{},"body":{"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["progressing",{"_index":1823,"title":{},"body":{"additional-documentation/manually-skipping-login-form.html":{}}}],["project",{"_index":864,"title":{},"body":{"changelog.html":{}}}],["project's",{"_index":1678,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{}}}],["projects/.../base64",{"_index":1027,"title":{},"body":{"miscellaneous/functions.html":{}}}],["projects/.../events.ts",{"_index":1376,"title":{},"body":{"miscellaneous/typealiases.html":{}}}],["projects/.../factories.ts",{"_index":1029,"title":{},"body":{"miscellaneous/functions.html":{}}}],["projects/.../hash",{"_index":1031,"title":{},"body":{"miscellaneous/functions.html":{},"miscellaneous/variables.html":{}}}],["projects/.../jwks",{"_index":1380,"title":{},"body":{"miscellaneous/variables.html":{}}}],["projects/.../tokens.ts",{"_index":1379,"title":{},"body":{"miscellaneous/variables.html":{}}}],["projects/lib/src/angular",{"_index":571,"title":{},"body":{"modules/OAuthModule.html":{}}}],["projects/lib/src/base64",{"_index":1033,"title":{},"body":{"miscellaneous/functions.html":{}}}],["projects/lib/src/date",{"_index":118,"title":{},"body":{"classes/DateTimeProvider.html":{},"injectables/SystemDateTimeProvider.html":{}}}],["projects/lib/src/encoder.ts",{"_index":665,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["projects/lib/src/encoder.ts:10",{"_index":683,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["projects/lib/src/encoder.ts:14",{"_index":675,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["projects/lib/src/encoder.ts:18",{"_index":678,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["projects/lib/src/encoder.ts:6",{"_index":681,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["projects/lib/src/events.ts",{"_index":522,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["projects/lib/src/events.ts:28",{"_index":557,"title":{},"body":{"classes/OAuthEvent.html":{}}}],["projects/lib/src/events.ts:32",{"_index":630,"title":{},"body":{"classes/OAuthSuccessEvent.html":{}}}],["projects/lib/src/events.ts:38",{"_index":558,"title":{},"body":{"classes/OAuthInfoEvent.html":{}}}],["projects/lib/src/events.ts:44",{"_index":527,"title":{},"body":{"classes/OAuthErrorEvent.html":{}}}],["projects/lib/src/factories.ts",{"_index":1037,"title":{},"body":{"miscellaneous/functions.html":{}}}],["projects/lib/src/interceptors/default",{"_index":197,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["projects/lib/src/interceptors/resource",{"_index":617,"title":{},"body":{"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{}}}],["projects/lib/src/oauth",{"_index":603,"title":{},"body":{"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{}}}],["projects/lib/src/token",{"_index":6,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/NullValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"miscellaneous/functions.html":{},"miscellaneous/variables.html":{}}}],["projects/lib/src/tokens.ts",{"_index":1381,"title":{},"body":{"miscellaneous/variables.html":{}}}],["projects/lib/src/types.ts",{"_index":325,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["projects/lib/src/types.ts:100",{"_index":629,"title":{},"body":{"classes/OAuthStorage.html":{}}}],["projects/lib/src/types.ts:107",{"_index":508,"title":{},"body":{"injectables/MemoryStorage.html":{}}}],["projects/lib/src/types.ts:111",{"_index":509,"title":{},"body":{"injectables/MemoryStorage.html":{}}}],["projects/lib/src/types.ts:115",{"_index":510,"title":{},"body":{"injectables/MemoryStorage.html":{}}}],["projects/lib/src/types.ts:125",{"_index":634,"title":{},"body":{"classes/ReceivedTokens.html":{}}}],["projects/lib/src/types.ts:126",{"_index":632,"title":{},"body":{"classes/ReceivedTokens.html":{}}}],["projects/lib/src/types.ts:127",{"_index":633,"title":{},"body":{"classes/ReceivedTokens.html":{}}}],["projects/lib/src/types.ts:128",{"_index":635,"title":{},"body":{"classes/ReceivedTokens.html":{}}}],["projects/lib/src/types.ts:13",{"_index":395,"title":{},"body":{"classes/LoginOptions.html":{}}}],["projects/lib/src/types.ts:162",{"_index":661,"title":{},"body":{"interfaces/UserInfo.html":{}}}],["projects/lib/src/types.ts:20",{"_index":410,"title":{},"body":{"classes/LoginOptions.html":{}}}],["projects/lib/src/types.ts:28",{"_index":386,"title":{},"body":{"classes/LoginOptions.html":{}}}],["projects/lib/src/types.ts:40",{"_index":337,"title":{},"body":{"classes/LoginOptions.html":{}}}],["projects/lib/src/types.ts:50",{"_index":378,"title":{},"body":{"classes/LoginOptions.html":{}}}],["projects/lib/src/types.ts:59",{"_index":367,"title":{},"body":{"classes/LoginOptions.html":{}}}],["projects/lib/src/types.ts:67",{"_index":398,"title":{},"body":{"classes/LoginOptions.html":{}}}],["projects/lib/src/types.ts:74",{"_index":359,"title":{},"body":{"classes/LoginOptions.html":{}}}],["projects/lib/src/types.ts:84",{"_index":562,"title":{},"body":{"classes/OAuthLogger.html":{}}}],["projects/lib/src/types.ts:85",{"_index":565,"title":{},"body":{"classes/OAuthLogger.html":{}}}],["projects/lib/src/types.ts:86",{"_index":566,"title":{},"body":{"classes/OAuthLogger.html":{}}}],["projects/lib/src/types.ts:87",{"_index":567,"title":{},"body":{"classes/OAuthLogger.html":{}}}],["projects/lib/src/types.ts:88",{"_index":564,"title":{},"body":{"classes/OAuthLogger.html":{}}}],["projects/lib/src/types.ts:98",{"_index":627,"title":{},"body":{"classes/OAuthStorage.html":{}}}],["projects/lib/src/types.ts:99",{"_index":628,"title":{},"body":{"classes/OAuthStorage.html":{}}}],["projects/lib/src/url",{"_index":638,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["promise",{"_index":44,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["promise(resolve",{"_index":1826,"title":{},"body":{"additional-documentation/manually-skipping-login-form.html":{}}}],["promise.resolve",{"_index":1814,"title":{},"body":{"additional-documentation/manually-skipping-login-form.html":{}}}],["promise.resolve(null",{"_index":519,"title":{},"body":{"classes/NullValidationHandler.html":{}}}],["promise.resolve(true",{"_index":520,"title":{},"body":{"classes/NullValidationHandler.html":{}}}],["properties",{"_index":329,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"interfaces/ValidationParams.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["property",{"_index":393,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/custom-query-parameters.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-password-flow.html":{}}}],["proposes",{"_index":1394,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["protected",{"_index":23,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["provding",{"_index":1523,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["provide",{"_index":419,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["provided",{"_index":1058,"title":{},"body":{"index.html":{},"license.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["provider",{"_index":580,"title":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}},"body":{"modules/OAuthModule.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/original-config-api.html":{}}}],["provider.ts",{"_index":120,"title":{},"body":{"classes/DateTimeProvider.html":{},"injectables/SystemDateTimeProvider.html":{}}}],["provider.ts:4",{"_index":124,"title":{},"body":{"classes/DateTimeProvider.html":{}}}],["provider.ts:5",{"_index":122,"title":{},"body":{"classes/DateTimeProvider.html":{}}}],["providers",{"_index":598,"title":{},"body":{"modules/OAuthModule.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["provides",{"_index":1536,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/using-password-flow.html":{}}}],["providing",{"_index":1787,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["prs",{"_index":1117,"title":{},"body":{"index.html":{}}}],["public",{"_index":84,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"injectables/UrlHelperService.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/using-implicit-flow.html":{}}}],["publish",{"_index":1329,"title":{},"body":{"license.html":{}}}],["published",{"_index":1599,"title":{},"body":{"additional-documentation/events.html":{}}}],["publishes",{"_index":1580,"title":{},"body":{"additional-documentation/events.html":{}}}],["pull",{"_index":943,"title":{},"body":{"changelog.html":{},"index.html":{}}}],["purpose",{"_index":1353,"title":{},"body":{"license.html":{},"additional-documentation/callback-after-login.html":{}}}],["put",{"_index":1520,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["pwa",{"_index":1306,"title":{},"body":{"index.html":{}}}],["query",{"_index":408,"title":{"additional-documentation/custom-query-parameters.html":{}},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/custom-query-parameters.html":{}}}],["querying",{"_index":1145,"title":{},"body":{"index.html":{}}}],["querystring",{"_index":354,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"injectables/UrlHelperService.html":{},"interfaces/UserInfo.html":{},"changelog.html":{}}}],["querystring.split",{"_index":659,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["question",{"_index":355,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/session-checks.html":{}}}],["questionmarkposition",{"_index":649,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["quite",{"_index":1765,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["read",{"_index":296,"title":{},"body":{"classes/JwksValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"miscellaneous/variables.html":{},"additional-documentation/preserving-state-(like-the-requested-url).html":{}}}],["reading",{"_index":1621,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["readme",{"_index":1227,"title":{},"body":{"index.html":{},"additional-documentation/getting-started.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["readonly",{"_index":554,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{}}}],["ready",{"_index":791,"title":{},"body":{"changelog.html":{}}}],["real",{"_index":278,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["reason",{"_index":526,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{}}}],["receive",{"_index":760,"title":{},"body":{"changelog.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/session-checks.html":{}}}],["received",{"_index":62,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/callback-after-login.html":{},"additional-documentation/events.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["receivedtokens",{"_index":413,"title":{"classes/ReceivedTokens.html":{}},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["receives",{"_index":1817,"title":{},"body":{"additional-documentation/manually-skipping-login-form.html":{}}}],["receiving",{"_index":1837,"title":{},"body":{"additional-documentation/original-config-api.html":{}}}],["recommend",{"_index":1085,"title":{},"body":{"index.html":{},"additional-documentation/authorization-servers/azure-ad-(active-directory).html":{}}}],["recommended",{"_index":1273,"title":{},"body":{"index.html":{}}}],["recommented",{"_index":315,"title":{},"body":{"classes/JwksValidationHandler.html":{},"miscellaneous/variables.html":{}}}],["redhat",{"_index":1049,"title":{},"body":{"index.html":{}}}],["redhat's",{"_index":1075,"title":{},"body":{"index.html":{}}}],["redirect",{"_index":360,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["redirected",{"_index":1138,"title":{},"body":{"index.html":{}}}],["redirecting",{"_index":1153,"title":{},"body":{"index.html":{}}}],["redirects",{"_index":1249,"title":{},"body":{"index.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{}}}],["redirecturi",{"_index":750,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["redirecturis",{"_index":1168,"title":{},"body":{"index.html":{}}}],["refactor",{"_index":810,"title":{},"body":{"changelog.html":{}}}],["refresh",{"_index":364,"title":{"additional-documentation/silent-refresh.html":{}},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/events.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["refresh.html",{"_index":946,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/session-checks.html":{}}}],["refresh.html\";please",{"_index":1451,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["refresh_token",{"_index":464,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{}}}],["refresh_tokens",{"_index":1399,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["refreshed",{"_index":1611,"title":{},"body":{"additional-documentation/events.html":{}}}],["refreshes",{"_index":344,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["refreshing",{"_index":1142,"title":{"additional-documentation/refreshing-a-token.html":{}},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["refreshtoken",{"_index":1402,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["regarding",{"_index":1148,"title":{},"body":{"index.html":{},"additional-documentation/using-systemjs.html":{}}}],["regards",{"_index":1280,"title":{},"body":{"index.html":{}}}],["regfesh.html",{"_index":1561,"title":{},"body":{"additional-documentation/popup-based-login.html":{}}}],["register",{"_index":1655,"title":{},"body":{"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{}}}],["registerd",{"_index":1195,"title":{},"body":{"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/original-config-api.html":{}}}],["registered",{"_index":612,"title":{},"body":{"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{},"additional-documentation/using-implicit-flow.html":{}}}],["registration_endpoint",{"_index":484,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["related",{"_index":1513,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/original-config-api.html":{}}}],["relations",{"_index":1760,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["release",{"_index":1111,"title":{},"body":{"index.html":{}}}],["removal",{"_index":716,"title":{},"body":{"changelog.html":{}}}],["remove",{"_index":813,"title":{},"body":{"changelog.html":{},"index.html":{}}}],["removed",{"_index":1292,"title":{},"body":{"index.html":{}}}],["removeitem",{"_index":506,"title":{},"body":{"injectables/MemoryStorage.html":{},"classes/OAuthStorage.html":{}}}],["removeitem(key",{"_index":441,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["removing",{"_index":407,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["rendering",{"_index":1671,"title":{"additional-documentation/server-side-rendering.html":{}},"body":{"additional-documentation/server-side-rendering.html":{}}}],["replace",{"_index":955,"title":{},"body":{"changelog.html":{}}}],["replaced",{"_index":840,"title":{},"body":{"changelog.html":{}}}],["replacements",{"_index":709,"title":{},"body":{"changelog.html":{}}}],["replay",{"_index":372,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["represents",{"_index":447,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["req",{"_index":213,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["req.clone",{"_index":270,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["req.headers",{"_index":1546,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["req.headers.set('authorization",{"_index":269,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["req.url.tolowercase",{"_index":243,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["request",{"_index":1209,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["request_object_signing_alg_values_supported",{"_index":497,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["requested",{"_index":1386,"title":{"additional-documentation/preserving-state-(like-the-requested-url).html":{}},"body":{"additional-documentation/preserving-state-(like-the-requested-url).html":{},"additional-documentation/callback-after-login.html":{},"additional-documentation/events.html":{},"additional-documentation/using-password-flow.html":{}}}],["requests",{"_index":944,"title":{},"body":{"changelog.html":{},"index.html":{}}}],["require','jsrsasign",{"_index":1730,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["requirements",{"_index":1397,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["reset",{"_index":1372,"title":{},"body":{"overview.html":{}}}],["resolve",{"_index":1824,"title":{},"body":{"additional-documentation/manually-skipping-login-form.html":{}}}],["resolve(true",{"_index":1828,"title":{},"body":{"additional-documentation/manually-skipping-login-form.html":{}}}],["resolves",{"_index":1607,"title":{},"body":{"additional-documentation/events.html":{}}}],["resource",{"_index":227,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/using-password-flow.html":{}}}],["resources",{"_index":1052,"title":{},"body":{"index.html":{}}}],["resourceserver",{"_index":605,"title":{},"body":{"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{},"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["resourceservererrorhandler",{"_index":611,"title":{},"body":{"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{}}}],["respect",{"_index":1400,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/authorization-servers.html":{}}}],["respective",{"_index":1079,"title":{},"body":{"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["respond",{"_index":1438,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["response",{"_index":455,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"additional-documentation/silent-refresh.html":{}}}],["response_modes_supported",{"_index":488,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["response_types",{"_index":844,"title":{},"body":{"changelog.html":{}}}],["response_types_supported",{"_index":486,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["responsetype",{"_index":826,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["restriction",{"_index":1325,"title":{},"body":{"license.html":{}}}],["result",{"_index":114,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/DateTimeProvider.html":{},"injectables/DefaultHashHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/HashHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthModuleConfig.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerConfig.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/OAuthStorage.html":{},"classes/OAuthSuccessEvent.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"injectables/SystemDateTimeProvider.html":{},"interfaces/TokenResponse.html":{},"injectables/UrlHelperService.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"changelog.html":{},"dependencies.html":{},"miscellaneous/functions.html":{},"index.html":{},"license.html":{},"modules.html":{},"overview.html":{},"miscellaneous/typealiases.html":{},"miscellaneous/variables.html":{},"additional-documentation/getting-started.html":{},"additional-documentation/preserving-state-(like-the-requested-url).html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/callback-after-login.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/custom-query-parameters.html":{},"additional-documentation/events.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/server-side-rendering.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-systemjs.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/manually-skipping-login-form.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers.html":{},"additional-documentation/authorization-servers/using-identity-server.html":{},"additional-documentation/authorization-servers/using-keycloak.html":{},"additional-documentation/authorization-servers/auth0.html":{},"additional-documentation/authorization-servers/azure-ad-(active-directory).html":{}}}],["results",{"_index":116,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/DateTimeProvider.html":{},"injectables/DefaultHashHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/HashHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthModuleConfig.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerConfig.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/OAuthStorage.html":{},"classes/OAuthSuccessEvent.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"injectables/SystemDateTimeProvider.html":{},"interfaces/TokenResponse.html":{},"injectables/UrlHelperService.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"changelog.html":{},"dependencies.html":{},"miscellaneous/functions.html":{},"index.html":{},"license.html":{},"modules.html":{},"overview.html":{},"miscellaneous/typealiases.html":{},"miscellaneous/variables.html":{},"additional-documentation/getting-started.html":{},"additional-documentation/preserving-state-(like-the-requested-url).html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/callback-after-login.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/custom-query-parameters.html":{},"additional-documentation/events.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/server-side-rendering.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-systemjs.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/manually-skipping-login-form.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers.html":{},"additional-documentation/authorization-servers/using-identity-server.html":{},"additional-documentation/authorization-servers/using-keycloak.html":{},"additional-documentation/authorization-servers/auth0.html":{},"additional-documentation/authorization-servers/azure-ad-(active-directory).html":{}}}],["retrieved",{"_index":1601,"title":{},"body":{"additional-documentation/events.html":{}}}],["retrieving",{"_index":362,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["return",{"_index":103,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/DateTimeProvider.html":{},"injectables/DefaultHashHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/HashHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"injectables/SystemDateTimeProvider.html":{},"interfaces/TokenResponse.html":{},"injectables/UrlHelperService.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["returned",{"_index":1470,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["returns",{"_index":43,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/DateTimeProvider.html":{},"injectables/DefaultHashHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/HashHandler.html":{},"classes/JwksValidationHandler.html":{},"injectables/MemoryStorage.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/OAuthStorage.html":{},"injectables/SystemDateTimeProvider.html":{},"injectables/UrlHelperService.html":{},"classes/ValidationHandler.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"miscellaneous/functions.html":{},"additional-documentation/using-password-flow.html":{}}}],["returnto",{"_index":1860,"title":{},"body":{"additional-documentation/authorization-servers/auth0.html":{}}}],["reverse",{"_index":1293,"title":{},"body":{"index.html":{}}}],["revocation",{"_index":892,"title":{},"body":{"changelog.html":{},"index.html":{}}}],["revocation_endpoint",{"_index":504,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["revocationendpoint",{"_index":780,"title":{},"body":{"changelog.html":{}}}],["revoke",{"_index":893,"title":{},"body":{"changelog.html":{},"index.html":{}}}],["revoketokenandlogout",{"_index":733,"title":{},"body":{"changelog.html":{}}}],["rfc",{"_index":939,"title":{},"body":{"changelog.html":{},"index.html":{}}}],["rights",{"_index":1327,"title":{},"body":{"license.html":{}}}],["risk",{"_index":516,"title":{},"body":{"classes/NullValidationHandler.html":{}}}],["robin",{"_index":978,"title":{},"body":{"changelog.html":{}}}],["roblabat",{"_index":954,"title":{},"body":{"changelog.html":{}}}],["root",{"_index":1623,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["rotation",{"_index":1848,"title":{},"body":{"additional-documentation/authorization-servers/auth0.html":{}}}],["route",{"_index":1266,"title":{},"body":{"index.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["router",{"_index":1065,"title":{},"body":{"index.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["routermodule.forroot(app_routes",{"_index":1625,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["routes",{"_index":1622,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["routing",{"_index":914,"title":{"additional-documentation/routing-with-the-hashstrategy.html":{}},"body":{"changelog.html":{},"index.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["run",{"_index":925,"title":{},"body":{"changelog.html":{},"index.html":{}}}],["running",{"_index":833,"title":{},"body":{"changelog.html":{}}}],["runs",{"_index":1160,"title":{},"body":{"index.html":{},"additional-documentation/using-password-flow.html":{}}}],["rxjs",{"_index":219,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"dependencies.html":{}}}],["rxjs/add/operator/catch",{"_index":1540,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["rxjs/observable",{"_index":1539,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["rxjs/operators",{"_index":226,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["s",{"_index":157,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{},"miscellaneous/functions.html":{}}}],["safe",{"_index":1137,"title":{},"body":{"index.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["sake",{"_index":1830,"title":{},"body":{"additional-documentation/original-config-api.html":{}}}],["same",{"_index":349,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["sample",{"_index":879,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/server-side-rendering.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["save",{"_index":308,"title":{},"body":{"classes/JwksValidationHandler.html":{},"changelog.html":{},"miscellaneous/variables.html":{}}}],["saveafter",{"_index":1283,"title":{},"body":{"index.html":{}}}],["saved",{"_index":1602,"title":{},"body":{"additional-documentation/events.html":{}}}],["saveimporting",{"_index":1174,"title":{},"body":{"index.html":{}}}],["scenario",{"_index":1839,"title":{},"body":{"additional-documentation/original-config-api.html":{}}}],["scope",{"_index":465,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["scope/state",{"_index":715,"title":{},"body":{"changelog.html":{}}}],["scopes_supported",{"_index":485,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["script",{"_index":947,"title":{},"body":{"changelog.html":{}}}],["search",{"_index":1462,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["seconds",{"_index":1508,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["secret",{"_index":1199,"title":{},"body":{"index.html":{},"additional-documentation/using-password-flow.html":{}}}],["section",{"_index":1270,"title":{},"body":{"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{}}}],["security",{"_index":382,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/popup-based-login.html":{}}}],["see",{"_index":866,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/events.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/manually-skipping-login-form.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["selector",{"_index":1736,"title":{},"body":{"additional-documentation/using-implicit-flow.html":{}}}],["sell",{"_index":1333,"title":{},"body":{"license.html":{}}}],["semantic",{"_index":1009,"title":{},"body":{"dependencies.html":{}}}],["send",{"_index":613,"title":{},"body":{"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{}}}],["sendaccesstoken",{"_index":248,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{},"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["sending",{"_index":731,"title":{},"body":{"changelog.html":{}}}],["sends",{"_index":1654,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["sense",{"_index":904,"title":{},"body":{"changelog.html":{},"additional-documentation/using-password-flow.html":{}}}],["separatorindex",{"_index":656,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["server",{"_index":228,"title":{"additional-documentation/server-side-rendering.html":{},"additional-documentation/authorization-servers/using-identity-server.html":{}},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/server-side-rendering.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/manually-skipping-login-form.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers/using-identity-server.html":{}}}],["server's",{"_index":1154,"title":{},"body":{"index.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{}}}],["server.azurewebsites.net/identity",{"_index":1444,"title":{},"body":{"additional-documentation/silent-refresh.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["server.azurewebsites.net/identity/.well",{"_index":1777,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["server.azurewebsites.net/identity/connect/authorize",{"_index":1682,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{}}}],["server.azurewebsites.net/identity/connect/endsession",{"_index":1691,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{}}}],["server.azurewebsites.net/identity/connect/token",{"_index":1781,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["server.azurewebsites.net/identity/connect/userinfo",{"_index":1785,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["server.code",{"_index":1197,"title":{},"body":{"index.html":{}}}],["servers",{"_index":1236,"title":{"additional-documentation/authorization-servers.html":{}},"body":{"index.html":{},"additional-documentation/authorization-servers.html":{}}}],["service",{"_index":233,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"modules/OAuthModule.html":{},"changelog.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/events.html":{}}}],["service_documentation",{"_index":502,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["session",{"_index":765,"title":{"additional-documentation/session-checks.html":{}},"body":{"changelog.html":{},"additional-documentation/events.html":{},"additional-documentation/session-checks.html":{}}}],["session's",{"_index":1662,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["session_changed",{"_index":544,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["session_error",{"_index":545,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{},"additional-documentation/events.html":{}}}],["session_state",{"_index":916,"title":{},"body":{"changelog.html":{}}}],["session_terminated",{"_index":546,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{},"additional-documentation/session-checks.html":{}}}],["session_terminated')).subscribe(e",{"_index":1668,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["session_unchanged",{"_index":547,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["sessionchecksenabled",{"_index":1658,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["sessionstorage",{"_index":436,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"index.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["set",{"_index":351,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/custom-query-parameters.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["set('authorization",{"_index":1547,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["setitem",{"_index":507,"title":{},"body":{"injectables/MemoryStorage.html":{},"classes/OAuthStorage.html":{}}}],["setitem(key",{"_index":442,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["sets",{"_index":1566,"title":{},"body":{"additional-documentation/popup-based-login.html":{}}}],["setstorage",{"_index":1686,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{}}}],["setting",{"_index":876,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["settings",{"_index":1568,"title":{},"body":{"additional-documentation/popup-based-login.html":{},"additional-documentation/authorization-servers.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["setup",{"_index":1261,"title":{},"body":{"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["several",{"_index":1701,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["sha",{"_index":112,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"changelog.html":{}}}],["sha256",{"_index":146,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{},"changelog.html":{},"dependencies.html":{},"miscellaneous/variables.html":{}}}],["sha256(accesstoken",{"_index":90,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["shaking",{"_index":1282,"title":{},"body":{"index.html":{}}}],["shall",{"_index":1341,"title":{},"body":{"license.html":{}}}],["share",{"_index":1699,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["sharing",{"_index":1724,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["ship",{"_index":1761,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["short",{"_index":1584,"title":{},"body":{"additional-documentation/events.html":{},"additional-documentation/using-password-flow.html":{}}}],["showdebuginformation",{"_index":1219,"title":{},"body":{"index.html":{}}}],["shown",{"_index":1226,"title":{},"body":{"index.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/authorization-servers/using-identity-server.html":{},"additional-documentation/authorization-servers/using-keycloak.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["shows",{"_index":1525,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/server-side-rendering.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/authorization-servers.html":{}}}],["side",{"_index":434,"title":{"additional-documentation/server-side-rendering.html":{}},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"index.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/server-side-rendering.html":{}}}],["sign",{"_index":728,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["signature",{"_index":67,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"index.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["signs",{"_index":1645,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["silent",{"_index":343,"title":{"additional-documentation/silent-refresh.html":{}},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/events.html":{},"additional-documentation/session-checks.html":{}}}],["silent_refresh_error",{"_index":539,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["silent_refresh_timeout",{"_index":541,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{},"additional-documentation/events.html":{}}}],["silently_refreshed",{"_index":540,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{},"additional-documentation/events.html":{}}}],["silentrefresh",{"_index":1494,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["silentrefreshredirecturi",{"_index":1441,"title":{},"body":{"additional-documentation/silent-refresh.html":{},"additional-documentation/session-checks.html":{}}}],["silentrefreshtimeout",{"_index":1505,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["similar",{"_index":1766,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["simple",{"_index":430,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/silent-refresh.html":{}}}],["single",{"_index":316,"title":{},"body":{"classes/JwksValidationHandler.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-implicit-flow.html":{}}}],["site",{"_index":883,"title":{},"body":{"changelog.html":{},"index.html":{}}}],["size",{"_index":1110,"title":{},"body":{"index.html":{}}}],["sizes",{"_index":321,"title":{},"body":{"classes/JwksValidationHandler.html":{},"index.html":{},"miscellaneous/variables.html":{}}}],["skip",{"_index":515,"title":{},"body":{"classes/NullValidationHandler.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/using-password-flow.html":{}}}],["skipping",{"_index":1807,"title":{"additional-documentation/manually-skipping-login-form.html":{}},"body":{"additional-documentation/manually-skipping-login-form.html":{}}}],["skips",{"_index":1638,"title":{},"body":{"additional-documentation/adapt-id_token-validation.html":{}}}],["smaller",{"_index":319,"title":{},"body":{"classes/JwksValidationHandler.html":{},"index.html":{},"miscellaneous/variables.html":{}}}],["snippet",{"_index":1585,"title":{},"body":{"additional-documentation/events.html":{},"additional-documentation/using-implicit-flow.html":{}}}],["software",{"_index":1320,"title":{},"body":{"license.html":{}}}],["solution",{"_index":1188,"title":{},"body":{"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["something",{"_index":1816,"title":{},"body":{"additional-documentation/manually-skipping-login-form.html":{}}}],["somevalue",{"_index":1577,"title":{},"body":{"additional-documentation/custom-query-parameters.html":{}}}],["source",{"_index":4,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/DateTimeProvider.html":{},"injectables/DefaultHashHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/HashHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthModuleConfig.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerConfig.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/OAuthStorage.html":{},"classes/OAuthSuccessEvent.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"injectables/SystemDateTimeProvider.html":{},"interfaces/TokenResponse.html":{},"injectables/UrlHelperService.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"index.html":{}}}],["sources",{"_index":1053,"title":{},"body":{"index.html":{}}}],["spa",{"_index":1167,"title":{},"body":{"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["spa's",{"_index":1194,"title":{},"body":{"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["spas",{"_index":1201,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{}}}],["spec",{"_index":1605,"title":{},"body":{"additional-documentation/events.html":{},"additional-documentation/session-checks.html":{}}}],["special",{"_index":1844,"title":{},"body":{"additional-documentation/authorization-servers.html":{}}}],["specific",{"_index":1216,"title":{},"body":{"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["specification",{"_index":1709,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["specifies",{"_index":1395,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["specs",{"_index":1149,"title":{},"body":{"index.html":{},"additional-documentation/authorization-servers.html":{}}}],["src",{"_index":1128,"title":{},"body":{"index.html":{}}}],["standard",{"_index":867,"title":{},"body":{"changelog.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/using-password-flow.html":{}}}],["start",{"_index":1715,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["started",{"_index":689,"title":{"changelog.html":{},"index.html":{},"license.html":{},"additional-documentation/getting-started.html":{}},"body":{"additional-documentation/getting-started.html":{}}}],["starting",{"_index":1572,"title":{},"body":{"additional-documentation/custom-query-parameters.html":{}}}],["starts",{"_index":1734,"title":{},"body":{"additional-documentation/using-implicit-flow.html":{}}}],["startup",{"_index":1763,"title":{},"body":{"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["state",{"_index":379,"title":{"additional-documentation/preserving-state-(like-the-requested-url).html":{}},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"additional-documentation/preserving-state-(like-the-requested-url).html":{},"additional-documentation/events.html":{}}}],["static",{"_index":573,"title":{},"body":{"modules/OAuthModule.html":{}}}],["status",{"_index":1516,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["steyer",{"_index":974,"title":{},"body":{"changelog.html":{},"license.html":{}}}],["still",{"_index":1435,"title":{},"body":{"additional-documentation/silent-refresh.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["stopautomaticrefresh",{"_index":871,"title":{},"body":{"changelog.html":{}}}],["stops",{"_index":872,"title":{},"body":{"changelog.html":{}}}],["storage",{"_index":431,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["storagefactory",{"_index":1805,"title":{},"body":{"additional-documentation/configure-custom-oauthstorage.html":{}}}],["store",{"_index":1234,"title":{},"body":{"index.html":{}}}],["stored",{"_index":1608,"title":{},"body":{"additional-documentation/events.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["storing",{"_index":432,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["str",{"_index":1035,"title":{},"body":{"miscellaneous/functions.html":{},"additional-documentation/silent-refresh.html":{}}}],["strategy",{"_index":1423,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["stream",{"_index":1581,"title":{},"body":{"additional-documentation/events.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["strict",{"_index":1838,"title":{},"body":{"additional-documentation/original-config-api.html":{}}}],["strictdiscoverydocumentvalidation",{"_index":1696,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["string",{"_index":28,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"injectables/DefaultHashHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/HashHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"injectables/UrlHelperService.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"miscellaneous/functions.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/events.html":{}}}],["string.fromcharcode(e",{"_index":183,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["strong",{"_index":1758,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["sub",{"_index":469,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["subject",{"_index":1338,"title":{},"body":{"license.html":{}}}],["subject_types_supported",{"_index":490,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["sublicense",{"_index":1331,"title":{},"body":{"license.html":{}}}],["substantial",{"_index":1342,"title":{},"body":{"license.html":{}}}],["succeeded",{"_index":1388,"title":{},"body":{"additional-documentation/preserving-state-(like-the-requested-url).html":{}}}],["successful",{"_index":1550,"title":{},"body":{"additional-documentation/callback-after-login.html":{}}}],["successfully",{"_index":396,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"index.html":{},"additional-documentation/events.html":{}}}],["such",{"_index":1206,"title":{},"body":{"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/using-password-flow.html":{}}}],["sufficient",{"_index":1459,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["suited",{"_index":1757,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["summary.json",{"_index":1131,"title":{},"body":{"index.html":{}}}],["super",{"_index":322,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["super(type",{"_index":555,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{}}}],["support",{"_index":752,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/authorization-servers.html":{}}}],["supported",{"_index":111,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"index.html":{},"additional-documentation/original-config-api.html":{}}}],["supports",{"_index":1181,"title":{},"body":{"index.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/session-checks.html":{}}}],["sure",{"_index":1130,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/popup-based-login.html":{}}}],["switching",{"_index":1255,"title":{},"body":{"index.html":{}}}],["symbol",{"_index":352,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["system.config",{"_index":1720,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["systemdatetimeprovider",{"_index":128,"title":{"injectables/SystemDateTimeProvider.html":{}},"body":{"classes/DateTimeProvider.html":{},"modules/OAuthModule.html":{},"injectables/SystemDateTimeProvider.html":{}}}],["systemjs",{"_index":1716,"title":{"additional-documentation/using-systemjs.html":{}},"body":{"additional-documentation/using-systemjs.html":{}}}],["table",{"_index":816,"title":{},"body":{"changelog.html":{}}}],["take",{"_index":223,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/refreshing-a-token.html":{}}}],["take(1",{"_index":265,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["takes",{"_index":1461,"title":{},"body":{"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/events.html":{}}}],["targeting",{"_index":1562,"title":{},"body":{"additional-documentation/popup-based-login.html":{}}}],["task",{"_index":1254,"title":{},"body":{"index.html":{},"additional-documentation/silent-refresh.html":{}}}],["tasks",{"_index":1579,"title":{},"body":{"additional-documentation/events.html":{}}}],["telling",{"_index":276,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["tells",{"_index":1244,"title":{},"body":{"index.html":{}}}],["template",{"_index":1749,"title":{},"body":{"additional-documentation/using-implicit-flow.html":{}}}],["templateurl",{"_index":1738,"title":{},"body":{"additional-documentation/using-implicit-flow.html":{}}}],["tenant",{"_index":1574,"title":{},"body":{"additional-documentation/custom-query-parameters.html":{}}}],["terminated",{"_index":1670,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["tested",{"_index":1061,"title":{},"body":{"index.html":{}}}],["testen",{"_index":1753,"title":{},"body":{"additional-documentation/using-implicit-flow.html":{}}}],["testing",{"_index":1045,"title":{},"body":{"index.html":{}}}],["tests",{"_index":712,"title":{},"body":{"changelog.html":{}}}],["text",{"_index":1014,"title":{},"body":{"dependencies.html":{}}}],["textencoder",{"_index":165,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["thanks",{"_index":965,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/using-systemjs.html":{}}}],["that's",{"_index":1773,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["then(info",{"_index":1495,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["things",{"_index":1559,"title":{},"body":{"additional-documentation/popup-based-login.html":{}}}],["third",{"_index":1421,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{}}}],["this.authservice.events.subscribe(event",{"_index":1593,"title":{},"body":{"additional-documentation/events.html":{}}}],["this.authstorage.getitem('access_token",{"_index":1545,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["this.calchash(params.accesstoken",{"_index":89,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["this.checkurl(url",{"_index":246,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["this.configure",{"_index":1740,"title":{},"body":{"additional-documentation/using-implicit-flow.html":{}}}],["this.data.delete(key",{"_index":445,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["this.data.get(key",{"_index":444,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["this.data.set(key",{"_index":446,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["this.document",{"_index":841,"title":{},"body":{"changelog.html":{}}}],["this.errorhandler.handleerror(err",{"_index":252,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["this.inferhashalgorithm(params.idtokenheader",{"_index":86,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["this.moduleconfig",{"_index":244,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["this.moduleconfig.resourceserver",{"_index":245,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["this.moduleconfig.resourceserver.allowedurls",{"_index":239,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["this.moduleconfig.resourceserver.allowedurls.find((u",{"_index":240,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["this.moduleconfig.resourceserver.allowedurls.find(u",{"_index":1543,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["this.moduleconfig.resourceserver.customurlvalidation",{"_index":237,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["this.moduleconfig.resourceserver.customurlvalidation(url",{"_index":238,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["this.moduleconfig.resourceserver.sendaccesstoken",{"_index":249,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["this.oauthservice",{"_index":1811,"title":{},"body":{"additional-documentation/manually-skipping-login-form.html":{}}}],["this.oauthservice.clientid",{"_index":1684,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["this.oauthservice.configure(authcodeflowconfig",{"_index":1231,"title":{},"body":{"index.html":{}}}],["this.oauthservice.configure(authconfig",{"_index":1741,"title":{},"body":{"additional-documentation/using-implicit-flow.html":{}}}],["this.oauthservice.customqueryparams",{"_index":1573,"title":{},"body":{"additional-documentation/custom-query-parameters.html":{}}}],["this.oauthservice.dummyclientsecret",{"_index":1774,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["this.oauthservice.events(filter(e",{"_index":1818,"title":{},"body":{"additional-documentation/manually-skipping-login-form.html":{}}}],["this.oauthservice.events.pipe",{"_index":255,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["this.oauthservice.events.pipe(filter(e",{"_index":1667,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["this.oauthservice.events.subscribe(e",{"_index":1586,"title":{},"body":{"additional-documentation/events.html":{}}}],["this.oauthservice.fetchtokenusingpasswordflow('max",{"_index":1790,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["this.oauthservice.fetchtokenusingpasswordflowandloaduserprofile('max",{"_index":1795,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["this.oauthservice.getaccesstoken",{"_index":263,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["this.oauthservice.getidentityclaims",{"_index":1747,"title":{},"body":{"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{}}}],["this.oauthservice.hasvalidaccesstoken",{"_index":1821,"title":{},"body":{"additional-documentation/manually-skipping-login-form.html":{}}}],["this.oauthservice.hasvalididtoken",{"_index":1822,"title":{},"body":{"additional-documentation/manually-skipping-login-form.html":{}}}],["this.oauthservice.initcodeflow();there",{"_index":1221,"title":{},"body":{"index.html":{}}}],["this.oauthservice.initimplicitflow('http://www.myurl.com/x/y/z');after",{"_index":1387,"title":{},"body":{"additional-documentation/preserving-state-(like-the-requested-url).html":{}}}],["this.oauthservice.initloginflow",{"_index":1744,"title":{},"body":{"additional-documentation/using-implicit-flow.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["this.oauthservice.initloginflow();also",{"_index":1225,"title":{},"body":{"index.html":{}}}],["this.oauthservice.issuer",{"_index":1833,"title":{},"body":{"additional-documentation/original-config-api.html":{}}}],["this.oauthservice.loaddiscoverydocument().then",{"_index":1834,"title":{},"body":{"additional-documentation/original-config-api.html":{}}}],["this.oauthservice.loaddiscoverydocument(url).then",{"_index":1779,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["this.oauthservice.loaddiscoverydocumentandlogin",{"_index":1245,"title":{},"body":{"index.html":{}}}],["this.oauthservice.loaddiscoverydocumentandtrylogin",{"_index":1246,"title":{},"body":{"index.html":{},"additional-documentation/using-implicit-flow.html":{}}}],["this.oauthservice.loaddiscoverydocumentandtrylogin();logging",{"_index":1232,"title":{},"body":{"index.html":{}}}],["this.oauthservice.loaduserprofile",{"_index":1793,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["this.oauthservice.loginurl",{"_index":1681,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{}}}],["this.oauthservice.logout",{"_index":1746,"title":{},"body":{"additional-documentation/using-implicit-flow.html":{}}}],["this.oauthservice.logout();if",{"_index":1238,"title":{},"body":{"index.html":{}}}],["this.oauthservice.logouturl",{"_index":1690,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{}}}],["this.oauthservice.redirecturi",{"_index":1683,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["this.oauthservice.refreshtoken().then",{"_index":1799,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["this.oauthservice.refreshtoken();automatically",{"_index":1403,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["this.oauthservice.revoketokenandlogout",{"_index":1861,"title":{},"body":{"additional-documentation/authorization-servers/auth0.html":{}}}],["this.oauthservice.revoketokenandlogout();skipping",{"_index":1240,"title":{},"body":{"index.html":{}}}],["this.oauthservice.scope",{"_index":1685,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["this.oauthservice.setstorage(sessionstorage",{"_index":1688,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{}}}],["this.oauthservice.setupautomaticsilentrefresh();by",{"_index":1405,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{}}}],["this.oauthservice.silentrefreshredirecturi",{"_index":1450,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["this.oauthservice.tokenendpoint",{"_index":1780,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["this.oauthservice.tokenvalidationhandler",{"_index":1639,"title":{},"body":{"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/using-implicit-flow.html":{}}}],["this.oauthservice.trylogin",{"_index":1389,"title":{},"body":{"additional-documentation/preserving-state-(like-the-requested-url).html":{},"additional-documentation/callback-after-login.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{}}}],["this.oauthservice.trylogin().then(_",{"_index":1628,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["this.oauthservice.userinfoendpoint",{"_index":1784,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["this.parsequerystring(hash",{"_index":653,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["this.router.navigate",{"_index":1629,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["this.tohashstring(hasharray",{"_index":176,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["this.tohashstring2(hasharray",{"_index":177,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["this.window.addeventlistener('unload",{"_index":1827,"title":{},"body":{"additional-documentation/manually-skipping-login-form.html":{}}}],["those",{"_index":1401,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["three",{"_index":1446,"title":{},"body":{"additional-documentation/silent-refresh.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["through",{"_index":421,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["throw",{"_index":108,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["throwerror",{"_index":621,"title":{},"body":{"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{}}}],["throwerror(err",{"_index":622,"title":{},"body":{"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{}}}],["time",{"_index":119,"title":{},"body":{"classes/DateTimeProvider.html":{},"modules/OAuthModule.html":{},"injectables/SystemDateTimeProvider.html":{},"changelog.html":{},"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["timeout",{"_index":225,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/silent-refresh.html":{}}}],["timeout(this.oauthservice.waitfortokeninmsec",{"_index":259,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["timeoutfactor",{"_index":1413,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{}}}],["timer",{"_index":1609,"title":{},"body":{"additional-documentation/events.html":{}}}],["timers",{"_index":873,"title":{},"body":{"changelog.html":{},"dependencies.html":{}}}],["timespan",{"_index":1504,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["together",{"_index":1672,"title":{},"body":{"additional-documentation/server-side-rendering.html":{}}}],["tohashstring",{"_index":134,"title":{},"body":{"injectables/DefaultHashHandler.html":{}}}],["tohashstring(buffer",{"_index":137,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["tohashstring(hexstring",{"_index":193,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["tohashstring2",{"_index":135,"title":{},"body":{"injectables/DefaultHashHandler.html":{}}}],["tohashstring2(bytearray",{"_index":141,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["token",{"_index":254,"title":{"additional-documentation/refreshing-a-token.html":{}},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/events.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/manually-skipping-login-form.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["token's",{"_index":1408,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{}}}],["token(s",{"_index":403,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/events.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{}}}],["token.html",{"_index":1264,"title":{},"body":{"index.html":{}}}],["token_endpoint",{"_index":477,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["token_endpoint_auth_methods_supported",{"_index":478,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["token_endpoint_auth_signing_alg_values_supported",{"_index":479,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["token_error",{"_index":535,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["token_expires",{"_index":543,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["token_received",{"_index":258,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{},"additional-documentation/events.html":{}}}],["token_received')).subscribe",{"_index":1819,"title":{},"body":{"additional-documentation/manually-skipping-login-form.html":{}}}],["token_refresh_error",{"_index":538,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["token_refreshed",{"_index":537,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["token_revoke_error",{"_index":551,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["token_type",{"_index":462,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["token_validation_error",{"_index":542,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["tokenhash",{"_index":87,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["tokenhash.length",{"_index":95,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["tokenhash.substr(0",{"_index":94,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["tokenresponse",{"_index":461,"title":{"interfaces/TokenResponse.html":{}},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{}}}],["tokens",{"_index":83,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"changelog.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/events.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["tokensetup",{"_index":926,"title":{},"body":{"changelog.html":{}}}],["tokenvalidationhandler",{"_index":412,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["tokenvalidator",{"_index":1633,"title":{},"body":{"additional-documentation/adapt-id_token-validation.html":{}}}],["tort",{"_index":1364,"title":{},"body":{"license.html":{}}}],["transmit",{"_index":1770,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["transmitted",{"_index":1571,"title":{},"body":{"additional-documentation/custom-query-parameters.html":{}}}],["transmitting",{"_index":1511,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["tree",{"_index":1281,"title":{},"body":{"index.html":{}}}],["tries",{"_index":1692,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{}}}],["triggers",{"_index":1420,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{}}}],["true",{"_index":92,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"changelog.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["true);the",{"_index":1862,"title":{},"body":{"additional-documentation/authorization-servers/auth0.html":{}}}],["trust",{"_index":1759,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["try",{"_index":1106,"title":{},"body":{"index.html":{},"additional-documentation/callback-after-login.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/manually-skipping-login-form.html":{},"additional-documentation/original-config-api.html":{}}}],["trylogin",{"_index":328,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/events.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["trylogincodeflow",{"_index":953,"title":{},"body":{"changelog.html":{}}}],["ts",{"_index":1687,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{}}}],["tsickle",{"_index":1017,"title":{},"body":{"dependencies.html":{}}}],["tslib",{"_index":1019,"title":{},"body":{"dependencies.html":{}}}],["turn",{"_index":1714,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/original-config-api.html":{}}}],["tutorial",{"_index":1300,"title":{},"body":{"index.html":{}}}],["tutorials",{"_index":1299,"title":{},"body":{"index.html":{}}}],["two",{"_index":1558,"title":{},"body":{"additional-documentation/popup-based-login.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["type",{"_index":40,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"injectables/DefaultHashHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/HashHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthModuleConfig.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerConfig.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/OAuthStorage.html":{},"classes/OAuthSuccessEvent.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"injectables/UrlHelperService.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"changelog.html":{},"miscellaneous/typealiases.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{}}}],["typealiases",{"_index":1374,"title":{"miscellaneous/typealiases.html":{}},"body":{}}],["typeerror('expected",{"_index":158,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["typeof",{"_index":156,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["types",{"_index":581,"title":{},"body":{"modules/OAuthModule.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["typo",{"_index":837,"title":{},"body":{"changelog.html":{}}}],["ui_locales_supported",{"_index":503,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["uint8array(buffer",{"_index":184,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["uint8array(d.length",{"_index":162,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["unchanged",{"_index":764,"title":{},"body":{"changelog.html":{}}}],["under",{"_index":1567,"title":{},"body":{"additional-documentation/popup-based-login.html":{}}}],["unfortunately",{"_index":1664,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["universal",{"_index":834,"title":{},"body":{"changelog.html":{}}}],["up",{"_index":1247,"title":{},"body":{"index.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["upcoming",{"_index":1041,"title":{},"body":{"index.html":{}}}],["update",{"_index":720,"title":{},"body":{"changelog.html":{},"index.html":{}}}],["upgrade",{"_index":897,"title":{},"body":{"changelog.html":{}}}],["upgrading",{"_index":1295,"title":{},"body":{"index.html":{}}}],["uri",{"_index":361,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["url",{"_index":242,"title":{"additional-documentation/preserving-state-(like-the-requested-url).html":{}},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"index.html":{},"additional-documentation/preserving-state-(like-the-requested-url).html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/manually-skipping-login-form.html":{},"additional-documentation/original-config-api.html":{}}}],["url.startswith(u",{"_index":1544,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["url.tolowercase().startswith(u.tolowercase",{"_index":241,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["url?x=1",{"_index":920,"title":{},"body":{"changelog.html":{}}}],["urlhelperservice",{"_index":586,"title":{"injectables/UrlHelperService.html":{}},"body":{"modules/OAuthModule.html":{},"injectables/UrlHelperService.html":{}}}],["urls",{"_index":608,"title":{},"body":{"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{},"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["usage",{"_index":952,"title":{},"body":{"changelog.html":{}}}],["use",{"_index":18,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"changelog.html":{},"index.html":{},"license.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/events.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/manually-skipping-login-form.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["usecase",{"_index":1215,"title":{},"body":{"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["useclass",{"_index":600,"title":{},"body":{"modules/OAuthModule.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["used",{"_index":340,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthLogger.html":{},"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"index.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/server-side-rendering.html":{},"additional-documentation/using-password-flow.html":{}}}],["usefactory",{"_index":599,"title":{},"body":{"modules/OAuthModule.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["usehash",{"_index":1626,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["user",{"_index":466,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/manually-skipping-login-form.html":{},"additional-documentation/original-config-api.html":{}}}],["user's",{"_index":1788,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["user_profile_load_error",{"_index":534,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["user_profile_loaded",{"_index":533,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{},"additional-documentation/events.html":{}}}],["userinfo",{"_index":468,"title":{"interfaces/UserInfo.html":{}},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"changelog.html":{},"index.html":{}}}],["userinfo_encryption_alg_values_supported",{"_index":492,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["userinfo_encryption_enc_values_supported",{"_index":493,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["userinfo_endpoint",{"_index":480,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["userinfo_signing_alg_values_supported",{"_index":491,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["username/password",{"_index":1162,"title":{},"body":{"index.html":{}}}],["username/passwort",{"_index":1751,"title":{},"body":{"additional-documentation/using-implicit-flow.html":{}}}],["users",{"_index":277,"title":{},"body":{"classes/JwksValidationHandler.html":{},"additional-documentation/server-side-rendering.html":{}}}],["uses",{"_index":416,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/original-config-api.html":{}}}],["usesilentrefresh",{"_index":877,"title":{},"body":{"changelog.html":{},"additional-documentation/silent-refresh.html":{}}}],["usevalue",{"_index":601,"title":{},"body":{"modules/OAuthModule.html":{}}}],["using",{"_index":36,"title":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-systemjs.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/authorization-servers/using-identity-server.html":{},"additional-documentation/authorization-servers/using-keycloak.html":{}},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"changelog.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/events.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-systemjs.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/manually-skipping-login-form.html":{},"additional-documentation/authorization-servers.html":{},"additional-documentation/authorization-servers/using-identity-server.html":{},"additional-documentation/authorization-servers/using-keycloak.html":{},"additional-documentation/authorization-servers/auth0.html":{},"additional-documentation/authorization-servers/azure-ad-(active-directory).html":{}}}],["utils",{"_index":286,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["v",{"_index":679,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["valid",{"_index":1250,"title":{},"body":{"index.html":{}}}],["validate",{"_index":82,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["validateathash",{"_index":16,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/NullValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["validateathash(params",{"_index":56,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["validateathash(validationparams",{"_index":289,"title":{},"body":{"classes/JwksValidationHandler.html":{},"classes/NullValidationHandler.html":{},"classes/ValidationHandler.html":{}}}],["validated",{"_index":397,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/callback-after-login.html":{}}}],["validates",{"_index":59,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["validatesignature",{"_index":26,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/NullValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["validatesignature(validationparams",{"_index":65,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/NullValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["validating",{"_index":513,"title":{},"body":{"classes/NullValidationHandler.html":{},"index.html":{}}}],["validation",{"_index":274,"title":{"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}},"body":{"classes/JwksValidationHandler.html":{},"classes/NullValidationHandler.html":{},"modules/OAuthModule.html":{},"changelog.html":{},"miscellaneous/variables.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/original-config-api.html":{}}}],["validation/hash",{"_index":133,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{},"modules/OAuthModule.html":{},"miscellaneous/functions.html":{},"miscellaneous/variables.html":{}}}],["validation/jwks",{"_index":273,"title":{},"body":{"classes/JwksValidationHandler.html":{},"miscellaneous/variables.html":{}}}],["validation/null",{"_index":511,"title":{},"body":{"classes/NullValidationHandler.html":{},"modules/OAuthModule.html":{}}}],["validation/validation",{"_index":7,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"modules/OAuthModule.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["validationhandler",{"_index":12,"title":{"classes/ValidationHandler.html":{}},"body":{"classes/AbstractValidationHandler.html":{},"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["validationhandlerclass",{"_index":576,"title":{},"body":{"modules/OAuthModule.html":{}}}],["validationparams",{"_index":57,"title":{"interfaces/ValidationParams.html":{}},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/NullValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["validations",{"_index":1151,"title":{},"body":{"index.html":{}}}],["value",{"_index":35,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/LoginOptions.html":{},"modules/OAuthModule.html":{},"injectables/UrlHelperService.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"miscellaneous/variables.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/original-config-api.html":{}}}],["value.tostring(16",{"_index":189,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["values",{"_index":409,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["valuetohash",{"_index":42,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["var",{"_index":159,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{},"additional-documentation/silent-refresh.html":{}}}],["variables",{"_index":1377,"title":{"miscellaneous/variables.html":{}},"body":{"miscellaneous/variables.html":{}}}],["various",{"_index":1707,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["vdveer",{"_index":961,"title":{},"body":{"changelog.html":{}}}],["versatility",{"_index":1260,"title":{},"body":{"index.html":{}}}],["version",{"_index":299,"title":{},"body":{"classes/JwksValidationHandler.html":{},"changelog.html":{},"dependencies.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/events.html":{},"additional-documentation/session-checks.html":{}}}],["versions",{"_index":1097,"title":{},"body":{"index.html":{}}}],["via",{"_index":1070,"title":{},"body":{"index.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/events.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["vital",{"_index":1205,"title":{},"body":{"index.html":{}}}],["void",{"_index":414,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["voucher",{"_index":1448,"title":{},"body":{"additional-documentation/silent-refresh.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/original-config-api.html":{}}}],["want",{"_index":400,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"index.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{},"additional-documentation/manually-skipping-login-form.html":{}}}],["warn",{"_index":561,"title":{},"body":{"classes/OAuthLogger.html":{}}}],["warn(message",{"_index":428,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["warning",{"_index":1641,"title":{},"body":{"additional-documentation/adapt-id_token-validation.html":{}}}],["warranties",{"_index":1349,"title":{},"body":{"license.html":{}}}],["warranty",{"_index":1344,"title":{},"body":{"license.html":{}}}],["way",{"_index":901,"title":{},"body":{"changelog.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["we've",{"_index":1072,"title":{},"body":{"index.html":{}}}],["web",{"_index":1159,"title":{},"body":{"index.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{}}}],["webcomponents/custom",{"_index":998,"title":{},"body":{"dependencies.html":{}}}],["webhttpurlencodingcodec",{"_index":664,"title":{"classes/WebHttpUrlEncodingCodec.html":{}},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["webpack",{"_index":1071,"title":{},"body":{"index.html":{}}}],["websocket",{"_index":798,"title":{},"body":{"changelog.html":{}}}],["well",{"_index":420,"title":{},"body":{"classes/LoginOptions.html":{},"injectables/MemoryStorage.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/callback-after-login.html":{}}}],["when/some",{"_index":1143,"title":{},"body":{"index.html":{}}}],["whenever",{"_index":1600,"title":{},"body":{"additional-documentation/events.html":{}}}],["whether",{"_index":1361,"title":{},"body":{"license.html":{}}}],["white",{"_index":1521,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["widow",{"_index":1475,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["window",{"_index":774,"title":{},"body":{"changelog.html":{}}}],["window.crypto.subtle.digest(algorithm",{"_index":167,"title":{},"body":{"injectables/DefaultHashHandler.html":{},"classes/HashHandler.html":{}}}],["window.location.hash",{"_index":646,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["window.location.origin",{"_index":1192,"title":{},"body":{"index.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/using-implicit-flow.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["window.opener",{"_index":1455,"title":{},"body":{"additional-documentation/silent-refresh.html":{},"additional-documentation/popup-based-login.html":{}}}],["window.parent",{"_index":1565,"title":{},"body":{"additional-documentation/popup-based-login.html":{}}}],["window.parent).postmessage(location.hash",{"_index":1456,"title":{},"body":{"additional-documentation/silent-refresh.html":{}}}],["windowref",{"_index":770,"title":{},"body":{"changelog.html":{}}}],["wish",{"_index":1815,"title":{},"body":{"additional-documentation/manually-skipping-login-form.html":{}}}],["within",{"_index":1425,"title":{},"body":{"additional-documentation/silent-refresh.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{}}}],["without",{"_index":1324,"title":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{}},"body":{"license.html":{},"additional-documentation/silent-refresh.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{}}}],["work",{"_index":887,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/popup-based-login.html":{},"additional-documentation/authorization-servers.html":{},"additional-documentation/authorization-servers/using-identity-server.html":{},"additional-documentation/authorization-servers/using-keycloak.html":{},"additional-documentation/authorization-servers/auth0.html":{}}}],["worker",{"_index":1020,"title":{},"body":{"dependencies.html":{}}}],["working",{"_index":962,"title":{"additional-documentation/working-with-httpinterceptors.html":{}},"body":{"changelog.html":{}}}],["works",{"_index":1802,"title":{},"body":{"additional-documentation/configure-custom-oauthstorage.html":{}}}],["workshops",{"_index":1308,"title":{},"body":{"index.html":{}}}],["write",{"_index":1530,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["ws02",{"_index":1704,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["yes",{"_index":563,"title":{},"body":{"classes/OAuthLogger.html":{},"injectables/UrlHelperService.html":{}}}],["you're",{"_index":1294,"title":{},"body":{"index.html":{}}}],["you've",{"_index":1742,"title":{},"body":{"additional-documentation/using-implicit-flow.html":{}}}],["yourself",{"_index":1836,"title":{},"body":{"additional-documentation/original-config-api.html":{}}}],["zone.js",{"_index":1022,"title":{},"body":{"dependencies.html":{}}}],["zoom",{"_index":1371,"title":{},"body":{"overview.html":{}}}],["zum",{"_index":1752,"title":{},"body":{"additional-documentation/using-implicit-flow.html":{}}}]],"pipeline":["stemmer"]}, + "store": {"classes/AbstractValidationHandler.html":{"url":"classes/AbstractValidationHandler.html","title":"class - AbstractValidationHandler","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n AbstractValidationHandler\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/token-validation/validation-handler.ts\n \n\n\n \n Description\n \n \n This abstract implementation of ValidationHandler already implements\nthe method validateAtHash. However, to make use of it,\nyou have to override the method calcHash.\n\n \n\n\n \n Implements\n \n \n ValidationHandler\n \n\n\n \n Index\n \n \n\n \n \n Methods\n \n \n \n \n \n \n Protected\n Abstract\n calcHash\n \n \n Protected\n inferHashAlgorithm\n \n \n Async\n validateAtHash\n \n \n Abstract\n validateSignature\n \n \n \n \n\n\n\n\n\n \n \n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n Protected\n Abstract\n calcHash\n \n \n \n \n \n \n \n calcHash(valueToHash: string, algorithm: string)\n \n \n\n\n \n \n Defined in projects/lib/src/token-validation/validation-handler.ts:88\n \n \n\n\n \n \n Calculates the hash for the passed value by using\nthe passed hash algorithm.\n\n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n valueToHash\n \n string\n \n\n \n No\n \n\n\n \n \n algorithm\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : Promise\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Protected\n inferHashAlgorithm\n \n \n \n \n \n \n \n inferHashAlgorithm(jwtHeader: object)\n \n \n\n\n \n \n Defined in projects/lib/src/token-validation/validation-handler.ts:71\n \n \n\n\n \n \n Infers the name of the hash algorithm to use\nfrom the alg field of an id_token.\n\n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n Description\n \n \n \n \n jwtHeader\n \n object\n \n\n \n No\n \n\n\n \n the id_token's parsed header\n\n \n \n \n \n \n \n \n \n Returns : string\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Async\n validateAtHash\n \n \n \n \n \n \n \n validateAtHash(params: ValidationParams)\n \n \n\n\n \n \n Defined in projects/lib/src/token-validation/validation-handler.ts:46\n \n \n\n\n \n \n Validates the at_hash in an id_token against the received access_token.\n\n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n params\n \n ValidationParams\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : Promise\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Abstract\n validateSignature\n \n \n \n \n \n \n \n validateSignature(validationParams: ValidationParams)\n \n \n\n\n \n \n Defined in projects/lib/src/token-validation/validation-handler.ts:41\n \n \n\n\n \n \n Validates the signature of an id_token.\n\n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n validationParams\n \n ValidationParams\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : Promise\n\n \n \n \n \n \n \n \n \n\n\n\n\n\n\n \n\n\n \n import { base64UrlEncode } from '../base64-helper';\n\nexport interface ValidationParams {\n idToken: string;\n accessToken: string;\n idTokenHeader: object;\n idTokenClaims: object;\n jwks: object;\n loadKeys: () => Promise;\n}\n\n/**\n * Interface for Handlers that are hooked in to\n * validate tokens.\n */\nexport abstract class ValidationHandler {\n /**\n * Validates the signature of an id_token.\n */\n public abstract validateSignature(\n validationParams: ValidationParams\n ): Promise;\n\n /**\n * Validates the at_hash in an id_token against the received access_token.\n */\n public abstract validateAtHash(\n validationParams: ValidationParams\n ): Promise;\n}\n\n/**\n * This abstract implementation of ValidationHandler already implements\n * the method validateAtHash. However, to make use of it,\n * you have to override the method calcHash.\n */\nexport abstract class AbstractValidationHandler implements ValidationHandler {\n /**\n * Validates the signature of an id_token.\n */\n abstract validateSignature(validationParams: ValidationParams): Promise;\n\n /**\n * Validates the at_hash in an id_token against the received access_token.\n */\n async validateAtHash(params: ValidationParams): Promise {\n let hashAlg = this.inferHashAlgorithm(params.idTokenHeader);\n\n let tokenHash = await this.calcHash(params.accessToken, hashAlg); // sha256(accessToken, { asString: true });\n\n let leftMostHalf = tokenHash.substr(0, tokenHash.length / 2);\n\n let atHash = base64UrlEncode(leftMostHalf);\n\n let claimsAtHash = params.idTokenClaims['at_hash'].replace(/=/g, '');\n\n if (atHash !== claimsAtHash) {\n console.error('exptected at_hash: ' + atHash);\n console.error('actual at_hash: ' + claimsAtHash);\n }\n\n return atHash === claimsAtHash;\n }\n\n /**\n * Infers the name of the hash algorithm to use\n * from the alg field of an id_token.\n *\n * @param jwtHeader the id_token's parsed header\n */\n protected inferHashAlgorithm(jwtHeader: object): string {\n let alg: string = jwtHeader['alg'];\n\n if (!alg.match(/^.S[0-9]{3}$/)) {\n throw new Error('Algorithm not supported: ' + alg);\n }\n\n return 'sha-' + alg.substr(2);\n }\n\n /**\n * Calculates the hash for the passed value by using\n * the passed hash algorithm.\n *\n * @param valueToHash\n * @param algorithm\n */\n protected abstract calcHash(\n valueToHash: string,\n algorithm: string\n ): Promise;\n}\n\n \n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/DateTimeProvider.html":{"url":"classes/DateTimeProvider.html","title":"class - DateTimeProvider","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n DateTimeProvider\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/date-time-provider.ts\n \n\n\n\n\n\n\n \n Index\n \n \n\n \n \n Methods\n \n \n \n \n \n \n Abstract\n new\n \n \n Abstract\n now\n \n \n \n \n\n\n\n\n\n \n \n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n Abstract\n new\n \n \n \n \n \n \n \n new()\n \n \n\n\n \n \n Defined in projects/lib/src/date-time-provider.ts:5\n \n \n\n\n \n \n\n \n Returns : Date\n\n \n \n \n \n \n \n \n \n \n \n \n Abstract\n now\n \n \n \n \n \n \n \n now()\n \n \n\n\n \n \n Defined in projects/lib/src/date-time-provider.ts:4\n \n \n\n\n \n \n\n \n Returns : number\n\n \n \n \n \n \n\n\n\n\n\n\n \n\n\n \n import { Injectable } from '@angular/core';\n\nexport abstract class DateTimeProvider {\n abstract now(): number;\n abstract new(): Date;\n}\n\n@Injectable()\nexport class SystemDateTimeProvider extends DateTimeProvider {\n now(): number {\n return Date.now();\n }\n\n new(): Date {\n return new Date();\n }\n}\n\n \n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"injectables/DefaultHashHandler.html":{"url":"injectables/DefaultHashHandler.html","title":"injectable - DefaultHashHandler","body":"\n \n\n\n\n\n\n\n\n\n Injectables\n DefaultHashHandler\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/token-validation/hash-handler.ts\n \n\n\n\n\n\n \n Index\n \n \n\n \n \n Methods\n \n \n \n \n \n \n Async\n calcHash\n \n \n toHashString\n \n \n toHashString2\n \n \n \n \n\n\n\n\n\n \n \n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n Async\n calcHash\n \n \n \n \n \n \n \n calcHash(valueToHash: string, algorithm: string)\n \n \n\n\n \n \n Defined in projects/lib/src/token-validation/hash-handler.ts:33\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n valueToHash\n \n string\n \n\n \n No\n \n\n\n \n \n algorithm\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : Promise\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n toHashString\n \n \n \n \n \n \ntoHashString(buffer: ArrayBuffer)\n \n \n\n\n \n \n Defined in projects/lib/src/token-validation/hash-handler.ts:60\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n buffer\n \n ArrayBuffer\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : string\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n toHashString2\n \n \n \n \n \n \ntoHashString2(byteArray: number[])\n \n \n\n\n \n \n Defined in projects/lib/src/token-validation/hash-handler.ts:52\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n byteArray\n \n number[]\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : string\n\n \n \n \n \n \n \n \n \n\n\n \n\n\n \n import { Injectable } from '@angular/core';\n\nimport { factory } from './js-sha256';\nconst sha256 = factory();\n\nimport fsha256 from 'fast-sha256';\n\n/**\n * Abstraction for crypto algorithms\n */\nexport abstract class HashHandler {\n abstract calcHash(valueToHash: string, algorithm: string): Promise;\n}\n\nfunction decodeUTF8(s) {\n if (typeof s !== 'string') throw new TypeError('expected string');\n var i,\n d = s,\n b = new Uint8Array(d.length);\n for (i = 0; i {\n // const encoder = new TextEncoder();\n // const hashArray = await window.crypto.subtle.digest(algorithm, data);\n // const data = encoder.encode(valueToHash);\n\n // const fhash = fsha256(valueToHash);\n\n const candHash = encodeUTF8(fsha256(decodeUTF8(valueToHash)));\n\n // const hashArray = (sha256 as any).array(valueToHash);\n // // const hashString = this.toHashString(hashArray);\n // const hashString = this.toHashString2(hashArray);\n\n // console.debug('hash orig - cand', candHash, hashString);\n // alert(1);\n\n return candHash;\n }\n\n toHashString2(byteArray: number[]) {\n let result = '';\n for (let e of byteArray) {\n result += String.fromCharCode(e);\n }\n return result;\n }\n\n toHashString(buffer: ArrayBuffer) {\n const byteArray = new Uint8Array(buffer);\n let result = '';\n for (let e of byteArray) {\n result += String.fromCharCode(e);\n }\n return result;\n }\n\n // hexString(buffer) {\n // const byteArray = new Uint8Array(buffer);\n // const hexCodes = [...byteArray].map(value => {\n // const hexCode = value.toString(16);\n // const paddedHexCode = hexCode.padStart(2, '0');\n // return paddedHexCode;\n // });\n\n // return hexCodes.join('');\n // }\n\n // toHashString(hexString: string) {\n // let result = '';\n // for (let i = 0; i \n \n\n\n\n\n\n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"interceptors/DefaultOAuthInterceptor.html":{"url":"interceptors/DefaultOAuthInterceptor.html","title":"interceptor - DefaultOAuthInterceptor","body":"\n \n\n\n\n\n\n\n\n\n\n Interceptors\n DefaultOAuthInterceptor\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/interceptors/default-oauth.interceptor.ts\n \n\n\n\n\n \n Index\n \n \n\n \n \n Methods\n \n \n \n \n \n \n Public\n intercept\n \n \n \n \n\n\n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor(oAuthService: OAuthService, errorHandler: OAuthResourceServerErrorHandler, moduleConfig: OAuthModuleConfig)\n \n \n \n \n Defined in projects/lib/src/interceptors/default-oauth.interceptor.ts:23\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n oAuthService\n \n \n OAuthService\n \n \n \n No\n \n \n \n \n errorHandler\n \n \n OAuthResourceServerErrorHandler\n \n \n \n No\n \n \n \n \n moduleConfig\n \n \n OAuthModuleConfig\n \n \n \n No\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n Public\n intercept\n \n \n \n \n \n \n \n intercept(req: HttpRequest, next: HttpHandler)\n \n \n\n\n \n \n Defined in projects/lib/src/interceptors/default-oauth.interceptor.ts:44\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n req\n \n HttpRequest\n \n\n \n No\n \n\n\n \n \n next\n \n HttpHandler\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : Observable>\n\n \n \n \n \n \n \n \n \n\n\n \n\n\n \n import { Injectable, Optional } from '@angular/core';\n\nimport {\n HttpEvent,\n HttpHandler,\n HttpInterceptor,\n HttpRequest,\n} from '@angular/common/http';\nimport { Observable, of, merge } from 'rxjs';\nimport {\n catchError,\n filter,\n map,\n take,\n mergeMap,\n timeout,\n} from 'rxjs/operators';\nimport { OAuthResourceServerErrorHandler } from './resource-server-error-handler';\nimport { OAuthModuleConfig } from '../oauth-module.config';\nimport { OAuthService } from '../oauth-service';\n\n@Injectable()\nexport class DefaultOAuthInterceptor implements HttpInterceptor {\n constructor(\n private oAuthService: OAuthService,\n private errorHandler: OAuthResourceServerErrorHandler,\n @Optional() private moduleConfig: OAuthModuleConfig\n ) {}\n\n private checkUrl(url: string): boolean {\n if (this.moduleConfig.resourceServer.customUrlValidation) {\n return this.moduleConfig.resourceServer.customUrlValidation(url);\n }\n\n if (this.moduleConfig.resourceServer.allowedUrls) {\n return !!this.moduleConfig.resourceServer.allowedUrls.find((u) =>\n url.toLowerCase().startsWith(u.toLowerCase())\n );\n }\n\n return true;\n }\n\n public intercept(\n req: HttpRequest,\n next: HttpHandler\n ): Observable> {\n const url = req.url.toLowerCase();\n\n if (\n !this.moduleConfig ||\n !this.moduleConfig.resourceServer ||\n !this.checkUrl(url)\n ) {\n return next.handle(req);\n }\n\n const sendAccessToken = this.moduleConfig.resourceServer.sendAccessToken;\n\n if (!sendAccessToken) {\n return next\n .handle(req)\n .pipe(catchError((err) => this.errorHandler.handleError(err)));\n }\n\n return merge(\n of(this.oAuthService.getAccessToken()).pipe(filter((token) => !!token)),\n this.oAuthService.events.pipe(\n filter((e) => e.type === 'token_received'),\n timeout(this.oAuthService.waitForTokenInMsec || 0),\n catchError((_) => of(null)), // timeout is not an error\n map((_) => this.oAuthService.getAccessToken())\n )\n ).pipe(\n take(1),\n mergeMap((token) => {\n if (token) {\n const header = 'Bearer ' + token;\n const headers = req.headers.set('Authorization', header);\n req = req.clone({ headers });\n }\n\n return next\n .handle(req)\n .pipe(catchError((err) => this.errorHandler.handleError(err)));\n })\n );\n }\n}\n\n \n\n\n\n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/HashHandler.html":{"url":"classes/HashHandler.html","title":"class - HashHandler","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n HashHandler\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/token-validation/hash-handler.ts\n \n\n\n \n Description\n \n \n Abstraction for crypto algorithms\n\n \n\n\n\n\n \n Index\n \n \n\n \n \n Methods\n \n \n \n \n \n \n Abstract\n calcHash\n \n \n \n \n\n\n\n\n\n \n \n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n Abstract\n calcHash\n \n \n \n \n \n \n \n calcHash(valueToHash: string, algorithm: string)\n \n \n\n\n \n \n Defined in projects/lib/src/token-validation/hash-handler.ts:12\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n valueToHash\n \n string\n \n\n \n No\n \n\n\n \n \n algorithm\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : Promise\n\n \n \n \n \n \n \n \n \n\n\n\n\n\n\n \n\n\n \n import { Injectable } from '@angular/core';\n\nimport { factory } from './js-sha256';\nconst sha256 = factory();\n\nimport fsha256 from 'fast-sha256';\n\n/**\n * Abstraction for crypto algorithms\n */\nexport abstract class HashHandler {\n abstract calcHash(valueToHash: string, algorithm: string): Promise;\n}\n\nfunction decodeUTF8(s) {\n if (typeof s !== 'string') throw new TypeError('expected string');\n var i,\n d = s,\n b = new Uint8Array(d.length);\n for (i = 0; i {\n // const encoder = new TextEncoder();\n // const hashArray = await window.crypto.subtle.digest(algorithm, data);\n // const data = encoder.encode(valueToHash);\n\n // const fhash = fsha256(valueToHash);\n\n const candHash = encodeUTF8(fsha256(decodeUTF8(valueToHash)));\n\n // const hashArray = (sha256 as any).array(valueToHash);\n // // const hashString = this.toHashString(hashArray);\n // const hashString = this.toHashString2(hashArray);\n\n // console.debug('hash orig - cand', candHash, hashString);\n // alert(1);\n\n return candHash;\n }\n\n toHashString2(byteArray: number[]) {\n let result = '';\n for (let e of byteArray) {\n result += String.fromCharCode(e);\n }\n return result;\n }\n\n toHashString(buffer: ArrayBuffer) {\n const byteArray = new Uint8Array(buffer);\n let result = '';\n for (let e of byteArray) {\n result += String.fromCharCode(e);\n }\n return result;\n }\n\n // hexString(buffer) {\n // const byteArray = new Uint8Array(buffer);\n // const hexCodes = [...byteArray].map(value => {\n // const hexCode = value.toString(16);\n // const paddedHexCode = hexCode.padStart(2, '0');\n // return paddedHexCode;\n // });\n\n // return hexCodes.join('');\n // }\n\n // toHashString(hexString: string) {\n // let result = '';\n // for (let i = 0; i \n \n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/JwksValidationHandler.html":{"url":"classes/JwksValidationHandler.html","title":"class - JwksValidationHandler","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n JwksValidationHandler\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/token-validation/jwks-validation-handler.ts\n \n\n\n \n Description\n \n \n This is just a dummy of the JwksValidationHandler\ntelling the users that the real one has been moved\nto an library of its own, namely angular-oauth2-oidc-utils\n\n \n\n \n Extends\n \n \n NullValidationHandler\n \n\n\n\n \n Index\n \n \n\n \n \n Methods\n \n \n \n \n \n \n validateAtHash\n \n \n validateSignature\n \n \n \n \n\n\n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor()\n \n \n \n \n Defined in projects/lib/src/token-validation/jwks-validation-handler.ts:25\n \n \n\n \n \n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n validateAtHash\n \n \n \n \n \n \nvalidateAtHash(validationParams: ValidationParams)\n \n \n\n\n \n \n Inherited from NullValidationHandler\n\n \n \n \n \n Defined in NullValidationHandler:11\n\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n validationParams\n \n ValidationParams\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : Promise\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n validateSignature\n \n \n \n \n \n \nvalidateSignature(validationParams: ValidationParams)\n \n \n\n\n \n \n Inherited from NullValidationHandler\n\n \n \n \n \n Defined in NullValidationHandler:8\n\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n validationParams\n \n ValidationParams\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : Promise\n\n \n \n \n \n \n \n \n \n\n\n\n\n\n\n \n\n\n \n import { NullValidationHandler } from './null-validation-handler';\n\nconst err = `PLEASE READ THIS CAREFULLY:\n\nBeginning with angular-oauth2-oidc version 9, the JwksValidationHandler\nhas been moved to an library of its own. If you need it for implementing\nOAuth2/OIDC **implicit flow**, please install it using npm:\n\n npm i angular-oauth2-oidc-jwks --save\n\nAfter that, you can import it into your application:\n\n import { JwksValidationHandler } from 'angular-oauth2-oidc-jwks';\n\nPlease note, that this dependency is not needed for the **code flow**,\nwhich is nowadays the **recommented** one for single page applications.\nThis also results in smaller bundle sizes.\n`;\n\n/**\n * This is just a dummy of the JwksValidationHandler\n * telling the users that the real one has been moved\n * to an library of its own, namely angular-oauth2-oidc-utils\n */\nexport class JwksValidationHandler extends NullValidationHandler {\n constructor() {\n super();\n console.error(err);\n }\n}\n\n \n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/LoginOptions.html":{"url":"classes/LoginOptions.html","title":"class - LoginOptions","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n LoginOptions\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/types.ts\n \n\n\n \n Description\n \n \n Additional options that can be passed to tryLogin.\n\n \n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Optional\n customHashFragment\n \n \n Optional\n customRedirectUri\n \n \n Optional\n disableNonceCheck\n \n \n Optional\n disableOAuth2StateCheck\n \n \n Optional\n onLoginError\n \n \n Optional\n onTokenReceived\n \n \n Optional\n preventClearHashAfterLogin\n \n \n Optional\n validationHandler\n \n \n \n \n\n\n\n\n\n\n \n \n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n Optional\n customHashFragment\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in projects/lib/src/types.ts:40\n \n \n\n \n \n A custom hash fragment to be used instead of the\nactual one. This is used for silent refreshes, to\npass the iframes hash fragment to this method, and\nis also used by popup flows in the same manner.\nThis can be used with code flow, where is must be set\nto a hash symbol followed by the querystring. The\nquestion mark is optional, but may be present following\nthe hash symbol.\n\n \n \n\n \n \n \n \n \n \n \n \n Optional\n customRedirectUri\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in projects/lib/src/types.ts:74\n \n \n\n \n \n Set this for code flow if you used a custom redirect Uri\nwhen retrieving the code. This is used internally for silent\nrefresh and popup flows.\n\n \n \n\n \n \n \n \n \n \n \n \n Optional\n disableNonceCheck\n \n \n \n \n \n \n Default value : false\n \n \n \n \n Defined in projects/lib/src/types.ts:59\n \n \n\n \n \n Set this to true to disable the nonce\ncheck which is used to avoid\nreplay attacks.\nThis flag should never be true in\nproduction environments.\n\n \n \n\n \n \n \n \n \n \n \n \n Optional\n disableOAuth2StateCheck\n \n \n \n \n \n \n Type : boolean\n\n \n \n \n \n Defined in projects/lib/src/types.ts:50\n \n \n\n \n \n Set this to true to disable the oauth2 state\ncheck which is a best practice to avoid\nsecurity attacks.\nAs OIDC defines a nonce check that includes\nthis, this can be set to true when only doing\nOIDC.\n\n \n \n\n \n \n \n \n \n \n \n \n Optional\n onLoginError\n \n \n \n \n \n \n Type : function\n\n \n \n \n \n Defined in projects/lib/src/types.ts:28\n \n \n\n \n \n Called when tryLogin detects that the auth server\nincluded an error message into the hash fragment.\nDeprecated: Use property events on OAuthService instead.\n\n \n \n\n \n \n \n \n \n \n \n \n Optional\n onTokenReceived\n \n \n \n \n \n \n Type : function\n\n \n \n \n \n Defined in projects/lib/src/types.ts:13\n \n \n\n \n \n Is called, after a token has been received and\nsuccessfully validated.\nDeprecated: Use property events on OAuthService instead.\n\n \n \n\n \n \n \n \n \n \n \n \n Optional\n preventClearHashAfterLogin\n \n \n \n \n \n \n Default value : false\n \n \n \n \n Defined in projects/lib/src/types.ts:67\n \n \n\n \n \n Normally, you want to clear your hash fragment after\nthe lib read the token(s) so that they are not displayed\nanymore in the url. If not, set this to true. For code flow\nthis controls removing query string values.\n\n \n \n\n \n \n \n \n \n \n \n \n Optional\n validationHandler\n \n \n \n \n \n \n Type : function\n\n \n \n \n \n Defined in projects/lib/src/types.ts:20\n \n \n\n \n \n Hook, to validate the received tokens.\nDeprecated: Use property tokenValidationHandler on OAuthService instead.\n\n \n \n\n \n \n\n\n\n\n\n\n\n\n \n\n\n \n import { Injectable } from '@angular/core';\n\n/**\n * Additional options that can be passed to tryLogin.\n */\nexport class LoginOptions {\n /**\n * Is called, after a token has been received and\n * successfully validated.\n *\n * Deprecated: Use property ``events`` on OAuthService instead.\n */\n onTokenReceived?: (receivedTokens: ReceivedTokens) => void;\n\n /**\n * Hook, to validate the received tokens.\n *\n * Deprecated: Use property ``tokenValidationHandler`` on OAuthService instead.\n */\n validationHandler?: (receivedTokens: ReceivedTokens) => Promise;\n\n /**\n * Called when tryLogin detects that the auth server\n * included an error message into the hash fragment.\n *\n * Deprecated: Use property ``events`` on OAuthService instead.\n */\n onLoginError?: (params: object) => void;\n\n /**\n * A custom hash fragment to be used instead of the\n * actual one. This is used for silent refreshes, to\n * pass the iframes hash fragment to this method, and\n * is also used by popup flows in the same manner.\n * This can be used with code flow, where is must be set\n * to a hash symbol followed by the querystring. The\n * question mark is optional, but may be present following\n * the hash symbol.\n */\n customHashFragment?: string;\n\n /**\n * Set this to true to disable the oauth2 state\n * check which is a best practice to avoid\n * security attacks.\n * As OIDC defines a nonce check that includes\n * this, this can be set to true when only doing\n * OIDC.\n */\n disableOAuth2StateCheck?: boolean;\n\n /**\n * Set this to true to disable the nonce\n * check which is used to avoid\n * replay attacks.\n * This flag should never be true in\n * production environments.\n */\n disableNonceCheck? = false;\n\n /**\n * Normally, you want to clear your hash fragment after\n * the lib read the token(s) so that they are not displayed\n * anymore in the url. If not, set this to true. For code flow\n * this controls removing query string values.\n */\n preventClearHashAfterLogin? = false;\n\n /**\n * Set this for code flow if you used a custom redirect Uri\n * when retrieving the code. This is used internally for silent\n * refresh and popup flows.\n */\n customRedirectUri?: string;\n}\n\n/**\n * Defines the logging interface the OAuthService uses\n * internally. Is compatible with the `console` object,\n * but you can provide your own implementation as well\n * through dependency injection.\n */\nexport abstract class OAuthLogger {\n abstract debug(message?: any, ...optionalParams: any[]): void;\n abstract info(message?: any, ...optionalParams: any[]): void;\n abstract log(message?: any, ...optionalParams: any[]): void;\n abstract warn(message?: any, ...optionalParams: any[]): void;\n abstract error(message?: any, ...optionalParams: any[]): void;\n}\n\n/**\n * Defines a simple storage that can be used for\n * storing the tokens at client side.\n * Is compatible to localStorage and sessionStorage,\n * but you can also create your own implementations.\n */\nexport abstract class OAuthStorage {\n abstract getItem(key: string): string | null;\n abstract removeItem(key: string): void;\n abstract setItem(key: string, data: string): void;\n}\n\n@Injectable()\nexport class MemoryStorage implements OAuthStorage {\n private data = new Map();\n\n getItem(key: string): string {\n return this.data.get(key);\n }\n\n removeItem(key: string): void {\n this.data.delete(key);\n }\n\n setItem(key: string, data: string): void {\n this.data.set(key, data);\n }\n}\n\n/**\n * Represents the received tokens, the received state\n * and the parsed claims from the id-token.\n */\nexport class ReceivedTokens {\n idToken: string;\n accessToken: string;\n idClaims?: object;\n state?: string;\n}\n\n/**\n * Represents the parsed and validated id_token.\n */\nexport interface ParsedIdToken {\n idToken: string;\n idTokenClaims: object;\n idTokenHeader: object;\n idTokenClaimsJson: string;\n idTokenHeaderJson: string;\n idTokenExpiresAt: number;\n}\n\n/**\n * Represents the response from the token endpoint\n * http://openid.net/specs/openid-connect-core-1_0.html#TokenEndpoint\n */\nexport interface TokenResponse {\n access_token: string;\n id_token: string;\n token_type: string;\n expires_in: number;\n refresh_token: string;\n scope: string;\n state?: string;\n}\n\n/**\n * Represents the response from the user info endpoint\n * http://openid.net/specs/openid-connect-core-1_0.html#UserInfo\n */\nexport interface UserInfo {\n sub: string;\n [key: string]: any;\n}\n\n/**\n * Represents an OpenID Connect discovery document\n */\nexport interface OidcDiscoveryDoc {\n issuer: string;\n authorization_endpoint: string;\n token_endpoint: string;\n token_endpoint_auth_methods_supported: string[];\n token_endpoint_auth_signing_alg_values_supported: string[];\n userinfo_endpoint: string;\n check_session_iframe: string;\n end_session_endpoint: string;\n jwks_uri: string;\n registration_endpoint: string;\n scopes_supported: string[];\n response_types_supported: string[];\n acr_values_supported: string[];\n response_modes_supported: string[];\n grant_types_supported: string[];\n subject_types_supported: string[];\n userinfo_signing_alg_values_supported: string[];\n userinfo_encryption_alg_values_supported: string[];\n userinfo_encryption_enc_values_supported: string[];\n id_token_signing_alg_values_supported: string[];\n id_token_encryption_alg_values_supported: string[];\n id_token_encryption_enc_values_supported: string[];\n request_object_signing_alg_values_supported: string[];\n display_values_supported: string[];\n claim_types_supported: string[];\n claims_supported: string[];\n claims_parameter_supported: boolean;\n service_documentation: string;\n ui_locales_supported: string[];\n revocation_endpoint: string;\n}\n\n \n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"injectables/MemoryStorage.html":{"url":"injectables/MemoryStorage.html","title":"injectable - MemoryStorage","body":"\n \n\n\n\n\n\n\n\n\n Injectables\n MemoryStorage\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/types.ts\n \n\n\n\n\n\n \n Index\n \n \n\n \n \n Methods\n \n \n \n \n \n \n getItem\n \n \n removeItem\n \n \n setItem\n \n \n \n \n\n\n\n\n\n \n \n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n getItem\n \n \n \n \n \n \ngetItem(key: string)\n \n \n\n\n \n \n Defined in projects/lib/src/types.ts:107\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n key\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : string\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n removeItem\n \n \n \n \n \n \nremoveItem(key: string)\n \n \n\n\n \n \n Defined in projects/lib/src/types.ts:111\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n key\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n setItem\n \n \n \n \n \n \nsetItem(key: string, data: string)\n \n \n\n\n \n \n Defined in projects/lib/src/types.ts:115\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n key\n \n string\n \n\n \n No\n \n\n\n \n \n data\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n\n\n \n\n\n \n import { Injectable } from '@angular/core';\n\n/**\n * Additional options that can be passed to tryLogin.\n */\nexport class LoginOptions {\n /**\n * Is called, after a token has been received and\n * successfully validated.\n *\n * Deprecated: Use property ``events`` on OAuthService instead.\n */\n onTokenReceived?: (receivedTokens: ReceivedTokens) => void;\n\n /**\n * Hook, to validate the received tokens.\n *\n * Deprecated: Use property ``tokenValidationHandler`` on OAuthService instead.\n */\n validationHandler?: (receivedTokens: ReceivedTokens) => Promise;\n\n /**\n * Called when tryLogin detects that the auth server\n * included an error message into the hash fragment.\n *\n * Deprecated: Use property ``events`` on OAuthService instead.\n */\n onLoginError?: (params: object) => void;\n\n /**\n * A custom hash fragment to be used instead of the\n * actual one. This is used for silent refreshes, to\n * pass the iframes hash fragment to this method, and\n * is also used by popup flows in the same manner.\n * This can be used with code flow, where is must be set\n * to a hash symbol followed by the querystring. The\n * question mark is optional, but may be present following\n * the hash symbol.\n */\n customHashFragment?: string;\n\n /**\n * Set this to true to disable the oauth2 state\n * check which is a best practice to avoid\n * security attacks.\n * As OIDC defines a nonce check that includes\n * this, this can be set to true when only doing\n * OIDC.\n */\n disableOAuth2StateCheck?: boolean;\n\n /**\n * Set this to true to disable the nonce\n * check which is used to avoid\n * replay attacks.\n * This flag should never be true in\n * production environments.\n */\n disableNonceCheck? = false;\n\n /**\n * Normally, you want to clear your hash fragment after\n * the lib read the token(s) so that they are not displayed\n * anymore in the url. If not, set this to true. For code flow\n * this controls removing query string values.\n */\n preventClearHashAfterLogin? = false;\n\n /**\n * Set this for code flow if you used a custom redirect Uri\n * when retrieving the code. This is used internally for silent\n * refresh and popup flows.\n */\n customRedirectUri?: string;\n}\n\n/**\n * Defines the logging interface the OAuthService uses\n * internally. Is compatible with the `console` object,\n * but you can provide your own implementation as well\n * through dependency injection.\n */\nexport abstract class OAuthLogger {\n abstract debug(message?: any, ...optionalParams: any[]): void;\n abstract info(message?: any, ...optionalParams: any[]): void;\n abstract log(message?: any, ...optionalParams: any[]): void;\n abstract warn(message?: any, ...optionalParams: any[]): void;\n abstract error(message?: any, ...optionalParams: any[]): void;\n}\n\n/**\n * Defines a simple storage that can be used for\n * storing the tokens at client side.\n * Is compatible to localStorage and sessionStorage,\n * but you can also create your own implementations.\n */\nexport abstract class OAuthStorage {\n abstract getItem(key: string): string | null;\n abstract removeItem(key: string): void;\n abstract setItem(key: string, data: string): void;\n}\n\n@Injectable()\nexport class MemoryStorage implements OAuthStorage {\n private data = new Map();\n\n getItem(key: string): string {\n return this.data.get(key);\n }\n\n removeItem(key: string): void {\n this.data.delete(key);\n }\n\n setItem(key: string, data: string): void {\n this.data.set(key, data);\n }\n}\n\n/**\n * Represents the received tokens, the received state\n * and the parsed claims from the id-token.\n */\nexport class ReceivedTokens {\n idToken: string;\n accessToken: string;\n idClaims?: object;\n state?: string;\n}\n\n/**\n * Represents the parsed and validated id_token.\n */\nexport interface ParsedIdToken {\n idToken: string;\n idTokenClaims: object;\n idTokenHeader: object;\n idTokenClaimsJson: string;\n idTokenHeaderJson: string;\n idTokenExpiresAt: number;\n}\n\n/**\n * Represents the response from the token endpoint\n * http://openid.net/specs/openid-connect-core-1_0.html#TokenEndpoint\n */\nexport interface TokenResponse {\n access_token: string;\n id_token: string;\n token_type: string;\n expires_in: number;\n refresh_token: string;\n scope: string;\n state?: string;\n}\n\n/**\n * Represents the response from the user info endpoint\n * http://openid.net/specs/openid-connect-core-1_0.html#UserInfo\n */\nexport interface UserInfo {\n sub: string;\n [key: string]: any;\n}\n\n/**\n * Represents an OpenID Connect discovery document\n */\nexport interface OidcDiscoveryDoc {\n issuer: string;\n authorization_endpoint: string;\n token_endpoint: string;\n token_endpoint_auth_methods_supported: string[];\n token_endpoint_auth_signing_alg_values_supported: string[];\n userinfo_endpoint: string;\n check_session_iframe: string;\n end_session_endpoint: string;\n jwks_uri: string;\n registration_endpoint: string;\n scopes_supported: string[];\n response_types_supported: string[];\n acr_values_supported: string[];\n response_modes_supported: string[];\n grant_types_supported: string[];\n subject_types_supported: string[];\n userinfo_signing_alg_values_supported: string[];\n userinfo_encryption_alg_values_supported: string[];\n userinfo_encryption_enc_values_supported: string[];\n id_token_signing_alg_values_supported: string[];\n id_token_encryption_alg_values_supported: string[];\n id_token_encryption_enc_values_supported: string[];\n request_object_signing_alg_values_supported: string[];\n display_values_supported: string[];\n claim_types_supported: string[];\n claims_supported: string[];\n claims_parameter_supported: boolean;\n service_documentation: string;\n ui_locales_supported: string[];\n revocation_endpoint: string;\n}\n\n \n\n\n\n\n\n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/NullValidationHandler.html":{"url":"classes/NullValidationHandler.html","title":"class - NullValidationHandler","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n NullValidationHandler\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/token-validation/null-validation-handler.ts\n \n\n\n \n Description\n \n \n A validation handler that isn't validating nothing.\nCan be used to skip validation (at your own risk).\n\n \n\n\n \n Implements\n \n \n ValidationHandler\n \n\n\n \n Index\n \n \n\n \n \n Methods\n \n \n \n \n \n \n validateAtHash\n \n \n validateSignature\n \n \n \n \n\n\n\n\n\n \n \n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n validateAtHash\n \n \n \n \n \n \nvalidateAtHash(validationParams: ValidationParams)\n \n \n\n\n \n \n Defined in projects/lib/src/token-validation/null-validation-handler.ts:11\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n validationParams\n \n ValidationParams\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : Promise\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n validateSignature\n \n \n \n \n \n \nvalidateSignature(validationParams: ValidationParams)\n \n \n\n\n \n \n Defined in projects/lib/src/token-validation/null-validation-handler.ts:8\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n validationParams\n \n ValidationParams\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : Promise\n\n \n \n \n \n \n \n \n \n\n\n\n\n\n\n \n\n\n \n import { ValidationHandler, ValidationParams } from './validation-handler';\n\n/**\n * A validation handler that isn't validating nothing.\n * Can be used to skip validation (at your own risk).\n */\nexport class NullValidationHandler implements ValidationHandler {\n validateSignature(validationParams: ValidationParams): Promise {\n return Promise.resolve(null);\n }\n validateAtHash(validationParams: ValidationParams): Promise {\n return Promise.resolve(true);\n }\n}\n\n \n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/OAuthErrorEvent.html":{"url":"classes/OAuthErrorEvent.html","title":"class - OAuthErrorEvent","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n OAuthErrorEvent\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/events.ts\n \n\n\n\n \n Extends\n \n \n OAuthEvent\n \n\n\n\n\n \n Constructor\n \n \n \n \nconstructor(type: EventType, reason: object, params: object)\n \n \n \n \n Defined in projects/lib/src/events.ts:44\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n type\n \n \n EventType\n \n \n \n No\n \n \n \n \n reason\n \n \n object\n \n \n \n No\n \n \n \n \n params\n \n \n object\n \n \n \n No\n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n\n\n \n\n\n \n export type EventType =\n | 'discovery_document_loaded'\n | 'jwks_load_error'\n | 'invalid_nonce_in_state'\n | 'discovery_document_load_error'\n | 'discovery_document_validation_error'\n | 'user_profile_loaded'\n | 'user_profile_load_error'\n | 'token_received'\n | 'token_error'\n | 'code_error'\n | 'token_refreshed'\n | 'token_refresh_error'\n | 'silent_refresh_error'\n | 'silently_refreshed'\n | 'silent_refresh_timeout'\n | 'token_validation_error'\n | 'token_expires'\n | 'session_changed'\n | 'session_error'\n | 'session_terminated'\n | 'session_unchanged'\n | 'logout'\n | 'popup_closed'\n | 'popup_blocked'\n | 'token_revoke_error';\n\nexport abstract class OAuthEvent {\n constructor(readonly type: EventType) {}\n}\n\nexport class OAuthSuccessEvent extends OAuthEvent {\n constructor(type: EventType, readonly info: any = null) {\n super(type);\n }\n}\n\nexport class OAuthInfoEvent extends OAuthEvent {\n constructor(type: EventType, readonly info: any = null) {\n super(type);\n }\n}\n\nexport class OAuthErrorEvent extends OAuthEvent {\n constructor(\n type: EventType,\n readonly reason: object,\n readonly params: object = null\n ) {\n super(type);\n }\n}\n\n \n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/OAuthEvent.html":{"url":"classes/OAuthEvent.html","title":"class - OAuthEvent","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n OAuthEvent\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/events.ts\n \n\n\n\n\n\n\n\n \n Constructor\n \n \n \n \nconstructor(type: EventType)\n \n \n \n \n Defined in projects/lib/src/events.ts:28\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n type\n \n \n EventType\n \n \n \n No\n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n\n\n \n\n\n \n export type EventType =\n | 'discovery_document_loaded'\n | 'jwks_load_error'\n | 'invalid_nonce_in_state'\n | 'discovery_document_load_error'\n | 'discovery_document_validation_error'\n | 'user_profile_loaded'\n | 'user_profile_load_error'\n | 'token_received'\n | 'token_error'\n | 'code_error'\n | 'token_refreshed'\n | 'token_refresh_error'\n | 'silent_refresh_error'\n | 'silently_refreshed'\n | 'silent_refresh_timeout'\n | 'token_validation_error'\n | 'token_expires'\n | 'session_changed'\n | 'session_error'\n | 'session_terminated'\n | 'session_unchanged'\n | 'logout'\n | 'popup_closed'\n | 'popup_blocked'\n | 'token_revoke_error';\n\nexport abstract class OAuthEvent {\n constructor(readonly type: EventType) {}\n}\n\nexport class OAuthSuccessEvent extends OAuthEvent {\n constructor(type: EventType, readonly info: any = null) {\n super(type);\n }\n}\n\nexport class OAuthInfoEvent extends OAuthEvent {\n constructor(type: EventType, readonly info: any = null) {\n super(type);\n }\n}\n\nexport class OAuthErrorEvent extends OAuthEvent {\n constructor(\n type: EventType,\n readonly reason: object,\n readonly params: object = null\n ) {\n super(type);\n }\n}\n\n \n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/OAuthInfoEvent.html":{"url":"classes/OAuthInfoEvent.html","title":"class - OAuthInfoEvent","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n OAuthInfoEvent\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/events.ts\n \n\n\n\n \n Extends\n \n \n OAuthEvent\n \n\n\n\n\n \n Constructor\n \n \n \n \nconstructor(type: EventType, info: any)\n \n \n \n \n Defined in projects/lib/src/events.ts:38\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n type\n \n \n EventType\n \n \n \n No\n \n \n \n \n info\n \n \n any\n \n \n \n No\n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n\n\n \n\n\n \n export type EventType =\n | 'discovery_document_loaded'\n | 'jwks_load_error'\n | 'invalid_nonce_in_state'\n | 'discovery_document_load_error'\n | 'discovery_document_validation_error'\n | 'user_profile_loaded'\n | 'user_profile_load_error'\n | 'token_received'\n | 'token_error'\n | 'code_error'\n | 'token_refreshed'\n | 'token_refresh_error'\n | 'silent_refresh_error'\n | 'silently_refreshed'\n | 'silent_refresh_timeout'\n | 'token_validation_error'\n | 'token_expires'\n | 'session_changed'\n | 'session_error'\n | 'session_terminated'\n | 'session_unchanged'\n | 'logout'\n | 'popup_closed'\n | 'popup_blocked'\n | 'token_revoke_error';\n\nexport abstract class OAuthEvent {\n constructor(readonly type: EventType) {}\n}\n\nexport class OAuthSuccessEvent extends OAuthEvent {\n constructor(type: EventType, readonly info: any = null) {\n super(type);\n }\n}\n\nexport class OAuthInfoEvent extends OAuthEvent {\n constructor(type: EventType, readonly info: any = null) {\n super(type);\n }\n}\n\nexport class OAuthErrorEvent extends OAuthEvent {\n constructor(\n type: EventType,\n readonly reason: object,\n readonly params: object = null\n ) {\n super(type);\n }\n}\n\n \n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/OAuthLogger.html":{"url":"classes/OAuthLogger.html","title":"class - OAuthLogger","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n OAuthLogger\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/types.ts\n \n\n\n \n Description\n \n \n Defines the logging interface the OAuthService uses\ninternally. Is compatible with the console object,\nbut you can provide your own implementation as well\nthrough dependency injection.\n\n \n\n\n\n\n \n Index\n \n \n\n \n \n Methods\n \n \n \n \n \n \n Abstract\n debug\n \n \n Abstract\n error\n \n \n Abstract\n info\n \n \n Abstract\n log\n \n \n Abstract\n warn\n \n \n \n \n\n\n\n\n\n \n \n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n Abstract\n debug\n \n \n \n \n \n \n \n debug(message?: any, ...optionalParams: any[])\n \n \n\n\n \n \n Defined in projects/lib/src/types.ts:84\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n message\n \n any\n \n\n \n Yes\n \n\n\n \n \n optionalParams\n \n any[]\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Abstract\n error\n \n \n \n \n \n \n \n error(message?: any, ...optionalParams: any[])\n \n \n\n\n \n \n Defined in projects/lib/src/types.ts:88\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n message\n \n any\n \n\n \n Yes\n \n\n\n \n \n optionalParams\n \n any[]\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Abstract\n info\n \n \n \n \n \n \n \n info(message?: any, ...optionalParams: any[])\n \n \n\n\n \n \n Defined in projects/lib/src/types.ts:85\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n message\n \n any\n \n\n \n Yes\n \n\n\n \n \n optionalParams\n \n any[]\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Abstract\n log\n \n \n \n \n \n \n \n log(message?: any, ...optionalParams: any[])\n \n \n\n\n \n \n Defined in projects/lib/src/types.ts:86\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n message\n \n any\n \n\n \n Yes\n \n\n\n \n \n optionalParams\n \n any[]\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Abstract\n warn\n \n \n \n \n \n \n \n warn(message?: any, ...optionalParams: any[])\n \n \n\n\n \n \n Defined in projects/lib/src/types.ts:87\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n message\n \n any\n \n\n \n Yes\n \n\n\n \n \n optionalParams\n \n any[]\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n\n\n\n\n\n\n \n\n\n \n import { Injectable } from '@angular/core';\n\n/**\n * Additional options that can be passed to tryLogin.\n */\nexport class LoginOptions {\n /**\n * Is called, after a token has been received and\n * successfully validated.\n *\n * Deprecated: Use property ``events`` on OAuthService instead.\n */\n onTokenReceived?: (receivedTokens: ReceivedTokens) => void;\n\n /**\n * Hook, to validate the received tokens.\n *\n * Deprecated: Use property ``tokenValidationHandler`` on OAuthService instead.\n */\n validationHandler?: (receivedTokens: ReceivedTokens) => Promise;\n\n /**\n * Called when tryLogin detects that the auth server\n * included an error message into the hash fragment.\n *\n * Deprecated: Use property ``events`` on OAuthService instead.\n */\n onLoginError?: (params: object) => void;\n\n /**\n * A custom hash fragment to be used instead of the\n * actual one. This is used for silent refreshes, to\n * pass the iframes hash fragment to this method, and\n * is also used by popup flows in the same manner.\n * This can be used with code flow, where is must be set\n * to a hash symbol followed by the querystring. The\n * question mark is optional, but may be present following\n * the hash symbol.\n */\n customHashFragment?: string;\n\n /**\n * Set this to true to disable the oauth2 state\n * check which is a best practice to avoid\n * security attacks.\n * As OIDC defines a nonce check that includes\n * this, this can be set to true when only doing\n * OIDC.\n */\n disableOAuth2StateCheck?: boolean;\n\n /**\n * Set this to true to disable the nonce\n * check which is used to avoid\n * replay attacks.\n * This flag should never be true in\n * production environments.\n */\n disableNonceCheck? = false;\n\n /**\n * Normally, you want to clear your hash fragment after\n * the lib read the token(s) so that they are not displayed\n * anymore in the url. If not, set this to true. For code flow\n * this controls removing query string values.\n */\n preventClearHashAfterLogin? = false;\n\n /**\n * Set this for code flow if you used a custom redirect Uri\n * when retrieving the code. This is used internally for silent\n * refresh and popup flows.\n */\n customRedirectUri?: string;\n}\n\n/**\n * Defines the logging interface the OAuthService uses\n * internally. Is compatible with the `console` object,\n * but you can provide your own implementation as well\n * through dependency injection.\n */\nexport abstract class OAuthLogger {\n abstract debug(message?: any, ...optionalParams: any[]): void;\n abstract info(message?: any, ...optionalParams: any[]): void;\n abstract log(message?: any, ...optionalParams: any[]): void;\n abstract warn(message?: any, ...optionalParams: any[]): void;\n abstract error(message?: any, ...optionalParams: any[]): void;\n}\n\n/**\n * Defines a simple storage that can be used for\n * storing the tokens at client side.\n * Is compatible to localStorage and sessionStorage,\n * but you can also create your own implementations.\n */\nexport abstract class OAuthStorage {\n abstract getItem(key: string): string | null;\n abstract removeItem(key: string): void;\n abstract setItem(key: string, data: string): void;\n}\n\n@Injectable()\nexport class MemoryStorage implements OAuthStorage {\n private data = new Map();\n\n getItem(key: string): string {\n return this.data.get(key);\n }\n\n removeItem(key: string): void {\n this.data.delete(key);\n }\n\n setItem(key: string, data: string): void {\n this.data.set(key, data);\n }\n}\n\n/**\n * Represents the received tokens, the received state\n * and the parsed claims from the id-token.\n */\nexport class ReceivedTokens {\n idToken: string;\n accessToken: string;\n idClaims?: object;\n state?: string;\n}\n\n/**\n * Represents the parsed and validated id_token.\n */\nexport interface ParsedIdToken {\n idToken: string;\n idTokenClaims: object;\n idTokenHeader: object;\n idTokenClaimsJson: string;\n idTokenHeaderJson: string;\n idTokenExpiresAt: number;\n}\n\n/**\n * Represents the response from the token endpoint\n * http://openid.net/specs/openid-connect-core-1_0.html#TokenEndpoint\n */\nexport interface TokenResponse {\n access_token: string;\n id_token: string;\n token_type: string;\n expires_in: number;\n refresh_token: string;\n scope: string;\n state?: string;\n}\n\n/**\n * Represents the response from the user info endpoint\n * http://openid.net/specs/openid-connect-core-1_0.html#UserInfo\n */\nexport interface UserInfo {\n sub: string;\n [key: string]: any;\n}\n\n/**\n * Represents an OpenID Connect discovery document\n */\nexport interface OidcDiscoveryDoc {\n issuer: string;\n authorization_endpoint: string;\n token_endpoint: string;\n token_endpoint_auth_methods_supported: string[];\n token_endpoint_auth_signing_alg_values_supported: string[];\n userinfo_endpoint: string;\n check_session_iframe: string;\n end_session_endpoint: string;\n jwks_uri: string;\n registration_endpoint: string;\n scopes_supported: string[];\n response_types_supported: string[];\n acr_values_supported: string[];\n response_modes_supported: string[];\n grant_types_supported: string[];\n subject_types_supported: string[];\n userinfo_signing_alg_values_supported: string[];\n userinfo_encryption_alg_values_supported: string[];\n userinfo_encryption_enc_values_supported: string[];\n id_token_signing_alg_values_supported: string[];\n id_token_encryption_alg_values_supported: string[];\n id_token_encryption_enc_values_supported: string[];\n request_object_signing_alg_values_supported: string[];\n display_values_supported: string[];\n claim_types_supported: string[];\n claims_supported: string[];\n claims_parameter_supported: boolean;\n service_documentation: string;\n ui_locales_supported: string[];\n revocation_endpoint: string;\n}\n\n \n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"modules/OAuthModule.html":{"url":"modules/OAuthModule.html","title":"module - OAuthModule","body":"\n \n\n\n\n\n Modules\n OAuthModule\n\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n\n \n File\n \n \n projects/lib/src/angular-oauth-oidc.module.ts\n \n\n\n\n\n\n \n \n \n \n\n \n \n \n Methods\n \n \n \n \n \n \n \n Static\n forRoot\n \n \n \n \n \n \n \n forRoot(config: OAuthModuleConfig, validationHandlerClass)\n \n \n\n\n \n \n Defined in projects/lib/src/angular-oauth-oidc.module.ts:30\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n Default value\n \n \n \n \n config\n \n OAuthModuleConfig\n \n\n \n No\n \n\n \n null\n \n\n \n \n validationHandlerClass\n \n \n\n \n No\n \n\n \n NullValidationHandler\n \n\n \n \n \n \n \n \n \n Returns : ModuleWithProviders\n\n \n \n \n \n \n \n \n \n\n \n\n\n \n import { DateTimeProvider, SystemDateTimeProvider } from './date-time-provider';\nimport { OAuthStorage, OAuthLogger } from './types';\nimport { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\n\nimport { OAuthService } from './oauth-service';\nimport { UrlHelperService } from './url-helper.service';\n\nimport { OAuthModuleConfig } from './oauth-module.config';\nimport {\n OAuthResourceServerErrorHandler,\n OAuthNoopResourceServerErrorHandler,\n} from './interceptors/resource-server-error-handler';\nimport { DefaultOAuthInterceptor } from './interceptors/default-oauth.interceptor';\nimport { ValidationHandler } from './token-validation/validation-handler';\nimport { NullValidationHandler } from './token-validation/null-validation-handler';\nimport { createDefaultLogger, createDefaultStorage } from './factories';\nimport {\n HashHandler,\n DefaultHashHandler,\n} from './token-validation/hash-handler';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [],\n exports: [],\n})\nexport class OAuthModule {\n static forRoot(\n config: OAuthModuleConfig = null,\n validationHandlerClass = NullValidationHandler\n ): ModuleWithProviders {\n return {\n ngModule: OAuthModule,\n providers: [\n OAuthService,\n UrlHelperService,\n { provide: OAuthLogger, useFactory: createDefaultLogger },\n { provide: OAuthStorage, useFactory: createDefaultStorage },\n { provide: ValidationHandler, useClass: validationHandlerClass },\n { provide: HashHandler, useClass: DefaultHashHandler },\n {\n provide: OAuthResourceServerErrorHandler,\n useClass: OAuthNoopResourceServerErrorHandler,\n },\n { provide: OAuthModuleConfig, useValue: config },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: DefaultOAuthInterceptor,\n multi: true,\n },\n { provide: DateTimeProvider, useClass: SystemDateTimeProvider },\n ],\n };\n }\n}\n\n \n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/OAuthModuleConfig.html":{"url":"classes/OAuthModuleConfig.html","title":"class - OAuthModuleConfig","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n OAuthModuleConfig\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/oauth-module.config.ts\n \n\n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n resourceServer\n \n \n \n \n\n\n\n\n\n\n \n \n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n resourceServer\n \n \n \n \n \n \n Type : OAuthResourceServerConfig\n\n \n \n \n \n Defined in projects/lib/src/oauth-module.config.ts:2\n \n \n\n\n \n \n\n\n\n\n\n\n\n\n \n\n\n \n export abstract class OAuthModuleConfig {\n resourceServer: OAuthResourceServerConfig;\n}\n\nexport abstract class OAuthResourceServerConfig {\n /**\n * Urls for which calls should be intercepted.\n * If there is an ResourceServerErrorHandler registered, it is used for them.\n * If sendAccessToken is set to true, the access_token is send to them too.\n */\n allowedUrls?: Array;\n sendAccessToken: boolean;\n customUrlValidation?: (url: string) => boolean;\n}\n\n \n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/OAuthNoopResourceServerErrorHandler.html":{"url":"classes/OAuthNoopResourceServerErrorHandler.html","title":"class - OAuthNoopResourceServerErrorHandler","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n OAuthNoopResourceServerErrorHandler\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/interceptors/resource-server-error-handler.ts\n \n\n\n\n\n \n Implements\n \n \n OAuthResourceServerErrorHandler\n \n\n\n \n Index\n \n \n\n \n \n Methods\n \n \n \n \n \n \n handleError\n \n \n \n \n\n\n\n\n\n \n \n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n handleError\n \n \n \n \n \n \nhandleError(err: HttpResponse)\n \n \n\n\n \n \n Defined in projects/lib/src/interceptors/resource-server-error-handler.ts:11\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n err\n \n HttpResponse\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : Observable\n\n \n \n \n \n \n \n \n \n\n\n\n\n\n\n \n\n\n \n import { HttpResponse } from '@angular/common/http';\nimport { Observable, throwError } from 'rxjs';\n\nexport abstract class OAuthResourceServerErrorHandler {\n abstract handleError(err: HttpResponse): Observable;\n}\n\nexport class OAuthNoopResourceServerErrorHandler\n implements OAuthResourceServerErrorHandler\n{\n handleError(err: HttpResponse): Observable {\n return throwError(err);\n }\n}\n\n \n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/OAuthResourceServerConfig.html":{"url":"classes/OAuthResourceServerConfig.html","title":"class - OAuthResourceServerConfig","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n OAuthResourceServerConfig\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/oauth-module.config.ts\n \n\n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Optional\n allowedUrls\n \n \n Optional\n customUrlValidation\n \n \n sendAccessToken\n \n \n \n \n\n\n\n\n\n\n \n \n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n Optional\n allowedUrls\n \n \n \n \n \n \n Type : Array\n\n \n \n \n \n Defined in projects/lib/src/oauth-module.config.ts:11\n \n \n\n \n \n Urls for which calls should be intercepted.\nIf there is an ResourceServerErrorHandler registered, it is used for them.\nIf sendAccessToken is set to true, the access_token is send to them too.\n\n \n \n\n \n \n \n \n \n \n \n \n Optional\n customUrlValidation\n \n \n \n \n \n \n Type : function\n\n \n \n \n \n Defined in projects/lib/src/oauth-module.config.ts:13\n \n \n\n\n \n \n \n \n \n \n \n \n sendAccessToken\n \n \n \n \n \n \n Type : boolean\n\n \n \n \n \n Defined in projects/lib/src/oauth-module.config.ts:12\n \n \n\n\n \n \n\n\n\n\n\n\n\n\n \n\n\n \n export abstract class OAuthModuleConfig {\n resourceServer: OAuthResourceServerConfig;\n}\n\nexport abstract class OAuthResourceServerConfig {\n /**\n * Urls for which calls should be intercepted.\n * If there is an ResourceServerErrorHandler registered, it is used for them.\n * If sendAccessToken is set to true, the access_token is send to them too.\n */\n allowedUrls?: Array;\n sendAccessToken: boolean;\n customUrlValidation?: (url: string) => boolean;\n}\n\n \n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/OAuthResourceServerErrorHandler.html":{"url":"classes/OAuthResourceServerErrorHandler.html","title":"class - OAuthResourceServerErrorHandler","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n OAuthResourceServerErrorHandler\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/interceptors/resource-server-error-handler.ts\n \n\n\n\n\n\n\n \n Index\n \n \n\n \n \n Methods\n \n \n \n \n \n \n Abstract\n handleError\n \n \n \n \n\n\n\n\n\n \n \n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n Abstract\n handleError\n \n \n \n \n \n \n \n handleError(err: HttpResponse)\n \n \n\n\n \n \n Defined in projects/lib/src/interceptors/resource-server-error-handler.ts:5\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n err\n \n HttpResponse\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : Observable\n\n \n \n \n \n \n \n \n \n\n\n\n\n\n\n \n\n\n \n import { HttpResponse } from '@angular/common/http';\nimport { Observable, throwError } from 'rxjs';\n\nexport abstract class OAuthResourceServerErrorHandler {\n abstract handleError(err: HttpResponse): Observable;\n}\n\nexport class OAuthNoopResourceServerErrorHandler\n implements OAuthResourceServerErrorHandler\n{\n handleError(err: HttpResponse): Observable {\n return throwError(err);\n }\n}\n\n \n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/OAuthStorage.html":{"url":"classes/OAuthStorage.html","title":"class - OAuthStorage","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n OAuthStorage\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/types.ts\n \n\n\n \n Description\n \n \n Defines a simple storage that can be used for\nstoring the tokens at client side.\nIs compatible to localStorage and sessionStorage,\nbut you can also create your own implementations.\n\n \n\n\n\n\n \n Index\n \n \n\n \n \n Methods\n \n \n \n \n \n \n Abstract\n getItem\n \n \n Abstract\n removeItem\n \n \n Abstract\n setItem\n \n \n \n \n\n\n\n\n\n \n \n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n Abstract\n getItem\n \n \n \n \n \n \n \n getItem(key: string)\n \n \n\n\n \n \n Defined in projects/lib/src/types.ts:98\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n key\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : string | null\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Abstract\n removeItem\n \n \n \n \n \n \n \n removeItem(key: string)\n \n \n\n\n \n \n Defined in projects/lib/src/types.ts:99\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n key\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Abstract\n setItem\n \n \n \n \n \n \n \n setItem(key: string, data: string)\n \n \n\n\n \n \n Defined in projects/lib/src/types.ts:100\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n key\n \n string\n \n\n \n No\n \n\n\n \n \n data\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n\n\n\n\n\n\n \n\n\n \n import { Injectable } from '@angular/core';\n\n/**\n * Additional options that can be passed to tryLogin.\n */\nexport class LoginOptions {\n /**\n * Is called, after a token has been received and\n * successfully validated.\n *\n * Deprecated: Use property ``events`` on OAuthService instead.\n */\n onTokenReceived?: (receivedTokens: ReceivedTokens) => void;\n\n /**\n * Hook, to validate the received tokens.\n *\n * Deprecated: Use property ``tokenValidationHandler`` on OAuthService instead.\n */\n validationHandler?: (receivedTokens: ReceivedTokens) => Promise;\n\n /**\n * Called when tryLogin detects that the auth server\n * included an error message into the hash fragment.\n *\n * Deprecated: Use property ``events`` on OAuthService instead.\n */\n onLoginError?: (params: object) => void;\n\n /**\n * A custom hash fragment to be used instead of the\n * actual one. This is used for silent refreshes, to\n * pass the iframes hash fragment to this method, and\n * is also used by popup flows in the same manner.\n * This can be used with code flow, where is must be set\n * to a hash symbol followed by the querystring. The\n * question mark is optional, but may be present following\n * the hash symbol.\n */\n customHashFragment?: string;\n\n /**\n * Set this to true to disable the oauth2 state\n * check which is a best practice to avoid\n * security attacks.\n * As OIDC defines a nonce check that includes\n * this, this can be set to true when only doing\n * OIDC.\n */\n disableOAuth2StateCheck?: boolean;\n\n /**\n * Set this to true to disable the nonce\n * check which is used to avoid\n * replay attacks.\n * This flag should never be true in\n * production environments.\n */\n disableNonceCheck? = false;\n\n /**\n * Normally, you want to clear your hash fragment after\n * the lib read the token(s) so that they are not displayed\n * anymore in the url. If not, set this to true. For code flow\n * this controls removing query string values.\n */\n preventClearHashAfterLogin? = false;\n\n /**\n * Set this for code flow if you used a custom redirect Uri\n * when retrieving the code. This is used internally for silent\n * refresh and popup flows.\n */\n customRedirectUri?: string;\n}\n\n/**\n * Defines the logging interface the OAuthService uses\n * internally. Is compatible with the `console` object,\n * but you can provide your own implementation as well\n * through dependency injection.\n */\nexport abstract class OAuthLogger {\n abstract debug(message?: any, ...optionalParams: any[]): void;\n abstract info(message?: any, ...optionalParams: any[]): void;\n abstract log(message?: any, ...optionalParams: any[]): void;\n abstract warn(message?: any, ...optionalParams: any[]): void;\n abstract error(message?: any, ...optionalParams: any[]): void;\n}\n\n/**\n * Defines a simple storage that can be used for\n * storing the tokens at client side.\n * Is compatible to localStorage and sessionStorage,\n * but you can also create your own implementations.\n */\nexport abstract class OAuthStorage {\n abstract getItem(key: string): string | null;\n abstract removeItem(key: string): void;\n abstract setItem(key: string, data: string): void;\n}\n\n@Injectable()\nexport class MemoryStorage implements OAuthStorage {\n private data = new Map();\n\n getItem(key: string): string {\n return this.data.get(key);\n }\n\n removeItem(key: string): void {\n this.data.delete(key);\n }\n\n setItem(key: string, data: string): void {\n this.data.set(key, data);\n }\n}\n\n/**\n * Represents the received tokens, the received state\n * and the parsed claims from the id-token.\n */\nexport class ReceivedTokens {\n idToken: string;\n accessToken: string;\n idClaims?: object;\n state?: string;\n}\n\n/**\n * Represents the parsed and validated id_token.\n */\nexport interface ParsedIdToken {\n idToken: string;\n idTokenClaims: object;\n idTokenHeader: object;\n idTokenClaimsJson: string;\n idTokenHeaderJson: string;\n idTokenExpiresAt: number;\n}\n\n/**\n * Represents the response from the token endpoint\n * http://openid.net/specs/openid-connect-core-1_0.html#TokenEndpoint\n */\nexport interface TokenResponse {\n access_token: string;\n id_token: string;\n token_type: string;\n expires_in: number;\n refresh_token: string;\n scope: string;\n state?: string;\n}\n\n/**\n * Represents the response from the user info endpoint\n * http://openid.net/specs/openid-connect-core-1_0.html#UserInfo\n */\nexport interface UserInfo {\n sub: string;\n [key: string]: any;\n}\n\n/**\n * Represents an OpenID Connect discovery document\n */\nexport interface OidcDiscoveryDoc {\n issuer: string;\n authorization_endpoint: string;\n token_endpoint: string;\n token_endpoint_auth_methods_supported: string[];\n token_endpoint_auth_signing_alg_values_supported: string[];\n userinfo_endpoint: string;\n check_session_iframe: string;\n end_session_endpoint: string;\n jwks_uri: string;\n registration_endpoint: string;\n scopes_supported: string[];\n response_types_supported: string[];\n acr_values_supported: string[];\n response_modes_supported: string[];\n grant_types_supported: string[];\n subject_types_supported: string[];\n userinfo_signing_alg_values_supported: string[];\n userinfo_encryption_alg_values_supported: string[];\n userinfo_encryption_enc_values_supported: string[];\n id_token_signing_alg_values_supported: string[];\n id_token_encryption_alg_values_supported: string[];\n id_token_encryption_enc_values_supported: string[];\n request_object_signing_alg_values_supported: string[];\n display_values_supported: string[];\n claim_types_supported: string[];\n claims_supported: string[];\n claims_parameter_supported: boolean;\n service_documentation: string;\n ui_locales_supported: string[];\n revocation_endpoint: string;\n}\n\n \n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/OAuthSuccessEvent.html":{"url":"classes/OAuthSuccessEvent.html","title":"class - OAuthSuccessEvent","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n OAuthSuccessEvent\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/events.ts\n \n\n\n\n \n Extends\n \n \n OAuthEvent\n \n\n\n\n\n \n Constructor\n \n \n \n \nconstructor(type: EventType, info: any)\n \n \n \n \n Defined in projects/lib/src/events.ts:32\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n type\n \n \n EventType\n \n \n \n No\n \n \n \n \n info\n \n \n any\n \n \n \n No\n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n\n\n \n\n\n \n export type EventType =\n | 'discovery_document_loaded'\n | 'jwks_load_error'\n | 'invalid_nonce_in_state'\n | 'discovery_document_load_error'\n | 'discovery_document_validation_error'\n | 'user_profile_loaded'\n | 'user_profile_load_error'\n | 'token_received'\n | 'token_error'\n | 'code_error'\n | 'token_refreshed'\n | 'token_refresh_error'\n | 'silent_refresh_error'\n | 'silently_refreshed'\n | 'silent_refresh_timeout'\n | 'token_validation_error'\n | 'token_expires'\n | 'session_changed'\n | 'session_error'\n | 'session_terminated'\n | 'session_unchanged'\n | 'logout'\n | 'popup_closed'\n | 'popup_blocked'\n | 'token_revoke_error';\n\nexport abstract class OAuthEvent {\n constructor(readonly type: EventType) {}\n}\n\nexport class OAuthSuccessEvent extends OAuthEvent {\n constructor(type: EventType, readonly info: any = null) {\n super(type);\n }\n}\n\nexport class OAuthInfoEvent extends OAuthEvent {\n constructor(type: EventType, readonly info: any = null) {\n super(type);\n }\n}\n\nexport class OAuthErrorEvent extends OAuthEvent {\n constructor(\n type: EventType,\n readonly reason: object,\n readonly params: object = null\n ) {\n super(type);\n }\n}\n\n \n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"interfaces/OidcDiscoveryDoc.html":{"url":"interfaces/OidcDiscoveryDoc.html","title":"interface - OidcDiscoveryDoc","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n Interfaces\n \n OidcDiscoveryDoc\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/types.ts\n \n\n\n \n Description\n \n \n Represents an OpenID Connect discovery document\n\n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n \n acr_values_supported\n \n \n \n \n authorization_endpoint\n \n \n \n \n check_session_iframe\n \n \n \n \n claim_types_supported\n \n \n \n \n claims_parameter_supported\n \n \n \n \n claims_supported\n \n \n \n \n display_values_supported\n \n \n \n \n end_session_endpoint\n \n \n \n \n grant_types_supported\n \n \n \n \n id_token_encryption_alg_values_supported\n \n \n \n \n id_token_encryption_enc_values_supported\n \n \n \n \n id_token_signing_alg_values_supported\n \n \n \n \n issuer\n \n \n \n \n jwks_uri\n \n \n \n \n registration_endpoint\n \n \n \n \n request_object_signing_alg_values_supported\n \n \n \n \n response_modes_supported\n \n \n \n \n response_types_supported\n \n \n \n \n revocation_endpoint\n \n \n \n \n scopes_supported\n \n \n \n \n service_documentation\n \n \n \n \n subject_types_supported\n \n \n \n \n token_endpoint\n \n \n \n \n token_endpoint_auth_methods_supported\n \n \n \n \n token_endpoint_auth_signing_alg_values_supported\n \n \n \n \n ui_locales_supported\n \n \n \n \n userinfo_encryption_alg_values_supported\n \n \n \n \n userinfo_encryption_enc_values_supported\n \n \n \n \n userinfo_endpoint\n \n \n \n \n userinfo_signing_alg_values_supported\n \n \n \n \n \n \n \n \n\n\n\n \n Properties\n \n \n \n \n \n acr_values_supported\n \n \n \n \n \n \n \n \n acr_values_supported: string[]\n\n \n \n\n\n \n \n Type : string[]\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n authorization_endpoint\n \n \n \n \n \n \n \n \n authorization_endpoint: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n check_session_iframe\n \n \n \n \n \n \n \n \n check_session_iframe: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n claim_types_supported\n \n \n \n \n \n \n \n \n claim_types_supported: string[]\n\n \n \n\n\n \n \n Type : string[]\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n claims_parameter_supported\n \n \n \n \n \n \n \n \n claims_parameter_supported: boolean\n\n \n \n\n\n \n \n Type : boolean\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n claims_supported\n \n \n \n \n \n \n \n \n claims_supported: string[]\n\n \n \n\n\n \n \n Type : string[]\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n display_values_supported\n \n \n \n \n \n \n \n \n display_values_supported: string[]\n\n \n \n\n\n \n \n Type : string[]\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n end_session_endpoint\n \n \n \n \n \n \n \n \n end_session_endpoint: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n grant_types_supported\n \n \n \n \n \n \n \n \n grant_types_supported: string[]\n\n \n \n\n\n \n \n Type : string[]\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n id_token_encryption_alg_values_supported\n \n \n \n \n \n \n \n \n id_token_encryption_alg_values_supported: string[]\n\n \n \n\n\n \n \n Type : string[]\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n id_token_encryption_enc_values_supported\n \n \n \n \n \n \n \n \n id_token_encryption_enc_values_supported: string[]\n\n \n \n\n\n \n \n Type : string[]\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n id_token_signing_alg_values_supported\n \n \n \n \n \n \n \n \n id_token_signing_alg_values_supported: string[]\n\n \n \n\n\n \n \n Type : string[]\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n issuer\n \n \n \n \n \n \n \n \n issuer: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n jwks_uri\n \n \n \n \n \n \n \n \n jwks_uri: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n registration_endpoint\n \n \n \n \n \n \n \n \n registration_endpoint: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n request_object_signing_alg_values_supported\n \n \n \n \n \n \n \n \n request_object_signing_alg_values_supported: string[]\n\n \n \n\n\n \n \n Type : string[]\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n response_modes_supported\n \n \n \n \n \n \n \n \n response_modes_supported: string[]\n\n \n \n\n\n \n \n Type : string[]\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n response_types_supported\n \n \n \n \n \n \n \n \n response_types_supported: string[]\n\n \n \n\n\n \n \n Type : string[]\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n revocation_endpoint\n \n \n \n \n \n \n \n \n revocation_endpoint: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n scopes_supported\n \n \n \n \n \n \n \n \n scopes_supported: string[]\n\n \n \n\n\n \n \n Type : string[]\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n service_documentation\n \n \n \n \n \n \n \n \n service_documentation: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n subject_types_supported\n \n \n \n \n \n \n \n \n subject_types_supported: string[]\n\n \n \n\n\n \n \n Type : string[]\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n token_endpoint\n \n \n \n \n \n \n \n \n token_endpoint: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n token_endpoint_auth_methods_supported\n \n \n \n \n \n \n \n \n token_endpoint_auth_methods_supported: string[]\n\n \n \n\n\n \n \n Type : string[]\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n token_endpoint_auth_signing_alg_values_supported\n \n \n \n \n \n \n \n \n token_endpoint_auth_signing_alg_values_supported: string[]\n\n \n \n\n\n \n \n Type : string[]\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n ui_locales_supported\n \n \n \n \n \n \n \n \n ui_locales_supported: string[]\n\n \n \n\n\n \n \n Type : string[]\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n userinfo_encryption_alg_values_supported\n \n \n \n \n \n \n \n \n userinfo_encryption_alg_values_supported: string[]\n\n \n \n\n\n \n \n Type : string[]\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n userinfo_encryption_enc_values_supported\n \n \n \n \n \n \n \n \n userinfo_encryption_enc_values_supported: string[]\n\n \n \n\n\n \n \n Type : string[]\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n userinfo_endpoint\n \n \n \n \n \n \n \n \n userinfo_endpoint: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n userinfo_signing_alg_values_supported\n \n \n \n \n \n \n \n \n userinfo_signing_alg_values_supported: string[]\n\n \n \n\n\n \n \n Type : string[]\n\n \n \n\n\n\n\n\n \n \n \n \n\n\n \n import { Injectable } from '@angular/core';\n\n/**\n * Additional options that can be passed to tryLogin.\n */\nexport class LoginOptions {\n /**\n * Is called, after a token has been received and\n * successfully validated.\n *\n * Deprecated: Use property ``events`` on OAuthService instead.\n */\n onTokenReceived?: (receivedTokens: ReceivedTokens) => void;\n\n /**\n * Hook, to validate the received tokens.\n *\n * Deprecated: Use property ``tokenValidationHandler`` on OAuthService instead.\n */\n validationHandler?: (receivedTokens: ReceivedTokens) => Promise;\n\n /**\n * Called when tryLogin detects that the auth server\n * included an error message into the hash fragment.\n *\n * Deprecated: Use property ``events`` on OAuthService instead.\n */\n onLoginError?: (params: object) => void;\n\n /**\n * A custom hash fragment to be used instead of the\n * actual one. This is used for silent refreshes, to\n * pass the iframes hash fragment to this method, and\n * is also used by popup flows in the same manner.\n * This can be used with code flow, where is must be set\n * to a hash symbol followed by the querystring. The\n * question mark is optional, but may be present following\n * the hash symbol.\n */\n customHashFragment?: string;\n\n /**\n * Set this to true to disable the oauth2 state\n * check which is a best practice to avoid\n * security attacks.\n * As OIDC defines a nonce check that includes\n * this, this can be set to true when only doing\n * OIDC.\n */\n disableOAuth2StateCheck?: boolean;\n\n /**\n * Set this to true to disable the nonce\n * check which is used to avoid\n * replay attacks.\n * This flag should never be true in\n * production environments.\n */\n disableNonceCheck? = false;\n\n /**\n * Normally, you want to clear your hash fragment after\n * the lib read the token(s) so that they are not displayed\n * anymore in the url. If not, set this to true. For code flow\n * this controls removing query string values.\n */\n preventClearHashAfterLogin? = false;\n\n /**\n * Set this for code flow if you used a custom redirect Uri\n * when retrieving the code. This is used internally for silent\n * refresh and popup flows.\n */\n customRedirectUri?: string;\n}\n\n/**\n * Defines the logging interface the OAuthService uses\n * internally. Is compatible with the `console` object,\n * but you can provide your own implementation as well\n * through dependency injection.\n */\nexport abstract class OAuthLogger {\n abstract debug(message?: any, ...optionalParams: any[]): void;\n abstract info(message?: any, ...optionalParams: any[]): void;\n abstract log(message?: any, ...optionalParams: any[]): void;\n abstract warn(message?: any, ...optionalParams: any[]): void;\n abstract error(message?: any, ...optionalParams: any[]): void;\n}\n\n/**\n * Defines a simple storage that can be used for\n * storing the tokens at client side.\n * Is compatible to localStorage and sessionStorage,\n * but you can also create your own implementations.\n */\nexport abstract class OAuthStorage {\n abstract getItem(key: string): string | null;\n abstract removeItem(key: string): void;\n abstract setItem(key: string, data: string): void;\n}\n\n@Injectable()\nexport class MemoryStorage implements OAuthStorage {\n private data = new Map();\n\n getItem(key: string): string {\n return this.data.get(key);\n }\n\n removeItem(key: string): void {\n this.data.delete(key);\n }\n\n setItem(key: string, data: string): void {\n this.data.set(key, data);\n }\n}\n\n/**\n * Represents the received tokens, the received state\n * and the parsed claims from the id-token.\n */\nexport class ReceivedTokens {\n idToken: string;\n accessToken: string;\n idClaims?: object;\n state?: string;\n}\n\n/**\n * Represents the parsed and validated id_token.\n */\nexport interface ParsedIdToken {\n idToken: string;\n idTokenClaims: object;\n idTokenHeader: object;\n idTokenClaimsJson: string;\n idTokenHeaderJson: string;\n idTokenExpiresAt: number;\n}\n\n/**\n * Represents the response from the token endpoint\n * http://openid.net/specs/openid-connect-core-1_0.html#TokenEndpoint\n */\nexport interface TokenResponse {\n access_token: string;\n id_token: string;\n token_type: string;\n expires_in: number;\n refresh_token: string;\n scope: string;\n state?: string;\n}\n\n/**\n * Represents the response from the user info endpoint\n * http://openid.net/specs/openid-connect-core-1_0.html#UserInfo\n */\nexport interface UserInfo {\n sub: string;\n [key: string]: any;\n}\n\n/**\n * Represents an OpenID Connect discovery document\n */\nexport interface OidcDiscoveryDoc {\n issuer: string;\n authorization_endpoint: string;\n token_endpoint: string;\n token_endpoint_auth_methods_supported: string[];\n token_endpoint_auth_signing_alg_values_supported: string[];\n userinfo_endpoint: string;\n check_session_iframe: string;\n end_session_endpoint: string;\n jwks_uri: string;\n registration_endpoint: string;\n scopes_supported: string[];\n response_types_supported: string[];\n acr_values_supported: string[];\n response_modes_supported: string[];\n grant_types_supported: string[];\n subject_types_supported: string[];\n userinfo_signing_alg_values_supported: string[];\n userinfo_encryption_alg_values_supported: string[];\n userinfo_encryption_enc_values_supported: string[];\n id_token_signing_alg_values_supported: string[];\n id_token_encryption_alg_values_supported: string[];\n id_token_encryption_enc_values_supported: string[];\n request_object_signing_alg_values_supported: string[];\n display_values_supported: string[];\n claim_types_supported: string[];\n claims_supported: string[];\n claims_parameter_supported: boolean;\n service_documentation: string;\n ui_locales_supported: string[];\n revocation_endpoint: string;\n}\n\n \n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"interfaces/ParsedIdToken.html":{"url":"interfaces/ParsedIdToken.html","title":"interface - ParsedIdToken","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n Interfaces\n \n ParsedIdToken\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/types.ts\n \n\n\n \n Description\n \n \n Represents the parsed and validated id_token.\n\n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n \n idToken\n \n \n \n \n idTokenClaims\n \n \n \n \n idTokenClaimsJson\n \n \n \n \n idTokenExpiresAt\n \n \n \n \n idTokenHeader\n \n \n \n \n idTokenHeaderJson\n \n \n \n \n \n \n \n \n\n\n\n \n Properties\n \n \n \n \n \n idToken\n \n \n \n \n \n \n \n \n idToken: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n idTokenClaims\n \n \n \n \n \n \n \n \n idTokenClaims: object\n\n \n \n\n\n \n \n Type : object\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n idTokenClaimsJson\n \n \n \n \n \n \n \n \n idTokenClaimsJson: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n idTokenExpiresAt\n \n \n \n \n \n \n \n \n idTokenExpiresAt: number\n\n \n \n\n\n \n \n Type : number\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n idTokenHeader\n \n \n \n \n \n \n \n \n idTokenHeader: object\n\n \n \n\n\n \n \n Type : object\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n idTokenHeaderJson\n \n \n \n \n \n \n \n \n idTokenHeaderJson: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n\n\n \n import { Injectable } from '@angular/core';\n\n/**\n * Additional options that can be passed to tryLogin.\n */\nexport class LoginOptions {\n /**\n * Is called, after a token has been received and\n * successfully validated.\n *\n * Deprecated: Use property ``events`` on OAuthService instead.\n */\n onTokenReceived?: (receivedTokens: ReceivedTokens) => void;\n\n /**\n * Hook, to validate the received tokens.\n *\n * Deprecated: Use property ``tokenValidationHandler`` on OAuthService instead.\n */\n validationHandler?: (receivedTokens: ReceivedTokens) => Promise;\n\n /**\n * Called when tryLogin detects that the auth server\n * included an error message into the hash fragment.\n *\n * Deprecated: Use property ``events`` on OAuthService instead.\n */\n onLoginError?: (params: object) => void;\n\n /**\n * A custom hash fragment to be used instead of the\n * actual one. This is used for silent refreshes, to\n * pass the iframes hash fragment to this method, and\n * is also used by popup flows in the same manner.\n * This can be used with code flow, where is must be set\n * to a hash symbol followed by the querystring. The\n * question mark is optional, but may be present following\n * the hash symbol.\n */\n customHashFragment?: string;\n\n /**\n * Set this to true to disable the oauth2 state\n * check which is a best practice to avoid\n * security attacks.\n * As OIDC defines a nonce check that includes\n * this, this can be set to true when only doing\n * OIDC.\n */\n disableOAuth2StateCheck?: boolean;\n\n /**\n * Set this to true to disable the nonce\n * check which is used to avoid\n * replay attacks.\n * This flag should never be true in\n * production environments.\n */\n disableNonceCheck? = false;\n\n /**\n * Normally, you want to clear your hash fragment after\n * the lib read the token(s) so that they are not displayed\n * anymore in the url. If not, set this to true. For code flow\n * this controls removing query string values.\n */\n preventClearHashAfterLogin? = false;\n\n /**\n * Set this for code flow if you used a custom redirect Uri\n * when retrieving the code. This is used internally for silent\n * refresh and popup flows.\n */\n customRedirectUri?: string;\n}\n\n/**\n * Defines the logging interface the OAuthService uses\n * internally. Is compatible with the `console` object,\n * but you can provide your own implementation as well\n * through dependency injection.\n */\nexport abstract class OAuthLogger {\n abstract debug(message?: any, ...optionalParams: any[]): void;\n abstract info(message?: any, ...optionalParams: any[]): void;\n abstract log(message?: any, ...optionalParams: any[]): void;\n abstract warn(message?: any, ...optionalParams: any[]): void;\n abstract error(message?: any, ...optionalParams: any[]): void;\n}\n\n/**\n * Defines a simple storage that can be used for\n * storing the tokens at client side.\n * Is compatible to localStorage and sessionStorage,\n * but you can also create your own implementations.\n */\nexport abstract class OAuthStorage {\n abstract getItem(key: string): string | null;\n abstract removeItem(key: string): void;\n abstract setItem(key: string, data: string): void;\n}\n\n@Injectable()\nexport class MemoryStorage implements OAuthStorage {\n private data = new Map();\n\n getItem(key: string): string {\n return this.data.get(key);\n }\n\n removeItem(key: string): void {\n this.data.delete(key);\n }\n\n setItem(key: string, data: string): void {\n this.data.set(key, data);\n }\n}\n\n/**\n * Represents the received tokens, the received state\n * and the parsed claims from the id-token.\n */\nexport class ReceivedTokens {\n idToken: string;\n accessToken: string;\n idClaims?: object;\n state?: string;\n}\n\n/**\n * Represents the parsed and validated id_token.\n */\nexport interface ParsedIdToken {\n idToken: string;\n idTokenClaims: object;\n idTokenHeader: object;\n idTokenClaimsJson: string;\n idTokenHeaderJson: string;\n idTokenExpiresAt: number;\n}\n\n/**\n * Represents the response from the token endpoint\n * http://openid.net/specs/openid-connect-core-1_0.html#TokenEndpoint\n */\nexport interface TokenResponse {\n access_token: string;\n id_token: string;\n token_type: string;\n expires_in: number;\n refresh_token: string;\n scope: string;\n state?: string;\n}\n\n/**\n * Represents the response from the user info endpoint\n * http://openid.net/specs/openid-connect-core-1_0.html#UserInfo\n */\nexport interface UserInfo {\n sub: string;\n [key: string]: any;\n}\n\n/**\n * Represents an OpenID Connect discovery document\n */\nexport interface OidcDiscoveryDoc {\n issuer: string;\n authorization_endpoint: string;\n token_endpoint: string;\n token_endpoint_auth_methods_supported: string[];\n token_endpoint_auth_signing_alg_values_supported: string[];\n userinfo_endpoint: string;\n check_session_iframe: string;\n end_session_endpoint: string;\n jwks_uri: string;\n registration_endpoint: string;\n scopes_supported: string[];\n response_types_supported: string[];\n acr_values_supported: string[];\n response_modes_supported: string[];\n grant_types_supported: string[];\n subject_types_supported: string[];\n userinfo_signing_alg_values_supported: string[];\n userinfo_encryption_alg_values_supported: string[];\n userinfo_encryption_enc_values_supported: string[];\n id_token_signing_alg_values_supported: string[];\n id_token_encryption_alg_values_supported: string[];\n id_token_encryption_enc_values_supported: string[];\n request_object_signing_alg_values_supported: string[];\n display_values_supported: string[];\n claim_types_supported: string[];\n claims_supported: string[];\n claims_parameter_supported: boolean;\n service_documentation: string;\n ui_locales_supported: string[];\n revocation_endpoint: string;\n}\n\n \n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/ReceivedTokens.html":{"url":"classes/ReceivedTokens.html","title":"class - ReceivedTokens","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n ReceivedTokens\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/types.ts\n \n\n\n \n Description\n \n \n Represents the received tokens, the received state\nand the parsed claims from the id-token.\n\n \n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n accessToken\n \n \n Optional\n idClaims\n \n \n idToken\n \n \n Optional\n state\n \n \n \n \n\n\n\n\n\n\n \n \n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n accessToken\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in projects/lib/src/types.ts:126\n \n \n\n\n \n \n \n \n \n \n \n \n Optional\n idClaims\n \n \n \n \n \n \n Type : object\n\n \n \n \n \n Defined in projects/lib/src/types.ts:127\n \n \n\n\n \n \n \n \n \n \n \n \n idToken\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in projects/lib/src/types.ts:125\n \n \n\n\n \n \n \n \n \n \n \n \n Optional\n state\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in projects/lib/src/types.ts:128\n \n \n\n\n \n \n\n\n\n\n\n\n\n\n \n\n\n \n import { Injectable } from '@angular/core';\n\n/**\n * Additional options that can be passed to tryLogin.\n */\nexport class LoginOptions {\n /**\n * Is called, after a token has been received and\n * successfully validated.\n *\n * Deprecated: Use property ``events`` on OAuthService instead.\n */\n onTokenReceived?: (receivedTokens: ReceivedTokens) => void;\n\n /**\n * Hook, to validate the received tokens.\n *\n * Deprecated: Use property ``tokenValidationHandler`` on OAuthService instead.\n */\n validationHandler?: (receivedTokens: ReceivedTokens) => Promise;\n\n /**\n * Called when tryLogin detects that the auth server\n * included an error message into the hash fragment.\n *\n * Deprecated: Use property ``events`` on OAuthService instead.\n */\n onLoginError?: (params: object) => void;\n\n /**\n * A custom hash fragment to be used instead of the\n * actual one. This is used for silent refreshes, to\n * pass the iframes hash fragment to this method, and\n * is also used by popup flows in the same manner.\n * This can be used with code flow, where is must be set\n * to a hash symbol followed by the querystring. The\n * question mark is optional, but may be present following\n * the hash symbol.\n */\n customHashFragment?: string;\n\n /**\n * Set this to true to disable the oauth2 state\n * check which is a best practice to avoid\n * security attacks.\n * As OIDC defines a nonce check that includes\n * this, this can be set to true when only doing\n * OIDC.\n */\n disableOAuth2StateCheck?: boolean;\n\n /**\n * Set this to true to disable the nonce\n * check which is used to avoid\n * replay attacks.\n * This flag should never be true in\n * production environments.\n */\n disableNonceCheck? = false;\n\n /**\n * Normally, you want to clear your hash fragment after\n * the lib read the token(s) so that they are not displayed\n * anymore in the url. If not, set this to true. For code flow\n * this controls removing query string values.\n */\n preventClearHashAfterLogin? = false;\n\n /**\n * Set this for code flow if you used a custom redirect Uri\n * when retrieving the code. This is used internally for silent\n * refresh and popup flows.\n */\n customRedirectUri?: string;\n}\n\n/**\n * Defines the logging interface the OAuthService uses\n * internally. Is compatible with the `console` object,\n * but you can provide your own implementation as well\n * through dependency injection.\n */\nexport abstract class OAuthLogger {\n abstract debug(message?: any, ...optionalParams: any[]): void;\n abstract info(message?: any, ...optionalParams: any[]): void;\n abstract log(message?: any, ...optionalParams: any[]): void;\n abstract warn(message?: any, ...optionalParams: any[]): void;\n abstract error(message?: any, ...optionalParams: any[]): void;\n}\n\n/**\n * Defines a simple storage that can be used for\n * storing the tokens at client side.\n * Is compatible to localStorage and sessionStorage,\n * but you can also create your own implementations.\n */\nexport abstract class OAuthStorage {\n abstract getItem(key: string): string | null;\n abstract removeItem(key: string): void;\n abstract setItem(key: string, data: string): void;\n}\n\n@Injectable()\nexport class MemoryStorage implements OAuthStorage {\n private data = new Map();\n\n getItem(key: string): string {\n return this.data.get(key);\n }\n\n removeItem(key: string): void {\n this.data.delete(key);\n }\n\n setItem(key: string, data: string): void {\n this.data.set(key, data);\n }\n}\n\n/**\n * Represents the received tokens, the received state\n * and the parsed claims from the id-token.\n */\nexport class ReceivedTokens {\n idToken: string;\n accessToken: string;\n idClaims?: object;\n state?: string;\n}\n\n/**\n * Represents the parsed and validated id_token.\n */\nexport interface ParsedIdToken {\n idToken: string;\n idTokenClaims: object;\n idTokenHeader: object;\n idTokenClaimsJson: string;\n idTokenHeaderJson: string;\n idTokenExpiresAt: number;\n}\n\n/**\n * Represents the response from the token endpoint\n * http://openid.net/specs/openid-connect-core-1_0.html#TokenEndpoint\n */\nexport interface TokenResponse {\n access_token: string;\n id_token: string;\n token_type: string;\n expires_in: number;\n refresh_token: string;\n scope: string;\n state?: string;\n}\n\n/**\n * Represents the response from the user info endpoint\n * http://openid.net/specs/openid-connect-core-1_0.html#UserInfo\n */\nexport interface UserInfo {\n sub: string;\n [key: string]: any;\n}\n\n/**\n * Represents an OpenID Connect discovery document\n */\nexport interface OidcDiscoveryDoc {\n issuer: string;\n authorization_endpoint: string;\n token_endpoint: string;\n token_endpoint_auth_methods_supported: string[];\n token_endpoint_auth_signing_alg_values_supported: string[];\n userinfo_endpoint: string;\n check_session_iframe: string;\n end_session_endpoint: string;\n jwks_uri: string;\n registration_endpoint: string;\n scopes_supported: string[];\n response_types_supported: string[];\n acr_values_supported: string[];\n response_modes_supported: string[];\n grant_types_supported: string[];\n subject_types_supported: string[];\n userinfo_signing_alg_values_supported: string[];\n userinfo_encryption_alg_values_supported: string[];\n userinfo_encryption_enc_values_supported: string[];\n id_token_signing_alg_values_supported: string[];\n id_token_encryption_alg_values_supported: string[];\n id_token_encryption_enc_values_supported: string[];\n request_object_signing_alg_values_supported: string[];\n display_values_supported: string[];\n claim_types_supported: string[];\n claims_supported: string[];\n claims_parameter_supported: boolean;\n service_documentation: string;\n ui_locales_supported: string[];\n revocation_endpoint: string;\n}\n\n \n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"injectables/SystemDateTimeProvider.html":{"url":"injectables/SystemDateTimeProvider.html","title":"injectable - SystemDateTimeProvider","body":"\n \n\n\n\n\n\n\n\n\n Injectables\n SystemDateTimeProvider\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/date-time-provider.ts\n \n\n\n\n \n Extends\n \n \n DateTimeProvider\n \n\n\n \n Index\n \n \n\n \n \n Methods\n \n \n \n \n \n \n new\n \n \n now\n \n \n \n \n\n\n\n\n\n \n \n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n new\n \n \n \n \n \n \nnew()\n \n \n\n\n \n \n Inherited from DateTimeProvider\n\n \n \n \n \n Defined in DateTimeProvider:14\n\n \n \n\n\n \n \n\n \n Returns : Date\n\n \n \n \n \n \n \n \n \n \n \n \n now\n \n \n \n \n \n \nnow()\n \n \n\n\n \n \n Inherited from DateTimeProvider\n\n \n \n \n \n Defined in DateTimeProvider:10\n\n \n \n\n\n \n \n\n \n Returns : number\n\n \n \n \n \n \n\n\n \n\n\n \n import { Injectable } from '@angular/core';\n\nexport abstract class DateTimeProvider {\n abstract now(): number;\n abstract new(): Date;\n}\n\n@Injectable()\nexport class SystemDateTimeProvider extends DateTimeProvider {\n now(): number {\n return Date.now();\n }\n\n new(): Date {\n return new Date();\n }\n}\n\n \n\n\n\n\n\n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"interfaces/TokenResponse.html":{"url":"interfaces/TokenResponse.html","title":"interface - TokenResponse","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n Interfaces\n \n TokenResponse\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/types.ts\n \n\n\n \n Description\n \n \n Represents the response from the token endpoint\nhttp://openid.net/specs/openid-connect-core-1_0.html#TokenEndpoint\n\n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n \n access_token\n \n \n \n \n expires_in\n \n \n \n \n id_token\n \n \n \n \n refresh_token\n \n \n \n \n scope\n \n \n \n Optional\n \n state\n \n \n \n \n token_type\n \n \n \n \n \n \n \n \n\n\n\n \n Properties\n \n \n \n \n \n access_token\n \n \n \n \n \n \n \n \n access_token: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n expires_in\n \n \n \n \n \n \n \n \n expires_in: number\n\n \n \n\n\n \n \n Type : number\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n id_token\n \n \n \n \n \n \n \n \n id_token: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n refresh_token\n \n \n \n \n \n \n \n \n refresh_token: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n scope\n \n \n \n \n \n \n \n \n scope: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n state\n \n \n \n \n \n \n \n \n state: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n \n \n Optional\n \n \n\n\n\n\n \n \n \n \n \n \n \n token_type\n \n \n \n \n \n \n \n \n token_type: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n\n\n \n import { Injectable } from '@angular/core';\n\n/**\n * Additional options that can be passed to tryLogin.\n */\nexport class LoginOptions {\n /**\n * Is called, after a token has been received and\n * successfully validated.\n *\n * Deprecated: Use property ``events`` on OAuthService instead.\n */\n onTokenReceived?: (receivedTokens: ReceivedTokens) => void;\n\n /**\n * Hook, to validate the received tokens.\n *\n * Deprecated: Use property ``tokenValidationHandler`` on OAuthService instead.\n */\n validationHandler?: (receivedTokens: ReceivedTokens) => Promise;\n\n /**\n * Called when tryLogin detects that the auth server\n * included an error message into the hash fragment.\n *\n * Deprecated: Use property ``events`` on OAuthService instead.\n */\n onLoginError?: (params: object) => void;\n\n /**\n * A custom hash fragment to be used instead of the\n * actual one. This is used for silent refreshes, to\n * pass the iframes hash fragment to this method, and\n * is also used by popup flows in the same manner.\n * This can be used with code flow, where is must be set\n * to a hash symbol followed by the querystring. The\n * question mark is optional, but may be present following\n * the hash symbol.\n */\n customHashFragment?: string;\n\n /**\n * Set this to true to disable the oauth2 state\n * check which is a best practice to avoid\n * security attacks.\n * As OIDC defines a nonce check that includes\n * this, this can be set to true when only doing\n * OIDC.\n */\n disableOAuth2StateCheck?: boolean;\n\n /**\n * Set this to true to disable the nonce\n * check which is used to avoid\n * replay attacks.\n * This flag should never be true in\n * production environments.\n */\n disableNonceCheck? = false;\n\n /**\n * Normally, you want to clear your hash fragment after\n * the lib read the token(s) so that they are not displayed\n * anymore in the url. If not, set this to true. For code flow\n * this controls removing query string values.\n */\n preventClearHashAfterLogin? = false;\n\n /**\n * Set this for code flow if you used a custom redirect Uri\n * when retrieving the code. This is used internally for silent\n * refresh and popup flows.\n */\n customRedirectUri?: string;\n}\n\n/**\n * Defines the logging interface the OAuthService uses\n * internally. Is compatible with the `console` object,\n * but you can provide your own implementation as well\n * through dependency injection.\n */\nexport abstract class OAuthLogger {\n abstract debug(message?: any, ...optionalParams: any[]): void;\n abstract info(message?: any, ...optionalParams: any[]): void;\n abstract log(message?: any, ...optionalParams: any[]): void;\n abstract warn(message?: any, ...optionalParams: any[]): void;\n abstract error(message?: any, ...optionalParams: any[]): void;\n}\n\n/**\n * Defines a simple storage that can be used for\n * storing the tokens at client side.\n * Is compatible to localStorage and sessionStorage,\n * but you can also create your own implementations.\n */\nexport abstract class OAuthStorage {\n abstract getItem(key: string): string | null;\n abstract removeItem(key: string): void;\n abstract setItem(key: string, data: string): void;\n}\n\n@Injectable()\nexport class MemoryStorage implements OAuthStorage {\n private data = new Map();\n\n getItem(key: string): string {\n return this.data.get(key);\n }\n\n removeItem(key: string): void {\n this.data.delete(key);\n }\n\n setItem(key: string, data: string): void {\n this.data.set(key, data);\n }\n}\n\n/**\n * Represents the received tokens, the received state\n * and the parsed claims from the id-token.\n */\nexport class ReceivedTokens {\n idToken: string;\n accessToken: string;\n idClaims?: object;\n state?: string;\n}\n\n/**\n * Represents the parsed and validated id_token.\n */\nexport interface ParsedIdToken {\n idToken: string;\n idTokenClaims: object;\n idTokenHeader: object;\n idTokenClaimsJson: string;\n idTokenHeaderJson: string;\n idTokenExpiresAt: number;\n}\n\n/**\n * Represents the response from the token endpoint\n * http://openid.net/specs/openid-connect-core-1_0.html#TokenEndpoint\n */\nexport interface TokenResponse {\n access_token: string;\n id_token: string;\n token_type: string;\n expires_in: number;\n refresh_token: string;\n scope: string;\n state?: string;\n}\n\n/**\n * Represents the response from the user info endpoint\n * http://openid.net/specs/openid-connect-core-1_0.html#UserInfo\n */\nexport interface UserInfo {\n sub: string;\n [key: string]: any;\n}\n\n/**\n * Represents an OpenID Connect discovery document\n */\nexport interface OidcDiscoveryDoc {\n issuer: string;\n authorization_endpoint: string;\n token_endpoint: string;\n token_endpoint_auth_methods_supported: string[];\n token_endpoint_auth_signing_alg_values_supported: string[];\n userinfo_endpoint: string;\n check_session_iframe: string;\n end_session_endpoint: string;\n jwks_uri: string;\n registration_endpoint: string;\n scopes_supported: string[];\n response_types_supported: string[];\n acr_values_supported: string[];\n response_modes_supported: string[];\n grant_types_supported: string[];\n subject_types_supported: string[];\n userinfo_signing_alg_values_supported: string[];\n userinfo_encryption_alg_values_supported: string[];\n userinfo_encryption_enc_values_supported: string[];\n id_token_signing_alg_values_supported: string[];\n id_token_encryption_alg_values_supported: string[];\n id_token_encryption_enc_values_supported: string[];\n request_object_signing_alg_values_supported: string[];\n display_values_supported: string[];\n claim_types_supported: string[];\n claims_supported: string[];\n claims_parameter_supported: boolean;\n service_documentation: string;\n ui_locales_supported: string[];\n revocation_endpoint: string;\n}\n\n \n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"injectables/UrlHelperService.html":{"url":"injectables/UrlHelperService.html","title":"injectable - UrlHelperService","body":"\n \n\n\n\n\n\n\n\n\n Injectables\n UrlHelperService\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/url-helper.service.ts\n \n\n\n\n\n\n \n Index\n \n \n\n \n \n Methods\n \n \n \n \n \n \n Public\n getHashFragmentParams\n \n \n Public\n parseQueryString\n \n \n \n \n\n\n\n\n\n \n \n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n Public\n getHashFragmentParams\n \n \n \n \n \n \n \n getHashFragmentParams(customHashFragment?: string)\n \n \n\n\n \n \n Defined in projects/lib/src/url-helper.service.ts:5\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n customHashFragment\n \n string\n \n\n \n Yes\n \n\n\n \n \n \n \n \n \n \n Returns : object\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Public\n parseQueryString\n \n \n \n \n \n \n \n parseQueryString(queryString: string)\n \n \n\n\n \n \n Defined in projects/lib/src/url-helper.service.ts:25\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n queryString\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : object\n\n \n \n \n \n \n \n \n \n\n\n \n\n\n \n import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class UrlHelperService {\n public getHashFragmentParams(customHashFragment?: string): object {\n let hash = customHashFragment || window.location.hash;\n\n hash = decodeURIComponent(hash);\n\n if (hash.indexOf('#') !== 0) {\n return {};\n }\n\n const questionMarkPosition = hash.indexOf('?');\n\n if (questionMarkPosition > -1) {\n hash = hash.substr(questionMarkPosition + 1);\n } else {\n hash = hash.substr(1);\n }\n\n return this.parseQueryString(hash);\n }\n\n public parseQueryString(queryString: string): object {\n const data = {};\n let pairs, pair, separatorIndex, escapedKey, escapedValue, key, value;\n\n if (queryString === null) {\n return data;\n }\n\n pairs = queryString.split('&');\n\n for (let i = 0; i \n \n\n\n\n\n\n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"interfaces/UserInfo.html":{"url":"interfaces/UserInfo.html","title":"interface - UserInfo","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n Interfaces\n \n UserInfo\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/types.ts\n \n\n\n \n Description\n \n \n Represents the response from the user info endpoint\nhttp://openid.net/specs/openid-connect-core-1_0.html#UserInfo\n\n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n \n sub\n \n \n \n \n \n \n \n \n\n\n \n Indexable\n \n \n \n \n [key: string]: any\n\n \n \n \n \n Defined in projects/lib/src/types.ts:162\n \n \n \n \n\n\n \n Properties\n \n \n \n \n \n sub\n \n \n \n \n \n \n \n \n sub: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n\n\n \n import { Injectable } from '@angular/core';\n\n/**\n * Additional options that can be passed to tryLogin.\n */\nexport class LoginOptions {\n /**\n * Is called, after a token has been received and\n * successfully validated.\n *\n * Deprecated: Use property ``events`` on OAuthService instead.\n */\n onTokenReceived?: (receivedTokens: ReceivedTokens) => void;\n\n /**\n * Hook, to validate the received tokens.\n *\n * Deprecated: Use property ``tokenValidationHandler`` on OAuthService instead.\n */\n validationHandler?: (receivedTokens: ReceivedTokens) => Promise;\n\n /**\n * Called when tryLogin detects that the auth server\n * included an error message into the hash fragment.\n *\n * Deprecated: Use property ``events`` on OAuthService instead.\n */\n onLoginError?: (params: object) => void;\n\n /**\n * A custom hash fragment to be used instead of the\n * actual one. This is used for silent refreshes, to\n * pass the iframes hash fragment to this method, and\n * is also used by popup flows in the same manner.\n * This can be used with code flow, where is must be set\n * to a hash symbol followed by the querystring. The\n * question mark is optional, but may be present following\n * the hash symbol.\n */\n customHashFragment?: string;\n\n /**\n * Set this to true to disable the oauth2 state\n * check which is a best practice to avoid\n * security attacks.\n * As OIDC defines a nonce check that includes\n * this, this can be set to true when only doing\n * OIDC.\n */\n disableOAuth2StateCheck?: boolean;\n\n /**\n * Set this to true to disable the nonce\n * check which is used to avoid\n * replay attacks.\n * This flag should never be true in\n * production environments.\n */\n disableNonceCheck? = false;\n\n /**\n * Normally, you want to clear your hash fragment after\n * the lib read the token(s) so that they are not displayed\n * anymore in the url. If not, set this to true. For code flow\n * this controls removing query string values.\n */\n preventClearHashAfterLogin? = false;\n\n /**\n * Set this for code flow if you used a custom redirect Uri\n * when retrieving the code. This is used internally for silent\n * refresh and popup flows.\n */\n customRedirectUri?: string;\n}\n\n/**\n * Defines the logging interface the OAuthService uses\n * internally. Is compatible with the `console` object,\n * but you can provide your own implementation as well\n * through dependency injection.\n */\nexport abstract class OAuthLogger {\n abstract debug(message?: any, ...optionalParams: any[]): void;\n abstract info(message?: any, ...optionalParams: any[]): void;\n abstract log(message?: any, ...optionalParams: any[]): void;\n abstract warn(message?: any, ...optionalParams: any[]): void;\n abstract error(message?: any, ...optionalParams: any[]): void;\n}\n\n/**\n * Defines a simple storage that can be used for\n * storing the tokens at client side.\n * Is compatible to localStorage and sessionStorage,\n * but you can also create your own implementations.\n */\nexport abstract class OAuthStorage {\n abstract getItem(key: string): string | null;\n abstract removeItem(key: string): void;\n abstract setItem(key: string, data: string): void;\n}\n\n@Injectable()\nexport class MemoryStorage implements OAuthStorage {\n private data = new Map();\n\n getItem(key: string): string {\n return this.data.get(key);\n }\n\n removeItem(key: string): void {\n this.data.delete(key);\n }\n\n setItem(key: string, data: string): void {\n this.data.set(key, data);\n }\n}\n\n/**\n * Represents the received tokens, the received state\n * and the parsed claims from the id-token.\n */\nexport class ReceivedTokens {\n idToken: string;\n accessToken: string;\n idClaims?: object;\n state?: string;\n}\n\n/**\n * Represents the parsed and validated id_token.\n */\nexport interface ParsedIdToken {\n idToken: string;\n idTokenClaims: object;\n idTokenHeader: object;\n idTokenClaimsJson: string;\n idTokenHeaderJson: string;\n idTokenExpiresAt: number;\n}\n\n/**\n * Represents the response from the token endpoint\n * http://openid.net/specs/openid-connect-core-1_0.html#TokenEndpoint\n */\nexport interface TokenResponse {\n access_token: string;\n id_token: string;\n token_type: string;\n expires_in: number;\n refresh_token: string;\n scope: string;\n state?: string;\n}\n\n/**\n * Represents the response from the user info endpoint\n * http://openid.net/specs/openid-connect-core-1_0.html#UserInfo\n */\nexport interface UserInfo {\n sub: string;\n [key: string]: any;\n}\n\n/**\n * Represents an OpenID Connect discovery document\n */\nexport interface OidcDiscoveryDoc {\n issuer: string;\n authorization_endpoint: string;\n token_endpoint: string;\n token_endpoint_auth_methods_supported: string[];\n token_endpoint_auth_signing_alg_values_supported: string[];\n userinfo_endpoint: string;\n check_session_iframe: string;\n end_session_endpoint: string;\n jwks_uri: string;\n registration_endpoint: string;\n scopes_supported: string[];\n response_types_supported: string[];\n acr_values_supported: string[];\n response_modes_supported: string[];\n grant_types_supported: string[];\n subject_types_supported: string[];\n userinfo_signing_alg_values_supported: string[];\n userinfo_encryption_alg_values_supported: string[];\n userinfo_encryption_enc_values_supported: string[];\n id_token_signing_alg_values_supported: string[];\n id_token_encryption_alg_values_supported: string[];\n id_token_encryption_enc_values_supported: string[];\n request_object_signing_alg_values_supported: string[];\n display_values_supported: string[];\n claim_types_supported: string[];\n claims_supported: string[];\n claims_parameter_supported: boolean;\n service_documentation: string;\n ui_locales_supported: string[];\n revocation_endpoint: string;\n}\n\n \n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/ValidationHandler.html":{"url":"classes/ValidationHandler.html","title":"class - ValidationHandler","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n ValidationHandler\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/token-validation/validation-handler.ts\n \n\n\n \n Description\n \n \n Interface for Handlers that are hooked in to\nvalidate tokens.\n\n \n\n\n\n\n \n Index\n \n \n\n \n \n Methods\n \n \n \n \n \n \n Public\n Abstract\n validateAtHash\n \n \n Public\n Abstract\n validateSignature\n \n \n \n \n\n\n\n\n\n \n \n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n Public\n Abstract\n validateAtHash\n \n \n \n \n \n \n \n validateAtHash(validationParams: ValidationParams)\n \n \n\n\n \n \n Defined in projects/lib/src/token-validation/validation-handler.ts:27\n \n \n\n\n \n \n Validates the at_hash in an id_token against the received access_token.\n\n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n validationParams\n \n ValidationParams\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : Promise\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Public\n Abstract\n validateSignature\n \n \n \n \n \n \n \n validateSignature(validationParams: ValidationParams)\n \n \n\n\n \n \n Defined in projects/lib/src/token-validation/validation-handler.ts:20\n \n \n\n\n \n \n Validates the signature of an id_token.\n\n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n validationParams\n \n ValidationParams\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : Promise\n\n \n \n \n \n \n \n \n \n\n\n\n\n\n\n \n\n\n \n import { base64UrlEncode } from '../base64-helper';\n\nexport interface ValidationParams {\n idToken: string;\n accessToken: string;\n idTokenHeader: object;\n idTokenClaims: object;\n jwks: object;\n loadKeys: () => Promise;\n}\n\n/**\n * Interface for Handlers that are hooked in to\n * validate tokens.\n */\nexport abstract class ValidationHandler {\n /**\n * Validates the signature of an id_token.\n */\n public abstract validateSignature(\n validationParams: ValidationParams\n ): Promise;\n\n /**\n * Validates the at_hash in an id_token against the received access_token.\n */\n public abstract validateAtHash(\n validationParams: ValidationParams\n ): Promise;\n}\n\n/**\n * This abstract implementation of ValidationHandler already implements\n * the method validateAtHash. However, to make use of it,\n * you have to override the method calcHash.\n */\nexport abstract class AbstractValidationHandler implements ValidationHandler {\n /**\n * Validates the signature of an id_token.\n */\n abstract validateSignature(validationParams: ValidationParams): Promise;\n\n /**\n * Validates the at_hash in an id_token against the received access_token.\n */\n async validateAtHash(params: ValidationParams): Promise {\n let hashAlg = this.inferHashAlgorithm(params.idTokenHeader);\n\n let tokenHash = await this.calcHash(params.accessToken, hashAlg); // sha256(accessToken, { asString: true });\n\n let leftMostHalf = tokenHash.substr(0, tokenHash.length / 2);\n\n let atHash = base64UrlEncode(leftMostHalf);\n\n let claimsAtHash = params.idTokenClaims['at_hash'].replace(/=/g, '');\n\n if (atHash !== claimsAtHash) {\n console.error('exptected at_hash: ' + atHash);\n console.error('actual at_hash: ' + claimsAtHash);\n }\n\n return atHash === claimsAtHash;\n }\n\n /**\n * Infers the name of the hash algorithm to use\n * from the alg field of an id_token.\n *\n * @param jwtHeader the id_token's parsed header\n */\n protected inferHashAlgorithm(jwtHeader: object): string {\n let alg: string = jwtHeader['alg'];\n\n if (!alg.match(/^.S[0-9]{3}$/)) {\n throw new Error('Algorithm not supported: ' + alg);\n }\n\n return 'sha-' + alg.substr(2);\n }\n\n /**\n * Calculates the hash for the passed value by using\n * the passed hash algorithm.\n *\n * @param valueToHash\n * @param algorithm\n */\n protected abstract calcHash(\n valueToHash: string,\n algorithm: string\n ): Promise;\n}\n\n \n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"interfaces/ValidationParams.html":{"url":"interfaces/ValidationParams.html","title":"interface - ValidationParams","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n Interfaces\n \n ValidationParams\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/token-validation/validation-handler.ts\n \n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n \n accessToken\n \n \n \n \n idToken\n \n \n \n \n idTokenClaims\n \n \n \n \n idTokenHeader\n \n \n \n \n jwks\n \n \n \n \n loadKeys\n \n \n \n \n \n \n \n \n\n\n\n \n Properties\n \n \n \n \n \n accessToken\n \n \n \n \n \n \n \n \n accessToken: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n idToken\n \n \n \n \n \n \n \n \n idToken: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n idTokenClaims\n \n \n \n \n \n \n \n \n idTokenClaims: object\n\n \n \n\n\n \n \n Type : object\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n idTokenHeader\n \n \n \n \n \n \n \n \n idTokenHeader: object\n\n \n \n\n\n \n \n Type : object\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n jwks\n \n \n \n \n \n \n \n \n jwks: object\n\n \n \n\n\n \n \n Type : object\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n loadKeys\n \n \n \n \n \n \n \n \n loadKeys: function\n\n \n \n\n\n \n \n Type : function\n\n \n \n\n\n\n\n\n \n \n \n \n\n\n \n import { base64UrlEncode } from '../base64-helper';\n\nexport interface ValidationParams {\n idToken: string;\n accessToken: string;\n idTokenHeader: object;\n idTokenClaims: object;\n jwks: object;\n loadKeys: () => Promise;\n}\n\n/**\n * Interface for Handlers that are hooked in to\n * validate tokens.\n */\nexport abstract class ValidationHandler {\n /**\n * Validates the signature of an id_token.\n */\n public abstract validateSignature(\n validationParams: ValidationParams\n ): Promise;\n\n /**\n * Validates the at_hash in an id_token against the received access_token.\n */\n public abstract validateAtHash(\n validationParams: ValidationParams\n ): Promise;\n}\n\n/**\n * This abstract implementation of ValidationHandler already implements\n * the method validateAtHash. However, to make use of it,\n * you have to override the method calcHash.\n */\nexport abstract class AbstractValidationHandler implements ValidationHandler {\n /**\n * Validates the signature of an id_token.\n */\n abstract validateSignature(validationParams: ValidationParams): Promise;\n\n /**\n * Validates the at_hash in an id_token against the received access_token.\n */\n async validateAtHash(params: ValidationParams): Promise {\n let hashAlg = this.inferHashAlgorithm(params.idTokenHeader);\n\n let tokenHash = await this.calcHash(params.accessToken, hashAlg); // sha256(accessToken, { asString: true });\n\n let leftMostHalf = tokenHash.substr(0, tokenHash.length / 2);\n\n let atHash = base64UrlEncode(leftMostHalf);\n\n let claimsAtHash = params.idTokenClaims['at_hash'].replace(/=/g, '');\n\n if (atHash !== claimsAtHash) {\n console.error('exptected at_hash: ' + atHash);\n console.error('actual at_hash: ' + claimsAtHash);\n }\n\n return atHash === claimsAtHash;\n }\n\n /**\n * Infers the name of the hash algorithm to use\n * from the alg field of an id_token.\n *\n * @param jwtHeader the id_token's parsed header\n */\n protected inferHashAlgorithm(jwtHeader: object): string {\n let alg: string = jwtHeader['alg'];\n\n if (!alg.match(/^.S[0-9]{3}$/)) {\n throw new Error('Algorithm not supported: ' + alg);\n }\n\n return 'sha-' + alg.substr(2);\n }\n\n /**\n * Calculates the hash for the passed value by using\n * the passed hash algorithm.\n *\n * @param valueToHash\n * @param algorithm\n */\n protected abstract calcHash(\n valueToHash: string,\n algorithm: string\n ): Promise;\n}\n\n \n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/WebHttpUrlEncodingCodec.html":{"url":"classes/WebHttpUrlEncodingCodec.html","title":"class - WebHttpUrlEncodingCodec","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n WebHttpUrlEncodingCodec\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/lib/src/encoder.ts\n \n\n\n \n Description\n \n \n This custom encoder allows charactes like +, % and / to be used in passwords\n\n \n\n\n \n Implements\n \n \n HttpParameterCodec\n \n\n\n \n Index\n \n \n\n \n \n Methods\n \n \n \n \n \n \n decodeKey\n \n \n decodeValue\n \n \n encodeKey\n \n \n encodeValue\n \n \n \n \n\n\n\n\n\n \n \n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n decodeKey\n \n \n \n \n \n \ndecodeKey(k: string)\n \n \n\n\n \n \n Defined in projects/lib/src/encoder.ts:14\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n k\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : string\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n decodeValue\n \n \n \n \n \n \ndecodeValue(v: string)\n \n \n\n\n \n \n Defined in projects/lib/src/encoder.ts:18\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n v\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : any\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n encodeKey\n \n \n \n \n \n \nencodeKey(k: string)\n \n \n\n\n \n \n Defined in projects/lib/src/encoder.ts:6\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n k\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : string\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n encodeValue\n \n \n \n \n \n \nencodeValue(v: string)\n \n \n\n\n \n \n Defined in projects/lib/src/encoder.ts:10\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n v\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : string\n\n \n \n \n \n \n \n \n \n\n\n\n\n\n\n \n\n\n \n import { HttpParameterCodec } from '@angular/common/http';\n/**\n * This custom encoder allows charactes like +, % and / to be used in passwords\n */\nexport class WebHttpUrlEncodingCodec implements HttpParameterCodec {\n encodeKey(k: string): string {\n return encodeURIComponent(k);\n }\n\n encodeValue(v: string): string {\n return encodeURIComponent(v);\n }\n\n decodeKey(k: string): string {\n return decodeURIComponent(k);\n }\n\n decodeValue(v: string) {\n return decodeURIComponent(v);\n }\n}\n\n \n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"changelog.html":{"url":"changelog.html","title":"getting-started - changelog","body":"\n \n\n12.0.0 (2021-07-16)\nBug Fixes\n\n#728 (51e438a), closes /github.com/manfredsteyer/angular-oauth2-oidc/issues/728#issuecomment-808969225\nclear location.hash only if it is present (c2b2753), closes #970\ncorrectly handle ? and & in location replacements (70fd826)\nDisable nonce validation for id token for e2e tests (f5bd96c)\nfix scope/state removal for implicit flow with hash (9e257d0)\nin code flow pass options to error handler (c9a2c55), closes #972\njwks: update jsrsasign dependency to 10.2.0 (a05bd8a), closes #1061\nmultiplying calls to token endpoint in code flow (59f65d2)\nRefresh tokens with a plus sign get corrupted before sending to token endpoint (2204c5a)\nrevoketokenandlogout: 'customParameters' should accept boolean (9761bad)\nWhile Using POPUP mode, we click on login button multiple time it opens multiple popup instead of focusing already opened (bbff95b)\n\nFeatures\n\nintroduce DateTimeProvider (0c0a4a7)\nlogout: postLogoutRedirectUri should not default to redirectUri (ff7d1d9)\nsupport JWT response on userinfo endpoint (da16494)\nCustom grant type added (https://github.com/manfredsteyer/angular-oauth2-oidc/pull/919)\nListen for storage to receive auth hash from popup (https://github.com/manfredsteyer/angular-oauth2-oidc/pull/935)\nAdd event for unchanged session (https://github.com/manfredsteyer/angular-oauth2-oidc/pull/936)\nAdd loginHint to codeFlow (https://github.com/manfredsteyer/angular-oauth2-oidc/pull/938)\nAdd a windowRef option to initLoginFlowInPopup to prevent the window from beeing blocked by popup blockers (https://github.com/manfredsteyer/angular-oauth2-oidc/pull/965)\nUse configured revocationEndpoint by default (https://github.com/manfredsteyer/angular-oauth2-oidc/pull/1020)\n\n10.0.0 (2020-06-30)\n\nchore: increase version in package.json (84d95a7)\nchore: make version 9.2 ready (415e053)\nchore(deps): bump jsrsasign from 8.0.12 to 8.0.19 (4def1c1)\nchore(deps): bump websocket-extensions from 0.1.3 to 0.1.4 (cae715e)\nchore(release): 9.2.1 (7a15194)\nchore(release): 9.2.2 (40f5ae5)\nchore(release): 9.3.0 (f42f943)\nrefactor: inline js-sha256 (ca435c0)\nrefactor: remove dep on contributer-table (b486546)\nrefactor: use esm for sha-256 (92ee76d)\nfeat(oauth-service): pass custom url params to logOut (4607d55)\nfeat(oauth-service): revokeTokenAndLogout with cust params (026dcb3)\n'disableAtHashCheck' by default if responseType is 'id_token' (169d749)\n#825: (38c7c3f), closes #825\n#825: (fb3afe4), closes #825\nFix issue with ambient type in constructor when running Universal with Ivy (9e95c73)\nFix typo in code-flow.md (1816e7b)\nReplaced document by this.document #773 (678ff95), closes #773\nresponse_types including 'code' gets a code_challenge (58a8132)\nUpdate code-flow.md (5c5288c)\ndocs(readme): use our own idsvr (65c2b95)\nfix: loadDiscoveryDocumentAndLogin should pass state into initLoginFlow (132c624)\nfix(lib): copying LICENSE file to output build (e89aa6d)\n\n10.0.0 (2020-06-30)\nBug Fixes\n\nloadDiscoveryDocumentAndLogin should pass state into initLoginFlow (132c624)\nlib: copying LICENSE file to output build (e89aa6d)\n\nFeatures\n\noauth-service: pass custom url params to logOut (4607d55)\noauth-service: revokeTokenAndLogout with cust params (026dcb3)\n\n10.0.0 (2020-06-30)\nChangelog\nAll notable changes to this project will be documented in this file. See standard-version for commit guidelines.\nFeatures\n\nautomatic silent refresh: stopAutomaticRefresh stops all timers. (8ab853b)\ncode-flow: allow using implicit flow by setting useSilentRefresh to true (93902a5)\noauth-service: pass custom url params to logOut (4607d55)\noauth-service: revokeTokenAndLogout with cust params (026dcb3)\nsample: also use new idsvr 4 for implicit flow demo to prevent issues with same site cookies (58c6354)\nsession checks: Session checks work now for code flow too. Pls see Docs for details. (4bf8901)\ntoken-revocation: also revoke refresh_token (429ed2c)\nremove jsrsasign dependancy (77cb37a)\nUpgrade to angular 8 (31c6273)\n\nBug Fixes\n\nloadDiscoveryDocumentAndLogin should pass state into initLoginFlow (132c624)\nlib: copying LICENSE file to output build (e89aa6d)\nrevoketokenandlogout: explicit way to revoke an access token (c799ead)\nsample: make sense of the guard (1cae011)\n#687 (e2599e0)\ncode flow: Fixed code flow for IE 11 (0f03d39)\nsample: use hash-based routing (3f44eca)\nsession state: save session_state also when using code flow (8fa99ff)\nstate: passing an url with a querystring as the state, e. g. url?x=1 (71b705c)\nmissing HttpModule dependency (7eac8ae)\nrun tokensetup outside ngzone (07bb62d)\ntypo (3d331f2)\n\n9.2.2 (2020-05-09)\n9.2.1 (2020-04-23)\n9.2.0 (2020-03-28)\nFeatures\n\nrevoketokenandlogout: explicit way to revoke an access token according to RFC 7009 (c799ead)\n\ntoken-revocation: also revoke refresh_token (429ed2c)\n\n\nBug Fixes\n\nsample: make sense of the guard (1cae011)\n\n9.1.0 (2020-03-23)\nFeatures\n\nautomatic silent refresh: stopAutomaticRefresh stops all timers. (8ab853b)\ncode-flow: allow using silent refresh by setting useSilentRefresh to true (93902a5)\nsample: Also use new Identity Server 4 for implicit flow demo to prevent issues with same site cookies (58c6354)\nsession checks: Session checks work now for code flow too. Please see docs for details. (4bf8901)\n\nBug Fixes\n\ncode flow: Fixed code flow for IE 11 (0f03d39)\nsample: use hash-based routing (3f44eca)\nsession state: save session_state also when using code flow (8fa99ff)\nstate: passing an url with a querystring as the state, e. g. url?x=1 (71b705c)\n#687 (e2599e0)\nmissing HttpModule dependency (7eac8ae)\nrun tokensetup outside ngzone (07bb62d)\ntypo (3d331f2)\n\nPull Requests\n\nUpdate sample app and silent-refresh.html script #755, linjie997\nAdd optional state parameter for logout, pmccloghrylaing\nfix customHashFragment usage in tryLoginCodeFlow, roblabat\nreplace document with injectionToken #741, d-moos\nSupport predefined custom parameters extraction from the TokenResponse, vdveer\nFixed not working silent refresh when using 'code' #735, ErazerBrecht\n\nThanks\nBig Thanks to all contributers: Brecht Carlier, Daniel Moos, Jie Lin, Manfred Steyer, Phil McCloghry-Laing, robin labat, vdveer\nAlso, big thanks to jeroenheijmans for doing an awesome job with moderating and analyzing the issues!\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"dependencies.html":{"url":"dependencies.html","title":"package-dependencies - dependencies","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n Dependencies\n \n \n \n @angular/animations : 12.1.2\n \n @angular/common : 12.1.2\n \n @angular/compiler : 12.1.2\n \n @angular/core : 12.1.2\n \n @angular/elements : 12.1.2\n \n @angular/forms : 12.1.2\n \n @angular/platform-browser : 12.1.2\n \n @angular/platform-browser-dynamic : 12.1.2\n \n @angular/router : 12.1.2\n \n @popperjs/core : ^2.9.2\n \n @webcomponents/custom-elements : ^1.4.3\n \n angular-oauth2-oidc : ^10.0.3\n \n angular-oauth2-oidc-jwks : ^9.0.0\n \n base64-js : ^1.5.1\n \n bootstrap : ^3.4.1\n \n fast-sha256 : ^1.3.0\n \n jsrsasign : ^10.3.0\n \n ngx-semantic-version : ^2.3.0\n \n rxjs : ^6.5.3\n \n rxjs-compat : ^6.6.7\n \n text-encoder-lite : ^2.0.0\n \n tsickle : ^0.43.0\n \n tslib : ^2.3.0\n \n worker-timers : ^7.0.40\n \n zone.js : ~0.11.4\n \n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"miscellaneous/functions.html":{"url":"miscellaneous/functions.html","title":"miscellaneous-functions - functions","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n Miscellaneous\n Functions\n\n\n\n Index\n \n \n \n \n \n \n b64DecodeUnicode   (projects/.../base64-helper.ts)\n \n \n base64UrlEncode   (projects/.../base64-helper.ts)\n \n \n createDefaultLogger   (projects/.../factories.ts)\n \n \n createDefaultStorage   (projects/.../factories.ts)\n \n \n decodeUTF8   (projects/.../hash-handler.ts)\n \n \n encodeUTF8   (projects/.../hash-handler.ts)\n \n \n \n \n \n \n\n\n projects/lib/src/base64-helper.ts\n \n \n \n \n \n \n \n b64DecodeUnicode\n \n \n \n \n \n \nb64DecodeUnicode(str)\n \n \n\n\n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Optional\n \n \n \n \n str\n\n \n No\n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n base64UrlEncode\n \n \n \n \n \n \nbase64UrlEncode(str)\n \n \n\n\n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Optional\n \n \n \n \n str\n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : string\n\n \n \n \n \n \n \n \n \n projects/lib/src/factories.ts\n \n \n \n \n \n \n \n createDefaultLogger\n \n \n \n \n \n \ncreateDefaultLogger()\n \n \n\n\n\n\n \n \n \n \n \n \n \n \n createDefaultStorage\n \n \n \n \n \n \ncreateDefaultStorage()\n \n \n\n\n\n\n \n \n projects/lib/src/token-validation/hash-handler.ts\n \n \n \n \n \n \n \n decodeUTF8\n \n \n \n \n \n \ndecodeUTF8(s)\n \n \n\n\n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Optional\n \n \n \n \n s\n\n \n No\n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n encodeUTF8\n \n \n \n \n \n \nencodeUTF8(arr)\n \n \n\n\n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Optional\n \n \n \n \n arr\n\n \n No\n \n\n\n \n \n \n \n \n \n \n \n \n \n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"index.html":{"url":"index.html","title":"getting-started - index","body":"\n \n\nangular-oauth2-oidc\nSupport for OAuth 2 and OpenId Connect (OIDC) in Angular. Already prepared for the upcoming OAuth 2.1.\n\nCredits\n\njsrsasign for validating token signature and for hashing\nIdentity Server for testing with an .NET/.NET Core Backend\nKeycloak (Redhat) for testing with Java\nAuth0\n\nResources\n\nSources and Sample: https://github.com/manfredsteyer/angular-oauth2-oidc\nSource Code Documentation: https://manfredsteyer.github.io/angular-oauth2-oidc/docs\nCommunity-provided sample implementation: https://github.com/jeroenheijmans/sample-angular-oauth2-oidc-with-auth-guards/\n\nTested Environment\nSuccessfully tested with Angular 4.3 to Angular 12 and its Router, PathLocationStrategy as well as HashLocationStrategy and CommonJS-Bundling via webpack. \nAt server side we've used IdentityServer (.NET / .NET Core), Redhat's Keycloak (Java), and Auth0 (Auth0 is officially supported since version 10 of this lib). For Auth0, please have a look into the respective documentation page here.\nFor using this library with Azure Active Directory (Azure AD), we recommend an additional look to this blog post and the example linked at the end of this blog post.\nAlso, the Okta community created some guidelines on how to use this lib with Okta. See the links at the end of this page for more information.\nAngular 12: Use 12.x versions of this library (should also work with older Angular versions!).\nAngular 11: Use 10.x versions of this library (should also work with older Angular versions!).\nAngular 10: Use 10.x versions of this library (should also work with older Angular versions!).\nAngular 9: Use 9.x versions of this library (should also work with older Angular versions!).\nAngular 8: Use 8.x versions of this library.\nAngular 7: Use 7.x versions of this library.\nAngular 6: Use Version 4.x of this library. Version 4.x was tested with Angular 6. You can also try the newer version 5.x of this library which has a much smaller bundle size.\nAngular 5.x or 4.3: If you need support for Angular \nRelease Cycle\n\nWe plan one major release for each Angular version\nWill contain new features\nWill contain bug fixes and PRs\n\n\nCritical bugfixes on demand\n\nContributions\n\nFeel free to file pull requests\n\nThe issues contain some ideas for PRs and enhancements (see labels)\n\nIf you want to contribute to the docs, you can do so in the docs-src folder. Make sure you update summary.json as well. Then generate the docs with the following commands:\nnpm install -g @compodoc/compodoc\nnpm run docs\n\nFeatures\n\nLogging in via Code Flow + PKCE\nHence, you are safe for the upcoming OAuth 2.1\n\n\nLogging in via Implicit Flow (where a user is redirected to Identity Provider)\n\"Logging in\" via Password Flow (where a user enters their password into the client)\nToken Refresh for all supported flows\nAutomatically refreshing a token when/some time before it expires\nQuerying Userinfo Endpoint\nQuerying Discovery Document to ease configuration\nValidating claims of the id_token regarding the specs\nHook for further custom validations\nSingle-Sign-Out by redirecting to the auth-server's logout-endpoint\nTested with all modern browsers and IE\nToken Revocation according to RFC 7009\n\nSample-Auth-Server\nYou can use the OIDC-Sample-Server used in our examples. It assumes, that your Web-App runs on http://localhost:4200\nUsername/Password:\n\nmax/geheim\nbob/bob\nalice/alice\n\nclientIds:\n\nspa (Code Flow + PKCE)\nimplicit (implicit flow)\n\nredirectUris:\n\nlocalhost:[4200-4202]\nlocalhost:[4200-4202]/index.html\nlocalhost:[4200-4202]/silent-refresh.html\n\nInstalling\nnpm i angular-oauth2-oidc --saveImporting the NgModule\nimport { HttpClientModule } from '@angular/common/http';\nimport { OAuthModule } from 'angular-oauth2-oidc';\n// etc.\n\n@NgModule({\n imports: [\n // etc.\n HttpClientModule,\n OAuthModule.forRoot()\n ],\n declarations: [\n AppComponent,\n HomeComponent,\n // etc.\n ],\n bootstrap: [\n AppComponent\n ]\n})\nexport class AppModule {\n}Logging in\nSince Version 8, this library supports code flow and PKCE to align with the current draft of the OAuth 2.0 Security Best Current Practice document. This is also the foundation of the upcoming OAuth 2.1.\nTo configure your solution for code flow + PKCE you have to set the responseType to code:\n import { AuthConfig } from 'angular-oauth2-oidc';\n\n export const authCodeFlowConfig: AuthConfig = {\n // Url of the Identity Provider\n issuer: 'https://idsvr4.azurewebsites.net',\n\n // URL of the SPA to redirect the user to after login\n redirectUri: window.location.origin + '/index.html',\n\n // The SPA's id. The SPA is registerd with this id at the auth-server\n // clientId: 'server.code',\n clientId: 'spa',\n\n // Just needed if your auth server demands a secret. In general, this\n // is a sign that the auth server is not configured with SPAs in mind\n // and it might not enforce further best practices vital for security\n // such applications.\n // dummyClientSecret: 'secret',\n\n responseType: 'code',\n\n // set the scope for the permissions the client should request\n // The first four are defined by OIDC.\n // Important: Request offline_access to get a refresh token\n // The api scope is a usecase specific one\n scope: 'openid profile email offline_access api',\n\n showDebugInformation: true,\n };After this, you can initialize the code flow using:\nthis.oauthService.initCodeFlow();There is also a convenience method initLoginFlow which initializes either the code flow or the implicit flow depending on your configuration.\nthis.oauthService.initLoginFlow();Also -- as shown in the readme -- you have to execute the following code when bootstrapping to make the library to fetch the token:\nthis.oauthService.configure(authCodeFlowConfig);\nthis.oauthService.loadDiscoveryDocumentAndTryLogin();Logging out\nThe logOut method clears the used token store (by default sessionStorage) and forwards the user to the auth servers logout endpoint if one was configured (manually or via the discovery document).\nthis.oauthService.logOut();If you want to revoke the existing access token and the existing refresh token before logging out, use the following method:\nthis.oauthService.revokeTokenAndLogout();Skipping the Login Form\nIf you don't want to display a login form that tells the user that they are redirected to the identity server, you can use the convenience function this.oauthService.loadDiscoveryDocumentAndLogin(); instead of this.oauthService.loadDiscoveryDocumentAndTryLogin(); when setting up the library.\nThis directly redirects the user to the identity server if there are no valid tokens. Ensure you have your issuer set to your discovery document endpoint!\nCalling a Web API with an Access Token\nYou can automate this task by switching sendAccessToken on and by setting allowedUrls to an array with prefixes for the respective URLs. Use lower case for the prefixes.\nOAuthModule.forRoot({\n resourceServer: {\n allowedUrls: ['http://www.angular.at/api'],\n sendAccessToken: true\n }\n})If you need more versatility, you can look in the documentation how to setup a custom interceptor.\nToken Refresh\nSee docs: https://manfredsteyer.github.io/angular-oauth2-oidc/docs/additional-documentation/refreshing-a-token.html\nRouting\nIf you use the PathLocationStrategy (which is on by default) and have a general catch-all-route (path: '**') you should be fine. Otherwise look up the section Routing with the HashStrategy in the documentation.\nImplicit Flow\nNowadays, using code flow + PKCE -- as shown above -- is the recommended OAuth 2/OIDC flow for SPAs. To use the older implicit flow, lookup this docs: https://manfredsteyer.github.io/angular-oauth2-oidc/docs/additional-documentation/using-implicit-flow.html\nMore Documentation (!)\nSee the documentation for more information about this library.\nBreaking Change in Version 9\nWith regards to tree shaking, beginning with version 9, the JwksValidationHandler has been moved to a library of its own. If you need it for implementing implicit flow, please install it using npm:\nnpm i angular-oauth2-oidc-jwks --saveAfter that, you can import it into your application by using this:\nimport { JwksValidationHandler } from 'angular-oauth2-oidc-jwks';instead of that:\nimport { JwksValidationHandler } from 'angular-oauth2-oidc';Please note, that this dependency is not needed for the code flow, which is nowadays the recommended flow for single page applications. This also results in smaller bundle sizes.\nBreaking change in 9.1.0\nThe use of encodeURIComponent on the argument passed to initImplicitFlow and its Code Flow counterparts was mandatory before this version.\nSince that was considered a bug, the need to do so was removed.\nNow the reverse is true if you're upgrading from before 9.0.0: you need to remove any call to encode URI components in your own application, as the library will now do it for you.\nTutorials\n\nTutorial with Demo Servers available online\nAngular Authentication with OpenID Connect and Okta in 20 Minutes\nAdd Authentication to Your Angular PWA\nBuild an Ionic App with User Authentication\nOn-Site Workshops\nAngular 6 with Auth0 using this library\n\nThanks to all Contributors\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"license.html":{"url":"license.html","title":"getting-started - license","body":"\n \n\nCopyright (c) 2017 Manfred Steyer\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"modules.html":{"url":"modules.html","title":"modules - modules","body":"\n \n\n\n\n\n Modules\n\n\n \n \n \n \n OAuthModule\n \n \n \n No graph available.\n \n \n Browse\n \n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"overview.html":{"url":"overview.html","title":"overview - overview","body":"\n \n\n\n\n Overview\n\n \n\n \n \n\n\n\n\n\ndependencies\n\ndependencies\n\n\n\n \n \n \n Zoom in\n Reset\n Zoom out\n \n\n \n\n \n \n \n \n \n \n 1 Module\n \n \n \n \n \n \n \n \n 5 Injectables\n \n \n \n \n \n \n \n 20 Classes\n \n \n \n \n \n \n \n 5 Interfaces\n \n \n \n \n\n\n \n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"miscellaneous/typealiases.html":{"url":"miscellaneous/typealiases.html","title":"miscellaneous-typealiases - typealiases","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n Miscellaneous\n Type aliases\n\n\n\n Index\n \n \n \n \n \n \n EventType   (projects/.../events.ts)\n \n \n \n \n \n \n\n\n projects/lib/src/events.ts\n \n \n \n \n \n \n EventType\n \n \n \n \n \"discovery_document_loaded\" | \"jwks_load_error\" | \"invalid_nonce_in_state\" | \"discovery_document_load_error\" | \"discovery_document_validation_error\" | \"user_profile_loaded\" | \"user_profile_load_error\" | \"token_received\" | \"token_error\" | \"code_error\" | \"token_refreshed\" | \"token_refresh_error\" | \"silent_refresh_error\" | \"silently_refreshed\" | \"silent_refresh_timeout\" | \"token_validation_error\" | \"token_expires\" | \"session_changed\" | \"session_error\" | \"session_terminated\" | \"session_unchanged\" | \"logout\" | \"popup_closed\" | \"popup_blocked\" | \"token_revoke_error\"\n\n \n \n \n \n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"miscellaneous/variables.html":{"url":"miscellaneous/variables.html","title":"miscellaneous-variables - variables","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n Miscellaneous\n Variables\n\n\n\n Index\n \n \n \n \n \n \n AUTH_CONFIG   (projects/.../tokens.ts)\n \n \n err   (projects/.../jwks-validation-handler.ts)\n \n \n sha256   (projects/.../hash-handler.ts)\n \n \n \n \n \n \n\n\n projects/lib/src/tokens.ts\n \n \n \n \n \n \n \n AUTH_CONFIG\n \n \n \n \n \n \n Default value : new InjectionToken('AUTH_CONFIG')\n \n \n\n\n \n \n\n projects/lib/src/token-validation/jwks-validation-handler.ts\n \n \n \n \n \n \n \n err\n \n \n \n \n \n \n Default value : `PLEASE READ THIS CAREFULLY:\n\nBeginning with angular-oauth2-oidc version 9, the JwksValidationHandler\nhas been moved to an library of its own. If you need it for implementing\nOAuth2/OIDC **implicit flow**, please install it using npm:\n\n npm i angular-oauth2-oidc-jwks --save\n\nAfter that, you can import it into your application:\n\n import { JwksValidationHandler } from 'angular-oauth2-oidc-jwks';\n\nPlease note, that this dependency is not needed for the **code flow**,\nwhich is nowadays the **recommented** one for single page applications.\nThis also results in smaller bundle sizes.\n`\n \n \n\n\n \n \n\n projects/lib/src/token-validation/hash-handler.ts\n \n \n \n \n \n \n \n sha256\n \n \n \n \n \n \n Default value : factory()\n \n \n\n\n \n \n\n\n\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"additional-documentation/getting-started.html":{"url":"additional-documentation/getting-started.html","title":"additional-page - Getting Started","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\nGetting Started\nPlease find the Getting Started Guide in the README above.\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"additional-documentation/preserving-state-(like-the-requested-url).html":{"url":"additional-documentation/preserving-state-(like-the-requested-url).html","title":"additional-page - Preserving State (like the Requested URL)","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\nPreserving State (like the Requested URL)\nWhen calling initImplicitFlow, you can pass an optional state which could be the requested url:\nthis.oauthService.initImplicitFlow('http://www.myurl.com/x/y/z');After login succeeded, you can read this state:\nthis.oauthService.tryLogin({\n onTokenReceived: (info) => {\n console.debug('state', info.state);\n }\n})\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"additional-documentation/refreshing-a-token.html":{"url":"additional-documentation/refreshing-a-token.html","title":"additional-page - Refreshing a Token","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\nRefreshing a Token using Code Flow (not Implicit Flow!)\nWhen using code flow, you can get an refresh_token. While the original standard DOES NOT allow this for SPAs, the mentioned OAuth 2.0 Security Best Current Practice document proposes to ease this limitation. However, it specifies a list of requirements one should take care about before using refresh_tokens. Please make sure you respect those requirements.\nPlease also note, that you have to request the offline_access scope to get a refresh token.\nTo refresh your token, just call the refreshToken method:\nthis.oauthService.refreshToken();Automatically refreshing a token when/ before it expires (Code Flow and Implicit Flow)\nTo automatically refresh a token when/ some time before it expires, just call the following method after configuring the OAuthService:\nthis.oauthService.setupAutomaticSilentRefresh();By default, this event is fired after 75% of the token's life time is over. You can adjust this factor by setting the property timeoutFactor to a value between 0 and 1. For instance, 0.5 means, that the event is fired after half of the life time is over and 0.33 triggers the event after a third.\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"additional-documentation/silent-refresh.html":{"url":"additional-documentation/silent-refresh.html","title":"additional-page - Silent Refresh","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\nRefreshing when using Implicit Flow (Implicit Flow and Code Flow)\nNotes for Code Flow: You can also use this strategy for refreshing tokens when using code flow. However, please note, the strategy described within Token Refresh is far easier in this case.\nTo refresh your tokens when using implicit flow you can use a silent refresh. This is a well-known solution that compensates the fact that implicit flow does not allow for issuing a refresh token. It uses a hidden iframe to get another token from the auth server. When the user is there still logged in (by using a cookie) it will respond without user interaction and provide new tokens.\nTo use this approach, setup a redirect uri for the silent refresh.\nFor this, you can set the property silentRefreshRedirectUri in the config object:\n// This api will come in the next version\n\nimport { AuthConfig } from 'angular-oauth2-oidc';\n\nexport const authConfig: AuthConfig = {\n\n // Url of the Identity Provider\n issuer: 'https://steyer-identity-server.azurewebsites.net/identity',\n\n // URL of the SPA to redirect the user to after login\n redirectUri: window.location.origin + '/index.html',\n\n // URL of the SPA to redirect the user after silent refresh\n silentRefreshRedirectUri: window.location.origin + '/silent-refresh.html',\n\n // defaults to true for implicit flow and false for code flow\n // as for code code the default is using a refresh_token\n // Also see docs section 'Token Refresh'\n useSilentRefresh: true,\n\n // The SPA's id. The SPA is registerd with this id at the auth-server\n clientId: 'spa-demo',\n\n // set the scope for the permissions the client should request\n // The first three are defined by OIDC. The 4th is a usecase-specific one\n scope: 'openid profile email voucher',\n}As an alternative, you can set the same property directly with the OAuthService:\nthis.oauthService.silentRefreshRedirectUri = window.location.origin + \"/silent-refresh.html\";Please keep in mind that this uri has to be configured at the auth-server too.\nThis file is loaded into the hidden iframe after getting new tokens. Its only task is to send the received tokens to the main application:\n\n\n \n (window.opener || window.parent).postMessage(location.hash || ('#' + location.search), location.origin);\n \n\nThis simple implementation within silent-refresh.html is sufficient in most cases. It takes care of the hash fragment as well as of the query string (property search). For edge cases you need to check if the received hash fragment is a token response. For this, please go with the following more advanced implementation:\n\n \n \n var checks = [/[\\?|&|#]code=/, /[\\?|&|#]error=/, /[\\?|&|#]token=/, /[\\?|&|#]id_token=/];\n\n function isResponse(str) {\n if (!str) return false;\n for(var i=0; i\n \nThe above example checks if the message in the URL (either hash or query string) is indeed a message returned with a response from an authentication provider and not an arbitrary value and then attempts to forward this message to a parent widow either by .parent (when this html is loaded in an iframe as a result of silent refresh) or by .opener (when the html is loaded into a popup during initial login) or finally using a storage event (as a fallback for complex cases, e.g. initial login in a popup with a cross-domain auth provider).\nPlease make sure that this file is copied to your output directory by your build task. When using the CLI you can define it as an asset for this. For this, you have to add the following line to the file .angular-cli.json:\n\"assets\": [\n [...],\n \"silent-refresh.html\"\n],To perform a silent refresh, just call the following method:\nthis\n .oauthService\n .silentRefresh()\n .then(info => console.debug('refresh ok', info))\n .catch(err => console.error('refresh error', err));When there is an error in the iframe that prevents the communication with the main application, silentRefresh will give you a timeout. To configure the timespan for this, you can set the property silentRefreshTimeout (msec). The default value is 20.000 (20 seconds).\nAutomatically refreshing a token when/ before it expires (Code Flow and Implicit Flow)\nTo automatically refresh a token when/ some time before it expires, just call the following method after configuring the OAuthService:\nthis.oauthService.setupAutomaticSilentRefresh();By default, this event is fired after 75% of the token's life time is over. You can adjust this factor by setting the property timeoutFactor to a value between 0 and 1. For instance, 0.5 means, that the event is fired after half of the life time is over and 0.33 triggers the event after a third.\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"additional-documentation/working-with-httpinterceptors.html":{"url":"additional-documentation/working-with-httpinterceptors.html","title":"additional-page - Working with HttpInterceptors","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\nInterceptors\nSince 3.1 the library uses a default HttpInterceptor that takes care about transmitting the access_token to the resource server and about error handling for security related errors (HTTP status codes 401 and 403) received from the resource server. To put in on, just set sendAccessToken to true and set allowedUrls to an array with prefixes for the respective urls. Use lower case for the prefixes:\nOAuthModule.forRoot({\n resourceServer: {\n allowedUrls: ['http://www.angular.at/api'],\n sendAccessToken: true\n }\n})You can provide an error handler for the urls white listed here by provding a service for the token OAuthResourceServerErrorHandler.\nTo implement such a service, implement the abstract class OAuthResourceServerErrorHandler. The following example shows the default implemantion that just passes the cought error through:\nexport class OAuthNoopResourceServerErrorHandler implements OAuthResourceServerErrorHandler {\n \n handleError(err: HttpResponse): Observable {\n return _throw(err);\n }\n\n}Custom Interceptors\nFeel free to write custom interceptors but keep in mind that injecting the OAuthService into them creates a circular dependency which leads to an error. The easiest way to prevent this is to use the OAuthStorage directly which also provides the access_token:\nimport { Injectable, Inject, Optional } from '@angular/core';\nimport { OAuthService, OAuthStorage } from 'angular-oauth2-oidc';\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse, HttpErrorResponse } from '@angular/common/http';\nimport {Observable} from 'rxjs/Observable';\nimport { OAuthResourceServerErrorHandler } from \"./resource-server-error-handler\";\nimport { OAuthModuleConfig } from \"../oauth-module.config\";\n\nimport 'rxjs/add/operator/catch';\n\n@Injectable()\nexport class DefaultOAuthInterceptor implements HttpInterceptor {\n \n constructor(\n private authStorage: OAuthStorage,\n private errorHandler: OAuthResourceServerErrorHandler,\n @Optional() private moduleConfig: OAuthModuleConfig\n ) {\n }\n\n private checkUrl(url: string): boolean {\n let found = this.moduleConfig.resourceServer.allowedUrls.find(u => url.startsWith(u));\n return !!found;\n }\n\n public intercept(req: HttpRequest, next: HttpHandler): Observable> {\n \n let url = req.url.toLowerCase();\n\n if (!this.moduleConfig) return next.handle(req);\n if (!this.moduleConfig.resourceServer) return next.handle(req);\n if (!this.moduleConfig.resourceServer.allowedUrls) return next.handle(req);\n if (!this.checkUrl(url)) return next.handle(req);\n\n let sendAccessToken = this.moduleConfig.resourceServer.sendAccessToken;\n \n if (sendAccessToken) {\n\n let token = this.authStorage.getItem('access_token');\n let header = 'Bearer ' + token;\n\n let headers = req.headers\n .set('Authorization', header);\n\n req = req.clone({ headers });\n }\n\n return next.handle(req).catch(err => this.errorHandler.handleError(err));\n\n }\n\n}\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"additional-documentation/callback-after-login.html":{"url":"additional-documentation/callback-after-login.html","title":"additional-page - Callback after login","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\nCallback after login\nThere is a callback onTokenReceived, that is called after a successful login. In this case, the lib received the access_token as\nwell as the id_token, if it was requested. If there is an id_token, the lib validated it.\nthis.oauthService.tryLogin({\n onTokenReceived: context => {\n //\n // Output just for purpose of demonstration\n // Don't try this at home ... ;-)\n //\n console.debug(\"logged in\");\n console.debug(context);\n }\n});\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"additional-documentation/popup-based-login.html":{"url":"additional-documentation/popup-based-login.html","title":"additional-page - Popup-based Login","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\nLogging in With a Popup\nThanks to a great community contribution, this library also supports logging the user in via a popup. For this, you need to do two things:\n\nUse initLoginFlowInPopup instead of initLoginFlow.\nCreate and configure a silent-refresh.html as described here *.\n\n* Please note this does not mean that you have to use silent refresh too.\nAlso, for your silent-regfesh.html, make sure you are also targeting\nwindow.opener and fall back to window.parent:\nPlease note: IE sets opener to null under specific security settings. This prevents making this work.\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"additional-documentation/custom-query-parameters.html":{"url":"additional-documentation/custom-query-parameters.html","title":"additional-page - Custom Query Parameters","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\nCustom Query Parameters\nYou can set the property customQueryParams to a hash with custom parameter that are transmitted when starting implicit flow.\nthis.oauthService.customQueryParams = {\n 'tenant': '4711',\n 'otherParam': 'someValue'\n};\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"additional-documentation/events.html":{"url":"additional-documentation/events.html","title":"additional-page - Events","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\nEvents\nThe library informs you about its tasks and state using events.\nThis is an Observable which publishes a stream of events as they occur in the service.\nYou can log these events to the console for debugging information.\nA short snippet you could use:\nthis.oauthService.events.subscribe(e => console.log(e));Or a longer, more extensive version that logs them at different levels:\nimport { OAuthErrorEvent } from 'angular-oauth2-oidc';\n\n// ...\n\nthis.authService.events.subscribe(event => {\n if (event instanceof OAuthErrorEvent) {\n console.error(event);\n } else {\n console.warn(event);\n }\n});Here's a list of the main events you might encounter:\n\ndiscovery_document_loaded is published whenever the service has retrieved the openid configuration and successfully saved the jwks information\ninvalid_nonce_in_state is published during tryLogin, when an access token has been requested and the state check was not disabled via the options, only in case the nonce is not as expected (see OAuth2 spec for more details about the nonce)\nuser_profile_loaded is published just before loadUserProfile() successfully resolves\ntoken_received is published whenever the requested token(s) have been successfully received and stored\nsilently_refreshed is published when the silent refresh timer has gone off and the library has also successfully refreshed the tokens (only applicable to Implicit Flow)\nsilent_refresh_timeout is published if the silent refresh timer has gone off but it takes too long to successfully refresh\nsession_error will only be published if the session checks encounter an error\n\nFor a full list of available events see the string based enum in the file events.ts.\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"additional-documentation/routing-with-the-hashstrategy.html":{"url":"additional-documentation/routing-with-the-hashstrategy.html","title":"additional-page - Routing with the HashStrategy","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\nRouting with the HashStrategy\nIf you are leveraging the LocationStrategy which the Router is using by default, you can skip this section.\nWhen using the HashStrategy for Routing, the Router will override the received hash fragment with the tokens when it performs it initial navigation. This prevents the library from reading them. To avoid this, disable initial navigation when setting up the routes for your root module:\nexport let AppRouterModule = RouterModule.forRoot(APP_ROUTES, {\n useHash: true,\n initialNavigation: false\n});After tryLogin did its job, you can manually perform the initial navigation:\nthis.oauthService.tryLogin().then(_ => {\n this.router.navigate(['/']);\n})Another solution is the use a redirect uri that already contains the initial route. In this case the router will not override it. An example for such a redirect uri is\n http://localhost:8080/#/home\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"additional-documentation/adapt-id_token-validation.html":{"url":"additional-documentation/adapt-id_token-validation.html","title":"additional-page - Adapt id_token Validation","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\nConfigure/ Adapt id_token Validation\nYou can hook in an implementation of the interface TokenValidator to validate the signature of the received id_token and its at_hash property. This packages provides two implementations:\n\nJwksValidationHandler\nNullValidationHandler\n\nThe former one validates the signature against public keys received via the discovery document (property jwks) and the later one skips the validation on client side.\nimport { JwksValidationHandler } from 'angular-oauth2-oidc';\n\n[...]\n\nthis.oauthService.tokenValidationHandler = new JwksValidationHandler();In cases where no ValidationHandler is defined, you receive a warning on the console. This means that the library wants you to explicitly decide on this.\nDependency Injection\nYou can also setup a ValidationHandler by leveraging dependency injection:\n[...]\nproviders: [\n { provide: ValidationHandler, useClass: JwksValidationHandler },\n],\n[...]\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"additional-documentation/session-checks.html":{"url":"additional-documentation/session-checks.html","title":"additional-page - Session Checks","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\nSession Checks\nBeginning with version 2.1, you can receive a notification when the user signs out with the identity provider.\nThis is implemented as defined by the OpenID Connect Session Management 1.0 spec.\nWhen this option is activated, the library also automatically ends your local session. This means, the current tokens\nare deleted by calling logOut. In addition to that, the library sends a session_terminated event, you can register\nfor to perform a custom action.\nPlease note that this option can only be used when also the identity provider in question supports it.\nConfiguration\nTo activate the session checks that leads to the mentioned notifications, set the configuration property\nsessionChecksEnabled:\nimport { AuthConfig } from 'angular-oauth2-oidc';\n\nexport const authConfig: AuthConfig = {\n issuer: 'https://steyer-identity-server.azurewebsites.net/identity',\n redirectUri: window.location.origin + '/index.html',\n silentRefreshRedirectUri: window.location.origin + '/silent-refresh.html',\n clientId: 'spa-demo',\n scope: 'openid profile email voucher',\n\n // Activate Session Checks:\n sessionChecksEnabled: true,\n}Refresh\nPlease note that the lib performs a token refresh when the session changes to get the newest information about the current session. When using implicit flow, this means you have to configure silent refresh; when using code flow you either need silent refresh or a refresh token.\nIf using refresh tokens, your Auth Server needs to bind them to the current session's lifetime. Unfortunately, the used version of Identity Server 4, shown in the docs and in the example applications, does not support this at the moment.\nEvents\nTo get notified, you can hook up for the event session_terminated:\nthis.oauthService.events.pipe(filter(e => e.type === 'session_terminated')).subscribe(e => {\n console.debug('Your session has been terminated!');\n})\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"additional-documentation/server-side-rendering.html":{"url":"additional-documentation/server-side-rendering.html","title":"additional-page - Server Side Rendering","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\nServer Side Rendering\nThere is a great blog post that shows how this library can be used together with server side rendering:\nhttps://medium.com/lankapura/angular-server-side-rendering-for-authenticated-users-a021627fd9d3The sample for this can be found here:\nhttps://github.com/lankaapura/Angular-AspNetCore-Idsvr\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{"url":"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html","title":"additional-page - Configure Library for Implicit Flow without discovery document","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\nConfigure Library for Implicit Flow (without discovery document)\nWhen you don't have a discovery document, you have to configure more properties manually:\nPlease note that the following sample uses the original config API. For information about the new config API have a look to the project's README above.\n@Component({ ... })\nexport class AppComponent {\n\n constructor(private oauthService: OAuthService) {\n\n // Login-Url\n this.oauthService.loginUrl = \"https://steyer-identity-server.azurewebsites.net/identity/connect/authorize\"; //Id-Provider?\n\n // URL of the SPA to redirect the user to after login\n this.oauthService.redirectUri = window.location.origin + \"/index.html\";\n\n // The SPA's id. Register SPA with this id at the auth-server\n this.oauthService.clientId = \"spa-demo\";\n\n // set the scope for the permissions the client should request\n this.oauthService.scope = \"openid profile email voucher\";\n\n // Use setStorage to use sessionStorage or another implementation of the TS-type Storage\n // instead of localStorage\n this.oauthService.setStorage(sessionStorage);\n\n // To also enable single-sign-out set the url for your auth-server's logout-endpoint here\n this.oauthService.logoutUrl = \"https://steyer-identity-server.azurewebsites.net/identity/connect/endsession\";\n\n // This method just tries to parse the token(s) within the url when\n // the auth-server redirects the user back to the web-app\n // It doesn't send the user the the login page\n this.oauthService.tryLogin();\n\n\n }\n\n}\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{"url":"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html","title":"additional-page - Using an ID Provider that Fails Discovery Document Validation","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\nDiscovery Document Validation\nThe configuration parameter strictDiscoveryDocumentValidation is set true by default. This ensures that all of the endpoints provided via the ID Provider discovery document share the same base URL as the issuer parameter.\nSeveral ID Providers (i.e. Google OpenID, WS02-IS, PingOne) provide different domains or path params for various endpoints in the discovery document. These providers may still adhere to the OpenID Connect Provider Configuration specification, but will fail to pass this library's discovery document validation.\nTo use this library with an ID Provider that does not maintain a consistent base URL across the discovery document endpoints, set the strictDiscoveryDocumentValidation parameter to false in your configuration:\nimport { AuthConfig } from 'angular-oauth2-oidc';\n\nexport const authConfig: AuthConfig = {\n\n // Url of the Identity Provider\n issuer: 'https://steyer-identity-server.azurewebsites.net/identity',\n\n // URL of the SPA to redirect the user to after login\n redirectUri: window.location.origin + '/index.html',\n\n // The SPA's id. The SPA is registerd with this id at the auth-server\n clientId: 'spa-demo',\n\n // set the scope for the permissions the client should request\n // The first three are defined by OIDC. The 4th is a usecase-specific one\n scope: 'openid profile email voucher',\n\n // turn off validation that discovery document endpoints start with the issuer url defined above\n strictDiscoveryDocumentValidation: false\n}\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"additional-documentation/using-systemjs.html":{"url":"additional-documentation/using-systemjs.html","title":"additional-page - Using SystemJS","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\nUsing SystemJS\nThanks to Kevin BEAUGRAND for adding this information regarding SystemJS.\nSystem.config({\n...\n meta: {\n 'angular-oauth2-oidc': {\n deps: ['jsrsasign']\n },\n }\n...\n});Also thanks to ppanthony for sharing his SystemJS config:\n'angular-oauth2-oidc': {\n main: 'angular-oauth2-oidc.umd.js',\n format: 'cjs',\n defaultExtension: 'js',\n map: {\n 'jsrsasign': '/node_modules/jsrsasign/lib/jsrsasign',\n },\n meta: {\n 'angular-oauth2-oidc': {\n deps: ['require','jsrsasign']\n },\n }\n}\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"additional-documentation/using-implicit-flow.html":{"url":"additional-documentation/using-implicit-flow.html","title":"additional-page - Using Implicit Flow","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\nConfiguring for Implicit Flow\nThis section shows how to implement login leveraging implicit flow. This is the OAuth2/OIDC flow which was originally intended for Single Page Application. \nMeanwhile using Code Flow instead is a best practice and with OAuth 2.1 implicit flow will be deprecated*.\nimport { AuthConfig } from 'angular-oauth2-oidc';\n\nexport const authConfig: AuthConfig = {\n // Url of the Identity Provider\n issuer: 'https://steyer-identity-server.azurewebsites.net/identity',\n\n // URL of the SPA to redirect the user to after login\n redirectUri: window.location.origin + '/index.html',\n\n // The SPA's id. The SPA is registered with this id at the auth-server\n clientId: 'spa-demo',\n\n // set the scope for the permissions the client should request\n // The first three are defined by OIDC. The 4th is a usecase-specific one\n scope: 'openid profile email voucher',\n}Configure the OAuthService with this config object when the application starts up:\nimport { OAuthService } from 'angular-oauth2-oidc';\nimport { JwksValidationHandler } from 'angular-oauth2-oidc';\nimport { authConfig } from './auth.config';\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'flight-app',\n templateUrl: './app.component.html'\n})\nexport class AppComponent {\n\n constructor(private oauthService: OAuthService) {\n this.configure();\n }\n\n private configure() {\n this.oauthService.configure(authConfig);\n this.oauthService.tokenValidationHandler = new JwksValidationHandler();\n this.oauthService.loadDiscoveryDocumentAndTryLogin();\n }\n}Implementing a Login Form\nAfter you've configured the library, you just have to call initImplicitFlow to login using OAuth2/ OIDC.\nimport { Component } from '@angular/core';\nimport { OAuthService } from 'angular-oauth2-oidc';\n\n@Component({\n templateUrl: \"app/home.html\"\n})\nexport class HomeComponent {\n\n constructor(private oauthService: OAuthService) {\n }\n\n public login() {\n this.oauthService.initLoginFlow();\n }\n\n public logoff() {\n this.oauthService.logOut();\n }\n\n public get name() {\n let claims = this.oauthService.getIdentityClaims();\n if (!claims) return null;\n return claims.given_name;\n }\n\n}The following snippet contains the template for the login page:\n\n Hallo\n\n\n Hallo, {{name}}\n\n\n\n Login\n\n\n Logout\n\n\n\n Username/Passwort zum Testen: max/geheim\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"additional-documentation/using-password-flow.html":{"url":"additional-documentation/using-password-flow.html","title":"additional-page - Using Password Flow","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\nUsing Password-Flow\nThis section shows how to use the password flow, which demands the user to directly enter his or her password into the client.\nPlease note that from an OAuth2/OIDC perspective, the code flow is better suited for logging into a SPA and the flow described here should only be used,\nwhen a) there is a strong trust relations ship between the client and the auth server and when b) other flows are not possible.\nPlease also note that with OAuth 2.1, password flow will be deprecated. \nConfigure Library for Password Flow (using discovery document)\nTo configure the library you just have to set some properties on startup. For this, the following sample uses the constructor of the AppComponent which is called before routing kicks in.\nPlease not, that this configuration is quite similar to the one for the implcit flow.\n@Component({ ... })\nexport class AppComponent {\n\n constructor(private oauthService: OAuthService) {\n\n // The SPA's id. Register SPA with this id at the auth-server\n this.oauthService.clientId = \"demo-resource-owner\";\n\n // set the scope for the permissions the client should request\n // The auth-server used here only returns a refresh token (see below), when the scope offline_access is requested\n this.oauthService.scope = \"openid profile email voucher offline_access\";\n\n // Use setStorage to use sessionStorage or another implementation of the TS-type Storage\n // instead of localStorage\n this.oauthService.setStorage(sessionStorage);\n\n // Set a dummy secret\n // Please note that the auth-server used here demand the client to transmit a client secret, although\n // the standard explicitly cites that the password flow can also be used without it. Using a client secret\n // does not make sense for a SPA that runs in the browser. That's why the property is called dummyClientSecret\n // Using such a dummy secret is as safe as using no secret.\n this.oauthService.dummyClientSecret = \"geheim\";\n\n // Load Discovery Document and then try to login the user\n let url = 'https://steyer-identity-server.azurewebsites.net/identity/.well-known/openid-configuration';\n this.oauthService.loadDiscoveryDocument(url).then(() => {\n // Do what ever you want here\n });\n\n }\n\n}Configure Library for Password Flow (without discovery document)\nIn cases where you don't have an OIDC based discovery document you have to configure some more properties manually:\n@Component({ ... })\nexport class AppComponent {\n\n constructor(private oauthService: OAuthService) {\n\n // Login-Url\n this.oauthService.tokenEndpoint = \"https://steyer-identity-server.azurewebsites.net/identity/connect/token\";\n\n // Url with user info endpoint\n // This endpont is described by OIDC and provides data about the loggin user\n // This sample uses it, because we don't get an id_token when we use the password flow\n // If you don't want this lib to fetch data about the user (e. g. id, name, email) you can skip this line\n this.oauthService.userinfoEndpoint = \"https://steyer-identity-server.azurewebsites.net/identity/connect/userinfo\";\n\n // The SPA's id. Register SPA with this id at the auth-server\n this.oauthService.clientId = \"demo-resource-owner\";\n\n // set the scope for the permissions the client should request\n this.oauthService.scope = \"openid profile email voucher offline_access\";\n\n // Set a dummy secret\n // Please note that the auth-server used here demand the client to transmit a client secret, although\n // the standard explicitly cites that the password flow can also be used without it. Using a client secret\n // does not make sense for a SPA that runs in the browser. That's why the property is called dummyClientSecret\n // Using such a dummy secret is as safe as using no secret.\n this.oauthService.dummyClientSecret = \"geheim\";\n\n }\n\n}Fetching an Access Token by providing the current user's credentials\nthis.oauthService.fetchTokenUsingPasswordFlow('max', 'geheim').then((resp) => {\n\n // Loading data about the user\n return this.oauthService.loadUserProfile();\n\n}).then(() => {\n\n // Using the loaded user data\n let claims = this.oAuthService.getIdentityClaims();\n if (claims) console.debug('given_name', claims.given_name);\n\n})There is also a short form for fetching the token and loading the user profile:\nthis.oauthService.fetchTokenUsingPasswordFlowAndLoadUserProfile('max', 'geheim').then(() => {\n let claims = this.oAuthService.getIdentityClaims();\n if (claims) console.debug('given_name', claims.given_name);\n});Refreshing the current Access Token\nUsing the password flow you MIGHT get a refresh token (which isn't the case with the implicit flow by design!). You can use this token later to get a new access token, e. g. after it expired.\nthis.oauthService.refreshToken().then(() => {\n console.debug('ok');\n})\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"additional-documentation/configure-custom-oauthstorage.html":{"url":"additional-documentation/configure-custom-oauthstorage.html","title":"additional-page - Configure custom OAuthStorage","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\nConfigure custom OAuthStorage\nThis library uses sessionStorage as the default storage provider. You can customize this by using localStorage or your own storage solution.\nUsing localStorage\nIf you want to use localStorage instead of sessionStorage, you can add a provider to your AppModule. This works as follows:\nimport { HttpClientModule } from '@angular/common/http';\nimport { OAuthModule } from 'angular-oauth2-oidc';\n// etc.\n\n// We need a factory, since localStorage is not available during AOT build time.\nexport function storageFactory() : OAuthStorage {\n return localStorage\n}\n \n@NgModule({\n imports: [ \n // etc.\n HttpClientModule,\n OAuthModule.forRoot()\n ],\n declarations: [\n AppComponent,\n HomeComponent,\n // etc.\n ],\n bootstrap: [\n AppComponent \n ],\n providers: [\n { provide: OAuthStorage, useFactory: storageFactory }\n ]\n})\nexport class AppModule {\n}Custom storage solution\nIf you want to use a custom storage solution, you can extend the OAuthStorage class. Documentation can be found here. Then add it as a provider, just like in the localStorage example above.\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"additional-documentation/manually-skipping-login-form.html":{"url":"additional-documentation/manually-skipping-login-form.html","title":"additional-page - Manually Skipping Login Form","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\nManually Skipping the Login Form\nFirst, try to use the loadDiscoveryDocumentAndLogin method instead of loadDiscoveryDocumentAndTryLogin. If you need more control, the following could be interesting for you.\nthis.oauthService\n .loadDiscoveryDocumentAndTryLogin(/* { your LoginOptions }*/) // checks to see if the current url contains id token and access token\n .(hasReceivedTokens => {\n // this would have stored all the tokens needed\n if (hasReceivedTokens) {\n // carry on with your app\n return Promise.resolve();\n\n /* if you wish to do something when the user receives tokens from the identity server,\n * use the event stream or the `onTokenReceived` callback in LoginOptions.\n *\n * this.oauthService.events(filter(e => e.type === 'token_received')).subscribe()\n */\n } else {\n // may want to check if you were previously authenticated\n if (this.oauthService.hasValidAccessToken() && this.oauthService.hasValidIdToken()) {\n return Promise.resolve();\n } else {\n // to safe guard this from progressing through the calling promise,\n // resolve it when it directed to the sign up page\n return new Promise(resolve => {\n this.oauthService.initLoginFlow();\n // example if you are using explicit flow\n this.window.addEventListener('unload', () => {\n resolve(true);\n });\n });\n }\n }\n })\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"additional-documentation/original-config-api.html":{"url":"additional-documentation/original-config-api.html","title":"additional-page - Original Config API","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\nOriginal Config API\n\nThis describes the older config API which is nowadays only supported for the sake of backwards compatibility. \n\nTo configure the library you just have to set some properties on startup. For this, the following sample uses the constructor of the AppComponent which is called before routing kicks in.\nPlease note that the following sample uses the original config API. For information about the new config API have a look to the project's README above.\n@Component({ ... })\nexport class AppComponent {\n\n constructor(private oauthService: OAuthService) {\n\n // URL of the SPA to redirect the user to after login\n this.oauthService.redirectUri = window.location.origin + \"/index.html\";\n\n // The SPA's id. The SPA is registerd with this id at the auth-server\n this.oauthService.clientId = \"spa-demo\";\n\n // set the scope for the permissions the client should request\n // The first three are defined by OIDC. The 4th is a usecase-specific one\n this.oauthService.scope = \"openid profile email voucher\";\n\n // The name of the auth-server that has to be mentioned within the token\n this.oauthService.issuer = \"https://steyer-identity-server.azurewebsites.net/identity\";\n\n // Load Discovery Document and then try to login the user\n this.oauthService.loadDiscoveryDocument().then(() => {\n\n // This method just tries to parse the token(s) within the url when\n // the auth-server redirects the user back to the web-app\n // It dosn't send the user the the login page\n this.oauthService.tryLogin();\n\n });\n\n }\n\n}If you find yourself receiving errors related to discovery document validation, your ID Provider may have OAuth2 endpoints that do not use the issuer value as a consistent base URL. You can turn off strict validation of discovery document endpoints for this scenario. See Discovery Document Validation for details.\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"additional-documentation/authorization-servers.html":{"url":"additional-documentation/authorization-servers.html","title":"additional-page - Authorization Servers","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\nSupport for Auth Servers\nAs this lib follows the OAuth2 and OpenId Connect specs, it should work with all compliant authorizations servers.\nHowever, experience shows that some authorizations servers come with some special behavior or settings. Hence, we must respect this when using this lib.\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"additional-documentation/authorization-servers/using-identity-server.html":{"url":"additional-documentation/authorization-servers/using-identity-server.html","title":"additional-page - Using Identity Server","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\nUsing Identity Server\nThis lib should work as shown in all examples here with Identity Server. \n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"additional-documentation/authorization-servers/using-keycloak.html":{"url":"additional-documentation/authorization-servers/using-keycloak.html","title":"additional-page - Using Keycloak","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\nUsing Keycloak\nThis lib should work as shown in all examples here with Keycloak. \n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"additional-documentation/authorization-servers/auth0.html":{"url":"additional-documentation/authorization-servers/auth0.html","title":"additional-page - Auth0","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\nUsing Auth0\nTo use this lib with Auth0, open your Auth0 account and configure:\n\nAn app \nAn API\n\nConfigure the app to use refresh token rotation and the grant types authorization code and refresh token. For grant types, see the advanced settings at the end of the settings page.\nConfiguration\nProvide a configuration like this:\nimport { AuthConfig } from 'angular-oauth2-oidc';\n\nexport const authConfig: AuthConfig = {\n\n issuer: 'https://dev-g-61sdfs.eu.auth0.com/',\n\n // Your app's client id:\n clientId: 'opHt1Tkt9E9fVQTZPBVF1tHVhjrxvyVX',\n redirectUri: window.location.origin,\n\n scope: 'openid profile email offline_access',\n\n responseType: 'code',\n\n logoutUrl: 'https://dev-g-61sdfs.eu.auth0.com/v2/logout',\n\n customQueryParams: {\n // Your API's name\n audience: 'http://www.angular.at/api'\n },\n};Getting, Using, and Refreshing a Token\nThis should work as shown in the other examples in this documentation and in the readme file.\nLogging out\nAuth0's logout endpoint expects the parameters client_id and returnTo:\nthis.oauthService.revokeTokenAndLogout({\n client_id: this.oauthService.clientId,\n returnTo: this.oauthService.redirectUri\n}, true);The optional 2nd parameter set to true ignores CORS issues with the logout endpoint.\nExample\nPlease find a demo for using Auth0 with angular-oauth2-oidc here.\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"additional-documentation/authorization-servers/azure-ad-(active-directory).html":{"url":"additional-documentation/authorization-servers/azure-ad-(active-directory).html","title":"additional-page - Azure AD (Active Directory)","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\nUsing with Azure AD\nFor using this library with Azure Active Directory (Azure AD), we recommend an additional look to this blog post and the example linked at the end of this blog post.\n\n \n \n result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"}} } diff --git a/projects/lib/package.json b/projects/lib/package.json index a14e91c3..d84fd277 100644 --- a/projects/lib/package.json +++ b/projects/lib/package.json @@ -4,7 +4,7 @@ "author": { "name": "Manfred Steyer" }, - "version": "12.1.0", + "version": "12.1.0-issue.1149", "repository": "manfredsteyer/angular-oauth2-oidc", "peerDependencies": { "@angular/common": ">=12.0.0", diff --git a/projects/lib/src/auth.config.ts b/projects/lib/src/auth.config.ts index 24a997b0..5f63774c 100644 --- a/projects/lib/src/auth.config.ts +++ b/projects/lib/src/auth.config.ts @@ -257,6 +257,12 @@ export class AuthConfig { */ public disablePKCE? = false; + /** + * Give a max number of retries that can be used for refreshing a token. + * Exponential back-off is used to prevent overloading the iDP. + */ + public maxRefreshRetries? = 1; + constructor(json?: Partial) { if (json) { Object.assign(this, json); diff --git a/projects/lib/src/oauth-service.ts b/projects/lib/src/oauth-service.ts index 817a97eb..84a91946 100644 --- a/projects/lib/src/oauth-service.ts +++ b/projects/lib/src/oauth-service.ts @@ -111,6 +111,7 @@ export class OAuthService extends AuthConfig implements OnDestroy { protected saveNoncesInLocalStorage = false; private document: Document; + private focusEventListener: () => void; constructor( protected ngZone: NgZone, @@ -230,15 +231,41 @@ export class OAuthService extends AuthConfig implements OnDestroy { listenTo?: 'access_token' | 'id_token' | 'any', noPrompt = true ): void { + this.focusEventListener = async () => { + // When the user is not actively using the application, the token_expires + // event might not be fired at the right time, or the refresh request might + // have failed. So check if the token is (almost) expired when the user + // refocusses the application and trigger the event manually. + if (this.shouldRefreshIdToken()) { + this.clearIdTokenTimer(); + this.eventsSubject.next( + new OAuthInfoEvent('token_expires', 'id_token') + ); + } + if (this.shouldRefreshAccessToken()) { + this.clearAccessTokenTimer(); + this.eventsSubject.next( + new OAuthInfoEvent('token_expires', 'access_token') + ); + } + }; + let shouldRunSilentRefresh = true; + let hasFocusEventListenerAdded = false; this.clearAutomaticRefreshTimer(); this.automaticRefreshSubscription = this.events .pipe( tap((e) => { if (e.type === 'token_received') { shouldRunSilentRefresh = true; + if (!hasFocusEventListenerAdded) { + window.addEventListener('focus', this.focusEventListener); + hasFocusEventListenerAdded = true; + } } else if (e.type === 'logout') { shouldRunSilentRefresh = false; + window.removeEventListener('focus', this.focusEventListener); + hasFocusEventListenerAdded = false; } }), filter( @@ -250,24 +277,46 @@ export class OAuthService extends AuthConfig implements OnDestroy { ) .subscribe((_) => { if (shouldRunSilentRefresh) { - // this.silentRefresh(params, noPrompt).catch(_ => { - this.refreshInternal(params, noPrompt).catch((_) => { - this.debug('Automatic silent refresh did not work'); + this.refreshInternal(params, noPrompt).catch((e) => { + this.debug('Automatic silent refresh did not work', e); }); } }); - this.restartRefreshTimerIfStillLoggedIn(); } - protected refreshInternal( + protected async refreshInternal( params, noPrompt ): Promise { - if (!this.useSilentRefresh && this.responseType === 'code') { - return this.refreshToken(); - } else { - return this.silentRefresh(params, noPrompt); + const wrapperFun = () => { + if (!this.useSilentRefresh && this.responseType === 'code') { + return this.refreshToken(); + } else { + return this.silentRefresh(params, noPrompt); + } + }; + + let attempt = 0; + let lastError; + while (attempt < this.maxRefreshRetries) { + // Exponential backoff (scaled to tenths of seconds) + const sleepTime = attempt * attempt * 100; + await new Promise((resolve) => { + setTimeout(() => { + resolve(); + }, sleepTime); + }); + try { + return await wrapperFun(); + } catch (e) { + lastError = e; + this.debug('Automatic silent refresh failed', e); + attempt++; + } + } + if (lastError) { + throw lastError; } } @@ -421,6 +470,17 @@ export class OAuthService extends AuthConfig implements OnDestroy { const timeout = this.calcTimeout(storedAt, expiration); this.ngZone.runOutsideAngular(() => { + // if (this.useWebworkerForTimer) { + // workerTimers.setTimeout(() => { + // this.accessTokenTimeoutSubscription = of( + // new OAuthInfoEvent('token_expires', 'access_token') + // ).subscribe((e) => { + // this.ngZone.run(() => { + // this.eventsSubject.next(e); + // }); + // }); + // }, timeout); + // } else { this.accessTokenTimeoutSubscription = of( new OAuthInfoEvent('token_expires', 'access_token') ) @@ -430,6 +490,7 @@ export class OAuthService extends AuthConfig implements OnDestroy { this.eventsSubject.next(e); }); }); + // } }); } @@ -439,6 +500,17 @@ export class OAuthService extends AuthConfig implements OnDestroy { const timeout = this.calcTimeout(storedAt, expiration); this.ngZone.runOutsideAngular(() => { + // if (this.useWebworkerForTimer) { + // workerTimers.setTimeout(() => { + // this.accessTokenTimeoutSubscription = of( + // new OAuthInfoEvent('token_expires', 'id_token') + // ).subscribe((e) => { + // this.ngZone.run(() => { + // this.eventsSubject.next(e); + // }); + // }); + // }, timeout); + // } else { this.idTokenTimeoutSubscription = of( new OAuthInfoEvent('token_expires', 'id_token') ) @@ -448,6 +520,7 @@ export class OAuthService extends AuthConfig implements OnDestroy { this.eventsSubject.next(e); }); }); + // } }); } @@ -486,6 +559,22 @@ export class OAuthService extends AuthConfig implements OnDestroy { return Math.max(0, delta); } + protected shouldRefresh(storedAt: number, expiration: number): boolean { + return this.calcTimeout(storedAt, expiration) <= 0; + } + + protected shouldRefreshAccessToken(): boolean { + const expiration = this.getAccessTokenExpiration(); + const storedAt = this.getAccessTokenStoredAt(); + return !isNaN(storedAt) && this.shouldRefresh(storedAt, expiration); + } + + protected shouldRefreshIdToken(): boolean { + const expiration = this.getIdTokenExpiration(); + const storedAt = this.getIdTokenStoredAt(); + return !isNaN(storedAt) && this.shouldRefresh(storedAt, expiration); + } + /** * DEPRECATED. Use a provider for OAuthStorage instead: * From 742b7617e29f2c567f5e457003f80956360f4c3b Mon Sep 17 00:00:00 2001 From: marty30 Date: Wed, 27 Oct 2021 15:36:39 +0200 Subject: [PATCH 2/2] Dockerize the sample application --- .dockerignore | 8 +++++ projects/sample/Dockerfile | 30 +++++++++++++++++++ projects/sample/nginx.conf | 20 +++++++++++++ .../sample/src/app/auth-code-flow.config.ts | 2 ++ 4 files changed, 60 insertions(+) create mode 100644 .dockerignore create mode 100644 projects/sample/Dockerfile create mode 100644 projects/sample/nginx.conf diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..685a0022 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,8 @@ +.git +.editorconfig +/.vscode/* +/node_modules +/e2e +/docs +.gitignore +*.zip diff --git a/projects/sample/Dockerfile b/projects/sample/Dockerfile new file mode 100644 index 00000000..82049a5d --- /dev/null +++ b/projects/sample/Dockerfile @@ -0,0 +1,30 @@ +# Source: https://dev.to/oneofthedevs/docker-angular-nginx-37e4 + +### STAGE 1:BUILD ### +# Defining a node image to be used as giving it an alias of "build" +# Which version of Node image to use depends on project dependencies +# This is needed to build and compile our code +# while generating the docker image +FROM node:12.14-alpine AS build +# Create a Virtual directory inside the docker image +WORKDIR /dist/src/app +# Copy files to virtual directory +COPY package.json package-lock.json ./ +# Run command in Virtual directory +RUN npm cache clean --force +RUN npm install +# Copy files from local machine to virtual directory in docker image +COPY . . +RUN npx ng build --configuration production --project sample + + +### STAGE 2:RUN ### +# Defining nginx image to be used +FROM nginx:latest AS ngi +# Copying compiled code and nginx config to different folder +# NOTE: This path may change according to your project's output folder +COPY --from=build /dist/src/app/dist/sample /usr/share/nginx/app +COPY projects/sample/nginx.conf /etc/nginx/conf.d/default.conf +# Exposing a port, here it means that inside the container +# the app will be using Port 80 while running +EXPOSE 80 diff --git a/projects/sample/nginx.conf b/projects/sample/nginx.conf new file mode 100644 index 00000000..ebf29563 --- /dev/null +++ b/projects/sample/nginx.conf @@ -0,0 +1,20 @@ +server { + listen 80; + sendfile on; + default_type application/octet-stream; + + gzip on; + gzip_http_version 1.1; + gzip_disable "MSIE [1-6]\."; + gzip_min_length 256; + gzip_vary on; + gzip_proxied expired no-cache no-store private auth; + gzip_types text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript; + gzip_comp_level 9; + + root /usr/share/nginx/app; + + location / { + try_files $uri $uri/ /index.html =404; + } +} diff --git a/projects/sample/src/app/auth-code-flow.config.ts b/projects/sample/src/app/auth-code-flow.config.ts index 48f2d710..53966d80 100644 --- a/projects/sample/src/app/auth-code-flow.config.ts +++ b/projects/sample/src/app/auth-code-flow.config.ts @@ -50,4 +50,6 @@ export const authCodeFlowConfig: AuthConfig = { // disablePKCI: true, clearHashAfterLogin: true, + + maxRefreshRetries: 3, };

    + + + Public + Optional + maxRefreshRetries + + +
    + Type : number + +
    + Default value : 1 +
    +
    Inherited from AuthConfig +
    +
    +
    Defined in AuthConfig:264 +
    +
    +

    Give a max number of retries that can be used for refreshing a token. +Exponential back-off is used to prevent overloading the iDP.

    -
    Defined in AuthConfig:271 +
    Defined in AuthConfig:277