diff --git a/docs/additional-documentation/adapt-id_token-validation.html b/docs/additional-documentation/adapt-id_token-validation.html index d733deac..960688df 100644 --- a/docs/additional-documentation/adapt-id_token-validation.html +++ b/docs/additional-documentation/adapt-id_token-validation.html @@ -43,6 +43,7 @@ + diff --git a/docs/additional-documentation/callback-after-login.html b/docs/additional-documentation/callback-after-login.html index 940275b4..99ef6d97 100644 --- a/docs/additional-documentation/callback-after-login.html +++ b/docs/additional-documentation/callback-after-login.html @@ -43,6 +43,7 @@ + diff --git a/docs/additional-documentation/code-flow-+-pcke.html b/docs/additional-documentation/code-flow-+-pcke.html index 8e4f51e0..df0086b6 100644 --- a/docs/additional-documentation/code-flow-+-pcke.html +++ b/docs/additional-documentation/code-flow-+-pcke.html @@ -43,6 +43,7 @@ + diff --git a/docs/additional-documentation/configure-custom-oauthstorage.html b/docs/additional-documentation/configure-custom-oauthstorage.html index a858cb00..48160158 100644 --- a/docs/additional-documentation/configure-custom-oauthstorage.html +++ b/docs/additional-documentation/configure-custom-oauthstorage.html @@ -43,6 +43,7 @@ + diff --git a/docs/additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html b/docs/additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html index 4ff822fa..fc84146f 100644 --- a/docs/additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html +++ b/docs/additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html @@ -43,11 +43,12 @@ + -
When you don't have a discovery document, you have to configure more properties manually:
Please 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.
@Component({ ... })
diff --git a/docs/additional-documentation/custom-query-parameters.html b/docs/additional-documentation/custom-query-parameters.html
index 06d0192c..4a56d40c 100644
--- a/docs/additional-documentation/custom-query-parameters.html
+++ b/docs/additional-documentation/custom-query-parameters.html
@@ -43,6 +43,7 @@
+
diff --git a/docs/additional-documentation/events.html b/docs/additional-documentation/events.html
index 34a9d583..3298c5b0 100644
--- a/docs/additional-documentation/events.html
+++ b/docs/additional-documentation/events.html
@@ -43,6 +43,7 @@
+
diff --git a/docs/additional-documentation/getting-started.html b/docs/additional-documentation/getting-started.html
index 57de3494..e8b23232 100644
--- a/docs/additional-documentation/getting-started.html
+++ b/docs/additional-documentation/getting-started.html
@@ -43,6 +43,7 @@
+
diff --git a/docs/additional-documentation/original-config-api.html b/docs/additional-documentation/original-config-api.html
index a48cd80d..a763f2a6 100644
--- a/docs/additional-documentation/original-config-api.html
+++ b/docs/additional-documentation/original-config-api.html
@@ -43,6 +43,7 @@
+
diff --git a/docs/additional-documentation/preserving-state-(like-the-requested-url).html b/docs/additional-documentation/preserving-state-(like-the-requested-url).html
index 457a5891..0da119e9 100644
--- a/docs/additional-documentation/preserving-state-(like-the-requested-url).html
+++ b/docs/additional-documentation/preserving-state-(like-the-requested-url).html
@@ -43,11 +43,12 @@
+
-Preserving State (like the Requested URL)
+Preserving State (like the Requested URL)
When calling initImplicitFlow
, you can pass an optional state which could be the requested url:
this.oauthService.initImplicitFlow('http://www.myurl.com/x/y/z');
After login succeeded, you can read this state:
this.oauthService.tryLogin({
diff --git a/docs/additional-documentation/refreshing-a-token.html b/docs/additional-documentation/refreshing-a-token.html
index 3cc34945..f1c2cd20 100644
--- a/docs/additional-documentation/refreshing-a-token.html
+++ b/docs/additional-documentation/refreshing-a-token.html
@@ -43,6 +43,7 @@
+
@@ -50,7 +51,7 @@
Refreshing a Token
The strategy to use for refreshing your token differs between implicit flow and code flow. Hence, you find here one separate section for both of them.
The last section shows how to automate refreshing for both flows.
-Refreshing when using Code Flow (not Implicit Flow!)
+Refreshing when using Code Flow (not Implicit Flow!)
For refreshing a token with implicit flow, please see section below!
@@ -59,7 +60,7 @@ Refreshing when usin
When using code flow, you can get an refresh_token
. While the original standard DOES NOT allow this for SPAs, the mentioned 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.
Please also note, that you have to request the offline_access
scope to get an refresh token.
To refresh your token, just call the refresh
method:
-this.oauthService.refresh();
Refreshing when using Implicit Flow (not Code Flow!)
+this.oauthService.refresh();
Refreshing when using Implicit Flow (not Code Flow!)
To 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.
To use this approach, setup a redirect uri for the silent refresh.
For this, you can set the property silentRefreshRedirectUri in the config object:
@@ -103,7 +104,7 @@ Refreshing when usin
.silentRefresh()
.then(info => console.debug('refresh ok', info))
.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).
-Automatically refreshing a token when/ before it expires (Code Flow and Implicit Flow)
+Automatically refreshing a token when/ before it expires (Code Flow and Implicit Flow)
To automatically refresh a token when/ some time before it expires, just call the following method after configuring the OAuthService:
this.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.
diff --git a/docs/additional-documentation/routing-with-the-hashstrategy.html b/docs/additional-documentation/routing-with-the-hashstrategy.html
index 2da73036..4aa01cc9 100644
--- a/docs/additional-documentation/routing-with-the-hashstrategy.html
+++ b/docs/additional-documentation/routing-with-the-hashstrategy.html
@@ -43,6 +43,7 @@
+
diff --git a/docs/additional-documentation/server-side-rendering.html b/docs/additional-documentation/server-side-rendering.html
index ae07a376..5f68d88b 100644
--- a/docs/additional-documentation/server-side-rendering.html
+++ b/docs/additional-documentation/server-side-rendering.html
@@ -43,6 +43,7 @@
+
diff --git a/docs/additional-documentation/session-checks.html b/docs/additional-documentation/session-checks.html
index 1ec8248d..64037ecd 100644
--- a/docs/additional-documentation/session-checks.html
+++ b/docs/additional-documentation/session-checks.html
@@ -43,6 +43,7 @@
+
diff --git a/docs/additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html b/docs/additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html
index 1c053195..3c1747b7 100644
--- a/docs/additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html
+++ b/docs/additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html
@@ -43,6 +43,7 @@
+
diff --git a/docs/additional-documentation/using-password-flow.html b/docs/additional-documentation/using-password-flow.html
index c622cc5d..f098e5ef 100644
--- a/docs/additional-documentation/using-password-flow.html
+++ b/docs/additional-documentation/using-password-flow.html
@@ -43,6 +43,7 @@
+
@@ -51,7 +52,7 @@ Using Password-Flow
This section shows how to use the password flow, which demands the user to directly enter his or her password into the client.
Please note that from an OAuth2/OIDC perspective, the implicit flow is better suited for logging into a SPA and the flow described here should only be used,
when a) there is a strong trust relations ship between the client and the auth server and when b) other flows are not possible.
-Configure Library for Password Flow (using discovery document)
+Configure Library for Password Flow (using discovery document)
To 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.
Please not, that this configuration is quite similar to the one for the implcit flow.
@Component({ ... })
@@ -85,7 +86,7 @@ Configure
}
-}
Configure Library for Password Flow (without discovery document)
+}
In cases where you don't have an OIDC based discovery document you have to configure some more properties manually:
@Component({ ... })
export class AppComponent {
@@ -116,7 +117,7 @@ Configure
}
-}
this.oauthService.fetchTokenUsingPasswordFlow('max', 'geheim').then((resp) => {
// Loading data about the user
diff --git a/docs/additional-documentation/using-systemjs.html b/docs/additional-documentation/using-systemjs.html
index 218512f0..399ecd57 100644
--- a/docs/additional-documentation/using-systemjs.html
+++ b/docs/additional-documentation/using-systemjs.html
@@ -43,6 +43,7 @@
+
diff --git a/docs/additional-documentation/working-with-httpinterceptors.html b/docs/additional-documentation/working-with-httpinterceptors.html
index 36d88c12..9546ca28 100644
--- a/docs/additional-documentation/working-with-httpinterceptors.html
+++ b/docs/additional-documentation/working-with-httpinterceptors.html
@@ -43,6 +43,7 @@
+
diff --git a/docs/changelog.html b/docs/changelog.html
index a52479b1..8b7bcb29 100644
--- a/docs/changelog.html
+++ b/docs/changelog.html
@@ -33,7 +33,7 @@
Change Log
Lates features
See Release Notes
-New Features in Version 2.1
+New Features in Version 2.1
- New Config API (the original one is still supported)
- New convenience methods in OAuthService to streamline default tasks:
@@ -74,6 +74,7 @@ Breaking Changes in Version 2
+
diff --git a/docs/classes/AbstractValidationHandler.html b/docs/classes/AbstractValidationHandler.html
index 0a9dab8c..d04b47f9 100644
--- a/docs/classes/AbstractValidationHandler.html
+++ b/docs/classes/AbstractValidationHandler.html
@@ -78,7 +78,7 @@ Description
Implements
- ValidationHandler
+ ValidationHandler
@@ -128,328 +128,331 @@ Methods
-
- Methods
-
-
-
-
-
-
-
-
- Protected
- Abstract
+
+ Methods
+
+
+
+
+
+
+
+
+ Protected
+ Abstract
calcHash
-
-
-
-
-
-
-
-
- calcHash(valueToHash: string, algorithm: string)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+ calcHash(valueToHash: string, algorithm: string)
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Calculates the hash for the passed value by using
the passed hash algorithm.
-
- Parameters :
-
-
-
- Name
- Type
- Optional
-
-
-
-
- valueToHash
-
- string
-
-
-
- No
-
-
-
-
-
- algorithm
-
- string
-
-
-
- No
-
-
-
-
-
-
-
-
-
-
- Returns : Promise<string>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Protected
+
+ Parameters :
+
+
+
+ Name
+ Type
+ Optional
+
+
+
+
+ valueToHash
+
+ string
+
+
+
+ No
+
+
+
+
+
+ algorithm
+
+ string
+
+
+
+ No
+
+
+
+
+
+
+
+
+
+
+ Returns : Promise<string>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Protected
inferHashAlgorithm
-
-
-
-
-
-
-
-
- inferHashAlgorithm(jwtHeader: object)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+ inferHashAlgorithm(jwtHeader: object)
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Infers the name of the hash algorithm to use
from the alg field of an id_token.
-
- Parameters :
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
- jwtHeader
-
- object
-
-
-
- No
-
-
-
-
- the id_token's parsed header
-
-
-
-
-
-
-
-
-
- Returns : string
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Async
+
+ Parameters :
+
+
+
+ Name
+ Type
+ Optional
+ Description
+
+
+
+
+ jwtHeader
+
+ object
+
+
+
+ No
+
+
+
+
+ the id_token's parsed header
+
+
+
+
+
+
+
+
+
+ Returns : string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Async
validateAtHash
-
-
-
-
-
-
-
-
- validateAtHash(params: ValidationParams)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+ validateAtHash(params: ValidationParams)
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Validates the at_hash in an id_token against the received access_token.
-
- Parameters :
-
-
-
- Name
- Type
- Optional
-
-
-
-
- params
-
- ValidationParams
-
-
-
- No
-
-
-
-
-
-
-
-
-
-
- Returns : Promise<boolean>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Abstract
+
+ Parameters :
+
+
+
+ Name
+ Type
+ Optional
+
+
+
+
+ params
+
+ ValidationParams
+
+
+
+ No
+
+
+
+
+
+
+
+
+
+
+ Returns : Promise<boolean>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Abstract
validateSignature
-
-
-
-
-
-
-
-
- validateSignature(validationParams: ValidationParams)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+ validateSignature(validationParams: ValidationParams)
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Validates the signature of an id_token.
-
- Parameters :
-
-
-
- Name
- Type
- Optional
-
-
-
-
- validationParams
-
- ValidationParams
-
-
-
- No
-
-
-
-
-
-
-
-
-
-
- Returns : Promise<any>
-
-
-
-
-
-
-
-
-
+
+ Parameters :
+
+
+
+ Name
+ Type
+ Optional
+
+
+
+
+ validationParams
+
+ ValidationParams
+
+
+
+ No
+
+
+
+
+
+
+
+
+
+
+ Returns : Promise<any>
+
+
+
+
+
+
+
+
+
-
Partial<AuthConfig>
+ Partial<AuthConfig>
string
+ Type : string
object
+ Type : object
string
+ Type : string
number
+ Type : number
string
+ Type : string
object
+ Type : object
string
+ Type : string
string
+ Type : string
string
+ Type : string
any
+ Type : any
string
+ Type : string
string
+ Type : string
string
+ Type : string
string
+ Type : string
string
+ Type : string
string
+ Type : string
string
+ Type : string
string
+ Type : string
string
+ Type : string
string
+ Type : string
string
+ Type : string
number
+ Type : number
number
+ Type : number
string
+ Type : string
string
+ Type : string
-
-
-
- Abstract
+ + Methods ++
|
+ |||||||||||||
+
+ calcHash(valueToHash: string, algorithm: string)
+ |
+ |||||||||||||
+ + | +|||||||||||||
+
+
+ Parameters :
+
+
+
+
+ Returns :
+ Promise<string>
+
+
+
+
+ |
+
- AbstractValidationHandler
+ AbstractValidationHandler
number
+ Type : number
-
-
-
+ + Methods ++
+ Parameters :
+
+
+
+
+ Returns :
+ Promise<any>
+
+
+
+
+ |
+
string
+ Type : string
boolean
+ Type : boolean
function
+ Type : function
function
+ Type : function
function
+ Type : function
- ValidationHandler
+ ValidationHandler
-
-
-
+ + Methods ++
|
+ |||||||||||||||||||||||||||||||
+ + | +|||||||||||||||||||||||||||||||
+
+
+ Parameters :
+
+
+
+
+ Returns :
+ Promise<any>
+
+
+
+
+ |
+
- OAuthEvent
+ OAuthEvent
EventType
+ EventType
object
+ object
object
+ object
EventType
+ EventType
- OAuthEvent
+ OAuthEvent
EventType
+ EventType
any
+ any
-
-
-
- Abstract
+ + Methods ++
|
+ |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+
+ warn(message?: any, ...optionalParams: any[])
+ |
+ |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+ Defined in projects/lib/src/types.ts:63
+ |
+ |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+
+
+ Parameters :
+
+
+
+
+ Returns :
+ void
+
+
+
+
+ |
+
OAuthResourceServerConfig
+ Type : OAuthResourceServerConfig
- OAuthResourceServerErrorHandler
+ OAuthResourceServerErrorHandler
function
+ Type : function
boolean
+ Type : boolean
-
-
-
- Abstract
+ + Methods ++
|
+ ||||||||||
+
+ handleError(err: HttpResponse
+ |
+ ||||||||||
+ + | +||||||||||
+
+
+ Parameters :
+
+
+
+
+ Returns :
+ Observable<any>
+
+
+
+
+ |
+
-
-
-
- Abstract
+ + Methods ++
|
+ |||||||||||||||||||||||||||||||||||||||||||||||||||||
+
+ setItem(key: string, data: string)
+ |
+ |||||||||||||||||||||||||||||||||||||||||||||||||||||
+ Defined in projects/lib/src/types.ts:76
+ |
+ |||||||||||||||||||||||||||||||||||||||||||||||||||||
+
+
+ Parameters :
+
+
+
+
+ Returns :
+ void
+
+
+
+
+ |
+
- OAuthEvent
+ OAuthEvent
EventType
+ EventType
any
+ any
string
+ Type : string
object
+ Type : object
string
+ Type : string
string
+ Type : string
-
-
-
- Public
- Abstract
+ + Methods ++
+ Parameters :
+
+
+
+
+ Returns :
+ Promise<any>
+
+
+
+
+ |
+
- HttpParameterCodec
+ HttpParameterCodec
-
-
-
+ + Methods ++
|
+ |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+ Defined in projects/lib/src/encoder.ts:10
+ |
+ |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+
+
+ Parameters :
+
+
+
+
+ Returns :
+ string
+
+
+
+
+ |
+
Feel free to file pull requests
+The closed issues contain some ideas for PRs and enhancements (see labels)
+If 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:
npm install -g @compodoc/compodoc
npm run docs
+
+ AuthConfig
+
NgZone
+ NgZone
HttpClient
+ HttpClient
OAuthStorage
+ OAuthStorage
ValidationHandler
+ ValidationHandler
AuthConfig
+ AuthConfig
UrlHelperService
+ UrlHelperService
OAuthLogger
+ OAuthLogger
CryptoHandler
+ CryptoHandler
-
-
-
- Public
+ + Methods ++
+
+
+ Returns :
+ Promise<object>
+
+
+
+
+
+
+
+
+
+
+ Returns :
+ Promise<object>
+
+
+
+
+
+
+
+
-
-
- Returns : any
+
+ |
- Hash with additional parameter. If it is a string, it is used for the +parameter loginHint (for the sake of compatibility with former versions) - -
-
-
-
+
+
+ Returns :
+ void
+
+
+
+
+
+
+
+
+
+
+ Returns :
+ void
+
+
+
+
+
+
+
+
+ Parameters :
+
+
+
+
+ Returns :
+ Promise<OAuthEvent>
+
+
+
+
+ |
+
+ + + + Protected + startSessionCheckTimer + + + + | +
+
+ startSessionCheckTimer()
+ |
+
+ Defined in projects/lib/src/oauth-service.ts:1129
+ |
+
+
+
+ Returns :
+ void
+
+ |
+
+ + + + Protected + stopSessionCheckTimer + + + + | +
+
+ stopSessionCheckTimer()
+ |
+
+ Defined in projects/lib/src/oauth-service.ts:1139
+ |
+
+
+
+ Returns :
+ void
+
+ |
+
+ + + + Protected + storeAccessTokenResponse + + + + | +|||||||||||||||
+
+ storeAccessTokenResponse(accessToken: string, refreshToken: string, expiresIn: number, grantedScopes: String)
+ |
+ |||||||||||||||
+ Defined in projects/lib/src/oauth-service.ts:1347
+ |
+ |||||||||||||||
+
+
+ Parameters :
+
+
+
+
+ Returns :
+ void
+
+
+
+
+ |
+
+ + + + Protected + storeIdToken + + + + | +||||||
+
+ storeIdToken(idToken: ParsedIdToken)
+ |
+ ||||||
+ Defined in projects/lib/src/oauth-service.ts:1699
+ |
+ ||||||
+
+
+ Parameters :
+
+
+
+
+ Returns :
+ void
+
+
+
+
+ |
+
+ + + + Protected + storeSessionState + + + + | +||||||
+
+ storeSessionState(sessionState: string)
+ |
+ ||||||
+ Defined in projects/lib/src/oauth-service.ts:1706
+ |
+ ||||||
+
+
+ Parameters :
+
+
+
+
+ Returns :
+ void
+
+
+
+
+ |
+
+ + + + Public + tryLogin + + + + | +||||||||||
+
+ tryLogin(options: LoginOptions)
+ |
+ ||||||||||
+ Defined in projects/lib/src/oauth-service.ts:1374
+ |
+ ||||||||||
+ Delegates to tryLoginImplicitFlow for the sake of competability +
+ Parameters :
+
+
+
+
+ Returns :
+ Promise<boolean>
+
+
+
+
+ |
+
+ + + + Public + tryLoginCodeFlow + + + + | +
+
+ tryLoginCodeFlow()
+ |
+
+ Defined in projects/lib/src/oauth-service.ts:1398
+ |
+
+
+
+ Returns :
+ Promise<void>
+
+ |
+
+ + + + Public + tryLoginImplicitFlow + + + + | +||||||||||
+
+ tryLoginImplicitFlow(options: LoginOptions)
+ |
+ ||||||||||
+ Defined in projects/lib/src/oauth-service.ts:1552
+ |
+ ||||||||||
+ Checks whether there are tokens in the hash fragment +as a result of the implicit flow. These tokens are +parsed, validated and used to sign the user in to the +current client. +
+ Parameters :
+
+
+
+
+ Returns :
+ Promise<boolean>
+
+
+
+
+ |
+
+ + + + Protected + validateDiscoveryDocument + + + + | +||||||
+
+ validateDiscoveryDocument(doc: OidcDiscoveryDoc)
+ |
+ ||||||
+ Defined in projects/lib/src/oauth-service.ts:508
+ |
+ ||||||
+
+
+ Parameters :
+
+
+
+
+ Returns :
+ boolean
+
+
+
+
+ |
+
+ + + + Protected + validateNonce + + + + | +||||||
+
+ validateNonce(nonceInState: string)
+ |
+ ||||||
+ Defined in projects/lib/src/oauth-service.ts:1686
+ |
+ ||||||
+
+
+ Parameters :
+
+
+
+
+ Returns :
+ boolean
+
+
+
+
+ |
+
+ + + + Protected + validateUrlAgainstIssuer + + + + | +||||||
+
+ validateUrlAgainstIssuer(url: string)
+ |
+ ||||||
+ Defined in projects/lib/src/oauth-service.ts:285
+ |
+ ||||||
+
+
+ Parameters :
+
+
+
+
+ Returns :
+ any
+
+
+
+
+ |
+
+ + + + Protected + validateUrlForHttps + + + + | +||||||
+
+ validateUrlForHttps(url: string)
+ |
+ ||||||
+ Defined in projects/lib/src/oauth-service.ts:263
+ |
+ ||||||
+
+
+ Parameters :
+
+
+
+
+ Returns :
+ boolean
+
+
+
+
+ |
+
+ + + + Protected + validateUrlFromDiscoveryDocument + + + + | +||||||
+
+ validateUrlFromDiscoveryDocument(url: string)
+ |
+ ||||||
+ Defined in projects/lib/src/oauth-service.ts:242
+ |
+ ||||||
+
+
+ Parameters :
+
+
+
+
+ Returns :
+ string[]
+
+
+
+
+ |
+
+ + + + Protected + waitForSilentRefreshAfterSessionChange + + + + | +
+
+ waitForSilentRefreshAfterSessionChange()
+ |
+
+ Defined in projects/lib/src/oauth-service.ts:1074
+ |
+
+
+
+ Returns :
+ void
+
+ |
+
- + Protected - initSessionCheck - - + _storage + |
-
- initSessionCheck()
- |
-
+ Type : OAuthStorage
+ |
+
- Defined in projects/lib/src/oauth-service.ts:1106
+ Defined in projects/lib/src/oauth-service.ts:75
|
-
-
- Returns :
- void
-
- |
-
- + - Public - loadDiscoveryDocument - - + Protected + accessTokenTimeoutSubscription + | ||||||||
-
- loadDiscoveryDocument(fullUrl: string)
- |
- ||||||||
+ Type : Subscription
+ |
+ ||||||||
- Defined in projects/lib/src/oauth-service.ts:408
+ Defined in projects/lib/src/oauth-service.ts:76
|
- ||||||||
- Loads the discovery document to configure most -properties of this service. The url of the discovery -document is infered from the issuer's url according -to the OpenId Connect spec. To use another url you -can pass it to to optional parameter fullUrl. -
- Parameters :
-
-
-
-
- Returns : Promise<object>
+ |
- + - Public - loadDiscoveryDocumentAndLogin - - + Protected + discoveryDocumentLoadedSubject + | ||||||||||
-
- loadDiscoveryDocumentAndLogin(options: LoginOptions)
- |
- ||||||||||
+ Type : Subject<object>
+ |
+ ||||||||||
+ Default value : new Subject<object>()
+ |
+ ||||||||||
- Defined in projects/lib/src/oauth-service.ts:225
+ Defined in projects/lib/src/oauth-service.ts:72
|
||||||||||
- Convenience method that first calls
- Parameters :
-
-
-
-
- Returns :
- Promise<boolean>
-
-
-
-
- |
-
- + Public - loadDiscoveryDocumentAndTryLogin - - + events + | ||||||||||
-
- loadDiscoveryDocumentAndTryLogin(options: LoginOptions)
- |
- ||||||||||
+ Type : Observable<OAuthEvent>
+ |
+ ||||||||||
- Defined in projects/lib/src/oauth-service.ts:212
+ Defined in projects/lib/src/oauth-service.ts:63
|
||||||||||
- Convenience method that first calls Informs about events, like token_received or token_expires. +See the string enum EventType for a full list of event types.
- Parameters :
-
-
-
-
- Returns :
- Promise<boolean>
-
-
-
-
|
- + Protected - loadJwks - - + eventsSubject + |
-
- loadJwks()
- |
-
+ Type : Subject<OAuthEvent>
+ |
+
+ Default value : new Subject<OAuthEvent>()
+ |
+
- Defined in projects/lib/src/oauth-service.ts:483
+ Defined in projects/lib/src/oauth-service.ts:71
|
-
-
- Returns :
- Promise<object>
-
- |
-
- + - Public - loadUserProfile - - + Protected + grantTypesSupported + |
-
- loadUserProfile()
- |
-
+ Type : Array<string>
+ |
+
+ Default value : []
+ |
+
- Defined in projects/lib/src/oauth-service.ts:601
+ Defined in projects/lib/src/oauth-service.ts:74
|
- Loads the user profile by accessing the user info endpoint defined by OpenId Connect. -When using this with OAuth2 password flow, make sure that the property oidc is set to false. -Otherwise stricter validations take place that make this operation fail. -
- Returns :
- Promise<object>
-
- |
-
- + - Public - logOut - - + Protected + idTokenTimeoutSubscription + | ||||||
-
- logOut(noRedirectToLogoutUrl)
- |
- ||||||
+ Type : Subscription
+ |
+ ||||||
- Defined in projects/lib/src/oauth-service.ts:1996
+ Defined in projects/lib/src/oauth-service.ts:77
|
||||||
- Removes all tokens and logs the user out. -If a logout url is configured, the user is -redirected to it. -
- Parameters :
-
-
-
-
- Returns :
- void
-
-
-
-
- |
-
- + Protected - padBase64 - - + inImplicitFlow + |
+ Default value : false
+ |
+
+ Defined in projects/lib/src/oauth-service.ts:82
+ |
+
-
- padBase64(base64data)
+
+
+
+ Protected
+ jwksUri
+
+
|
||||
+ Type : string
-
+ |
+ ||||
- Defined in projects/lib/src/oauth-service.ts:1895
+ Defined in projects/lib/src/oauth-service.ts:79
|
||||
-
-
- Parameters :
-
-
-
-
- Returns :
- string
-
-
-
-
- |
-
- + Protected - processMessageEventMessage - - + sessionCheckEventListener + | ||||||
-
- processMessageEventMessage(e: MessageEvent)
- |
- ||||||
+ Type : EventListener
+ |
+ ||||||
- Defined in projects/lib/src/oauth-service.ts:966
+ Defined in projects/lib/src/oauth-service.ts:78
|
||||||
-
-
- Parameters :
-
-
-
-
- Returns :
- string
-
-
-
-
- |
-
- + Protected - refreshInternal - - + sessionCheckTimer + | ||||||
-
- refreshInternal(params, noPrompt)
- |
- ||||||
+ Type : any
+ |
+ ||||||
- Defined in projects/lib/src/oauth-service.ts:197
+ Defined in projects/lib/src/oauth-service.ts:80
|
||||||
-
-
- Parameters :
-
-
-
-
- Returns :
- any
-
-
-
-
- |
-
- + - Public - refreshToken - - + Protected + silentRefreshPostMessageEventListener + |
-
- refreshToken()
- |
-
+ Type : EventListener
+ |
+
- Defined in projects/lib/src/oauth-service.ts:742
+ Defined in projects/lib/src/oauth-service.ts:73
|
- Refreshes the token using a refresh_token. -This does not work for implicit flow, b/c -there is no refresh_token in this flow. -A solution for this is provided by the -method silentRefresh. -
- Returns :
- Promise<object>
-
- |
-
- + Protected - removeSessionCheckEventListener - - + silentRefreshSubject + |
-
- removeSessionCheckEventListener()
- |
-
+ Type : string
+ |
+
- Defined in projects/lib/src/oauth-service.ts:1099
+ Defined in projects/lib/src/oauth-service.ts:81
|
-
-
- Returns :
- void
-
- |
-
- + - Protected - removeSilentRefreshEventListener - - + Public + Optional + state + |
-
- removeSilentRefreshEventListener()
- |
-
+ Type : string
+ |
+
+ Default value : ''
+ |
+
- Defined in projects/lib/src/oauth-service.ts:811
+ Defined in projects/lib/src/oauth-service.ts:69
|
-
-
- Returns :
+ void
-
- The received (passed around) state, when logging +in with implicit flow. + |
- + Public - resetImplicitFlow - - + tokenValidationHandler + |
-
- resetImplicitFlow()
- |
-
+ Type : ValidationHandler
+ |
+
- Defined in projects/lib/src/oauth-service.ts:1330
+ Defined in projects/lib/src/oauth-service.ts:45
|
- Reset current implicit flow +The ValidationHandler used to validate received +id_tokens.
- Returns :
void
-
- |
- + - Protected - restartRefreshTimerIfStillLoggedIn - - + Public + Optional + clearHashAfterLogin + |
-
- restartRefreshTimerIfStillLoggedIn()
- |
-
+ Default value : true
+ |
+
+ Inherited from
+ AuthConfig
+ |
+
- Defined in projects/lib/src/oauth-service.ts:155
+ Defined in
AuthConfig:60
+ |
-
-
- Returns :
+ void
-
- |
+ Defines whether to clear the hash fragment after logging in. + |
- + Public - restartSessionChecksIfStillLoggedIn - - + Optional + clientId + |
-
- restartSessionChecksIfStillLoggedIn()
- |
-
+ Type : string
+ |
+
+ Default value : ''
+ |
+
+ Inherited from
+ AuthConfig
+ |
+
- Defined in projects/lib/src/oauth-service.ts:149
+ Defined in
AuthConfig:5
+ |
-
-
- Returns :
+ void
-
- The client's id as registered with the auth server + |
- + - Protected - setupAccessTokenTimer - - + Public + Optional + clockSkewInSec + |
-
- setupAccessTokenTimer()
- |
-
+ Inherited from
+ AuthConfig
+ |
+
- Defined in projects/lib/src/oauth-service.ts:328
+ Defined in
AuthConfig:222
+ |
-
-
- Returns :
+ void
-
- The window of time (in seconds) to allow the current time to deviate when validating id_token's iat and exp values. + |
- + Public - setupAutomaticSilentRefresh - - + Optional + customQueryParams + | ||||||||||||||||||||
-
- setupAutomaticSilentRefresh(params: object, listenTo?: "access_token" | "id_token" | "any", noPrompt)
- |
- ||||||||||||||||||||
+ Type : object
+ |
+ ||||||||||||||||||||
+ Default value : null
+ |
+ ||||||||||||||||||||
+ Inherited from
+ AuthConfig
+ |
+ ||||||||||||||||||||
- Defined in projects/lib/src/oauth-service.ts:173
+ Defined in
AuthConfig:142
+ |
||||||||||||||||||||
- Will setup up silent refreshing for when the token is -about to expire. When the user is logged out via this.logOut method, the -silent refreshing will pause and not refresh the tokens until the user is -logged back in via receiving a new token. +Map with additional query parameter that are appended to +the request when initializing implicit flow.
- Parameters :
-
-
-
-
- Returns :
- void
-
-
-
-
|
- + - Protected - setupExpirationTimers - - + Public + Optional + disableAtHashCheck + |
-
- setupExpirationTimers()
- |
-
+ Default value : false
+ |
+
+ Inherited from
+ AuthConfig
+ |
+
- Defined in projects/lib/src/oauth-service.ts:314
+ Defined in
AuthConfig:183
+ |
-
-
- Returns :
+ void
-
- This property has been introduced to disable at_hash checks +and is indented for Identity Provider that does not deliver +an at_hash EVEN THOUGH its recommended by the OIDC specs. +Of course, when disabling these checks the we are bypassing +a security check which means we are more vulnerable. + |
- + - Protected - setupIdTokenTimer - - + Public + Optional + disablePKCE + |
-
- setupIdTokenTimer()
- |
-
+ Default value : false
+ |
+
+ Inherited from
+ AuthConfig
+ |
+
- Defined in projects/lib/src/oauth-service.ts:346
+ Defined in
AuthConfig:229
+ |
-
-
- Returns :
+ void
-
- Code Flow is by defauld used together with PKCI which is also higly recommented. +You can disbale it here by setting this flag to true. +https://tools.ietf.org/html/rfc7636#section-1.1 + |
- + - Protected - setupRefreshTimer - - + Public + Optional + dummyClientSecret + |
-
- setupRefreshTimer()
- |
-
+ Type : string
+ |
+
+ Default value : null
+ |
+
+ Inherited from
+ AuthConfig
+ |
+
- Defined in projects/lib/src/oauth-service.ts:295
+ Defined in
AuthConfig:115
+ |
-
-
- Returns :
+ void
-
- Some auth servers don't allow using password flow +w/o a client secret while the standards do not +demand for it. In this case, you can set a password +here. As this password is exposed to the public +it does not bring additional security and is therefore +as good as using no password. + |
- + - Protected - setupSessionCheck - - + Public + Optional + fallbackAccessTokenExpirationTimeInSec + |
-
- setupSessionCheck()
- |
-
+ Type : number
+ |
+
+ Inherited from
+ AuthConfig
+ |
+
- Defined in projects/lib/src/oauth-service.ts:159
+ Defined in
AuthConfig:204
+ |
-
-
- Returns :
+ void
-
- According to rfc6749 it is recommended (but not required) that the auth +server exposes the access_token's life time in seconds. +This is a fallback value for the case this value is not exposed. + |
- + - Protected - setupSessionCheckEventListener - - + Public + Optional + issuer + |
-
- setupSessionCheckEventListener()
- |
-
+ Type : string
+ |
+
+ Default value : ''
+ |
+
+ Inherited from
+ AuthConfig
+ |
+
- Defined in projects/lib/src/oauth-service.ts:1010
+ Defined in
AuthConfig:50
+ |
-
-
- Returns :
+ void
-
- The issuer's uri. + |
- + - Protected - setupSilentRefreshEventListener - - - - | -
-
- setupSilentRefreshEventListener()
+ Public
+ Optional
+ jwks
+
+
|
+ Type : object
-
+ |
+
+ Default value : null
+ |
+
+ Inherited from
+ AuthConfig
+ |
+
- Defined in projects/lib/src/oauth-service.ts:821
+ Defined in
AuthConfig:136
+ |
-
-
- Returns :
+ void
-
- JSON Web Key Set (https://tools.ietf.org/html/rfc7517) +with keys used to validate received id_tokens. +This is taken out of the disovery document. Can be set manually too. + |
- + Public - silentRefresh - - + Optional + loginUrl + | ||||||||||||
-
- silentRefresh(params: object, noPrompt)
- |
- ||||||||||||
+ Type : string
+ |
+ ||||||||||||
+ Default value : ''
+ |
+ ||||||||||||
+ Inherited from
+ AuthConfig
+ |
+ ||||||||||||
- Defined in projects/lib/src/oauth-service.ts:852
+ Defined in
AuthConfig:22
+ |
||||||||||||
- Performs a silent refresh for implicit flow. -Use this method to get new tokens when/before -the existing tokens expire. +The auth server's endpoint that allows to log +the user in when using implicit flow.
- Parameters :
-
-
-
-
- Returns :
- Promise<OAuthEvent>
-
-
-
-
|
- + - Protected - startSessionCheckTimer - - + Public + Optional + logoutUrl + |
-
- startSessionCheckTimer()
- |
-
+ Type : string
+ |
+
+ Default value : ''
+ |
+
+ Inherited from
+ AuthConfig
+ |
+
- Defined in projects/lib/src/oauth-service.ts:1129
+ Defined in
AuthConfig:55
+ |
-
-
- Returns :
+ void
-
- The logout url. + |
- + - Protected - stopSessionCheckTimer - - + Public + Optional + nonceStateSeparator + |
-
- stopSessionCheckTimer()
- |
-
+ Type : string
+ |
+
+ Default value : ';'
+ |
+
+ Inherited from
+ AuthConfig
+ |
+
- Defined in projects/lib/src/oauth-service.ts:1139
+ Defined in
AuthConfig:212
+ |
-
-
- Returns :
+ void
-
- final state sent to issuer is built as follows: +state = nonce + nonceStateSeparator + additional state +Default separator is ';' (encoded %3B). +In rare cases, this character might be forbidden or inconvenient to use by the issuer so it can be customized. + |
- + - Protected - storeAccessTokenResponse - - + Public + Optional + oidc + | |||||||||||||||
-
- storeAccessTokenResponse(accessToken: string, refreshToken: string, expiresIn: number, grantedScopes: String)
- |
- |||||||||||||||
+ Default value : true
+ |
+ |||||||||||||||
+ Inherited from
+ AuthConfig
+ |
+ |||||||||||||||
- Defined in projects/lib/src/oauth-service.ts:1347
+ Defined in
AuthConfig:37
+ |
|||||||||||||||
-
-
- Parameters :
-
-
-
-
- Returns :
- void
-
-
-
-
+ Defines whether to use OpenId Connect during +implicit flow. + |
- + - Protected - storeIdToken - - + Public + Optional + openUri + | ||||||
-
- storeIdToken(idToken: ParsedIdToken)
- |
- ||||||
+ Default value : () => {...}
+ |
+ ||||||
+ Inherited from
+ AuthConfig
+ |
+ ||||||
- Defined in projects/lib/src/oauth-service.ts:1699
+ Defined in
AuthConfig:242
+ |
||||||
-
-
- Parameters :
-
-
-
-
- Returns :
- void
-
-
-
-
+ This property allows you to override the method that is used to open the login url, +allowing a way for implementations to specify their own method of routing to new +urls. + |
- + - Protected - storeSessionState - - + Public + Optional + options + |
+ Type : any
+
+ |
+
+ Default value : null
+ |
+
+ Inherited from
+ AuthConfig
+ |
+
+ Defined in
+ AuthConfig:45
+ |
+
-
- storeSessionState(sessionState: string)
+
+
+
+ Public
+ Optional
+ postLogoutRedirectUri
+
+
|
||||||
+ Type : string
-
+ |
+ ||||||
+ Default value : ''
+ |
+ ||||||
+ Inherited from
+ AuthConfig
+ |
+ ||||||
- Defined in projects/lib/src/oauth-service.ts:1706
+ Defined in
AuthConfig:16
+ |
||||||
-
-
- Parameters :
-
-
-
-
- Returns :
- void
-
-
-
-
+ An optional second redirectUri where the auth server +redirects the user to after logging out. + |
- + Public - tryLogin - - + Optional + redirectUri + | ||||||||||
-
- tryLogin(options: LoginOptions)
- |
- ||||||||||
+ Type : string
+ |
+ ||||||||||
+ Default value : ''
+ |
+ ||||||||||
+ Inherited from
+ AuthConfig
+ |
+ ||||||||||
- Defined in projects/lib/src/oauth-service.ts:1374
+ Defined in
AuthConfig:10
+ |
||||||||||
- Delegates to tryLoginImplicitFlow for the sake of competability +The client's redirectUri as registered with the auth server
- Parameters :
-
-
-
-
- Returns :
- Promise<boolean>
-
-
-
-
|
- + Public - tryLoginCodeFlow - - + Optional + requestAccessToken + |
-
- tryLoginCodeFlow()
- |
-
+ Default value : true
+ |
+
+ Inherited from
+ AuthConfig
+ |
+
- Defined in projects/lib/src/oauth-service.ts:1398
+ Defined in
AuthConfig:43
+ |
-
-
- Returns :
+ Promise<void>
-
- Defines whether to request an access token during +implicit flow. + |
- + Public - tryLoginImplicitFlow - - + Optional + requireHttps + | ||||||||||
-
- tryLoginImplicitFlow(options: LoginOptions)
- |
- ||||||||||
+ Type : boolean | "remoteOnly"
+ |
+ ||||||||||
+ Default value : 'remoteOnly'
+ |
+ ||||||||||
+ Inherited from
+ AuthConfig
+ |
+ ||||||||||
- Defined in projects/lib/src/oauth-service.ts:1552
+ Defined in
AuthConfig:123
+ |
||||||||||
- Checks whether there are tokens in the hash fragment -as a result of the implicit flow. These tokens are -parsed, validated and used to sign the user in to the -current client. +Defines whether https is required. +The default value is remoteOnly which only allows +http for localhost, while every other domains need +to be used with https.
- Parameters :
-
-
-
-
- Returns :
- Promise<boolean>
-
-
-
-
|
- + - Protected - validateDiscoveryDocument - - + Public + Optional + resource + | ||||||
-
- validateDiscoveryDocument(doc: OidcDiscoveryDoc)
- |
- ||||||
+ Type : string
+ |
+ ||||||
+ Default value : ''
+ |
+ ||||||
+ Inherited from
+ AuthConfig
+ |
+ ||||||
- Defined in projects/lib/src/oauth-service.ts:508
+ Defined in
AuthConfig:29
+ |
||||||
-
-
- Parameters :
-
-
-
-
- Returns :
- boolean
-
-
-
-
- |
-
- + - Protected - validateNonce - - + Public + Optional + responseType + |
-
- validateNonce(nonceInState: string)
- |
-
+ Type : string
+ |
+
+ Default value : ''
+ |
+
+ Inherited from
+ AuthConfig
+ |
+
- Defined in projects/lib/src/oauth-service.ts:1686
+ Defined in
AuthConfig:72
+ |
+ + + + Public + Optional + rngUrl + + + | +|||||||||
+ Type : string
-
- Parameters :
-
-
-
-
- Returns :
- boolean
-
-
-
- |
-
- + - Protected - validateUrlAgainstIssuer - - + Public + Optional + scope + | ||||||
-
- validateUrlAgainstIssuer(url: string)
- |
- ||||||
+ Type : string
+ |
+ ||||||
+ Default value : 'openid profile'
+ |
+ ||||||
+ Inherited from
+ AuthConfig
+ |
+ ||||||
- Defined in projects/lib/src/oauth-service.ts:285
+ Defined in
AuthConfig:27
+ |
||||||
-
-
- Parameters :
-
-
-
-
- Returns :
- any
-
-
-
-
+ The requested scopes + |
- + - Protected - validateUrlForHttps - - + Public + Optional + sessionCheckIFrameName + | ||||||
-
- validateUrlForHttps(url: string)
- |
- ||||||
+ Type : string
+ |
+ ||||||
+ Default value : 'angular-oauth-oidc-check-session-iframe'
+ |
+ ||||||
+ Inherited from
+ AuthConfig
+ |
+ ||||||
- Defined in projects/lib/src/oauth-service.ts:263
+ Defined in
AuthConfig:174
+ |
||||||
-
-
- Parameters :
-
-
-
-
- Returns :
- boolean
-
-
-
-
+ Name of the iframe to use for session checks + |
- + - Protected - validateUrlFromDiscoveryDocument - - + Public + Optional + sessionCheckIFrameUrl + | ||||||
-
- validateUrlFromDiscoveryDocument(url: string)
- |
- ||||||
+ Type : string
+ |
+ ||||||
+ Default value : null
+ |
+ ||||||
+ Inherited from
+ AuthConfig
+ |
+ ||||||
- Defined in projects/lib/src/oauth-service.ts:242
+ Defined in
AuthConfig:169
+ |
||||||
-
-
- Parameters :
-
-
-
-
- Returns :
- string[]
-
-
-
-
+ Url for the iframe used for session checks + |
- + - Protected - waitForSilentRefreshAfterSessionChange - - + Public + Optional + sessionCheckIntervall + |
-
- waitForSilentRefreshAfterSessionChange()
- |
-
+ Default value : 3 * 1000
+ |
+
+ Inherited from
+ AuthConfig
+ |
+
- Defined in projects/lib/src/oauth-service.ts:1074
+ Defined in
AuthConfig:164
+ |
-
-
- Returns :
+ void
-
- Interval in msec for checking the session +according to http://openid.net/specs/openid-connect-session-1_0.html#ChangeNotification + |
-
- + - Protected - _storage - + Public + Optional + sessionChecksEnabled + |
- Type : OAuthStorage
-
+ Default value : false
|
+ Inherited from
+ AuthConfig
+ |
+
- Defined in projects/lib/src/oauth-service.ts:75
+ Defined in
AuthConfig:158
+ |
+ If true, the lib will try to check whether the user +is still logged in on a regular basis as described +in http://openid.net/specs/openid-connect-session-1_0.html#ChangeNotification + |
+
Subscription
-
+ Default value : false
AuthConfig
+AuthConfig:80
+Defines whether additional debug information should +be shown at the console. Note that in certain browsers +the verbosity of the console needs to be explicitly set +to include Debug level messages.
+Subject<object>
+ Type : string
new Subject<object>()
+ Default value : 'angular-oauth-oidc-silent-refresh-iframe'
AuthConfig
+AuthConfig:144
+Observable<OAuthEvent>
+ Type : string
''
+ AuthConfig
+AuthConfig:87
+Informs about events, like token_received or token_expires. -See the string enum EventType for a full list of event types.
-Subject<OAuthEvent>
+ Type : string
new Subject<OAuthEvent>()
+ Default value : ''
AuthConfig
+AuthConfig:85
+The redirect uri used when doing silent refresh.
+Array<string>
-
- []
+ Default value : false
AuthConfig
+AuthConfig:93
+Set this to true to display the iframe used for +silent refresh for debugging.
+Subscription
+ Type : number
1000 * 20
+ AuthConfig
+AuthConfig:105
+Timeout for silent refresh.
+false
+ AuthConfig
+AuthConfig:197
+Defined whether to skip the validation of the issuer in the discovery document. +Normally, the discovey document's url starts with the url of the issuer.
+string
-
+ Default value : false
AuthConfig
+AuthConfig:189
+Defines wether to check the subject of a refreshed token after silent refresh. +Normally, it should be the same as before.
+EventListener
-
+ Default value : true
AuthConfig
+AuthConfig:129
+Defines whether every url provided by the discovery +document has to start with the issuer's url.
+any
+ Type : number
0.75
+ AuthConfig
+AuthConfig:151
+Defines when the token_timeout event should be raised. +If you set this to the default value 0.75, the event +is triggered after 75% of the token's life time.
+EventListener
+ Type : string
null
+ AuthConfig
+AuthConfig:65
+Url of the token endpoint as defined by OpenId Connect and OAuth 2.
+string
-
+ Default value : false
AuthConfig
+AuthConfig:217
+Set this to true to use HTTP BASIC auth for password flow
+string
-
- ''
+ Default value : false
AuthConfig
+AuthConfig:191
+The received (passed around) state, when logging -in with implicit flow.
-ValidationHandler
+ Type : string
null
+ AuthConfig
+AuthConfig:70
+The ValidationHandler used to validate received -id_tokens.
+Url of the userinfo endpoint as defined by OpenId Connect.
-
-
-
- Public
+ + Methods ++
|
+ ||||||||||||||||||||||||||||||
+
+ parseQueryString(queryString: string)
+ |
+ ||||||||||||||||||||||||||||||
+ Defined in projects/lib/src/url-helper.service.ts:25
+ |
+ ||||||||||||||||||||||||||||||
+
+
+ Parameters :
+
+
+
+
+ Returns :
+ object
+
+
+
+
+ |
+
constructor(authStorage: OAuthStorage, errorHandler: OAuthResourceServerErrorHandler, moduleConfig: OAuthModuleConfig)
+constructor(authStorage: OAuthStorage, oAuthService: OAuthService, errorHandler: OAuthResourceServerErrorHandler, moduleConfig: OAuthModuleConfig)
OAuthStorage
+ OAuthStorage
OAuthResourceServerErrorHandler
+ OAuthService
OAuthModuleConfig
+ OAuthResourceServerErrorHandler
- - - - Public - intercept - - - - | -||||||||||
-
- intercept(req: HttpRequest
- |
- ||||||||||
- - | -||||||||||
-
-
- Parameters :
-
-
-
-
- Returns :
- Observable<HttpEvent<any>>
-
-
-
-
|
+ + + + Public + intercept + + + + | +|||||||||
+
+ intercept(req: HttpRequest
+ |
+ |||||||||
+ + | +|||||||||
+
+
+ Parameters :
+
+
+
+
+ Returns :
+ Observable<HttpEvent<any>>
+
+
+
+
+ |
+
import { Injectable, Inject, Optional } from '@angular/core';
-import { OAuthService } from '../oauth-service';
-import { OAuthStorage } from '../types';
+ import { Injectable, Optional } from '@angular/core';
+
import {
- HttpEvent,
- HttpHandler,
- HttpInterceptor,
- HttpRequest,
- HttpResponse,
- HttpErrorResponse
+ HttpEvent,
+ HttpHandler,
+ HttpInterceptor,
+ HttpRequest,
} from '@angular/common/http';
-import { Observable } from 'rxjs';
-import { catchError } from 'rxjs/operators';
+import { Observable, of, merge } from 'rxjs';
+import { catchError, filter, map, take, mergeMap, timeout } from 'rxjs/operators';
import { OAuthResourceServerErrorHandler } from './resource-server-error-handler';
import { OAuthModuleConfig } from '../oauth-module.config';
-import { isPlatformBrowser } from '@angular/common';
+import { OAuthStorage } from '../types';
+import { OAuthService } from '../oauth-service';
+
+const WAIT_FOR_TOKEN_RECEIVED = 1000;
@Injectable()
export class DefaultOAuthInterceptor implements HttpInterceptor {
+
constructor(
private authStorage: OAuthStorage,
+ private oAuthService: OAuthService,
private errorHandler: OAuthResourceServerErrorHandler,
@Optional() private moduleConfig: OAuthModuleConfig
) { }
@@ -296,37 +310,55 @@
return true;
}
- public intercept(
- req: HttpRequest<any>,
- next: HttpHandler
- ): Observable<HttpEvent<any>> {
- const url = req.url.toLowerCase();
+ public intercept(
+ req: HttpRequest<any>,
+ next: HttpHandler
+ ): Observable<HttpEvent<any>> {
+ const url = req.url.toLowerCase();
- if (!this.moduleConfig) {
- return next.handle(req);
- }
- if (!this.moduleConfig.resourceServer) {
- return next.handle(req);
- }
- if (!this.checkUrl(url)) {
- return next.handle(req);
- }
- const sendAccessToken = this.moduleConfig.resourceServer.sendAccessToken;
+ if (!this.moduleConfig) {
+ return next.handle(req);
+ }
+ if (!this.moduleConfig.resourceServer) {
+ return next.handle(req);
+ }
+ if (this.moduleConfig.resourceServer.allowedUrls && !this.checkUrl(url)) {
+ return next.handle(req);
+ }
- if (sendAccessToken && this.authStorage.getItem('access_token')) {
- const token = this.authStorage.getItem('access_token');
- const header = 'Bearer ' + token;
+ const sendAccessToken = this.moduleConfig.resourceServer.sendAccessToken;
- const headers = req.headers.set('Authorization', header);
+ if (!sendAccessToken) {
+ return next
+ .handle(req)
+ .pipe(catchError(err => this.errorHandler.handleError(err)));
+ }
- req = req.clone({ headers });
+ return merge(
+ of(this.oAuthService.getAccessToken()).pipe(
+ filter(token => token ? true : false),
+ ),
+ this.oAuthService.events.pipe(
+ filter(e => e.type === 'token_received'),
+ timeout(WAIT_FOR_TOKEN_RECEIVED),
+ map(_ => this.oAuthService.getAccessToken()),
+ ),
+ ).pipe(
+ take(1),
+ mergeMap(token => {
+ if (token) {
+ const header = 'Bearer ' + token;
+ const headers = req.headers.set('Authorization', header);
+ req = req.clone({ headers });
}
return next
- .handle(req)
- .pipe(catchError(err => this.errorHandler.handleError(err)));
- }
+ .handle(req)
+ .pipe(catchError(err => this.errorHandler.handleError(err)));
+ }),
+ );
+ }
}
authorization_endpoint: string
+ authorization_endpoint: string
string
+ Type : string
check_session_iframe: string
+ check_session_iframe: string
string
+ Type : string
claims_parameter_supported: boolean
+ claims_parameter_supported: boolean
boolean
+ Type : boolean
end_session_endpoint: string
+ end_session_endpoint: string
string
+ Type : string
issuer: string
+ issuer: string
string
+ Type : string
jwks_uri: string
+ jwks_uri: string
string
+ Type : string
registration_endpoint: string
+ registration_endpoint: string
string
+ Type : string
service_documentation: string
+ service_documentation: string
string
+ Type : string
token_endpoint: string
+ token_endpoint: string
string
+ Type : string
userinfo_endpoint: string
+ userinfo_endpoint: string
string
+ Type : string
idToken: string
+ idToken: string
string
+ Type : string
idTokenClaims: object
+ idTokenClaims: object
object
+ Type : object
idTokenClaimsJson: string
+ idTokenClaimsJson: string
string
+ Type : string
idTokenExpiresAt: number
+ idTokenExpiresAt: number
number
+ Type : number
idTokenHeader: object
+ idTokenHeader: object
object
+ Type : object
idTokenHeaderJson: string
+ idTokenHeaderJson: string
string
+ Type : string
access_token: string
+ access_token: string
string
+ Type : string
expires_in: number
+ expires_in: number
number
+ Type : number
id_token: string
+ id_token: string
string
+ Type : string
refresh_token: string
+ refresh_token: string
string
+ Type : string
scope: string
+ scope: string
string
+ Type : string
state: string
+ state: string
string
+ Type : string
token_type: string
+ token_type: string
string
+ Type : string
[key: string]: any
+ [key: string]: any
sub: string
+ sub: string
string
+ Type : string
accessToken: string
+ accessToken: string
string
+ Type : string
idToken: string
+ idToken: string
string
+ Type : string
idTokenClaims: object
+ idTokenClaims: object
object
+ Type : object
idTokenHeader: object
+ idTokenHeader: object
object
+ Type : object
jwks: object
+ jwks: object
object
+ Type : object
loadKeys: function
+ loadKeys: function
function
+ Type : function
/.test(t.substr(i.position,6))?(i.emitBlock(),i.mono=!0,i.modStack.unshift("mono"),i.position+=5):!i.mono&&"bold"===i.mod()&&/<\/b>/.test(t.substr(i.position,4))?(i.emitBlock(),i.bold=!1,i.modStack.shift(),i.position+=3):!i.mono&&"ital"===i.mod()&&/<\/i>/.test(t.substr(i.position,4))?(i.emitBlock(),i.ital=!1,i.modStack.shift(),i.position+=3):"mono"===i.mod()&&/<\/code>/.test(t.substr(i.position,7))?(i.emitBlock(),i.mono=!1,i.modStack.shift(),i.position+=6):i.add(o):(i.emitBlock(),i.ital=!0,i.modStack.unshift("ital"),i.position+=2):(i.emitBlock(),i.bold=!0,i.modStack.unshift("bold"),i.position+=2):/&/.test(o)?/</.test(t.substr(i.position,4))?(i.add("<"),i.position+=3):/&/.test(t.substr(i.position,5))?(i.add("&"),i.position+=4):i.add("&"):i.add(o),i.position++}return i.emitBlock(),e}},{key:"splitMarkdownBlocks",value:function(t){var e=[],i={bold:!1,ital:!1,mono:!1,beginable:!0,spacing:!1,position:0,buffer:"",modStack:[]};for(i.mod=function(){return 0===this.modStack.length?"normal":this.modStack[0]},i.modName=function(){return 0===this.modStack.length?"normal":"mono"===this.modStack[0]?"mono":i.bold&&i.ital?"boldital":i.bold?"bold":i.ital?"ital":void 0},i.emitBlock=function(){arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.spacing&&(this.add(" "),this.spacing=!1),this.buffer.length>0&&(e.push({text:this.buffer,mod:this.modName()}),this.buffer="")},i.add=function(t){" "===t&&(i.spacing=!0),i.spacing&&(this.buffer+=" ",this.spacing=!1)," "!=t&&(this.buffer+=t)};i.positionthis.parent.fontOptions.maxWdt}},{key:"getLongestFit",value:function(t){for(var e="",i=0;i1&&void 0!==arguments[1]?arguments[1]:"normal",i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];t=t.replace(/^( +)/g,"$1\r"),t=t.replace(/([^\r][^ ]*)( +)/g,"$1\r$2\r");for(var o=t.split("\r");o.length>0;){var n=this.getLongestFit(o);if(0===n){var s=o[0],r=this.getLongestFitWord(s);this.lines.newLine(s.slice(0,r),e),o[0]=s.slice(r)}else{var a=n;" "===o[n-1]?n--:" "===o[a]&&a++;var h=o.slice(0,n).join("");n==o.length&&i?this.lines.append(h,e):this.lines.newLine(h,e),o=o.slice(a)}}}}]),t}();e.default=l},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(90),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=function(){function t(e){(0,a.default)(this,t),this.measureText=e,this.current=0,this.width=0,this.height=0,this.lines=[]}return(0,d.default)(t,[{key:"_add",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"normal";void 0===this.lines[t]&&(this.lines[t]={width:0,height:0,blocks:[]});var o=e;void 0!==e&&""!==e||(o=" ");var n=this.measureText(o,i),r=(0,s.default)({},n.values);r.text=e,r.width=n.width,r.mod=i,void 0!==e&&""!==e||(r.width=0),this.lines[t].blocks.push(r),this.lines[t].width+=r.width}},{key:"curWidth",value:function(){var t=this.lines[this.current];return void 0===t?0:t.width}},{key:"append",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"normal";this._add(this.current,t,e)}},{key:"newLine",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"normal";this._add(this.current,t,e),this.current++}},{key:"determineLineHeights",value:function(){for(var t=0;tt&&(t=o.width),e+=o.height}this.width=t,this.height=e}},{key:"removeEmptyBlocks",value:function(){for(var t=[],e=0;e1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover;if(this.needsRefresh(e,i)){var o=this.getDimensionsFromLabel(t,e,i);this.width=o.width+this.margin.right+this.margin.left,this.height=o.height+this.margin.top+this.margin.bottom,this.radius=this.width/2}}},{key:"draw",value:function(t,e,i,o,n,s){this.resize(t,o,n),this.left=e-this.width/2,this.top=i-this.height/2,this.initContextForDraw(t,s),t.roundRect(this.left,this.top,this.width,this.height,s.borderRadius),this.performFill(t,s),this.updateBoundingBox(e,i,t,o,n),this.labelModule.draw(t,this.left+this.textSize.width/2+this.margin.left,this.top+this.textSize.height/2+this.margin.top,o,n)}},{key:"updateBoundingBox",value:function(t,e,i,o,n){this._updateBoundingBox(t,e,i,o,n);var s=this.options.shapeProperties.borderRadius;this._addBoundingBoxMargin(s)}},{key:"distanceToBorder",value:function(t,e){this.resize(t);var i=this.options.borderWidth;return Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i}}]),e}(m.default);e.default=v},function(t,e,i){i(195),t.exports=i(7).Object.getPrototypeOf},function(t,e,i){var o=i(41),n=i(85);i(87)("getPrototypeOf",function(){return function(t){return n(o(t))}})},function(t,e,i){t.exports={default:i(197),__esModule:!0}},function(t,e,i){i(198),t.exports=i(7).Object.setPrototypeOf},function(t,e,i){var o=i(17);o(o.S,"Object",{setPrototypeOf:i(199).set})},function(t,e,i){var o=i(32),n=i(27),s=function(t,e){if(n(t),!o(e)&&null!==e)throw TypeError(e+": can't set as prototype!")};t.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(t,e,o){try{o=i(80)(Function.call,i(89).f(Object.prototype,"__proto__").set,2),o(t,[]),e=!(t instanceof Array)}catch(t){e=!0}return function(t,i){return s(t,i),e?t.__proto__=i:o(t,i),t}}({},!1):void 0),check:s}},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(73),m=o(f),v=function(t){function e(t,i,o){(0,a.default)(this,e);var n=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return n._setMargins(o),n}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover;if(this.needsRefresh(e,i)){var o=this.getDimensionsFromLabel(t,e,i),n=Math.max(o.width+this.margin.right+this.margin.left,o.height+this.margin.top+this.margin.bottom);this.options.size=n/2,this.width=n,this.height=n,this.radius=this.width/2}}},{key:"draw",value:function(t,e,i,o,n,s){this.resize(t,o,n),this.left=e-this.width/2,this.top=i-this.height/2,this._drawRawCircle(t,e,i,s),this.updateBoundingBox(e,i),this.labelModule.draw(t,this.left+this.textSize.width/2+this.margin.left,i,o,n)}},{key:"updateBoundingBox",value:function(t,e){this.boundingBox.top=e-this.options.size,this.boundingBox.left=t-this.options.size,this.boundingBox.right=t+this.options.size,this.boundingBox.bottom=e+this.options.size}},{key:"distanceToBorder",value:function(t,e){return this.resize(t),.5*this.width}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(73),m=o(f),v=function(t){function e(t,i,o,n,r){(0,a.default)(this,e);var h=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return h.setImages(n,r),h}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover;if(void 0===this.imageObj.src||void 0===this.imageObj.width||void 0===this.imageObj.height){var o=2*this.options.size;return this.width=o,this.height=o,void(this.radius=.5*this.width)}this.needsRefresh(e,i)&&this._resizeImage()}},{key:"draw",value:function(t,e,i,o,n,s){this.switchImages(o),this.resize(),this.left=e-this.width/2,this.top=i-this.height/2,this._drawRawCircle(t,e,i,s),t.save(),t.clip(),this._drawImageAtPosition(t,s),t.restore(),this._drawImageLabel(t,e,i,o,n),this.updateBoundingBox(e,i)}},{key:"updateBoundingBox",value:function(t,e){this.boundingBox.top=e-this.options.size,this.boundingBox.left=t-this.options.size,this.boundingBox.right=t+this.options.size,this.boundingBox.bottom=e+this.options.size,this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelOffset)}},{key:"distanceToBorder",value:function(t,e){return this.resize(t),.5*this.width}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(23),m=o(f),v=function(t){function e(t,i,o){(0,a.default)(this,e);var n=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return n._setMargins(o),n}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t,e,i){if(this.needsRefresh(e,i)){var o=this.getDimensionsFromLabel(t,e,i),n=o.width+this.margin.right+this.margin.left;this.width=n,this.height=n,this.radius=this.width/2}}},{key:"draw",value:function(t,e,i,o,n,s){this.resize(t,o,n),this.left=e-this.width/2,this.top=i-this.height/2,this.initContextForDraw(t,s),t.database(e-this.width/2,i-this.height/2,this.width,this.height),this.performFill(t,s),this.updateBoundingBox(e,i,t,o,n),this.labelModule.draw(t,this.left+this.textSize.width/2+this.margin.left,this.top+this.textSize.height/2+this.margin.top,o,n)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(24),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"draw",value:function(t,e,i,o,n,s){this._drawShape(t,"diamond",4,e,i,o,n,s)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(24),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"draw",value:function(t,e,i,o,n,s){this._drawShape(t,"circle",2,e,i,o,n,s)}},{key:"distanceToBorder",value:function(t,e){return this.resize(t),this.options.size}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(23),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover;if(this.needsRefresh(e,i)){var o=this.getDimensionsFromLabel(t,e,i);this.height=2*o.height,this.width=o.width+o.height,this.radius=.5*this.width}}},{key:"draw",value:function(t,e,i,o,n,s){this.resize(t,o,n),this.left=e-.5*this.width,this.top=i-.5*this.height,this.initContextForDraw(t,s),t.ellipse_vis(this.left,this.top,this.width,this.height),this.performFill(t,s),this.updateBoundingBox(e,i,t,o,n),this.labelModule.draw(t,e,i,o,n)}},{key:"distanceToBorder",value:function(t,e){this.resize(t);var i=.5*this.width,o=.5*this.height,n=Math.sin(e)*i,s=Math.cos(e)*o;return i*o/Math.sqrt(n*n+s*s)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(23),m=o(f),v=function(t){function e(t,i,o){(0,a.default)(this,e);var n=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return n._setMargins(o),n}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t,e,i){this.needsRefresh(e,i)&&(this.iconSize={width:Number(this.options.icon.size),height:Number(this.options.icon.size)},this.width=this.iconSize.width+this.margin.right+this.margin.left,this.height=this.iconSize.height+this.margin.top+this.margin.bottom,this.radius=.5*this.width)}},{key:"draw",value:function(t,e,i,o,n,s){if(this.resize(t,o,n),this.options.icon.size=this.options.icon.size||50,this.left=e-this.width/2,this.top=i-this.height/2,this._icon(t,e,i,o,n,s),void 0!==this.options.label){this.labelModule.draw(t,this.left+this.iconSize.width/2+this.margin.left,i+this.height/2+5,o)}this.updateBoundingBox(e,i)}},{key:"updateBoundingBox",value:function(t,e){if(this.boundingBox.top=e-.5*this.options.icon.size,this.boundingBox.left=t-.5*this.options.icon.size,this.boundingBox.right=t+.5*this.options.icon.size,this.boundingBox.bottom=e+.5*this.options.icon.size,void 0!==this.options.label&&this.labelModule.size.width>0){this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelModule.size.height+5)}}},{key:"_icon",value:function(t,e,i,o,n,s){var r=Number(this.options.icon.size);void 0!==this.options.icon.code?(t.font=(o?"bold ":"")+r+"px "+this.options.icon.face,t.fillStyle=this.options.icon.color||"black",t.textAlign="center",t.textBaseline="middle",this.enableShadow(t,s),t.fillText(this.options.icon.code,e,i),this.disableShadow(t,s)):console.error("When using the icon shape, you need to define the code in the icon options object. This can be done per node or globally.")}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(73),m=o(f),v=function(t){function e(t,i,o,n,r){(0,a.default)(this,e);var h=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return h.setImages(n,r),h}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover;if(void 0===this.imageObj.src||void 0===this.imageObj.width||void 0===this.imageObj.height){var o=2*this.options.size;return this.width=o,void(this.height=o)}this.needsRefresh(e,i)&&this._resizeImage()}},{key:"draw",value:function(t,e,i,o,n,s){if(this.switchImages(o),this.resize(),this.left=e-this.width/2,this.top=i-this.height/2,!0===this.options.shapeProperties.useBorderWithImage){var r=this.options.borderWidth,a=this.options.borderWidthSelected||2*this.options.borderWidth,h=(o?a:r)/this.body.view.scale;t.lineWidth=Math.min(this.width,h),t.beginPath(),t.strokeStyle=o?this.options.color.highlight.border:n?this.options.color.hover.border:this.options.color.border,t.fillStyle=o?this.options.color.highlight.background:n?this.options.color.hover.background:this.options.color.background,t.rect(this.left-.5*t.lineWidth,this.top-.5*t.lineWidth,this.width+t.lineWidth,this.height+t.lineWidth),t.fill(),this.performStroke(t,s),t.closePath()}this._drawImageAtPosition(t,s),this._drawImageLabel(t,e,i,o,n),this.updateBoundingBox(e,i)}},{key:"updateBoundingBox",value:function(t,e){this.resize(),this._updateBoundingBox(t,e),void 0!==this.options.label&&this.labelModule.size.width>0&&(this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelOffset))}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}
}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(24),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"draw",value:function(t,e,i,o,n,s){this._drawShape(t,"square",2,e,i,o,n,s)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(24),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"draw",value:function(t,e,i,o,n,s){this._drawShape(t,"hexagon",4,e,i,o,n,s)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(24),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"draw",value:function(t,e,i,o,n,s){this._drawShape(t,"star",4,e,i,o,n,s)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(23),m=o(f),v=function(t){function e(t,i,o){(0,a.default)(this,e);var n=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return n._setMargins(o),n}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t,e,i){this.needsRefresh(e,i)&&(this.textSize=this.labelModule.getTextSize(t,e,i),this.width=this.textSize.width+this.margin.right+this.margin.left,this.height=this.textSize.height+this.margin.top+this.margin.bottom,this.radius=.5*this.width)}},{key:"draw",value:function(t,e,i,o,n,s){this.resize(t,o,n),this.left=e-this.width/2,this.top=i-this.height/2,this.enableShadow(t,s),this.labelModule.draw(t,this.left+this.textSize.width/2+this.margin.left,this.top+this.textSize.height/2+this.margin.top,o,n),this.disableShadow(t,s),this.updateBoundingBox(e,i,t,o,n)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(24),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"draw",value:function(t,e,i,o,n,s){this._drawShape(t,"triangle",3,e,i,o,n,s)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(24),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"draw",value:function(t,e,i,o,n,s){this._drawShape(t,"triangleDown",3,e,i,o,n,s)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(0),s=o(n),r=i(1),a=o(r),h=i(2),d=i(11),l=i(12),u=i(74).default,c=function(){function t(e,i,o){var n=this;(0,s.default)(this,t),this.body=e,this.images=i,this.groups=o,this.body.functions.createEdge=this.create.bind(this),this.edgesListeners={add:function(t,e){n.add(e.items)},update:function(t,e){n.update(e.items)},remove:function(t,e){n.remove(e.items)}},this.options={},this.defaultOptions={arrows:{to:{enabled:!1,scaleFactor:1,type:"arrow"},middle:{enabled:!1,scaleFactor:1,type:"arrow"},from:{enabled:!1,scaleFactor:1,type:"arrow"}},arrowStrikethrough:!0,color:{color:"#848484",highlight:"#848484",hover:"#848484",inherit:"from",opacity:1},dashes:!1,font:{color:"#343434",size:14,face:"arial",background:"none",strokeWidth:2,strokeColor:"#ffffff",align:"horizontal",multi:!1,vadjust:0,bold:{mod:"bold"},boldital:{mod:"bold italic"},ital:{mod:"italic"},mono:{mod:"",size:15,face:"courier new",vadjust:2}},hidden:!1,hoverWidth:1.5,label:void 0,labelHighlightBold:!0,length:void 0,physics:!0,scaling:{min:1,max:15,label:{enabled:!0,min:14,max:30,maxVisible:30,drawThreshold:5},customScalingFunction:function(t,e,i,o){if(e===t)return.5;var n=1/(e-t);return Math.max(0,(o-t)*n)}},selectionWidth:1.5,selfReferenceSize:20,shadow:{enabled:!1,color:"rgba(0,0,0,0.5)",size:10,x:5,y:5},smooth:{enabled:!0,type:"dynamic",forceDirection:"none",roundness:.5},title:void 0,width:1,value:void 0},h.deepExtend(this.options,this.defaultOptions),this.bindEventListeners()}return(0,a.default)(t,[{key:"bindEventListeners",value:function(){var t=this;this.body.emitter.on("_forceDisableDynamicCurves",function(e){var i=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];"dynamic"===e&&(e="continuous");var o=!1;for(var n in t.body.edges)if(t.body.edges.hasOwnProperty(n)){var s=t.body.edges[n],r=t.body.data.edges._data[n];if(void 0!==r){var a=r.smooth;void 0!==a&&!0===a.enabled&&"dynamic"===a.type&&(void 0===e?s.setOptions({smooth:!1}):s.setOptions({smooth:{type:e}}),o=!0)}}!0===i&&!0===o&&t.body.emitter.emit("_dataChanged")}),this.body.emitter.on("_dataUpdated",function(){t.reconnectEdges()}),this.body.emitter.on("refreshEdges",this.refresh.bind(this)),this.body.emitter.on("refresh",this.refresh.bind(this)),this.body.emitter.on("destroy",function(){h.forEach(t.edgesListeners,function(e,i){t.body.data.edges&&t.body.data.edges.off(i,e)}),delete t.body.functions.createEdge,delete t.edgesListeners.add,delete t.edgesListeners.update,delete t.edgesListeners.remove,delete t.edgesListeners})}},{key:"setOptions",value:function(t){if(void 0!==t){u.parseOptions(this.options,t,!0,this.defaultOptions,!0);var e=!1;if(void 0!==t.smooth)for(var i in this.body.edges)this.body.edges.hasOwnProperty(i)&&(e=this.body.edges[i].updateEdgeType()||e);if(void 0!==t.font)for(var o in this.body.edges)this.body.edges.hasOwnProperty(o)&&this.body.edges[o].updateLabelModule();void 0===t.hidden&&void 0===t.physics&&!0!==e||this.body.emitter.emit("_dataChanged")}}},{key:"setData",value:function(t){var e=this,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1],o=this.body.data.edges;if(t instanceof d||t instanceof l)this.body.data.edges=t;else if(Array.isArray(t))this.body.data.edges=new d,this.body.data.edges.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.body.data.edges=new d}if(o&&h.forEach(this.edgesListeners,function(t,e){o.off(e,t)}),this.body.edges={},this.body.data.edges){h.forEach(this.edgesListeners,function(t,i){e.body.data.edges.on(i,t)});var n=this.body.data.edges.getIds();this.add(n,!0)}this.body.emitter.emit("_adjustEdgesForHierarchicalLayout"),!1===i&&this.body.emitter.emit("_dataChanged")}},{key:"add",value:function(t){for(var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=this.body.edges,o=this.body.data.edges,n=0;n1&&void 0!==arguments[1])||arguments[1];if(0!==t.length){var i=this.body.edges;h.forEach(t,function(t){var e=i[t];void 0!==e&&e.remove()}),e&&this.body.emitter.emit("_dataChanged")}}},{key:"refresh",value:function(){var t=this;h.forEach(this.body.edges,function(e,i){var o=t.body.data.edges._data[i];void 0!==o&&e.setOptions(o)})}},{key:"create",value:function(t){return new u(t,this.body,this.options,this.defaultOptions)}},{key:"reconnectEdges",value:function(){var t,e=this.body.nodes,i=this.body.edges;for(t in e)e.hasOwnProperty(t)&&(e[t].edges=[]);for(t in i)if(i.hasOwnProperty(t)){var o=i[t];o.from=null,o.to=null,o.connect()}}},{key:"getConnectedNodes",value:function(t){var e=[];if(void 0!==this.body.edges[t]){var i=this.body.edges[t];void 0!==i.fromId&&e.push(i.fromId),void 0!==i.toId&&e.push(i.toId)}return e}},{key:"_updateState",value:function(){this._addMissingEdges(),this._removeInvalidEdges()}},{key:"_removeInvalidEdges",value:function(){var t=this,e=[];h.forEach(this.body.edges,function(i,o){var n=t.body.nodes[i.toId],s=t.body.nodes[i.fromId];void 0!==n&&!0===n.isCluster||void 0!==s&&!0===s.isCluster||void 0!==n&&void 0!==s||e.push(o)}),this.remove(e,!1)}},{key:"_addMissingEdges",value:function(){var t=this.body.edges,e=this.body.data.edges,i=[];e.forEach(function(e,o){void 0===t[o]&&i.push(o)}),this.add(i,!0)}}]),t}();e.default=c},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(30),s=o(n),r=i(3),a=o(r),h=i(0),d=o(h),l=i(1),u=o(l),c=i(4),p=o(c),f=i(5),m=o(f),v=i(216),g=o(v),y=function(t){function e(t,i,o){return(0,d.default)(this,e),(0,p.default)(this,(e.__proto__||(0,a.default)(e)).call(this,t,i,o))}return(0,m.default)(e,t),(0,u.default)(e,[{key:"_line",value:function(t,e,i){var o=i[0],n=i[1];this._bezierCurve(t,e,o,n)}},{key:"_getViaCoordinates",value:function(){var t=this.from.x-this.to.x,e=this.from.y-this.to.y,i=void 0,o=void 0,n=void 0,s=void 0,r=this.options.smooth.roundness;return(Math.abs(t)>Math.abs(e)||!0===this.options.smooth.forceDirection||"horizontal"===this.options.smooth.forceDirection)&&"vertical"!==this.options.smooth.forceDirection?(o=this.from.y,s=this.to.y,i=this.from.x-r*t,n=this.to.x+r*t):(o=this.from.y-r*e,s=this.to.y+r*e,i=this.from.x,n=this.to.x),[{x:i,y:o},{x:n,y:s}]}},{key:"getViaNode",value:function(){return this._getViaCoordinates()}},{key:"_findBorderPosition",value:function(t,e){return this._findBorderPositionBezier(t,e)}},{key:"_getDistanceToEdge",value:function(t,e,i,o,n,r){var a=arguments.length>6&&void 0!==arguments[6]?arguments[6]:this._getViaCoordinates(),h=(0,s.default)(a,2),d=h[0],l=h[1];return this._getDistanceToBezierEdge(t,e,i,o,n,r,d,l)}},{key:"getPoint",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._getViaCoordinates(),i=(0,s.default)(e,2),o=i[0],n=i[1],r=t,a=[];return a[0]=Math.pow(1-r,3),a[1]=3*r*Math.pow(1-r,2),a[2]=3*Math.pow(r,2)*(1-r),a[3]=Math.pow(r,3),{x:a[0]*this.fromPoint.x+a[1]*o.x+a[2]*n.x+a[3]*this.toPoint.x,y:a[0]*this.fromPoint.y+a[1]*o.y+a[2]*n.y+a[3]*this.toPoint.y}}}]),e}(g.default);e.default=y},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(75),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"_getDistanceToBezierEdge",value:function(t,e,i,o,n,s,r,a){var h=1e9,d=void 0,l=void 0,u=void 0,c=void 0,p=void 0,f=t,m=e,v=[0,0,0,0];for(l=1;l<10;l++)u=.1*l,v[0]=Math.pow(1-u,3),v[1]=3*u*Math.pow(1-u,2),v[2]=3*Math.pow(u,2)*(1-u),v[3]=Math.pow(u,3),c=v[0]*t+v[1]*r.x+v[2]*a.x+v[3]*i,p=v[0]*e+v[1]*r.y+v[2]*a.y+v[3]*o,l>0&&(d=this._getDistanceToLine(f,m,c,p,n,s),h=d1&&void 0!==arguments[1]?arguments[1]:this.via,i=t,o=void 0,n=void 0;if(this.from===this.to){var r=this._getCircleData(this.from),a=(0,s.default)(r,3),h=a[0],d=a[1],l=a[2],u=2*Math.PI*(1-i);o=h+l*Math.sin(u),n=d+l-l*(1-Math.cos(u))}else o=Math.pow(1-i,2)*this.fromPoint.x+2*i*(1-i)*e.x+Math.pow(i,2)*this.toPoint.x,n=Math.pow(1-i,2)*this.fromPoint.y+2*i*(1-i)*e.y+Math.pow(i,2)*this.toPoint.y;return{x:o,y:n}}},{key:"_findBorderPosition",value:function(t,e){return this._findBorderPositionBezier(t,e,this.via)}},{key:"_getDistanceToEdge",value:function(t,e,i,o,n,s){return this._getDistanceToBezierEdge(t,e,i,o,n,s,this.via)}}]),e}(g.default);e.default=y},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(75),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"_line",value:function(t,e,i){this._bezierCurve(t,e,i)}},{key:"getViaNode",value:function(){return this._getViaCoordinates()}},{key:"_getViaCoordinates",value:function(){var t=void 0,e=void 0,i=this.options.smooth.roundness,o=this.options.smooth.type,n=Math.abs(this.from.x-this.to.x),s=Math.abs(this.from.y-this.to.y);if("discrete"===o||"diagonalCross"===o){var r=void 0,a=void 0;r=a=n<=s?i*s:i*n,this.from.x>this.to.x&&(r=-r),this.from.y>=this.to.y&&(a=-a),t=this.from.x+r,e=this.from.y+a,"discrete"===o&&(n<=s?t=nthis.to.x&&(_=-_),this.from.y>=this.to.y&&(w=-w),t=this.from.x+_,e=this.from.y+w,n<=s?t=this.from.x<=this.to.x?this.to.xt?this.to.x:t:e=this.from.y>=this.to.y?this.to.y>e?this.to.y:e:this.to.y2&&void 0!==arguments[2]?arguments[2]:{};return this._findBorderPositionBezier(t,e,i.via)}},{key:"_getDistanceToEdge",value:function(t,e,i,o,n,s){var r=arguments.length>6&&void 0!==arguments[6]?arguments[6]:this._getViaCoordinates();return this._getDistanceToBezierEdge(t,e,i,o,n,s,r)}},{key:"getPoint",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._getViaCoordinates(),i=t;return{x:Math.pow(1-i,2)*this.fromPoint.x+2*i*(1-i)*e.x+Math.pow(i,2)*this.toPoint.x,y:Math.pow(1-i,2)*this.fromPoint.y+2*i*(1-i)*e.y+Math.pow(i,2)*this.toPoint.y}}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(118),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"_line",value:function(t,e){t.beginPath(),t.moveTo(this.fromPoint.x,this.fromPoint.y),t.lineTo(this.toPoint.x,this.toPoint.y),this.enableShadow(t,e),t.stroke(),this.disableShadow(t,e)}},{key:"getViaNode",value:function(){}},{key:"getPoint",value:function(t){return{x:(1-t)*this.fromPoint.x+t*this.toPoint.x,y:(1-t)*this.fromPoint.y+t*this.toPoint.y}}},{key:"_findBorderPosition",value:function(t,e){var i=this.to,o=this.from;t.id===this.from.id&&(i=this.from,o=this.to);var n=Math.atan2(i.y-o.y,i.x-o.x),s=i.x-o.x,r=i.y-o.y,a=Math.sqrt(s*s+r*r),h=t.distanceToBorder(e,n),d=(a-h)/a,l={};return l.x=(1-d)*o.x+d*i.x,l.y=(1-d)*o.y+d*i.y,l}},{key:"_getDistanceToEdge",value:function(t,e,i,o,n,s){return this._getDistanceToLine(t,e,i,o,n,s)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(8),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(120).default,u=i(221).default,c=i(222).default,p=i(223).default,f=i(224).default,m=i(121).default,v=i(225).default,g=i(226).default,y=i(2),b=i(119).default,_=function(){function t(e){(0,a.default)(this,t),this.body=e,this.physicsBody={physicsNodeIndices:[],physicsEdgeIndices:[],forces:{},velocities:{}},this.physicsEnabled=!0,this.simulationInterval=1e3/60,this.requiresTimeout=!0,this.previousStates={},this.referenceState={},this.freezeCache={},this.renderTimer=void 0,this.adaptiveTimestep=!1,this.adaptiveTimestepEnabled=!1,this.adaptiveCounter=0,this.adaptiveInterval=3,this.stabilized=!1,this.startedStabilization=!1,this.stabilizationIterations=0,this.ready=!1,this.options={},this.defaultOptions={enabled:!0,barnesHut:{theta:.5,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09,avoidOverlap:0},forceAtlas2Based:{theta:.5,gravitationalConstant:-50,centralGravity:.01,springConstant:.08,springLength:100,damping:.4,avoidOverlap:0},repulsion:{centralGravity:.2,springLength:200,springConstant:.05,nodeDistance:100,damping:.09,avoidOverlap:0},hierarchicalRepulsion:{centralGravity:0,springLength:100,springConstant:.01,nodeDistance:120,damping:.09},maxVelocity:50,minVelocity:.75,solver:"barnesHut",stabilization:{enabled:!0,iterations:1e3,updateInterval:50,onlyDynamicEdges:!1,fit:!0},timestep:.5,adaptiveTimestep:!0},y.extend(this.options,this.defaultOptions),this.timestep=.5,this.layoutFailed=!1,this.bindEventListeners()}return(0,d.default)(t,[{key:"bindEventListeners",value:function(){var t=this;this.body.emitter.on("initPhysics",function(){t.initPhysics()}),this.body.emitter.on("_layoutFailed",function(){t.layoutFailed=!0}),this.body.emitter.on("resetPhysics",function(){t.stopSimulation(),t.ready=!1}),this.body.emitter.on("disablePhysics",function(){t.physicsEnabled=!1,t.stopSimulation()}),this.body.emitter.on("restorePhysics",function(){t.setOptions(t.options),!0===t.ready&&t.startSimulation()}),this.body.emitter.on("startSimulation",function(){!0===t.ready&&t.startSimulation()}),this.body.emitter.on("stopSimulation",function(){t.stopSimulation()}),this.body.emitter.on("destroy",function(){t.stopSimulation(!1),t.body.emitter.off()}),this.body.emitter.on("_dataChanged",function(){t.updatePhysicsData()})}},{key:"setOptions",value:function(t){void 0!==t&&(!1===t?(this.options.enabled=!1,this.physicsEnabled=!1,this.stopSimulation()):!0===t?(this.options.enabled=!0,this.physicsEnabled=!0,this.startSimulation()):(this.physicsEnabled=!0,y.selectiveNotDeepExtend(["stabilization"],this.options,t),y.mergeOptions(this.options,t,"stabilization"),void 0===t.enabled&&(this.options.enabled=!0),!1===this.options.enabled&&(this.physicsEnabled=!1,this.stopSimulation()),this.timestep=this.options.timestep)),this.init()}},{key:"init",value:function(){var t;"forceAtlas2Based"===this.options.solver?(t=this.options.forceAtlas2Based,this.nodesSolver=new v(this.body,this.physicsBody,t),this.edgesSolver=new p(this.body,this.physicsBody,t),this.gravitySolver=new g(this.body,this.physicsBody,t)):"repulsion"===this.options.solver?(t=this.options.repulsion,this.nodesSolver=new u(this.body,this.physicsBody,t),this.edgesSolver=new p(this.body,this.physicsBody,t),this.gravitySolver=new m(this.body,this.physicsBody,t)):"hierarchicalRepulsion"===this.options.solver?(t=this.options.hierarchicalRepulsion,this.nodesSolver=new c(this.body,this.physicsBody,t),this.edgesSolver=new f(this.body,this.physicsBody,t),this.gravitySolver=new m(this.body,this.physicsBody,t)):(t=this.options.barnesHut,this.nodesSolver=new l(this.body,this.physicsBody,t),this.edgesSolver=new p(this.body,this.physicsBody,t),this.gravitySolver=new m(this.body,this.physicsBody,t)),this.modelOptions=t}},{key:"initPhysics",value:function(){!0===this.physicsEnabled&&!0===this.options.enabled?!0===this.options.stabilization.enabled?this.stabilize():(this.stabilized=!1,this.ready=!0,this.body.emitter.emit("fit",{},this.layoutFailed),this.startSimulation()):(this.ready=!0,this.body.emitter.emit("fit"))}},{key:"startSimulation",value:function(){!0===this.physicsEnabled&&!0===this.options.enabled?(this.stabilized=!1,this.adaptiveTimestep=!1,this.body.emitter.emit("_resizeNodes"),void 0===this.viewFunction&&(this.viewFunction=this.simulationStep.bind(this),this.body.emitter.on("initRedraw",this.viewFunction),this.body.emitter.emit("_startRendering"))):this.body.emitter.emit("_redraw")}},{key:"stopSimulation",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this.stabilized=!0,!0===t&&this._emitStabilized(),void 0!==this.viewFunction&&(this.body.emitter.off("initRedraw",this.viewFunction),this.viewFunction=void 0,!0===t&&this.body.emitter.emit("_stopRendering"))}},{key:"simulationStep",value:function(){var t=Date.now();this.physicsTick(),(Date.now()-t<.4*this.simulationInterval||!0===this.runDoubleSpeed)&&!1===this.stabilized&&(this.physicsTick(),this.runDoubleSpeed=!0),!0===this.stabilized&&this.stopSimulation()}},{key:"_emitStabilized",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.stabilizationIterations;(this.stabilizationIterations>1||!0===this.startedStabilization)&&setTimeout(function(){t.body.emitter.emit("stabilized",{iterations:e}),t.startedStabilization=!1,t.stabilizationIterations=0},0)}},{key:"physicsStep",value:function(){this.gravitySolver.solve(),this.nodesSolver.solve(),this.edgesSolver.solve(),this.moveNodes()}},{key:"adjustTimeStep",value:function(){!0===this._evaluateStepQuality()?this.timestep=1.2*this.timestep:this.timestep/1.2.3))return!1;return!0}},{key:"moveNodes",value:function(){for(var t=this.physicsBody.physicsNodeIndices,e=0,i=0,o=0;oo&&(t=t>0?o:-o),t}},{key:"_performStep",value:function(t){var e=this.body.nodes[t],i=this.physicsBody.forces[t],o=this.physicsBody.velocities[t];return this.previousStates[t]={x:e.x,y:e.y,vx:o.x,vy:o.y},!1===e.options.fixed.x?(o.x=this.calculateComponentVelocity(o.x,i.x,e.options.mass),e.x+=o.x*this.timestep):(i.x=0,o.x=0),!1===e.options.fixed.y?(o.y=this.calculateComponentVelocity(o.y,i.y,e.options.mass),e.y+=o.y*this.timestep):(i.y=0,o.y=0),Math.sqrt(Math.pow(o.x,2)+Math.pow(o.y,2))}},{key:"_freezeNodes",value:function(){var t=this.body.nodes;for(var e in t)if(t.hasOwnProperty(e)&&t[e].x&&t[e].y){var i=t[e].options.fixed;this.freezeCache[e]={x:i.x,y:i.y},i.x=!0,i.y=!0}}},{key:"_restoreFrozenNodes",value:function(){var t=this.body.nodes;for(var e in t)t.hasOwnProperty(e)&&void 0!==this.freezeCache[e]&&(t[e].options.fixed.x=this.freezeCache[e].x,t[e].options.fixed.y=this.freezeCache[e].y);this.freezeCache={}}},{key:"stabilize",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.options.stabilization.iterations;if("number"!=typeof e&&(e=this.options.stabilization.iterations,console.log("The stabilize method needs a numeric amount of iterations. Switching to default: ",e)),0===this.physicsBody.physicsNodeIndices.length)return void(this.ready=!0);this.adaptiveTimestep=this.options.adaptiveTimestep,this.body.emitter.emit("_resizeNodes"),this.stopSimulation(),this.stabilized=!1,this.body.emitter.emit("_blockRedraw"),this.targetIterations=e,!0===this.options.stabilization.onlyDynamicEdges&&this._freezeNodes(),this.stabilizationIterations=0,setTimeout(function(){return t._stabilizationBatch()},0)}},{key:"_startStabilizing",value:function(){return!0!==this.startedStabilization&&(this.body.emitter.emit("startStabilizing"),this.startedStabilization=!0,!0)}},{key:"_stabilizationBatch",value:function(){var t=this,e=function(){return!1===t.stabilized&&t.stabilizationIterations0){var s=n.edges.length+1,r=this.options.centralGravity*s*n.options.mass;o[n.id].x=e*r,o[n.id].y=i*r}}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(8),s=o(n),r=i(6),a=o(r),h=i(0),d=o(h),l=i(1),u=o(l),c=i(2),p=i(76).default,f=i(228).default,m=i(74).default,v=i(47).default,g=function(){function t(e){var i=this;(0,d.default)(this,t),this.body=e,this.clusteredNodes={},this.clusteredEdges={},this.options={},this.defaultOptions={},c.extend(this.options,this.defaultOptions),this.body.emitter.on("_resetData",function(){i.clusteredNodes={},i.clusteredEdges={}})}return(0,u.default)(t,[{key:"clusterByHubsize",value:function(t,e){void 0===t?t=this._getHubSize():"object"===(void 0===t?"undefined":(0,a.default)(t))&&(e=this._checkOptions(t),t=this._getHubSize());for(var i=[],o=0;o=t&&i.push(n.id)}for(var s=0;s0&&void 0!==arguments[0]?arguments[0]:{},i=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(void 0===e.joinCondition)throw new Error("Cannot call clusterByNodeData without a joinCondition function in the options.");e=this._checkOptions(e);var o={},n={};c.forEach(this.body.nodes,function(i,s){var r=p.cloneOptions(i);!0===e.joinCondition(r)&&(o[s]=i,c.forEach(i.edges,function(e){void 0===t.clusteredEdges[e.id]&&(n[e.id]=e)}))}),this._cluster(o,n,e,i)}},{key:"clusterByEdgeCount",value:function(t,e){var i=this,o=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];e=this._checkOptions(e);for(var n=[],r={},a=void 0,h=void 0,d=void 0,l=0;l0&&(0,s.default)(m).length>0&&!0===b)if(c=function(){for(var t=0;t1&&void 0!==arguments[1])||arguments[1];this.clusterByEdgeCount(1,t,e)}},{key:"clusterBridges",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];this.clusterByEdgeCount(2,t,e)}},{key:"clusterByConnection",value:function(t,e){var i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(void 0===t)throw new Error("No nodeId supplied to clusterByConnection!");if(void 0===this.body.nodes[t])throw new Error("The nodeId given to clusterByConnection does not exist!");var o=this.body.nodes[t];e=this._checkOptions(e,o),void 0===e.clusterNodeProperties.x&&(e.clusterNodeProperties.x=o.x),void 0===e.clusterNodeProperties.y&&(e.clusterNodeProperties.y=o.y),void 0===e.clusterNodeProperties.fixed&&(e.clusterNodeProperties.fixed={},e.clusterNodeProperties.fixed.x=o.options.fixed.x,e.clusterNodeProperties.fixed.y=o.options.fixed.y);var n={},r={},a=o.id,h=p.cloneOptions(o);n[a]=o;for(var d=0;d-1&&(r[g.id]=g)}this._cluster(n,r,e,i)}},{key:"_createClusterEdges",value:function(t,e,i,o){for(var n=void 0,r=void 0,a=void 0,h=void 0,d=void 0,l=void 0,u=(0,s.default)(t),c=[],p=0;p0&&void 0!==arguments[0]?arguments[0]:{};return void 0===t.clusterEdgeProperties&&(t.clusterEdgeProperties={}),void 0===t.clusterNodeProperties&&(t.clusterNodeProperties={}),t}},{key:"_cluster",value:function(t,e,i){var o=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];if(0!=(0,s.default)(t).length&&(1!=(0,s.default)(t).length||1==i.clusterNodeProperties.allowSingleNodeCluster)){for(var n in t)if(t.hasOwnProperty(n)&&void 0!==this.clusteredNodes[n])return;var r=c.deepExtend({},i.clusterNodeProperties);if(void 0!==i.processProperties){var a=[];for(var h in t)if(t.hasOwnProperty(h)){var d=p.cloneOptions(t[h]);a.push(d)}var l=[];for(var u in e)if(e.hasOwnProperty(u)&&"clusterEdge:"!==u.substr(0,12)){var m=p.cloneOptions(e[u],"edge");l.push(m)}if(!(r=i.processProperties(r,a,l)))throw new Error("The processProperties function does not return properties!")}void 0===r.id&&(r.id="cluster:"+c.randomUUID());var v=r.id;void 0===r.label&&(r.label="cluster");var g=void 0;void 0===r.x&&(g=this._getClusterPosition(t),r.x=g.x),void 0===r.y&&(void 0===g&&(g=this._getClusterPosition(t)),r.y=g.y),r.id=v;var y=this.body.functions.createNode(r,f);y.containedNodes=t,y.containedEdges=e,y.clusterEdgeProperties=i.clusterEdgeProperties,this.body.nodes[r.id]=y,this._clusterEdges(t,e,r,i.clusterEdgeProperties),r.id=void 0,!0===o&&this.body.emitter.emit("_dataChanged")}}},{key:"_backupEdgeOptions",value:function(t){void 0===this.clusteredEdges[t.id]&&(this.clusteredEdges[t.id]={physics:t.options.physics})}},{key:"_restoreEdge",value:function(t){var e=this.clusteredEdges[t.id];void 0!==e&&(t.setOptions({physics:e.physics}),delete this.clusteredEdges[t.id])}},{key:"isCluster",value:function(t){return void 0!==this.body.nodes[t]?!0===this.body.nodes[t].isCluster:(console.log("Node does not exist."),!1)}},{key:"_getClusterPosition",value:function(t){for(var e=(0,s.default)(t),i=t[e[0]].x,o=t[e[0]].x,n=t[e[0]].y,r=t[e[0]].y,a=void 0,h=1;ho?a.x:o,n=a.yr?a.y:r;return{x:.5*(i+o),y:.5*(n+r)}}},{key:"openCluster",value:function(t,e){var i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(void 0===t)throw new Error("No clusterNodeId supplied to openCluster.");var o=this.body.nodes[t];if(void 0===o)throw new Error("The clusterNodeId supplied to openCluster does not exist.");if(!0!==o.isCluster||void 0===o.containedNodes||void 0===o.containedEdges)throw new Error("The node:"+t+" is not a valid cluster.");var n=this.findNode(t),s=n.indexOf(t)-1;if(s>=0){var r=n[s];return this.body.nodes[r]._openChildCluster(t),delete this.body.nodes[t],void(!0===i&&this.body.emitter.emit("_dataChanged"))}var a=o.containedNodes,h=o.containedEdges;if(void 0!==e&&void 0!==e.releaseFunction&&"function"==typeof e.releaseFunction){var d={},l={x:o.x,y:o.y};for(var u in a)if(a.hasOwnProperty(u)){var p=this.body.nodes[u];d[u]={x:p.x,y:p.y}}var f=e.releaseFunction(l,d);for(var m in a)if(a.hasOwnProperty(m)){var v=this.body.nodes[m];void 0!==f[m]&&(v.x=void 0===f[m].x?o.x:f[m].x,v.y=void 0===f[m].y?o.y:f[m].y)}}else c.forEach(a,function(t){!1===t.options.fixed.x&&(t.x=o.x),!1===t.options.fixed.y&&(t.y=o.y)});for(var g in a)if(a.hasOwnProperty(g)){var y=this.body.nodes[g];y.vx=o.vx,y.vy=o.vy,y.setOptions({physics:!0}),delete this.clusteredNodes[g]}for(var b=[],_=0;_0&&n<100;){var s=e.pop();if(void 0!==s){var r=this.body.edges[s];if(void 0!==r){n++;var a=r.clusteringEdgeReplacingIds;if(void 0===a)o.push(s);else for(var h=0;ho&&(o=s.edges.length),t+=s.edges.length,e+=Math.pow(s.edges.length,2),i+=1}t/=i,e/=i;var r=e-Math.pow(t,2),a=Math.sqrt(r),h=Math.floor(t+2*a);return h>o&&(h=o),h}},{key:"_createClusteredEdge",value:function(t,e,i,o,n){var s=p.cloneOptions(i,"edge");c.deepExtend(s,o),s.from=t,s.to=e,s.id="clusterEdge:"+c.randomUUID(),void 0!==n&&c.deepExtend(s,n);var r=this.body.functions.createEdge(s);return r.clusteringEdgeReplacingIds=[i.id],r.connect(),this.body.edges[r.id]=r,r}},{key:"_clusterEdges",value:function(t,e,i,o){if(e instanceof m){var n=e,s={};s[n.id]=n,e=s}if(t instanceof v){var r=t,a={};a[r.id]=r,t=a}if(void 0===i||null===i)throw new Error("_clusterEdges: parameter clusterNode required");void 0===o&&(o=i.clusterEdgeProperties),this._createClusterEdges(t,e,i,o);for(var h in e)if(e.hasOwnProperty(h)&&void 0!==this.body.edges[h]){var d=this.body.edges[h];this._backupEdgeOptions(d),d.setOptions({physics:!1})}for(var l in t)t.hasOwnProperty(l)&&(this.clusteredNodes[l]={clusterId:i.id,node:this.body.nodes[l]},this.body.nodes[l].setOptions({physics:!1}))}},{key:"_getClusterNodeForNode",value:function(t){if(void 0!==t){var e=this.clusteredNodes[t];if(void 0!==e){var i=e.clusterId;if(void 0!==i)return this.body.nodes[i]}}}},{key:"_filter",value:function(t,e){var i=[];return c.forEach(t,function(t){e(t)&&i.push(t)}),i}},{key:"_updateState",value:function(){var t=this,e=void 0,i=[],o=[],n=function(e){c.forEach(t.body.nodes,function(t){!0===t.isCluster&&e(t)})};for(e in this.clusteredNodes)if(this.clusteredNodes.hasOwnProperty(e)){var r=this.body.nodes[e];void 0===r&&i.push(e)}n(function(t){for(var e=0;e0}e.endPointsValid()&&n||o.push(i)}),n(function(e){c.forEach(o,function(i){delete e.containedEdges[i],c.forEach(e.edges,function(n,s){if(n.id===i)return void(e.edges[s]=null);n.clusteringEdgeReplacingIds=t._filter(n.clusteringEdgeReplacingIds,function(t){return-1===o.indexOf(t)})}),e.edges=t._filter(e.edges,function(t){return null!==t})})}),c.forEach(o,function(e){delete t.clusteredEdges[e]}),c.forEach(o,function(e){delete t.body.edges[e]});var h=(0,s.default)(this.body.edges);c.forEach(h,function(e){var i=t.body.edges[e],o=t._isClusteredNode(i.fromId)||t._isClusteredNode(i.toId);if(o!==t._isClusteredEdge(i.id)){if(!o)throw new Error("remove edge from clustering not implemented!");var n=t._getClusterNodeForNode(i.fromId);void 0!==n&&t._clusterEdges(t.body.nodes[i.fromId],i,n);var s=t._getClusterNodeForNode(i.toId);void 0!==s&&t._clusterEdges(t.body.nodes[i.toId],i,s)}});for(var d=!1,l=!0;l;)!function(){var e=[];n(function(t){var i=(0,s.default)(t.containedNodes).length,o=!0===t.options.allowSingleNodeCluster;(o&&i<1||!o&&i<2)&&e.push(t.id)});for(var i=0;i0,d=d||l}();d&&this._updateState()}},{key:"_isClusteredNode",value:function(t){return void 0!==this.clusteredNodes[t]}},{key:"_isClusteredEdge",value:function(t){return void 0!==this.clusteredEdges[t]}}]),t}();e.default=g},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(2),m=i(47).default,v=function(t){function e(t,i,o,n,r,h){(0,a.default)(this,e);var d=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o,n,r,h));return d.isCluster=!0,d.containedNodes={},d.containedEdges={},d}return(0,p.default)(e,t),(0,d.default)(e,[{key:"_openChildCluster",value:function(t){var e=this,i=this.body.nodes[t];if(void 0===this.containedNodes[t])throw new Error("node with id: "+t+" not in current cluster");if(!i.isCluster)throw new Error("node with id: "+t+" is not a cluster");delete this.containedNodes[t],f.forEach(i.edges,function(t){delete e.containedEdges[t.id]}),f.forEach(i.containedNodes,function(t,i){e.containedNodes[i]=t}),i.containedNodes={},f.forEach(i.containedEdges,function(t,i){e.containedEdges[i]=t}),i.containedEdges={},f.forEach(i.edges,function(t){f.forEach(e.edges,function(i){var o=i.clusteringEdgeReplacingIds.indexOf(t.id);-1!==o&&(f.forEach(t.clusteringEdgeReplacingIds,function(t){i.clusteringEdgeReplacingIds.push(t),e.body.edges[t].edgeReplacedById=i.id}),i.clusteringEdgeReplacingIds.splice(o,1))})}),i.edges=[]}}]),e}(m);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}function n(){var t;void 0!==window&&(t=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame),window.requestAnimationFrame=void 0===t?function(t){t()}:t}Object.defineProperty(e,"__esModule",{value:!0});var s=i(0),r=o(s),a=i(1),h=o(a),d=i(2),l=function(){function t(e,i){(0,r.default)(this,t),n(),this.body=e,this.canvas=i,this.redrawRequested=!1,this.renderTimer=void 0,this.requiresTimeout=!0,this.renderingActive=!1,this.renderRequests=0,this.allowRedraw=!0,this.dragging=!1,this.options={},this.defaultOptions={hideEdgesOnDrag:!1,hideNodesOnDrag:!1},d.extend(this.options,this.defaultOptions),this._determineBrowserMethod(),this.bindEventListeners()}return(0,h.default)(t,[{key:"bindEventListeners",value:function(){var t=this;this.body.emitter.on("dragStart",function(){t.dragging=!0}),this.body.emitter.on("dragEnd",function(){t.dragging=!1}),this.body.emitter.on("_resizeNodes",function(){t._resizeNodes()}),this.body.emitter.on("_redraw",function(){!1===t.renderingActive&&t._redraw()}),this.body.emitter.on("_blockRedraw",function(){t.allowRedraw=!1}),this.body.emitter.on("_allowRedraw",function(){t.allowRedraw=!0,t.redrawRequested=!1}),this.body.emitter.on("_requestRedraw",this._requestRedraw.bind(this)),this.body.emitter.on("_startRendering",function(){t.renderRequests+=1,t.renderingActive=!0,t._startRendering()}),this.body.emitter.on("_stopRendering",function(){t.renderRequests-=1,t.renderingActive=t.renderRequests>0,t.renderTimer=void 0}),this.body.emitter.on("destroy",function(){t.renderRequests=0,t.allowRedraw=!1,t.renderingActive=!1,!0===t.requiresTimeout?clearTimeout(t.renderTimer):window.cancelAnimationFrame(t.renderTimer),t.body.emitter.off()})}},{key:"setOptions",value:function(t){if(void 0!==t){var e=["hideEdgesOnDrag","hideNodesOnDrag"];d.selectiveDeepExtend(e,this.options,t)}}},{key:"_requestNextFrame",value:function(t,e){if("undefined"!=typeof window){var i=void 0,o=window;return!0===this.requiresTimeout?i=o.setTimeout(t,e):o.requestAnimationFrame&&(i=o.requestAnimationFrame(t)),i}}},{key:"_startRendering",value:function(){!0===this.renderingActive&&void 0===this.renderTimer&&(this.renderTimer=this._requestNextFrame(this._renderStep.bind(this),this.simulationInterval))}},{key:"_renderStep",value:function(){!0===this.renderingActive&&(this.renderTimer=void 0,!0===this.requiresTimeout&&this._startRendering(),this._redraw(),!1===this.requiresTimeout&&this._startRendering())}},{key:"redraw",value:function(){this.body.emitter.emit("setSize"),this._redraw()}},{key:"_requestRedraw",value:function(){var t=this;!0!==this.redrawRequested&&!1===this.renderingActive&&!0===this.allowRedraw&&(this.redrawRequested=!0,this._requestNextFrame(function(){t._redraw(!1)},0))}},{key:"_redraw",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(!0===this.allowRedraw){this.body.emitter.emit("initRedraw"),this.redrawRequested=!1,0!==this.canvas.frame.canvas.width&&0!==this.canvas.frame.canvas.height||this.canvas.setSize(),this.canvas.setTransform();var e=this.canvas.getContext(),i=this.canvas.frame.canvas.clientWidth,o=this.canvas.frame.canvas.clientHeight;if(e.clearRect(0,0,i,o),0===this.canvas.frame.clientWidth)return;e.save(),e.translate(this.body.view.translation.x,this.body.view.translation.y),e.scale(this.body.view.scale,this.body.view.scale),e.beginPath(),this.body.emitter.emit("beforeDrawing",e),e.closePath(),!1===t&&(!1===this.dragging||!0===this.dragging&&!1===this.options.hideEdgesOnDrag)&&this._drawEdges(e),(!1===this.dragging||!0===this.dragging&&!1===this.options.hideNodesOnDrag)&&this._drawNodes(e,t),e.beginPath(),this.body.emitter.emit("afterDrawing",e),e.closePath(),e.restore(),!0===t&&e.clearRect(0,0,i,o)}}},{key:"_resizeNodes",value:function(){this.canvas.setTransform();var t=this.canvas.getContext();t.save(),t.translate(this.body.view.translation.x,this.body.view.translation.y),t.scale(this.body.view.scale,this.body.view.scale);var e=this.body.nodes,i=void 0;for(var o in e)e.hasOwnProperty(o)&&(i=e[o],i.resize(t),i.updateBoundingBox(t,i.selected));t.restore()}},{key:"_drawNodes",value:function(t){for(var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=this.body.nodes,o=this.body.nodeIndices,n=void 0,s=[],r=this.canvas.DOMtoCanvas({x:-20,y:-20}),a=this.canvas.DOMtoCanvas({x:this.canvas.frame.canvas.clientWidth+20,y:this.canvas.frame.canvas.clientHeight+20}),h={top:r.y,left:r.x,bottom:a.y,right:a.x},d=0;d0&&void 0!==arguments[0]?arguments[0]:this.pixelRatio;!0===this.initialized&&(this.cameraState.previousWidth=this.frame.canvas.width/t,this.cameraState.previousHeight=this.frame.canvas.height/t,this.cameraState.scale=this.body.view.scale,this.cameraState.position=this.DOMtoCanvas({x:.5*this.frame.canvas.width/t,y:.5*this.frame.canvas.height/t}))}},{key:"_setCameraState",value:function(){if(void 0!==this.cameraState.scale&&0!==this.frame.canvas.clientWidth&&0!==this.frame.canvas.clientHeight&&0!==this.pixelRatio&&this.cameraState.previousWidth>0){var t=this.frame.canvas.width/this.pixelRatio/this.cameraState.previousWidth,e=this.frame.canvas.height/this.pixelRatio/this.cameraState.previousHeight,i=this.cameraState.scale;1!=t&&1!=e?i=.5*this.cameraState.scale*(t+e):1!=t?i=this.cameraState.scale*t:1!=e&&(i=this.cameraState.scale*e),this.body.view.scale=i;var o=this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight}),n={x:o.x-this.cameraState.position.x,y:o.y-this.cameraState.position.y};this.body.view.translation.x+=n.x*this.body.view.scale,this.body.view.translation.y+=n.y*this.body.view.scale}}},{key:"_prepareValue",value:function(t){if("number"==typeof t)return t+"px";if("string"==typeof t){if(-1!==t.indexOf("%")||-1!==t.indexOf("px"))return t;if(-1===t.indexOf("%"))return t+"px"}throw new Error("Could not use the value supplied for width or height:"+t)}},{key:"_create",value:function(){for(;this.body.container.hasChildNodes();)this.body.container.removeChild(this.body.container.firstChild);if(this.frame=document.createElement("div"),this.frame.className="vis-network",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.tabIndex=900,this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),this.frame.canvas.getContext)this._setPixelRatio(),this.setTransform();else{var t=document.createElement("DIV");t.style.color="red",t.style.fontWeight="bold",t.style.padding="10px",t.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(t)}this.body.container.appendChild(this.frame),this.body.view.scale=1,this.body.view.translation={x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight},this._bindHammer()}},{key:"_bindHammer",value:function(){var t=this;void 0!==this.hammer&&this.hammer.destroy(),this.drag={},this.pinch={},this.hammer=new h(this.frame.canvas),this.hammer.get("pinch").set({enable:!0}),this.hammer.get("pan").set({threshold:5,direction:h.DIRECTION_ALL}),d.onTouch(this.hammer,function(e){t.body.eventListeners.onTouch(e)}),this.hammer.on("tap",function(e){t.body.eventListeners.onTap(e)}),this.hammer.on("doubletap",function(e){t.body.eventListeners.onDoubleTap(e)}),this.hammer.on("press",function(e){t.body.eventListeners.onHold(e)}),this.hammer.on("panstart",function(e){t.body.eventListeners.onDragStart(e)}),this.hammer.on("panmove",function(e){t.body.eventListeners.onDrag(e)}),this.hammer.on("panend",function(e){t.body.eventListeners.onDragEnd(e)}),this.hammer.on("pinch",function(e){t.body.eventListeners.onPinch(e)}),this.frame.canvas.addEventListener("mousewheel",function(e){t.body.eventListeners.onMouseWheel(e)}),this.frame.canvas.addEventListener("DOMMouseScroll",function(e){t.body.eventListeners.onMouseWheel(e)}),this.frame.canvas.addEventListener("mousemove",function(e){t.body.eventListeners.onMouseMove(e)}),this.frame.canvas.addEventListener("contextmenu",function(e){t.body.eventListeners.onContext(e)}),this.hammerFrame=new h(this.frame),d.onRelease(this.hammerFrame,function(e){t.body.eventListeners.onRelease(e)})}},{key:"setSize",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.options.width,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.options.height;t=this._prepareValue(t),e=this._prepareValue(e);var i=!1,o=this.frame.canvas.width,n=this.frame.canvas.height,s=this.pixelRatio;if(this._setPixelRatio(),t!=this.options.width||e!=this.options.height||this.frame.style.width!=t||this.frame.style.height!=e)this._getCameraState(s),this.frame.style.width=t,this.frame.style.height=e,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=Math.round(this.frame.canvas.clientWidth*this.pixelRatio),this.frame.canvas.height=Math.round(this.frame.canvas.clientHeight*this.pixelRatio),this.options.width=t,this.options.height=e,this.canvasViewCenter={x:.5*this.frame.clientWidth,y:.5*this.frame.clientHeight},i=!0;else{var r=Math.round(this.frame.canvas.clientWidth*this.pixelRatio),a=Math.round(this.frame.canvas.clientHeight*this.pixelRatio);this.frame.canvas.width===r&&this.frame.canvas.height===a||this._getCameraState(s),
diff --git a/docs/js/menu-wc.js b/docs/js/menu-wc.js
index 6f8f4b82..776493ef 100644
--- a/docs/js/menu-wc.js
+++ b/docs/js/menu-wc.js
@@ -44,11 +44,11 @@ customElements.define('compodoc-menu', class extends HTMLElement {
LICENSE
-
-
- Dependencies
-
-
+
+
+ Dependencies
+
+
@@ -58,7 +58,7 @@ customElements.define('compodoc-menu', class extends HTMLElement {
Additional documentation
-
+
-
Getting Started
@@ -124,7 +124,7 @@ customElements.define('compodoc-menu', class extends HTMLElement {
-
+
-
OAuthModule
@@ -137,7 +137,7 @@ customElements.define('compodoc-menu', class extends HTMLElement {
Classes
-
+
-
AbstractValidationHandler
@@ -204,7 +204,7 @@ customElements.define('compodoc-menu', class extends HTMLElement {
Injectables
-
+
-
OAuthService
@@ -220,7 +220,7 @@ customElements.define('compodoc-menu', class extends HTMLElement {
Interceptors
-
+
-
DefaultOAuthInterceptor
@@ -233,7 +233,7 @@ customElements.define('compodoc-menu', class extends HTMLElement {
Interfaces
-
+
-
OidcDiscoveryDoc
@@ -258,7 +258,7 @@ customElements.define('compodoc-menu', class extends HTMLElement {
Miscellaneous
-
+
-
Functions
diff --git a/docs/js/search/lunr.min.js b/docs/js/search/lunr.min.js
index f45a81eb..34b279da 100644
--- a/docs/js/search/lunr.min.js
+++ b/docs/js/search/lunr.min.js
@@ -1 +1,6 @@
-!function(){var t,l,c,e,r,h,d,f,p,y,m,g,x,v,w,Q,k,S,E,L,b,P,T,O,I,i,n,s,z=function(e){var t=new z.Builder;return t.pipeline.add(z.trimmer,z.stopWordFilter,z.stemmer),t.searchPipeline.add(z.stemmer),e.call(t,t),t.build()};z.version="2.3.5",z.utils={},z.utils.warn=(t=this,function(e){t.console&&console.warn&&console.warn(e)}),z.utils.asString=function(e){return null==e?"":e.toString()},z.utils.clone=function(e){if(null==e)return e;for(var t=Object.create(null),r=Object.keys(e),i=0;i=this.length)return z.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},z.QueryLexer.prototype.width=function(){return this.pos-this.start},z.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},z.QueryLexer.prototype.backup=function(){this.pos-=1},z.QueryLexer.prototype.acceptDigitRun=function(){for(var e,t;47<(t=(e=this.next()).charCodeAt(0))&&t<58;);e!=z.QueryLexer.EOS&&this.backup()},z.QueryLexer.prototype.more=function(){return this.pos0){var c=e.utils.clone(r)||{};c.position=[a,l],c.index=s.length,s.push(new e.Token(i.slice(a,o),c))}a=o+1}}return s},e.tokenizer.separator=/[\s\-]+/,e.Pipeline=function(){this._stack=[]},e.Pipeline.registeredFunctions=Object.create(null),e.Pipeline.registerFunction=function(t,r){r in this.registeredFunctions&&e.utils.warn("Overwriting existing registered function: "+r),t.label=r,e.Pipeline.registeredFunctions[t.label]=t},e.Pipeline.warnIfFunctionNotRegistered=function(t){var r=t.label&&t.label in this.registeredFunctions;r||e.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",t)},e.Pipeline.load=function(t){var r=new e.Pipeline;return t.forEach(function(t){var i=e.Pipeline.registeredFunctions[t];if(!i)throw new Error("Cannot load unregistered function: "+t);r.add(i)}),r},e.Pipeline.prototype.add=function(){var t=Array.prototype.slice.call(arguments);t.forEach(function(t){e.Pipeline.warnIfFunctionNotRegistered(t),this._stack.push(t)},this)},e.Pipeline.prototype.after=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");i+=1,this._stack.splice(i,0,r)},e.Pipeline.prototype.before=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");this._stack.splice(i,0,r)},e.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);t!=-1&&this._stack.splice(t,1)},e.Pipeline.prototype.run=function(e){for(var t=this._stack.length,r=0;r1&&(se&&(r=n),s!=e);)i=r-t,n=t+Math.floor(i/2),s=this.elements[2*n];return s==e?2*n:s>e?2*n:sa?l+=2:o==a&&(t+=r[u+1]*i[l+1],u+=2,l+=2);return t},e.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},e.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,r=0;t0){var o,a=s.str.charAt(0);a in s.node.edges?o=s.node.edges[a]:(o=new e.TokenSet,s.node.edges[a]=o),1==s.str.length&&(o["final"]=!0),n.push({node:o,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(0!=s.editsRemaining){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new e.TokenSet;s.node.edges["*"]=u}if(0==s.str.length&&(u["final"]=!0),n.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&n.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),1==s.str.length&&(s.node["final"]=!0),s.str.length>=1){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new e.TokenSet;s.node.edges["*"]=l}1==s.str.length&&(l["final"]=!0),n.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var c,h=s.str.charAt(0),d=s.str.charAt(1);d in s.node.edges?c=s.node.edges[d]:(c=new e.TokenSet,s.node.edges[d]=c),1==s.str.length&&(c["final"]=!0),n.push({node:c,editsRemaining:s.editsRemaining-1,str:h+s.str.slice(2)})}}}return i},e.TokenSet.fromString=function(t){for(var r=new e.TokenSet,i=r,n=0,s=t.length;n=e;t--){var r=this.uncheckedNodes[t],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r["char"]]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}},e.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},e.Index.prototype.search=function(t){return this.query(function(r){var i=new e.QueryParser(t,r);i.parse()})},e.Index.prototype.query=function(t){for(var r=new e.Query(this.fields),i=Object.create(null),n=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),u=0;u1?this._b=1:this._b=e},e.Builder.prototype.k1=function(e){this._k1=e},e.Builder.prototype.add=function(t,r){var i=t[this._ref],n=Object.keys(this._fields);this._documents[i]=r||{},this.documentCount+=1;for(var s=0;s=this.length)return e.QueryLexer.EOS;var t=this.str.charAt(this.pos);return this.pos+=1,t},e.QueryLexer.prototype.width=function(){return this.pos-this.start},e.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},e.QueryLexer.prototype.backup=function(){this.pos-=1},e.QueryLexer.prototype.acceptDigitRun=function(){var t,r;do t=this.next(),r=t.charCodeAt(0);while(r>47&&r<58);t!=e.QueryLexer.EOS&&this.backup()},e.QueryLexer.prototype.more=function(){return this.pos1&&(t.backup(),t.emit(e.QueryLexer.TERM)),t.ignore(),t.more())return e.QueryLexer.lexText},e.QueryLexer.lexEditDistance=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.EDIT_DISTANCE),e.QueryLexer.lexText},e.QueryLexer.lexBoost=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.BOOST),e.QueryLexer.lexText},e.QueryLexer.lexEOS=function(t){t.width()>0&&t.emit(e.QueryLexer.TERM)},e.QueryLexer.termSeparator=e.tokenizer.separator,e.QueryLexer.lexText=function(t){for(;;){var r=t.next();if(r==e.QueryLexer.EOS)return e.QueryLexer.lexEOS;if(92!=r.charCodeAt(0)){if(":"==r)return e.QueryLexer.lexField;if("~"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexEditDistance;if("^"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexBoost;if("+"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if("-"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if(r.match(e.QueryLexer.termSeparator))return e.QueryLexer.lexTerm}else t.escapeCharacter()}},e.QueryParser=function(t,r){this.lexer=new e.QueryLexer(t),this.query=r,this.currentClause={},this.lexemeIdx=0},e.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var t=e.QueryParser.parseClause;t;)t=t(this);return this.query},e.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},e.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},e.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},e.QueryParser.parseClause=function(t){var r=t.peekLexeme();if(void 0!=r)switch(r.type){case e.QueryLexer.PRESENCE:return e.QueryParser.parsePresence;case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(i+=" with value '"+r.str+"'"),new e.QueryParseError(i,r.start,r.end)}},e.QueryParser.parsePresence=function(t){var r=t.consumeLexeme();if(void 0!=r){switch(r.str){case"-":t.currentClause.presence=e.Query.presence.PROHIBITED;break;case"+":t.currentClause.presence=e.Query.presence.REQUIRED;break;default:var i="unrecognised presence operator'"+r.str+"'";throw new e.QueryParseError(i,r.start,r.end)}var n=t.peekLexeme();if(void 0==n){var i="expecting term or field, found nothing";throw new e.QueryParseError(i,r.start,r.end)}switch(n.type){case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expecting term or field, found '"+n.type+"'";throw new e.QueryParseError(i,n.start,n.end)}}},e.QueryParser.parseField=function(t){var r=t.consumeLexeme();if(void 0!=r){if(t.query.allFields.indexOf(r.str)==-1){var i=t.query.allFields.map(function(e){return"'"+e+"'"}).join(", "),n="unrecognised field '"+r.str+"', possible fields: "+i;throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.fields=[r.str];var s=t.peekLexeme();if(void 0==s){var n="expecting term, found nothing";throw new e.QueryParseError(n,r.start,r.end)}switch(s.type){case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var n="expecting term, found '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseTerm=function(t){var r=t.consumeLexeme();if(void 0!=r){t.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(t.currentClause.usePipeline=!1);var i=t.peekLexeme();if(void 0==i)return void t.nextClause();switch(i.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+i.type+"'";throw new e.QueryParseError(n,i.start,i.end)}}},e.QueryParser.parseEditDistance=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="edit distance must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.editDistance=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseBoost=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="boost must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.boost=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.lunr=t()}(this,function(){return e})}();
diff --git a/docs/js/search/search_index.js b/docs/js/search/search_index.js
index a4d86536..75eb74b8 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.5","fields":["title","body"],"fieldVectors":[["title/classes/AbstractValidationHandler.html",[0,0.079,1,2.69]],["body/classes/AbstractValidationHandler.html",[0,0.075,1,2.549,2,0.761,3,0.452,4,0.504,5,0.452,6,3.354,7,3.937,8,1.382,9,1.467,10,1.658,11,1.467,12,1.878,13,2.773,14,2.573,15,1.756,16,3.382,17,2.203,18,1.17,19,2.773,20,3.382,21,0.561,22,1.467,23,4.13,24,3.429,25,3.318,26,3.05,27,2.549,28,1.722,29,4.043,30,0.895,31,2.679,32,2.773,33,2.074,34,3.68,35,1.828,36,1.323,37,1.434,38,0.02,39,1.455,40,0.895,41,1.17,42,2.549,43,1.848,44,2.379,45,2.773,46,1.693,47,2.679,48,2.773,49,3.68,50,2.773,51,1.896,52,2.773,53,2.773,54,1.633,55,2.363,56,2.773,57,3.959,58,2.679,59,3.796,60,3.619,61,3.05,62,1.36,63,1.583,64,0.933,65,2.549,66,2.297,67,2.636,68,0.724,69,1.858,70,1.858,71,2.046,72,0.487,73,1.257,74,1.094,75,1.156,76,1.156,77,1.156,78,1.583,79,1.858,80,2.046,81,2.046,82,1.094,83,0.886,84,2.063,85,1.858,86,2.773,87,2.046,88,2.046,89,2.046,90,2.046,91,2.046,92,2.046,93,0.622,94,2.046,95,2.046,96,2.046,97,1.583,98,4.052,99,2.046,100,4.052,101,2.046,102,2.046,103,2.046,104,1.393,105,3.654,106,2.046,107,2.046,108,2.046,109,1.858,110,1.036,111,2.046,112,1.708,113,2.046,114,2.046,115,0.007,116,0.01,117,0.007]],["title/classes/CryptoHandler.html",[0,0.079,118,3.223]],["body/classes/CryptoHandler.html",[0,0.095,2,1.45,3,0.86,4,0.96,5,0.86,6,3.659,8,2.631,9,1.871,10,1.695,20,3.948,21,1.068,22,2.273,27,3.948,28,1.857,29,4.252,30,0.86,37,1.378,38,0.018,39,1.246,40,0.86,41,1.125,42,3.251,43,1.776,44,2.273,72,0.519,115,0.013,116,0.016,117,0.013,118,4.729,119,5.311,120,5.1,121,5.1,122,4.373,123,5.1]],["title/interceptors/DefaultOAuthInterceptor.html",[124,3.619,125,2.927]],["body/interceptors/DefaultOAuthInterceptor.html",[0,0.065,3,0.587,4,0.655,5,0.587,14,1.687,21,0.729,22,1.771,28,0.894,30,0.815,37,1.305,38,0.02,39,1.18,40,0.815,41,1.321,43,1.212,55,2.852,68,1.868,72,0.354,84,2.861,93,0.808,104,2.325,115,0.009,116,0.013,117,0.009,125,3.348,126,2.983,127,5.544,128,3.479,129,5.544,130,2.491,131,3.479,132,2.086,133,4.754,134,3.538,135,4.754,136,3.538,137,3.479,138,4.14,139,2.983,140,5.135,141,4.573,142,5.135,143,3.479,144,4.754,145,3.276,146,3.348,147,2.983,148,2.056,149,1.094,150,3.078,151,2.413,152,2.983,153,2.983,154,4.14,155,2.413,156,2.983,157,1.795,158,2.413,159,3.479,160,3.479,161,2.413,162,0.85,163,1.151,164,2.218,165,2.657,166,3.479,167,2.657,168,4.153,169,2.983,170,1.421,171,3.479,172,3.479,173,2.983,174,2.983,175,2.983,176,3.466,177,0.808,178,2.983,179,2.983,180,4.754,181,2.983,182,2.983,183,3.078,184,2.983,185,4.14,186,1.372,187,2.983,188,4.14,189,3.479,190,2.983,191,3.479,192,3.479,193,2.983]],["title/classes/JwksValidationHandler.html",[0,0.079,194,2.494]],["body/classes/JwksValidationHandler.html",[0,0.036,1,3.497,2,0.552,3,0.328,4,0.366,5,0.328,6,3.085,8,1.002,9,1.143,10,1.091,16,1.987,18,0.428,20,2.847,21,0.407,22,1.143,23,3.098,24,2.672,25,2.161,26,2.847,27,2.488,28,1.745,29,3.635,30,0.993,32,1.347,33,1.359,34,2.161,35,2.041,36,0.643,37,1.483,38,0.02,39,1.393,40,0.993,41,1.21,42,1.987,43,1.911,44,2.013,45,1.347,46,1.27,48,1.347,49,3.621,50,1.347,51,1.561,52,1.347,53,1.347,54,0.793,55,1.841,56,1.347,57,3.476,59,2.847,60,1.238,61,2.488,62,0.552,63,0.643,64,1.359,65,1.238,66,1.665,67,2.694,68,0.842,72,0.198,74,0.793,78,3.241,79,1.347,86,1.347,93,0.451,104,2.103,109,3.392,110,2.02,115,0.01,116,0.013,117,0.005,122,2.672,163,1.478,164,1.238,168,1.347,194,1.841,195,4.477,196,2.66,197,1.227,198,3.83,199,3.116,200,2.161,201,2.916,202,0.761,203,2.161,204,1.167,205,1.055,206,1.987,207,1.206,208,3.903,209,3.903,210,3.116,211,1.928,212,3.116,213,3.116,214,3.116,215,3.116,216,3.116,217,3.116,218,3.116,219,3.116,220,3.116,221,3.116,222,3.116,223,1.942,224,3.116,225,0.942,226,3.116,227,3.098,228,3.116,229,2.672,230,3.116,231,3.116,232,2.161,233,1.942,234,3.116,235,1.942,236,1.942,237,3.116,238,5.703,239,1.942,240,1.273,241,4.467,242,1.942,243,1.942,244,1.942,245,1.942,246,1.942,247,1.942,248,1.942,249,3.116,250,1.942,251,1.483,252,3.116,253,3.903,254,4.194,255,1.942,256,1.942,257,3.116,258,3.116,259,1.942,260,1.942,261,2.98,262,1.942,263,1.942,264,1.942,265,5.703,266,1.942,267,1.942,268,1.942,269,1.942,270,3.116,271,3.116,272,3.903,273,1.942,274,1.942,275,1.942,276,1.665,277,1.942,278,3.903,279,3.098,280,4.467,281,4.467,282,2.161,283,1.238,284,1.07,285,1.942,286,1.942,287,1.942,288,1.942,289,1.942,290,1.942,291,1.942,292,1.085,293,1.483,294,0.611,295,3.116,296,1.942,297,3.116,298,1.942,299,1.942,300,1.942,301,3.116,302,1.942,303,1.942,304,1.942,305,1.665,306,1.942,307,1.942,308,1.942,309,1.717,310,1.942,311,1.942,312,1.483,313,1.942,314,1.942,315,1.942,316,1.942,317,1.942,318,1.942,319,1.942,320,1.942]],["title/classes/LoginOptions.html",[0,0.079,321,2.047]],["body/classes/LoginOptions.html",[0,0.087,2,0.597,3,0.56,4,0.396,5,0.354,9,0.771,10,1.51,11,0.771,12,1.36,15,1.097,18,1.192,21,0.44,28,1.918,30,0.912,33,2.043,35,0.96,38,0.02,40,0.858,41,1.414,44,0.771,46,1.445,51,0.992,54,1.354,62,1.536,63,0.695,64,0.732,72,0.597,73,1.599,74,1.354,75,0.907,76,0.907,77,0.907,82,1.354,83,1.545,93,1.255,115,0.005,116,0.009,117,0.005,132,0.732,149,1.779,162,0.81,163,1.097,170,1.679,177,0.77,186,1.327,197,1.043,201,0.96,202,1.32,204,0.628,205,0.568,207,1.283,211,0.907,225,1.609,240,1.354,292,1.882,294,0.66,321,1.609,322,1.084,323,0.597,324,1.801,325,2.1,326,1.879,327,1.993,328,2.121,329,2.121,330,1.879,331,2.121,332,2.1,333,1.097,334,2.844,335,1.599,336,2.395,337,1.711,338,1.354,339,1.711,340,1.516,341,1.711,342,2.1,343,1.609,344,0.897,345,2.194,346,2.264,347,1.516,348,1.609,349,1.609,350,1.516,351,1.711,352,1.2,353,2.409,354,1.609,355,1.711,356,1.711,357,2.62,358,2.1,359,2.015,360,1.711,361,1.155,362,1.609,363,1.711,364,2.788,365,1.907,366,2.1,367,1.516,368,1.993,369,2.1,370,1.711,371,1.432,372,1.711,373,1.516,374,1.609,375,1.432,376,1.711,377,1.711,378,2.1,379,1.432,380,1.711,381,2.465,382,3.115,383,0.96,384,0.732,385,1.084,386,1.711,387,0.96,388,0.771,389,0.858,390,0.96,391,0.96,392,1.019,393,0.96,394,1.084,395,2.623,396,1.084,397,1.084,398,1.084,399,1.084,400,1.084,401,0.907,402,1.084,403,0.695,404,0.858,405,0.858,406,0.858,407,1.084,408,1.019,409,1.084,410,0.732,411,1.084,412,1.084,413,0.96,414,2.623,415,0.96,416,1.084,417,1.019,418,1.084,419,1.084,420,1.084,421,1.711,422,1.432,423,1.711,424,1.679,425,1.609,426,1.084,427,1.019,428,1.084,429,1.084,430,1.019,431,0.695,432,0.66,433,1.084,434,0.96,435,1.084,436,0.628,437,1.019,438,0.771,439,1.084,440,1.084,441,1.084,442,1.084,443,1.084,444,1.084,445,1.084,446,1.084,447,1.084,448,1.084,449,1.084,450,1.084,451,1.084,452,1.084,453,1.084,454,1.084,455,1.084,456,1.084,457,1.084,458,1.084,459,1.084,460,1.084,461,1.084,462,1.084,463,1.084,464,1.084,465,1.084,466,1.084]],["title/classes/NullValidationHandler.html",[0,0.079,467,2.927]],["body/classes/NullValidationHandler.html",[0,0.083,2,1.266,3,0.751,4,0.839,5,0.751,6,3.706,8,2.298,9,1.634,12,2.076,14,2.76,16,3.628,21,0.933,22,2.089,26,3.628,30,0.96,37,1.539,38,0.019,39,1.391,40,0.96,41,1.255,43,1.983,44,2.426,57,4.291,65,3.628,68,1.204,72,0.453,85,3.947,104,1.983,115,0.012,116,0.015,117,0.012,164,3.999,196,3.487,335,1.79,467,3.947,468,5.379,469,4.881,470,4.346,471,5.692,472,4.346,473,5.692,474,4.454,475,4.454,476,4.454,477,4.454]],["title/classes/OAuthErrorEvent.html",[0,0.079,478,2.494]],["body/classes/OAuthErrorEvent.html",[0,0.12,2,1.161,3,1.015,4,0.769,5,0.689,10,0.998,30,0.689,37,1.104,38,0.02,39,0.998,40,1.122,41,0.901,46,1.94,64,2.096,72,0.676,115,0.011,116,0.014,117,0.011,130,2.777,206,4.078,410,2.096,478,3.18,479,2.604,480,4.238,481,4.174,482,4.436,483,4.174,484,4.086,485,2.414,486,2.604,487,2.604,488,2.414,489,2.604,490,2.604,491,2.414,492,2.604,493,2.414,494,2.604,495,2.604,496,2.604,497,2.604,498,2.604,499,2.414,500,2.414,501,2.604,502,2.414,503,2.604,504,2.414,505,2.414,506,2.108,507,2.833,508,2.604,509,4.436,510,4.174,511,2.604]],["title/classes/OAuthEvent.html",[0,0.079,480,2.69]],["body/classes/OAuthEvent.html",[0,0.121,2,1.188,3,1.027,4,0.787,5,0.705,10,1.021,30,0.705,37,1.13,38,0.02,39,1.021,40,1.13,41,0.922,46,1.553,64,1.456,72,0.681,115,0.011,116,0.014,117,0.011,130,2.818,206,3.879,410,2.12,478,2.469,479,2.664,480,4.269,481,4.22,482,4.461,483,2.898,485,2.469,486,2.664,487,2.664,488,2.469,489,2.664,490,2.664,491,2.469,492,2.664,493,2.469,494,2.664,495,2.664,496,2.664,497,2.664,498,2.664,499,2.469,500,2.469,501,2.664,502,2.469,503,2.664,504,2.469,505,2.469,506,2.156,507,2.898,508,2.664,509,4.475,510,4.22,511,2.664,512,4.179]],["title/classes/OAuthInfoEvent.html",[0,0.079,511,2.69]],["body/classes/OAuthInfoEvent.html",[0,0.12,2,1.177,3,1.127,4,0.78,5,0.699,10,1.012,30,0.699,37,1.119,38,0.02,39,1.012,40,1.127,41,0.913,46,1.543,64,1.442,72,0.679,115,0.011,116,0.014,117,0.011,130,2.802,206,4.099,410,2.11,478,2.447,479,2.64,480,4.256,481,4.201,482,4.451,483,2.872,485,2.447,486,2.64,487,2.64,488,2.447,489,2.64,490,2.64,491,2.447,492,2.64,493,2.447,494,2.64,495,2.64,496,2.64,497,2.64,498,2.64,499,2.447,500,2.447,501,2.64,502,2.447,503,2.64,504,2.447,505,2.447,506,2.137,507,2.872,508,2.64,509,4.459,510,4.201,511,3.461,513,4.141]],["title/classes/OAuthLogger.html",[0,0.079,393,1.929]],["body/classes/OAuthLogger.html",[0,0.089,2,0.621,3,0.805,4,0.412,5,0.369,9,0.802,10,1.704,11,1.256,12,0.723,15,0.723,18,0.93,21,0.458,22,1.256,28,1.922,30,0.874,33,1.662,37,1.401,38,0.02,39,1.266,40,0.874,41,1.143,43,1.805,44,0.802,46,1.562,51,1.023,54,1.398,62,1.357,63,0.723,64,0.761,72,0.605,73,1.728,74,1.398,75,0.943,76,0.943,77,0.943,82,0.893,83,1.396,93,0.979,115,0.006,116,0.009,117,0.006,132,0.761,149,1.629,162,0.534,163,1.396,170,1.398,177,0.507,186,1.199,197,0.687,201,0.999,202,1.031,204,0.653,205,0.591,225,1.66,240,0.893,292,1.469,294,0.687,321,1.06,322,1.128,326,0.999,327,1.06,328,1.128,329,1.128,330,0.999,331,1.128,333,0.723,334,2.315,335,1.326,336,1.949,337,1.128,338,0.893,339,1.128,340,0.999,341,1.128,343,1.06,344,0.591,345,2.06,346,1.66,347,0.999,348,1.06,349,1.06,350,0.999,351,1.128,352,0.88,353,2.463,354,1.06,355,1.128,356,1.128,359,1.477,360,1.128,361,0.761,362,1.06,363,2.836,364,2.176,365,1.398,367,0.999,368,1.66,370,1.128,371,0.943,372,1.128,373,0.999,374,1.06,375,0.943,376,1.128,377,1.128,379,0.943,380,1.128,381,2.513,382,3.429,383,1.564,384,1.192,385,1.766,386,2.176,387,1.564,388,1.256,389,1.398,390,1.564,391,1.564,392,1.66,393,1.564,394,1.766,395,3.465,396,1.766,397,1.766,398,1.766,399,1.766,400,1.128,401,0.943,402,1.128,403,0.723,404,0.893,405,0.893,406,0.893,407,1.128,408,1.06,409,1.128,410,0.761,411,1.128,412,1.128,413,0.999,414,2.674,415,0.999,416,1.128,417,1.06,418,1.128,419,1.128,420,1.128,421,1.766,422,1.477,423,1.766,424,1.722,425,1.66,426,1.128,427,1.06,428,1.128,429,1.128,430,1.06,431,0.723,432,0.687,433,1.128,434,0.999,435,1.128,436,0.653,437,1.06,438,0.802,439,1.128,440,1.128,441,1.128,442,1.128,443,1.128,444,1.128,445,1.128,446,1.128,447,1.128,448,1.128,449,1.128,450,1.128,451,1.128,452,1.128,453,1.128,454,1.128,455,1.128,456,1.128,457,1.128,458,1.128,459,1.128,460,1.128,461,1.128,462,1.128,463,1.128,464,1.128,465,1.128,466,1.128,514,3.423,515,2.613,516,3.423,517,2.186,518,4.443,519,2.186,520,2.186,521,2.186,522,2.186]],["title/modules/OAuthModule.html",[523,3.223,524,2.69]],["body/modules/OAuthModule.html",[0,0.067,3,0.603,4,0.673,5,0.603,7,2.479,12,1.627,22,1.312,30,0.603,35,1.634,37,0.966,38,0.02,39,0.873,40,0.603,41,0.788,43,1.245,68,1.962,72,0.364,93,0.83,104,1.245,115,0.009,116,0.013,117,0.009,118,3.756,119,3.065,125,3.411,132,1.713,134,2.906,136,3.753,148,2.112,149,1.547,150,3.862,151,2.479,152,3.065,157,1.844,162,0.873,163,1.183,164,4.049,165,2.729,167,2.729,177,0.83,186,1.722,194,2.906,195,3.065,196,2.385,211,1.543,388,2.468,393,2.248,410,1.713,467,3.9,468,3.065,524,3.585,525,2.729,526,4.919,527,3.575,528,4.919,529,4.919,530,3.575,531,6.058,532,3.575,533,2.902,534,5.624,535,4.294,536,4.919,537,4.919,538,2.729,539,3.756,540,3.575,541,3.135,542,3.575,543,3.575,544,3.575,545,4.218,546,4.218,547,3.575,548,2.729,549,2.479,550,3.065,551,2.279,552,4.218,553,5.194,554,3.575,555,3.575]],["title/classes/OAuthModuleConfig.html",[0,0.079,136,2.494]],["body/classes/OAuthModuleConfig.html",[0,0.115,2,1.426,3,0.846,4,0.945,5,0.846,10,1.498,21,1.05,28,1.289,30,0.846,38,0.019,40,0.846,63,1.66,72,0.624,93,1.165,115,0.013,116,0.016,117,0.013,136,3.622,170,2.504,177,1.165,183,3.908,202,1.225,207,2.372,335,1.577,556,5.257,557,4.301,558,4.592,559,5.056,560,5.016,561,3.478,562,4.301,563,4.301,564,4.301,565,3.83,566,3.198,567,3.478,568,3.478,569,4.301]],["title/classes/OAuthNoopResourceServerErrorHandler.html",[0,0.079,541,2.69]],["body/classes/OAuthNoopResourceServerErrorHandler.html",[0,0.113,2,1.384,3,0.822,4,0.917,5,0.822,8,2.512,10,1.471,14,2.919,21,1.02,22,2.209,30,0.822,37,1.316,38,0.019,39,1.19,40,0.822,41,1.074,43,1.696,68,1.627,72,0.613,104,1.696,115,0.013,116,0.016,117,0.013,134,3.861,145,4.034,155,4.865,157,2.512,158,3.377,162,1.471,163,1.992,541,3.837,570,5.162,571,5.162,572,4.99,573,4.869,574,4.175,575,4.175,576,4.175]],["title/classes/OAuthResourceServerConfig.html",[0,0.079,559,3.223]],["body/classes/OAuthResourceServerConfig.html",[0,0.109,2,1.314,3,0.78,4,0.871,5,0.78,10,1.424,21,0.968,28,1.188,30,1.077,38,0.019,40,1.077,41,1.478,63,1.928,72,0.593,93,1.353,115,0.012,116,0.015,117,0.012,136,2.731,170,2.606,177,1.073,183,4.404,202,1.424,207,2.255,335,1.833,357,2.947,556,5.747,557,3.964,558,3.206,559,4.874,561,4.042,562,4.998,563,4.998,564,4.998,565,4.45,566,3.715,567,4.426,568,4.042,569,5.473,577,4.623,578,4.623,579,4.623]],["title/classes/OAuthResourceServerErrorHandler.html",[0,0.079,134,2.494]],["body/classes/OAuthResourceServerErrorHandler.html",[0,0.113,2,1.384,3,0.822,4,0.917,5,0.822,8,2.512,10,1.668,14,2.361,21,1.02,22,2.209,30,0.822,37,1.316,38,0.019,39,1.19,40,0.822,41,1.074,43,1.696,68,1.627,72,0.613,104,1.696,115,0.013,116,0.016,117,0.013,134,3.861,145,4.034,155,4.865,157,2.512,158,3.377,162,1.471,163,1.992,541,3.104,570,5.162,571,5.162,572,4.99,574,4.175,575,4.175,576,4.175,580,4.869]],["title/classes/OAuthStorage.html",[0,0.079,132,1.47]],["body/classes/OAuthStorage.html",[0,0.091,2,0.65,3,0.598,4,0.431,5,0.386,9,0.839,10,1.671,11,0.839,12,0.757,15,0.757,18,0.958,21,0.479,22,1.301,28,1.943,30,0.733,33,1.704,37,1.174,38,0.02,39,1.061,40,0.733,41,0.958,43,1.512,44,0.839,46,1.504,51,1.06,54,1.448,62,1.39,63,0.757,64,0.797,72,0.614,73,1.664,74,1.448,75,0.987,76,0.987,77,0.987,82,0.934,83,1.618,93,1.008,115,0.006,116,0.009,117,0.006,132,1.235,149,1.538,162,0.559,163,0.757,170,1.448,177,0.531,186,1.234,197,0.719,201,2.235,202,1.061,204,0.684,205,0.618,225,1.719,240,0.934,292,1.512,294,0.719,321,1.109,322,1.18,326,1.045,327,1.109,328,1.18,329,1.18,330,1.045,331,1.18,333,0.757,334,2.372,335,1.538,336,1.997,337,1.18,338,0.934,339,1.18,340,1.045,341,1.18,343,1.109,344,0.618,345,2.111,346,1.719,347,1.045,348,1.109,349,1.109,350,1.045,351,1.18,352,0.911,353,2.524,354,1.109,355,1.18,356,1.18,359,1.53,360,1.18,361,0.797,362,1.109,363,1.18,364,2.24,365,1.448,367,1.045,368,1.719,370,1.18,371,0.987,372,1.18,373,1.045,374,1.109,375,0.987,376,1.18,377,1.18,379,0.987,380,1.18,381,2.567,382,3.327,383,1.045,384,0.797,385,1.18,386,2.24,387,1.045,388,0.839,389,0.934,390,1.045,391,1.045,392,1.109,393,1.045,394,1.18,395,2.731,396,1.18,397,1.18,398,1.18,399,1.18,400,1.829,401,1.53,402,1.829,403,1.173,404,1.448,405,1.448,406,1.448,407,1.829,408,1.719,409,1.829,410,1.235,411,1.829,412,1.829,413,1.984,414,2.731,415,1.045,416,1.18,417,1.109,418,1.18,419,1.18,420,1.18,421,1.829,422,1.53,423,1.829,424,1.773,425,1.719,426,1.18,427,1.109,428,1.18,429,1.18,430,1.109,431,0.757,432,0.719,433,1.18,434,1.045,435,1.18,436,0.684,437,1.109,438,0.839,439,1.18,440,1.18,441,1.18,442,1.18,443,1.18,444,1.18,445,1.18,446,1.18,447,1.18,448,1.18,449,1.18,450,1.18,451,1.18,452,1.18,453,1.18,454,1.18,455,1.18,456,1.18,457,1.18,458,1.18,459,1.18,460,1.18,461,1.18,462,1.18,463,1.18,464,1.18,465,1.18,466,1.18,581,3.545,582,3.545,583,3.545,584,2.287,585,2.287,586,2.287]],["title/classes/OAuthSuccessEvent.html",[0,0.079,508,2.69]],["body/classes/OAuthSuccessEvent.html",[0,0.12,2,1.177,3,1.127,4,0.78,5,0.699,10,1.012,30,0.699,37,1.119,38,0.02,39,1.012,40,1.127,41,0.913,46,1.543,64,1.442,72,0.679,115,0.011,116,0.014,117,0.011,130,2.802,206,4.099,410,2.11,478,2.447,479,2.64,480,4.256,481,4.201,482,4.451,483,2.872,485,2.447,486,2.64,487,2.64,488,2.447,489,2.64,490,2.64,491,2.447,492,2.64,493,2.447,494,2.64,495,2.64,496,2.64,497,2.64,498,2.64,499,2.447,500,2.447,501,2.64,502,2.447,503,2.64,504,2.447,505,2.447,506,2.137,507,2.872,508,3.461,509,4.459,510,4.201,511,2.64,587,4.141]],["title/interfaces/OidcDiscoveryDoc.html",[73,1.327,437,2.047]],["body/interfaces/OidcDiscoveryDoc.html",[0,0.084,3,0.529,4,0.368,5,0.33,9,0.718,10,1.478,11,0.718,12,0.647,15,0.647,18,0.865,21,0.41,28,1.969,33,1.563,38,0.02,40,1.204,44,0.718,46,1.395,51,0.937,54,1.28,62,1.275,63,0.647,64,0.681,72,0.582,73,1.544,74,1.28,75,0.844,76,0.844,77,0.844,82,0.799,83,1.298,93,0.911,115,0.005,116,0.008,117,0.005,132,0.681,149,1.411,162,0.478,163,0.647,170,1.832,177,0.454,186,1.115,197,0.615,201,0.894,202,0.958,204,0.937,205,0.847,207,1.213,225,1.52,240,0.799,292,1.366,294,0.615,321,0.949,322,1.01,326,0.894,327,0.949,328,1.01,329,1.01,330,0.894,331,1.01,333,0.647,334,2.175,335,1.233,336,1.832,337,1.01,338,0.799,339,1.01,340,0.894,341,1.01,343,0.949,344,0.529,345,1.936,346,1.52,347,0.894,348,0.949,349,0.949,350,0.894,351,1.01,352,0.806,353,2.024,354,0.949,355,1.01,356,1.01,359,1.353,360,1.01,361,0.681,362,0.949,363,1.01,364,2.024,365,1.28,367,0.894,368,1.52,370,1.01,371,0.844,372,1.01,373,0.894,374,0.949,375,0.844,376,1.01,377,1.01,379,0.844,380,1.01,381,2.381,382,3.043,383,0.894,384,0.681,385,1.01,386,1.618,387,0.894,388,0.718,389,0.799,390,0.894,391,0.894,392,0.949,393,0.894,394,1.01,395,2.533,396,1.01,397,1.01,398,1.01,399,1.01,400,1.01,401,0.844,402,1.01,403,0.647,404,0.799,405,0.799,406,0.799,407,1.01,408,0.949,409,1.01,410,0.681,411,1.01,412,1.01,413,0.894,414,2.703,415,0.894,416,1.01,417,0.949,418,1.01,419,1.01,420,1.01,421,1.618,422,1.353,423,1.618,424,1.832,425,1.52,426,1.01,427,0.949,428,1.01,429,1.01,430,0.949,431,0.647,432,0.615,433,1.01,434,0.894,435,1.01,436,0.937,437,1.52,438,1.646,439,2.315,440,2.315,441,2.315,442,2.315,443,2.315,444,2.315,445,2.315,446,2.315,447,2.315,448,2.315,449,2.315,450,2.315,451,2.315,452,2.315,453,2.315,454,2.315,455,2.315,456,2.315,457,2.315,458,2.315,459,2.315,460,2.315,461,2.315,462,2.315,463,2.315,464,2.315,465,2.315,466,2.315,588,1.156]],["title/interfaces/ParsedIdToken.html",[73,1.327,417,2.047]],["body/interfaces/ParsedIdToken.html",[0,0.093,3,0.614,4,0.446,5,0.399,9,0.868,10,1.562,11,0.868,12,0.783,15,0.783,18,0.978,21,0.496,28,1.942,33,1.735,38,0.02,40,0.958,44,0.868,46,1.78,51,1.326,54,1.812,62,1.416,63,0.783,64,0.824,72,0.621,73,1.691,74,2.196,75,1.022,76,2.15,77,2.15,82,0.966,83,1.468,93,1.03,115,0.006,116,0.009,117,0.006,132,0.824,149,1.566,162,0.578,163,0.783,170,1.487,177,0.55,186,1.261,197,0.744,201,1.082,202,1.084,204,0.708,205,0.64,207,1.408,225,2.415,240,0.966,292,1.545,294,0.744,321,1.148,322,1.221,326,1.082,327,1.148,328,1.221,329,1.221,330,1.082,331,1.221,333,0.783,334,2.415,335,1.395,336,2.034,337,1.221,338,0.966,339,1.221,340,1.082,341,1.221,343,1.148,344,0.64,345,2.15,346,1.765,347,1.082,348,1.148,349,1.148,350,1.082,351,1.221,352,0.936,353,2.289,354,1.148,355,1.221,356,1.221,359,1.571,360,1.221,361,0.824,362,1.148,363,1.221,364,2.289,365,1.487,367,1.082,368,2.151,370,1.221,371,1.022,372,1.221,373,1.082,374,1.148,375,1.022,376,1.221,377,1.221,379,1.022,380,1.221,381,2.607,382,3.231,383,1.082,384,0.824,385,1.221,386,1.878,387,1.082,388,0.868,389,0.966,390,1.082,391,1.082,392,1.148,393,1.082,394,1.221,395,2.774,396,1.221,397,1.221,398,1.221,399,1.221,400,1.221,401,1.022,402,1.221,403,0.783,404,0.966,405,0.966,406,0.966,407,1.221,408,1.148,409,1.221,410,0.824,411,1.221,412,1.221,413,1.082,414,2.93,415,1.082,416,1.221,417,1.765,418,2.57,419,2.57,420,2.57,421,1.878,422,1.571,423,1.878,424,1.812,425,1.765,426,1.221,427,1.148,428,1.221,429,1.221,430,1.148,431,0.783,432,0.744,433,1.221,434,1.082,435,1.221,436,0.708,437,1.148,438,0.868,439,1.221,440,1.221,441,1.221,442,1.221,443,1.221,444,1.221,445,1.221,446,1.221,447,1.221,448,1.221,449,1.221,450,1.221,451,1.221,452,1.221,453,1.221,454,1.221,455,1.221,456,1.221,457,1.221,458,1.221,459,1.221,460,1.221,461,1.221,462,1.221,463,1.221,464,1.221,465,1.221,466,1.221,588,1.398]],["title/classes/ReceivedTokens.html",[0,0.079,381,2.047]],["body/classes/ReceivedTokens.html",[0,0.093,2,0.677,3,0.617,4,0.449,5,0.402,9,0.874,10,1.565,11,0.874,12,0.788,15,0.788,18,0.982,21,0.499,28,1.938,30,0.843,33,1.741,38,0.02,40,0.843,41,1.102,44,0.874,46,1.618,51,1.094,54,1.819,62,1.618,63,0.788,64,0.83,72,0.623,73,1.696,74,2.041,75,1.923,76,1.028,77,1.028,82,0.973,83,1.654,93,1.034,115,0.006,116,0.009,117,0.006,132,0.83,149,1.572,162,0.582,163,0.788,170,1.494,177,0.553,186,1.421,197,0.749,201,1.089,202,1.088,204,0.712,205,0.644,207,1.415,225,1.774,240,0.973,292,1.552,294,1.151,321,1.155,322,1.229,326,1.089,327,1.155,328,1.229,329,1.229,330,1.089,331,1.229,333,0.788,334,2.424,335,1.401,336,2.041,337,1.229,338,0.973,339,1.229,340,1.089,341,1.229,343,1.155,344,0.644,345,2.559,346,1.774,347,1.089,348,1.155,349,1.155,350,1.089,351,1.229,352,0.94,353,2.298,354,1.155,355,1.229,356,1.229,359,1.579,360,1.229,361,0.83,362,1.155,363,1.229,364,2.298,365,1.494,367,1.089,368,1.774,370,1.229,371,1.028,372,1.229,373,1.089,374,1.155,375,1.028,376,1.229,377,1.229,379,1.028,380,1.229,381,2.76,382,3.237,383,1.089,384,0.83,385,1.229,386,1.888,387,1.089,388,0.874,389,0.973,390,1.089,391,1.089,392,1.155,393,1.089,394,1.229,395,2.783,396,1.229,397,1.229,398,1.229,399,1.229,400,1.229,401,1.028,402,1.229,403,0.788,404,0.973,405,0.973,406,0.973,407,1.229,408,1.155,409,1.229,410,0.83,411,1.229,412,1.229,413,1.089,414,2.937,415,1.672,416,2.298,417,1.155,418,1.229,419,1.229,420,1.229,421,1.888,422,1.579,423,1.888,424,1.819,425,1.774,426,1.229,427,1.155,428,1.229,429,1.229,430,1.155,431,0.788,432,0.749,433,1.229,434,1.089,435,1.229,436,0.712,437,1.155,438,0.874,439,1.229,440,1.229,441,1.229,442,1.229,443,1.229,444,1.229,445,1.229,446,1.229,447,1.229,448,1.229,449,1.229,450,1.229,451,1.229,452,1.229,453,1.229,454,1.229,455,1.229,456,1.229,457,1.229,458,1.229,459,1.229,460,1.229,461,1.229,462,1.229,463,1.229,464,1.229,465,1.229,466,1.229,589,2.382,590,2.382,591,2.382,592,2.382]],["title/interfaces/TokenResponse.html",[73,1.327,427,2.047]],["body/interfaces/TokenResponse.html",[0,0.092,3,0.606,4,0.438,5,0.393,9,0.854,10,1.555,11,0.854,12,0.77,15,0.77,18,0.968,21,0.487,28,1.949,33,1.72,38,0.02,40,0.992,41,0.793,44,0.854,46,1.517,51,1.595,54,1.468,62,1.403,63,1.634,64,0.811,72,0.618,73,1.678,74,1.468,75,1.005,76,1.005,77,1.005,82,0.95,83,1.453,93,1.019,115,0.006,116,0.009,117,0.006,132,0.811,149,1.553,162,0.569,163,0.77,170,1.468,177,0.54,186,1.403,197,0.732,201,1.064,202,1.073,204,0.696,205,0.629,207,1.39,225,2.394,240,0.95,292,1.529,294,0.732,321,1.129,322,1.201,326,1.064,327,1.129,328,1.201,329,1.201,330,1.064,331,1.201,333,0.77,334,2.394,335,1.381,336,2.016,337,1.201,338,0.95,339,1.201,340,1.064,341,1.201,343,1.129,344,0.629,345,2.537,346,1.743,347,1.064,348,1.129,349,1.129,350,1.064,351,1.201,352,0.924,353,2.265,354,1.129,355,1.201,356,1.201,359,1.551,360,1.201,361,0.811,362,1.129,363,1.201,364,2.265,365,1.468,367,1.064,368,1.743,370,1.201,371,1.005,372,1.201,373,1.064,374,1.129,375,1.005,376,1.201,377,1.201,379,1.005,380,1.201,381,2.588,382,3.215,383,1.064,384,0.811,385,1.201,386,1.854,387,1.064,388,0.854,389,0.95,390,1.064,391,1.064,392,1.129,393,1.064,394,1.201,395,2.753,396,1.201,397,1.201,398,1.201,399,1.201,400,1.201,401,1.005,402,1.201,403,0.77,404,0.95,405,0.95,406,0.95,407,1.201,408,1.129,409,1.201,410,0.811,411,1.201,412,1.201,413,1.064,414,2.91,415,1.064,416,1.201,417,1.129,418,1.201,419,1.201,420,1.201,421,2.265,422,1.895,423,2.265,424,2.016,425,2.129,426,1.854,427,1.743,428,2.547,429,2.547,430,2.394,431,1.634,432,0.732,433,1.201,434,1.064,435,1.201,436,0.696,437,1.129,438,0.854,439,1.201,440,1.201,441,1.201,442,1.201,443,1.201,444,1.201,445,1.201,446,1.201,447,1.201,448,1.201,449,1.201,450,1.201,451,1.201,452,1.201,453,1.201,454,1.201,455,1.201,456,1.201,457,1.201,458,1.201,459,1.201,460,1.201,461,1.201,462,1.201,463,1.201,464,1.201,465,1.201,466,1.201,588,1.375]],["title/injectables/UrlHelperService.html",[146,2.927,539,3.223]],["body/injectables/UrlHelperService.html",[0,0.078,3,0.707,4,0.789,5,0.707,21,0.877,22,2.007,28,1.766,30,0.923,33,2.25,35,1.914,37,1.479,38,0.02,39,1.337,40,0.923,41,1.207,43,1.906,46,1.836,68,1.132,72,0.426,84,3.546,104,2.122,115,0.011,116,0.014,117,0.011,146,3.794,148,2.475,176,3.014,201,1.914,261,4.177,282,3.794,327,2.653,410,1.459,413,2.5,518,3.592,539,4.177,593,3.592,594,6.092,595,4.189,596,5.471,597,5.471,598,5.471,599,4.189,600,5.471,601,4.189,602,5.471,603,4.189,604,4.189,605,5.471,606,5.471,607,4.189,608,4.189,609,4.189,610,5.471,611,4.189,612,4.189,613,4.189,614,4.189,615,4.189]],["title/interfaces/UserInfo.html",[73,1.327,434,1.929]],["body/interfaces/UserInfo.html",[0,0.095,3,0.764,4,0.461,5,0.413,9,0.897,10,1.576,11,0.897,12,0.809,15,0.809,18,0.999,21,0.512,28,1.941,30,0.413,33,1.765,38,0.02,40,0.413,44,0.897,46,1.551,51,1.116,54,1.525,62,1.44,63,0.809,64,0.852,72,0.628,73,1.716,74,1.525,75,1.056,76,1.056,77,1.056,82,0.999,83,1.498,93,1.051,115,0.006,116,0.01,117,0.006,132,0.852,149,1.593,162,0.598,163,0.809,170,1.525,177,0.568,186,1.287,197,0.769,201,1.706,202,1.106,204,0.731,205,0.661,207,1.444,225,1.811,240,0.999,292,1.577,294,0.769,321,1.186,322,1.262,326,1.118,327,1.186,328,1.262,329,1.262,330,1.118,331,1.262,333,0.809,334,2.457,335,1.424,336,2.069,337,1.262,338,0.999,339,1.262,340,1.118,341,1.262,343,1.186,344,0.661,345,2.187,346,1.811,347,1.118,348,1.186,349,1.186,350,1.118,351,1.262,352,0.96,353,2.336,354,1.186,355,1.262,356,1.262,359,1.611,360,1.262,361,0.852,362,1.186,363,1.262,364,2.336,365,1.525,367,1.118,368,1.811,370,1.262,371,1.056,372,1.262,373,1.118,374,1.186,375,1.056,376,1.262,377,1.262,379,1.056,380,1.262,381,2.646,382,3.262,383,1.118,384,0.852,385,1.262,386,1.926,387,1.118,388,0.897,389,0.999,390,1.118,391,1.118,392,1.186,393,1.118,394,1.262,395,2.816,396,1.262,397,1.262,398,1.262,399,1.262,400,1.262,401,1.056,402,1.262,403,0.809,404,0.999,405,0.999,406,0.999,407,1.262,408,1.186,409,1.262,410,0.852,411,1.262,412,1.262,413,1.118,414,2.968,415,1.118,416,1.262,417,1.186,418,1.262,419,1.262,420,1.262,421,2.336,422,1.954,423,2.336,424,2.069,425,2.196,426,1.262,427,1.186,428,1.262,429,1.262,430,1.186,431,0.809,432,1.174,433,1.926,434,1.706,435,2.615,436,0.731,437,1.186,438,0.897,439,1.262,440,1.262,441,1.262,442,1.262,443,1.262,444,1.262,445,1.262,446,1.262,447,1.262,448,1.262,449,1.262,450,1.262,451,1.262,452,1.262,453,1.262,454,1.262,455,1.262,456,1.262,457,1.262,458,1.262,459,1.262,460,1.262,461,1.262,462,1.262,463,1.262,464,1.262,465,1.262,466,1.262,588,1.445,616,2.446,617,2.446]],["title/classes/ValidationHandler.html",[0,0.079,12,1.396]],["body/classes/ValidationHandler.html",[0,0.081,1,1.906,2,0.85,3,0.504,4,0.563,5,0.504,6,3.014,7,3.537,8,1.543,9,1.097,10,1.677,11,1.097,12,1.851,13,2.073,14,2.102,15,1.435,16,3.251,17,1.647,18,0.956,19,2.073,20,1.906,21,0.626,22,1.591,23,3.007,25,2.073,26,3.251,27,1.906,28,1.592,29,3.566,30,0.732,32,2.073,33,1.777,34,3.007,35,1.366,36,0.989,37,1.172,38,0.02,39,1.246,40,0.732,41,0.956,42,1.906,43,1.51,44,2.401,45,2.073,46,1.59,48,2.073,49,3.537,50,2.073,51,1.91,52,2.073,53,2.073,54,1.221,55,1.767,56,2.073,57,4.099,59,3.948,60,3.786,61,3.251,62,1.45,63,1.688,65,2.764,67,2.81,68,0.808,69,2.073,70,2.073,71,2.283,72,0.519,73,1.604,74,1.221,75,1.291,76,1.291,77,1.291,78,1.767,79,2.073,80,3.311,81,3.311,82,1.77,83,1.435,84,3.196,85,3.007,86,3.007,87,2.283,88,2.283,89,2.283,90,2.283,91,2.283,92,2.283,93,0.694,94,2.283,95,2.283,96,2.283,97,1.767,98,4.272,99,2.283,100,4.272,101,2.283,102,2.283,103,2.283,104,1.51,105,3.895,106,2.283,107,2.283,108,2.283,109,2.073,110,1.157,111,2.283,112,1.906,113,2.283,114,2.283,115,0.008,116,0.011,117,0.008,618,2.99,619,2.99]],["title/interfaces/ValidationParams.html",[57,2.494,73,1.327]],["body/interfaces/ValidationParams.html",[0,0.083,1,1.96,3,0.519,4,0.579,5,0.519,6,1.817,7,2.133,8,1.587,10,1.574,11,1.128,12,1.715,13,2.133,14,2.146,15,1.464,16,1.96,17,1.694,18,0.976,19,2.133,20,1.96,21,0.644,23,3.068,25,2.133,26,1.96,27,1.96,28,1.752,29,3.613,32,2.133,33,1.805,34,3.068,35,1.405,36,1.018,38,0.02,39,0.751,40,1.055,42,1.96,44,2.295,45,2.133,46,1.938,48,2.133,49,3.594,50,2.133,51,1.795,52,2.133,53,2.133,54,1.256,55,1.817,56,2.133,57,3.807,59,3.613,60,3.613,61,2.821,62,1.258,63,1.464,65,1.96,67,2.438,68,0.831,69,2.133,70,2.133,71,2.348,72,0.527,73,1.391,74,2.315,75,2.446,76,2.446,77,2.446,78,3.349,79,3.931,80,2.348,81,2.348,82,1.256,83,1.018,84,2.283,85,2.133,86,3.068,87,2.348,88,2.348,89,2.348,90,2.348,91,2.348,92,2.348,93,0.714,94,2.348,95,2.348,96,2.348,97,1.817,98,4.328,99,2.348,100,4.328,101,2.348,102,2.348,103,2.348,104,1.541,105,3.957,106,2.348,107,2.348,108,2.348,109,2.133,110,1.19,111,2.348,112,1.96,113,2.348,114,2.348,115,0.008,116,0.011,117,0.008,207,1.712,357,2.821,588,1.817]],["title/classes/WebHttpUrlEncodingCodec.html",[0,0.079,620,3.619]],["body/classes/WebHttpUrlEncodingCodec.html",[0,0.077,2,1.174,3,0.697,4,0.778,5,0.697,9,1.516,14,2.629,21,0.865,22,1.989,28,1.929,30,1.084,37,1.737,38,0.02,39,1.57,40,1.084,41,1.417,43,2.238,68,1.117,72,0.42,104,2.238,115,0.011,116,0.014,117,0.011,157,2.132,276,4.649,333,1.794,335,1.705,620,4.649,621,4.132,622,4.649,623,4.649,624,5.422,625,5.422,626,6.052,627,5.422,628,5.422,629,5.422,630,5.422,631,5.422,632,4.132,633,5.422,634,4.132,635,5.422,636,5.422,637,4.132,638,5.422,639,4.132,640,4.132,641,4.132,642,4.132,643,4.132]],["title/changelog.html",[644,2.165,645,2.335,646,3.664]],["body/changelog.html",[12,1.331,15,1.331,18,0.887,22,1.476,36,2.188,38,0.014,51,1.203,62,1.143,67,2.216,93,0.934,97,3.147,110,2.46,112,2.564,115,0.01,116,0.014,117,0.01,132,1.401,145,2.377,149,1.265,177,1.237,186,1.514,196,1.951,197,1.265,202,0.983,203,2.79,204,1.203,205,1.087,211,2.299,240,1.643,292,2.215,312,3.072,335,1.675,338,2.175,344,1.44,352,1.535,365,2.175,389,1.643,390,1.838,405,1.643,406,1.643,424,1.643,432,1.675,436,1.203,470,3.072,502,2.377,515,3.072,533,2.749,647,5.327,648,4.023,649,5.122,650,3.147,651,3.449,652,4.023,653,3.529,654,3.072,655,2.216,656,2.377,657,2.79,658,3.072,659,4.023,660,3.449,661,4.023,662,4.023,663,3.072,664,2.79,665,3.147,666,3.694,667,3.449,668,3.449,669,4.023,670,3.449,671,3.449,672,2.79,673,3.449,674,3.449,675,1.736,676,1.838,677,4.023,678,3.449,679,3.396,680,4.023,681,3.449,682,4.023,683,2.79,684,3.757,685,1.951,686,1.736,687,3.449,688,3.449,689,2.564,690,3.449,691,2.79,692,2.377,693,3.072,694,3.449,695,4.023,696,4.023,697,4.023,698,3.072,699,1.951,700,3.449,701,3.072,702,3.072,703,4.068,704,4.023,705,4.023,706,4.023,707,5.327,708,4.023,709,3.072,710,3.449,711,3.449,712,3.449,713,4.023,714,3.449]],["title/dependencies.html",[715,3.664,716,3.82]],["body/dependencies.html",[38,0.02,70,3.422,115,0.013,116,0.016,117,0.013,148,2.916,158,4.209,167,3.768,251,3.768,622,4.232,716,3.768,717,4.935,718,7.393,719,4.935,720,4.935,721,4.935,722,6.07,723,4.635,724,4.935,725,4.935,726,4.935,727,4.935,728,4.935,729,4.232,730,4.935,731,3.422,732,4.935,733,4.935,734,6.07,735,4.935,736,4.935,737,4.935,738,4.935,739,4.935,740,4.935,741,4.935,742,4.935]],["title/miscellaneous/functions.html",[743,2.165,744,4.29]],["body/miscellaneous/functions.html",[21,1.111,28,1.364,37,1.715,38,0.018,39,1.55,41,1.399,43,1.849,69,4.399,115,0.014,116,0.016,117,0.014,545,5.818,546,5.818,743,3.136,744,4.551,745,6.344,746,6.344,747,6.786,748,6.344,749,5.307,750,5.307,751,6.344,752,5.307,753,5.307]],["title/index.html",[21,0.767,644,2.165,645,2.335]],["body/index.html",[0,0.072,4,0.355,5,0.318,17,1.038,18,1.062,30,0.318,36,1.006,38,0.019,39,0.743,46,0.536,51,0.563,67,1.038,68,1.574,72,0.447,83,1.006,84,1.973,93,0.437,97,1.113,104,1.059,110,1.479,112,1.939,115,0.005,116,0.008,117,0.005,124,1.615,148,1.797,149,1.704,150,1.201,157,0.972,161,2.109,162,1.324,168,1.306,176,1.038,177,0.706,183,1.939,186,1.248,194,1.797,197,0.956,200,2.109,202,0.46,204,0.563,205,0.509,211,0.813,227,1.306,283,2.438,294,0.956,305,1.615,309,1.038,333,1.006,335,0.956,336,0.769,344,1.616,347,0.861,352,1.601,357,1.201,361,1.332,367,0.861,371,1.313,379,0.813,383,2.006,384,0.656,389,1.562,403,1.006,404,0.769,410,0.656,415,1.748,422,1.313,424,1.242,425,1.475,431,1.006,432,1.704,434,0.861,436,1.143,438,0.691,470,2.322,506,1.569,524,1.201,533,0.972,535,2.322,538,2.322,548,1.439,549,1.306,558,1.306,561,1.306,565,1.439,567,2.109,568,1.306,623,1.615,649,2.608,650,1.797,651,2.608,653,3.201,654,1.439,655,2.107,656,1.113,657,1.306,658,1.439,663,3.351,664,2.652,665,1.113,671,1.615,675,2.581,676,1.39,679,2.798,683,3.34,684,1.113,685,2.128,686,2.434,687,1.615,691,1.306,692,1.113,693,1.439,698,1.439,699,0.914,701,1.439,709,1.439,711,3.279,712,1.615,723,1.439,731,1.306,754,3.034,755,3.041,756,1.884,757,1.884,758,1.884,759,2.069,760,1.884,761,1.884,762,1.884,763,1.615,764,1.884,765,1.615,766,3.824,767,1.884,768,1.884,769,3.041,770,3.041,771,2.796,772,1.884,773,1.884,774,3.041,775,1.884,776,3.041,777,1.884,778,1.884,779,2.798,780,1.884,781,2.109,782,1.884,783,1.884,784,3.824,785,1.884,786,1.884,787,1.615,788,3.041,789,1.884,790,1.884,791,1.884,792,1.884,793,1.884,794,1.884,795,3.041,796,1.884,797,3.041,798,1.306,799,1.884,800,3.041,801,1.884,802,1.884,803,1.884,804,2.608,805,1.884,806,1.884,807,1.884,808,1.884,809,3.824,810,1.884,811,1.884,812,3.041,813,1.884,814,1.884,815,1.615,816,1.884,817,1.615,818,1.439,819,1.884,820,1.884,821,1.884,822,1.884,823,1.884,824,1.884,825,1.884,826,1.884,827,4.389,828,1.884,829,1.884,830,1.615,831,1.884,832,1.884,833,1.884,834,1.973,835,1.884,836,3.824,837,1.884,838,1.884,839,1.884,840,3.041,841,1.615,842,2.92,843,1.884,844,1.439,845,1.306,846,1.884,847,3.041,848,1.615,849,1.797,850,1.615,851,1.615,852,1.884,853,1.884,854,1.615,855,1.306,856,1.884,857,1.884,858,2.92,859,1.615,860,1.884,861,1.884,862,3.041,863,1.884,864,2.485,865,2.418,866,2.608,867,1.884,868,3.824,869,3.824,870,1.884,871,1.884,872,1.884,873,1.439,874,1.884,875,1.884,876,3.279,877,2.322,878,2.438,879,2.608,880,1.615,881,1.615,882,2.109,883,1.201,884,1.615,885,1.439,886,1.615,887,1.884,888,0.983,889,2.608,890,1.615,891,1.884,892,1.884,893,1.748,894,1.884,895,1.615,896,2.798,897,1.038,898,1.201,899,1.038,900,1.201,901,1.038,902,1.038,903,1.038,904,1.201,905,1.038,906,1.038,907,1.201,908,1.306,909,1.306,910,1.201,911,1.201,912,0.972,913,1.038,914,2.92,915,1.884,916,3.044,917,1.884,918,1.884,919,3.041,920,1.884,921,2.109,922,1.884,923,1.884,924,1.439,925,2.608,926,3.279,927,1.884,928,1.439,929,1.615,930,1.884,931,1.884,932,1.884,933,1.884,934,1.615,935,1.615,936,1.615,937,1.615,938,1.884,939,3.041,940,1.884,941,1.884,942,1.884,943,1.884,944,1.306,945,1.884,946,1.884,947,1.884,948,2.322,949,1.306,950,1.439,951,1.439,952,1.439,953,1.615,954,1.615,955,1.884,956,2.608,957,1.615,958,1.615,959,1.615,960,1.884,961,2.322,962,1.439,963,1.939,964,1.615,965,1.884,966,1.615,967,1.615,968,1.884,969,1.439,970,1.201,971,1.884,972,1.884,973,1.884,974,1.306,975,1.884,976,3.824,977,1.884,978,1.615,979,1.884,980,1.439,981,1.884,982,1.439,983,1.884,984,1.884,985,1.884]],["title/license.html",[644,2.165,645,2.335,986,3.664]],["body/license.html",[18,1.279,38,0.015,115,0.012,116,0.015,117,0.012,203,3.182,362,2.225,665,2.711,683,3.182,689,2.925,698,3.503,818,3.503,834,2.367,987,6.361,988,4.588,989,4.588,990,4.588,991,4.588,992,5.801,993,4.588,994,4.588,995,4.588,996,4.588,997,4.588,998,5.801,999,7.301,1000,4.588,1001,4.588,1002,4.588,1003,4.055,1004,4.588,1005,5.801,1006,3.934,1007,4.588,1008,4.588,1009,4.588,1010,4.588,1011,4.588,1012,4.588,1013,4.588,1014,4.588,1015,5.801,1016,4.588,1017,4.588,1018,4.588,1019,4.588,1020,4.588,1021,2.711,1022,5.801,1023,5.801,1024,4.588,1025,4.588,1026,4.588,1027,4.588,1028,4.588,1029,4.588,1030,4.588,1031,4.588,1032,4.588,1033,4.588,1034,4.588,1035,3.934,1036,4.588,1037,4.588,1038,4.588,1039,4.588,1040,4.588,1041,4.588,1042,4.588,1043,4.588,1044,3.934,1045,4.588,1046,4.588,1047,4.588,1048,4.588,1049,4.588]],["title/modules.html",[525,4.198]],["body/modules.html",[38,0.017,115,0.015,116,0.017,117,0.015,524,3.73,525,4.468,974,4.057,1050,5.851,1051,5.851]],["title/overview.html",[1052,4.714]],["body/overview.html",[2,1.587,38,0.017,97,3.298,115,0.014,116,0.017,117,0.014,282,3.871,523,4.991,549,3.871,550,4.787,551,3.559,588,3.298,593,4.787,665,3.298,716,4.263,731,3.871,763,4.787,1052,4.787,1053,5.583,1054,6.537,1055,5.583,1056,5.583]],["title/miscellaneous/typealiases.html",[743,2.165,1057,5.003]],["body/miscellaneous/typealiases.html",[21,1.068,38,0.02,40,0.86,115,0.013,116,0.016,117,0.013,479,3.251,482,3.948,485,3.013,486,3.251,487,3.251,488,3.013,489,3.251,490,3.251,491,3.013,492,3.251,493,3.013,494,3.251,495,3.251,496,3.251,497,3.251,498,3.251,499,3.013,500,3.013,501,3.251,502,3.013,503,3.251,504,3.013,505,3.013,506,2.631,743,3.013,1058,5.1,1059,5.1]],["title/miscellaneous/variables.html",[743,2.165,1060,4.29]],["body/miscellaneous/variables.html",[21,1.198,35,2.615,38,0.018,110,2.214,115,0.015,116,0.017,117,0.015,211,2.47,743,3.381,1060,4.907,1061,6.632,1062,5.723,1063,5.723,1064,5.723]],["title/additional-documentation/getting-started.html",[323,0.92,644,1.912,645,2.063,888,0.832]],["body/additional-documentation/getting-started.html",[38,0.017,115,0.015,116,0.017,117,0.015,284,3.182,644,3.939,645,4.25,1021,3.413,1065,4.411,1066,5.777,1067,4.006]],["title/additional-documentation/preserving-state-(like-the-requested-url).html",[177,0.609,323,0.746,345,1.133,888,0.675,1068,2.251,1069,1.673]],["body/additional-documentation/preserving-state-(like-the-requested-url).html",[3,0.928,38,0.019,41,1.213,115,0.014,116,0.017,117,0.014,177,1.504,330,2.513,340,2.513,345,2.973,374,2.667,675,2.373,929,4.715,951,4.199,1068,4.715,1069,4.13,1070,5.499,1071,5.499,1072,3.813,1073,5.499,1074,5.499]],["title/additional-documentation/code-flow-+-pcke.html",[38,0.007,323,0.746,686,1.133,781,1.82,888,0.675,1075,2.625]],["body/additional-documentation/code-flow-+-pcke.html",[15,1.275,17,2.123,30,0.65,36,1.275,38,0.019,68,1.042,72,0.392,93,1.202,110,1.491,115,0.01,116,0.013,117,0.01,150,2.456,162,1.428,176,2.123,177,1.202,186,1.471,194,2.277,197,1.212,202,1.265,205,1.042,232,3.59,294,1.628,344,1.042,347,2.366,348,1.869,350,2.366,352,1.33,361,2.036,403,1.275,431,1.934,432,1.212,436,1.152,438,1.414,653,2.277,655,2.852,658,2.942,664,2.672,675,1.663,676,1.761,684,2.277,685,1.869,686,2.898,699,1.869,703,2.942,754,1.761,759,1.899,771,1.988,781,4.835,834,1.988,841,4.439,849,2.277,851,3.304,864,3.016,893,1.761,896,3.3,899,2.123,900,2.456,901,2.123,902,2.123,903,2.123,904,3.3,905,2.123,906,2.852,907,2.456,910,2.456,911,2.456,912,1.988,924,2.942,925,3.304,928,2.942,964,3.304,1067,2.672,1076,3.853,1077,3.304,1078,3.853,1079,3.853,1080,3.853,1081,2.672,1082,5.177,1083,3.853,1084,3.853,1085,2.672,1086,3.853,1087,3.853,1088,4.439,1089,3.304,1090,2.942,1091,3.853,1092,3.853,1093,3.853,1094,2.672,1095,3.853,1096,3.304,1097,3.853,1098,3.853,1099,3.953,1100,3.853,1101,3.853,1102,3.853,1103,3.853,1104,3.853,1105,3.853,1106,3.853,1107,3.853,1108,3.853,1109,3.853,1110,3.853,1111,3.853,1112,3.304,1113,3.853]],["title/additional-documentation/refreshing-a-token.html",[186,0.92,323,0.92,845,2.244,888,0.832]],["body/additional-documentation/refreshing-a-token.html",[3,0.461,5,0.817,15,1.603,17,2.237,18,1.068,30,0.461,35,1.856,36,2.056,38,0.018,46,0.777,62,0.777,68,0.739,72,0.278,83,1.774,110,1.571,115,0.007,116,0.011,117,0.007,141,2.088,149,1.523,162,1.183,163,1.344,176,1.507,177,1.125,186,1.853,197,1.523,202,1.31,205,0.739,211,1.753,227,3.359,229,2.345,261,2.088,282,1.897,284,2.953,292,1.867,293,2.088,294,1.277,338,2.537,344,0.739,352,1.044,361,1.687,384,0.953,388,1.004,389,1.117,403,0.905,430,1.326,431,1.603,432,1.686,436,0.818,438,1.004,533,1.411,566,1.743,644,1.616,650,1.616,653,1.616,655,1.507,656,1.616,657,1.897,672,1.897,675,1.18,676,1.25,678,2.345,684,3.92,685,3.013,686,2.941,689,3.088,691,2.816,692,2.862,693,3.101,694,2.345,699,1.326,701,3.699,754,1.856,771,2.095,781,3.972,830,3.482,834,2.499,844,2.088,845,4.161,848,2.345,855,1.897,864,2.766,865,1.507,873,3.101,881,2.345,882,3.359,883,1.743,889,3.482,893,1.25,895,2.345,896,3.088,897,1.507,898,1.743,899,2.669,900,1.743,901,2.669,902,1.507,903,1.507,904,1.743,905,1.507,906,2.237,907,1.743,908,1.897,909,1.897,910,1.743,911,1.743,912,1.411,913,1.507,928,2.088,948,2.088,949,1.897,953,2.345,954,3.482,962,2.088,978,2.345,980,2.088,982,2.088,1003,1.743,1006,2.345,1065,2.088,1081,1.897,1085,1.897,1089,2.345,1090,2.088,1099,2.088,1114,2.735,1115,2.735,1116,3.482,1117,1.616,1118,2.735,1119,4.061,1120,2.735,1121,2.345,1122,2.345,1123,4.061,1124,2.735,1125,2.735,1126,2.345,1127,4.061,1128,2.735,1129,2.345,1130,2.735,1131,2.735,1132,2.735,1133,1.743,1134,2.735,1135,2.735,1136,2.735,1137,2.735,1138,2.735,1139,4.061,1140,4.844,1141,1.897,1142,2.735,1143,2.735,1144,2.735,1145,2.735,1146,2.735,1147,3.482,1148,3.482,1149,2.735,1150,2.735,1151,2.345,1152,2.735,1153,2.735,1154,2.345,1155,3.101,1156,2.735,1157,2.735,1158,2.735,1159,2.345,1160,2.735,1161,2.735,1162,2.735,1163,2.345,1164,2.735,1165,2.735,1166,2.088,1167,4.061,1168,2.735,1169,2.735,1170,2.735,1171,2.735,1172,2.735,1173,2.735,1174,2.345,1175,2.735,1176,2.735,1177,2.735,1178,2.735,1179,2.735,1180,2.735,1181,2.735,1182,2.735,1183,4.061,1184,2.735,1185,2.735,1186,4.061,1187,4.061,1188,2.735,1189,2.735,1190,2.735,1191,2.735,1192,2.735,1193,2.735,1194,2.735,1195,2.735]],["title/additional-documentation/working-with-httpinterceptors.html",[323,0.92,888,0.832,1196,3.237,1197,3.237]],["body/additional-documentation/working-with-httpinterceptors.html",[0,0.101,10,0.813,14,2.269,18,1.032,28,0.855,38,0.019,41,1.032,55,2.765,62,0.946,63,1.548,68,1.782,72,0.476,84,1.717,93,1.086,104,2.297,115,0.009,116,0.012,117,0.009,125,2.307,126,4.641,130,1.717,132,1.885,133,2.853,134,3.656,135,2.853,136,2.765,138,2.853,139,2.853,140,4.013,141,2.541,142,4.013,144,2.853,145,3.198,146,3.245,147,2.853,148,1.966,149,1.471,150,2.121,151,3.245,153,2.853,154,4.641,155,3.245,156,2.853,157,1.717,161,3.754,162,1.322,163,2.048,164,2.983,165,2.541,168,4.073,169,2.853,170,1.359,173,2.853,174,2.853,175,2.853,177,0.773,178,2.853,179,2.853,180,5.036,181,2.853,182,2.853,183,3.744,184,2.853,185,2.853,186,1.539,187,2.853,188,4.013,190,2.853,193,2.853,202,1.143,211,2.02,279,3.245,309,1.833,333,1.548,344,0.899,350,1.521,352,0.855,384,1.159,388,1.221,390,1.521,391,1.521,541,2.121,558,2.307,561,3.245,567,3.245,568,2.307,572,2.541,667,2.853,754,1.521,759,1.221,817,2.853,818,2.541,834,1.717,877,2.541,883,2.121,884,4.013,949,2.307,956,4.013,957,2.853,958,2.853,959,2.853,1090,2.541,1094,2.307,1117,1.966,1129,2.853,1154,2.853,1198,3.327,1199,2.853,1200,3.327,1201,3.327,1202,2.853,1203,2.853,1204,3.327,1205,3.327,1206,3.327,1207,3.327,1208,3.327,1209,3.327,1210,3.327,1211,3.327,1212,2.541,1213,3.327,1214,3.327,1215,3.327,1216,3.327,1217,3.327,1218,3.327,1219,3.327,1220,3.327,1221,2.853,1222,3.327,1223,3.327,1224,3.327,1225,2.541,1226,3.327,1227,3.327,1228,3.327,1229,3.327,1230,3.327]],["title/additional-documentation/callback-after-login.html",[323,0.92,675,1.397,888,0.832,1231,2.775]],["body/additional-documentation/callback-after-login.html",[38,0.019,51,1.89,62,1.5,63,1.746,115,0.014,116,0.016,117,0.014,309,2.907,330,2.889,359,2.277,368,2.559,373,2.889,389,2.155,675,2.729,798,3.659,944,3.659,1035,4.525,1069,3.364,1072,3.659,1159,4.525,1231,5.421,1232,5.277,1233,5.277,1234,5.277,1235,5.277,1236,5.277,1237,5.277]],["title/additional-documentation/custom-query-parameters.html",[37,0.783,323,0.824,333,0.959,888,0.745,1238,2.486]],["body/additional-documentation/custom-query-parameters.html",[33,1.939,37,1.504,38,0.019,115,0.014,116,0.017,117,0.014,202,1.36,292,1.939,333,2.159,685,2.699,686,2.402,1238,4.773,1239,5.566,1240,4.773,1241,5.566,1242,5.566,1243,5.566,1244,5.566,1245,5.566,1246,5.566,1247,5.566]],["title/additional-documentation/events.html",[323,1.041,365,1.496,888,0.942]],["body/additional-documentation/events.html",[5,0.686,18,0.897,28,1.045,36,1.346,38,0.019,62,1.156,68,1.099,78,2.403,83,1.346,115,0.011,116,0.014,117,0.011,145,2.403,151,3.721,163,1.346,186,1.156,254,3.488,283,3.421,309,2.241,324,3.488,326,1.859,338,2.191,344,1.45,345,2.316,346,1.972,352,1.045,354,2.602,365,2.784,367,3.034,375,1.756,387,1.859,436,1.216,478,3.171,485,2.403,488,2.403,491,2.403,493,2.403,499,2.403,500,2.403,504,2.403,515,3.106,650,3.171,653,2.403,660,3.488,666,2.821,674,3.488,679,2.593,684,3.548,685,1.972,686,1.756,689,2.593,692,2.403,754,1.859,759,1.969,849,2.403,936,3.488,952,3.106,970,3.421,974,2.821,1069,3.421,1126,4.602,1155,3.106,1199,3.488,1248,4.068,1249,4.068,1250,4.068,1251,4.068,1252,4.068,1253,3.488,1254,4.068,1255,4.068,1256,4.068,1257,4.068,1258,3.488,1259,4.068,1260,4.068,1261,4.068,1262,4.068,1263,4.068,1264,4.068,1265,5.367,1266,6.952,1267,5.367,1268,4.068,1269,4.068,1270,3.488,1271,4.068,1272,3.488,1273,3.488,1274,4.068,1275,4.068,1276,4.068,1277,5.367,1278,5.367,1279,4.068,1280,4.068,1281,4.068,1282,3.106,1283,4.068,1284,3.488,1285,4.068,1286,4.068]],["title/additional-documentation/routing-with-the-hashstrategy.html",[323,0.92,888,0.832,963,2.063,969,2.471]],["body/additional-documentation/routing-with-the-hashstrategy.html",[13,3.368,18,1.071,19,4.168,33,1.691,36,1.989,38,0.018,62,1.38,72,0.494,83,1.607,93,1.128,115,0.013,116,0.016,117,0.013,211,2.096,240,1.983,309,2.675,326,2.219,334,2.355,343,2.355,349,2.355,472,3.708,523,3.708,759,1.782,787,5.597,882,3.368,885,3.708,899,3.311,914,3.708,937,4.164,948,3.708,963,3.831,966,4.164,969,4.589,1081,3.368,1094,3.368,1141,3.368,1147,5.154,1166,3.708,1174,4.164,1212,3.708,1287,4.856,1288,4.856,1289,6.821,1290,6.527,1291,4.856,1292,4.856,1293,4.856,1294,4.856,1295,4.856,1296,4.856,1297,4.856,1298,4.856,1299,3.708,1300,4.856,1301,4.856,1302,4.856]],["title/additional-documentation/adapt-id_token-validation.html",[51,0.867,196,1.406,323,0.824,888,0.745,1303,2.486]],["body/additional-documentation/adapt-id_token-validation.html",[11,1.736,12,2.134,30,0.798,38,0.019,51,1.768,59,3.016,60,3.016,61,3.016,62,1.681,67,3.257,68,1.279,73,1.488,78,2.795,82,1.932,84,2.441,110,1.83,115,0.012,116,0.015,117,0.012,194,3.811,196,2.867,197,1.859,198,4.056,204,1.414,205,1.279,292,2.06,344,1.279,352,1.216,379,2.042,387,2.162,388,1.736,391,2.702,392,2.867,403,1.565,404,1.932,408,2.294,467,3.28,551,3.016,553,4.056,672,3.28,679,3.016,754,2.162,759,1.736,885,3.612,893,2.162,924,3.612,962,3.612,1225,3.612,1303,4.056,1304,4.731,1305,4.731,1306,4.731,1307,4.731,1308,4.056,1309,4.731,1310,4.731,1311,4.056,1312,4.056,1313,4.731,1314,4.056,1315,4.731]],["title/additional-documentation/session-checks.html",[323,0.92,666,2.244,888,0.832,1282,2.471]],["body/additional-documentation/session-checks.html",[30,0.725,38,0.019,68,1.161,72,0.437,83,1.422,93,0.998,115,0.011,116,0.014,117,0.011,176,2.367,202,1.05,232,2.98,284,2.367,292,1.497,333,1.422,335,1.351,338,1.755,344,1.161,352,1.104,365,1.755,379,1.855,424,1.755,431,1.422,432,1.351,436,1.663,438,1.577,505,3.286,506,2.217,653,2.539,654,3.281,665,2.539,666,4.799,668,3.685,670,3.685,672,2.98,673,3.685,676,2.542,689,3.546,691,2.98,699,2.084,710,3.685,754,1.964,759,2.041,765,3.685,771,3.182,849,3.286,855,2.98,864,2.217,865,2.367,873,3.281,890,3.685,896,3.932,897,2.367,898,2.739,900,2.739,901,3.064,902,2.367,904,2.739,912,2.217,913,2.367,914,3.281,951,3.281,1044,3.685,1077,3.685,1133,2.739,1148,3.685,1166,3.281,1221,3.685,1272,3.685,1282,4.709,1312,3.685,1316,4.297,1317,4.297,1318,4.297,1319,5.562,1320,4.297,1321,4.297,1322,4.297,1323,4.297,1324,3.281,1325,4.297,1326,5.562,1327,4.297,1328,5.562,1329,4.297,1330,4.297,1331,4.297,1332,4.297,1333,4.297]],["title/additional-documentation/server-side-rendering.html",[162,0.708,323,0.824,404,1.184,888,0.745,1334,2.486]],["body/additional-documentation/server-side-rendering.html",[38,0.016,115,0.014,116,0.017,117,0.014,162,1.681,279,3.802,335,1.724,404,2.809,690,4.701,759,2.012,779,3.495,883,3.495,1117,3.239,1334,5.899,1335,5.483,1336,5.483,1337,5.483,1338,5.483,1339,5.483,1340,5.483,1341,5.483,1342,5.483,1343,5.483,1344,5.483]],["title/additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html",[204,0.611,205,0.553,323,0.581,685,0.992,686,0.883,759,0.75,888,0.526,893,0.934,1003,1.303]],["body/additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html",[0,0.076,11,1.496,15,1.349,18,1.185,38,0.019,40,0.688,72,0.415,110,1.577,115,0.011,116,0.014,117,0.011,149,1.69,162,1.313,177,1.484,200,2.827,202,1.313,204,1.607,205,1.453,207,1.577,283,2.599,284,2.246,294,1.89,336,1.665,361,2.094,375,1.76,384,1.42,401,1.76,403,1.349,405,1.665,406,1.665,422,1.76,431,1.349,432,1.89,436,1.219,506,2.103,533,2.773,566,2.599,655,2.961,656,2.409,663,3.113,664,2.827,665,2.409,675,2.595,676,1.863,685,1.977,686,1.76,699,1.977,702,3.113,759,1.496,771,2.773,779,2.599,834,2.103,854,3.496,858,3.113,864,3.102,865,2.246,878,2.599,888,1.048,893,2.456,897,2.961,899,2.246,901,2.246,902,2.246,903,2.246,905,2.246,906,2.246,912,2.103,913,2.246,916,2.827,921,2.827,944,2.827,950,3.113,961,3.113,970,2.599,1003,2.599,1021,2.409,1067,2.827,1072,2.827,1117,2.409,1133,2.599,1141,2.827,1299,3.113,1324,3.113,1345,3.496,1346,4.077,1347,4.077,1348,3.496,1349,3.113,1350,3.113,1351,3.496,1352,3.496,1353,4.077,1354,4.077,1355,4.077,1356,3.496,1357,3.496,1358,3.496,1359,3.496,1360,4.077]],["title/additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html",[36,0.677,196,0.992,204,0.611,205,0.553,294,0.643,323,0.581,676,0.934,888,0.526,1361,2.045]],["body/additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html",[18,0.889,30,0.9,38,0.019,64,1.404,68,1.09,72,0.41,93,0.936,115,0.01,116,0.014,117,0.01,162,0.985,176,2.221,177,1.537,196,2.9,197,1.268,202,1.461,203,2.796,204,2.033,205,1.838,211,1.74,240,2.179,294,2.081,340,1.842,344,1.09,352,1.371,361,1.404,388,1.479,403,1.334,424,1.646,431,1.765,432,1.268,436,1.787,438,2.194,551,3.401,657,2.796,675,1.74,676,2.908,679,2.57,699,1.955,700,3.457,714,5.127,754,1.842,759,1.479,771,2.753,849,3.533,864,3.085,865,2.221,896,3.812,897,2.221,898,2.57,899,2.221,900,2.57,901,2.221,902,2.221,903,2.221,904,2.57,905,2.221,906,2.221,907,2.57,908,2.796,909,2.796,910,2.57,911,2.57,912,2.08,913,2.221,967,3.457,1021,2.382,1085,2.796,1151,3.457,1240,5.127,1258,3.457,1362,4.032,1363,5.457,1364,4.032,1365,4.575,1366,4.032,1367,4.032,1368,4.032,1369,4.032,1370,4.032,1371,4.032,1372,4.032,1373,4.032,1374,4.032,1375,4.032,1376,4.032,1377,3.457,1378,3.457,1379,4.032]],["title/additional-documentation/using-systemjs.html",[36,1.071,323,0.92,888,0.832,1380,2.775]],["body/additional-documentation/using-systemjs.html",[36,1.669,38,0.019,115,0.013,116,0.016,117,0.013,251,4.697,344,1.868,352,1.706,533,2.602,729,4.325,754,3.158,850,4.325,970,3.215,1155,3.851,1380,5.692,1381,6.152,1382,5.044,1383,5.044,1384,5.044,1385,5.044,1386,6.152,1387,6.152,1388,5.044,1389,5.044,1390,5.044,1391,5.044,1392,5.044,1393,5.044,1394,5.044,1395,5.044,1396,5.044]],["title/additional-documentation/original-config-api.html",[323,0.824,533,1.496,655,1.597,656,1.713,888,0.745]],["body/additional-documentation/original-config-api.html",[0,0.073,15,1.283,18,0.855,30,0.654,35,1.772,38,0.019,39,0.947,72,0.395,110,1.5,115,0.01,116,0.013,117,0.01,130,2.001,149,1.635,162,1.433,177,1.362,186,1.102,196,2.844,197,1.219,200,2.689,202,1.27,204,1.873,205,1.693,207,1.5,284,2.136,294,1.844,344,1.048,352,0.997,359,1.674,361,2.043,375,1.674,384,1.811,403,1.283,431,1.283,432,1.97,436,1.159,438,1.423,533,3.026,566,2.472,650,2.291,655,3.231,656,3.071,675,2.531,676,1.772,692,2.291,699,1.88,759,1.423,771,2.001,779,3.314,798,2.689,834,2.682,855,2.689,858,2.961,864,3.026,865,2.136,878,3.314,888,0.997,893,1.772,897,2.136,898,2.472,899,2.136,901,2.136,902,2.136,903,2.136,905,2.136,906,2.136,907,2.472,908,2.689,909,2.689,910,2.472,911,2.472,912,2.001,913,2.136,916,2.689,921,2.689,950,2.961,961,2.961,963,2.472,970,2.472,1021,2.291,1065,2.961,1067,2.689,1072,2.689,1085,2.689,1133,2.472,1202,3.325,1203,3.325,1273,3.325,1345,3.325,1348,3.325,1349,2.961,1350,2.961,1356,3.325,1357,3.325,1358,4.458,1359,3.325,1363,4.458,1365,3.325,1377,3.325,1378,3.325,1397,3.325,1398,3.325,1399,3.878,1400,3.325,1401,3.878,1402,3.878,1403,3.878,1404,3.878,1405,3.878,1406,3.878]],["title/additional-documentation/using-password-flow.html",[36,0.959,323,0.824,686,1.251,842,2.213,888,0.745]],["body/additional-documentation/using-password-flow.html",[0,0.071,3,0.419,11,0.911,17,2.08,18,1.212,36,2.142,38,0.019,39,0.607,40,0.419,43,0.865,51,0.742,72,0.384,104,0.865,110,0.96,115,0.006,116,0.01,117,0.006,130,1.281,149,1.606,161,2.618,162,1.414,177,1.061,186,1.71,197,0.781,202,1.342,204,1.526,205,1.38,207,1.461,232,2.618,283,1.582,284,2.813,292,1.315,293,1.896,294,1.727,309,1.368,312,2.883,335,1.819,336,1.014,352,0.97,359,1.972,361,2.015,371,1.63,373,1.135,383,1.135,384,1.315,401,1.071,403,2.142,405,1.014,406,1.014,413,2.334,415,2.334,422,1.071,431,1.512,432,1.949,436,1.129,469,2.129,472,1.896,650,1.467,675,1.63,681,2.129,684,2.231,685,1.831,686,2.88,688,2.129,692,1.467,699,2.216,702,1.896,703,1.896,709,2.883,723,2.883,759,1.677,771,2.358,779,2.407,798,1.722,815,3.238,834,1.281,842,4.848,844,1.896,845,1.722,849,2.231,859,3.238,864,2.834,865,2.08,866,3.238,878,2.913,882,1.722,883,1.582,886,2.129,893,2.334,897,2.517,903,2.08,905,2.08,906,2.08,912,2.358,913,2.08,916,2.618,921,2.618,926,2.129,934,3.238,935,3.238,944,3.169,949,1.722,952,3.489,963,1.582,1003,2.913,1069,1.582,1088,5.552,1094,2.618,1096,3.238,1099,3.489,1112,2.129,1116,2.129,1117,3.246,1121,2.129,1122,3.238,1133,2.913,1141,1.722,1163,2.129,1225,1.896,1253,2.129,1284,2.129,1299,1.896,1308,2.129,1311,2.129,1314,3.238,1324,2.883,1349,2.883,1350,2.883,1351,2.129,1352,2.129,1397,2.129,1398,2.129,1400,2.129,1407,2.483,1408,2.483,1409,2.483,1410,3.776,1411,2.483,1412,2.483,1413,2.483,1414,2.483,1415,2.483,1416,2.483,1417,2.483,1418,2.483,1419,2.483,1420,5.106,1421,3.776,1422,3.776,1423,3.776,1424,3.776,1425,3.776,1426,3.776,1427,3.776,1428,3.776,1429,2.483,1430,2.483,1431,2.483,1432,2.483,1433,2.483,1434,2.483,1435,2.483,1436,2.483,1437,2.483,1438,3.776,1439,2.483,1440,2.483,1441,2.483,1442,2.483,1443,3.776,1444,2.483,1445,3.776,1446,2.483,1447,2.483,1448,2.483,1449,2.483,1450,2.483,1451,2.483]],["title/additional-documentation/configure-custom-oauthstorage.html",[132,1.01,323,0.824,333,0.959,888,0.745,893,1.325]],["body/additional-documentation/configure-custom-oauthstorage.html",[0,0.105,18,1.242,36,1.863,38,0.019,68,1.522,72,0.573,104,1.525,115,0.011,116,0.015,117,0.011,132,2.288,157,2.26,211,1.89,227,3.037,279,3.037,333,2.059,336,1.788,344,1.184,352,1.125,357,2.792,371,2.43,384,1.525,388,1.607,401,2.835,405,2.84,406,2.299,524,2.792,535,3.344,538,4.3,548,3.344,549,3.037,551,2.792,552,3.755,676,2.844,683,3.037,731,3.037,754,2.001,759,1.607,804,3.755,876,5.337,877,3.344,878,3.589,879,3.755,880,4.828,893,2.001,974,3.037,980,4.3,982,3.344,1021,2.587,1081,4.316,1117,2.587,1212,3.344,1270,3.755,1452,4.379,1453,4.379,1454,4.379,1455,4.379,1456,4.379,1457,5.631,1458,4.379]]],"invertedIndex":[["",{"_index":38,"title":{"additional-documentation/code-flow-+-pcke.html":{}},"body":{"classes/AbstractValidationHandler.html":{},"classes/CryptoHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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":{},"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/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/callback-after-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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["0",{"_index":261,"title":{},"body":{"classes/JwksValidationHandler.html":{},"injectables/UrlHelperService.html":{},"additional-documentation/refreshing-a-token.html":{}}}],["0.33",{"_index":1193,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["0.35.0",{"_index":740,"title":{},"body":{"dependencies.html":{}}}],["0.5",{"_index":1191,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["0.9.1",{"_index":742,"title":{},"body":{"dependencies.html":{}}}],["1",{"_index":282,"title":{},"body":{"classes/JwksValidationHandler.html":{},"injectables/UrlHelperService.html":{},"overview.html":{},"additional-documentation/refreshing-a-token.html":{}}}],["1.0",{"_index":1318,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["1.0.1",{"_index":738,"title":{},"body":{"dependencies.html":{}}}],["1.2.4",{"_index":728,"title":{},"body":{"dependencies.html":{}}}],["1.3.0",{"_index":730,"title":{},"body":{"dependencies.html":{}}}],["19",{"_index":1056,"title":{},"body":{"overview.html":{}}}],["1_0.html#tokenendpoint",{"_index":426,"title":{},"body":{"classes/LoginOptions.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":433,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["2",{"_index":97,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"changelog.html":{},"index.html":{},"overview.html":{}}}],["2.0",{"_index":1080,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{}}}],["2.1",{"_index":654,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/session-checks.html":{}}}],["20",{"_index":978,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{}}}],["20.000",{"_index":1181,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["2017",{"_index":989,"title":{},"body":{"license.html":{}}}],["3.1",{"_index":1198,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["3.3.7",{"_index":732,"title":{},"body":{"dependencies.html":{}}}],["4.3",{"_index":803,"title":{},"body":{"index.html":{}}}],["4.x",{"_index":797,"title":{},"body":{"index.html":{}}}],["401",{"_index":1206,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["403",{"_index":1207,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["4202",{"_index":870,"title":{},"body":{"index.html":{}}}],["4202]/index.html",{"_index":871,"title":{},"body":{"index.html":{}}}],["4202]/silent",{"_index":872,"title":{},"body":{"index.html":{}}}],["4711",{"_index":1245,"title":{},"body":{"additional-documentation/custom-query-parameters.html":{}}}],["4th",{"_index":909,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/original-config-api.html":{}}}],["5",{"_index":763,"title":{},"body":{"index.html":{},"overview.html":{}}}],["5.x",{"_index":800,"title":{},"body":{"index.html":{}}}],["6",{"_index":766,"title":{},"body":{"index.html":{}}}],["6.5.2",{"_index":734,"title":{},"body":{"dependencies.html":{}}}],["600",{"_index":226,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["7",{"_index":786,"title":{},"body":{"index.html":{}}}],["75",{"_index":1184,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["8",{"_index":1076,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{}}}],["8.0.12",{"_index":733,"title":{},"body":{"dependencies.html":{}}}],["8.0.2",{"_index":718,"title":{},"body":{"dependencies.html":{}}}],["8089|4200",{"_index":869,"title":{},"body":{"index.html":{}}}],["9]{3",{"_index":108,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["_throw(err",{"_index":1216,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["a021627fd9d3the",{"_index":1341,"title":{},"body":{"additional-documentation/server-side-rendering.html":{}}}],["above",{"_index":1021,"title":{},"body":{"license.html":{},"additional-documentation/getting-started.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/original-config-api.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["abstract",{"_index":10,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/CryptoHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["abstraction",{"_index":120,"title":{},"body":{"classes/CryptoHandler.html":{}}}],["abstractvalidationhandler",{"_index":1,"title":{"classes/AbstractValidationHandler.html":{}},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["abstractvalidationhandler:39",{"_index":245,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["abstractvalidationhandler:44",{"_index":244,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["abstractvalidationhandler:69",{"_index":243,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["abstractvalidationhandler:86",{"_index":242,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["access",{"_index":952,"title":{},"body":{"index.html":{},"additional-documentation/events.html":{},"additional-documentation/using-password-flow.html":{}}}],["access_token",{"_index":63,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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":{},"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":669,"title":{},"body":{"changelog.html":{}}}],["acr_values_supported",{"_index":450,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["action",{"_index":1044,"title":{},"body":{"license.html":{},"additional-documentation/session-checks.html":{}}}],["activate",{"_index":1326,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["activated",{"_index":1320,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["actual",{"_index":337,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["adapt",{"_index":1303,"title":{"additional-documentation/adapt-id_token-validation.html":{}},"body":{"additional-documentation/adapt-id_token-validation.html":{}}}],["add",{"_index":980,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["adding",{"_index":1384,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["addition",{"_index":1323,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["additional",{"_index":323,"title":{"additional-documentation/getting-started.html":{},"additional-documentation/preserving-state-(like-the-requested-url).html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/callback-after-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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}},"body":{"classes/LoginOptions.html":{}}}],["adhere",{"_index":1373,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["adjust",{"_index":1188,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["against",{"_index":61,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["alg",{"_index":49,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["alg.charat(0",{"_index":308,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["alg.match(/^.s[0",{"_index":107,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["alg.substr(2",{"_index":114,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["alg2kty(alg",{"_index":306,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["algorithm",{"_index":29,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/CryptoHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["algorithms",{"_index":122,"title":{},"body":{"classes/CryptoHandler.html":{},"classes/JwksValidationHandler.html":{}}}],["aliases",{"_index":1058,"title":{},"body":{"miscellaneous/typealiases.html":{}}}],["align",{"_index":1078,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{}}}],["allow",{"_index":1123,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["allowed",{"_index":224,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["allowedalgorithms",{"_index":208,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["allowedurls",{"_index":567,"title":{},"body":{"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{},"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["allows",{"_index":623,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{},"index.html":{}}}],["already",{"_index":13,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["alternative",{"_index":1150,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["although",{"_index":1422,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["and/or",{"_index":1013,"title":{},"body":{"license.html":{}}}],["angular",{"_index":754,"title":{},"body":{"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.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/configure-custom-oauthstorage.html":{}}}],["angular/animations",{"_index":717,"title":{},"body":{"dependencies.html":{}}}],["angular/common",{"_index":167,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"modules/OAuthModule.html":{},"dependencies.html":{}}}],["angular/common/http",{"_index":157,"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":719,"title":{},"body":{"dependencies.html":{}}}],["angular/core",{"_index":148,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"modules/OAuthModule.html":{},"injectables/UrlHelperService.html":{},"dependencies.html":{},"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["angular/elements",{"_index":720,"title":{},"body":{"dependencies.html":{}}}],["angular/forms",{"_index":721,"title":{},"body":{"dependencies.html":{}}}],["angular/platform",{"_index":722,"title":{},"body":{"dependencies.html":{}}}],["angular/router",{"_index":725,"title":{},"body":{"dependencies.html":{}}}],["angular2",{"_index":758,"title":{},"body":{"index.html":{}}}],["another",{"_index":1141,"title":{},"body":{"additional-documentation/refreshing-a-token.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":{}}}],["anymore",{"_index":377,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["aot",{"_index":1456,"title":{},"body":{"additional-documentation/configure-custom-oauthstorage.html":{}}}],["api",{"_index":655,"title":{"additional-documentation/original-config-api.html":{}},"body":{"changelog.html":{},"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{}}}],["apis",{"_index":767,"title":{},"body":{"index.html":{}}}],["app",{"_index":858,"title":{},"body":{"index.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{}}}],["app.component.html",{"_index":920,"title":{},"body":{"index.html":{}}}],["app/home.html",{"_index":930,"title":{},"body":{"index.html":{}}}],["appcomponent",{"_index":878,"title":{},"body":{"index.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["applicable",{"_index":1280,"title":{},"body":{"additional-documentation/events.html":{}}}],["application",{"_index":889,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{}}}],["applications",{"_index":1095,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{}}}],["appmodule",{"_index":880,"title":{},"body":{"index.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["approach",{"_index":1146,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["approutermodule",{"_index":1294,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["arising",{"_index":1047,"title":{},"body":{"license.html":{}}}],["array",{"_index":568,"title":{},"body":{"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{},"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["array.isarray(params.jwks['keys",{"_index":259,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["aspnetcore",{"_index":1343,"title":{},"body":{"additional-documentation/server-side-rendering.html":{}}}],["asset",{"_index":1162,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["assets",{"_index":1165,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["associated",{"_index":1000,"title":{},"body":{"license.html":{}}}],["asstring",{"_index":92,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["assumes",{"_index":857,"title":{},"body":{"index.html":{}}}],["async",{"_index":25,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["at_hash",{"_index":60,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["athash",{"_index":98,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["attacks",{"_index":351,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["auth",{"_index":361,"title":{},"body":{"classes/LoginOptions.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/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["auth.config",{"_index":915,"title":{},"body":{"index.html":{}}}],["auth_config",{"_index":1061,"title":{},"body":{"miscellaneous/variables.html":{}}}],["authcodeflowconfig",{"_index":1083,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{}}}],["authconfig",{"_index":896,"title":{},"body":{"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["authenticated",{"_index":1339,"title":{},"body":{"additional-documentation/server-side-rendering.html":{}}}],["authentication",{"_index":976,"title":{},"body":{"index.html":{}}}],["authorization_endpoint",{"_index":439,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["authors",{"_index":1037,"title":{},"body":{"license.html":{}}}],["authstorage",{"_index":138,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["automate",{"_index":953,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{}}}],["automatically",{"_index":691,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/session-checks.html":{}}}],["available",{"_index":974,"title":{},"body":{"index.html":{},"modules.html":{},"additional-documentation/events.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["avoid",{"_index":349,"title":{},"body":{"classes/LoginOptions.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":89,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["b",{"_index":1415,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["b64decodeunicode",{"_index":745,"title":{},"body":{"miscellaneous/functions.html":{}}}],["b64decodeunicode(str",{"_index":750,"title":{},"body":{"miscellaneous/functions.html":{}}}],["back",{"_index":1359,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{}}}],["backend",{"_index":773,"title":{},"body":{"index.html":{}}}],["base",{"_index":1365,"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":99,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["base64urlencode(str",{"_index":752,"title":{},"body":{"miscellaneous/functions.html":{}}}],["based",{"_index":1284,"title":{},"body":{"additional-documentation/events.html":{},"additional-documentation/using-password-flow.html":{}}}],["bearer",{"_index":187,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["beaugrand",{"_index":1383,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["before",{"_index":692,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/events.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["beginning",{"_index":765,"title":{},"body":{"index.html":{},"additional-documentation/session-checks.html":{}}}],["below",{"_index":1121,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/using-password-flow.html":{}}}],["best",{"_index":347,"title":{},"body":{"classes/LoginOptions.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/code-flow-+-pcke.html":{}}}],["better",{"_index":681,"title":{},"body":{"changelog.html":{},"additional-documentation/using-password-flow.html":{}}}],["between",{"_index":1116,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/using-password-flow.html":{}}}],["blog",{"_index":1336,"title":{},"body":{"additional-documentation/server-side-rendering.html":{}}}],["boolean",{"_index":170,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"classes/LoginOptions.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":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["bootstrap",{"_index":731,"title":{},"body":{"dependencies.html":{},"index.html":{},"overview.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["bootstrapping",{"_index":1111,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{}}}],["both",{"_index":1119,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["breaking",{"_index":695,"title":{},"body":{"changelog.html":{}}}],["browse",{"_index":1051,"title":{},"body":{"modules.html":{}}}],["browser",{"_index":723,"title":{},"body":{"dependencies.html":{},"index.html":{},"additional-documentation/using-password-flow.html":{}}}],["bug",{"_index":810,"title":{},"body":{"index.html":{}}}],["bugfixes",{"_index":814,"title":{},"body":{"index.html":{}}}],["build",{"_index":982,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["bundle",{"_index":769,"title":{},"body":{"index.html":{}}}],["bundling",{"_index":791,"title":{},"body":{"index.html":{}}}],["bytearrayasstring",{"_index":318,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["c",{"_index":988,"title":{},"body":{"license.html":{}}}],["calchash",{"_index":20,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/CryptoHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["calchash(valuetohash",{"_index":27,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/CryptoHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["calculates",{"_index":32,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["call",{"_index":701,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/refreshing-a-token.html":{}}}],["callback",{"_index":1231,"title":{"additional-documentation/callback-after-login.html":{}},"body":{"additional-documentation/callback-after-login.html":{}}}],["called",{"_index":359,"title":{},"body":{"classes/LoginOptions.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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["calling",{"_index":951,"title":{},"body":{"index.html":{},"additional-documentation/preserving-state-(like-the-requested-url).html":{},"additional-documentation/session-checks.html":{}}}],["calls",{"_index":562,"title":{},"body":{"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{}}}],["care",{"_index":1129,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["case",{"_index":309,"title":{},"body":{"classes/JwksValidationHandler.html":{},"index.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":1311,"title":{},"body":{"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/using-password-flow.html":{}}}],["catch",{"_index":965,"title":{},"body":{"index.html":{}}}],["catch(err",{"_index":1171,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["catcherror",{"_index":159,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["change",{"_index":647,"title":{},"body":{"changelog.html":{}}}],["changelog",{"_index":646,"title":{"changelog.html":{}},"body":{}}],["changes",{"_index":696,"title":{},"body":{"changelog.html":{}}}],["charactes",{"_index":624,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["charge",{"_index":995,"title":{},"body":{"license.html":{}}}],["check",{"_index":346,"title":{},"body":{"classes/LoginOptions.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":{}}}],["check_session_iframe",{"_index":444,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["checks",{"_index":1282,"title":{"additional-documentation/session-checks.html":{}},"body":{"additional-documentation/events.html":{},"additional-documentation/session-checks.html":{}}}],["checkurl(url",{"_index":169,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["circular",{"_index":1220,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["cites",{"_index":1423,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["cjs",{"_index":1392,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["claim",{"_index":1040,"title":{},"body":{"license.html":{}}}],["claim_types_supported",{"_index":462,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["claims",{"_index":415,"title":{},"body":{"classes/LoginOptions.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":{}}}],["claims.given_name",{"_index":935,"title":{},"body":{"index.html":{},"additional-documentation/using-password-flow.html":{}}}],["claims_parameter_supported",{"_index":464,"title":{},"body":{"classes/LoginOptions.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":463,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["claimsathash",{"_index":100,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["class",{"_index":0,"title":{"classes/AbstractValidationHandler.html":{},"classes/CryptoHandler.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/CryptoHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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":{},"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["classes",{"_index":2,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/CryptoHandler.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":372,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["cli",{"_index":1161,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["cli.json",{"_index":1164,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["client",{"_index":403,"title":{},"body":{"classes/LoginOptions.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/code-flow-+-pcke.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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["clientid",{"_index":904,"title":{},"body":{"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["clientids",{"_index":863,"title":{},"body":{"index.html":{}}}],["closed",{"_index":821,"title":{},"body":{"index.html":{}}}],["code",{"_index":781,"title":{"additional-documentation/code-flow-+-pcke.html":{}},"body":{"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{}}}],["code_error",{"_index":495,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["codes",{"_index":1205,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["come",{"_index":1149,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["commands",{"_index":835,"title":{},"body":{"index.html":{}}}],["commonjs",{"_index":790,"title":{},"body":{"index.html":{}}}],["commonmodule",{"_index":536,"title":{},"body":{"modules/OAuthModule.html":{}}}],["communication",{"_index":1175,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["compat",{"_index":735,"title":{},"body":{"dependencies.html":{}}}],["compatible",{"_index":386,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["compensates",{"_index":1136,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["compodoc/compodoc",{"_index":838,"title":{},"body":{"index.html":{}}}],["component",{"_index":916,"title":{},"body":{"index.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["conditions",{"_index":1020,"title":{},"body":{"license.html":{}}}],["config",{"_index":533,"title":{"additional-documentation/original-config-api.html":{}},"body":{"modules/OAuthModule.html":{},"changelog.html":{},"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-systemjs.html":{},"additional-documentation/original-config-api.html":{}}}],["configuration",{"_index":849,"title":{},"body":{"index.html":{},"additional-documentation/code-flow-+-pcke.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":{}}}],["configure",{"_index":893,"title":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}},"body":{"index.html":{},"additional-documentation/code-flow-+-pcke.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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["configured",{"_index":928,"title":{},"body":{"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{}}}],["configuring",{"_index":881,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{}}}],["connect",{"_index":424,"title":{},"body":{"classes/LoginOptions.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/session-checks.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["connection",{"_index":1048,"title":{},"body":{"license.html":{}}}],["consistent",{"_index":1377,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/original-config-api.html":{}}}],["console",{"_index":387,"title":{},"body":{"classes/LoginOptions.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":1236,"title":{},"body":{"additional-documentation/callback-after-login.html":{}}}],["console.debug('given_name",{"_index":1445,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["console.debug('ok",{"_index":1451,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["console.debug('refresh",{"_index":1169,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["console.debug('state",{"_index":1073,"title":{},"body":{"additional-documentation/preserving-state-(like-the-requested-url).html":{}}}],["console.debug('validatesignature",{"_index":264,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["console.debug('your",{"_index":1332,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["console.debug(context",{"_index":1237,"title":{},"body":{"additional-documentation/callback-after-login.html":{}}}],["console.error('actual",{"_index":103,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["console.error('exptected",{"_index":102,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["console.error('refresh",{"_index":1172,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["console.error(error",{"_index":280,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["console.error(event",{"_index":1262,"title":{},"body":{"additional-documentation/events.html":{}}}],["console.log(e));or",{"_index":1255,"title":{},"body":{"additional-documentation/events.html":{}}}],["console.warn(event",{"_index":1263,"title":{},"body":{"additional-documentation/events.html":{}}}],["const",{"_index":176,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"injectables/UrlHelperService.html":{},"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["constructor",{"_index":130,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["constructor(authstorage",{"_index":131,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["constructor(private",{"_index":921,"title":{},"body":{"index.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["constructor(readonly",{"_index":507,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{}}}],["constructor(type",{"_index":481,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{}}}],["contain",{"_index":809,"title":{},"body":{"index.html":{}}}],["contains",{"_index":937,"title":{},"body":{"index.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["context",{"_index":1233,"title":{},"body":{"additional-documentation/callback-after-login.html":{}}}],["contract",{"_index":1045,"title":{},"body":{"license.html":{}}}],["contribute",{"_index":826,"title":{},"body":{"index.html":{}}}],["contributions",{"_index":816,"title":{},"body":{"index.html":{}}}],["convenience",{"_index":658,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/code-flow-+-pcke.html":{}}}],["cookie",{"_index":1143,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["copied",{"_index":1158,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["copies",{"_index":1015,"title":{},"body":{"license.html":{}}}],["copy",{"_index":998,"title":{},"body":{"license.html":{}}}],["copyright",{"_index":987,"title":{},"body":{"license.html":{}}}],["core",{"_index":425,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"index.html":{}}}],["cought",{"_index":1215,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["create",{"_index":407,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["createdefaultlogger",{"_index":545,"title":{},"body":{"modules/OAuthModule.html":{},"miscellaneous/functions.html":{}}}],["createdefaultstorage",{"_index":546,"title":{},"body":{"modules/OAuthModule.html":{},"miscellaneous/functions.html":{}}}],["creates",{"_index":1219,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["credentials",{"_index":1440,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["credits",{"_index":756,"title":{},"body":{"index.html":{}}}],["critical",{"_index":813,"title":{},"body":{"index.html":{}}}],["crypto",{"_index":121,"title":{},"body":{"classes/CryptoHandler.html":{}}}],["cryptohandler",{"_index":118,"title":{"classes/CryptoHandler.html":{}},"body":{"classes/CryptoHandler.html":{},"modules/OAuthModule.html":{}}}],["current",{"_index":232,"title":{},"body":{"classes/JwksValidationHandler.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-password-flow.html":{}}}],["custom",{"_index":333,"title":{"additional-documentation/custom-query-parameters.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}},"body":{"classes/LoginOptions.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":{},"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":327,"title":{},"body":{"classes/LoginOptions.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":{}}}],["customize",{"_index":1452,"title":{},"body":{"additional-documentation/configure-custom-oauthstorage.html":{}}}],["customqueryparams",{"_index":1239,"title":{},"body":{"additional-documentation/custom-query-parameters.html":{}}}],["customurlvalidation",{"_index":569,"title":{},"body":{"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{}}}],["cycle",{"_index":805,"title":{},"body":{"index.html":{}}}],["damages",{"_index":1041,"title":{},"body":{"license.html":{}}}],["data",{"_index":413,"title":{},"body":{"classes/LoginOptions.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":{}}}],["deal",{"_index":1002,"title":{},"body":{"license.html":{}}}],["dealings",{"_index":1049,"title":{},"body":{"license.html":{}}}],["debug",{"_index":514,"title":{},"body":{"classes/OAuthLogger.html":{}}}],["debug(message",{"_index":394,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["debugging",{"_index":1252,"title":{},"body":{"additional-documentation/events.html":{}}}],["decide",{"_index":1315,"title":{},"body":{"additional-documentation/adapt-id_token-validation.html":{}}}],["declarations",{"_index":549,"title":{},"body":{"modules/OAuthModule.html":{},"index.html":{},"overview.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["declare",{"_index":246,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["decodekey",{"_index":627,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["decodekey(k",{"_index":631,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["decodeuricomponent(hash",{"_index":604,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["decodeuricomponent(k",{"_index":642,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["decodeuricomponent(v",{"_index":643,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["decodevalue",{"_index":628,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["decodevalue(v",{"_index":633,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["default",{"_index":211,"title":{},"body":{"classes/JwksValidationHandler.html":{},"classes/LoginOptions.html":{},"modules/OAuthModule.html":{},"changelog.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/refreshing-a-token.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":1393,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["defaultoauthinterceptor",{"_index":125,"title":{"interceptors/DefaultOAuthInterceptor.html":{}},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"modules/OAuthModule.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["defaults",{"_index":697,"title":{},"body":{"changelog.html":{}}}],["define",{"_index":678,"title":{},"body":{"changelog.html":{},"additional-documentation/refreshing-a-token.html":{}}}],["defined",{"_index":30,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/CryptoHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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/UrlHelperService.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.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/original-config-api.html":{}}}],["defines",{"_index":353,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["deleted",{"_index":1322,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["demand",{"_index":815,"title":{},"body":{"index.html":{},"additional-documentation/using-password-flow.html":{}}}],["demands",{"_index":703,"title":{},"body":{"changelog.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/using-password-flow.html":{}}}],["demo",{"_index":865,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["demonstration",{"_index":1234,"title":{},"body":{"additional-documentation/callback-after-login.html":{}}}],["dependencies",{"_index":716,"title":{"dependencies.html":{}},"body":{"dependencies.html":{},"overview.html":{}}}],["dependency",{"_index":391,"title":{},"body":{"classes/LoginOptions.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/adapt-id_token-validation.html":{}}}],["depending",{"_index":1107,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{}}}],["deprecated",{"_index":364,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["deps",{"_index":1387,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["described",{"_index":1410,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["description",{"_index":9,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/CryptoHandler.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":1448,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["details",{"_index":1273,"title":{},"body":{"additional-documentation/events.html":{},"additional-documentation/original-config-api.html":{}}}],["detects",{"_index":360,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["di",{"_index":680,"title":{},"body":{"changelog.html":{}}}],["differ",{"_index":231,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["different",{"_index":1258,"title":{},"body":{"additional-documentation/events.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["differs",{"_index":1115,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["directly",{"_index":949,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/using-password-flow.html":{}}}],["directory",{"_index":1160,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["disable",{"_index":343,"title":{},"body":{"classes/LoginOptions.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":{}}}],["disabled",{"_index":1271,"title":{},"body":{"additional-documentation/events.html":{}}}],["disableoauth2statecheck",{"_index":328,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["disablepkci",{"_index":1102,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{}}}],["discovery",{"_index":204,"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/JwksValidationHandler.html":{},"classes/LoginOptions.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/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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["discovery_document_load_error",{"_index":489,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["discovery_document_loaded",{"_index":485,"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":490,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["display",{"_index":945,"title":{},"body":{"index.html":{}}}],["display_values_supported",{"_index":461,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["displayed",{"_index":376,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["distribute",{"_index":1011,"title":{},"body":{"license.html":{}}}],["docs",{"_index":827,"title":{},"body":{"index.html":{}}}],["document",{"_index":205,"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/JwksValidationHandler.html":{},"classes/LoginOptions.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/code-flow-+-pcke.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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["documentation",{"_index":683,"title":{},"body":{"changelog.html":{},"index.html":{},"license.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["doesn't",{"_index":1360,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{}}}],["doing",{"_index":356,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["domains",{"_index":1371,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["don't",{"_index":944,"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":1402,"title":{},"body":{"additional-documentation/original-config-api.html":{}}}],["draft",{"_index":1079,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{}}}],["dummy",{"_index":1420,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["dummyclientsecret",{"_index":1096,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/using-password-flow.html":{}}}],["during",{"_index":1270,"title":{},"body":{"additional-documentation/events.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["dynamic",{"_index":724,"title":{},"body":{"dependencies.html":{}}}],["e",{"_index":312,"title":{},"body":{"classes/JwksValidationHandler.html":{},"changelog.html":{},"additional-documentation/using-password-flow.html":{}}}],["e.type",{"_index":1330,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["each",{"_index":808,"title":{},"body":{"index.html":{}}}],["ease",{"_index":848,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{}}}],["easiest",{"_index":1222,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["ec",{"_index":313,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["elements",{"_index":727,"title":{},"body":{"dependencies.html":{}}}],["email",{"_index":912,"title":{},"body":{"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["enable",{"_index":1353,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{}}}],["encodekey",{"_index":629,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["encodekey(k",{"_index":636,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["encoder",{"_index":622,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{},"dependencies.html":{}}}],["encodeuricomponent(k",{"_index":640,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["encodeuricomponent(v",{"_index":641,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["encodevalue",{"_index":630,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["encodevalue(v",{"_index":638,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["encounter",{"_index":1265,"title":{},"body":{"additional-documentation/events.html":{}}}],["end_session_endpoint",{"_index":445,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["endpoint",{"_index":422,"title":{},"body":{"classes/LoginOptions.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":{}}}],["endpoints",{"_index":1363,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/original-config-api.html":{}}}],["endpont",{"_index":1434,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["ends",{"_index":1321,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["enforce",{"_index":1091,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{}}}],["enhancements",{"_index":824,"title":{},"body":{"index.html":{}}}],["ensures",{"_index":1362,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["enter",{"_index":1407,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["enters",{"_index":843,"title":{},"body":{"index.html":{}}}],["enum",{"_index":1285,"title":{},"body":{"additional-documentation/events.html":{}}}],["environment",{"_index":785,"title":{},"body":{"index.html":{}}}],["err",{"_index":574,"title":{},"body":{"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{}}}],["err));when",{"_index":1173,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["error",{"_index":163,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/events.html":{}}}],["error('algorithm",{"_index":111,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["error('array",{"_index":262,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["error('cannot",{"_index":314,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["error('parameter",{"_index":253,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["error(message",{"_index":399,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["errorhandler",{"_index":133,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["errors",{"_index":1203,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/original-config-api.html":{}}}],["es256",{"_index":218,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["es384",{"_index":219,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["escapedkey",{"_index":613,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["escapedvalue",{"_index":614,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["etc",{"_index":876,"title":{},"body":{"index.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["event",{"_index":689,"title":{},"body":{"changelog.html":{},"license.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/events.html":{},"additional-documentation/session-checks.html":{}}}],["events",{"_index":365,"title":{"additional-documentation/events.html":{}},"body":{"classes/LoginOptions.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":{},"additional-documentation/session-checks.html":{}}}],["events.ts",{"_index":1286,"title":{},"body":{"additional-documentation/events.html":{}}}],["eventtype",{"_index":482,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["example",{"_index":1212,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["execute",{"_index":1110,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{}}}],["expected",{"_index":254,"title":{},"body":{"classes/JwksValidationHandler.html":{},"additional-documentation/events.html":{}}}],["expired",{"_index":1449,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["expires",{"_index":693,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/refreshing-a-token.html":{}}}],["expires_in",{"_index":429,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["explicitly",{"_index":1314,"title":{},"body":{"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/using-password-flow.html":{}}}],["export",{"_index":72,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/CryptoHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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":{},"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["exports",{"_index":550,"title":{},"body":{"modules/OAuthModule.html":{},"overview.html":{}}}],["express",{"_index":1028,"title":{},"body":{"license.html":{}}}],["extend",{"_index":1458,"title":{},"body":{"additional-documentation/configure-custom-oauthstorage.html":{}}}],["extends",{"_index":206,"title":{},"body":{"classes/JwksValidationHandler.html":{},"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{}}}],["extensive",{"_index":1257,"title":{},"body":{"additional-documentation/events.html":{}}}],["fact",{"_index":1137,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["factor",{"_index":1189,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["factories",{"_index":547,"title":{},"body":{"modules/OAuthModule.html":{}}}],["factory",{"_index":1455,"title":{},"body":{"additional-documentation/configure-custom-oauthstorage.html":{}}}],["fail",{"_index":700,"title":{},"body":{"changelog.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["fails",{"_index":1361,"title":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}},"body":{}}],["false",{"_index":240,"title":{},"body":{"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["features",{"_index":649,"title":{},"body":{"changelog.html":{},"index.html":{}}}],["feel",{"_index":817,"title":{},"body":{"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["fetch",{"_index":1112,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/using-password-flow.html":{}}}],["fetching",{"_index":1438,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["field",{"_index":50,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["file",{"_index":5,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/CryptoHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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":{},"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/events.html":{}}}],["files",{"_index":1001,"title":{},"body":{"license.html":{}}}],["find",{"_index":1065,"title":{},"body":{"additional-documentation/getting-started.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/original-config-api.html":{}}}],["fine",{"_index":968,"title":{},"body":{"index.html":{}}}],["fired",{"_index":1183,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["first",{"_index":907,"title":{},"body":{"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/original-config-api.html":{}}}],["fitness",{"_index":1033,"title":{},"body":{"license.html":{}}}],["fixes",{"_index":811,"title":{},"body":{"index.html":{}}}],["flight",{"_index":918,"title":{},"body":{"index.html":{}}}],["flow",{"_index":686,"title":{"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{}},"body":{"changelog.html":{},"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/custom-query-parameters.html":{},"additional-documentation/events.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{}}}],["flows",{"_index":844,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/using-password-flow.html":{}}}],["folder",{"_index":829,"title":{},"body":{"index.html":{}}}],["following",{"_index":834,"title":{},"body":{"index.html":{},"license.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["follows",{"_index":1454,"title":{},"body":{"additional-documentation/configure-custom-oauthstorage.html":{}}}],["form",{"_index":926,"title":{},"body":{"index.html":{},"additional-documentation/using-password-flow.html":{}}}],["format",{"_index":1391,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["former",{"_index":1307,"title":{},"body":{"additional-documentation/adapt-id_token-validation.html":{}}}],["forroot",{"_index":529,"title":{},"body":{"modules/OAuthModule.html":{}}}],["forroot(config",{"_index":530,"title":{},"body":{"modules/OAuthModule.html":{}}}],["found",{"_index":279,"title":{},"body":{"classes/JwksValidationHandler.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/server-side-rendering.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["four",{"_index":1097,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{}}}],["fragment",{"_index":334,"title":{},"body":{"classes/LoginOptions.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":{}}}],["free",{"_index":818,"title":{},"body":{"index.html":{},"license.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["full",{"_index":1283,"title":{},"body":{"additional-documentation/events.html":{}}}],["function",{"_index":357,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthResourceServerConfig.html":{},"interfaces/ValidationParams.html":{},"index.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["functions",{"_index":744,"title":{"miscellaneous/functions.html":{}},"body":{"miscellaneous/functions.html":{}}}],["furnished",{"_index":1018,"title":{},"body":{"license.html":{}}}],["further",{"_index":851,"title":{},"body":{"index.html":{},"additional-documentation/code-flow-+-pcke.html":{}}}],["g",{"_index":709,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/using-password-flow.html":{}}}],["geheim",{"_index":1428,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["geheim').then",{"_index":1447,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["geheim').then((resp",{"_index":1442,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["general",{"_index":964,"title":{},"body":{"index.html":{},"additional-documentation/code-flow-+-pcke.html":{}}}],["generate",{"_index":833,"title":{},"body":{"index.html":{}}}],["generator",{"_index":757,"title":{},"body":{"index.html":{}}}],["gethashfragmentparams",{"_index":596,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["gethashfragmentparams(customhashfragment",{"_index":598,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["getitem",{"_index":581,"title":{},"body":{"classes/OAuthStorage.html":{}}}],["getitem(key",{"_index":409,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["gets",{"_index":892,"title":{},"body":{"index.html":{}}}],["getting",{"_index":644,"title":{"changelog.html":{},"index.html":{},"license.html":{},"additional-documentation/getting-started.html":{}},"body":{"additional-documentation/getting-started.html":{},"additional-documentation/refreshing-a-token.html":{}}}],["give",{"_index":1176,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["gone",{"_index":1278,"title":{},"body":{"additional-documentation/events.html":{}}}],["google",{"_index":1368,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["graceperiod",{"_index":299,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["graceperiodinsec",{"_index":209,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["grant_types_supported",{"_index":452,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["granted",{"_index":994,"title":{},"body":{"license.html":{}}}],["graph",{"_index":1050,"title":{},"body":{"modules.html":{}}}],["great",{"_index":1335,"title":{},"body":{"additional-documentation/server-side-rendering.html":{}}}],["guide",{"_index":1066,"title":{},"body":{"additional-documentation/getting-started.html":{}}}],["half",{"_index":1192,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["hallo",{"_index":939,"title":{},"body":{"index.html":{}}}],["handle(req",{"_index":191,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["handleerror",{"_index":571,"title":{},"body":{"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{}}}],["handleerror(err",{"_index":572,"title":{},"body":{"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["handler",{"_index":164,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"classes/JwksValidationHandler.html":{},"classes/NullValidationHandler.html":{},"modules/OAuthModule.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["handler.ts",{"_index":8,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/CryptoHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["handler.ts:10",{"_index":573,"title":{},"body":{"classes/OAuthNoopResourceServerErrorHandler.html":{}}}],["handler.ts:11",{"_index":474,"title":{},"body":{"classes/NullValidationHandler.html":{}}}],["handler.ts:141",{"_index":233,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["handler.ts:148",{"_index":235,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["handler.ts:20",{"_index":619,"title":{},"body":{"classes/ValidationHandler.html":{}}}],["handler.ts:21",{"_index":223,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["handler.ts:27",{"_index":618,"title":{},"body":{"classes/ValidationHandler.html":{}}}],["handler.ts:39",{"_index":66,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{}}}],["handler.ts:41",{"_index":239,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["handler.ts:44",{"_index":58,"title":{},"body":{"classes/AbstractValidationHandler.html":{}}}],["handler.ts:5",{"_index":580,"title":{},"body":{"classes/OAuthResourceServerErrorHandler.html":{}}}],["handler.ts:6",{"_index":123,"title":{},"body":{"classes/CryptoHandler.html":{}}}],["handler.ts:69",{"_index":47,"title":{},"body":{"classes/AbstractValidationHandler.html":{}}}],["handler.ts:8",{"_index":475,"title":{},"body":{"classes/NullValidationHandler.html":{}}}],["handler.ts:86",{"_index":31,"title":{},"body":{"classes/AbstractValidationHandler.html":{}}}],["handlers",{"_index":80,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["handling",{"_index":1201,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["hash",{"_index":33,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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":{},"additional-documentation/custom-query-parameters.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["hash.indexof",{"_index":605,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["hash.substr(1",{"_index":608,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["hash.substr(questionmarkposition",{"_index":607,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["hashalg",{"_index":86,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["hashalg.digeststring(valuetohash",{"_index":317,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["hashing",{"_index":764,"title":{},"body":{"index.html":{}}}],["hashlocationstrategy",{"_index":789,"title":{},"body":{"index.html":{}}}],["hashstrategy",{"_index":969,"title":{"additional-documentation/routing-with-the-hashstrategy.html":{}},"body":{"index.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["header",{"_index":55,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/JwksValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["headers",{"_index":188,"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":540,"title":{},"body":{"modules/OAuthModule.html":{}}}],["helper.service.ts",{"_index":595,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["helper.service.ts:25",{"_index":601,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["helper.service.ts:5",{"_index":599,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["helper.ts",{"_index":747,"title":{},"body":{"miscellaneous/functions.html":{}}}],["hence",{"_index":895,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{}}}],["here",{"_index":1117,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/working-with-httpinterceptors.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":{}}}],["here's",{"_index":1264,"title":{},"body":{"additional-documentation/events.html":{}}}],["hereby",{"_index":993,"title":{},"body":{"license.html":{}}}],["hexstring",{"_index":236,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["hidden",{"_index":1139,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["holders",{"_index":1038,"title":{},"body":{"license.html":{}}}],["home",{"_index":1235,"title":{},"body":{"additional-documentation/callback-after-login.html":{}}}],["homecomponent",{"_index":879,"title":{},"body":{"index.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["hook",{"_index":379,"title":{},"body":{"classes/LoginOptions.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":{}}}],["hs256",{"_index":212,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["hs384",{"_index":213,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["hs512",{"_index":214,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["http",{"_index":1204,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["http://localhost:8080",{"_index":860,"title":{},"body":{"index.html":{}}}],["http://localhost:8080/#/home",{"_index":1302,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["http://openid.net/specs/openid",{"_index":423,"title":{},"body":{"classes/LoginOptions.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":959,"title":{},"body":{"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["http_interceptors",{"_index":537,"title":{},"body":{"modules/OAuthModule.html":{}}}],["httpclientmodule",{"_index":538,"title":{},"body":{"modules/OAuthModule.html":{},"index.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["httperrorresponse",{"_index":156,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["httpevent",{"_index":153,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["httphandler",{"_index":142,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["httpinterceptor",{"_index":154,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["httpinterceptors",{"_index":1197,"title":{"additional-documentation/working-with-httpinterceptors.html":{}},"body":{}}],["httpparametercodec",{"_index":626,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["httprequest",{"_index":140,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["httpresponse",{"_index":155,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["https",{"_index":704,"title":{},"body":{"changelog.html":{}}}],["https://demo.identityserver.io",{"_index":1084,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{}}}],["https://github.com/lankaapura/angular",{"_index":1342,"title":{},"body":{"additional-documentation/server-side-rendering.html":{}}}],["https://github.com/manfredsteyer/angular",{"_index":780,"title":{},"body":{"index.html":{}}}],["https://manfredsteyer.github.io/angular",{"_index":782,"title":{},"body":{"index.html":{}}}],["https://medium.com/lankapura/angular",{"_index":1338,"title":{},"body":{"additional-documentation/server-side-rendering.html":{}}}],["https://steyer",{"_index":897,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["i.e",{"_index":1367,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["id",{"_index":294,"title":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}},"body":{"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["id_token",{"_index":51,"title":{"additional-documentation/adapt-id_token-validation.html":{}},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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/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/JwksValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["id_token_encryption_alg_values_supported",{"_index":458,"title":{},"body":{"classes/LoginOptions.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":459,"title":{},"body":{"classes/LoginOptions.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":457,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["idclaims",{"_index":416,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["ideas",{"_index":823,"title":{},"body":{"index.html":{}}}],["identity",{"_index":771,"title":{},"body":{"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["identityserver",{"_index":794,"title":{},"body":{"index.html":{}}}],["idsvr",{"_index":1344,"title":{},"body":{"additional-documentation/server-side-rendering.html":{}}}],["idtoken",{"_index":74,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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":{},"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":418,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["idtokenexpiresat",{"_index":420,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["idtokenhandler",{"_index":256,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["idtokenheader",{"_index":76,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/LoginOptions.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":419,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["iframe",{"_index":1140,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["iframes",{"_index":341,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["implcit",{"_index":1419,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["implemantion",{"_index":1213,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["implement",{"_index":884,"title":{},"body":{"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["implementation",{"_index":11,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/LoginOptions.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":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{}}}],["implementations",{"_index":408,"title":{},"body":{"classes/LoginOptions.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":1317,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["implementing",{"_index":687,"title":{},"body":{"changelog.html":{},"index.html":{}}}],["implements",{"_index":14,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["implicit",{"_index":685,"title":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{}},"body":{"changelog.html":{},"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/custom-query-parameters.html":{},"additional-documentation/events.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{}}}],["implied",{"_index":1029,"title":{},"body":{"license.html":{}}}],["import",{"_index":68,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/JwksValidationHandler.html":{},"classes/NullValidationHandler.html":{},"modules/OAuthModule.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"injectables/UrlHelperService.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.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/configure-custom-oauthstorage.html":{}}}],["important",{"_index":1098,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{}}}],["imports",{"_index":548,"title":{},"body":{"modules/OAuthModule.html":{},"index.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["included",{"_index":362,"title":{},"body":{"classes/LoginOptions.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":355,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["including",{"_index":1005,"title":{},"body":{"license.html":{}}}],["index",{"_index":21,"title":{"index.html":{}},"body":{"classes/AbstractValidationHandler.html":{},"classes/CryptoHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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":{},"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":902,"title":{},"body":{"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.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/original-config-api.html":{}}}],["indexable",{"_index":616,"title":{},"body":{"interfaces/UserInfo.html":{}}}],["infer",{"_index":315,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["inferhashalgorithm",{"_index":24,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{}}}],["inferhashalgorithm(jwtheader",{"_index":45,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["infers",{"_index":48,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["info",{"_index":3,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/CryptoHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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":{},"additional-documentation/preserving-state-(like-the-requested-url).html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/using-password-flow.html":{}}}],["info(message",{"_index":396,"title":{},"body":{"classes/LoginOptions.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":1074,"title":{},"body":{"additional-documentation/preserving-state-(like-the-requested-url).html":{}}}],["information",{"_index":970,"title":{},"body":{"index.html":{},"additional-documentation/events.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":1248,"title":{},"body":{"additional-documentation/events.html":{}}}],["inherited",{"_index":241,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["initial",{"_index":1289,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["initialize",{"_index":1103,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{}}}],["initializes",{"_index":1106,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{}}}],["initialnavigation",{"_index":1297,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["initimplicitflow",{"_index":929,"title":{},"body":{"index.html":{},"additional-documentation/preserving-state-(like-the-requested-url).html":{}}}],["initloginflow",{"_index":1105,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{}}}],["inject",{"_index":147,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["injectable",{"_index":146,"title":{"injectables/UrlHelperService.html":{}},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"injectables/UrlHelperService.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["injectables",{"_index":593,"title":{},"body":{"injectables/UrlHelperService.html":{},"overview.html":{}}}],["injecting",{"_index":1218,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["injection",{"_index":392,"title":{},"body":{"classes/LoginOptions.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('auth_config",{"_index":1064,"title":{},"body":{"miscellaneous/variables.html":{}}}],["install",{"_index":837,"title":{},"body":{"index.html":{}}}],["installing",{"_index":874,"title":{},"body":{"index.html":{}}}],["instance",{"_index":1190,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["instanceof",{"_index":1261,"title":{},"body":{"additional-documentation/events.html":{}}}],["instead",{"_index":336,"title":{},"body":{"classes/LoginOptions.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":{}}}],["interaction",{"_index":1145,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["intercept",{"_index":129,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["intercept(req",{"_index":139,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["intercepted",{"_index":563,"title":{},"body":{"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{}}}],["interceptor",{"_index":124,"title":{"interceptors/DefaultOAuthInterceptor.html":{}},"body":{"index.html":{}}}],["interceptors",{"_index":126,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["interceptors/default",{"_index":543,"title":{},"body":{"modules/OAuthModule.html":{}}}],["interceptors/resource",{"_index":542,"title":{},"body":{"modules/OAuthModule.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":{},"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":588,"title":{},"body":{"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"interfaces/ValidationParams.html":{},"overview.html":{}}}],["internally",{"_index":385,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["introduced",{"_index":894,"title":{},"body":{"index.html":{}}}],["invalid_nonce_in_state",{"_index":488,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{},"additional-documentation/events.html":{}}}],["ionic",{"_index":983,"title":{},"body":{"index.html":{}}}],["isn't",{"_index":469,"title":{},"body":{"classes/NullValidationHandler.html":{},"additional-documentation/using-password-flow.html":{}}}],["isplatformbrowser",{"_index":166,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["issuer",{"_index":438,"title":{},"body":{"classes/LoginOptions.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/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/original-config-api.html":{}}}],["issuer's",{"_index":713,"title":{},"body":{"changelog.html":{}}}],["issues",{"_index":822,"title":{},"body":{"index.html":{}}}],["issuing",{"_index":1138,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["isvalid",{"_index":301,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["java",{"_index":776,"title":{},"body":{"index.html":{}}}],["job",{"_index":1298,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["js",{"_index":729,"title":{},"body":{"dependencies.html":{},"additional-documentation/using-systemjs.html":{}}}],["json",{"_index":199,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["jsrasign",{"_index":761,"title":{},"body":{"index.html":{}}}],["jsrsasign",{"_index":251,"title":{},"body":{"classes/JwksValidationHandler.html":{},"dependencies.html":{},"additional-documentation/using-systemjs.html":{}}}],["jwks",{"_index":78,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"additional-documentation/events.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["jwks_load_error",{"_index":487,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["jwks_uri",{"_index":446,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["jwksvalidationhandler",{"_index":194,"title":{"classes/JwksValidationHandler.html":{}},"body":{"classes/JwksValidationHandler.html":{},"modules/OAuthModule.html":{},"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["jwksvalidationhandler();in",{"_index":1310,"title":{},"body":{"additional-documentation/adapt-id_token-validation.html":{}}}],["jwtheader",{"_index":52,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["jwtheader['alg",{"_index":106,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["k",{"_index":276,"title":{},"body":{"classes/JwksValidationHandler.html":{},"classes/WebHttpUrlEncodingCodec.html":{}}}],["k['kid",{"_index":269,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["k['kty",{"_index":277,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["k['use",{"_index":270,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["keep",{"_index":1154,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["kevin",{"_index":1382,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["key",{"_index":201,"title":{},"body":{"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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":774,"title":{},"body":{"index.html":{}}}],["keyobj",{"_index":295,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["keys",{"_index":198,"title":{},"body":{"classes/JwksValidationHandler.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["keys.filter",{"_index":275,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["keys.find(k",{"_index":268,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["kicks",{"_index":1398,"title":{},"body":{"additional-documentation/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["kid",{"_index":265,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["kind",{"_index":1027,"title":{},"body":{"license.html":{}}}],["known",{"_index":1135,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["known/openid",{"_index":1430,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["kty",{"_index":272,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["labels",{"_index":825,"title":{},"body":{"index.html":{}}}],["last",{"_index":1120,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["later",{"_index":1308,"title":{},"body":{"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/using-password-flow.html":{}}}],["lates",{"_index":648,"title":{},"body":{"changelog.html":{}}}],["leads",{"_index":1221,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/session-checks.html":{}}}],["leftmosthalf",{"_index":94,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["legend",{"_index":1053,"title":{},"body":{"overview.html":{}}}],["levels",{"_index":1259,"title":{},"body":{"additional-documentation/events.html":{}}}],["leveraging",{"_index":885,"title":{},"body":{"index.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["liability",{"_index":1042,"title":{},"body":{"license.html":{}}}],["liable",{"_index":1039,"title":{},"body":{"license.html":{}}}],["lib",{"_index":373,"title":{},"body":{"classes/LoginOptions.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":{}}}],["library",{"_index":759,"title":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{}},"body":{"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/working-with-httpinterceptors.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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["library's",{"_index":1375,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["license",{"_index":986,"title":{"license.html":{}},"body":{}}],["life",{"_index":1186,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["limitation",{"_index":1006,"title":{},"body":{"license.html":{},"additional-documentation/refreshing-a-token.html":{}}}],["limited",{"_index":1030,"title":{},"body":{"license.html":{}}}],["line",{"_index":1163,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/using-password-flow.html":{}}}],["list",{"_index":1126,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/events.html":{}}}],["listed",{"_index":1210,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["lite",{"_index":737,"title":{},"body":{"dependencies.html":{}}}],["load",{"_index":1400,"title":{},"body":{"additional-documentation/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["loaddiscoverydocumentandtrylogin",{"_index":662,"title":{},"body":{"changelog.html":{}}}],["loaded",{"_index":293,"title":{},"body":{"classes/JwksValidationHandler.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/using-password-flow.html":{}}}],["loadedkeys",{"_index":289,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["loading",{"_index":1443,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["loadkeys",{"_index":79,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["loaduserprofile",{"_index":1274,"title":{},"body":{"additional-documentation/events.html":{}}}],["local",{"_index":710,"title":{},"body":{"changelog.html":{},"additional-documentation/session-checks.html":{}}}],["localhost:[8080",{"_index":868,"title":{},"body":{"index.html":{}}}],["localstorage",{"_index":405,"title":{},"body":{"classes/LoginOptions.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/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["location.origin",{"_index":1157,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["locationstrategy",{"_index":1287,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["log",{"_index":515,"title":{},"body":{"classes/OAuthLogger.html":{},"changelog.html":{},"additional-documentation/events.html":{}}}],["log(message",{"_index":397,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["logged",{"_index":1142,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["loggin",{"_index":1435,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["logging",{"_index":383,"title":{},"body":{"classes/LoginOptions.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":{}}}],["login",{"_index":675,"title":{"additional-documentation/callback-after-login.html":{}},"body":{"changelog.html":{},"index.html":{},"additional-documentation/preserving-state-(like-the-requested-url).html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["loginoptions",{"_index":321,"title":{"classes/LoginOptions.html":{}},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["logoff",{"_index":932,"title":{},"body":{"index.html":{}}}],["logout",{"_index":506,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"index.html":{},"miscellaneous/typealiases.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{}}}],["logs",{"_index":674,"title":{},"body":{"changelog.html":{},"additional-documentation/events.html":{}}}],["long",{"_index":1281,"title":{},"body":{"additional-documentation/events.html":{}}}],["longer",{"_index":1256,"title":{},"body":{"additional-documentation/events.html":{}}}],["look",{"_index":961,"title":{},"body":{"index.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{}}}],["lower",{"_index":958,"title":{},"body":{"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["main",{"_index":1155,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/events.html":{},"additional-documentation/using-systemjs.html":{}}}],["maintain",{"_index":1376,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["major",{"_index":807,"title":{},"body":{"index.html":{}}}],["make",{"_index":17,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/using-password-flow.html":{}}}],["management",{"_index":670,"title":{},"body":{"changelog.html":{},"additional-documentation/session-checks.html":{}}}],["manfred",{"_index":990,"title":{},"body":{"license.html":{}}}],["manually",{"_index":1299,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{}}}],["map",{"_index":1394,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["matching",{"_index":116,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/CryptoHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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":{},"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/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/callback-after-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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["matchingkeys",{"_index":274,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["matchingkeys.length",{"_index":278,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["matchingkeys[0",{"_index":286,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["max/geheim",{"_index":862,"title":{},"body":{"index.html":{}}}],["means",{"_index":672,"title":{},"body":{"changelog.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/session-checks.html":{}}}],["mentioned",{"_index":855,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/original-config-api.html":{}}}],["merchantability",{"_index":1032,"title":{},"body":{"license.html":{}}}],["merge",{"_index":1009,"title":{},"body":{"license.html":{}}}],["message",{"_index":363,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["meta",{"_index":1386,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["method",{"_index":15,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/LoginOptions.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":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{}}}],["methods",{"_index":22,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/CryptoHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/JwksValidationHandler.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/OAuthStorage.html":{},"injectables/UrlHelperService.html":{},"classes/ValidationHandler.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"changelog.html":{}}}],["mind",{"_index":1090,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["minimize",{"_index":768,"title":{},"body":{"index.html":{}}}],["minutes",{"_index":979,"title":{},"body":{"index.html":{}}}],["miscellaneous",{"_index":743,"title":{"miscellaneous/functions.html":{},"miscellaneous/typealiases.html":{},"miscellaneous/variables.html":{}},"body":{"miscellaneous/functions.html":{},"miscellaneous/typealiases.html":{},"miscellaneous/variables.html":{}}}],["missing",{"_index":263,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["modify",{"_index":1008,"title":{},"body":{"license.html":{}}}],["module",{"_index":523,"title":{"modules/OAuthModule.html":{}},"body":{"overview.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["module.config",{"_index":165,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"modules/OAuthModule.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["module.config.ts",{"_index":557,"title":{},"body":{"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{}}}],["module.config.ts:11",{"_index":577,"title":{},"body":{"classes/OAuthResourceServerConfig.html":{}}}],["module.config.ts:12",{"_index":579,"title":{},"body":{"classes/OAuthResourceServerConfig.html":{}}}],["module.config.ts:13",{"_index":578,"title":{},"body":{"classes/OAuthResourceServerConfig.html":{}}}],["module.config.ts:2",{"_index":560,"title":{},"body":{"classes/OAuthModuleConfig.html":{}}}],["moduleconfig",{"_index":135,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["modules",{"_index":525,"title":{"modules.html":{}},"body":{"modules/OAuthModule.html":{},"modules.html":{}}}],["modulewithproviders",{"_index":534,"title":{},"body":{"modules/OAuthModule.html":{}}}],["more",{"_index":283,"title":{},"body":{"classes/JwksValidationHandler.html":{},"index.html":{},"additional-documentation/events.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{}}}],["msec",{"_index":1180,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["much",{"_index":801,"title":{},"body":{"index.html":{}}}],["multi",{"_index":555,"title":{},"body":{"modules/OAuthModule.html":{}}}],["name",{"_index":39,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/CryptoHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/JwksValidationHandler.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":{},"index.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["navigation",{"_index":1290,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["need",{"_index":804,"title":{},"body":{"index.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["needed",{"_index":1087,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{}}}],["net",{"_index":795,"title":{},"body":{"index.html":{}}}],["net/.net",{"_index":772,"title":{},"body":{"index.html":{}}}],["new",{"_index":110,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"changelog.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/code-flow-+-pcke.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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["newer",{"_index":799,"title":{},"body":{"index.html":{}}}],["next",{"_index":141,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["next.handle(req",{"_index":180,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["next.handle(req).catch(err",{"_index":1230,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["ngmodule",{"_index":535,"title":{},"body":{"modules/OAuthModule.html":{},"index.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["node_modules/jsrsasign/lib/jsrsasign",{"_index":1395,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["nonce",{"_index":354,"title":{},"body":{"classes/LoginOptions.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":{}}}],["noninfringement",{"_index":1036,"title":{},"body":{"license.html":{}}}],["normally",{"_index":370,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["note",{"_index":1133,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["notes",{"_index":652,"title":{},"body":{"changelog.html":{}}}],["nothing",{"_index":471,"title":{},"body":{"classes/NullValidationHandler.html":{}}}],["notice",{"_index":1022,"title":{},"body":{"license.html":{}}}],["notification",{"_index":668,"title":{},"body":{"changelog.html":{},"additional-documentation/session-checks.html":{}}}],["notifications",{"_index":1327,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["notified",{"_index":673,"title":{},"body":{"changelog.html":{},"additional-documentation/session-checks.html":{}}}],["npm",{"_index":836,"title":{},"body":{"index.html":{}}}],["null",{"_index":410,"title":{},"body":{"classes/LoginOptions.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":{},"index.html":{}}}],["nullvalidationhandler",{"_index":467,"title":{"classes/NullValidationHandler.html":{}},"body":{"classes/NullValidationHandler.html":{},"modules/OAuthModule.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["number",{"_index":225,"title":{},"body":{"classes/JwksValidationHandler.html":{},"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["oauth",{"_index":150,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"modules/OAuthModule.html":{},"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["oauth.interceptor",{"_index":544,"title":{},"body":{"modules/OAuthModule.html":{}}}],["oauth.interceptor.ts",{"_index":128,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["oauth.interceptor.ts:19",{"_index":137,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["oauth.interceptor.ts:38",{"_index":143,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["oauth2",{"_index":344,"title":{},"body":{"classes/LoginOptions.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/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.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/original-config-api.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["oauth2/oidc",{"_index":886,"title":{},"body":{"index.html":{},"additional-documentation/using-password-flow.html":{}}}],["oautherrorevent",{"_index":478,"title":{"classes/OAuthErrorEvent.html":{}},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"additional-documentation/events.html":{}}}],["oauthevent",{"_index":480,"title":{"classes/OAuthEvent.html":{}},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{}}}],["oauthinfoevent",{"_index":511,"title":{"classes/OAuthInfoEvent.html":{}},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{}}}],["oauthlogger",{"_index":393,"title":{"classes/OAuthLogger.html":{}},"body":{"classes/LoginOptions.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":524,"title":{"modules/OAuthModule.html":{}},"body":{"modules/OAuthModule.html":{},"index.html":{},"modules.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["oauthmodule.forroot",{"_index":877,"title":{},"body":{"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["oauthmoduleconfig",{"_index":136,"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":541,"title":{"classes/OAuthNoopResourceServerErrorHandler.html":{}},"body":{"modules/OAuthModule.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["oauthresourceserverconfig",{"_index":559,"title":{"classes/OAuthResourceServerConfig.html":{}},"body":{"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{}}}],["oauthresourceservererrorhandler",{"_index":134,"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":149,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"classes/LoginOptions.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/working-with-httpinterceptors.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["oauthstorage",{"_index":132,"title":{"classes/OAuthStorage.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"classes/LoginOptions.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":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["oauthsuccessevent",{"_index":508,"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/JwksValidationHandler.html":{},"classes/LoginOptions.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":{},"index.html":{},"additional-documentation/refreshing-a-token.html":{}}}],["observable",{"_index":145,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"changelog.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/events.html":{}}}],["obtaining",{"_index":997,"title":{},"body":{"license.html":{}}}],["occur",{"_index":1251,"title":{},"body":{"additional-documentation/events.html":{}}}],["offline_access",{"_index":1099,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/using-password-flow.html":{}}}],["oidc",{"_index":352,"title":{},"body":{"classes/LoginOptions.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/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["oidc.umd.js",{"_index":1390,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["oidc/docs",{"_index":783,"title":{},"body":{"index.html":{}}}],["oidcdiscoverydoc",{"_index":437,"title":{"interfaces/OidcDiscoveryDoc.html":{}},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["oidic.module.ts",{"_index":527,"title":{},"body":{"modules/OAuthModule.html":{}}}],["oidic.module.ts:27",{"_index":532,"title":{},"body":{"modules/OAuthModule.html":{}}}],["ok",{"_index":1170,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["okta",{"_index":977,"title":{},"body":{"index.html":{}}}],["one",{"_index":197,"title":{},"body":{"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.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":{},"additional-documentation/using-password-flow.html":{}}}],["online",{"_index":975,"title":{},"body":{"index.html":{}}}],["onloginerror",{"_index":329,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["ontokenreceived",{"_index":330,"title":{},"body":{"classes/LoginOptions.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":{}}}],["openid",{"_index":436,"title":{},"body":{"classes/LoginOptions.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/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["option",{"_index":1319,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["optional",{"_index":41,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/CryptoHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"injectables/UrlHelperService.html":{},"classes/ValidationHandler.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"miscellaneous/functions.html":{},"additional-documentation/preserving-state-(like-the-requested-url).html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["optionalparams",{"_index":395,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["options",{"_index":324,"title":{},"body":{"classes/LoginOptions.html":{},"additional-documentation/events.html":{}}}],["original",{"_index":656,"title":{"additional-documentation/original-config-api.html":{}},"body":{"changelog.html":{},"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{}}}],["otherparam",{"_index":1246,"title":{},"body":{"additional-documentation/custom-query-parameters.html":{}}}],["otherwise",{"_index":698,"title":{},"body":{"changelog.html":{},"index.html":{},"license.html":{}}}],["out",{"_index":665,"title":{},"body":{"changelog.html":{},"index.html":{},"license.html":{},"overview.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{}}}],["output",{"_index":1159,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/callback-after-login.html":{}}}],["over",{"_index":1187,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["override",{"_index":19,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["overview",{"_index":1052,"title":{"overview.html":{}},"body":{"overview.html":{}}}],["owner",{"_index":866,"title":{},"body":{"index.html":{},"additional-documentation/using-password-flow.html":{}}}],["package",{"_index":715,"title":{"dependencies.html":{}},"body":{}}],["packages",{"_index":1305,"title":{},"body":{"additional-documentation/adapt-id_token-validation.html":{}}}],["page",{"_index":888,"title":{"additional-documentation/getting-started.html":{},"additional-documentation/preserving-state-(like-the-requested-url).html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/callback-after-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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}},"body":{"index.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{}}}],["pair",{"_index":611,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["pairs",{"_index":610,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["param",{"_index":105,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["parameter",{"_index":1240,"title":{},"body":{"additional-documentation/custom-query-parameters.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["parameters",{"_index":37,"title":{"additional-documentation/custom-query-parameters.html":{}},"body":{"classes/AbstractValidationHandler.html":{},"classes/CryptoHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/JwksValidationHandler.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":{},"miscellaneous/functions.html":{},"additional-documentation/custom-query-parameters.html":{}}}],["params",{"_index":64,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["params.idtoken",{"_index":252,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["params.idtokenclaims['at_hash'].replace(/=/g",{"_index":101,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["params.idtokenheader",{"_index":255,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["params.idtokenheader['alg",{"_index":267,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["params.idtokenheader['kid",{"_index":266,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["params.jwks",{"_index":257,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["params.jwks['keys",{"_index":258,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["params.jwks['keys'].length",{"_index":260,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["params.loadkeys",{"_index":287,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["parent.postmessage(location.hash",{"_index":1156,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["parse",{"_index":1357,"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/JwksValidationHandler.html":{},"classes/LoginOptions.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":417,"title":{"interfaces/ParsedIdToken.html":{}},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["parsequerystring",{"_index":597,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["parsequerystring(querystring",{"_index":600,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["particular",{"_index":1034,"title":{},"body":{"license.html":{}}}],["pass",{"_index":340,"title":{},"body":{"classes/LoginOptions.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/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["passed",{"_index":34,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["passes",{"_index":1214,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["passt",{"_index":325,"title":{},"body":{"classes/LoginOptions.html":{}}}],["password",{"_index":842,"title":{"additional-documentation/using-password-flow.html":{}},"body":{"index.html":{},"additional-documentation/using-password-flow.html":{}}}],["passwords",{"_index":625,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["path",{"_index":967,"title":{},"body":{"index.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["pathlocationstrategy",{"_index":788,"title":{},"body":{"index.html":{}}}],["pcke",{"_index":1075,"title":{"additional-documentation/code-flow-+-pcke.html":{}},"body":{}}],["perform",{"_index":1166,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/session-checks.html":{}}}],["performs",{"_index":1288,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["period",{"_index":228,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["permission",{"_index":992,"title":{},"body":{"license.html":{}}}],["permissions",{"_index":905,"title":{},"body":{"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["permit",{"_index":1016,"title":{},"body":{"license.html":{}}}],["person",{"_index":996,"title":{},"body":{"license.html":{}}}],["persons",{"_index":1017,"title":{},"body":{"license.html":{}}}],["perspective",{"_index":1408,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["pingone",{"_index":1370,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["pipe(catcherror(err",{"_index":192,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["pkce",{"_index":841,"title":{},"body":{"index.html":{},"additional-documentation/code-flow-+-pcke.html":{}}}],["plan",{"_index":806,"title":{},"body":{"index.html":{}}}],["please",{"_index":284,"title":{},"body":{"classes/JwksValidationHandler.html":{},"additional-documentation/getting-started.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["portions",{"_index":1025,"title":{},"body":{"license.html":{}}}],["possibility",{"_index":677,"title":{},"body":{"changelog.html":{}}}],["possible",{"_index":1416,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["post",{"_index":1337,"title":{},"body":{"additional-documentation/server-side-rendering.html":{}}}],["ppanthony",{"_index":1388,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["practice",{"_index":348,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/code-flow-+-pcke.html":{}}}],["practices",{"_index":1092,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{}}}],["prefixes",{"_index":956,"title":{},"body":{"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["preserving",{"_index":1068,"title":{"additional-documentation/preserving-state-(like-the-requested-url).html":{}},"body":{"additional-documentation/preserving-state-(like-the-requested-url).html":{}}}],["prevent",{"_index":1224,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["preventclearhashafterlogin",{"_index":331,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["prevents",{"_index":1174,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["private",{"_index":168,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"classes/JwksValidationHandler.html":{},"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["profile",{"_index":699,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["project's",{"_index":1345,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{}}}],["projects/.../base64",{"_index":746,"title":{},"body":{"miscellaneous/functions.html":{}}}],["projects/.../events.ts",{"_index":1059,"title":{},"body":{"miscellaneous/typealiases.html":{}}}],["projects/.../factories.ts",{"_index":748,"title":{},"body":{"miscellaneous/functions.html":{}}}],["projects/.../tokens.ts",{"_index":1062,"title":{},"body":{"miscellaneous/variables.html":{}}}],["projects/lib/src/angular",{"_index":526,"title":{},"body":{"modules/OAuthModule.html":{}}}],["projects/lib/src/base64",{"_index":749,"title":{},"body":{"miscellaneous/functions.html":{}}}],["projects/lib/src/encoder.ts",{"_index":621,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["projects/lib/src/encoder.ts:10",{"_index":639,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["projects/lib/src/encoder.ts:14",{"_index":632,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["projects/lib/src/encoder.ts:18",{"_index":634,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["projects/lib/src/encoder.ts:6",{"_index":637,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["projects/lib/src/events.ts",{"_index":479,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["projects/lib/src/events.ts:25",{"_index":512,"title":{},"body":{"classes/OAuthEvent.html":{}}}],["projects/lib/src/events.ts:29",{"_index":587,"title":{},"body":{"classes/OAuthSuccessEvent.html":{}}}],["projects/lib/src/events.ts:35",{"_index":513,"title":{},"body":{"classes/OAuthInfoEvent.html":{}}}],["projects/lib/src/events.ts:41",{"_index":484,"title":{},"body":{"classes/OAuthErrorEvent.html":{}}}],["projects/lib/src/factories.ts",{"_index":753,"title":{},"body":{"miscellaneous/functions.html":{}}}],["projects/lib/src/interceptors/default",{"_index":127,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["projects/lib/src/interceptors/resource",{"_index":570,"title":{},"body":{"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{}}}],["projects/lib/src/oauth",{"_index":556,"title":{},"body":{"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{}}}],["projects/lib/src/token",{"_index":6,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/CryptoHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/NullValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["projects/lib/src/tokens.ts",{"_index":1063,"title":{},"body":{"miscellaneous/variables.html":{}}}],["projects/lib/src/types.ts",{"_index":322,"title":{},"body":{"classes/LoginOptions.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:11",{"_index":366,"title":{},"body":{"classes/LoginOptions.html":{}}}],["projects/lib/src/types.ts:121",{"_index":617,"title":{},"body":{"interfaces/UserInfo.html":{}}}],["projects/lib/src/types.ts:18",{"_index":378,"title":{},"body":{"classes/LoginOptions.html":{}}}],["projects/lib/src/types.ts:26",{"_index":358,"title":{},"body":{"classes/LoginOptions.html":{}}}],["projects/lib/src/types.ts:33",{"_index":332,"title":{},"body":{"classes/LoginOptions.html":{}}}],["projects/lib/src/types.ts:43",{"_index":342,"title":{},"body":{"classes/LoginOptions.html":{}}}],["projects/lib/src/types.ts:50",{"_index":369,"title":{},"body":{"classes/LoginOptions.html":{}}}],["projects/lib/src/types.ts:60",{"_index":517,"title":{},"body":{"classes/OAuthLogger.html":{}}}],["projects/lib/src/types.ts:61",{"_index":520,"title":{},"body":{"classes/OAuthLogger.html":{}}}],["projects/lib/src/types.ts:62",{"_index":521,"title":{},"body":{"classes/OAuthLogger.html":{}}}],["projects/lib/src/types.ts:63",{"_index":522,"title":{},"body":{"classes/OAuthLogger.html":{}}}],["projects/lib/src/types.ts:64",{"_index":519,"title":{},"body":{"classes/OAuthLogger.html":{}}}],["projects/lib/src/types.ts:74",{"_index":584,"title":{},"body":{"classes/OAuthStorage.html":{}}}],["projects/lib/src/types.ts:75",{"_index":585,"title":{},"body":{"classes/OAuthStorage.html":{}}}],["projects/lib/src/types.ts:76",{"_index":586,"title":{},"body":{"classes/OAuthStorage.html":{}}}],["projects/lib/src/types.ts:84",{"_index":591,"title":{},"body":{"classes/ReceivedTokens.html":{}}}],["projects/lib/src/types.ts:85",{"_index":589,"title":{},"body":{"classes/ReceivedTokens.html":{}}}],["projects/lib/src/types.ts:86",{"_index":590,"title":{},"body":{"classes/ReceivedTokens.html":{}}}],["projects/lib/src/types.ts:87",{"_index":592,"title":{},"body":{"classes/ReceivedTokens.html":{}}}],["projects/lib/src/url",{"_index":594,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["promise",{"_index":44,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/CryptoHandler.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":{},"interfaces/ValidationParams.html":{}}}],["promise.reject('signature",{"_index":304,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["promise.reject(error",{"_index":281,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["promise.resolve",{"_index":303,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["promise.resolve(bytearrayasstring",{"_index":320,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["promise.resolve(null",{"_index":476,"title":{},"body":{"classes/NullValidationHandler.html":{}}}],["promise.resolve(true",{"_index":477,"title":{},"body":{"classes/NullValidationHandler.html":{}}}],["properties",{"_index":207,"title":{},"body":{"classes/JwksValidationHandler.html":{},"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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["property",{"_index":292,"title":{},"body":{"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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/custom-query-parameters.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-password-flow.html":{}}}],["proposes",{"_index":1124,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["protected",{"_index":23,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["provding",{"_index":1211,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["provide",{"_index":388,"title":{},"body":{"classes/LoginOptions.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/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":{}}}],["provided",{"_index":203,"title":{},"body":{"classes/JwksValidationHandler.html":{},"changelog.html":{},"license.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["provider",{"_index":676,"title":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}},"body":{"changelog.html":{},"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.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/original-config-api.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["provider's",{"_index":891,"title":{},"body":{"index.html":{}}}],["providers",{"_index":551,"title":{},"body":{"modules/OAuthModule.html":{},"overview.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":1225,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/using-password-flow.html":{}}}],["providing",{"_index":688,"title":{},"body":{"changelog.html":{},"additional-documentation/using-password-flow.html":{}}}],["prs",{"_index":812,"title":{},"body":{"index.html":{}}}],["ps256",{"_index":220,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["ps384",{"_index":221,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["ps512",{"_index":222,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["public",{"_index":84,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"injectables/UrlHelperService.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["publish",{"_index":1010,"title":{},"body":{"license.html":{}}}],["published",{"_index":1266,"title":{},"body":{"additional-documentation/events.html":{}}}],["publishes",{"_index":1249,"title":{},"body":{"additional-documentation/events.html":{}}}],["pull",{"_index":819,"title":{},"body":{"index.html":{}}}],["purpose",{"_index":1035,"title":{},"body":{"license.html":{},"additional-documentation/callback-after-login.html":{}}}],["put",{"_index":1208,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["pwa",{"_index":981,"title":{},"body":{"index.html":{}}}],["query",{"_index":1238,"title":{"additional-documentation/custom-query-parameters.html":{}},"body":{"additional-documentation/custom-query-parameters.html":{}}}],["querying",{"_index":847,"title":{},"body":{"index.html":{}}}],["querystring",{"_index":602,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["querystring.split",{"_index":615,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["question",{"_index":1325,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["questionmarkposition",{"_index":606,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["quite",{"_index":1417,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["r",{"_index":310,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["read",{"_index":374,"title":{},"body":{"classes/LoginOptions.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":{}}}],["reading",{"_index":1291,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["readme",{"_index":1067,"title":{},"body":{"additional-documentation/getting-started.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{}}}],["readonly",{"_index":509,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{}}}],["reason",{"_index":483,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{}}}],["receive",{"_index":1312,"title":{},"body":{"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/session-checks.html":{}}}],["received",{"_index":62,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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":{},"additional-documentation/refreshing-a-token.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":{}}}],["received_first_token",{"_index":486,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["receivedtokens",{"_index":381,"title":{"classes/ReceivedTokens.html":{}},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["receiving",{"_index":1404,"title":{},"body":{"additional-documentation/original-config-api.html":{}}}],["recommented",{"_index":1101,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{}}}],["redhat",{"_index":775,"title":{},"body":{"index.html":{}}}],["redhat's",{"_index":796,"title":{},"body":{"index.html":{}}}],["redirect",{"_index":899,"title":{},"body":{"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.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/original-config-api.html":{}}}],["redirected",{"_index":840,"title":{},"body":{"index.html":{}}}],["redirecting",{"_index":853,"title":{},"body":{"index.html":{}}}],["redirects",{"_index":950,"title":{},"body":{"index.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{}}}],["redirecturi",{"_index":900,"title":{},"body":{"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["redirecturis",{"_index":867,"title":{},"body":{"index.html":{}}}],["refresh",{"_index":684,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/events.html":{},"additional-documentation/using-password-flow.html":{}}}],["refresh.html",{"_index":873,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/session-checks.html":{}}}],["refresh.html\";please",{"_index":1153,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["refresh_token",{"_index":430,"title":{},"body":{"classes/LoginOptions.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":{}}}],["refresh_tokens",{"_index":1130,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["refreshed",{"_index":1279,"title":{},"body":{"additional-documentation/events.html":{}}}],["refreshes",{"_index":339,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["refreshing",{"_index":845,"title":{"additional-documentation/refreshing-a-token.html":{}},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/using-password-flow.html":{}}}],["regarding",{"_index":850,"title":{},"body":{"index.html":{},"additional-documentation/using-systemjs.html":{}}}],["register",{"_index":1324,"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":1085,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/original-config-api.html":{}}}],["registered",{"_index":565,"title":{},"body":{"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{},"index.html":{}}}],["registration_endpoint",{"_index":447,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["related",{"_index":1202,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/original-config-api.html":{}}}],["relations",{"_index":1413,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["relaxed",{"_index":707,"title":{},"body":{"changelog.html":{}}}],["relay",{"_index":705,"title":{},"body":{"changelog.html":{}}}],["release",{"_index":651,"title":{},"body":{"changelog.html":{},"index.html":{}}}],["removeitem",{"_index":582,"title":{},"body":{"classes/OAuthStorage.html":{}}}],["removeitem(key",{"_index":411,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["rendering",{"_index":1334,"title":{"additional-documentation/server-side-rendering.html":{}},"body":{"additional-documentation/server-side-rendering.html":{}}}],["represents",{"_index":414,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["req",{"_index":144,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["req.clone",{"_index":190,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["req.headers",{"_index":1228,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["req.headers.set('authorization",{"_index":189,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["req.url.tolowercase",{"_index":178,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["request",{"_index":906,"title":{},"body":{"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["request_object_signing_alg_values_supported",{"_index":460,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["requested",{"_index":1069,"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":820,"title":{},"body":{"index.html":{}}}],["require",{"_index":248,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["require','jsrsasign",{"_index":1396,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["require('jsrsasign",{"_index":250,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["requirehttps",{"_index":708,"title":{},"body":{"changelog.html":{}}}],["requirements",{"_index":1127,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["reset",{"_index":1055,"title":{},"body":{"overview.html":{}}}],["resolves",{"_index":1275,"title":{},"body":{"additional-documentation/events.html":{}}}],["resource",{"_index":161,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/using-password-flow.html":{}}}],["resources",{"_index":777,"title":{},"body":{"index.html":{}}}],["resourceserver",{"_index":558,"title":{},"body":{"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{},"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["resourceservererrorhandler",{"_index":564,"title":{},"body":{"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{}}}],["respect",{"_index":1131,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["respective",{"_index":957,"title":{},"body":{"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["respond",{"_index":1144,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["response",{"_index":421,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["response_modes_supported",{"_index":451,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["response_types_supported",{"_index":449,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["responsetype",{"_index":1082,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{}}}],["restriction",{"_index":1004,"title":{},"body":{"license.html":{}}}],["result",{"_index":115,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/CryptoHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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":{},"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/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/callback-after-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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["results",{"_index":117,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/CryptoHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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":{},"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/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/callback-after-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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["retrieved",{"_index":1268,"title":{},"body":{"additional-documentation/events.html":{}}}],["retry",{"_index":238,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["return",{"_index":104,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/JwksValidationHandler.html":{},"classes/NullValidationHandler.html":{},"modules/OAuthModule.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"injectables/UrlHelperService.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["returns",{"_index":43,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/CryptoHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/JwksValidationHandler.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/OAuthStorage.html":{},"injectables/UrlHelperService.html":{},"classes/ValidationHandler.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"miscellaneous/functions.html":{},"additional-documentation/using-password-flow.html":{}}}],["rights",{"_index":1007,"title":{},"body":{"license.html":{}}}],["risk",{"_index":473,"title":{},"body":{"classes/NullValidationHandler.html":{}}}],["root",{"_index":1293,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["route",{"_index":966,"title":{},"body":{"index.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["router",{"_index":787,"title":{},"body":{"index.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["routermodule.forroot(app_routes",{"_index":1295,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["routes",{"_index":1292,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["routing",{"_index":963,"title":{"additional-documentation/routing-with-the-hashstrategy.html":{}},"body":{"index.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["rs",{"_index":249,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["rs.keyutil.getkey(key",{"_index":296,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["rs.kjur.crypto.messagedigest",{"_index":316,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["rs.kjur.jws.jws.verifyjwt",{"_index":302,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["rs256",{"_index":215,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["rs384",{"_index":216,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["rs512",{"_index":217,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["rsa",{"_index":311,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["rule",{"_index":706,"title":{},"body":{"changelog.html":{}}}],["run",{"_index":839,"title":{},"body":{"index.html":{}}}],["runs",{"_index":859,"title":{},"body":{"index.html":{},"additional-documentation/using-password-flow.html":{}}}],["rxjs",{"_index":158,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"dependencies.html":{}}}],["rxjs/add/operator/catch",{"_index":1227,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["rxjs/observable",{"_index":1226,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["rxjs/operators",{"_index":160,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["safe",{"_index":1426,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["same",{"_index":1151,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["sample",{"_index":779,"title":{},"body":{"index.html":{},"additional-documentation/server-side-rendering.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["samples",{"_index":856,"title":{},"body":{"index.html":{}}}],["saved",{"_index":1269,"title":{},"body":{"additional-documentation/events.html":{}}}],["saveimporting",{"_index":875,"title":{},"body":{"index.html":{}}}],["scaffolding",{"_index":760,"title":{},"body":{"index.html":{}}}],["scenario",{"_index":1406,"title":{},"body":{"additional-documentation/original-config-api.html":{}}}],["scope",{"_index":431,"title":{},"body":{"classes/LoginOptions.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/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["scopes_supported",{"_index":448,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["seconds",{"_index":229,"title":{},"body":{"classes/JwksValidationHandler.html":{},"additional-documentation/refreshing-a-token.html":{}}}],["secret",{"_index":1088,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/using-password-flow.html":{}}}],["section",{"_index":882,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/using-password-flow.html":{}}}],["security",{"_index":350,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["see",{"_index":650,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/events.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["selector",{"_index":917,"title":{},"body":{"index.html":{}}}],["sell",{"_index":1014,"title":{},"body":{"license.html":{}}}],["send",{"_index":566,"title":{},"body":{"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{}}}],["sendaccesstoken",{"_index":183,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{},"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["sends",{"_index":890,"title":{},"body":{"index.html":{},"additional-documentation/session-checks.html":{}}}],["sense",{"_index":1424,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["separate",{"_index":1118,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["separatorindex",{"_index":612,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["server",{"_index":162,"title":{"additional-documentation/server-side-rendering.html":{}},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"classes/LoginOptions.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":{},"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/working-with-httpinterceptors.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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["server's",{"_index":854,"title":{},"body":{"index.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{}}}],["server.azurewebsites.net/identity",{"_index":898,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/original-config-api.html":{}}}],["server.azurewebsites.net/identity/.well",{"_index":1429,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["server.azurewebsites.net/identity/connect/authorize",{"_index":1347,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{}}}],["server.azurewebsites.net/identity/connect/endsession",{"_index":1355,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{}}}],["server.azurewebsites.net/identity/connect/token",{"_index":1433,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["server.azurewebsites.net/identity/connect/userinfo",{"_index":1437,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["server.code",{"_index":1086,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{}}}],["servers",{"_index":973,"title":{},"body":{"index.html":{}}}],["service",{"_index":151,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"modules/OAuthModule.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/events.html":{}}}],["service_documentation",{"_index":465,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["session",{"_index":666,"title":{"additional-documentation/session-checks.html":{}},"body":{"changelog.html":{},"additional-documentation/events.html":{},"additional-documentation/session-checks.html":{}}}],["session_changed",{"_index":503,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["session_error",{"_index":504,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{},"additional-documentation/events.html":{}}}],["session_terminated",{"_index":505,"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":1331,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["sessionchecksenabled",{"_index":1328,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["sessionstorage",{"_index":406,"title":{},"body":{"classes/LoginOptions.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/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["set",{"_index":202,"title":{},"body":{"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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":{},"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["set('authorization",{"_index":1229,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["setitem",{"_index":583,"title":{},"body":{"classes/OAuthStorage.html":{}}}],["setitem(key",{"_index":412,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["setstorage",{"_index":702,"title":{},"body":{"changelog.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{}}}],["setting",{"_index":948,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["setup",{"_index":962,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["setupautomaticsilentrefresh",{"_index":661,"title":{},"body":{"changelog.html":{}}}],["several",{"_index":1366,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["sha",{"_index":113,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["sha256(accesstoken",{"_index":91,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["shall",{"_index":1023,"title":{},"body":{"license.html":{}}}],["share",{"_index":1364,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["sharing",{"_index":1389,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["ship",{"_index":1414,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["short",{"_index":1253,"title":{},"body":{"additional-documentation/events.html":{},"additional-documentation/using-password-flow.html":{}}}],["showdebuginformation",{"_index":1100,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{}}}],["shown",{"_index":1109,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{}}}],["shows",{"_index":883,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/server-side-rendering.html":{},"additional-documentation/using-password-flow.html":{}}}],["side",{"_index":404,"title":{"additional-documentation/server-side-rendering.html":{}},"body":{"classes/LoginOptions.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":{}}}],["sig",{"_index":271,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["sign",{"_index":664,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{}}}],["signature",{"_index":67,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"changelog.html":{},"index.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["signs",{"_index":1316,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["silent",{"_index":338,"title":{},"body":{"classes/LoginOptions.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/events.html":{},"additional-documentation/session-checks.html":{}}}],["silent_refresh_error",{"_index":498,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["silent_refresh_timeout",{"_index":500,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{},"additional-documentation/events.html":{}}}],["silently_refreshed",{"_index":499,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{},"additional-documentation/events.html":{}}}],["silentrefresh",{"_index":1167,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["silentrefreshredirecturi",{"_index":1148,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/session-checks.html":{}}}],["silentrefreshtimeout",{"_index":1179,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["similar",{"_index":1418,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["simple",{"_index":400,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["single",{"_index":663,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{}}}],["site",{"_index":984,"title":{},"body":{"index.html":{}}}],["size",{"_index":770,"title":{},"body":{"index.html":{}}}],["skip",{"_index":472,"title":{},"body":{"classes/NullValidationHandler.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/using-password-flow.html":{}}}],["skipping",{"_index":943,"title":{},"body":{"index.html":{}}}],["skips",{"_index":1309,"title":{},"body":{"additional-documentation/adapt-id_token-validation.html":{}}}],["smaller",{"_index":802,"title":{},"body":{"index.html":{}}}],["snippet",{"_index":936,"title":{},"body":{"index.html":{},"additional-documentation/events.html":{}}}],["software",{"_index":999,"title":{},"body":{"license.html":{}}}],["solution",{"_index":1081,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["somevalue",{"_index":1247,"title":{},"body":{"additional-documentation/custom-query-parameters.html":{}}}],["source",{"_index":4,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/CryptoHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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":{},"index.html":{}}}],["sources",{"_index":778,"title":{},"body":{"index.html":{}}}],["spa",{"_index":864,"title":{},"body":{"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["spa's",{"_index":903,"title":{},"body":{"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["spas",{"_index":1089,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{}}}],["spec",{"_index":1272,"title":{},"body":{"additional-documentation/events.html":{},"additional-documentation/session-checks.html":{}}}],["specific",{"_index":911,"title":{},"body":{"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/original-config-api.html":{}}}],["specification",{"_index":1374,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["specifies",{"_index":1125,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["specify",{"_index":285,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["specs",{"_index":671,"title":{},"body":{"changelog.html":{},"index.html":{}}}],["src",{"_index":828,"title":{},"body":{"index.html":{}}}],["standard",{"_index":1122,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/using-password-flow.html":{}}}],["start",{"_index":1379,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["started",{"_index":645,"title":{"changelog.html":{},"index.html":{},"license.html":{},"additional-documentation/getting-started.html":{}},"body":{"additional-documentation/getting-started.html":{}}}],["starting",{"_index":1242,"title":{},"body":{"additional-documentation/custom-query-parameters.html":{}}}],["starts",{"_index":712,"title":{},"body":{"changelog.html":{},"index.html":{}}}],["startup",{"_index":1397,"title":{},"body":{"additional-documentation/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["state",{"_index":345,"title":{"additional-documentation/preserving-state-(like-the-requested-url).html":{}},"body":{"classes/LoginOptions.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/events.html":{}}}],["static",{"_index":528,"title":{},"body":{"modules/OAuthModule.html":{}}}],["status",{"_index":667,"title":{},"body":{"changelog.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["steyer",{"_index":991,"title":{},"body":{"license.html":{}}}],["still",{"_index":657,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["storage",{"_index":401,"title":{},"body":{"classes/LoginOptions.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":{}}}],["storagefactory",{"_index":1457,"title":{},"body":{"additional-documentation/configure-custom-oauthstorage.html":{}}}],["stored",{"_index":1276,"title":{},"body":{"additional-documentation/events.html":{}}}],["storing",{"_index":402,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["str",{"_index":751,"title":{},"body":{"miscellaneous/functions.html":{}}}],["strategy",{"_index":1114,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["stream",{"_index":1250,"title":{},"body":{"additional-documentation/events.html":{}}}],["streamline",{"_index":659,"title":{},"body":{"changelog.html":{}}}],["strict",{"_index":1405,"title":{},"body":{"additional-documentation/original-config-api.html":{}}}],["strictdiscoverydocumentvalidation",{"_index":714,"title":{},"body":{"changelog.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["string",{"_index":28,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/CryptoHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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/working-with-httpinterceptors.html":{},"additional-documentation/events.html":{}}}],["strong",{"_index":1411,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["structured",{"_index":682,"title":{},"body":{"changelog.html":{}}}],["sub",{"_index":435,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["subject",{"_index":1019,"title":{},"body":{"license.html":{}}}],["subject_types_supported",{"_index":453,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["sublicense",{"_index":1012,"title":{},"body":{"license.html":{}}}],["substantial",{"_index":1024,"title":{},"body":{"license.html":{}}}],["succeeded",{"_index":1071,"title":{},"body":{"additional-documentation/preserving-state-(like-the-requested-url).html":{}}}],["successful",{"_index":1232,"title":{},"body":{"additional-documentation/callback-after-login.html":{}}}],["successfully",{"_index":367,"title":{},"body":{"classes/LoginOptions.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":1094,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/using-password-flow.html":{}}}],["suitable",{"_index":887,"title":{},"body":{"index.html":{}}}],["suited",{"_index":1409,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["summary.json",{"_index":832,"title":{},"body":{"index.html":{}}}],["super(type",{"_index":510,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{}}}],["support",{"_index":755,"title":{},"body":{"index.html":{}}}],["supported",{"_index":112,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"changelog.html":{},"index.html":{}}}],["supports",{"_index":1077,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/session-checks.html":{}}}],["sure",{"_index":830,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{}}}],["switch",{"_index":307,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["switching",{"_index":955,"title":{},"body":{"index.html":{}}}],["system.config",{"_index":1385,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["systemjs",{"_index":1380,"title":{"additional-documentation/using-systemjs.html":{}},"body":{"additional-documentation/using-systemjs.html":{}}}],["take",{"_index":1128,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["takes",{"_index":1199,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/events.html":{}}}],["task",{"_index":954,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{}}}],["tasks",{"_index":660,"title":{},"body":{"changelog.html":{},"additional-documentation/events.html":{}}}],["tells",{"_index":946,"title":{},"body":{"index.html":{}}}],["template",{"_index":938,"title":{},"body":{"index.html":{}}}],["templateurl",{"_index":919,"title":{},"body":{"index.html":{}}}],["tenant",{"_index":1244,"title":{},"body":{"additional-documentation/custom-query-parameters.html":{}}}],["terminated",{"_index":1333,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["tested",{"_index":784,"title":{},"body":{"index.html":{}}}],["testen",{"_index":942,"title":{},"body":{"index.html":{}}}],["testing",{"_index":711,"title":{},"body":{"changelog.html":{},"index.html":{}}}],["text",{"_index":736,"title":{},"body":{"dependencies.html":{}}}],["thanks",{"_index":1381,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["that's",{"_index":1425,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["then(_",{"_index":290,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["then(info",{"_index":1168,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["then(loadedkeys",{"_index":288,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["third",{"_index":1195,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["this.alg2kty(alg",{"_index":273,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["this.allowedalgorithms",{"_index":298,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["this.authservice.events.subscribe(event",{"_index":1260,"title":{},"body":{"additional-documentation/events.html":{}}}],["this.authstorage.getitem('access_token",{"_index":185,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["this.calchash(params.accesstoken",{"_index":90,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["this.checkurl(url",{"_index":182,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["this.configure",{"_index":922,"title":{},"body":{"index.html":{}}}],["this.errorhandler.handleerror(err",{"_index":193,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["this.graceperiodinsec",{"_index":300,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["this.inferhashalgorithm(params.idtokenheader",{"_index":87,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["this.moduleconfig",{"_index":179,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["this.moduleconfig.resourceserver",{"_index":181,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["this.moduleconfig.resourceserver.allowedurls",{"_index":173,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["this.moduleconfig.resourceserver.allowedurls.find(u",{"_index":174,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["this.moduleconfig.resourceserver.customurlvalidation",{"_index":171,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["this.moduleconfig.resourceserver.customurlvalidation(url",{"_index":172,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["this.moduleconfig.resourceserver.sendaccesstoken",{"_index":184,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["this.oauthservice.clientid",{"_index":1349,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["this.oauthservice.configure(authcodeflowconfig",{"_index":1113,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{}}}],["this.oauthservice.configure(authconfig",{"_index":923,"title":{},"body":{"index.html":{}}}],["this.oauthservice.customqueryparams",{"_index":1243,"title":{},"body":{"additional-documentation/custom-query-parameters.html":{}}}],["this.oauthservice.dummyclientsecret",{"_index":1427,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["this.oauthservice.events.pipe(filter(e",{"_index":1329,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["this.oauthservice.events.subscribe(e",{"_index":1254,"title":{},"body":{"additional-documentation/events.html":{}}}],["this.oauthservice.fetchtokenusingpasswordflow('max",{"_index":1441,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["this.oauthservice.fetchtokenusingpasswordflowandloaduserprofile('max",{"_index":1446,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["this.oauthservice.getidentityclaims",{"_index":934,"title":{},"body":{"index.html":{},"additional-documentation/using-password-flow.html":{}}}],["this.oauthservice.initcodeflow();there",{"_index":1104,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{}}}],["this.oauthservice.initimplicitflow('http://www.myurl.com/x/y/z');after",{"_index":1070,"title":{},"body":{"additional-documentation/preserving-state-(like-the-requested-url).html":{}}}],["this.oauthservice.initloginflow",{"_index":931,"title":{},"body":{"index.html":{}}}],["this.oauthservice.initloginflow();also",{"_index":1108,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{}}}],["this.oauthservice.issuer",{"_index":1399,"title":{},"body":{"additional-documentation/original-config-api.html":{}}}],["this.oauthservice.loaddiscoverydocument().then",{"_index":1401,"title":{},"body":{"additional-documentation/original-config-api.html":{}}}],["this.oauthservice.loaddiscoverydocument(url).then",{"_index":1431,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["this.oauthservice.loaddiscoverydocumentandlogin",{"_index":947,"title":{},"body":{"index.html":{}}}],["this.oauthservice.loaddiscoverydocumentandtrylogin",{"_index":925,"title":{},"body":{"index.html":{},"additional-documentation/code-flow-+-pcke.html":{}}}],["this.oauthservice.loaduserprofile",{"_index":1444,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["this.oauthservice.loginurl",{"_index":1346,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{}}}],["this.oauthservice.logout",{"_index":933,"title":{},"body":{"index.html":{}}}],["this.oauthservice.logouturl",{"_index":1354,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{}}}],["this.oauthservice.redirecturi",{"_index":1348,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{}}}],["this.oauthservice.refresh();refreshing",{"_index":1134,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["this.oauthservice.refreshtoken().then",{"_index":1450,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["this.oauthservice.scope",{"_index":1350,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["this.oauthservice.setstorage(sessionstorage",{"_index":1352,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{}}}],["this.oauthservice.setupautomaticsilentrefresh();by",{"_index":1182,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["this.oauthservice.silentrefreshredirecturi",{"_index":1152,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["this.oauthservice.tokenendpoint",{"_index":1432,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["this.oauthservice.tokenvalidationhandler",{"_index":924,"title":{},"body":{"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["this.oauthservice.trylogin",{"_index":1072,"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":1300,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["this.oauthservice.userinfoendpoint",{"_index":1436,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["this.parsequerystring(hash",{"_index":609,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["this.router.navigate",{"_index":1301,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["this.tobytearrayasstring(result",{"_index":319,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["this.validatesignature(params",{"_index":291,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["those",{"_index":1132,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["three",{"_index":908,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/original-config-api.html":{}}}],["through",{"_index":390,"title":{},"body":{"classes/LoginOptions.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/working-with-httpinterceptors.html":{}}}],["throw",{"_index":109,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["throwerror",{"_index":575,"title":{},"body":{"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{}}}],["throwerror(err",{"_index":576,"title":{},"body":{"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{}}}],["time",{"_index":227,"title":{},"body":{"classes/JwksValidationHandler.html":{},"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["timeout",{"_index":1177,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["timeoutfactor",{"_index":694,"title":{},"body":{"changelog.html":{},"additional-documentation/refreshing-a-token.html":{}}}],["timer",{"_index":1277,"title":{},"body":{"additional-documentation/events.html":{}}}],["timespan",{"_index":1178,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["timestamp",{"_index":230,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["tobytearrayasstring",{"_index":210,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["tobytearrayasstring(hexstring",{"_index":234,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["together",{"_index":690,"title":{},"body":{"changelog.html":{},"additional-documentation/server-side-rendering.html":{}}}],["token",{"_index":186,"title":{"additional-documentation/refreshing-a-token.html":{}},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"classes/LoginOptions.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/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/events.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["token's",{"_index":1185,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["token(s",{"_index":375,"title":{},"body":{"classes/LoginOptions.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_endpoint",{"_index":440,"title":{},"body":{"classes/LoginOptions.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":441,"title":{},"body":{"classes/LoginOptions.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":442,"title":{},"body":{"classes/LoginOptions.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":494,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["token_expires",{"_index":502,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"changelog.html":{},"miscellaneous/typealiases.html":{}}}],["token_received",{"_index":493,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{},"additional-documentation/events.html":{}}}],["token_refresh_error",{"_index":497,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["token_refreshed",{"_index":496,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["token_type",{"_index":428,"title":{},"body":{"classes/LoginOptions.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":501,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["tokenhash",{"_index":88,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["tokenhash.length",{"_index":96,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["tokenhash.substr(0",{"_index":95,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["tokenresponse",{"_index":427,"title":{"interfaces/TokenResponse.html":{}},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["tokens",{"_index":83,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/LoginOptions.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/events.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/session-checks.html":{}}}],["tokenvalidationhandler",{"_index":380,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["tokenvalidator",{"_index":1304,"title":{},"body":{"additional-documentation/adapt-id_token-validation.html":{}}}],["tort",{"_index":1046,"title":{},"body":{"license.html":{}}}],["transmit",{"_index":1421,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["transmitted",{"_index":1241,"title":{},"body":{"additional-documentation/custom-query-parameters.html":{}}}],["transmitting",{"_index":1200,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["tries",{"_index":1356,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{}}}],["triggers",{"_index":1194,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["true",{"_index":93,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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/code-flow-+-pcke.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":{}}}],["trust",{"_index":1412,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["try",{"_index":798,"title":{},"body":{"index.html":{},"additional-documentation/callback-after-login.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["trylogin",{"_index":326,"title":{},"body":{"classes/LoginOptions.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":{}}}],["ts",{"_index":1351,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{}}}],["tsickle",{"_index":739,"title":{},"body":{"dependencies.html":{}}}],["turn",{"_index":1378,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/original-config-api.html":{}}}],["tutorial",{"_index":972,"title":{},"body":{"index.html":{}}}],["tutorials",{"_index":971,"title":{},"body":{"index.html":{}}}],["two",{"_index":1306,"title":{},"body":{"additional-documentation/adapt-id_token-validation.html":{}}}],["type",{"_index":40,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/CryptoHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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":{},"miscellaneous/typealiases.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{}}}],["typealiases",{"_index":1057,"title":{"miscellaneous/typealiases.html":{}},"body":{}}],["types",{"_index":152,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"modules/OAuthModule.html":{}}}],["ui_locales_supported",{"_index":466,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["until",{"_index":762,"title":{},"body":{"index.html":{}}}],["up",{"_index":914,"title":{},"body":{"index.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/session-checks.html":{}}}],["update",{"_index":831,"title":{},"body":{"index.html":{}}}],["uri",{"_index":1147,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["url",{"_index":177,"title":{"additional-documentation/preserving-state-(like-the-requested-url).html":{}},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"classes/LoginOptions.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/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["url.startswith(u",{"_index":175,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["urlhelperservice",{"_index":539,"title":{"injectables/UrlHelperService.html":{}},"body":{"modules/OAuthModule.html":{},"injectables/UrlHelperService.html":{}}}],["urls",{"_index":561,"title":{},"body":{"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{},"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["use",{"_index":18,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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/refreshing-a-token.html":{},"additional-documentation/working-with-httpinterceptors.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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["usecase",{"_index":910,"title":{},"body":{"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/original-config-api.html":{}}}],["useclass",{"_index":553,"title":{},"body":{"modules/OAuthModule.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["used",{"_index":335,"title":{},"body":{"classes/LoginOptions.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":{},"changelog.html":{},"index.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/server-side-rendering.html":{},"additional-documentation/using-password-flow.html":{}}}],["usefactory",{"_index":552,"title":{},"body":{"modules/OAuthModule.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["usehash",{"_index":1296,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["user",{"_index":432,"title":{},"body":{"classes/LoginOptions.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/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["user's",{"_index":1439,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["user_profile_load_error",{"_index":492,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["user_profile_loaded",{"_index":491,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{},"additional-documentation/events.html":{}}}],["userinfo",{"_index":434,"title":{"interfaces/UserInfo.html":{}},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"index.html":{}}}],["userinfo_encryption_alg_values_supported",{"_index":455,"title":{},"body":{"classes/LoginOptions.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":456,"title":{},"body":{"classes/LoginOptions.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":443,"title":{},"body":{"classes/LoginOptions.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":454,"title":{},"body":{"classes/LoginOptions.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":861,"title":{},"body":{"index.html":{}}}],["username/passwort",{"_index":940,"title":{},"body":{"index.html":{}}}],["users",{"_index":1340,"title":{},"body":{"additional-documentation/server-side-rendering.html":{}}}],["uses",{"_index":384,"title":{},"body":{"classes/LoginOptions.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/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["usevalue",{"_index":554,"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-password-flow.html":{}},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"changelog.html":{},"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/events.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/using-systemjs.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["v",{"_index":635,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["valid",{"_index":305,"title":{},"body":{"classes/JwksValidationHandler.html":{},"index.html":{}}}],["validate",{"_index":82,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/LoginOptions.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/JwksValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["validateathash(validationparams",{"_index":85,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/NullValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["validated",{"_index":368,"title":{},"body":{"classes/LoginOptions.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/JwksValidationHandler.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(params",{"_index":237,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["validatesignature(validationparams",{"_index":65,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/NullValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["validating",{"_index":470,"title":{},"body":{"classes/NullValidationHandler.html":{},"changelog.html":{},"index.html":{}}}],["validation",{"_index":196,"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":{},"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/crypto",{"_index":119,"title":{},"body":{"classes/CryptoHandler.html":{},"modules/OAuthModule.html":{}}}],["validation/jwks",{"_index":195,"title":{},"body":{"classes/JwksValidationHandler.html":{},"modules/OAuthModule.html":{}}}],["validation/null",{"_index":468,"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":{},"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":{},"changelog.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["validationhandlerclass",{"_index":531,"title":{},"body":{"modules/OAuthModule.html":{}}}],["validationoptions",{"_index":297,"title":{},"body":{"classes/JwksValidationHandler.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":852,"title":{},"body":{"index.html":{}}}],["value",{"_index":35,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.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/original-config-api.html":{}}}],["valuetohash",{"_index":42,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/CryptoHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["var",{"_index":247,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["variables",{"_index":1060,"title":{"miscellaneous/variables.html":{}},"body":{"miscellaneous/variables.html":{}}}],["various",{"_index":1372,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["versatility",{"_index":960,"title":{},"body":{"index.html":{}}}],["version",{"_index":653,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/events.html":{},"additional-documentation/session-checks.html":{}}}],["via",{"_index":679,"title":{},"body":{"changelog.html":{},"index.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":1093,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{}}}],["void",{"_index":382,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["voucher",{"_index":913,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["want",{"_index":371,"title":{},"body":{"classes/LoginOptions.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":{}}}],["warn",{"_index":516,"title":{},"body":{"classes/OAuthLogger.html":{}}}],["warn(message",{"_index":398,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["warning",{"_index":1313,"title":{},"body":{"additional-documentation/adapt-id_token-validation.html":{}}}],["warranties",{"_index":1031,"title":{},"body":{"license.html":{}}}],["warranty",{"_index":1026,"title":{},"body":{"license.html":{}}}],["way",{"_index":1223,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["we've",{"_index":793,"title":{},"body":{"index.html":{}}}],["web",{"_index":200,"title":{},"body":{"classes/JwksValidationHandler.html":{},"index.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{}}}],["webcomponents/custom",{"_index":726,"title":{},"body":{"dependencies.html":{}}}],["webhttpurlencodingcodec",{"_index":620,"title":{"classes/WebHttpUrlEncodingCodec.html":{}},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["webpack",{"_index":792,"title":{},"body":{"index.html":{}}}],["well",{"_index":389,"title":{},"body":{"classes/LoginOptions.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/callback-after-login.html":{}}}],["when/some",{"_index":846,"title":{},"body":{"index.html":{}}}],["whenever",{"_index":1267,"title":{},"body":{"additional-documentation/events.html":{}}}],["whether",{"_index":1043,"title":{},"body":{"license.html":{}}}],["white",{"_index":1209,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["window.location.hash",{"_index":603,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["window.location.origin",{"_index":901,"title":{},"body":{"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.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/original-config-api.html":{}}}],["within",{"_index":1358,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{}}}],["without",{"_index":1003,"title":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{}},"body":{"license.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{}}}],["working",{"_index":1196,"title":{"additional-documentation/working-with-httpinterceptors.html":{}},"body":{}}],["works",{"_index":1453,"title":{},"body":{"additional-documentation/configure-custom-oauthstorage.html":{}}}],["workshops",{"_index":985,"title":{},"body":{"index.html":{}}}],["write",{"_index":1217,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["ws02",{"_index":1369,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["yes",{"_index":518,"title":{},"body":{"classes/OAuthLogger.html":{},"injectables/UrlHelperService.html":{}}}],["you've",{"_index":927,"title":{},"body":{"index.html":{}}}],["yourself",{"_index":1403,"title":{},"body":{"additional-documentation/original-config-api.html":{}}}],["zone.js",{"_index":741,"title":{},"body":{"dependencies.html":{}}}],["zoom",{"_index":1054,"title":{},"body":{"overview.html":{}}}],["zum",{"_index":941,"title":{},"body":{"index.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 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 \n Protected\n Abstract\n calcHash\n \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:86\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 \n Protected\n inferHashAlgorithm\n \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:69\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 \n Async\n validateAtHash\n \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:44\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 \n Abstract\n validateSignature\n \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:39\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 \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(validationParams: ValidationParams): 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(valueToHash: string, algorithm: string): 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/CryptoHandler.html":{"url":"classes/CryptoHandler.html","title":"class - CryptoHandler","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n CryptoHandler\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/crypto-handler.ts\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 \n Abstract\n calcHash\n \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/crypto-handler.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 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 \n export abstract class CryptoHandler {\n\n abstract calcHash(valueToHash: string, algorithm: string): 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"},"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 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(authStorage: OAuthStorage, errorHandler: OAuthResourceServerErrorHandler, moduleConfig: OAuthModuleConfig)\n \n \n \n \n Defined in projects/lib/src/interceptors/default-oauth.interceptor.ts:19\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n authStorage\n \n \n OAuthStorage\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 \n Public\n intercept\n \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:38\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 \n import { Injectable, Inject, Optional } from '@angular/core';\nimport { OAuthService } from '../oauth-service';\nimport { OAuthStorage } from '../types';\nimport {\n HttpEvent,\n HttpHandler,\n HttpInterceptor,\n HttpRequest,\n HttpResponse,\n HttpErrorResponse\n} from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { OAuthResourceServerErrorHandler } from './resource-server-error-handler';\nimport { OAuthModuleConfig } from '../oauth-module.config';\nimport { isPlatformBrowser } from '@angular/common';\n\n@Injectable()\nexport class DefaultOAuthInterceptor implements HttpInterceptor {\n constructor(\n private authStorage: OAuthStorage,\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 => url.startsWith(u));\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 (!this.moduleConfig) {\n return next.handle(req);\n }\n if (!this.moduleConfig.resourceServer) {\n return next.handle(req);\n }\n if (!this.checkUrl(url)) {\n return next.handle(req);\n }\n\n const sendAccessToken = this.moduleConfig.resourceServer.sendAccessToken;\n\n if (sendAccessToken && this.authStorage.getItem('access_token')) {\n const token = this.authStorage.getItem('access_token');\n const header = 'Bearer ' + token;\n\n const headers = req.headers.set('Authorization', header);\n\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 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 Description\n \n \n Validates the signature of an id_token against one\nof the keys of an JSON Web Key Set (jwks).\nThis jwks can be provided by the discovery document.\n\n \n\n \n Extends\n \n \n AbstractValidationHandler\n \n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n allowedAlgorithms\n \n \n gracePeriodInSec\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n calcHash\n \n \n toByteArrayAsString\n \n \n validateSignature\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 Properties\n \n \n \n \n \n \n \n \n allowedAlgorithms\n \n \n \n \n \n \n Type : string[]\n\n \n \n \n \n Default value : [\n 'HS256',\n 'HS384',\n 'HS512',\n 'RS256',\n 'RS384',\n 'RS512',\n 'ES256',\n 'ES384',\n 'PS256',\n 'PS384',\n 'PS512'\n ]\n \n \n \n \n Defined in projects/lib/src/token-validation/jwks-validation-handler.ts:21\n \n \n\n \n \n Allowed algorithms\n\n \n \n\n \n \n \n \n \n \n \n \n \n gracePeriodInSec\n \n \n \n \n \n \n Type : number\n\n \n \n \n \n Default value : 600\n \n \n \n \n Defined in projects/lib/src/token-validation/jwks-validation-handler.ts:39\n \n \n\n \n \n Time period in seconds the timestamp in the signature can\ndiffer from the current time.\n\n \n \n\n \n \n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n \n calcHash\n \n \n \n \n \n \n \ncalcHash(valueToHash: string, algorithm: string)\n \n \n\n\n \n \n Defined in projects/lib/src/token-validation/jwks-validation-handler.ts:141\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 toByteArrayAsString\n \n \n \n \n \n \n \ntoByteArrayAsString(hexString: string)\n \n \n\n\n \n \n Defined in projects/lib/src/token-validation/jwks-validation-handler.ts:148\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n hexString\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 validateSignature\n \n \n \n \n \n \n \nvalidateSignature(params: ValidationParams, retry)\n \n \n\n\n \n \n Defined in projects/lib/src/token-validation/jwks-validation-handler.ts:41\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 params\n \n ValidationParams\n \n \n \n No\n \n \n \n \n\n \n \n retry\n \n \n \n \n No\n \n \n \n false\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 Protected\n Abstract\n calcHash\n \n \n \n \n \n \n \n \n calcHash(valueToHash: string, algorithm: string)\n \n \n\n\n \n \n Inherited from AbstractValidationHandler\n\n \n \n \n \n Defined in AbstractValidationHandler:86\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 \n Protected\n inferHashAlgorithm\n \n \n \n \n \n \n \n \n inferHashAlgorithm(jwtHeader: object)\n \n \n\n\n \n \n Inherited from AbstractValidationHandler\n\n \n \n \n \n Defined in AbstractValidationHandler:69\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 \n Async\n validateAtHash\n \n \n \n \n \n \n \n \n validateAtHash(params: ValidationParams)\n \n \n\n\n \n \n Inherited from AbstractValidationHandler\n\n \n \n \n \n Defined in AbstractValidationHandler:44\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 \n Abstract\n validateSignature\n \n \n \n \n \n \n \n \n validateSignature(validationParams: ValidationParams)\n \n \n\n\n \n \n Inherited from AbstractValidationHandler\n\n \n \n \n \n Defined in AbstractValidationHandler:39\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 \n import {\n AbstractValidationHandler,\n ValidationParams\n} from './validation-handler';\n\n// declare var require: any;\n// let rs = require('jsrsasign');\n\nimport * as rs from 'jsrsasign';\n\n/**\n * Validates the signature of an id_token against one\n * of the keys of an JSON Web Key Set (jwks).\n *\n * This jwks can be provided by the discovery document.\n */\nexport class JwksValidationHandler extends AbstractValidationHandler {\n /**\n * Allowed algorithms\n */\n allowedAlgorithms: string[] = [\n 'HS256',\n 'HS384',\n 'HS512',\n 'RS256',\n 'RS384',\n 'RS512',\n 'ES256',\n 'ES384',\n 'PS256',\n 'PS384',\n 'PS512'\n ];\n\n /**\n * Time period in seconds the timestamp in the signature can\n * differ from the current time.\n */\n gracePeriodInSec = 600;\n\n validateSignature(params: ValidationParams, retry = false): Promise {\n if (!params.idToken) throw new Error('Parameter idToken expected!');\n if (!params.idTokenHeader)\n throw new Error('Parameter idTokenHandler expected.');\n if (!params.jwks) throw new Error('Parameter jwks expected!');\n\n if (\n !params.jwks['keys'] ||\n !Array.isArray(params.jwks['keys']) ||\n params.jwks['keys'].length === 0\n ) {\n throw new Error('Array keys in jwks missing!');\n }\n\n // console.debug('validateSignature: retry', retry);\n\n let kid: string = params.idTokenHeader['kid'];\n let keys: object[] = params.jwks['keys'];\n let key: object;\n\n let alg = params.idTokenHeader['alg'];\n\n if (kid) {\n key = keys.find(k => k['kid'] === kid /* && k['use'] === 'sig' */);\n } else {\n let kty = this.alg2kty(alg);\n let matchingKeys = keys.filter(\n k => k['kty'] === kty && k['use'] === 'sig'\n );\n\n /*\n if (matchingKeys.length == 0) {\n let error = 'No matching key found.';\n console.error(error);\n return Promise.reject(error);\n }*/\n if (matchingKeys.length > 1) {\n let error =\n 'More than one matching key found. Please specify a kid in the id_token header.';\n console.error(error);\n return Promise.reject(error);\n } else if (matchingKeys.length === 1) {\n key = matchingKeys[0];\n }\n }\n\n if (!key && !retry && params.loadKeys) {\n return params\n .loadKeys()\n .then(loadedKeys => (params.jwks = loadedKeys))\n .then(_ => this.validateSignature(params, true));\n }\n\n if (!key && retry && !kid) {\n let error = 'No matching key found.';\n console.error(error);\n return Promise.reject(error);\n }\n\n if (!key && retry && kid) {\n let error =\n 'expected key not found in property jwks. ' +\n 'This property is most likely loaded with the ' +\n 'discovery document. ' +\n 'Expected key id (kid): ' +\n kid;\n\n console.error(error);\n return Promise.reject(error);\n }\n\n let keyObj = rs.KEYUTIL.getKey(key);\n let validationOptions = {\n alg: this.allowedAlgorithms,\n gracePeriod: this.gracePeriodInSec\n };\n let isValid = rs.KJUR.jws.JWS.verifyJWT(\n params.idToken,\n keyObj,\n validationOptions\n );\n\n if (isValid) {\n return Promise.resolve();\n } else {\n return Promise.reject('Signature not valid');\n }\n }\n\n private alg2kty(alg: string) {\n switch (alg.charAt(0)) {\n case 'R':\n return 'RSA';\n case 'E':\n return 'EC';\n default:\n throw new Error('Cannot infer kty from alg: ' + alg);\n }\n }\n\n calcHash(valueToHash: string, algorithm: string): Promise {\n let hashAlg = new rs.KJUR.crypto.MessageDigest({ alg: algorithm });\n let result = hashAlg.digestString(valueToHash);\n let byteArrayAsString = this.toByteArrayAsString(result);\n return Promise.resolve(byteArrayAsString);\n }\n\n toByteArrayAsString(hexString: string) {\n let result = '';\n for (let i = 0; i \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 Description\n \n \n Additional options that can be passt 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 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 \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:33\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.\n\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:43\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 \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:26\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 \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:11\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 \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:50\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.\n\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:18\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 export 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.\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 * 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.\n */\n preventClearHashAfterLogin? = false;\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/**\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}\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 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 \n validateAtHash\n \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 \n validateSignature\n \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 \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 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 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:41\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 | 'received_first_token'\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 | 'logout';\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 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 Constructor\n \n \n \n \nconstructor(type: EventType)\n \n \n \n \n Defined in projects/lib/src/events.ts:25\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 | 'received_first_token'\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 | 'logout';\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 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 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:35\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 | 'received_first_token'\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 | 'logout';\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 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 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 \n Abstract\n debug\n \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: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 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 Abstract\n error\n \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:64\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 Abstract\n info\n \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:61\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 Abstract\n log\n \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:62\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 Abstract\n warn\n \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:63\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 \n export 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.\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 * 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.\n */\n preventClearHashAfterLogin? = false;\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/**\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}\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-oidic.module.ts\n \n\n\n\n\n \n \n \n \n\n \n \n \n Methods\n \n \n \n \n \n \n \n \n Static\n forRoot\n \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-oidic.module.ts:27\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 \n import { OAuthStorage, OAuthLogger } from './types';\nimport { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HTTP_INTERCEPTORS, HttpClientModule } 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 { CryptoHandler } from './token-validation/crypto-handler';\nimport { JwksValidationHandler } from './token-validation/jwks-validation-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: CryptoHandler, useClass: JwksValidationHandler },\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 ]\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 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 \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 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 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 \n handleError\n \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: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 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 \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 handleError(err: HttpResponse): Observable {\n return throwError(err);\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 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 \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 \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 \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 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 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 \n Abstract\n handleError\n \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 \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 handleError(err: HttpResponse): Observable {\n return throwError(err);\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 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 \n Abstract\n getItem\n \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:74\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 \n Abstract\n removeItem\n \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:75\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 \n Abstract\n setItem\n \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:76\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 \n export 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.\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 * 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.\n */\n preventClearHashAfterLogin? = false;\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/**\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}\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 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:29\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 | 'received_first_token'\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 | 'logout';\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 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 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 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 acr_values_supported\n \n \n authorization_endpoint\n \n \n check_session_iframe\n \n \n claim_types_supported\n \n \n claims_parameter_supported\n \n \n claims_supported\n \n \n display_values_supported\n \n \n end_session_endpoint\n \n \n grant_types_supported\n \n \n id_token_encryption_alg_values_supported\n \n \n id_token_encryption_enc_values_supported\n \n \n id_token_signing_alg_values_supported\n \n \n issuer\n \n \n jwks_uri\n \n \n registration_endpoint\n \n \n request_object_signing_alg_values_supported\n \n \n response_modes_supported\n \n \n response_types_supported\n \n \n scopes_supported\n \n \n service_documentation\n \n \n subject_types_supported\n \n \n token_endpoint\n \n \n token_endpoint_auth_methods_supported\n \n \n token_endpoint_auth_signing_alg_values_supported\n \n \n ui_locales_supported\n \n \n userinfo_encryption_alg_values_supported\n \n \n userinfo_encryption_enc_values_supported\n \n \n userinfo_endpoint\n \n \n userinfo_signing_alg_values_supported\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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 scopes_supported\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 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 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 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 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 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 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 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 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 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 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 export 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.\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 * 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.\n */\n preventClearHashAfterLogin? = false;\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/**\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}\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 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 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 idToken\n \n \n idTokenClaims\n \n \n idTokenClaimsJson\n \n \n idTokenExpiresAt\n \n \n idTokenHeader\n \n \n idTokenHeaderJson\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 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 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 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 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 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 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 export 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.\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 * 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.\n */\n preventClearHashAfterLogin? = false;\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/**\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}\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 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 \n accessToken\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in projects/lib/src/types.ts:85\n \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:86\n \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:84\n \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:87\n \n \n\n\n \n \n\n\n\n\n\n\n\n\n \n\n\n \n export 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.\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 * 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.\n */\n preventClearHashAfterLogin? = false;\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/**\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}\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 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 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 access_token\n \n \n expires_in\n \n \n id_token\n \n \n refresh_token\n \n \n scope\n \n \n Optional\n state\n \n \n token_type\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 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 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 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 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 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 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 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 export 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.\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 * 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.\n */\n preventClearHashAfterLogin? = false;\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/**\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}\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 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 \n Public\n getHashFragmentParams\n \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 \n Public\n parseQueryString\n \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 \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\n pairs,\n pair,\n separatorIndex,\n escapedKey,\n escapedValue,\n key,\n 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 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 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 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 sub\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:121\n \n \n \n \n\n\n \n Properties\n \n \n \n \n \n sub\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 export 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.\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 * 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.\n */\n preventClearHashAfterLogin? = false;\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/**\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}\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 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 \n Public\n Abstract\n validateAtHash\n \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 \n Public\n Abstract\n validateSignature\n \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 \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(validationParams: ValidationParams): 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(valueToHash: string, algorithm: string): 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"},"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 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 Index\n \n \n \n \n Properties\n \n \n \n \n \n \n accessToken\n \n \n idToken\n \n \n idTokenClaims\n \n \n idTokenHeader\n \n \n jwks\n \n \n loadKeys\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 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 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 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 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 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 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(validationParams: ValidationParams): 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(valueToHash: string, algorithm: string): Promise;\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 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 \n decodeKey\n \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 \n decodeValue\n \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 \n encodeKey\n \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 \n encodeValue\n \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 \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 result-matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"changelog.html":{"url":"changelog.html","title":"getting-started - changelog","body":"\n \n\nChange Log\nLates features\nSee Release Notes\nNew Features in Version 2.1\n\nNew Config API (the original one is still supported)\nNew convenience methods in OAuthService to streamline default tasks:\nsetupAutomaticSilentRefresh()\nloadDiscoveryDocumentAndTryLogin()\n\n\nSingle Sign out through Session Status Change Notification according to the OpenID Connect Session Management specs. This means, you can be notified when the user logs out using at the login provider.\nPossibility to define the ValidationHandler, the Config as well as the OAuthStorage via DI\nBetter structured documentation\n\nNew Features in Version 2\n\nToken Refresh for Implicit Flow by implementing \"silent refresh\"\nValidating the signature of the received id_token\nProviding Events via the observable events.\nThe event token_expires can be used together with a silent refresh to automatically refresh a token when/ before it expires (see also property timeoutFactor).\n\nBreaking Changes in Version 2\n\nThe property oidc defaults to true.\nIf you are just using oauth2, you have to set oidc to false. Otherwise, the validation of the user profile will fail!\nBy default, sessionStorage is used. To use localStorage call method setStorage\nDemands using https as OIDC and OAuth2 relay on it. This rule can be relaxed using the property requireHttps, e. g. for local testing.\nDemands that every url provided by the discovery document starts with the issuer's url. This can be relaxed by using the property strictDiscoveryDocumentValidation.\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 : 8.0.2\n \n @angular/common : 8.0.2\n \n @angular/compiler : 8.0.2\n \n @angular/core : 8.0.2\n \n @angular/elements : 8.0.2\n \n @angular/forms : 8.0.2\n \n @angular/platform-browser : 8.0.2\n \n @angular/platform-browser-dynamic : 8.0.2\n \n @angular/router : 8.0.2\n \n @webcomponents/custom-elements : ^1.2.4\n \n base64-js : ^1.3.0\n \n bootstrap : ^3.3.7\n \n jsrsasign : ^8.0.12\n \n rxjs : 6.5.2\n \n rxjs-compat : ^6.5.2\n \n text-encoder-lite : ^1.0.1\n \n tsickle : ^0.35.0\n \n zone.js : ^0.9.1\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 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 \n \n \n \n\n\n projects/lib/src/base64-helper.ts\n \n \n \n \n \n \n \n \n b64DecodeUnicode\n \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 \n base64UrlEncode\n \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\n projects/lib/src/factories.ts\n \n \n \n \n \n \n \n \n createDefaultLogger\n \n \n \n \n \n \n \ncreateDefaultLogger()\n \n \n\n\n\n\n \n \n \n \n \n \n \n \n \n createDefaultStorage\n \n \n \n \n \n \n \ncreateDefaultStorage()\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.\n\nCredits\n\ngenerator-angular2-library for scaffolding an Angular library\njsrasign until version 5: For validating token signature and for hashing; beginning with version 6, we are using browser APIs to minimize our bundle size\nIdentity Server (used for testing with an .NET/.NET Core Backend)\nKeycloak (Redhat) for testing with Java\n\nResources\n\nSources and Sample:\nhttps://github.com/manfredsteyer/angular-oauth2-oidc\n\nSource Code Documentation\nhttps://manfredsteyer.github.io/angular-oauth2-oidc/docs\n\n\nTested Environment\nSuccessfully tested with Angular 7 and its Router, PathLocationStrategy as well as HashLocationStrategy and CommonJS-Bundling via webpack. At server side we've used IdentityServer (.NET/ .NET Core) and Redhat's Keycloak (Java).\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\nThe closed issues contain some ideas for PRs and enhancements (see labels)\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 Implicit Flow (where a user is redirected to Identity Provider)\nLogging in via Code Flow + PKCE\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\n\nSample-Auth-Server\nYou can use the OIDC-Sample-Server mentioned in the samples for Testing. It assumes, that your Web-App runs on http://localhost:8080.\nUsername/Password: max/geheim\nclientIds: \n\nspa-demo (implicit flow)\ndemo-resource-owner (resource owner password flow)\n\nredirectUris:\n\nlocalhost:[8080-8089|4200-4202]\nlocalhost:[8080-8089|4200-4202]/index.html\nlocalhost:[8080-8089|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}Configuring for Implicit Flow\nThis section shows how to implement login leveraging implicit flow. This is the OAuth2/OIDC flow best suitable for\nSingle Page Application. It sends the user to the Identity Provider's login page. After logging in, the SPA gets tokens.\nThis also allows for single sign on as well as single sign off.\nTo configure the library, the following sample uses the new configuration API introduced with Version 2.1.\nHence, the original API is still supported.\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 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\nSkipping 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. \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.\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.\nMore Documentation (!)\nSee the documentation for more information about this library.\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\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 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 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\nLegend\n\n Declarations\n\n Module\n\n Bootstrap\n\n Providers\n\n Exports\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 2 Injectables\n \n \n \n \n \n \n \n 19 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 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 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\" | \"received_first_token\" | \"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\" | \"logout\"\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 Miscellaneous\n Variables\n\n\n\n Index\n \n \n \n \n \n \n AUTH_CONFIG (projects/.../tokens.ts)\n \n \n \n \n \n \n\n\n projects/lib/src/tokens.ts\n \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\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\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\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/code-flow-+-pcke.html":{"url":"additional-documentation/code-flow-+-pcke.html","title":"additional-page - Code Flow + PCKE","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nCode Flow\nSince Version 8, this library also supports code flow and PKCE to align with the current draft of the OAuth 2.0 Security Best Current Practice document. \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://demo.identityserver.io',\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\n // Not recommented:\n // disablePKCI: true,\n };After this, you can initialize the code flow using:\n this.oauthService.initCodeFlow();There is also a convenience method initLoginFlow which initializes either the code flow or the implicit flow depending on your configuration. \n this.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.tokenValidationHandler = new JwksValidationHandler();\nthis.oauthService.loadDiscoveryDocumentAndTryLogin();\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\nRefreshing a Token\nThe strategy to use for refreshing your token differs between implicit flow and code flow. Hence, you find here one separate section for both of them.\nThe last section shows how to automate refreshing for both flows.\nRefreshing when using Code Flow (not Implicit Flow!)\n\n\nFor refreshing a token with implicit flow, please see section below!\n\n\nWhen using code flow, you can get an refresh_token. While the original standard DOES NOT allow this for SPAs, the mentioned 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 an refresh token.\nTo refresh your token, just call the refresh method:\nthis.oauthService.refresh();Refreshing when using Implicit Flow (not Code Flow!)\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 // 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 parent.postMessage(location.hash, location.origin);\n \n\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\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\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/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\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\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\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\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\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}Events\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\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\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\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\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/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\nOriginal Config API\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/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\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 implicit 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.\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\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"}}
+ "index": {"version":"2.3.6","fields":["title","body"],"fieldVectors":[["title/classes/AbstractValidationHandler.html",[0,0.079,1,2.69]],["body/classes/AbstractValidationHandler.html",[0,0.075,1,2.555,2,0.764,3,0.453,4,0.506,5,0.453,6,3.358,7,3.942,8,1.386,9,1.47,10,1.659,11,1.47,12,1.881,13,2.779,14,2.577,15,1.758,16,3.387,17,2.208,18,1.172,19,2.779,20,3.387,21,0.563,22,1.47,23,4.134,24,3.436,25,3.324,26,3.055,27,2.555,28,1.723,29,4.047,30,0.897,31,2.687,32,2.779,33,2.076,34,3.685,35,1.831,36,1.326,37,1.436,38,0.02,39,1.456,40,0.847,41,1.172,42,2.555,43,1.851,44,2.381,45,2.779,46,1.695,47,2.687,48,2.779,49,3.685,50,2.779,51,1.898,52,2.779,53,2.779,54,1.636,55,2.368,56,2.779,57,3.961,58,2.687,59,3.8,60,3.623,61,3.055,62,1.362,63,1.586,64,0.936,65,2.555,66,2.304,67,2.64,68,0.726,69,1.863,70,1.863,71,2.051,72,0.488,73,1.26,74,1.097,75,1.16,76,1.16,77,1.16,78,1.587,79,1.863,80,2.051,81,2.051,82,1.097,83,0.889,84,2.068,85,1.863,86,2.779,87,2.051,88,2.051,89,2.051,90,2.051,91,2.051,92,2.051,93,0.624,94,2.051,95,2.051,96,2.051,97,1.587,98,4.057,99,2.051,100,4.057,101,2.051,102,2.051,103,2.051,104,1.396,105,3.66,106,2.051,107,2.051,108,2.051,109,1.863,110,1.039,111,2.051,112,1.713,113,2.051,114,2.051,115,0.007,116,0.01,117,0.007]],["title/classes/CryptoHandler.html",[0,0.079,118,3.223]],["body/classes/CryptoHandler.html",[0,0.095,2,1.451,3,0.861,4,0.961,5,0.861,6,3.661,8,2.634,9,1.873,10,1.695,20,3.95,21,1.069,22,2.274,27,3.95,28,1.857,29,4.253,30,0.861,37,1.38,38,0.018,39,1.247,40,0.814,41,1.126,42,3.254,43,1.778,44,2.274,72,0.519,115,0.013,116,0.016,117,0.013,118,4.731,119,5.313,120,5.104,121,5.104,122,4.377,123,5.104]],["title/interceptors/DefaultOAuthInterceptor.html",[124,3.619,125,2.927]],["body/interceptors/DefaultOAuthInterceptor.html",[0,0.06,3,0.544,4,0.607,5,0.544,14,1.563,21,0.675,22,1.679,28,0.829,30,0.772,37,1.237,38,0.02,39,1.118,40,0.73,41,1.277,43,1.123,55,2.704,68,1.805,72,0.328,84,2.745,93,1.062,104,2.366,115,0.008,116,0.012,117,0.008,125,3.173,126,2.764,127,4.562,128,2.764,129,5.32,130,2.361,131,3.224,132,2.017,133,2.055,134,4.562,135,3.421,136,4.562,137,3.421,138,3.224,139,3.924,140,2.764,141,4.966,142,4.67,143,4.966,144,3.224,145,4.562,146,3.143,147,3.173,148,1.905,149,2.764,150,3.924,151,1.663,152,3.924,153,2.236,154,3.224,155,3.224,156,2.764,157,2.764,158,3.224,159,2.764,160,3.224,161,2.236,162,0.788,163,1.067,164,2.055,165,2.917,166,2.462,167,2.764,168,2.236,169,3.369,170,2.764,171,2.764,172,4.241,173,2.764,174,1.316,175,3.224,176,3.224,177,3.924,178,2.764,179,2.764,180,0.748,181,2.764,182,2.764,183,4.562,184,2.764,185,2.764,186,2.917,187,2.764,188,4.576,189,4.576,190,3.924,191,3.224,192,3.224,193,1.512,194,1.247,195,3.224,196,3.224,197,2.764,198,1.776,199,3.224,200,3.224,201,3.224,202,3.224,203,3.224,204,3.224,205,2.764,206,3.924,207,3.224,208,2.764]],["title/classes/JwksValidationHandler.html",[0,0.079,209,2.494]],["body/classes/JwksValidationHandler.html",[0,0.036,1,3.502,2,0.554,3,0.329,4,0.367,5,0.329,6,3.09,8,1.005,9,1.147,10,1.093,16,1.992,18,0.43,20,2.853,21,0.408,22,1.147,23,3.104,24,2.68,25,2.167,26,2.853,27,2.494,28,1.746,29,3.64,30,0.994,32,1.351,33,1.363,34,2.167,35,2.045,36,0.645,37,1.485,38,0.02,39,1.395,40,0.939,41,1.212,42,1.992,43,1.913,44,2.016,45,1.351,46,1.272,48,1.351,49,3.626,50,1.351,51,1.563,52,1.351,53,1.351,54,0.796,55,1.846,56,1.351,57,3.48,59,2.853,60,1.242,61,2.494,62,0.554,63,0.645,64,1.363,65,1.242,66,1.671,67,2.699,68,0.845,72,0.198,74,0.796,78,3.246,79,1.351,86,1.351,93,0.452,104,2.105,109,3.397,110,2.023,115,0.01,116,0.013,117,0.005,122,2.68,163,1.481,164,1.242,172,1.351,194,1.209,209,1.846,210,4.484,211,2.664,212,1.23,213,3.838,214,3.125,215,2.167,216,2.919,217,0.763,218,2.167,219,1.169,220,1.057,221,1.992,222,1.209,223,3.912,224,3.912,225,3.125,226,1.932,227,3.125,228,3.125,229,3.125,230,3.125,231,3.125,232,3.125,233,3.125,234,3.125,235,3.125,236,3.125,237,3.125,238,1.949,239,3.125,240,0.891,241,3.125,242,3.104,243,3.125,244,2.68,245,3.125,246,3.125,247,2.167,248,1.949,249,3.125,250,1.949,251,1.949,252,3.125,253,5.71,254,1.949,255,4.476,256,1.949,257,1.949,258,1.949,259,1.949,260,1.949,261,1.949,262,1.949,263,3.125,264,1.949,265,1.488,266,3.125,267,3.912,268,4.201,269,1.949,270,1.949,271,3.125,272,3.125,273,1.949,274,1.949,275,2.987,276,1.949,277,1.949,278,1.949,279,5.71,280,1.949,281,1.949,282,1.949,283,1.949,284,3.125,285,3.125,286,3.912,287,1.949,288,1.949,289,1.949,290,1.671,291,1.949,292,3.912,293,3.104,294,4.476,295,4.476,296,2.167,297,1.242,298,1.074,299,1.949,300,1.949,301,1.949,302,1.949,303,1.949,304,1.949,305,1.949,306,1.088,307,1.488,308,0.613,309,3.125,310,1.949,311,3.125,312,1.949,313,1.949,314,1.949,315,3.125,316,1.949,317,1.949,318,1.949,319,1.671,320,1.949,321,1.949,322,1.949,323,1.722,324,1.949,325,1.949,326,1.488,327,1.949,328,1.949,329,1.949,330,1.949,331,1.949,332,1.949,333,1.949,334,1.949]],["title/classes/LoginOptions.html",[0,0.079,335,2.047]],["body/classes/LoginOptions.html",[0,0.087,2,0.599,3,0.561,4,0.397,5,0.356,9,0.773,10,1.512,11,0.773,12,1.363,15,1.1,18,1.193,21,0.441,28,1.919,30,0.913,33,2.045,35,0.963,38,0.02,40,0.812,41,1.415,44,0.773,46,1.447,51,0.994,54,1.358,62,1.538,63,0.697,64,0.734,72,0.597,73,1.601,74,1.358,75,0.91,76,0.91,77,0.91,82,1.358,83,1.548,93,1.256,115,0.005,116,0.009,117,0.005,132,0.734,133,1.781,162,0.813,163,1.1,174,1.682,180,0.772,193,1.33,194,1.287,212,1.046,216,0.963,217,1.322,219,0.63,220,0.57,222,1.287,226,0.91,240,1.52,306,1.885,308,0.663,335,1.613,336,1.087,337,0.599,338,1.807,339,2.107,340,1.883,341,1.998,342,2.126,343,2.126,344,1.883,345,2.126,346,2.107,347,1.1,348,2.847,349,1.601,350,2.398,351,1.716,352,1.358,353,1.716,354,1.52,355,1.716,356,2.107,357,1.613,358,0.899,359,2.198,360,2.268,361,1.52,362,1.613,363,1.613,364,1.52,365,1.716,366,1.202,367,2.414,368,1.613,369,1.716,370,1.716,371,2.626,372,2.107,373,2.019,374,1.716,375,1.158,376,1.613,377,1.716,378,2.792,379,1.91,380,2.107,381,1.52,382,1.998,383,2.107,384,1.716,385,1.435,386,1.716,387,1.52,388,1.613,389,1.435,390,1.716,391,1.716,392,2.107,393,1.435,394,1.716,395,2.469,396,3.118,397,0.963,398,0.734,399,1.087,400,1.716,401,0.963,402,0.773,403,0.861,404,0.963,405,0.963,406,1.022,407,0.963,408,1.087,409,2.627,410,1.087,411,1.087,412,1.087,413,1.087,414,1.087,415,0.91,416,1.087,417,0.697,418,0.861,419,0.861,420,0.861,421,1.087,422,1.022,423,1.087,424,0.734,425,1.087,426,1.087,427,0.963,428,2.627,429,0.963,430,1.087,431,1.022,432,1.087,433,1.087,434,1.087,435,1.716,436,1.435,437,1.716,438,1.682,439,1.613,440,1.087,441,1.022,442,1.087,443,1.087,444,1.022,445,0.697,446,0.663,447,1.087,448,0.963,449,1.087,450,0.63,451,1.022,452,0.773,453,1.087,454,1.087,455,1.087,456,1.087,457,1.087,458,1.087,459,1.087,460,1.087,461,1.087,462,1.087,463,1.087,464,1.087,465,1.087,466,1.087,467,1.087,468,1.087,469,1.087,470,1.087,471,1.087,472,1.087,473,1.087,474,1.087,475,1.087,476,1.087,477,1.087,478,1.087,479,1.087,480,1.087]],["title/classes/NullValidationHandler.html",[0,0.079,481,2.927]],["body/classes/NullValidationHandler.html",[0,0.083,2,1.268,3,0.752,4,0.84,5,0.752,6,3.709,8,2.301,9,1.636,12,2.077,14,2.763,16,3.632,21,0.934,22,2.09,26,3.632,30,0.961,37,1.54,38,0.019,39,1.392,40,0.908,41,1.256,43,1.984,44,2.427,57,4.292,65,3.632,68,1.205,72,0.454,85,3.951,104,1.984,115,0.012,116,0.015,117,0.012,164,4.001,211,3.488,349,1.791,481,3.951,482,5.383,483,4.885,484,4.35,485,5.697,486,4.35,487,5.697,488,4.46,489,4.46,490,4.46,491,4.46]],["title/classes/OAuthErrorEvent.html",[0,0.079,492,2.494]],["body/classes/OAuthErrorEvent.html",[0,0.12,2,1.163,3,1.016,4,0.771,5,0.69,10,1,30,0.69,37,1.106,38,0.02,39,1,40,1.06,41,0.903,46,1.941,64,2.098,72,0.677,115,0.011,116,0.014,117,0.011,130,2.78,198,2.255,221,4.08,424,2.098,492,3.183,493,2.609,494,4.24,495,4.177,496,4.438,497,4.177,498,4.093,499,2.418,500,2.609,501,2.609,502,2.418,503,2.609,504,2.609,505,2.418,506,2.609,507,2.609,508,2.609,509,2.609,510,2.609,511,2.609,512,2.418,513,2.418,514,2.609,515,2.418,516,2.609,517,2.418,518,2.418,519,2.112,520,2.838,521,2.609,522,4.439,523,4.177,524,2.609]],["title/classes/OAuthEvent.html",[0,0.079,494,2.69]],["body/classes/OAuthEvent.html",[0,0.121,2,1.19,3,1.028,4,0.788,5,0.706,10,1.023,30,0.706,37,1.131,38,0.02,39,1.023,40,1.068,41,0.923,46,1.554,64,1.458,72,0.682,115,0.011,116,0.014,117,0.011,130,2.821,198,2.306,221,3.882,424,2.121,492,2.473,493,2.668,494,4.271,495,4.223,496,4.462,497,2.903,499,2.473,500,2.668,501,2.668,502,2.473,503,2.668,504,2.668,505,2.473,506,2.668,507,2.668,508,2.668,509,2.668,510,2.668,511,2.668,512,2.473,513,2.473,514,2.668,515,2.473,516,2.668,517,2.473,518,2.473,519,2.16,520,2.903,521,2.668,522,4.478,523,4.223,524,2.668,525,4.186]],["title/classes/OAuthInfoEvent.html",[0,0.079,524,2.69]],["body/classes/OAuthInfoEvent.html",[0,0.12,2,1.179,3,1.127,4,0.781,5,0.7,10,1.013,30,0.7,37,1.121,38,0.02,39,1.013,40,1.065,41,0.915,46,1.545,64,1.445,72,0.68,115,0.011,116,0.014,117,0.011,130,2.805,198,2.285,221,4.102,424,2.112,492,2.451,493,2.644,494,4.258,495,4.205,496,4.452,497,2.876,499,2.451,500,2.644,501,2.644,502,2.451,503,2.644,504,2.644,505,2.451,506,2.644,507,2.644,508,2.644,509,2.644,510,2.644,511,2.644,512,2.451,513,2.451,514,2.644,515,2.451,516,2.644,517,2.451,518,2.451,519,2.14,520,2.876,521,2.644,522,4.462,523,4.205,524,3.465,526,4.148]],["title/classes/OAuthLogger.html",[0,0.079,407,1.929]],["body/classes/OAuthLogger.html",[0,0.089,2,0.623,3,0.807,4,0.413,5,0.37,9,0.805,10,1.705,11,1.259,12,0.726,15,0.726,18,0.932,21,0.459,22,1.259,28,1.922,30,0.876,33,1.665,37,1.403,38,0.02,39,1.268,40,0.827,41,1.145,43,1.808,44,0.805,46,1.564,51,1.026,54,1.401,62,1.359,63,0.726,64,0.764,72,0.606,73,1.73,74,1.401,75,0.946,76,0.946,77,0.946,82,0.895,83,1.399,93,0.981,115,0.006,116,0.009,117,0.006,132,0.764,133,1.632,162,0.536,163,1.399,174,1.401,180,0.509,193,1.202,194,0.848,212,0.69,216,1.002,217,1.033,219,0.656,220,0.593,240,1.568,306,1.472,308,0.69,335,1.063,336,1.131,340,1.002,341,1.063,342,1.131,343,1.131,344,1.002,345,1.131,347,0.726,348,2.319,349,1.329,350,1.952,351,1.131,352,0.895,353,1.131,354,1.002,355,1.131,357,1.063,358,0.593,359,2.064,360,1.664,361,1.002,362,1.063,363,1.063,364,1.002,365,1.131,366,0.882,367,2.467,368,1.063,369,1.131,370,1.131,373,1.481,374,1.131,375,0.764,376,1.063,377,2.839,378,2.181,379,1.401,381,1.002,382,1.664,384,1.131,385,0.946,386,1.131,387,1.002,388,1.063,389,0.946,390,1.131,391,1.131,393,0.946,394,1.131,395,2.517,396,3.432,397,1.568,398,1.195,399,1.77,400,2.181,401,1.568,402,1.259,403,1.401,404,1.568,405,1.568,406,1.664,407,1.568,408,1.77,409,3.468,410,1.77,411,1.77,412,1.77,413,1.77,414,1.131,415,0.946,416,1.131,417,0.726,418,0.895,419,0.895,420,0.895,421,1.131,422,1.063,423,1.131,424,0.764,425,1.131,426,1.131,427,1.002,428,2.678,429,1.002,430,1.131,431,1.063,432,1.131,433,1.131,434,1.131,435,1.77,436,1.481,437,1.77,438,1.726,439,1.664,440,1.131,441,1.063,442,1.131,443,1.131,444,1.063,445,0.726,446,0.69,447,1.131,448,1.002,449,1.131,450,0.656,451,1.063,452,0.805,453,1.131,454,1.131,455,1.131,456,1.131,457,1.131,458,1.131,459,1.131,460,1.131,461,1.131,462,1.131,463,1.131,464,1.131,465,1.131,466,1.131,467,1.131,468,1.131,469,1.131,470,1.131,471,1.131,472,1.131,473,1.131,474,1.131,475,1.131,476,1.131,477,1.131,478,1.131,479,1.131,480,1.131,527,3.431,528,2.62,529,3.431,530,2.193,531,4.45,532,2.193,533,2.193,534,2.193,535,2.193]],["title/modules/OAuthModule.html",[536,3.223,537,2.69]],["body/modules/OAuthModule.html",[0,0.067,3,0.604,4,0.675,5,0.604,7,2.484,12,1.63,22,1.314,30,0.604,35,1.637,37,0.968,38,0.02,39,0.875,40,0.571,41,0.79,43,1.248,68,1.962,72,0.364,93,0.832,104,1.248,115,0.009,116,0.013,117,0.009,118,3.761,119,3.071,125,3.416,132,1.716,133,1.549,135,2.91,137,3.756,148,2.116,151,1.848,162,0.875,163,1.185,164,4.052,165,3.865,166,2.735,167,3.071,168,2.484,180,0.832,193,1.723,209,2.91,210,3.071,211,2.389,226,1.546,402,2.469,407,2.251,424,1.716,481,3.904,482,3.071,537,3.589,538,2.735,539,4.926,540,3.582,541,4.926,542,4.926,543,3.582,544,6.063,545,3.582,546,2.905,547,5.63,548,4.299,549,4.926,550,3.071,551,4.926,552,2.735,553,3.761,554,3.582,555,3.14,556,3.582,557,3.582,558,3.582,559,4.224,560,4.224,561,3.582,562,2.735,563,2.484,564,3.071,565,2.283,566,4.224,567,5.199,568,3.582,569,3.582]],["title/classes/OAuthModuleConfig.html",[0,0.079,137,2.494]],["body/classes/OAuthModuleConfig.html",[0,0.115,2,1.427,3,0.847,4,0.945,5,0.847,10,1.499,21,1.051,28,1.29,30,0.847,38,0.019,40,0.8,63,1.661,72,0.624,93,1.166,115,0.013,116,0.016,117,0.013,137,3.624,174,2.505,180,1.166,186,3.91,217,1.227,222,2.373,349,1.579,570,5.26,571,4.305,572,4.594,573,5.058,574,5.021,575,3.481,576,4.305,577,4.305,578,4.305,579,3.834,580,3.2,581,3.481,582,3.481,583,4.305]],["title/classes/OAuthNoopResourceServerErrorHandler.html",[0,0.079,555,2.69]],["body/classes/OAuthNoopResourceServerErrorHandler.html",[0,0.113,2,1.385,3,0.822,4,0.918,5,0.822,8,2.515,10,1.472,14,2.921,21,1.021,22,2.21,30,0.822,37,1.317,38,0.019,39,1.191,40,0.777,41,1.075,43,1.698,68,1.628,72,0.613,104,1.698,115,0.013,116,0.016,117,0.013,135,3.863,146,4.035,151,2.515,153,3.38,162,1.472,163,1.993,555,3.84,584,5.165,585,5.165,586,4.992,587,5.358,588,4.874,589,4.179,590,4.179,591,4.179]],["title/classes/OAuthResourceServerConfig.html",[0,0.079,573,3.223]],["body/classes/OAuthResourceServerConfig.html",[0,0.109,2,1.316,3,0.781,4,0.872,5,0.781,10,1.425,21,0.969,28,1.19,30,1.078,38,0.019,40,1.018,41,1.479,63,1.93,72,0.594,93,1.354,115,0.012,116,0.015,117,0.012,137,2.735,174,2.608,180,1.075,186,4.406,217,1.425,222,2.256,349,1.834,371,2.95,570,5.749,571,3.969,572,3.21,573,4.877,575,4.045,576,5.001,577,5.001,578,5.001,579,4.454,580,3.718,581,4.429,582,4.045,583,5.476,592,4.629,593,4.629,594,4.629]],["title/classes/OAuthResourceServerErrorHandler.html",[0,0.079,135,2.494]],["body/classes/OAuthResourceServerErrorHandler.html",[0,0.113,2,1.385,3,0.822,4,0.918,5,0.822,8,2.515,10,1.668,14,2.364,21,1.021,22,2.21,30,0.822,37,1.317,38,0.019,39,1.191,40,0.777,41,1.075,43,1.698,68,1.628,72,0.613,104,1.698,115,0.013,116,0.016,117,0.013,135,3.863,146,4.035,151,2.515,153,3.38,162,1.472,163,1.993,555,3.107,584,5.165,585,5.165,586,4.992,587,5.358,589,4.179,590,4.179,591,4.179,595,4.874]],["title/classes/OAuthStorage.html",[0,0.079,132,1.47]],["body/classes/OAuthStorage.html",[0,0.092,2,0.652,3,0.6,4,0.432,5,0.387,9,0.842,10,1.672,11,0.842,12,0.759,15,0.759,18,0.959,21,0.48,22,1.304,28,1.943,30,0.734,33,1.706,37,1.176,38,0.02,39,1.063,40,0.694,41,0.959,43,1.515,44,0.842,46,1.507,51,1.062,54,1.451,62,1.393,63,0.759,64,0.799,72,0.615,73,1.667,74,1.451,75,0.99,76,0.99,77,0.99,82,0.937,83,1.621,93,1.01,115,0.006,116,0.009,117,0.006,132,1.238,133,1.541,162,0.56,163,0.759,174,1.451,180,0.533,193,1.237,194,0.888,212,0.721,216,2.239,217,1.063,219,0.686,220,0.62,240,1.624,306,1.515,308,0.721,335,1.112,336,1.184,340,1.048,341,1.112,342,1.184,343,1.184,344,1.048,345,1.184,347,0.759,348,2.376,349,1.541,350,2.001,351,1.184,352,0.937,353,1.184,354,1.048,355,1.184,357,1.112,358,0.62,359,2.115,360,1.723,361,1.048,362,1.112,363,1.112,364,1.048,365,1.184,366,0.913,367,2.528,368,1.112,369,1.184,370,1.184,373,1.534,374,1.184,375,0.799,376,1.112,377,1.184,378,2.245,379,1.451,381,1.048,382,1.723,384,1.184,385,0.99,386,1.184,387,1.048,388,1.112,389,0.99,390,1.184,391,1.184,393,0.99,394,1.184,395,2.57,396,3.33,397,1.048,398,0.799,399,1.184,400,2.245,401,1.048,402,0.842,403,0.937,404,1.048,405,1.048,406,1.112,407,1.048,408,1.184,409,2.735,410,1.184,411,1.184,412,1.184,413,1.184,414,1.834,415,1.534,416,1.834,417,1.176,418,1.451,419,1.451,420,1.451,421,1.834,422,1.723,423,1.834,424,1.238,425,1.834,426,1.834,427,1.988,428,2.735,429,1.048,430,1.184,431,1.112,432,1.184,433,1.184,434,1.184,435,1.834,436,1.534,437,1.834,438,1.776,439,1.723,440,1.184,441,1.112,442,1.184,443,1.184,444,1.112,445,0.759,446,0.721,447,1.184,448,1.048,449,1.184,450,0.686,451,1.112,452,0.842,453,1.184,454,1.184,455,1.184,456,1.184,457,1.184,458,1.184,459,1.184,460,1.184,461,1.184,462,1.184,463,1.184,464,1.184,465,1.184,466,1.184,467,1.184,468,1.184,469,1.184,470,1.184,471,1.184,472,1.184,473,1.184,474,1.184,475,1.184,476,1.184,477,1.184,478,1.184,479,1.184,480,1.184,596,3.554,597,3.554,598,3.554,599,2.294,600,2.294,601,2.294]],["title/classes/OAuthSuccessEvent.html",[0,0.079,521,2.69]],["body/classes/OAuthSuccessEvent.html",[0,0.12,2,1.179,3,1.127,4,0.781,5,0.7,10,1.013,30,0.7,37,1.121,38,0.02,39,1.013,40,1.065,41,0.915,46,1.545,64,1.445,72,0.68,115,0.011,116,0.014,117,0.011,130,2.805,198,2.285,221,4.102,424,2.112,492,2.451,493,2.644,494,4.258,495,4.205,496,4.452,497,2.876,499,2.451,500,2.644,501,2.644,502,2.451,503,2.644,504,2.644,505,2.451,506,2.644,507,2.644,508,2.644,509,2.644,510,2.644,511,2.644,512,2.451,513,2.451,514,2.644,515,2.451,516,2.644,517,2.451,518,2.451,519,2.14,520,2.876,521,3.465,522,4.462,523,4.205,524,2.644,602,4.148]],["title/interfaces/OidcDiscoveryDoc.html",[73,1.327,451,2.047]],["body/interfaces/OidcDiscoveryDoc.html",[0,0.084,3,0.53,4,0.37,5,0.331,9,0.72,10,1.48,11,0.72,12,0.65,15,0.65,18,0.867,21,0.411,28,1.969,33,1.566,38,0.02,40,1.138,44,0.72,46,1.398,51,0.94,54,1.284,62,1.278,63,0.65,64,0.684,72,0.583,73,1.546,74,1.284,75,0.847,76,0.847,77,0.847,82,0.802,83,1.301,93,0.913,115,0.005,116,0.008,117,0.005,132,0.684,133,1.413,162,0.48,163,0.65,174,1.835,180,0.456,193,1.118,194,0.76,212,0.617,216,0.897,217,0.961,219,0.94,220,0.85,222,1.216,240,1.437,306,1.369,308,0.617,335,0.952,336,1.013,340,0.897,341,0.952,342,1.013,343,1.013,344,0.897,345,1.013,347,0.65,348,2.18,349,1.236,350,1.835,351,1.013,352,0.802,353,1.013,354,0.897,355,1.013,357,0.952,358,0.531,359,1.94,360,1.524,361,0.897,362,0.952,363,0.952,364,0.897,365,1.013,366,0.808,367,2.029,368,0.952,369,1.013,370,1.013,373,1.357,374,1.013,375,0.684,376,0.952,377,1.013,378,2.029,379,1.284,381,0.897,382,1.524,384,1.013,385,0.847,386,1.013,387,0.897,388,0.952,389,0.847,390,1.013,391,1.013,393,0.847,394,1.013,395,2.385,396,3.047,397,0.897,398,0.684,399,1.013,400,1.622,401,0.897,402,0.72,403,0.802,404,0.897,405,0.897,406,0.952,407,0.897,408,1.013,409,2.537,410,1.013,411,1.013,412,1.013,413,1.013,414,1.013,415,0.847,416,1.013,417,0.65,418,0.802,419,0.802,420,0.802,421,1.013,422,0.952,423,1.013,424,0.684,425,1.013,426,1.013,427,0.897,428,2.707,429,0.897,430,1.013,431,0.952,432,1.013,433,1.013,434,1.013,435,1.622,436,1.357,437,1.622,438,1.835,439,1.524,440,1.013,441,0.952,442,1.013,443,1.013,444,0.952,445,0.65,446,0.617,447,1.013,448,0.897,449,1.013,450,0.94,451,1.524,452,1.649,453,2.319,454,2.319,455,2.319,456,2.319,457,2.319,458,2.319,459,2.319,460,2.319,461,2.319,462,2.319,463,2.319,464,2.319,465,2.319,466,2.319,467,2.319,468,2.319,469,2.319,470,2.319,471,2.319,472,2.319,473,2.319,474,2.319,475,2.319,476,2.319,477,2.319,478,2.319,479,2.319,480,2.319,603,1.16]],["title/interfaces/ParsedIdToken.html",[73,1.327,431,2.047]],["body/interfaces/ParsedIdToken.html",[0,0.093,3,0.616,4,0.447,5,0.401,9,0.871,10,1.563,11,0.871,12,0.786,15,0.786,18,0.98,21,0.497,28,1.943,33,1.738,38,0.02,40,0.906,44,0.871,46,1.782,51,1.329,54,1.815,62,1.418,63,0.786,64,0.827,72,0.622,73,1.693,74,2.199,75,1.025,76,2.153,77,2.153,82,0.969,83,1.471,93,1.032,115,0.006,116,0.009,117,0.006,132,0.827,133,1.569,162,0.58,163,0.786,174,1.49,180,0.551,193,1.264,194,0.918,212,0.747,216,1.085,217,1.086,219,0.71,220,0.642,222,1.412,240,2.28,306,1.548,308,0.747,335,1.151,336,1.225,340,1.085,341,1.151,342,1.225,343,1.225,344,1.085,345,1.225,347,0.786,348,2.419,349,1.398,350,2.037,351,1.225,352,0.969,353,1.225,354,1.085,355,1.225,357,1.151,358,0.642,359,2.153,360,1.77,361,1.085,362,1.151,363,1.151,364,1.085,365,1.225,366,0.938,367,2.294,368,1.151,369,1.225,370,1.225,373,1.575,374,1.225,375,0.827,376,1.151,377,1.225,378,2.294,379,1.49,381,1.085,382,2.156,384,1.225,385,1.025,386,1.225,387,1.085,388,1.151,389,1.025,390,1.225,391,1.225,393,1.025,394,1.225,395,2.611,396,3.234,397,1.085,398,0.827,399,1.225,400,1.883,401,1.085,402,0.871,403,0.969,404,1.085,405,1.085,406,1.151,407,1.085,408,1.225,409,2.778,410,1.225,411,1.225,412,1.225,413,1.225,414,1.225,415,1.025,416,1.225,417,0.786,418,0.969,419,0.969,420,0.969,421,1.225,422,1.151,423,1.225,424,0.827,425,1.225,426,1.225,427,1.085,428,2.933,429,1.085,430,1.225,431,1.77,432,2.574,433,2.574,434,2.574,435,1.883,436,1.575,437,1.883,438,1.815,439,1.77,440,1.225,441,1.151,442,1.225,443,1.225,444,1.151,445,0.786,446,0.747,447,1.225,448,1.085,449,1.225,450,0.71,451,1.151,452,0.871,453,1.225,454,1.225,455,1.225,456,1.225,457,1.225,458,1.225,459,1.225,460,1.225,461,1.225,462,1.225,463,1.225,464,1.225,465,1.225,466,1.225,467,1.225,468,1.225,469,1.225,470,1.225,471,1.225,472,1.225,473,1.225,474,1.225,475,1.225,476,1.225,477,1.225,478,1.225,479,1.225,480,1.225,603,1.403]],["title/classes/ReceivedTokens.html",[0,0.079,395,2.047]],["body/classes/ReceivedTokens.html",[0,0.094,2,0.679,3,0.619,4,0.45,5,0.403,9,0.877,10,1.566,11,0.877,12,0.791,15,0.791,18,0.984,21,0.5,28,1.939,30,0.845,33,1.744,38,0.02,40,0.798,41,1.104,44,0.877,46,1.62,51,1.096,54,1.822,62,1.62,63,0.791,64,0.832,72,0.623,73,1.698,74,2.044,75,1.926,76,1.031,77,1.031,82,0.976,83,1.656,93,1.036,115,0.006,116,0.01,117,0.006,132,0.832,133,1.574,162,0.584,163,0.791,174,1.498,180,0.555,193,1.423,194,0.924,212,0.751,216,1.092,217,1.09,219,0.714,220,0.646,222,1.419,240,1.676,306,1.555,308,1.153,335,1.159,336,1.233,340,1.092,341,1.159,342,1.233,343,1.233,344,1.092,345,1.233,347,0.791,348,2.428,349,1.403,350,2.044,351,1.233,352,0.976,353,1.233,354,1.092,355,1.233,357,1.159,358,0.646,359,2.561,360,1.778,361,1.092,362,1.159,363,1.159,364,1.092,365,1.233,366,0.943,367,2.303,368,1.159,369,1.233,370,1.233,373,1.583,374,1.233,375,0.832,376,1.159,377,1.233,378,2.303,379,1.498,381,1.092,382,1.778,384,1.233,385,1.031,386,1.233,387,1.092,388,1.159,389,1.031,390,1.233,391,1.233,393,1.031,394,1.233,395,2.764,396,3.24,397,1.092,398,0.832,399,1.233,400,1.892,401,1.092,402,0.877,403,0.976,404,1.092,405,1.092,406,1.159,407,1.092,408,1.233,409,2.786,410,1.233,411,1.233,412,1.233,413,1.233,414,1.233,415,1.031,416,1.233,417,0.791,418,0.976,419,0.976,420,0.976,421,1.233,422,1.159,423,1.233,424,0.832,425,1.233,426,1.233,427,1.092,428,2.941,429,1.676,430,2.303,431,1.159,432,1.233,433,1.233,434,1.233,435,1.892,436,1.583,437,1.892,438,1.822,439,1.778,440,1.233,441,1.159,442,1.233,443,1.233,444,1.159,445,0.791,446,0.751,447,1.233,448,1.092,449,1.233,450,0.714,451,1.159,452,0.877,453,1.233,454,1.233,455,1.233,456,1.233,457,1.233,458,1.233,459,1.233,460,1.233,461,1.233,462,1.233,463,1.233,464,1.233,465,1.233,466,1.233,467,1.233,468,1.233,469,1.233,470,1.233,471,1.233,472,1.233,473,1.233,474,1.233,475,1.233,476,1.233,477,1.233,478,1.233,479,1.233,480,1.233,604,2.39,605,2.39,606,2.39,607,2.39]],["title/interfaces/TokenResponse.html",[73,1.327,441,2.047]],["body/interfaces/TokenResponse.html",[0,0.092,3,0.608,4,0.44,5,0.394,9,0.857,10,1.556,11,0.857,12,0.773,15,0.773,18,0.97,21,0.489,28,1.949,33,1.723,38,0.02,40,0.938,41,0.795,44,0.857,46,1.519,51,1.597,54,1.471,62,1.406,63,1.636,64,0.813,72,0.618,73,1.68,74,1.471,75,1.008,76,1.008,77,1.008,82,0.953,83,1.455,93,1.021,115,0.006,116,0.009,117,0.006,132,0.813,133,1.555,162,0.57,163,0.773,174,1.471,180,0.542,193,1.406,194,0.903,212,0.734,216,1.067,217,1.075,219,0.698,220,0.631,222,1.394,240,2.26,306,1.532,308,0.734,335,1.132,336,1.205,340,1.067,341,1.132,342,1.205,343,1.205,344,1.067,345,1.205,347,0.773,348,2.398,349,1.383,350,2.019,351,1.205,352,0.953,353,1.205,354,1.067,355,1.205,357,1.132,358,0.631,359,2.54,360,1.747,361,1.067,362,1.132,363,1.132,364,1.067,365,1.205,366,0.926,367,2.27,368,1.132,369,1.205,370,1.205,373,1.555,374,1.205,375,0.813,376,1.132,377,1.205,378,2.27,379,1.471,381,1.067,382,1.747,384,1.205,385,1.008,386,1.205,387,1.067,388,1.132,389,1.008,390,1.205,391,1.205,393,1.008,394,1.205,395,2.591,396,3.218,397,1.067,398,0.813,399,1.205,400,1.859,401,1.067,402,0.857,403,0.953,404,1.067,405,1.067,406,1.132,407,1.067,408,1.205,409,2.757,410,1.205,411,1.205,412,1.205,413,1.205,414,1.205,415,1.008,416,1.205,417,0.773,418,0.953,419,0.953,420,0.953,421,1.205,422,1.132,423,1.205,424,0.813,425,1.205,426,1.205,427,1.067,428,2.914,429,1.067,430,1.205,431,1.132,432,1.205,433,1.205,434,1.205,435,2.27,436,1.899,437,2.27,438,2.019,439,2.133,440,1.859,441,1.747,442,2.552,443,2.552,444,2.398,445,1.636,446,0.734,447,1.205,448,1.067,449,1.205,450,0.698,451,1.132,452,0.857,453,1.205,454,1.205,455,1.205,456,1.205,457,1.205,458,1.205,459,1.205,460,1.205,461,1.205,462,1.205,463,1.205,464,1.205,465,1.205,466,1.205,467,1.205,468,1.205,469,1.205,470,1.205,471,1.205,472,1.205,473,1.205,474,1.205,475,1.205,476,1.205,477,1.205,478,1.205,479,1.205,480,1.205,603,1.38]],["title/injectables/UrlHelperService.html",[147,2.927,553,3.223]],["body/injectables/UrlHelperService.html",[0,0.078,3,0.708,4,0.79,5,0.708,21,0.878,22,2.009,28,1.767,30,0.924,33,2.251,35,1.917,37,1.48,38,0.02,39,1.338,40,0.873,41,1.208,43,1.907,46,1.837,68,1.134,72,0.427,84,3.548,104,2.124,115,0.011,116,0.014,117,0.011,147,3.798,148,2.479,169,3.017,216,1.917,275,4.182,296,3.798,341,2.656,424,1.461,427,2.503,531,3.597,553,4.182,608,3.597,609,6.097,610,4.195,611,5.476,612,5.476,613,5.476,614,4.195,615,5.476,616,4.195,617,5.476,618,4.195,619,4.195,620,5.476,621,5.476,622,4.195,623,4.195,624,4.195,625,5.476,626,4.195,627,4.195,628,4.195,629,4.195,630,4.195]],["title/interfaces/UserInfo.html",[73,1.327,448,1.929]],["body/interfaces/UserInfo.html",[0,0.095,3,0.765,4,0.462,5,0.414,9,0.9,10,1.577,11,0.9,12,0.812,15,0.812,18,1.001,21,0.514,28,1.942,30,0.414,33,1.768,38,0.02,40,0.391,44,0.9,46,1.553,51,1.119,54,1.528,62,1.443,63,0.812,64,0.855,72,0.628,73,1.718,74,1.528,75,1.059,76,1.059,77,1.059,82,1.002,83,1.501,93,1.053,115,0.006,116,0.01,117,0.006,132,0.855,133,1.596,162,0.599,163,0.812,174,1.528,180,0.57,193,1.289,194,0.949,212,0.771,216,1.71,217,1.108,219,0.733,220,0.663,222,1.448,240,1.71,306,1.58,308,0.771,335,1.19,336,1.266,340,1.121,341,1.19,342,1.266,343,1.266,344,1.121,345,1.266,347,0.812,348,2.461,349,1.426,350,2.072,351,1.266,352,1.002,353,1.266,354,1.121,355,1.266,357,1.19,358,0.663,359,2.191,360,1.815,361,1.121,362,1.19,363,1.19,364,1.121,365,1.266,366,0.962,367,2.341,368,1.19,369,1.266,370,1.266,373,1.615,374,1.266,375,0.855,376,1.19,377,1.266,378,2.341,379,1.528,381,1.121,382,1.815,384,1.266,385,1.059,386,1.266,387,1.121,388,1.19,389,1.059,390,1.266,391,1.266,393,1.059,394,1.266,395,2.65,396,3.265,397,1.121,398,0.855,399,1.266,400,1.931,401,1.121,402,0.9,403,1.002,404,1.121,405,1.121,406,1.19,407,1.121,408,1.266,409,2.82,410,1.266,411,1.266,412,1.266,413,1.266,414,1.266,415,1.059,416,1.266,417,0.812,418,1.002,419,1.002,420,1.002,421,1.266,422,1.19,423,1.266,424,0.855,425,1.266,426,1.266,427,1.121,428,2.971,429,1.121,430,1.266,431,1.19,432,1.266,433,1.266,434,1.266,435,2.341,436,1.958,437,2.341,438,2.072,439,2.2,440,1.266,441,1.19,442,1.266,443,1.266,444,1.19,445,0.812,446,1.177,447,1.931,448,1.71,449,2.619,450,0.733,451,1.19,452,0.9,453,1.266,454,1.266,455,1.266,456,1.266,457,1.266,458,1.266,459,1.266,460,1.266,461,1.266,462,1.266,463,1.266,464,1.266,465,1.266,466,1.266,467,1.266,468,1.266,469,1.266,470,1.266,471,1.266,472,1.266,473,1.266,474,1.266,475,1.266,476,1.266,477,1.266,478,1.266,479,1.266,480,1.266,603,1.45,631,2.453,632,2.453]],["title/classes/ValidationHandler.html",[0,0.079,12,1.396]],["body/classes/ValidationHandler.html",[0,0.081,1,1.911,2,0.852,3,0.506,4,0.564,5,0.506,6,3.018,7,3.542,8,1.547,9,1.1,10,1.677,11,1.1,12,1.853,13,2.079,14,2.106,15,1.437,16,3.256,17,1.651,18,0.958,19,2.079,20,1.911,21,0.628,22,1.594,23,3.012,25,2.079,26,3.256,27,1.911,28,1.593,29,3.57,30,0.733,32,2.079,33,1.779,34,3.012,35,1.37,36,0.992,37,1.174,38,0.02,39,1.248,40,0.692,41,0.958,42,1.911,43,1.513,44,2.403,45,2.079,46,1.592,48,2.079,49,3.542,50,2.079,51,1.912,52,2.079,53,2.079,54,1.224,55,1.771,56,2.079,57,4.101,59,3.952,60,3.79,61,3.256,62,1.452,63,1.69,65,2.769,67,2.814,68,0.81,69,2.079,70,2.079,71,2.289,72,0.52,73,1.606,74,1.224,75,1.294,76,1.294,77,1.294,78,1.771,79,2.079,80,3.317,81,3.317,82,1.774,83,1.437,84,3.199,85,3.012,86,3.012,87,2.289,88,2.289,89,2.289,90,2.289,91,2.289,92,2.289,93,0.696,94,2.289,95,2.289,96,2.289,97,1.771,98,4.277,99,2.289,100,4.277,101,2.289,102,2.289,103,2.289,104,1.513,105,3.901,106,2.289,107,2.289,108,2.289,109,2.079,110,1.16,111,2.289,112,1.911,113,2.289,114,2.289,115,0.008,116,0.011,117,0.008,633,2.998,634,2.998]],["title/interfaces/ValidationParams.html",[57,2.494,73,1.327]],["body/interfaces/ValidationParams.html",[0,0.083,1,1.965,3,0.52,4,0.581,5,0.52,6,1.822,7,2.138,8,1.591,10,1.576,11,1.131,12,1.717,13,2.138,14,2.15,15,1.467,16,1.965,17,1.698,18,0.978,19,2.138,20,1.965,21,0.646,23,3.074,25,2.138,26,1.965,27,1.965,28,1.753,29,3.617,32,2.138,33,1.808,34,3.074,35,1.409,36,1.02,38,0.02,39,0.753,40,0.998,42,1.965,44,2.297,45,2.138,46,1.939,48,2.138,49,3.599,50,2.138,51,1.797,52,2.138,53,2.138,54,1.259,55,1.822,56,2.138,57,3.81,59,3.617,60,3.617,61,2.826,62,1.26,63,1.467,65,1.965,67,2.442,68,0.833,69,2.138,70,2.138,71,2.354,72,0.528,73,1.394,74,2.317,75,2.449,76,2.449,77,2.449,78,3.353,79,3.935,80,2.354,81,2.354,82,1.259,83,1.02,84,2.287,85,2.138,86,3.074,87,2.354,88,2.354,89,2.354,90,2.354,91,2.354,92,2.354,93,0.716,94,2.354,95,2.354,96,2.354,97,1.822,98,4.333,99,2.354,100,4.333,101,2.354,102,2.354,103,2.354,104,1.544,105,3.963,106,2.354,107,2.354,108,2.354,109,2.138,110,1.193,111,2.354,112,1.965,113,2.354,114,2.354,115,0.008,116,0.012,117,0.008,222,1.715,371,2.826,603,1.822]],["title/classes/WebHttpUrlEncodingCodec.html",[0,0.079,635,3.619]],["body/classes/WebHttpUrlEncodingCodec.html",[0,0.077,2,1.176,3,0.698,4,0.779,5,0.698,9,1.519,14,2.632,21,0.867,22,1.992,28,1.929,30,1.085,37,1.738,38,0.02,39,1.571,40,1.025,41,1.418,43,2.239,68,1.119,72,0.421,104,2.239,115,0.011,116,0.014,117,0.011,151,2.135,290,4.654,347,1.796,349,1.707,635,4.654,636,4.139,637,4.654,638,4.654,639,5.428,640,5.428,641,6.057,642,5.428,643,5.428,644,5.428,645,5.428,646,5.428,647,4.139,648,5.428,649,4.139,650,5.428,651,5.428,652,4.139,653,5.428,654,4.139,655,4.139,656,4.139,657,4.139,658,4.139]],["title/changelog.html",[659,2.165,660,2.335,661,3.664]],["body/changelog.html",[12,1.333,15,1.333,18,0.889,22,1.479,36,2.19,38,0.014,51,1.205,62,1.145,67,2.22,93,0.936,97,3.151,110,2.461,112,2.569,115,0.01,116,0.014,117,0.01,132,1.404,133,1.267,146,2.381,180,1.238,193,1.516,194,1.559,211,1.954,212,1.267,217,0.984,218,2.794,219,1.205,220,1.089,226,2.302,306,2.216,326,3.077,349,1.677,352,2.178,358,1.442,366,1.536,379,2.178,403,1.645,404,1.842,419,1.645,420,1.645,438,1.645,446,1.677,450,1.205,484,3.077,515,2.381,528,3.077,546,2.752,662,5.333,663,4.03,664,5.126,665,3.151,666,3.455,667,4.03,668,3.532,669,3.077,670,2.22,671,2.381,672,2.794,673,3.077,674,4.03,675,3.455,676,4.03,677,4.03,678,3.077,679,2.794,680,3.151,681,3.698,682,3.455,683,3.455,684,4.03,685,3.455,686,3.455,687,2.794,688,3.455,689,3.455,690,1.739,691,1.842,692,4.03,693,3.455,694,3.4,695,4.03,696,3.455,697,4.03,698,2.794,699,3.759,700,1.954,701,1.739,702,3.455,703,3.455,704,2.569,705,3.455,706,2.794,707,2.381,708,3.077,709,3.455,710,4.03,711,4.03,712,4.03,713,3.077,714,1.954,715,3.455,716,3.077,717,3.077,718,4.072,719,4.03,720,4.03,721,4.03,722,5.333,723,4.03,724,3.077,725,3.455,726,3.455,727,3.455,728,4.03,729,3.455]],["title/dependencies.html",[730,3.664,731,3.82]],["body/dependencies.html",[38,0.02,70,3.425,115,0.013,116,0.016,117,0.013,148,2.918,153,4.212,265,3.772,550,4.236,637,4.236,731,3.772,732,4.94,733,7.394,734,4.94,735,4.94,736,4.94,737,6.074,738,4.638,739,4.94,740,4.94,741,4.94,742,4.94,743,4.94,744,4.236,745,4.94,746,3.425,747,4.94,748,4.94,749,6.074,750,4.94,751,4.94,752,4.94,753,4.94,754,4.94,755,4.94,756,4.94,757,4.94]],["title/miscellaneous/functions.html",[758,2.165,759,4.29]],["body/miscellaneous/functions.html",[21,1.112,28,1.365,37,1.715,38,0.018,39,1.55,41,1.4,43,1.85,69,4.401,115,0.014,116,0.016,117,0.014,559,5.82,560,5.82,758,3.138,759,4.554,760,6.346,761,6.346,762,6.788,763,6.346,764,5.311,765,5.311,766,6.346,767,5.311,768,5.311]],["title/index.html",[21,0.767,659,2.165,660,2.335]],["body/index.html",[0,0.072,4,0.356,5,0.319,17,1.041,18,1.064,30,0.319,36,1.009,38,0.019,39,0.745,46,0.537,51,0.565,67,1.041,68,1.576,72,0.448,83,1.009,84,1.978,93,0.439,97,1.117,104,1.062,110,1.483,112,1.944,115,0.005,116,0.008,117,0.005,124,1.621,133,1.706,148,1.802,151,0.975,161,2.115,162,1.326,165,1.205,169,1.041,172,1.311,180,0.708,186,1.944,193,1.25,209,1.802,212,0.959,215,2.115,217,0.462,219,0.565,220,0.511,226,0.816,242,1.311,297,2.443,308,0.959,319,1.621,323,1.041,347,1.009,349,0.959,350,0.772,358,1.618,361,0.864,366,1.603,371,1.205,375,1.335,381,0.864,385,1.316,393,0.816,397,2.01,398,0.658,403,1.565,417,1.009,418,0.772,424,0.658,429,1.752,436,1.316,438,1.245,439,1.479,445,1.009,446,1.706,448,0.864,450,1.146,452,0.694,484,2.329,519,1.574,537,1.205,546,0.975,548,2.329,552,2.329,562,1.444,563,1.311,572,1.311,575,1.311,579,1.444,581,2.115,582,1.311,638,1.621,664,2.615,665,1.802,666,2.615,668,3.206,669,1.444,670,2.112,671,1.117,672,1.311,673,1.444,678,3.358,679,2.658,680,1.117,686,1.621,690,2.584,691,1.394,694,2.804,698,3.346,699,1.117,700,2.133,701,2.437,702,1.621,706,1.311,707,1.117,708,1.444,713,1.444,714,0.917,716,1.444,724,1.444,726,3.287,727,1.621,738,1.444,746,1.311,769,3.037,770,3.05,771,1.891,772,1.891,773,1.891,774,2.072,775,1.891,776,1.891,777,1.891,778,1.621,779,1.891,780,1.621,781,3.833,782,1.891,783,1.891,784,3.05,785,3.05,786,2.8,787,1.891,788,1.891,789,3.05,790,1.891,791,3.05,792,1.891,793,1.891,794,2.804,795,1.891,796,2.115,797,1.891,798,1.891,799,3.833,800,1.891,801,1.891,802,1.621,803,3.05,804,1.891,805,1.891,806,1.891,807,1.891,808,1.891,809,1.891,810,3.05,811,1.891,812,3.05,813,1.311,814,1.891,815,3.05,816,1.891,817,1.891,818,1.891,819,2.615,820,1.891,821,1.891,822,1.891,823,1.891,824,3.833,825,1.891,826,1.891,827,3.05,828,1.891,829,1.891,830,1.621,831,1.891,832,1.621,833,1.444,834,1.891,835,1.891,836,1.891,837,1.891,838,1.891,839,1.891,840,1.891,841,1.891,842,4.398,843,1.891,844,1.891,845,1.621,846,1.891,847,1.891,848,1.891,849,1.978,850,1.891,851,3.833,852,1.891,853,1.891,854,1.891,855,3.05,856,1.621,857,2.927,858,1.891,859,1.444,860,1.311,861,1.891,862,3.05,863,1.621,864,1.802,865,1.621,866,1.621,867,1.891,868,1.891,869,1.621,870,1.311,871,1.891,872,1.891,873,2.927,874,1.621,875,1.891,876,1.891,877,3.05,878,1.891,879,2.489,880,2.423,881,2.615,882,1.891,883,3.833,884,3.833,885,1.891,886,1.891,887,1.891,888,1.444,889,1.891,890,1.891,891,3.287,892,2.329,893,2.443,894,2.615,895,1.621,896,1.621,897,2.115,898,1.205,899,1.621,900,1.444,901,1.621,902,1.891,903,0.985,904,2.615,905,1.621,906,1.891,907,1.891,908,1.752,909,1.891,910,1.621,911,2.804,912,1.041,913,1.205,914,1.041,915,1.205,916,1.041,917,1.041,918,1.041,919,1.205,920,1.041,921,1.041,922,1.205,923,1.311,924,1.311,925,1.205,926,1.205,927,0.975,928,1.041,929,2.927,930,1.891,931,3.05,932,1.891,933,1.891,934,3.05,935,1.891,936,2.115,937,1.891,938,1.891,939,1.444,940,2.615,941,3.287,942,1.891,943,1.444,944,1.621,945,1.891,946,1.891,947,1.891,948,1.891,949,1.621,950,1.621,951,1.621,952,1.621,953,1.891,954,3.05,955,1.891,956,1.891,957,1.891,958,1.891,959,1.311,960,1.891,961,1.891,962,1.891,963,2.329,964,1.311,965,1.444,966,1.444,967,1.444,968,1.621,969,1.621,970,1.891,971,2.615,972,1.621,973,1.621,974,1.621,975,1.891,976,2.329,977,1.444,978,1.944,979,1.621,980,1.891,981,1.621,982,1.621,983,1.891,984,1.444,985,1.205,986,1.891,987,1.891,988,1.891,989,1.311,990,1.891,991,3.833,992,1.891,993,1.621,994,1.891,995,1.444,996,1.891,997,1.444,998,1.891,999,1.891,1000,1.891]],["title/license.html",[659,2.165,660,2.335,1001,3.664]],["body/license.html",[18,1.28,38,0.015,115,0.012,116,0.015,117,0.012,152,3.939,218,3.186,376,2.228,680,2.714,698,3.186,704,2.928,713,3.508,833,3.508,849,2.37,1002,6.364,1003,4.594,1004,4.594,1005,4.594,1006,4.594,1007,5.805,1008,4.594,1009,4.594,1010,4.594,1011,4.594,1012,4.594,1013,5.805,1014,7.303,1015,4.594,1016,4.594,1017,4.594,1018,4.057,1019,4.594,1020,5.805,1021,3.939,1022,4.594,1023,4.594,1024,4.594,1025,4.594,1026,4.594,1027,4.594,1028,4.594,1029,5.805,1030,4.594,1031,4.594,1032,4.594,1033,4.594,1034,4.594,1035,2.714,1036,5.805,1037,5.805,1038,4.594,1039,4.594,1040,4.594,1041,4.594,1042,4.594,1043,4.594,1044,4.594,1045,4.594,1046,4.594,1047,4.594,1048,4.594,1049,3.939,1050,4.594,1051,4.594,1052,4.594,1053,4.594,1054,4.594,1055,4.594,1056,4.594,1057,4.594,1058,3.939,1059,4.594,1060,4.594,1061,4.594,1062,4.594,1063,4.594]],["title/modules.html",[538,4.198]],["body/modules.html",[38,0.017,115,0.015,116,0.017,117,0.015,537,3.73,538,4.468,989,4.058,1064,5.852,1065,5.852]],["title/overview.html",[1066,4.714]],["body/overview.html",[2,1.588,38,0.017,97,3.3,115,0.014,116,0.017,117,0.014,296,3.873,536,4.992,563,3.873,564,4.789,565,3.56,603,3.3,608,4.789,680,3.3,731,4.265,746,3.873,778,4.789,1066,4.789,1067,5.585,1068,6.538,1069,5.585,1070,5.585]],["title/miscellaneous/typealiases.html",[758,2.165,1071,5.003]],["body/miscellaneous/typealiases.html",[21,1.069,38,0.02,40,0.814,115,0.013,116,0.016,117,0.013,198,2.812,493,3.254,496,3.95,499,3.016,500,3.254,501,3.254,502,3.016,503,3.254,504,3.254,505,3.016,506,3.254,507,3.254,508,3.254,509,3.254,510,3.254,511,3.254,512,3.016,513,3.016,514,3.254,515,3.016,516,3.254,517,3.016,518,3.016,519,2.634,758,3.016,1072,5.104,1073,5.104]],["title/miscellaneous/variables.html",[758,2.165,1074,4.29]],["body/miscellaneous/variables.html",[21,1.152,35,2.962,38,0.018,40,0.877,110,2.128,115,0.014,116,0.017,117,0.014,127,4.717,128,5.557,170,5.557,171,4.717,226,2.797,240,2.514,758,3.25,1074,4.717,1075,6.481,1076,5.502,1077,5.502,1078,5.502,1079,5.502]],["title/additional-documentation/getting-started.html",[337,0.92,659,1.912,660,2.063,903,0.832]],["body/additional-documentation/getting-started.html",[38,0.017,115,0.015,116,0.017,117,0.015,298,3.183,659,3.94,660,4.251,1035,3.414,1080,4.412,1081,5.778,1082,4.007]],["title/additional-documentation/preserving-state-(like-the-requested-url).html",[180,0.609,337,0.746,359,1.133,903,0.675,1083,2.251,1084,1.673]],["body/additional-documentation/preserving-state-(like-the-requested-url).html",[3,0.928,38,0.019,41,1.213,115,0.014,116,0.017,117,0.014,180,1.505,344,2.514,354,2.514,359,2.973,388,2.668,690,2.374,944,4.717,966,4.201,1083,4.717,1084,4.131,1085,5.502,1086,5.502,1087,3.815,1088,5.502,1089,5.502]],["title/additional-documentation/code-flow-+-pcke.html",[38,0.007,337,0.746,701,1.133,796,1.82,903,0.675,1090,2.625]],["body/additional-documentation/code-flow-+-pcke.html",[15,1.277,17,2.127,30,0.651,36,1.277,38,0.019,68,1.043,72,0.393,93,1.203,110,1.493,115,0.01,116,0.013,117,0.01,162,1.429,165,2.461,169,2.127,180,1.203,193,1.473,209,2.281,212,1.214,217,1.266,220,1.043,247,3.594,308,1.63,358,1.043,361,2.369,362,1.872,364,2.369,366,1.332,375,2.038,417,1.277,445,1.936,446,1.214,450,1.154,452,1.416,668,2.281,670,2.855,673,2.948,679,2.677,690,1.666,691,1.764,699,2.281,700,1.872,701,2.899,714,1.872,718,2.948,769,1.764,774,1.902,786,1.992,796,4.837,849,1.992,856,4.444,864,2.281,866,3.31,879,3.019,908,1.764,911,3.304,914,2.127,915,2.461,916,2.127,917,2.127,918,2.127,919,3.304,920,2.127,921,2.855,922,2.461,925,2.461,926,2.461,927,1.992,939,2.948,940,3.31,943,2.948,979,3.31,1082,2.677,1091,3.86,1092,3.31,1093,3.86,1094,3.86,1095,3.86,1096,2.677,1097,5.183,1098,3.86,1099,3.86,1100,2.677,1101,3.86,1102,3.86,1103,4.444,1104,3.31,1105,2.948,1106,3.86,1107,3.86,1108,3.86,1109,2.677,1110,3.86,1111,3.31,1112,3.86,1113,3.86,1114,3.958,1115,3.86,1116,3.86,1117,3.86,1118,3.86,1119,3.86,1120,3.86,1121,3.86,1122,3.86,1123,3.86,1124,3.86,1125,3.86,1126,3.86,1127,3.31,1128,3.86]],["title/additional-documentation/refreshing-a-token.html",[193,0.92,337,0.92,860,2.244,903,0.832]],["body/additional-documentation/refreshing-a-token.html",[3,0.463,5,0.819,15,1.605,17,2.242,18,1.07,30,0.463,35,1.86,36,2.057,38,0.018,46,0.78,62,0.78,68,0.741,72,0.279,83,1.776,110,1.574,115,0.007,116,0.011,117,0.007,133,1.526,142,2.094,157,2.352,159,2.352,162,1.185,163,1.346,169,1.511,180,1.127,193,1.855,212,1.526,217,1.311,220,0.741,226,1.756,242,3.365,244,2.352,275,2.094,296,1.902,298,2.957,306,1.87,307,2.094,308,1.28,352,2.539,358,0.741,366,1.046,375,1.69,398,0.955,402,1.006,403,1.12,417,0.907,444,1.33,445,1.605,446,1.688,450,0.82,452,1.006,546,1.415,580,1.748,659,1.62,665,1.62,668,1.62,670,1.511,671,1.62,672,1.902,687,1.902,690,1.184,691,1.253,693,2.352,699,3.923,700,3.015,701,2.943,704,3.093,706,2.822,707,2.867,708,3.107,709,2.352,714,1.33,716,3.705,769,1.86,786,2.1,796,3.976,845,3.49,849,2.503,859,2.094,860,4.165,863,2.352,870,1.902,879,2.77,880,1.511,888,3.107,896,2.352,897,3.365,898,1.748,904,3.49,908,1.253,910,2.352,911,3.093,912,1.511,913,1.748,914,2.673,915,1.748,916,2.673,917,1.511,918,1.511,919,1.748,920,1.511,921,2.242,922,1.748,923,1.902,924,1.902,925,1.748,926,1.748,927,1.415,928,1.511,943,2.094,963,2.094,964,1.902,968,2.352,969,3.49,977,2.094,993,2.352,995,2.094,997,2.094,1018,1.748,1021,2.352,1080,2.094,1096,1.902,1100,1.902,1104,2.352,1105,2.094,1114,2.094,1129,2.743,1130,2.743,1131,3.49,1132,1.62,1133,2.743,1134,4.07,1135,2.743,1136,2.352,1137,2.352,1138,4.07,1139,2.743,1140,2.743,1141,2.352,1142,4.07,1143,2.352,1144,2.743,1145,2.743,1146,2.743,1147,1.748,1148,2.743,1149,2.743,1150,2.743,1151,2.743,1152,2.743,1153,4.07,1154,4.852,1155,1.902,1156,2.743,1157,2.743,1158,2.743,1159,2.743,1160,2.743,1161,3.49,1162,3.49,1163,2.743,1164,2.743,1165,2.352,1166,2.743,1167,2.743,1168,2.352,1169,3.107,1170,2.743,1171,2.743,1172,2.743,1173,2.352,1174,2.743,1175,2.743,1176,2.743,1177,2.352,1178,2.743,1179,2.743,1180,2.094,1181,4.07,1182,2.743,1183,2.743,1184,2.743,1185,2.743,1186,2.743,1187,2.743,1188,2.352,1189,2.743,1190,2.743,1191,2.743,1192,2.743,1193,2.743,1194,2.743,1195,2.743,1196,4.07,1197,2.743,1198,2.743,1199,4.07,1200,4.07,1201,2.743,1202,2.743,1203,2.743,1204,2.743,1205,2.743,1206,2.743,1207,2.743,1208,2.743]],["title/additional-documentation/working-with-httpinterceptors.html",[337,0.92,903,0.832,1209,3.237,1210,3.237]],["body/additional-documentation/working-with-httpinterceptors.html",[0,0.101,10,0.815,14,2.273,18,1.034,28,0.857,38,0.019,41,1.034,55,2.769,62,0.948,63,1.551,68,1.783,72,0.477,84,1.721,93,1.088,104,2.298,115,0.009,116,0.012,117,0.009,125,2.313,126,4.647,130,1.721,132,1.888,133,1.474,134,2.86,135,3.66,136,2.86,137,2.769,139,2.86,140,2.86,141,4.019,142,2.546,143,4.019,145,2.86,146,3.202,147,3.25,148,1.97,149,2.86,150,4.647,151,1.721,161,3.758,162,1.324,163,2.049,164,2.988,165,2.126,166,2.546,168,3.25,172,4.077,173,2.86,174,1.362,177,2.86,178,2.86,179,2.86,180,0.774,181,2.86,182,2.86,183,5.041,184,2.86,185,2.86,186,3.748,187,2.86,190,2.86,193,1.54,205,2.86,206,4.019,208,2.86,217,1.145,226,2.023,293,3.25,323,1.837,347,1.551,358,0.901,364,1.524,366,0.857,398,1.162,402,1.224,404,1.524,405,1.524,555,2.126,572,2.313,575,3.25,581,3.25,582,2.313,586,2.546,587,3.579,682,2.86,769,1.524,774,1.224,832,2.86,833,2.546,849,1.721,892,2.546,898,2.126,899,4.019,964,2.313,971,4.019,972,2.86,973,2.86,974,2.86,1105,2.546,1109,2.313,1132,1.97,1143,2.86,1168,2.86,1211,3.335,1212,2.86,1213,3.335,1214,3.335,1215,2.86,1216,2.86,1217,3.335,1218,3.335,1219,3.335,1220,3.335,1221,3.335,1222,3.335,1223,3.335,1224,3.335,1225,2.546,1226,3.335,1227,3.335,1228,3.335,1229,3.335,1230,3.335,1231,3.335,1232,3.335,1233,3.335,1234,2.86,1235,3.335,1236,3.335,1237,3.335,1238,2.546,1239,3.335,1240,3.335,1241,3.335,1242,3.335,1243,3.335,1244,3.335,1245,3.335,1246,3.335]],["title/additional-documentation/callback-after-login.html",[337,0.92,690,1.397,903,0.832,1247,2.775]],["body/additional-documentation/callback-after-login.html",[38,0.019,51,1.891,62,1.501,63,1.747,115,0.014,116,0.016,117,0.014,323,2.909,344,2.89,373,2.279,382,2.56,387,2.89,403,2.156,690,2.73,813,3.661,959,3.661,1049,4.528,1084,3.366,1087,3.661,1173,4.528,1247,5.423,1248,5.28,1249,5.28,1250,5.28,1251,5.28,1252,5.28,1253,5.28]],["title/additional-documentation/custom-query-parameters.html",[37,0.783,337,0.824,347,0.959,903,0.745,1254,2.486]],["body/additional-documentation/custom-query-parameters.html",[33,1.939,37,1.505,38,0.019,115,0.014,116,0.017,117,0.014,217,1.36,306,1.939,347,2.159,700,2.7,701,2.403,1254,4.775,1255,5.568,1256,4.775,1257,5.568,1258,5.568,1259,5.568,1260,5.568,1261,5.568,1262,5.568,1263,5.568]],["title/additional-documentation/events.html",[337,1.041,379,1.496,903,0.942]],["body/additional-documentation/events.html",[5,0.687,18,0.899,28,1.047,36,1.348,38,0.019,62,1.158,68,1.101,78,2.407,83,1.348,115,0.011,116,0.014,117,0.011,146,2.407,163,1.348,168,3.725,193,1.158,198,2.245,268,3.494,297,3.425,323,2.245,338,3.494,340,1.862,352,2.194,358,1.452,359,2.319,360,1.976,366,1.047,368,2.605,379,2.785,381,3.035,389,1.759,401,1.862,450,1.218,492,3.174,499,2.407,502,2.407,505,2.407,512,2.407,513,2.407,517,2.407,528,3.111,665,3.174,668,2.407,675,3.494,681,2.825,689,3.494,694,2.597,699,3.551,700,1.976,701,1.759,704,2.597,707,2.407,769,1.862,774,1.971,864,2.407,951,3.494,967,3.111,985,3.425,989,2.825,1084,3.425,1141,4.607,1169,3.111,1212,3.494,1264,4.074,1265,4.074,1266,4.074,1267,4.074,1268,4.074,1269,3.494,1270,4.074,1271,4.074,1272,4.074,1273,4.074,1274,3.494,1275,4.074,1276,4.074,1277,4.074,1278,4.074,1279,4.074,1280,4.074,1281,5.372,1282,6.955,1283,5.372,1284,4.074,1285,4.074,1286,3.494,1287,4.074,1288,3.494,1289,3.494,1290,4.074,1291,4.074,1292,4.074,1293,5.372,1294,5.372,1295,4.074,1296,4.074,1297,4.074,1298,3.111,1299,4.074,1300,3.494,1301,4.074,1302,4.074]],["title/additional-documentation/routing-with-the-hashstrategy.html",[337,0.92,903,0.832,978,2.063,984,2.471]],["body/additional-documentation/routing-with-the-hashstrategy.html",[13,3.371,18,1.072,19,4.17,33,1.693,36,1.99,38,0.018,62,1.382,72,0.495,83,1.608,93,1.129,115,0.013,116,0.016,117,0.013,194,1.881,226,2.098,323,2.678,340,2.222,348,2.357,357,2.357,363,2.357,486,3.712,536,3.712,774,1.784,802,5.599,897,3.371,900,3.712,914,3.313,929,3.712,952,4.168,963,3.712,978,3.834,981,4.168,984,4.592,1096,3.371,1109,3.371,1155,3.371,1161,5.157,1180,3.712,1188,4.168,1225,3.712,1303,4.861,1304,4.861,1305,6.823,1306,6.53,1307,4.861,1308,4.861,1309,4.861,1310,4.861,1311,4.861,1312,4.861,1313,4.861,1314,4.861,1315,3.712,1316,4.861,1317,4.861,1318,4.861]],["title/additional-documentation/adapt-id_token-validation.html",[51,0.867,211,1.406,337,0.824,903,0.745,1319,2.486]],["body/additional-documentation/adapt-id_token-validation.html",[11,1.738,12,2.135,30,0.799,38,0.019,51,1.769,59,3.019,60,3.019,61,3.019,62,1.682,67,3.26,68,1.28,73,1.489,78,2.798,82,1.934,84,2.444,110,1.832,115,0.012,116,0.015,117,0.012,209,3.813,211,2.869,212,1.861,213,4.061,219,1.416,220,1.28,306,2.061,358,1.28,366,1.217,393,2.044,401,2.164,402,1.738,405,2.704,406,2.869,417,1.567,418,1.934,422,2.297,481,3.284,565,3.019,567,4.061,687,3.284,694,3.019,769,2.164,774,1.738,900,3.616,908,2.164,939,3.616,977,3.616,1238,3.616,1319,4.061,1320,4.736,1321,4.736,1322,4.736,1323,4.736,1324,4.061,1325,4.736,1326,4.736,1327,4.061,1328,4.061,1329,4.736,1330,4.061,1331,4.736]],["title/additional-documentation/session-checks.html",[337,0.92,681,2.244,903,0.832,1298,2.471]],["body/additional-documentation/session-checks.html",[30,0.726,38,0.019,68,1.163,72,0.438,83,1.424,93,0.999,115,0.011,116,0.014,117,0.011,169,2.371,197,3.69,217,1.051,247,2.984,298,2.371,306,1.499,347,1.424,349,1.353,352,1.757,358,1.163,366,1.106,379,1.757,393,1.857,438,1.757,445,1.424,446,1.353,450,1.664,452,1.579,518,3.289,519,2.22,668,2.543,669,3.286,680,2.543,681,4.801,683,3.69,685,3.69,687,2.984,688,3.69,691,2.544,704,3.549,706,2.984,714,2.087,725,3.69,769,1.967,774,2.043,780,3.69,786,3.184,864,3.289,870,2.984,879,2.22,880,2.371,888,3.286,905,3.69,911,3.934,912,2.371,913,2.743,915,2.743,916,3.067,917,2.371,919,2.743,927,2.22,928,2.371,929,3.286,966,3.286,1058,3.69,1092,3.69,1147,2.743,1162,3.69,1180,3.286,1234,3.69,1288,3.69,1298,4.713,1328,3.69,1332,4.303,1333,4.303,1334,4.303,1335,5.568,1336,4.303,1337,4.303,1338,4.303,1339,4.303,1340,3.286,1341,4.303,1342,5.568,1343,4.303,1344,5.568,1345,4.303,1346,4.303,1347,4.303,1348,4.303]],["title/additional-documentation/server-side-rendering.html",[162,0.708,337,0.824,418,1.184,903,0.745,1349,2.486]],["body/additional-documentation/server-side-rendering.html",[38,0.016,115,0.014,116,0.017,117,0.014,162,1.681,293,3.804,349,1.725,418,2.81,705,4.703,774,2.013,794,3.496,898,3.496,1132,3.241,1349,5.9,1350,5.485,1351,5.485,1352,5.485,1353,5.485,1354,5.485,1355,5.485,1356,5.485,1357,5.485,1358,5.485,1359,5.485]],["title/additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html",[219,0.611,220,0.553,337,0.581,700,0.992,701,0.883,774,0.75,903,0.526,908,0.934,1018,1.303]],["body/additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html",[0,0.076,11,1.498,15,1.351,18,1.187,38,0.019,40,0.651,72,0.416,110,1.58,115,0.011,116,0.014,117,0.011,133,1.692,162,1.314,180,1.485,215,2.832,217,1.314,219,1.608,220,1.454,222,1.58,297,2.603,298,2.25,308,1.892,350,1.667,375,2.096,389,1.762,398,1.422,415,1.762,417,1.351,419,1.667,420,1.667,436,1.762,445,1.351,446,1.892,450,1.221,519,2.107,546,2.776,580,2.603,670,2.964,671,2.413,678,3.118,679,2.832,680,2.413,690,2.597,691,1.866,700,1.98,701,1.762,714,1.98,717,3.118,774,1.498,786,2.776,794,2.603,849,2.107,869,3.501,873,3.118,879,3.105,880,2.25,893,2.603,903,1.049,908,2.459,912,2.964,914,2.25,916,2.25,917,2.25,918,2.25,920,2.25,921,2.25,927,2.107,928,2.25,931,2.832,936,2.832,959,2.832,965,3.118,976,3.118,985,2.603,1018,2.603,1035,2.413,1082,2.832,1087,2.832,1132,2.413,1147,2.603,1155,2.832,1315,3.118,1340,3.118,1360,3.501,1361,4.084,1362,4.084,1363,3.501,1364,3.118,1365,3.118,1366,3.501,1367,3.501,1368,4.084,1369,4.084,1370,4.084,1371,3.501,1372,3.501,1373,3.501,1374,3.501,1375,4.084]],["title/additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html",[36,0.677,211,0.992,219,0.611,220,0.553,308,0.643,337,0.581,691,0.934,903,0.526,1376,2.045]],["body/additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html",[18,0.891,30,0.901,38,0.019,64,1.407,68,1.092,72,0.411,93,0.938,115,0.01,116,0.014,117,0.01,162,0.987,169,2.225,180,1.538,194,2.066,211,2.902,212,1.27,217,1.462,218,2.801,219,2.034,220,1.839,226,1.743,308,2.082,354,1.846,358,1.092,366,1.373,375,1.407,402,1.482,417,1.336,438,1.649,445,1.767,446,1.27,450,1.789,452,2.196,565,3.405,672,2.801,690,1.743,691,2.91,694,2.574,714,1.958,715,3.463,729,5.131,769,1.846,774,1.482,786,2.756,864,3.536,879,3.088,880,2.225,911,3.815,912,2.225,913,2.574,914,2.225,915,2.574,916,2.225,917,2.225,918,2.225,919,2.574,920,2.225,921,2.225,922,2.574,923,2.801,924,2.801,925,2.574,926,2.574,927,2.084,928,2.225,982,3.463,1035,2.386,1100,2.801,1165,3.463,1256,5.131,1274,3.463,1377,4.039,1378,5.46,1379,4.039,1380,4.58,1381,4.039,1382,4.039,1383,4.039,1384,4.039,1385,4.039,1386,4.039,1387,4.039,1388,4.039,1389,4.039,1390,4.039,1391,4.039,1392,3.463,1393,3.463,1394,4.039]],["title/additional-documentation/using-systemjs.html",[36,1.071,337,0.92,903,0.832,1395,2.775]],["body/additional-documentation/using-systemjs.html",[36,1.67,38,0.019,115,0.013,116,0.016,117,0.013,156,4.329,265,4.7,358,1.868,366,1.707,546,2.605,744,4.329,769,3.159,865,4.329,985,3.218,1169,3.855,1395,5.694,1396,6.155,1397,5.048,1398,5.048,1399,5.048,1400,5.048,1401,6.155,1402,6.155,1403,5.048,1404,5.048,1405,5.048,1406,5.048,1407,5.048,1408,5.048,1409,5.048,1410,5.048]],["title/additional-documentation/original-config-api.html",[337,0.824,546,1.496,670,1.597,671,1.713,903,0.745]],["body/additional-documentation/original-config-api.html",[0,0.073,15,1.285,18,0.857,30,0.655,35,1.775,38,0.019,39,0.949,72,0.395,110,1.503,115,0.01,116,0.014,117,0.01,130,2.004,133,1.637,162,1.434,180,1.363,193,1.104,211,2.846,212,1.222,215,2.694,217,1.272,219,1.874,220,1.695,222,1.503,298,2.14,308,1.846,358,1.05,366,0.998,373,1.677,375,2.044,389,1.677,398,1.813,417,1.285,445,1.285,446,1.972,450,1.161,452,1.425,546,3.029,580,2.476,665,2.295,670,3.234,671,3.075,690,2.533,691,1.775,707,2.295,714,1.884,774,1.425,786,2.004,794,3.318,813,2.694,849,2.686,870,2.694,873,2.966,879,3.029,880,2.14,893,3.318,903,0.998,908,1.775,912,2.14,913,2.476,914,2.14,916,2.14,917,2.14,918,2.14,920,2.14,921,2.14,922,2.476,923,2.694,924,2.694,925,2.476,926,2.476,927,2.004,928,2.14,931,2.694,936,2.694,965,2.966,976,2.966,978,2.476,985,2.476,1035,2.295,1080,2.966,1082,2.694,1087,2.694,1100,2.694,1147,2.476,1215,3.331,1216,3.331,1289,3.331,1360,3.331,1363,3.331,1364,2.966,1365,2.966,1371,3.331,1372,3.331,1373,4.463,1374,3.331,1378,4.463,1380,3.331,1392,3.331,1393,3.331,1411,3.331,1412,3.331,1413,3.885,1414,3.331,1415,3.885,1416,3.885,1417,3.885,1418,3.885,1419,3.885,1420,3.885]],["title/additional-documentation/using-password-flow.html",[36,0.959,337,0.824,701,1.251,857,2.213,903,0.745]],["body/additional-documentation/using-password-flow.html",[0,0.071,3,0.42,11,0.914,17,2.085,18,1.213,36,2.144,38,0.019,39,0.608,40,0.397,43,0.867,51,0.744,72,0.385,104,0.867,110,0.963,115,0.006,116,0.01,117,0.006,130,1.285,133,1.608,161,2.624,162,1.415,180,1.063,193,1.711,212,0.783,217,1.344,219,1.529,220,1.382,222,1.464,247,2.624,297,1.587,298,2.817,306,1.318,307,1.901,308,1.73,323,1.372,326,2.89,349,1.821,350,1.017,366,0.973,373,1.976,375,2.018,385,1.633,387,1.138,397,1.138,398,1.318,415,1.075,417,2.144,419,1.017,420,1.017,427,2.337,429,2.337,436,1.075,445,1.515,446,1.951,450,1.131,483,2.135,486,1.901,665,1.471,690,1.633,696,2.135,699,2.236,700,1.835,701,2.882,703,2.135,707,1.471,714,2.22,717,1.901,718,1.901,724,2.89,738,2.89,774,1.68,786,2.362,794,2.412,813,1.727,830,3.245,849,1.285,857,4.852,859,1.901,860,1.727,864,2.236,874,3.245,879,2.838,880,2.085,881,3.245,893,2.918,897,1.727,898,1.587,901,2.135,908,2.337,912,2.522,918,2.085,920,2.085,921,2.085,927,2.362,928,2.085,931,2.624,936,2.624,941,2.135,949,3.245,950,3.245,959,3.175,964,1.727,967,3.496,978,1.587,1018,2.918,1084,1.587,1103,5.556,1109,2.624,1111,3.245,1114,3.496,1127,2.135,1131,2.135,1132,3.25,1136,2.135,1137,3.245,1147,2.918,1155,1.727,1177,2.135,1238,1.901,1269,2.135,1300,2.135,1315,1.901,1324,2.135,1327,2.135,1330,3.245,1340,2.89,1364,2.89,1365,2.89,1366,2.135,1367,2.135,1411,2.135,1412,2.135,1414,2.135,1421,2.49,1422,2.49,1423,2.49,1424,3.785,1425,2.49,1426,2.49,1427,2.49,1428,2.49,1429,2.49,1430,2.49,1431,2.49,1432,2.49,1433,2.49,1434,5.114,1435,3.785,1436,3.785,1437,3.785,1438,3.785,1439,3.785,1440,3.785,1441,3.785,1442,3.785,1443,2.49,1444,2.49,1445,2.49,1446,2.49,1447,2.49,1448,2.49,1449,2.49,1450,2.49,1451,2.49,1452,3.785,1453,2.49,1454,2.49,1455,2.49,1456,2.49,1457,3.785,1458,2.49,1459,3.785,1460,2.49,1461,2.49,1462,2.49,1463,2.49,1464,2.49,1465,2.49]],["title/additional-documentation/configure-custom-oauthstorage.html",[132,1.01,337,0.824,347,0.959,903,0.745,908,1.325]],["body/additional-documentation/configure-custom-oauthstorage.html",[0,0.105,18,1.243,36,1.865,38,0.019,68,1.523,72,0.573,104,1.528,115,0.011,116,0.015,117,0.011,132,2.289,151,2.263,226,1.893,242,3.041,293,3.041,347,2.061,350,1.791,358,1.185,366,1.127,371,2.796,385,2.432,398,1.528,402,1.609,415,2.837,419,2.841,420,2.301,537,2.796,548,3.349,552,4.303,562,3.349,563,3.041,565,2.796,566,3.76,691,2.846,698,3.041,746,3.041,769,2.004,774,1.609,819,3.76,891,5.34,892,3.349,893,3.593,894,3.76,895,4.833,908,2.004,989,3.041,995,4.303,997,3.349,1035,2.591,1096,4.319,1132,2.591,1225,3.349,1286,3.76,1466,4.386,1467,4.386,1468,4.386,1469,4.386,1470,4.386,1471,5.636,1472,4.386]]],"invertedIndex":[["",{"_index":38,"title":{"additional-documentation/code-flow-+-pcke.html":{}},"body":{"classes/AbstractValidationHandler.html":{},"classes/CryptoHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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":{},"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/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/callback-after-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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["0",{"_index":275,"title":{},"body":{"classes/JwksValidationHandler.html":{},"injectables/UrlHelperService.html":{},"additional-documentation/refreshing-a-token.html":{}}}],["0.33",{"_index":1206,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["0.35.0",{"_index":755,"title":{},"body":{"dependencies.html":{}}}],["0.5",{"_index":1204,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["0.9.1",{"_index":757,"title":{},"body":{"dependencies.html":{}}}],["1",{"_index":296,"title":{},"body":{"classes/JwksValidationHandler.html":{},"injectables/UrlHelperService.html":{},"overview.html":{},"additional-documentation/refreshing-a-token.html":{}}}],["1.0",{"_index":1334,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["1.0.1",{"_index":753,"title":{},"body":{"dependencies.html":{}}}],["1.2.4",{"_index":743,"title":{},"body":{"dependencies.html":{}}}],["1.3.0",{"_index":745,"title":{},"body":{"dependencies.html":{}}}],["1000",{"_index":171,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"miscellaneous/variables.html":{}}}],["19",{"_index":1070,"title":{},"body":{"overview.html":{}}}],["1_0.html#tokenendpoint",{"_index":440,"title":{},"body":{"classes/LoginOptions.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":447,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["2",{"_index":97,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"changelog.html":{},"index.html":{},"overview.html":{}}}],["2.0",{"_index":1095,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{}}}],["2.1",{"_index":669,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/session-checks.html":{}}}],["20",{"_index":993,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{}}}],["20.000",{"_index":1194,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["2017",{"_index":1004,"title":{},"body":{"license.html":{}}}],["3.1",{"_index":1211,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["3.3.7",{"_index":747,"title":{},"body":{"dependencies.html":{}}}],["4.3",{"_index":818,"title":{},"body":{"index.html":{}}}],["4.x",{"_index":812,"title":{},"body":{"index.html":{}}}],["401",{"_index":1219,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["403",{"_index":1220,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["4202",{"_index":885,"title":{},"body":{"index.html":{}}}],["4202]/index.html",{"_index":886,"title":{},"body":{"index.html":{}}}],["4202]/silent",{"_index":887,"title":{},"body":{"index.html":{}}}],["4711",{"_index":1261,"title":{},"body":{"additional-documentation/custom-query-parameters.html":{}}}],["4th",{"_index":924,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/original-config-api.html":{}}}],["5",{"_index":778,"title":{},"body":{"index.html":{},"overview.html":{}}}],["5.x",{"_index":815,"title":{},"body":{"index.html":{}}}],["6",{"_index":781,"title":{},"body":{"index.html":{}}}],["6.5.2",{"_index":749,"title":{},"body":{"dependencies.html":{}}}],["600",{"_index":241,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["7",{"_index":801,"title":{},"body":{"index.html":{}}}],["75",{"_index":1197,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["8",{"_index":1091,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{}}}],["8.0.12",{"_index":748,"title":{},"body":{"dependencies.html":{}}}],["8.0.2",{"_index":733,"title":{},"body":{"dependencies.html":{}}}],["8089|4200",{"_index":884,"title":{},"body":{"index.html":{}}}],["9]{3",{"_index":108,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["_throw(err",{"_index":1229,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["a021627fd9d3the",{"_index":1356,"title":{},"body":{"additional-documentation/server-side-rendering.html":{}}}],["above",{"_index":1035,"title":{},"body":{"license.html":{},"additional-documentation/getting-started.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/original-config-api.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["abstract",{"_index":10,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/CryptoHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["abstraction",{"_index":120,"title":{},"body":{"classes/CryptoHandler.html":{}}}],["abstractvalidationhandler",{"_index":1,"title":{"classes/AbstractValidationHandler.html":{}},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["abstractvalidationhandler:39",{"_index":259,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["abstractvalidationhandler:44",{"_index":258,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["abstractvalidationhandler:69",{"_index":257,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["abstractvalidationhandler:86",{"_index":256,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["access",{"_index":967,"title":{},"body":{"index.html":{},"additional-documentation/events.html":{},"additional-documentation/using-password-flow.html":{}}}],["access_token",{"_index":63,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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":{},"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":684,"title":{},"body":{"changelog.html":{}}}],["acr_values_supported",{"_index":464,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["action",{"_index":1058,"title":{},"body":{"license.html":{},"additional-documentation/session-checks.html":{}}}],["activate",{"_index":1342,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["activated",{"_index":1336,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["actual",{"_index":351,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["adapt",{"_index":1319,"title":{"additional-documentation/adapt-id_token-validation.html":{}},"body":{"additional-documentation/adapt-id_token-validation.html":{}}}],["add",{"_index":995,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["adding",{"_index":1399,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["addition",{"_index":1339,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["additional",{"_index":337,"title":{"additional-documentation/getting-started.html":{},"additional-documentation/preserving-state-(like-the-requested-url).html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/callback-after-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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}},"body":{"classes/LoginOptions.html":{}}}],["adhere",{"_index":1388,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["adjust",{"_index":1201,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["against",{"_index":61,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["alg",{"_index":49,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["alg.charat(0",{"_index":322,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["alg.match(/^.s[0",{"_index":107,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["alg.substr(2",{"_index":114,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["alg2kty(alg",{"_index":320,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["algorithm",{"_index":29,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/CryptoHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["algorithms",{"_index":122,"title":{},"body":{"classes/CryptoHandler.html":{},"classes/JwksValidationHandler.html":{}}}],["aliases",{"_index":1072,"title":{},"body":{"miscellaneous/typealiases.html":{}}}],["align",{"_index":1093,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{}}}],["allow",{"_index":1138,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["allowed",{"_index":239,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["allowedalgorithms",{"_index":223,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["allowedurls",{"_index":581,"title":{},"body":{"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{},"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["allows",{"_index":638,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{},"index.html":{}}}],["already",{"_index":13,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["alternative",{"_index":1164,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["although",{"_index":1436,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["and/or",{"_index":1027,"title":{},"body":{"license.html":{}}}],["angular",{"_index":769,"title":{},"body":{"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.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/configure-custom-oauthstorage.html":{}}}],["angular/animations",{"_index":732,"title":{},"body":{"dependencies.html":{}}}],["angular/common",{"_index":550,"title":{},"body":{"modules/OAuthModule.html":{},"dependencies.html":{}}}],["angular/common/http",{"_index":151,"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":734,"title":{},"body":{"dependencies.html":{}}}],["angular/core",{"_index":148,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"modules/OAuthModule.html":{},"injectables/UrlHelperService.html":{},"dependencies.html":{},"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["angular/elements",{"_index":735,"title":{},"body":{"dependencies.html":{}}}],["angular/forms",{"_index":736,"title":{},"body":{"dependencies.html":{}}}],["angular/platform",{"_index":737,"title":{},"body":{"dependencies.html":{}}}],["angular/router",{"_index":740,"title":{},"body":{"dependencies.html":{}}}],["angular2",{"_index":773,"title":{},"body":{"index.html":{}}}],["another",{"_index":1155,"title":{},"body":{"additional-documentation/refreshing-a-token.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":{}}}],["anymore",{"_index":391,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["aot",{"_index":1470,"title":{},"body":{"additional-documentation/configure-custom-oauthstorage.html":{}}}],["api",{"_index":670,"title":{"additional-documentation/original-config-api.html":{}},"body":{"changelog.html":{},"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{}}}],["apis",{"_index":782,"title":{},"body":{"index.html":{}}}],["app",{"_index":873,"title":{},"body":{"index.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{}}}],["app.component.html",{"_index":935,"title":{},"body":{"index.html":{}}}],["app/home.html",{"_index":945,"title":{},"body":{"index.html":{}}}],["appcomponent",{"_index":893,"title":{},"body":{"index.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["applicable",{"_index":1296,"title":{},"body":{"additional-documentation/events.html":{}}}],["application",{"_index":904,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{}}}],["applications",{"_index":1110,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{}}}],["appmodule",{"_index":895,"title":{},"body":{"index.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["approach",{"_index":1160,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["approutermodule",{"_index":1310,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["arising",{"_index":1061,"title":{},"body":{"license.html":{}}}],["array",{"_index":582,"title":{},"body":{"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{},"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["array.isarray(params.jwks['keys",{"_index":273,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["aspnetcore",{"_index":1358,"title":{},"body":{"additional-documentation/server-side-rendering.html":{}}}],["asset",{"_index":1176,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["assets",{"_index":1179,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["associated",{"_index":1015,"title":{},"body":{"license.html":{}}}],["asstring",{"_index":92,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["assumes",{"_index":872,"title":{},"body":{"index.html":{}}}],["async",{"_index":25,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["at_hash",{"_index":60,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["athash",{"_index":98,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["attacks",{"_index":365,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["auth",{"_index":375,"title":{},"body":{"classes/LoginOptions.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/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["auth.config",{"_index":930,"title":{},"body":{"index.html":{}}}],["auth_config",{"_index":1075,"title":{},"body":{"miscellaneous/variables.html":{}}}],["authcodeflowconfig",{"_index":1098,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{}}}],["authconfig",{"_index":911,"title":{},"body":{"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["authenticated",{"_index":1354,"title":{},"body":{"additional-documentation/server-side-rendering.html":{}}}],["authentication",{"_index":991,"title":{},"body":{"index.html":{}}}],["authorization_endpoint",{"_index":453,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["authors",{"_index":1051,"title":{},"body":{"license.html":{}}}],["authstorage",{"_index":139,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["automate",{"_index":968,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{}}}],["automatically",{"_index":706,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/session-checks.html":{}}}],["available",{"_index":989,"title":{},"body":{"index.html":{},"modules.html":{},"additional-documentation/events.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["avoid",{"_index":363,"title":{},"body":{"classes/LoginOptions.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":89,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["b",{"_index":1429,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["b64decodeunicode",{"_index":760,"title":{},"body":{"miscellaneous/functions.html":{}}}],["b64decodeunicode(str",{"_index":765,"title":{},"body":{"miscellaneous/functions.html":{}}}],["back",{"_index":1374,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{}}}],["backend",{"_index":788,"title":{},"body":{"index.html":{}}}],["base",{"_index":1380,"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":99,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["base64urlencode(str",{"_index":767,"title":{},"body":{"miscellaneous/functions.html":{}}}],["based",{"_index":1300,"title":{},"body":{"additional-documentation/events.html":{},"additional-documentation/using-password-flow.html":{}}}],["bearer",{"_index":205,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["beaugrand",{"_index":1398,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["before",{"_index":707,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/events.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["beginning",{"_index":780,"title":{},"body":{"index.html":{},"additional-documentation/session-checks.html":{}}}],["below",{"_index":1136,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/using-password-flow.html":{}}}],["best",{"_index":361,"title":{},"body":{"classes/LoginOptions.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/code-flow-+-pcke.html":{}}}],["better",{"_index":696,"title":{},"body":{"changelog.html":{},"additional-documentation/using-password-flow.html":{}}}],["between",{"_index":1131,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/using-password-flow.html":{}}}],["blog",{"_index":1351,"title":{},"body":{"additional-documentation/server-side-rendering.html":{}}}],["boolean",{"_index":174,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"classes/LoginOptions.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":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["bootstrap",{"_index":746,"title":{},"body":{"dependencies.html":{},"index.html":{},"overview.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["bootstrapping",{"_index":1126,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{}}}],["both",{"_index":1134,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["breaking",{"_index":710,"title":{},"body":{"changelog.html":{}}}],["browse",{"_index":1065,"title":{},"body":{"modules.html":{}}}],["browser",{"_index":738,"title":{},"body":{"dependencies.html":{},"index.html":{},"additional-documentation/using-password-flow.html":{}}}],["bug",{"_index":825,"title":{},"body":{"index.html":{}}}],["bugfixes",{"_index":829,"title":{},"body":{"index.html":{}}}],["build",{"_index":997,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["bundle",{"_index":784,"title":{},"body":{"index.html":{}}}],["bundling",{"_index":806,"title":{},"body":{"index.html":{}}}],["bytearrayasstring",{"_index":332,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["c",{"_index":1003,"title":{},"body":{"license.html":{}}}],["calchash",{"_index":20,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/CryptoHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["calchash(valuetohash",{"_index":27,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/CryptoHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["calculates",{"_index":32,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["call",{"_index":716,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/refreshing-a-token.html":{}}}],["callback",{"_index":1247,"title":{"additional-documentation/callback-after-login.html":{}},"body":{"additional-documentation/callback-after-login.html":{}}}],["called",{"_index":373,"title":{},"body":{"classes/LoginOptions.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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["calling",{"_index":966,"title":{},"body":{"index.html":{},"additional-documentation/preserving-state-(like-the-requested-url).html":{},"additional-documentation/session-checks.html":{}}}],["calls",{"_index":576,"title":{},"body":{"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{}}}],["care",{"_index":1143,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["case",{"_index":323,"title":{},"body":{"classes/JwksValidationHandler.html":{},"index.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":1327,"title":{},"body":{"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/using-password-flow.html":{}}}],["catch",{"_index":980,"title":{},"body":{"index.html":{}}}],["catch(err",{"_index":1185,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["catcherror",{"_index":154,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["change",{"_index":662,"title":{},"body":{"changelog.html":{}}}],["changelog",{"_index":661,"title":{"changelog.html":{}},"body":{}}],["changes",{"_index":711,"title":{},"body":{"changelog.html":{}}}],["charactes",{"_index":639,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["charge",{"_index":1010,"title":{},"body":{"license.html":{}}}],["check",{"_index":360,"title":{},"body":{"classes/LoginOptions.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":{}}}],["check_session_iframe",{"_index":458,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["checks",{"_index":1298,"title":{"additional-documentation/session-checks.html":{}},"body":{"additional-documentation/events.html":{},"additional-documentation/session-checks.html":{}}}],["checkurl(url",{"_index":173,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["circular",{"_index":1233,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["cites",{"_index":1437,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["cjs",{"_index":1407,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["claim",{"_index":1054,"title":{},"body":{"license.html":{}}}],["claim_types_supported",{"_index":476,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["claims",{"_index":429,"title":{},"body":{"classes/LoginOptions.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":{}}}],["claims.given_name",{"_index":950,"title":{},"body":{"index.html":{},"additional-documentation/using-password-flow.html":{}}}],["claims_parameter_supported",{"_index":478,"title":{},"body":{"classes/LoginOptions.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":477,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["claimsathash",{"_index":100,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["class",{"_index":0,"title":{"classes/AbstractValidationHandler.html":{},"classes/CryptoHandler.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/CryptoHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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":{},"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["classes",{"_index":2,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/CryptoHandler.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":386,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["cli",{"_index":1175,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["cli.json",{"_index":1178,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["client",{"_index":417,"title":{},"body":{"classes/LoginOptions.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/code-flow-+-pcke.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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["clientid",{"_index":919,"title":{},"body":{"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["clientids",{"_index":878,"title":{},"body":{"index.html":{}}}],["closed",{"_index":836,"title":{},"body":{"index.html":{}}}],["code",{"_index":796,"title":{"additional-documentation/code-flow-+-pcke.html":{}},"body":{"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{}}}],["code_error",{"_index":508,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["codes",{"_index":1218,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["come",{"_index":1163,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["commands",{"_index":850,"title":{},"body":{"index.html":{}}}],["commonjs",{"_index":805,"title":{},"body":{"index.html":{}}}],["commonmodule",{"_index":549,"title":{},"body":{"modules/OAuthModule.html":{}}}],["communication",{"_index":1189,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["compat",{"_index":750,"title":{},"body":{"dependencies.html":{}}}],["compatible",{"_index":400,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["compensates",{"_index":1150,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["compodoc/compodoc",{"_index":853,"title":{},"body":{"index.html":{}}}],["component",{"_index":931,"title":{},"body":{"index.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["conditions",{"_index":1034,"title":{},"body":{"license.html":{}}}],["config",{"_index":546,"title":{"additional-documentation/original-config-api.html":{}},"body":{"modules/OAuthModule.html":{},"changelog.html":{},"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-systemjs.html":{},"additional-documentation/original-config-api.html":{}}}],["configuration",{"_index":864,"title":{},"body":{"index.html":{},"additional-documentation/code-flow-+-pcke.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":{}}}],["configure",{"_index":908,"title":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}},"body":{"index.html":{},"additional-documentation/code-flow-+-pcke.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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["configured",{"_index":943,"title":{},"body":{"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{}}}],["configuring",{"_index":896,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{}}}],["connect",{"_index":438,"title":{},"body":{"classes/LoginOptions.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/session-checks.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["connection",{"_index":1062,"title":{},"body":{"license.html":{}}}],["consistent",{"_index":1392,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/original-config-api.html":{}}}],["console",{"_index":401,"title":{},"body":{"classes/LoginOptions.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":1252,"title":{},"body":{"additional-documentation/callback-after-login.html":{}}}],["console.debug('given_name",{"_index":1459,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["console.debug('ok",{"_index":1465,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["console.debug('refresh",{"_index":1183,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["console.debug('state",{"_index":1088,"title":{},"body":{"additional-documentation/preserving-state-(like-the-requested-url).html":{}}}],["console.debug('validatesignature",{"_index":278,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["console.debug('your",{"_index":1347,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["console.debug(context",{"_index":1253,"title":{},"body":{"additional-documentation/callback-after-login.html":{}}}],["console.error('actual",{"_index":103,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["console.error('exptected",{"_index":102,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["console.error('refresh",{"_index":1186,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["console.error(error",{"_index":294,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["console.error(event",{"_index":1278,"title":{},"body":{"additional-documentation/events.html":{}}}],["console.log(e));or",{"_index":1271,"title":{},"body":{"additional-documentation/events.html":{}}}],["console.warn(event",{"_index":1279,"title":{},"body":{"additional-documentation/events.html":{}}}],["const",{"_index":169,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"injectables/UrlHelperService.html":{},"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["constructor",{"_index":130,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["constructor(authstorage",{"_index":131,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["constructor(private",{"_index":936,"title":{},"body":{"index.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["constructor(readonly",{"_index":520,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{}}}],["constructor(type",{"_index":495,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{}}}],["contain",{"_index":824,"title":{},"body":{"index.html":{}}}],["contains",{"_index":952,"title":{},"body":{"index.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["context",{"_index":1249,"title":{},"body":{"additional-documentation/callback-after-login.html":{}}}],["contract",{"_index":1059,"title":{},"body":{"license.html":{}}}],["contribute",{"_index":841,"title":{},"body":{"index.html":{}}}],["contributions",{"_index":831,"title":{},"body":{"index.html":{}}}],["convenience",{"_index":673,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/code-flow-+-pcke.html":{}}}],["cookie",{"_index":1157,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["copied",{"_index":1172,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["copies",{"_index":1029,"title":{},"body":{"license.html":{}}}],["copy",{"_index":1013,"title":{},"body":{"license.html":{}}}],["copyright",{"_index":1002,"title":{},"body":{"license.html":{}}}],["core",{"_index":439,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"index.html":{}}}],["cought",{"_index":1228,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["create",{"_index":421,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["createdefaultlogger",{"_index":559,"title":{},"body":{"modules/OAuthModule.html":{},"miscellaneous/functions.html":{}}}],["createdefaultstorage",{"_index":560,"title":{},"body":{"modules/OAuthModule.html":{},"miscellaneous/functions.html":{}}}],["creates",{"_index":1232,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["credentials",{"_index":1454,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["credits",{"_index":771,"title":{},"body":{"index.html":{}}}],["critical",{"_index":828,"title":{},"body":{"index.html":{}}}],["crypto",{"_index":121,"title":{},"body":{"classes/CryptoHandler.html":{}}}],["cryptohandler",{"_index":118,"title":{"classes/CryptoHandler.html":{}},"body":{"classes/CryptoHandler.html":{},"modules/OAuthModule.html":{}}}],["current",{"_index":247,"title":{},"body":{"classes/JwksValidationHandler.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-password-flow.html":{}}}],["custom",{"_index":347,"title":{"additional-documentation/custom-query-parameters.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}},"body":{"classes/LoginOptions.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":{},"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":341,"title":{},"body":{"classes/LoginOptions.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":{}}}],["customize",{"_index":1466,"title":{},"body":{"additional-documentation/configure-custom-oauthstorage.html":{}}}],["customqueryparams",{"_index":1255,"title":{},"body":{"additional-documentation/custom-query-parameters.html":{}}}],["customurlvalidation",{"_index":583,"title":{},"body":{"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{}}}],["cycle",{"_index":820,"title":{},"body":{"index.html":{}}}],["damages",{"_index":1055,"title":{},"body":{"license.html":{}}}],["data",{"_index":427,"title":{},"body":{"classes/LoginOptions.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":{}}}],["deal",{"_index":1017,"title":{},"body":{"license.html":{}}}],["dealings",{"_index":1063,"title":{},"body":{"license.html":{}}}],["debug",{"_index":527,"title":{},"body":{"classes/OAuthLogger.html":{}}}],["debug(message",{"_index":408,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["debugging",{"_index":1268,"title":{},"body":{"additional-documentation/events.html":{}}}],["decide",{"_index":1331,"title":{},"body":{"additional-documentation/adapt-id_token-validation.html":{}}}],["declarations",{"_index":563,"title":{},"body":{"modules/OAuthModule.html":{},"index.html":{},"overview.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["declare",{"_index":260,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["decodekey",{"_index":642,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["decodekey(k",{"_index":646,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["decodeuricomponent(hash",{"_index":619,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["decodeuricomponent(k",{"_index":657,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["decodeuricomponent(v",{"_index":658,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["decodevalue",{"_index":643,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["decodevalue(v",{"_index":648,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["default",{"_index":226,"title":{},"body":{"classes/JwksValidationHandler.html":{},"classes/LoginOptions.html":{},"modules/OAuthModule.html":{},"changelog.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/refreshing-a-token.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":1408,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["defaultoauthinterceptor",{"_index":125,"title":{"interceptors/DefaultOAuthInterceptor.html":{}},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"modules/OAuthModule.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["defaults",{"_index":712,"title":{},"body":{"changelog.html":{}}}],["define",{"_index":693,"title":{},"body":{"changelog.html":{},"additional-documentation/refreshing-a-token.html":{}}}],["defined",{"_index":30,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/CryptoHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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/UrlHelperService.html":{},"interfaces/UserInfo.html":{},"classes/ValidationHandler.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.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/original-config-api.html":{}}}],["defines",{"_index":367,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["deleted",{"_index":1338,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["demand",{"_index":830,"title":{},"body":{"index.html":{},"additional-documentation/using-password-flow.html":{}}}],["demands",{"_index":718,"title":{},"body":{"changelog.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/using-password-flow.html":{}}}],["demo",{"_index":880,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["demonstration",{"_index":1250,"title":{},"body":{"additional-documentation/callback-after-login.html":{}}}],["dependencies",{"_index":731,"title":{"dependencies.html":{}},"body":{"dependencies.html":{},"overview.html":{}}}],["dependency",{"_index":405,"title":{},"body":{"classes/LoginOptions.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/adapt-id_token-validation.html":{}}}],["depending",{"_index":1122,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{}}}],["deprecated",{"_index":378,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["deps",{"_index":1402,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["described",{"_index":1424,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["description",{"_index":9,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/CryptoHandler.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":1462,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["details",{"_index":1289,"title":{},"body":{"additional-documentation/events.html":{},"additional-documentation/original-config-api.html":{}}}],["detects",{"_index":374,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["di",{"_index":695,"title":{},"body":{"changelog.html":{}}}],["differ",{"_index":246,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["different",{"_index":1274,"title":{},"body":{"additional-documentation/events.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["differs",{"_index":1130,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["directly",{"_index":964,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/using-password-flow.html":{}}}],["directory",{"_index":1174,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["disable",{"_index":357,"title":{},"body":{"classes/LoginOptions.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":{}}}],["disabled",{"_index":1287,"title":{},"body":{"additional-documentation/events.html":{}}}],["disableoauth2statecheck",{"_index":342,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["disablepkci",{"_index":1117,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{}}}],["discovery",{"_index":219,"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/JwksValidationHandler.html":{},"classes/LoginOptions.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/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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["discovery_document_load_error",{"_index":503,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["discovery_document_loaded",{"_index":499,"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":504,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["display",{"_index":960,"title":{},"body":{"index.html":{}}}],["display_values_supported",{"_index":475,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["displayed",{"_index":390,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["distribute",{"_index":1025,"title":{},"body":{"license.html":{}}}],["docs",{"_index":842,"title":{},"body":{"index.html":{}}}],["document",{"_index":220,"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/JwksValidationHandler.html":{},"classes/LoginOptions.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/code-flow-+-pcke.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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["documentation",{"_index":698,"title":{},"body":{"changelog.html":{},"index.html":{},"license.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["doesn't",{"_index":1375,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{}}}],["doing",{"_index":370,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["domains",{"_index":1386,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["don't",{"_index":959,"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":1416,"title":{},"body":{"additional-documentation/original-config-api.html":{}}}],["draft",{"_index":1094,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{}}}],["dummy",{"_index":1434,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["dummyclientsecret",{"_index":1111,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/using-password-flow.html":{}}}],["during",{"_index":1286,"title":{},"body":{"additional-documentation/events.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["dynamic",{"_index":739,"title":{},"body":{"dependencies.html":{}}}],["e",{"_index":326,"title":{},"body":{"classes/JwksValidationHandler.html":{},"changelog.html":{},"additional-documentation/using-password-flow.html":{}}}],["e.type",{"_index":197,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/session-checks.html":{}}}],["each",{"_index":823,"title":{},"body":{"index.html":{}}}],["ease",{"_index":863,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{}}}],["easiest",{"_index":1235,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["ec",{"_index":327,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["elements",{"_index":742,"title":{},"body":{"dependencies.html":{}}}],["email",{"_index":927,"title":{},"body":{"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["enable",{"_index":1368,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{}}}],["encodekey",{"_index":644,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["encodekey(k",{"_index":651,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["encoder",{"_index":637,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{},"dependencies.html":{}}}],["encodeuricomponent(k",{"_index":655,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["encodeuricomponent(v",{"_index":656,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["encodevalue",{"_index":645,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["encodevalue(v",{"_index":653,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["encounter",{"_index":1281,"title":{},"body":{"additional-documentation/events.html":{}}}],["end_session_endpoint",{"_index":459,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["endpoint",{"_index":436,"title":{},"body":{"classes/LoginOptions.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":{}}}],["endpoints",{"_index":1378,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/original-config-api.html":{}}}],["endpont",{"_index":1448,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["ends",{"_index":1337,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["enforce",{"_index":1106,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{}}}],["enhancements",{"_index":839,"title":{},"body":{"index.html":{}}}],["ensures",{"_index":1377,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["enter",{"_index":1421,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["enters",{"_index":858,"title":{},"body":{"index.html":{}}}],["enum",{"_index":1301,"title":{},"body":{"additional-documentation/events.html":{}}}],["environment",{"_index":800,"title":{},"body":{"index.html":{}}}],["err",{"_index":589,"title":{},"body":{"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{}}}],["err));when",{"_index":1187,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["error",{"_index":163,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/events.html":{}}}],["error('algorithm",{"_index":111,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["error('array",{"_index":276,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["error('cannot",{"_index":328,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["error('parameter",{"_index":267,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["error(message",{"_index":413,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["errorhandler",{"_index":134,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["errors",{"_index":1216,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/original-config-api.html":{}}}],["es256",{"_index":233,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["es384",{"_index":234,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["escapedkey",{"_index":628,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["escapedvalue",{"_index":629,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["etc",{"_index":891,"title":{},"body":{"index.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["event",{"_index":704,"title":{},"body":{"changelog.html":{},"license.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/events.html":{},"additional-documentation/session-checks.html":{}}}],["events",{"_index":379,"title":{"additional-documentation/events.html":{}},"body":{"classes/LoginOptions.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":{},"additional-documentation/session-checks.html":{}}}],["events.ts",{"_index":1302,"title":{},"body":{"additional-documentation/events.html":{}}}],["eventtype",{"_index":496,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["example",{"_index":1225,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["execute",{"_index":1125,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{}}}],["expected",{"_index":268,"title":{},"body":{"classes/JwksValidationHandler.html":{},"additional-documentation/events.html":{}}}],["expired",{"_index":1463,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["expires",{"_index":708,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/refreshing-a-token.html":{}}}],["expires_in",{"_index":443,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["explicitly",{"_index":1330,"title":{},"body":{"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/using-password-flow.html":{}}}],["export",{"_index":72,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/CryptoHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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":{},"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["exports",{"_index":564,"title":{},"body":{"modules/OAuthModule.html":{},"overview.html":{}}}],["express",{"_index":1042,"title":{},"body":{"license.html":{}}}],["extend",{"_index":1472,"title":{},"body":{"additional-documentation/configure-custom-oauthstorage.html":{}}}],["extends",{"_index":221,"title":{},"body":{"classes/JwksValidationHandler.html":{},"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{}}}],["extensive",{"_index":1273,"title":{},"body":{"additional-documentation/events.html":{}}}],["fact",{"_index":1151,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["factor",{"_index":1202,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["factories",{"_index":561,"title":{},"body":{"modules/OAuthModule.html":{}}}],["factory",{"_index":1469,"title":{},"body":{"additional-documentation/configure-custom-oauthstorage.html":{}}}],["fail",{"_index":715,"title":{},"body":{"changelog.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["fails",{"_index":1376,"title":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}},"body":{}}],["false",{"_index":194,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["features",{"_index":664,"title":{},"body":{"changelog.html":{},"index.html":{}}}],["feel",{"_index":832,"title":{},"body":{"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["fetch",{"_index":1127,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/using-password-flow.html":{}}}],["fetching",{"_index":1452,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["field",{"_index":50,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["file",{"_index":5,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/CryptoHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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":{},"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/events.html":{}}}],["files",{"_index":1016,"title":{},"body":{"license.html":{}}}],["filter",{"_index":155,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["filter(e",{"_index":196,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["filter(token",{"_index":192,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["find",{"_index":1080,"title":{},"body":{"additional-documentation/getting-started.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/original-config-api.html":{}}}],["fine",{"_index":983,"title":{},"body":{"index.html":{}}}],["fired",{"_index":1196,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["first",{"_index":922,"title":{},"body":{"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/original-config-api.html":{}}}],["fitness",{"_index":1047,"title":{},"body":{"license.html":{}}}],["fixes",{"_index":826,"title":{},"body":{"index.html":{}}}],["flight",{"_index":933,"title":{},"body":{"index.html":{}}}],["flow",{"_index":701,"title":{"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{}},"body":{"changelog.html":{},"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/custom-query-parameters.html":{},"additional-documentation/events.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{}}}],["flows",{"_index":859,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/using-password-flow.html":{}}}],["folder",{"_index":844,"title":{},"body":{"index.html":{}}}],["following",{"_index":849,"title":{},"body":{"index.html":{},"license.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["follows",{"_index":1468,"title":{},"body":{"additional-documentation/configure-custom-oauthstorage.html":{}}}],["form",{"_index":941,"title":{},"body":{"index.html":{},"additional-documentation/using-password-flow.html":{}}}],["format",{"_index":1406,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["former",{"_index":1323,"title":{},"body":{"additional-documentation/adapt-id_token-validation.html":{}}}],["forroot",{"_index":542,"title":{},"body":{"modules/OAuthModule.html":{}}}],["forroot(config",{"_index":543,"title":{},"body":{"modules/OAuthModule.html":{}}}],["found",{"_index":293,"title":{},"body":{"classes/JwksValidationHandler.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/server-side-rendering.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["four",{"_index":1112,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{}}}],["fragment",{"_index":348,"title":{},"body":{"classes/LoginOptions.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":{}}}],["free",{"_index":833,"title":{},"body":{"index.html":{},"license.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["full",{"_index":1299,"title":{},"body":{"additional-documentation/events.html":{}}}],["function",{"_index":371,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthResourceServerConfig.html":{},"interfaces/ValidationParams.html":{},"index.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["functions",{"_index":759,"title":{"miscellaneous/functions.html":{}},"body":{"miscellaneous/functions.html":{}}}],["furnished",{"_index":1032,"title":{},"body":{"license.html":{}}}],["further",{"_index":866,"title":{},"body":{"index.html":{},"additional-documentation/code-flow-+-pcke.html":{}}}],["g",{"_index":724,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/using-password-flow.html":{}}}],["geheim",{"_index":1442,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["geheim').then",{"_index":1461,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["geheim').then((resp",{"_index":1456,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["general",{"_index":979,"title":{},"body":{"index.html":{},"additional-documentation/code-flow-+-pcke.html":{}}}],["generate",{"_index":848,"title":{},"body":{"index.html":{}}}],["generator",{"_index":772,"title":{},"body":{"index.html":{}}}],["gethashfragmentparams",{"_index":611,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["gethashfragmentparams(customhashfragment",{"_index":613,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["getitem",{"_index":596,"title":{},"body":{"classes/OAuthStorage.html":{}}}],["getitem(key",{"_index":423,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["gets",{"_index":907,"title":{},"body":{"index.html":{}}}],["getting",{"_index":659,"title":{"changelog.html":{},"index.html":{},"license.html":{},"additional-documentation/getting-started.html":{}},"body":{"additional-documentation/getting-started.html":{},"additional-documentation/refreshing-a-token.html":{}}}],["give",{"_index":1190,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["gone",{"_index":1294,"title":{},"body":{"additional-documentation/events.html":{}}}],["google",{"_index":1383,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["graceperiod",{"_index":313,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["graceperiodinsec",{"_index":224,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["grant_types_supported",{"_index":466,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["granted",{"_index":1009,"title":{},"body":{"license.html":{}}}],["graph",{"_index":1064,"title":{},"body":{"modules.html":{}}}],["great",{"_index":1350,"title":{},"body":{"additional-documentation/server-side-rendering.html":{}}}],["guide",{"_index":1081,"title":{},"body":{"additional-documentation/getting-started.html":{}}}],["half",{"_index":1205,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["hallo",{"_index":954,"title":{},"body":{"index.html":{}}}],["handle(req",{"_index":188,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["handleerror",{"_index":585,"title":{},"body":{"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{}}}],["handleerror(err",{"_index":586,"title":{},"body":{"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["handler",{"_index":164,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"classes/JwksValidationHandler.html":{},"classes/NullValidationHandler.html":{},"modules/OAuthModule.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["handler.ts",{"_index":8,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/CryptoHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["handler.ts:10",{"_index":588,"title":{},"body":{"classes/OAuthNoopResourceServerErrorHandler.html":{}}}],["handler.ts:11",{"_index":488,"title":{},"body":{"classes/NullValidationHandler.html":{}}}],["handler.ts:141",{"_index":248,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["handler.ts:148",{"_index":250,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["handler.ts:20",{"_index":634,"title":{},"body":{"classes/ValidationHandler.html":{}}}],["handler.ts:21",{"_index":238,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["handler.ts:27",{"_index":633,"title":{},"body":{"classes/ValidationHandler.html":{}}}],["handler.ts:39",{"_index":66,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{}}}],["handler.ts:41",{"_index":254,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["handler.ts:44",{"_index":58,"title":{},"body":{"classes/AbstractValidationHandler.html":{}}}],["handler.ts:5",{"_index":595,"title":{},"body":{"classes/OAuthResourceServerErrorHandler.html":{}}}],["handler.ts:6",{"_index":123,"title":{},"body":{"classes/CryptoHandler.html":{}}}],["handler.ts:69",{"_index":47,"title":{},"body":{"classes/AbstractValidationHandler.html":{}}}],["handler.ts:8",{"_index":489,"title":{},"body":{"classes/NullValidationHandler.html":{}}}],["handler.ts:86",{"_index":31,"title":{},"body":{"classes/AbstractValidationHandler.html":{}}}],["handlers",{"_index":80,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["handling",{"_index":1214,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["hash",{"_index":33,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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":{},"additional-documentation/custom-query-parameters.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["hash.indexof",{"_index":620,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["hash.substr(1",{"_index":623,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["hash.substr(questionmarkposition",{"_index":622,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["hashalg",{"_index":86,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["hashalg.digeststring(valuetohash",{"_index":331,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["hashing",{"_index":779,"title":{},"body":{"index.html":{}}}],["hashlocationstrategy",{"_index":804,"title":{},"body":{"index.html":{}}}],["hashstrategy",{"_index":984,"title":{"additional-documentation/routing-with-the-hashstrategy.html":{}},"body":{"index.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["header",{"_index":55,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/JwksValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["headers",{"_index":206,"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":554,"title":{},"body":{"modules/OAuthModule.html":{}}}],["helper.service.ts",{"_index":610,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["helper.service.ts:25",{"_index":616,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["helper.service.ts:5",{"_index":614,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["helper.ts",{"_index":762,"title":{},"body":{"miscellaneous/functions.html":{}}}],["hence",{"_index":910,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{}}}],["here",{"_index":1132,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/working-with-httpinterceptors.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":{}}}],["here's",{"_index":1280,"title":{},"body":{"additional-documentation/events.html":{}}}],["hereby",{"_index":1008,"title":{},"body":{"license.html":{}}}],["hexstring",{"_index":251,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["hidden",{"_index":1153,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["holders",{"_index":1052,"title":{},"body":{"license.html":{}}}],["home",{"_index":1251,"title":{},"body":{"additional-documentation/callback-after-login.html":{}}}],["homecomponent",{"_index":894,"title":{},"body":{"index.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["hook",{"_index":393,"title":{},"body":{"classes/LoginOptions.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":{}}}],["hs256",{"_index":227,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["hs384",{"_index":228,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["hs512",{"_index":229,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["http",{"_index":1217,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["http://localhost:8080",{"_index":875,"title":{},"body":{"index.html":{}}}],["http://localhost:8080/#/home",{"_index":1318,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["http://openid.net/specs/openid",{"_index":437,"title":{},"body":{"classes/LoginOptions.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":974,"title":{},"body":{"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["http_interceptors",{"_index":551,"title":{},"body":{"modules/OAuthModule.html":{}}}],["httpclientmodule",{"_index":552,"title":{},"body":{"modules/OAuthModule.html":{},"index.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["httperrorresponse",{"_index":1240,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["httpevent",{"_index":149,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["httphandler",{"_index":143,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["httpinterceptor",{"_index":150,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["httpinterceptors",{"_index":1210,"title":{"additional-documentation/working-with-httpinterceptors.html":{}},"body":{}}],["httpparametercodec",{"_index":641,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["httprequest",{"_index":141,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["httpresponse",{"_index":587,"title":{},"body":{"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["https",{"_index":719,"title":{},"body":{"changelog.html":{}}}],["https://demo.identityserver.io",{"_index":1099,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{}}}],["https://github.com/lankaapura/angular",{"_index":1357,"title":{},"body":{"additional-documentation/server-side-rendering.html":{}}}],["https://github.com/manfredsteyer/angular",{"_index":795,"title":{},"body":{"index.html":{}}}],["https://manfredsteyer.github.io/angular",{"_index":797,"title":{},"body":{"index.html":{}}}],["https://medium.com/lankapura/angular",{"_index":1353,"title":{},"body":{"additional-documentation/server-side-rendering.html":{}}}],["https://steyer",{"_index":912,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["i.e",{"_index":1382,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["id",{"_index":308,"title":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}},"body":{"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["id_token",{"_index":51,"title":{"additional-documentation/adapt-id_token-validation.html":{}},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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/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/JwksValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["id_token_encryption_alg_values_supported",{"_index":472,"title":{},"body":{"classes/LoginOptions.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":473,"title":{},"body":{"classes/LoginOptions.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":471,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["idclaims",{"_index":430,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["ideas",{"_index":838,"title":{},"body":{"index.html":{}}}],["identity",{"_index":786,"title":{},"body":{"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["identityserver",{"_index":809,"title":{},"body":{"index.html":{}}}],["idsvr",{"_index":1359,"title":{},"body":{"additional-documentation/server-side-rendering.html":{}}}],["idtoken",{"_index":74,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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":{},"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":432,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["idtokenexpiresat",{"_index":434,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["idtokenhandler",{"_index":270,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["idtokenheader",{"_index":76,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/LoginOptions.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":433,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["iframe",{"_index":1154,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["iframes",{"_index":355,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["implcit",{"_index":1433,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["implemantion",{"_index":1226,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["implement",{"_index":899,"title":{},"body":{"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["implementation",{"_index":11,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/LoginOptions.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":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{}}}],["implementations",{"_index":422,"title":{},"body":{"classes/LoginOptions.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":1333,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["implementing",{"_index":702,"title":{},"body":{"changelog.html":{},"index.html":{}}}],["implements",{"_index":14,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["implicit",{"_index":700,"title":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{}},"body":{"changelog.html":{},"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/custom-query-parameters.html":{},"additional-documentation/events.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{}}}],["implied",{"_index":1043,"title":{},"body":{"license.html":{}}}],["import",{"_index":68,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/JwksValidationHandler.html":{},"classes/NullValidationHandler.html":{},"modules/OAuthModule.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"injectables/UrlHelperService.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.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/configure-custom-oauthstorage.html":{}}}],["important",{"_index":1113,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{}}}],["imports",{"_index":562,"title":{},"body":{"modules/OAuthModule.html":{},"index.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["included",{"_index":376,"title":{},"body":{"classes/LoginOptions.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":369,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["including",{"_index":1020,"title":{},"body":{"license.html":{}}}],["index",{"_index":21,"title":{"index.html":{}},"body":{"classes/AbstractValidationHandler.html":{},"classes/CryptoHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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":{},"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":917,"title":{},"body":{"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.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/original-config-api.html":{}}}],["indexable",{"_index":631,"title":{},"body":{"interfaces/UserInfo.html":{}}}],["infer",{"_index":329,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["inferhashalgorithm",{"_index":24,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{}}}],["inferhashalgorithm(jwtheader",{"_index":45,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["infers",{"_index":48,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["info",{"_index":3,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/CryptoHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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":{},"additional-documentation/preserving-state-(like-the-requested-url).html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/using-password-flow.html":{}}}],["info(message",{"_index":410,"title":{},"body":{"classes/LoginOptions.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":1089,"title":{},"body":{"additional-documentation/preserving-state-(like-the-requested-url).html":{}}}],["information",{"_index":985,"title":{},"body":{"index.html":{},"additional-documentation/events.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":1264,"title":{},"body":{"additional-documentation/events.html":{}}}],["inherited",{"_index":255,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["initial",{"_index":1305,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["initialize",{"_index":1118,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{}}}],["initializes",{"_index":1121,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{}}}],["initialnavigation",{"_index":1313,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["initimplicitflow",{"_index":944,"title":{},"body":{"index.html":{},"additional-documentation/preserving-state-(like-the-requested-url).html":{}}}],["initloginflow",{"_index":1120,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{}}}],["inject",{"_index":1239,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["injectable",{"_index":147,"title":{"injectables/UrlHelperService.html":{}},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"injectables/UrlHelperService.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["injectables",{"_index":608,"title":{},"body":{"injectables/UrlHelperService.html":{},"overview.html":{}}}],["injecting",{"_index":1231,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["injection",{"_index":406,"title":{},"body":{"classes/LoginOptions.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('auth_config",{"_index":1079,"title":{},"body":{"miscellaneous/variables.html":{}}}],["install",{"_index":852,"title":{},"body":{"index.html":{}}}],["installing",{"_index":889,"title":{},"body":{"index.html":{}}}],["instance",{"_index":1203,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["instanceof",{"_index":1277,"title":{},"body":{"additional-documentation/events.html":{}}}],["instead",{"_index":350,"title":{},"body":{"classes/LoginOptions.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":{}}}],["interaction",{"_index":1159,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["intercept",{"_index":129,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["intercept(req",{"_index":140,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["intercepted",{"_index":577,"title":{},"body":{"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{}}}],["interceptor",{"_index":124,"title":{"interceptors/DefaultOAuthInterceptor.html":{}},"body":{"index.html":{}}}],["interceptors",{"_index":126,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["interceptors/default",{"_index":557,"title":{},"body":{"modules/OAuthModule.html":{}}}],["interceptors/resource",{"_index":556,"title":{},"body":{"modules/OAuthModule.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":{},"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":603,"title":{},"body":{"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"interfaces/ValidationParams.html":{},"overview.html":{}}}],["internally",{"_index":399,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["introduced",{"_index":909,"title":{},"body":{"index.html":{}}}],["invalid_nonce_in_state",{"_index":502,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{},"additional-documentation/events.html":{}}}],["ionic",{"_index":998,"title":{},"body":{"index.html":{}}}],["isn't",{"_index":483,"title":{},"body":{"classes/NullValidationHandler.html":{},"additional-documentation/using-password-flow.html":{}}}],["issuer",{"_index":452,"title":{},"body":{"classes/LoginOptions.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/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/original-config-api.html":{}}}],["issuer's",{"_index":728,"title":{},"body":{"changelog.html":{}}}],["issues",{"_index":837,"title":{},"body":{"index.html":{}}}],["issuing",{"_index":1152,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["isvalid",{"_index":315,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["java",{"_index":791,"title":{},"body":{"index.html":{}}}],["job",{"_index":1314,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["js",{"_index":744,"title":{},"body":{"dependencies.html":{},"additional-documentation/using-systemjs.html":{}}}],["json",{"_index":214,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["jsrasign",{"_index":776,"title":{},"body":{"index.html":{}}}],["jsrsasign",{"_index":265,"title":{},"body":{"classes/JwksValidationHandler.html":{},"dependencies.html":{},"additional-documentation/using-systemjs.html":{}}}],["jwks",{"_index":78,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"additional-documentation/events.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["jwks_load_error",{"_index":501,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["jwks_uri",{"_index":460,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["jwksvalidationhandler",{"_index":209,"title":{"classes/JwksValidationHandler.html":{}},"body":{"classes/JwksValidationHandler.html":{},"modules/OAuthModule.html":{},"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["jwksvalidationhandler();in",{"_index":1326,"title":{},"body":{"additional-documentation/adapt-id_token-validation.html":{}}}],["jwtheader",{"_index":52,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["jwtheader['alg",{"_index":106,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["k",{"_index":290,"title":{},"body":{"classes/JwksValidationHandler.html":{},"classes/WebHttpUrlEncodingCodec.html":{}}}],["k['kid",{"_index":283,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["k['kty",{"_index":291,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["k['use",{"_index":284,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["keep",{"_index":1168,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["kevin",{"_index":1397,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["key",{"_index":216,"title":{},"body":{"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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":789,"title":{},"body":{"index.html":{}}}],["keyobj",{"_index":309,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["keys",{"_index":213,"title":{},"body":{"classes/JwksValidationHandler.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["keys.filter",{"_index":289,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["keys.find(k",{"_index":282,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["kicks",{"_index":1412,"title":{},"body":{"additional-documentation/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["kid",{"_index":279,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["kind",{"_index":1041,"title":{},"body":{"license.html":{}}}],["known",{"_index":1149,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["known/openid",{"_index":1444,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["kty",{"_index":286,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["labels",{"_index":840,"title":{},"body":{"index.html":{}}}],["last",{"_index":1135,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["later",{"_index":1324,"title":{},"body":{"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/using-password-flow.html":{}}}],["lates",{"_index":663,"title":{},"body":{"changelog.html":{}}}],["leads",{"_index":1234,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/session-checks.html":{}}}],["leftmosthalf",{"_index":94,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["legend",{"_index":1067,"title":{},"body":{"overview.html":{}}}],["levels",{"_index":1275,"title":{},"body":{"additional-documentation/events.html":{}}}],["leveraging",{"_index":900,"title":{},"body":{"index.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["liability",{"_index":1056,"title":{},"body":{"license.html":{}}}],["liable",{"_index":1053,"title":{},"body":{"license.html":{}}}],["lib",{"_index":387,"title":{},"body":{"classes/LoginOptions.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":{}}}],["library",{"_index":774,"title":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{}},"body":{"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/working-with-httpinterceptors.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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["library's",{"_index":1390,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["license",{"_index":1001,"title":{"license.html":{}},"body":{}}],["life",{"_index":1199,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["limitation",{"_index":1021,"title":{},"body":{"license.html":{},"additional-documentation/refreshing-a-token.html":{}}}],["limited",{"_index":1044,"title":{},"body":{"license.html":{}}}],["line",{"_index":1177,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/using-password-flow.html":{}}}],["list",{"_index":1141,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/events.html":{}}}],["listed",{"_index":1223,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["lite",{"_index":752,"title":{},"body":{"dependencies.html":{}}}],["load",{"_index":1414,"title":{},"body":{"additional-documentation/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["loaddiscoverydocumentandtrylogin",{"_index":677,"title":{},"body":{"changelog.html":{}}}],["loaded",{"_index":307,"title":{},"body":{"classes/JwksValidationHandler.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/using-password-flow.html":{}}}],["loadedkeys",{"_index":303,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["loading",{"_index":1457,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["loadkeys",{"_index":79,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["loaduserprofile",{"_index":1290,"title":{},"body":{"additional-documentation/events.html":{}}}],["local",{"_index":725,"title":{},"body":{"changelog.html":{},"additional-documentation/session-checks.html":{}}}],["localhost:[8080",{"_index":883,"title":{},"body":{"index.html":{}}}],["localstorage",{"_index":419,"title":{},"body":{"classes/LoginOptions.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/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["location.origin",{"_index":1171,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["locationstrategy",{"_index":1303,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["log",{"_index":528,"title":{},"body":{"classes/OAuthLogger.html":{},"changelog.html":{},"additional-documentation/events.html":{}}}],["log(message",{"_index":411,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["logged",{"_index":1156,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["loggin",{"_index":1449,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["logging",{"_index":397,"title":{},"body":{"classes/LoginOptions.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":{}}}],["login",{"_index":690,"title":{"additional-documentation/callback-after-login.html":{}},"body":{"changelog.html":{},"index.html":{},"additional-documentation/preserving-state-(like-the-requested-url).html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["loginoptions",{"_index":335,"title":{"classes/LoginOptions.html":{}},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["logoff",{"_index":947,"title":{},"body":{"index.html":{}}}],["logout",{"_index":519,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"index.html":{},"miscellaneous/typealiases.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{}}}],["logs",{"_index":689,"title":{},"body":{"changelog.html":{},"additional-documentation/events.html":{}}}],["long",{"_index":1297,"title":{},"body":{"additional-documentation/events.html":{}}}],["longer",{"_index":1272,"title":{},"body":{"additional-documentation/events.html":{}}}],["look",{"_index":976,"title":{},"body":{"index.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{}}}],["lower",{"_index":973,"title":{},"body":{"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["main",{"_index":1169,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/events.html":{},"additional-documentation/using-systemjs.html":{}}}],["maintain",{"_index":1391,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["major",{"_index":822,"title":{},"body":{"index.html":{}}}],["make",{"_index":17,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/using-password-flow.html":{}}}],["management",{"_index":685,"title":{},"body":{"changelog.html":{},"additional-documentation/session-checks.html":{}}}],["manfred",{"_index":1005,"title":{},"body":{"license.html":{}}}],["manually",{"_index":1315,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{}}}],["map",{"_index":156,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/using-systemjs.html":{}}}],["map(_",{"_index":200,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["matching",{"_index":116,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/CryptoHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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":{},"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/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/callback-after-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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["matchingkeys",{"_index":288,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["matchingkeys.length",{"_index":292,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["matchingkeys[0",{"_index":300,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["max/geheim",{"_index":877,"title":{},"body":{"index.html":{}}}],["means",{"_index":687,"title":{},"body":{"changelog.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/session-checks.html":{}}}],["mentioned",{"_index":870,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/original-config-api.html":{}}}],["merchantability",{"_index":1046,"title":{},"body":{"license.html":{}}}],["merge",{"_index":152,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"license.html":{}}}],["mergemap",{"_index":158,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["mergemap(token",{"_index":204,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["message",{"_index":377,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["meta",{"_index":1401,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["method",{"_index":15,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/LoginOptions.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":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{}}}],["methods",{"_index":22,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/CryptoHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/JwksValidationHandler.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/OAuthStorage.html":{},"injectables/UrlHelperService.html":{},"classes/ValidationHandler.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"changelog.html":{}}}],["mind",{"_index":1105,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["minimize",{"_index":783,"title":{},"body":{"index.html":{}}}],["minutes",{"_index":994,"title":{},"body":{"index.html":{}}}],["miscellaneous",{"_index":758,"title":{"miscellaneous/functions.html":{},"miscellaneous/typealiases.html":{},"miscellaneous/variables.html":{}},"body":{"miscellaneous/functions.html":{},"miscellaneous/typealiases.html":{},"miscellaneous/variables.html":{}}}],["missing",{"_index":277,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["modify",{"_index":1023,"title":{},"body":{"license.html":{}}}],["module",{"_index":536,"title":{"modules/OAuthModule.html":{}},"body":{"overview.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["module.config",{"_index":166,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"modules/OAuthModule.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["module.config.ts",{"_index":571,"title":{},"body":{"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{}}}],["module.config.ts:11",{"_index":592,"title":{},"body":{"classes/OAuthResourceServerConfig.html":{}}}],["module.config.ts:12",{"_index":594,"title":{},"body":{"classes/OAuthResourceServerConfig.html":{}}}],["module.config.ts:13",{"_index":593,"title":{},"body":{"classes/OAuthResourceServerConfig.html":{}}}],["module.config.ts:2",{"_index":574,"title":{},"body":{"classes/OAuthModuleConfig.html":{}}}],["moduleconfig",{"_index":136,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["modules",{"_index":538,"title":{"modules.html":{}},"body":{"modules/OAuthModule.html":{},"modules.html":{}}}],["modulewithproviders",{"_index":547,"title":{},"body":{"modules/OAuthModule.html":{}}}],["more",{"_index":297,"title":{},"body":{"classes/JwksValidationHandler.html":{},"index.html":{},"additional-documentation/events.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{}}}],["msec",{"_index":1193,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["much",{"_index":816,"title":{},"body":{"index.html":{}}}],["multi",{"_index":569,"title":{},"body":{"modules/OAuthModule.html":{}}}],["name",{"_index":39,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/CryptoHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/JwksValidationHandler.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":{},"index.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["navigation",{"_index":1306,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["need",{"_index":819,"title":{},"body":{"index.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["needed",{"_index":1102,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{}}}],["net",{"_index":810,"title":{},"body":{"index.html":{}}}],["net/.net",{"_index":787,"title":{},"body":{"index.html":{}}}],["new",{"_index":110,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"changelog.html":{},"index.html":{},"miscellaneous/variables.html":{},"additional-documentation/code-flow-+-pcke.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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["newer",{"_index":814,"title":{},"body":{"index.html":{}}}],["next",{"_index":142,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["next.handle(req",{"_index":183,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["next.handle(req).catch(err",{"_index":1246,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["ngmodule",{"_index":548,"title":{},"body":{"modules/OAuthModule.html":{},"index.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["node_modules/jsrsasign/lib/jsrsasign",{"_index":1409,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["nonce",{"_index":368,"title":{},"body":{"classes/LoginOptions.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":{}}}],["noninfringement",{"_index":1050,"title":{},"body":{"license.html":{}}}],["normally",{"_index":384,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["note",{"_index":1147,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["notes",{"_index":667,"title":{},"body":{"changelog.html":{}}}],["nothing",{"_index":485,"title":{},"body":{"classes/NullValidationHandler.html":{}}}],["notice",{"_index":1036,"title":{},"body":{"license.html":{}}}],["notification",{"_index":683,"title":{},"body":{"changelog.html":{},"additional-documentation/session-checks.html":{}}}],["notifications",{"_index":1343,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["notified",{"_index":688,"title":{},"body":{"changelog.html":{},"additional-documentation/session-checks.html":{}}}],["npm",{"_index":851,"title":{},"body":{"index.html":{}}}],["null",{"_index":424,"title":{},"body":{"classes/LoginOptions.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":{},"index.html":{}}}],["nullvalidationhandler",{"_index":481,"title":{"classes/NullValidationHandler.html":{}},"body":{"classes/NullValidationHandler.html":{},"modules/OAuthModule.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["number",{"_index":240,"title":{},"body":{"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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":{}}}],["oauth",{"_index":165,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"modules/OAuthModule.html":{},"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["oauth.interceptor",{"_index":558,"title":{},"body":{"modules/OAuthModule.html":{}}}],["oauth.interceptor.ts",{"_index":128,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"miscellaneous/variables.html":{}}}],["oauth.interceptor.ts:19",{"_index":138,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["oauth.interceptor.ts:40",{"_index":144,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["oauth2",{"_index":358,"title":{},"body":{"classes/LoginOptions.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/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.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/original-config-api.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["oauth2/oidc",{"_index":901,"title":{},"body":{"index.html":{},"additional-documentation/using-password-flow.html":{}}}],["oautherrorevent",{"_index":492,"title":{"classes/OAuthErrorEvent.html":{}},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"additional-documentation/events.html":{}}}],["oauthevent",{"_index":494,"title":{"classes/OAuthEvent.html":{}},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{}}}],["oauthinfoevent",{"_index":524,"title":{"classes/OAuthInfoEvent.html":{}},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{}}}],["oauthlogger",{"_index":407,"title":{"classes/OAuthLogger.html":{}},"body":{"classes/LoginOptions.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":537,"title":{"modules/OAuthModule.html":{}},"body":{"modules/OAuthModule.html":{},"index.html":{},"modules.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["oauthmodule.forroot",{"_index":892,"title":{},"body":{"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["oauthmoduleconfig",{"_index":137,"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":555,"title":{"classes/OAuthNoopResourceServerErrorHandler.html":{}},"body":{"modules/OAuthModule.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["oauthresourceserverconfig",{"_index":573,"title":{"classes/OAuthResourceServerConfig.html":{}},"body":{"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{}}}],["oauthresourceservererrorhandler",{"_index":135,"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":133,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"classes/LoginOptions.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/working-with-httpinterceptors.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["oauthstorage",{"_index":132,"title":{"classes/OAuthStorage.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"classes/LoginOptions.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":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["oauthsuccessevent",{"_index":521,"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/JwksValidationHandler.html":{},"classes/LoginOptions.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":{},"index.html":{},"additional-documentation/refreshing-a-token.html":{}}}],["observable",{"_index":146,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"changelog.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/events.html":{}}}],["obtaining",{"_index":1012,"title":{},"body":{"license.html":{}}}],["occur",{"_index":1267,"title":{},"body":{"additional-documentation/events.html":{}}}],["of(this.oauthservice.getaccesstoken()).pipe",{"_index":191,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["offline_access",{"_index":1114,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/using-password-flow.html":{}}}],["oidc",{"_index":366,"title":{},"body":{"classes/LoginOptions.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/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["oidc.umd.js",{"_index":1405,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["oidc/docs",{"_index":798,"title":{},"body":{"index.html":{}}}],["oidcdiscoverydoc",{"_index":451,"title":{"interfaces/OidcDiscoveryDoc.html":{}},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["oidic.module.ts",{"_index":540,"title":{},"body":{"modules/OAuthModule.html":{}}}],["oidic.module.ts:27",{"_index":545,"title":{},"body":{"modules/OAuthModule.html":{}}}],["ok",{"_index":1184,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["okta",{"_index":992,"title":{},"body":{"index.html":{}}}],["one",{"_index":212,"title":{},"body":{"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.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":{},"additional-documentation/using-password-flow.html":{}}}],["online",{"_index":990,"title":{},"body":{"index.html":{}}}],["onloginerror",{"_index":343,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["ontokenreceived",{"_index":344,"title":{},"body":{"classes/LoginOptions.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":{}}}],["openid",{"_index":450,"title":{},"body":{"classes/LoginOptions.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/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["option",{"_index":1335,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["optional",{"_index":41,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/CryptoHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"injectables/UrlHelperService.html":{},"classes/ValidationHandler.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"miscellaneous/functions.html":{},"additional-documentation/preserving-state-(like-the-requested-url).html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["optionalparams",{"_index":409,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["options",{"_index":338,"title":{},"body":{"classes/LoginOptions.html":{},"additional-documentation/events.html":{}}}],["original",{"_index":671,"title":{"additional-documentation/original-config-api.html":{}},"body":{"changelog.html":{},"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{}}}],["otherparam",{"_index":1262,"title":{},"body":{"additional-documentation/custom-query-parameters.html":{}}}],["otherwise",{"_index":713,"title":{},"body":{"changelog.html":{},"index.html":{},"license.html":{}}}],["out",{"_index":680,"title":{},"body":{"changelog.html":{},"index.html":{},"license.html":{},"overview.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{}}}],["output",{"_index":1173,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/callback-after-login.html":{}}}],["over",{"_index":1200,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["override",{"_index":19,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["overview",{"_index":1066,"title":{"overview.html":{}},"body":{"overview.html":{}}}],["owner",{"_index":881,"title":{},"body":{"index.html":{},"additional-documentation/using-password-flow.html":{}}}],["package",{"_index":730,"title":{"dependencies.html":{}},"body":{}}],["packages",{"_index":1321,"title":{},"body":{"additional-documentation/adapt-id_token-validation.html":{}}}],["page",{"_index":903,"title":{"additional-documentation/getting-started.html":{},"additional-documentation/preserving-state-(like-the-requested-url).html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/callback-after-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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}},"body":{"index.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{}}}],["pair",{"_index":626,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["pairs",{"_index":625,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["param",{"_index":105,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["parameter",{"_index":1256,"title":{},"body":{"additional-documentation/custom-query-parameters.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["parameters",{"_index":37,"title":{"additional-documentation/custom-query-parameters.html":{}},"body":{"classes/AbstractValidationHandler.html":{},"classes/CryptoHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/JwksValidationHandler.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":{},"miscellaneous/functions.html":{},"additional-documentation/custom-query-parameters.html":{}}}],["params",{"_index":64,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["params.idtoken",{"_index":266,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["params.idtokenclaims['at_hash'].replace(/=/g",{"_index":101,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["params.idtokenheader",{"_index":269,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["params.idtokenheader['alg",{"_index":281,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["params.idtokenheader['kid",{"_index":280,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["params.jwks",{"_index":271,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["params.jwks['keys",{"_index":272,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["params.jwks['keys'].length",{"_index":274,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["params.loadkeys",{"_index":301,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["parent.postmessage(location.hash",{"_index":1170,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["parse",{"_index":1372,"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/JwksValidationHandler.html":{},"classes/LoginOptions.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":431,"title":{"interfaces/ParsedIdToken.html":{}},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["parsequerystring",{"_index":612,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["parsequerystring(querystring",{"_index":615,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["particular",{"_index":1048,"title":{},"body":{"license.html":{}}}],["pass",{"_index":354,"title":{},"body":{"classes/LoginOptions.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/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["passed",{"_index":34,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["passes",{"_index":1227,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["passt",{"_index":339,"title":{},"body":{"classes/LoginOptions.html":{}}}],["password",{"_index":857,"title":{"additional-documentation/using-password-flow.html":{}},"body":{"index.html":{},"additional-documentation/using-password-flow.html":{}}}],["passwords",{"_index":640,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["path",{"_index":982,"title":{},"body":{"index.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["pathlocationstrategy",{"_index":803,"title":{},"body":{"index.html":{}}}],["pcke",{"_index":1090,"title":{"additional-documentation/code-flow-+-pcke.html":{}},"body":{}}],["perform",{"_index":1180,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/session-checks.html":{}}}],["performs",{"_index":1304,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["period",{"_index":243,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["permission",{"_index":1007,"title":{},"body":{"license.html":{}}}],["permissions",{"_index":920,"title":{},"body":{"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["permit",{"_index":1030,"title":{},"body":{"license.html":{}}}],["person",{"_index":1011,"title":{},"body":{"license.html":{}}}],["persons",{"_index":1031,"title":{},"body":{"license.html":{}}}],["perspective",{"_index":1422,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["pingone",{"_index":1385,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["pipe",{"_index":202,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["pipe(catcherror(err",{"_index":189,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["pkce",{"_index":856,"title":{},"body":{"index.html":{},"additional-documentation/code-flow-+-pcke.html":{}}}],["plan",{"_index":821,"title":{},"body":{"index.html":{}}}],["please",{"_index":298,"title":{},"body":{"classes/JwksValidationHandler.html":{},"additional-documentation/getting-started.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["portions",{"_index":1039,"title":{},"body":{"license.html":{}}}],["possibility",{"_index":692,"title":{},"body":{"changelog.html":{}}}],["possible",{"_index":1430,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["post",{"_index":1352,"title":{},"body":{"additional-documentation/server-side-rendering.html":{}}}],["ppanthony",{"_index":1403,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["practice",{"_index":362,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/code-flow-+-pcke.html":{}}}],["practices",{"_index":1107,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{}}}],["prefixes",{"_index":971,"title":{},"body":{"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["preserving",{"_index":1083,"title":{"additional-documentation/preserving-state-(like-the-requested-url).html":{}},"body":{"additional-documentation/preserving-state-(like-the-requested-url).html":{}}}],["prevent",{"_index":1237,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["preventclearhashafterlogin",{"_index":345,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["prevents",{"_index":1188,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["private",{"_index":172,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"classes/JwksValidationHandler.html":{},"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["profile",{"_index":714,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["project's",{"_index":1360,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{}}}],["projects/.../base64",{"_index":761,"title":{},"body":{"miscellaneous/functions.html":{}}}],["projects/.../default",{"_index":1077,"title":{},"body":{"miscellaneous/variables.html":{}}}],["projects/.../events.ts",{"_index":1073,"title":{},"body":{"miscellaneous/typealiases.html":{}}}],["projects/.../factories.ts",{"_index":763,"title":{},"body":{"miscellaneous/functions.html":{}}}],["projects/.../tokens.ts",{"_index":1076,"title":{},"body":{"miscellaneous/variables.html":{}}}],["projects/lib/src/angular",{"_index":539,"title":{},"body":{"modules/OAuthModule.html":{}}}],["projects/lib/src/base64",{"_index":764,"title":{},"body":{"miscellaneous/functions.html":{}}}],["projects/lib/src/encoder.ts",{"_index":636,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["projects/lib/src/encoder.ts:10",{"_index":654,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["projects/lib/src/encoder.ts:14",{"_index":647,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["projects/lib/src/encoder.ts:18",{"_index":649,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["projects/lib/src/encoder.ts:6",{"_index":652,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["projects/lib/src/events.ts",{"_index":493,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["projects/lib/src/events.ts:25",{"_index":525,"title":{},"body":{"classes/OAuthEvent.html":{}}}],["projects/lib/src/events.ts:29",{"_index":602,"title":{},"body":{"classes/OAuthSuccessEvent.html":{}}}],["projects/lib/src/events.ts:35",{"_index":526,"title":{},"body":{"classes/OAuthInfoEvent.html":{}}}],["projects/lib/src/events.ts:41",{"_index":498,"title":{},"body":{"classes/OAuthErrorEvent.html":{}}}],["projects/lib/src/factories.ts",{"_index":768,"title":{},"body":{"miscellaneous/functions.html":{}}}],["projects/lib/src/interceptors/default",{"_index":127,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"miscellaneous/variables.html":{}}}],["projects/lib/src/interceptors/resource",{"_index":584,"title":{},"body":{"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{}}}],["projects/lib/src/oauth",{"_index":570,"title":{},"body":{"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{}}}],["projects/lib/src/token",{"_index":6,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/CryptoHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/NullValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["projects/lib/src/tokens.ts",{"_index":1078,"title":{},"body":{"miscellaneous/variables.html":{}}}],["projects/lib/src/types.ts",{"_index":336,"title":{},"body":{"classes/LoginOptions.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:11",{"_index":380,"title":{},"body":{"classes/LoginOptions.html":{}}}],["projects/lib/src/types.ts:121",{"_index":632,"title":{},"body":{"interfaces/UserInfo.html":{}}}],["projects/lib/src/types.ts:18",{"_index":392,"title":{},"body":{"classes/LoginOptions.html":{}}}],["projects/lib/src/types.ts:26",{"_index":372,"title":{},"body":{"classes/LoginOptions.html":{}}}],["projects/lib/src/types.ts:33",{"_index":346,"title":{},"body":{"classes/LoginOptions.html":{}}}],["projects/lib/src/types.ts:43",{"_index":356,"title":{},"body":{"classes/LoginOptions.html":{}}}],["projects/lib/src/types.ts:50",{"_index":383,"title":{},"body":{"classes/LoginOptions.html":{}}}],["projects/lib/src/types.ts:60",{"_index":530,"title":{},"body":{"classes/OAuthLogger.html":{}}}],["projects/lib/src/types.ts:61",{"_index":533,"title":{},"body":{"classes/OAuthLogger.html":{}}}],["projects/lib/src/types.ts:62",{"_index":534,"title":{},"body":{"classes/OAuthLogger.html":{}}}],["projects/lib/src/types.ts:63",{"_index":535,"title":{},"body":{"classes/OAuthLogger.html":{}}}],["projects/lib/src/types.ts:64",{"_index":532,"title":{},"body":{"classes/OAuthLogger.html":{}}}],["projects/lib/src/types.ts:74",{"_index":599,"title":{},"body":{"classes/OAuthStorage.html":{}}}],["projects/lib/src/types.ts:75",{"_index":600,"title":{},"body":{"classes/OAuthStorage.html":{}}}],["projects/lib/src/types.ts:76",{"_index":601,"title":{},"body":{"classes/OAuthStorage.html":{}}}],["projects/lib/src/types.ts:84",{"_index":606,"title":{},"body":{"classes/ReceivedTokens.html":{}}}],["projects/lib/src/types.ts:85",{"_index":604,"title":{},"body":{"classes/ReceivedTokens.html":{}}}],["projects/lib/src/types.ts:86",{"_index":605,"title":{},"body":{"classes/ReceivedTokens.html":{}}}],["projects/lib/src/types.ts:87",{"_index":607,"title":{},"body":{"classes/ReceivedTokens.html":{}}}],["projects/lib/src/url",{"_index":609,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["promise",{"_index":44,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/CryptoHandler.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":{},"interfaces/ValidationParams.html":{}}}],["promise.reject('signature",{"_index":318,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["promise.reject(error",{"_index":295,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["promise.resolve",{"_index":317,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["promise.resolve(bytearrayasstring",{"_index":334,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["promise.resolve(null",{"_index":490,"title":{},"body":{"classes/NullValidationHandler.html":{}}}],["promise.resolve(true",{"_index":491,"title":{},"body":{"classes/NullValidationHandler.html":{}}}],["properties",{"_index":222,"title":{},"body":{"classes/JwksValidationHandler.html":{},"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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["property",{"_index":306,"title":{},"body":{"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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/custom-query-parameters.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-password-flow.html":{}}}],["proposes",{"_index":1139,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["protected",{"_index":23,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["provding",{"_index":1224,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["provide",{"_index":402,"title":{},"body":{"classes/LoginOptions.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/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":{}}}],["provided",{"_index":218,"title":{},"body":{"classes/JwksValidationHandler.html":{},"changelog.html":{},"license.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["provider",{"_index":691,"title":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}},"body":{"changelog.html":{},"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.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/original-config-api.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["provider's",{"_index":906,"title":{},"body":{"index.html":{}}}],["providers",{"_index":565,"title":{},"body":{"modules/OAuthModule.html":{},"overview.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":1238,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/using-password-flow.html":{}}}],["providing",{"_index":703,"title":{},"body":{"changelog.html":{},"additional-documentation/using-password-flow.html":{}}}],["prs",{"_index":827,"title":{},"body":{"index.html":{}}}],["ps256",{"_index":235,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["ps384",{"_index":236,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["ps512",{"_index":237,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["public",{"_index":84,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"injectables/UrlHelperService.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["publish",{"_index":1024,"title":{},"body":{"license.html":{}}}],["published",{"_index":1282,"title":{},"body":{"additional-documentation/events.html":{}}}],["publishes",{"_index":1265,"title":{},"body":{"additional-documentation/events.html":{}}}],["pull",{"_index":834,"title":{},"body":{"index.html":{}}}],["purpose",{"_index":1049,"title":{},"body":{"license.html":{},"additional-documentation/callback-after-login.html":{}}}],["put",{"_index":1221,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["pwa",{"_index":996,"title":{},"body":{"index.html":{}}}],["query",{"_index":1254,"title":{"additional-documentation/custom-query-parameters.html":{}},"body":{"additional-documentation/custom-query-parameters.html":{}}}],["querying",{"_index":862,"title":{},"body":{"index.html":{}}}],["querystring",{"_index":617,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["querystring.split",{"_index":630,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["question",{"_index":1341,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["questionmarkposition",{"_index":621,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["quite",{"_index":1431,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["r",{"_index":324,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["read",{"_index":388,"title":{},"body":{"classes/LoginOptions.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":{}}}],["reading",{"_index":1307,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["readme",{"_index":1082,"title":{},"body":{"additional-documentation/getting-started.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{}}}],["readonly",{"_index":522,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{}}}],["reason",{"_index":497,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{}}}],["receive",{"_index":1328,"title":{},"body":{"additional-documentation/adapt-id_token-validation.html":{},"additional-documentation/session-checks.html":{}}}],["received",{"_index":62,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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":{},"additional-documentation/refreshing-a-token.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":{}}}],["received_first_token",{"_index":500,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["receivedtokens",{"_index":395,"title":{"classes/ReceivedTokens.html":{}},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["receiving",{"_index":1418,"title":{},"body":{"additional-documentation/original-config-api.html":{}}}],["recommented",{"_index":1116,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{}}}],["redhat",{"_index":790,"title":{},"body":{"index.html":{}}}],["redhat's",{"_index":811,"title":{},"body":{"index.html":{}}}],["redirect",{"_index":914,"title":{},"body":{"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.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/original-config-api.html":{}}}],["redirected",{"_index":855,"title":{},"body":{"index.html":{}}}],["redirecting",{"_index":868,"title":{},"body":{"index.html":{}}}],["redirects",{"_index":965,"title":{},"body":{"index.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{}}}],["redirecturi",{"_index":915,"title":{},"body":{"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["redirecturis",{"_index":882,"title":{},"body":{"index.html":{}}}],["refresh",{"_index":699,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/events.html":{},"additional-documentation/using-password-flow.html":{}}}],["refresh.html",{"_index":888,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/session-checks.html":{}}}],["refresh.html\";please",{"_index":1167,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["refresh_token",{"_index":444,"title":{},"body":{"classes/LoginOptions.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":{}}}],["refresh_tokens",{"_index":1144,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["refreshed",{"_index":1295,"title":{},"body":{"additional-documentation/events.html":{}}}],["refreshes",{"_index":353,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["refreshing",{"_index":860,"title":{"additional-documentation/refreshing-a-token.html":{}},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/using-password-flow.html":{}}}],["regarding",{"_index":865,"title":{},"body":{"index.html":{},"additional-documentation/using-systemjs.html":{}}}],["register",{"_index":1340,"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":1100,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/original-config-api.html":{}}}],["registered",{"_index":579,"title":{},"body":{"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{},"index.html":{}}}],["registration_endpoint",{"_index":461,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["related",{"_index":1215,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/original-config-api.html":{}}}],["relations",{"_index":1427,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["relaxed",{"_index":722,"title":{},"body":{"changelog.html":{}}}],["relay",{"_index":720,"title":{},"body":{"changelog.html":{}}}],["release",{"_index":666,"title":{},"body":{"changelog.html":{},"index.html":{}}}],["removeitem",{"_index":597,"title":{},"body":{"classes/OAuthStorage.html":{}}}],["removeitem(key",{"_index":425,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["rendering",{"_index":1349,"title":{"additional-documentation/server-side-rendering.html":{}},"body":{"additional-documentation/server-side-rendering.html":{}}}],["represents",{"_index":428,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["req",{"_index":145,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["req.clone",{"_index":208,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["req.headers",{"_index":1244,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["req.headers.set('authorization",{"_index":207,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["req.url.tolowercase",{"_index":181,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["request",{"_index":921,"title":{},"body":{"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["request_object_signing_alg_values_supported",{"_index":474,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["requested",{"_index":1084,"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":835,"title":{},"body":{"index.html":{}}}],["require",{"_index":262,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["require','jsrsasign",{"_index":1410,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["require('jsrsasign",{"_index":264,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["requirehttps",{"_index":723,"title":{},"body":{"changelog.html":{}}}],["requirements",{"_index":1142,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["reset",{"_index":1069,"title":{},"body":{"overview.html":{}}}],["resolves",{"_index":1291,"title":{},"body":{"additional-documentation/events.html":{}}}],["resource",{"_index":161,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/using-password-flow.html":{}}}],["resources",{"_index":792,"title":{},"body":{"index.html":{}}}],["resourceserver",{"_index":572,"title":{},"body":{"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{},"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["resourceservererrorhandler",{"_index":578,"title":{},"body":{"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{}}}],["respect",{"_index":1145,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["respective",{"_index":972,"title":{},"body":{"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["respond",{"_index":1158,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["response",{"_index":435,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["response_modes_supported",{"_index":465,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["response_types_supported",{"_index":463,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["responsetype",{"_index":1097,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{}}}],["restriction",{"_index":1019,"title":{},"body":{"license.html":{}}}],["result",{"_index":115,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/CryptoHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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":{},"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/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/callback-after-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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["results",{"_index":117,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/CryptoHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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":{},"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/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/callback-after-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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["retrieved",{"_index":1284,"title":{},"body":{"additional-documentation/events.html":{}}}],["retry",{"_index":253,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["return",{"_index":104,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/JwksValidationHandler.html":{},"classes/NullValidationHandler.html":{},"modules/OAuthModule.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"injectables/UrlHelperService.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["returns",{"_index":43,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/CryptoHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/JwksValidationHandler.html":{},"classes/NullValidationHandler.html":{},"classes/OAuthLogger.html":{},"modules/OAuthModule.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"classes/OAuthStorage.html":{},"injectables/UrlHelperService.html":{},"classes/ValidationHandler.html":{},"classes/WebHttpUrlEncodingCodec.html":{},"miscellaneous/functions.html":{},"additional-documentation/using-password-flow.html":{}}}],["rights",{"_index":1022,"title":{},"body":{"license.html":{}}}],["risk",{"_index":487,"title":{},"body":{"classes/NullValidationHandler.html":{}}}],["root",{"_index":1309,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["route",{"_index":981,"title":{},"body":{"index.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["router",{"_index":802,"title":{},"body":{"index.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["routermodule.forroot(app_routes",{"_index":1311,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["routes",{"_index":1308,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["routing",{"_index":978,"title":{"additional-documentation/routing-with-the-hashstrategy.html":{}},"body":{"index.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["rs",{"_index":263,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["rs.keyutil.getkey(key",{"_index":310,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["rs.kjur.crypto.messagedigest",{"_index":330,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["rs.kjur.jws.jws.verifyjwt",{"_index":316,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["rs256",{"_index":230,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["rs384",{"_index":231,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["rs512",{"_index":232,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["rsa",{"_index":325,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["rule",{"_index":721,"title":{},"body":{"changelog.html":{}}}],["run",{"_index":854,"title":{},"body":{"index.html":{}}}],["runs",{"_index":874,"title":{},"body":{"index.html":{},"additional-documentation/using-password-flow.html":{}}}],["rxjs",{"_index":153,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{},"dependencies.html":{}}}],["rxjs/add/operator/catch",{"_index":1242,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["rxjs/observable",{"_index":1241,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["rxjs/operators",{"_index":160,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["safe",{"_index":1440,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["same",{"_index":1165,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["sample",{"_index":794,"title":{},"body":{"index.html":{},"additional-documentation/server-side-rendering.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["samples",{"_index":871,"title":{},"body":{"index.html":{}}}],["saved",{"_index":1285,"title":{},"body":{"additional-documentation/events.html":{}}}],["saveimporting",{"_index":890,"title":{},"body":{"index.html":{}}}],["scaffolding",{"_index":775,"title":{},"body":{"index.html":{}}}],["scenario",{"_index":1420,"title":{},"body":{"additional-documentation/original-config-api.html":{}}}],["scope",{"_index":445,"title":{},"body":{"classes/LoginOptions.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/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["scopes_supported",{"_index":462,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["seconds",{"_index":244,"title":{},"body":{"classes/JwksValidationHandler.html":{},"additional-documentation/refreshing-a-token.html":{}}}],["secret",{"_index":1103,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/using-password-flow.html":{}}}],["section",{"_index":897,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/using-password-flow.html":{}}}],["security",{"_index":364,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["see",{"_index":665,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/events.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["selector",{"_index":932,"title":{},"body":{"index.html":{}}}],["sell",{"_index":1028,"title":{},"body":{"license.html":{}}}],["send",{"_index":580,"title":{},"body":{"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{}}}],["sendaccesstoken",{"_index":186,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{},"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["sends",{"_index":905,"title":{},"body":{"index.html":{},"additional-documentation/session-checks.html":{}}}],["sense",{"_index":1438,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["separate",{"_index":1133,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["separatorindex",{"_index":627,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["server",{"_index":162,"title":{"additional-documentation/server-side-rendering.html":{}},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"classes/LoginOptions.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":{},"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/working-with-httpinterceptors.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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["server's",{"_index":869,"title":{},"body":{"index.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{}}}],["server.azurewebsites.net/identity",{"_index":913,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/original-config-api.html":{}}}],["server.azurewebsites.net/identity/.well",{"_index":1443,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["server.azurewebsites.net/identity/connect/authorize",{"_index":1362,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{}}}],["server.azurewebsites.net/identity/connect/endsession",{"_index":1370,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{}}}],["server.azurewebsites.net/identity/connect/token",{"_index":1447,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["server.azurewebsites.net/identity/connect/userinfo",{"_index":1451,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["server.code",{"_index":1101,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{}}}],["servers",{"_index":988,"title":{},"body":{"index.html":{}}}],["service",{"_index":168,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"modules/OAuthModule.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/events.html":{}}}],["service_documentation",{"_index":479,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["session",{"_index":681,"title":{"additional-documentation/session-checks.html":{}},"body":{"changelog.html":{},"additional-documentation/events.html":{},"additional-documentation/session-checks.html":{}}}],["session_changed",{"_index":516,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["session_error",{"_index":517,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{},"additional-documentation/events.html":{}}}],["session_terminated",{"_index":518,"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":1346,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["sessionchecksenabled",{"_index":1344,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["sessionstorage",{"_index":420,"title":{},"body":{"classes/LoginOptions.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/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["set",{"_index":217,"title":{},"body":{"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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":{},"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["set('authorization",{"_index":1245,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["setitem",{"_index":598,"title":{},"body":{"classes/OAuthStorage.html":{}}}],["setitem(key",{"_index":426,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["setstorage",{"_index":717,"title":{},"body":{"changelog.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{}}}],["setting",{"_index":963,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["setup",{"_index":977,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["setupautomaticsilentrefresh",{"_index":676,"title":{},"body":{"changelog.html":{}}}],["several",{"_index":1381,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["sha",{"_index":113,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["sha256(accesstoken",{"_index":91,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["shall",{"_index":1037,"title":{},"body":{"license.html":{}}}],["share",{"_index":1379,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["sharing",{"_index":1404,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["ship",{"_index":1428,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["short",{"_index":1269,"title":{},"body":{"additional-documentation/events.html":{},"additional-documentation/using-password-flow.html":{}}}],["showdebuginformation",{"_index":1115,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{}}}],["shown",{"_index":1124,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{}}}],["shows",{"_index":898,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/server-side-rendering.html":{},"additional-documentation/using-password-flow.html":{}}}],["side",{"_index":418,"title":{"additional-documentation/server-side-rendering.html":{}},"body":{"classes/LoginOptions.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":{}}}],["sig",{"_index":285,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["sign",{"_index":679,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{}}}],["signature",{"_index":67,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"changelog.html":{},"index.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["signs",{"_index":1332,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["silent",{"_index":352,"title":{},"body":{"classes/LoginOptions.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/events.html":{},"additional-documentation/session-checks.html":{}}}],["silent_refresh_error",{"_index":511,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["silent_refresh_timeout",{"_index":513,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{},"additional-documentation/events.html":{}}}],["silently_refreshed",{"_index":512,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{},"additional-documentation/events.html":{}}}],["silentrefresh",{"_index":1181,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["silentrefreshredirecturi",{"_index":1162,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/session-checks.html":{}}}],["silentrefreshtimeout",{"_index":1192,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["similar",{"_index":1432,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["simple",{"_index":414,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["single",{"_index":678,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{}}}],["site",{"_index":999,"title":{},"body":{"index.html":{}}}],["size",{"_index":785,"title":{},"body":{"index.html":{}}}],["skip",{"_index":486,"title":{},"body":{"classes/NullValidationHandler.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/using-password-flow.html":{}}}],["skipping",{"_index":958,"title":{},"body":{"index.html":{}}}],["skips",{"_index":1325,"title":{},"body":{"additional-documentation/adapt-id_token-validation.html":{}}}],["smaller",{"_index":817,"title":{},"body":{"index.html":{}}}],["snippet",{"_index":951,"title":{},"body":{"index.html":{},"additional-documentation/events.html":{}}}],["software",{"_index":1014,"title":{},"body":{"license.html":{}}}],["solution",{"_index":1096,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["somevalue",{"_index":1263,"title":{},"body":{"additional-documentation/custom-query-parameters.html":{}}}],["source",{"_index":4,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/CryptoHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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":{},"index.html":{}}}],["sources",{"_index":793,"title":{},"body":{"index.html":{}}}],["spa",{"_index":879,"title":{},"body":{"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["spa's",{"_index":918,"title":{},"body":{"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["spas",{"_index":1104,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{}}}],["spec",{"_index":1288,"title":{},"body":{"additional-documentation/events.html":{},"additional-documentation/session-checks.html":{}}}],["specific",{"_index":926,"title":{},"body":{"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/original-config-api.html":{}}}],["specification",{"_index":1389,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["specifies",{"_index":1140,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["specify",{"_index":299,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["specs",{"_index":686,"title":{},"body":{"changelog.html":{},"index.html":{}}}],["src",{"_index":843,"title":{},"body":{"index.html":{}}}],["standard",{"_index":1137,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/using-password-flow.html":{}}}],["start",{"_index":1394,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["started",{"_index":660,"title":{"changelog.html":{},"index.html":{},"license.html":{},"additional-documentation/getting-started.html":{}},"body":{"additional-documentation/getting-started.html":{}}}],["starting",{"_index":1258,"title":{},"body":{"additional-documentation/custom-query-parameters.html":{}}}],["starts",{"_index":727,"title":{},"body":{"changelog.html":{},"index.html":{}}}],["startup",{"_index":1411,"title":{},"body":{"additional-documentation/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["state",{"_index":359,"title":{"additional-documentation/preserving-state-(like-the-requested-url).html":{}},"body":{"classes/LoginOptions.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/events.html":{}}}],["static",{"_index":541,"title":{},"body":{"modules/OAuthModule.html":{}}}],["status",{"_index":682,"title":{},"body":{"changelog.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["steyer",{"_index":1006,"title":{},"body":{"license.html":{}}}],["still",{"_index":672,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["storage",{"_index":415,"title":{},"body":{"classes/LoginOptions.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":{}}}],["storagefactory",{"_index":1471,"title":{},"body":{"additional-documentation/configure-custom-oauthstorage.html":{}}}],["stored",{"_index":1292,"title":{},"body":{"additional-documentation/events.html":{}}}],["storing",{"_index":416,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["str",{"_index":766,"title":{},"body":{"miscellaneous/functions.html":{}}}],["strategy",{"_index":1129,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["stream",{"_index":1266,"title":{},"body":{"additional-documentation/events.html":{}}}],["streamline",{"_index":674,"title":{},"body":{"changelog.html":{}}}],["strict",{"_index":1419,"title":{},"body":{"additional-documentation/original-config-api.html":{}}}],["strictdiscoverydocumentvalidation",{"_index":729,"title":{},"body":{"changelog.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["string",{"_index":28,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/CryptoHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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/working-with-httpinterceptors.html":{},"additional-documentation/events.html":{}}}],["strong",{"_index":1425,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["structured",{"_index":697,"title":{},"body":{"changelog.html":{}}}],["sub",{"_index":449,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["subject",{"_index":1033,"title":{},"body":{"license.html":{}}}],["subject_types_supported",{"_index":467,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["sublicense",{"_index":1026,"title":{},"body":{"license.html":{}}}],["substantial",{"_index":1038,"title":{},"body":{"license.html":{}}}],["succeeded",{"_index":1086,"title":{},"body":{"additional-documentation/preserving-state-(like-the-requested-url).html":{}}}],["successful",{"_index":1248,"title":{},"body":{"additional-documentation/callback-after-login.html":{}}}],["successfully",{"_index":381,"title":{},"body":{"classes/LoginOptions.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":1109,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/using-password-flow.html":{}}}],["suitable",{"_index":902,"title":{},"body":{"index.html":{}}}],["suited",{"_index":1423,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["summary.json",{"_index":847,"title":{},"body":{"index.html":{}}}],["super(type",{"_index":523,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{}}}],["support",{"_index":770,"title":{},"body":{"index.html":{}}}],["supported",{"_index":112,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"changelog.html":{},"index.html":{}}}],["supports",{"_index":1092,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/session-checks.html":{}}}],["sure",{"_index":845,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{}}}],["switch",{"_index":321,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["switching",{"_index":970,"title":{},"body":{"index.html":{}}}],["system.config",{"_index":1400,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["systemjs",{"_index":1395,"title":{"additional-documentation/using-systemjs.html":{}},"body":{"additional-documentation/using-systemjs.html":{}}}],["take",{"_index":157,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/refreshing-a-token.html":{}}}],["take(1",{"_index":203,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["takes",{"_index":1212,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/events.html":{}}}],["task",{"_index":969,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{}}}],["tasks",{"_index":675,"title":{},"body":{"changelog.html":{},"additional-documentation/events.html":{}}}],["tells",{"_index":961,"title":{},"body":{"index.html":{}}}],["template",{"_index":953,"title":{},"body":{"index.html":{}}}],["templateurl",{"_index":934,"title":{},"body":{"index.html":{}}}],["tenant",{"_index":1260,"title":{},"body":{"additional-documentation/custom-query-parameters.html":{}}}],["terminated",{"_index":1348,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["tested",{"_index":799,"title":{},"body":{"index.html":{}}}],["testen",{"_index":957,"title":{},"body":{"index.html":{}}}],["testing",{"_index":726,"title":{},"body":{"changelog.html":{},"index.html":{}}}],["text",{"_index":751,"title":{},"body":{"dependencies.html":{}}}],["thanks",{"_index":1396,"title":{},"body":{"additional-documentation/using-systemjs.html":{}}}],["that's",{"_index":1439,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["then(_",{"_index":304,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["then(info",{"_index":1182,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["then(loadedkeys",{"_index":302,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["third",{"_index":1208,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["this.alg2kty(alg",{"_index":287,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["this.allowedalgorithms",{"_index":312,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["this.authservice.events.subscribe(event",{"_index":1276,"title":{},"body":{"additional-documentation/events.html":{}}}],["this.authstorage.getitem('access_token",{"_index":1243,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["this.calchash(params.accesstoken",{"_index":90,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["this.checkurl(url",{"_index":185,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["this.configure",{"_index":937,"title":{},"body":{"index.html":{}}}],["this.errorhandler.handleerror(err",{"_index":190,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["this.graceperiodinsec",{"_index":314,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["this.inferhashalgorithm(params.idtokenheader",{"_index":87,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["this.moduleconfig",{"_index":182,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["this.moduleconfig.resourceserver",{"_index":184,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["this.moduleconfig.resourceserver.allowedurls",{"_index":177,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["this.moduleconfig.resourceserver.allowedurls.find(u",{"_index":178,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["this.moduleconfig.resourceserver.customurlvalidation",{"_index":175,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["this.moduleconfig.resourceserver.customurlvalidation(url",{"_index":176,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["this.moduleconfig.resourceserver.sendaccesstoken",{"_index":187,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["this.oauthservice.clientid",{"_index":1364,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["this.oauthservice.configure(authcodeflowconfig",{"_index":1128,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{}}}],["this.oauthservice.configure(authconfig",{"_index":938,"title":{},"body":{"index.html":{}}}],["this.oauthservice.customqueryparams",{"_index":1259,"title":{},"body":{"additional-documentation/custom-query-parameters.html":{}}}],["this.oauthservice.dummyclientsecret",{"_index":1441,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["this.oauthservice.events.pipe",{"_index":195,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["this.oauthservice.events.pipe(filter(e",{"_index":1345,"title":{},"body":{"additional-documentation/session-checks.html":{}}}],["this.oauthservice.events.subscribe(e",{"_index":1270,"title":{},"body":{"additional-documentation/events.html":{}}}],["this.oauthservice.fetchtokenusingpasswordflow('max",{"_index":1455,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["this.oauthservice.fetchtokenusingpasswordflowandloaduserprofile('max",{"_index":1460,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["this.oauthservice.getaccesstoken",{"_index":201,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["this.oauthservice.getidentityclaims",{"_index":949,"title":{},"body":{"index.html":{},"additional-documentation/using-password-flow.html":{}}}],["this.oauthservice.initcodeflow();there",{"_index":1119,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{}}}],["this.oauthservice.initimplicitflow('http://www.myurl.com/x/y/z');after",{"_index":1085,"title":{},"body":{"additional-documentation/preserving-state-(like-the-requested-url).html":{}}}],["this.oauthservice.initloginflow",{"_index":946,"title":{},"body":{"index.html":{}}}],["this.oauthservice.initloginflow();also",{"_index":1123,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{}}}],["this.oauthservice.issuer",{"_index":1413,"title":{},"body":{"additional-documentation/original-config-api.html":{}}}],["this.oauthservice.loaddiscoverydocument().then",{"_index":1415,"title":{},"body":{"additional-documentation/original-config-api.html":{}}}],["this.oauthservice.loaddiscoverydocument(url).then",{"_index":1445,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["this.oauthservice.loaddiscoverydocumentandlogin",{"_index":962,"title":{},"body":{"index.html":{}}}],["this.oauthservice.loaddiscoverydocumentandtrylogin",{"_index":940,"title":{},"body":{"index.html":{},"additional-documentation/code-flow-+-pcke.html":{}}}],["this.oauthservice.loaduserprofile",{"_index":1458,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["this.oauthservice.loginurl",{"_index":1361,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{}}}],["this.oauthservice.logout",{"_index":948,"title":{},"body":{"index.html":{}}}],["this.oauthservice.logouturl",{"_index":1369,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{}}}],["this.oauthservice.redirecturi",{"_index":1363,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{}}}],["this.oauthservice.refresh();refreshing",{"_index":1148,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["this.oauthservice.refreshtoken().then",{"_index":1464,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["this.oauthservice.scope",{"_index":1365,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["this.oauthservice.setstorage(sessionstorage",{"_index":1367,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{}}}],["this.oauthservice.setupautomaticsilentrefresh();by",{"_index":1195,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["this.oauthservice.silentrefreshredirecturi",{"_index":1166,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["this.oauthservice.tokenendpoint",{"_index":1446,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["this.oauthservice.tokenvalidationhandler",{"_index":939,"title":{},"body":{"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["this.oauthservice.trylogin",{"_index":1087,"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":1316,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["this.oauthservice.userinfoendpoint",{"_index":1450,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["this.parsequerystring(hash",{"_index":624,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["this.router.navigate",{"_index":1317,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["this.tobytearrayasstring(result",{"_index":333,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["this.validatesignature(params",{"_index":305,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["those",{"_index":1146,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["three",{"_index":923,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/original-config-api.html":{}}}],["through",{"_index":404,"title":{},"body":{"classes/LoginOptions.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/working-with-httpinterceptors.html":{}}}],["throw",{"_index":109,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["throwerror",{"_index":590,"title":{},"body":{"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{}}}],["throwerror(err",{"_index":591,"title":{},"body":{"classes/OAuthNoopResourceServerErrorHandler.html":{},"classes/OAuthResourceServerErrorHandler.html":{}}}],["time",{"_index":242,"title":{},"body":{"classes/JwksValidationHandler.html":{},"index.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["timeout",{"_index":159,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/refreshing-a-token.html":{}}}],["timeout(wait_for_token_received",{"_index":199,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{}}}],["timeoutfactor",{"_index":709,"title":{},"body":{"changelog.html":{},"additional-documentation/refreshing-a-token.html":{}}}],["timer",{"_index":1293,"title":{},"body":{"additional-documentation/events.html":{}}}],["timespan",{"_index":1191,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["timestamp",{"_index":245,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["tobytearrayasstring",{"_index":225,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["tobytearrayasstring(hexstring",{"_index":249,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["together",{"_index":705,"title":{},"body":{"changelog.html":{},"additional-documentation/server-side-rendering.html":{}}}],["token",{"_index":193,"title":{"additional-documentation/refreshing-a-token.html":{}},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"classes/LoginOptions.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/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/working-with-httpinterceptors.html":{},"additional-documentation/events.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["token's",{"_index":1198,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["token(s",{"_index":389,"title":{},"body":{"classes/LoginOptions.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_endpoint",{"_index":454,"title":{},"body":{"classes/LoginOptions.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":455,"title":{},"body":{"classes/LoginOptions.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":456,"title":{},"body":{"classes/LoginOptions.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":507,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["token_expires",{"_index":515,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"changelog.html":{},"miscellaneous/typealiases.html":{}}}],["token_received",{"_index":198,"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_refresh_error",{"_index":510,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["token_refreshed",{"_index":509,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["token_type",{"_index":442,"title":{},"body":{"classes/LoginOptions.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":514,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["tokenhash",{"_index":88,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["tokenhash.length",{"_index":96,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["tokenhash.substr(0",{"_index":95,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["tokenresponse",{"_index":441,"title":{"interfaces/TokenResponse.html":{}},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["tokens",{"_index":83,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/LoginOptions.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/events.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/session-checks.html":{}}}],["tokenvalidationhandler",{"_index":394,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["tokenvalidator",{"_index":1320,"title":{},"body":{"additional-documentation/adapt-id_token-validation.html":{}}}],["tort",{"_index":1060,"title":{},"body":{"license.html":{}}}],["transmit",{"_index":1435,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["transmitted",{"_index":1257,"title":{},"body":{"additional-documentation/custom-query-parameters.html":{}}}],["transmitting",{"_index":1213,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["tries",{"_index":1371,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{}}}],["triggers",{"_index":1207,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{}}}],["true",{"_index":93,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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/code-flow-+-pcke.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":{}}}],["trust",{"_index":1426,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["try",{"_index":813,"title":{},"body":{"index.html":{},"additional-documentation/callback-after-login.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["trylogin",{"_index":340,"title":{},"body":{"classes/LoginOptions.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":{}}}],["ts",{"_index":1366,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{}}}],["tsickle",{"_index":754,"title":{},"body":{"dependencies.html":{}}}],["turn",{"_index":1393,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/original-config-api.html":{}}}],["tutorial",{"_index":987,"title":{},"body":{"index.html":{}}}],["tutorials",{"_index":986,"title":{},"body":{"index.html":{}}}],["two",{"_index":1322,"title":{},"body":{"additional-documentation/adapt-id_token-validation.html":{}}}],["type",{"_index":40,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/CryptoHandler.html":{},"interceptors/DefaultOAuthInterceptor.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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":{},"miscellaneous/typealiases.html":{},"miscellaneous/variables.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{}}}],["typealiases",{"_index":1071,"title":{"miscellaneous/typealiases.html":{}},"body":{}}],["types",{"_index":167,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"modules/OAuthModule.html":{}}}],["ui_locales_supported",{"_index":480,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["until",{"_index":777,"title":{},"body":{"index.html":{}}}],["up",{"_index":929,"title":{},"body":{"index.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/session-checks.html":{}}}],["update",{"_index":846,"title":{},"body":{"index.html":{}}}],["uri",{"_index":1161,"title":{},"body":{"additional-documentation/refreshing-a-token.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["url",{"_index":180,"title":{"additional-documentation/preserving-state-(like-the-requested-url).html":{}},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"classes/LoginOptions.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/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["url.startswith(u",{"_index":179,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["urlhelperservice",{"_index":553,"title":{"injectables/UrlHelperService.html":{}},"body":{"modules/OAuthModule.html":{},"injectables/UrlHelperService.html":{}}}],["urls",{"_index":575,"title":{},"body":{"classes/OAuthModuleConfig.html":{},"classes/OAuthResourceServerConfig.html":{},"index.html":{},"additional-documentation/working-with-httpinterceptors.html":{}}}],["use",{"_index":18,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/LoginOptions.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/refreshing-a-token.html":{},"additional-documentation/working-with-httpinterceptors.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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["usecase",{"_index":925,"title":{},"body":{"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{},"additional-documentation/original-config-api.html":{}}}],["useclass",{"_index":567,"title":{},"body":{"modules/OAuthModule.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["used",{"_index":349,"title":{},"body":{"classes/LoginOptions.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":{},"changelog.html":{},"index.html":{},"additional-documentation/session-checks.html":{},"additional-documentation/server-side-rendering.html":{},"additional-documentation/using-password-flow.html":{}}}],["usefactory",{"_index":566,"title":{},"body":{"modules/OAuthModule.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["usehash",{"_index":1312,"title":{},"body":{"additional-documentation/routing-with-the-hashstrategy.html":{}}}],["user",{"_index":446,"title":{},"body":{"classes/LoginOptions.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/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["user's",{"_index":1453,"title":{},"body":{"additional-documentation/using-password-flow.html":{}}}],["user_profile_load_error",{"_index":506,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{}}}],["user_profile_loaded",{"_index":505,"title":{},"body":{"classes/OAuthErrorEvent.html":{},"classes/OAuthEvent.html":{},"classes/OAuthInfoEvent.html":{},"classes/OAuthSuccessEvent.html":{},"miscellaneous/typealiases.html":{},"additional-documentation/events.html":{}}}],["userinfo",{"_index":448,"title":{"interfaces/UserInfo.html":{}},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{},"index.html":{}}}],["userinfo_encryption_alg_values_supported",{"_index":469,"title":{},"body":{"classes/LoginOptions.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":470,"title":{},"body":{"classes/LoginOptions.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":457,"title":{},"body":{"classes/LoginOptions.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":468,"title":{},"body":{"classes/LoginOptions.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":876,"title":{},"body":{"index.html":{}}}],["username/passwort",{"_index":955,"title":{},"body":{"index.html":{}}}],["users",{"_index":1355,"title":{},"body":{"additional-documentation/server-side-rendering.html":{}}}],["uses",{"_index":398,"title":{},"body":{"classes/LoginOptions.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/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["usevalue",{"_index":568,"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-password-flow.html":{}},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{},"changelog.html":{},"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/events.html":{},"additional-documentation/routing-with-the-hashstrategy.html":{},"additional-documentation/using-systemjs.html":{},"additional-documentation/using-password-flow.html":{},"additional-documentation/configure-custom-oauthstorage.html":{}}}],["v",{"_index":650,"title":{},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["valid",{"_index":319,"title":{},"body":{"classes/JwksValidationHandler.html":{},"index.html":{}}}],["validate",{"_index":82,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/LoginOptions.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/JwksValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["validateathash(validationparams",{"_index":85,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/NullValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["validated",{"_index":382,"title":{},"body":{"classes/LoginOptions.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/JwksValidationHandler.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(params",{"_index":252,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["validatesignature(validationparams",{"_index":65,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/NullValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["validating",{"_index":484,"title":{},"body":{"classes/NullValidationHandler.html":{},"changelog.html":{},"index.html":{}}}],["validation",{"_index":211,"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":{},"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/crypto",{"_index":119,"title":{},"body":{"classes/CryptoHandler.html":{},"modules/OAuthModule.html":{}}}],["validation/jwks",{"_index":210,"title":{},"body":{"classes/JwksValidationHandler.html":{},"modules/OAuthModule.html":{}}}],["validation/null",{"_index":482,"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":{},"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":{},"changelog.html":{},"additional-documentation/adapt-id_token-validation.html":{}}}],["validationhandlerclass",{"_index":544,"title":{},"body":{"modules/OAuthModule.html":{}}}],["validationoptions",{"_index":311,"title":{},"body":{"classes/JwksValidationHandler.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":867,"title":{},"body":{"index.html":{}}}],["value",{"_index":35,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/JwksValidationHandler.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/original-config-api.html":{}}}],["valuetohash",{"_index":42,"title":{},"body":{"classes/AbstractValidationHandler.html":{},"classes/CryptoHandler.html":{},"classes/JwksValidationHandler.html":{},"classes/ValidationHandler.html":{},"interfaces/ValidationParams.html":{}}}],["var",{"_index":261,"title":{},"body":{"classes/JwksValidationHandler.html":{}}}],["variables",{"_index":1074,"title":{"miscellaneous/variables.html":{}},"body":{"miscellaneous/variables.html":{}}}],["various",{"_index":1387,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["versatility",{"_index":975,"title":{},"body":{"index.html":{}}}],["version",{"_index":668,"title":{},"body":{"changelog.html":{},"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/events.html":{},"additional-documentation/session-checks.html":{}}}],["via",{"_index":694,"title":{},"body":{"changelog.html":{},"index.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":1108,"title":{},"body":{"additional-documentation/code-flow-+-pcke.html":{}}}],["void",{"_index":396,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["voucher",{"_index":928,"title":{},"body":{"index.html":{},"additional-documentation/refreshing-a-token.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/original-config-api.html":{},"additional-documentation/using-password-flow.html":{}}}],["wait_for_token_received",{"_index":170,"title":{},"body":{"interceptors/DefaultOAuthInterceptor.html":{},"miscellaneous/variables.html":{}}}],["want",{"_index":385,"title":{},"body":{"classes/LoginOptions.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":{}}}],["warn",{"_index":529,"title":{},"body":{"classes/OAuthLogger.html":{}}}],["warn(message",{"_index":412,"title":{},"body":{"classes/LoginOptions.html":{},"classes/OAuthLogger.html":{},"classes/OAuthStorage.html":{},"interfaces/OidcDiscoveryDoc.html":{},"interfaces/ParsedIdToken.html":{},"classes/ReceivedTokens.html":{},"interfaces/TokenResponse.html":{},"interfaces/UserInfo.html":{}}}],["warning",{"_index":1329,"title":{},"body":{"additional-documentation/adapt-id_token-validation.html":{}}}],["warranties",{"_index":1045,"title":{},"body":{"license.html":{}}}],["warranty",{"_index":1040,"title":{},"body":{"license.html":{}}}],["way",{"_index":1236,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["we've",{"_index":808,"title":{},"body":{"index.html":{}}}],["web",{"_index":215,"title":{},"body":{"classes/JwksValidationHandler.html":{},"index.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{}}}],["webcomponents/custom",{"_index":741,"title":{},"body":{"dependencies.html":{}}}],["webhttpurlencodingcodec",{"_index":635,"title":{"classes/WebHttpUrlEncodingCodec.html":{}},"body":{"classes/WebHttpUrlEncodingCodec.html":{}}}],["webpack",{"_index":807,"title":{},"body":{"index.html":{}}}],["well",{"_index":403,"title":{},"body":{"classes/LoginOptions.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/callback-after-login.html":{}}}],["when/some",{"_index":861,"title":{},"body":{"index.html":{}}}],["whenever",{"_index":1283,"title":{},"body":{"additional-documentation/events.html":{}}}],["whether",{"_index":1057,"title":{},"body":{"license.html":{}}}],["white",{"_index":1222,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["window.location.hash",{"_index":618,"title":{},"body":{"injectables/UrlHelperService.html":{}}}],["window.location.origin",{"_index":916,"title":{},"body":{"index.html":{},"additional-documentation/code-flow-+-pcke.html":{},"additional-documentation/refreshing-a-token.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/original-config-api.html":{}}}],["within",{"_index":1373,"title":{},"body":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/original-config-api.html":{}}}],["without",{"_index":1018,"title":{"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{}},"body":{"license.html":{},"additional-documentation/refreshing-a-token.html":{},"additional-documentation/configure-library-for-implicit-flow-without-discovery-document.html":{},"additional-documentation/using-password-flow.html":{}}}],["working",{"_index":1209,"title":{"additional-documentation/working-with-httpinterceptors.html":{}},"body":{}}],["works",{"_index":1467,"title":{},"body":{"additional-documentation/configure-custom-oauthstorage.html":{}}}],["workshops",{"_index":1000,"title":{},"body":{"index.html":{}}}],["write",{"_index":1230,"title":{},"body":{"additional-documentation/working-with-httpinterceptors.html":{}}}],["ws02",{"_index":1384,"title":{},"body":{"additional-documentation/using-an-id-provider-that-fails-discovery-document-validation.html":{}}}],["yes",{"_index":531,"title":{},"body":{"classes/OAuthLogger.html":{},"injectables/UrlHelperService.html":{}}}],["you've",{"_index":942,"title":{},"body":{"index.html":{}}}],["yourself",{"_index":1417,"title":{},"body":{"additional-documentation/original-config-api.html":{}}}],["zone.js",{"_index":756,"title":{},"body":{"dependencies.html":{}}}],["zoom",{"_index":1068,"title":{},"body":{"overview.html":{}}}],["zum",{"_index":956,"title":{},"body":{"index.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 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 \n Protected\n Abstract\n calcHash\n \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:86\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 \n Protected\n inferHashAlgorithm\n \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:69\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 \n Async\n validateAtHash\n \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:44\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 \n Abstract\n validateSignature\n \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:39\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(validationParams: ValidationParams): 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(valueToHash: string, algorithm: string): 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/CryptoHandler.html":{"url":"classes/CryptoHandler.html","title":"class - CryptoHandler","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n CryptoHandler\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/crypto-handler.ts\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 \n Abstract\n calcHash\n \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/crypto-handler.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 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 export abstract class CryptoHandler {\n\n abstract calcHash(valueToHash: string, algorithm: string): 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"},"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 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(authStorage: OAuthStorage, oAuthService: OAuthService, errorHandler: OAuthResourceServerErrorHandler, moduleConfig: OAuthModuleConfig)\n \n \n \n \n Defined in projects/lib/src/interceptors/default-oauth.interceptor.ts:19\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n authStorage\n \n \n OAuthStorage\n \n \n \n No\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 \n Public\n intercept\n \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:40\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 { catchError, filter, map, take, mergeMap, timeout } from 'rxjs/operators';\nimport { OAuthResourceServerErrorHandler } from './resource-server-error-handler';\nimport { OAuthModuleConfig } from '../oauth-module.config';\nimport { OAuthStorage } from '../types';\nimport { OAuthService } from '../oauth-service';\n\nconst WAIT_FOR_TOKEN_RECEIVED = 1000;\n\n@Injectable()\nexport class DefaultOAuthInterceptor implements HttpInterceptor {\n\n constructor(\n private authStorage: OAuthStorage,\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 => url.startsWith(u));\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\n if (!this.moduleConfig) {\n return next.handle(req);\n }\n if (!this.moduleConfig.resourceServer) {\n return next.handle(req);\n }\n if (this.moduleConfig.resourceServer.allowedUrls && !this.checkUrl(url)) {\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(\n filter(token => token ? true : false),\n ),\n this.oAuthService.events.pipe(\n filter(e => e.type === 'token_received'),\n timeout(WAIT_FOR_TOKEN_RECEIVED),\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/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 Description\n \n \n Validates the signature of an id_token against one\nof the keys of an JSON Web Key Set (jwks).\nThis jwks can be provided by the discovery document.\n\n \n\n \n Extends\n \n \n AbstractValidationHandler\n \n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n allowedAlgorithms\n \n \n gracePeriodInSec\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n calcHash\n \n \n toByteArrayAsString\n \n \n validateSignature\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 Properties\n \n \n \n \n \n \n \n \n allowedAlgorithms\n \n \n \n \n \n \n Type : string[]\n\n \n \n \n \n Default value : [\n 'HS256',\n 'HS384',\n 'HS512',\n 'RS256',\n 'RS384',\n 'RS512',\n 'ES256',\n 'ES384',\n 'PS256',\n 'PS384',\n 'PS512'\n ]\n \n \n \n \n Defined in projects/lib/src/token-validation/jwks-validation-handler.ts:21\n \n \n\n \n \n Allowed algorithms\n\n \n \n\n \n \n \n \n \n \n \n \n \n gracePeriodInSec\n \n \n \n \n \n \n Type : number\n\n \n \n \n \n Default value : 600\n \n \n \n \n Defined in projects/lib/src/token-validation/jwks-validation-handler.ts:39\n \n \n\n \n \n Time period in seconds the timestamp in the signature can\ndiffer from the current time.\n\n \n \n\n \n \n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n \n calcHash\n \n \n \n \n \n \n \ncalcHash(valueToHash: string, algorithm: string)\n \n \n\n\n \n \n Defined in projects/lib/src/token-validation/jwks-validation-handler.ts:141\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 toByteArrayAsString\n \n \n \n \n \n \n \ntoByteArrayAsString(hexString: string)\n \n \n\n\n \n \n Defined in projects/lib/src/token-validation/jwks-validation-handler.ts:148\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n hexString\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 validateSignature\n \n \n \n \n \n \n \nvalidateSignature(params: ValidationParams, retry)\n \n \n\n\n \n \n Defined in projects/lib/src/token-validation/jwks-validation-handler.ts:41\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 params\n \n ValidationParams\n \n\n \n No\n \n\n \n \n\n \n \n retry\n \n \n\n \n No\n \n\n \n false\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 Protected\n Abstract\n calcHash\n \n \n \n \n \n \n \n \n calcHash(valueToHash: string, algorithm: string)\n \n \n\n\n \n \n Inherited from AbstractValidationHandler\n\n \n \n \n \n Defined in AbstractValidationHandler:86\n\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 \n Protected\n inferHashAlgorithm\n \n \n \n \n \n \n \n \n inferHashAlgorithm(jwtHeader: object)\n \n \n\n\n \n \n Inherited from AbstractValidationHandler\n\n \n \n \n \n Defined in AbstractValidationHandler:69\n\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 \n Async\n validateAtHash\n \n \n \n \n \n \n \n \n validateAtHash(params: ValidationParams)\n \n \n\n\n \n \n Inherited from AbstractValidationHandler\n\n \n \n \n \n Defined in AbstractValidationHandler:44\n\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 \n Abstract\n validateSignature\n \n \n \n \n \n \n \n \n validateSignature(validationParams: ValidationParams)\n \n \n\n\n \n \n Inherited from AbstractValidationHandler\n\n \n \n \n \n Defined in AbstractValidationHandler:39\n\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 {\n AbstractValidationHandler,\n ValidationParams\n} from './validation-handler';\n\n// declare var require: any;\n// let rs = require('jsrsasign');\n\nimport * as rs from 'jsrsasign';\n\n/**\n * Validates the signature of an id_token against one\n * of the keys of an JSON Web Key Set (jwks).\n *\n * This jwks can be provided by the discovery document.\n */\nexport class JwksValidationHandler extends AbstractValidationHandler {\n /**\n * Allowed algorithms\n */\n allowedAlgorithms: string[] = [\n 'HS256',\n 'HS384',\n 'HS512',\n 'RS256',\n 'RS384',\n 'RS512',\n 'ES256',\n 'ES384',\n 'PS256',\n 'PS384',\n 'PS512'\n ];\n\n /**\n * Time period in seconds the timestamp in the signature can\n * differ from the current time.\n */\n gracePeriodInSec = 600;\n\n validateSignature(params: ValidationParams, retry = false): Promise {\n if (!params.idToken) throw new Error('Parameter idToken expected!');\n if (!params.idTokenHeader)\n throw new Error('Parameter idTokenHandler expected.');\n if (!params.jwks) throw new Error('Parameter jwks expected!');\n\n if (\n !params.jwks['keys'] ||\n !Array.isArray(params.jwks['keys']) ||\n params.jwks['keys'].length === 0\n ) {\n throw new Error('Array keys in jwks missing!');\n }\n\n // console.debug('validateSignature: retry', retry);\n\n let kid: string = params.idTokenHeader['kid'];\n let keys: object[] = params.jwks['keys'];\n let key: object;\n\n let alg = params.idTokenHeader['alg'];\n\n if (kid) {\n key = keys.find(k => k['kid'] === kid /* && k['use'] === 'sig' */);\n } else {\n let kty = this.alg2kty(alg);\n let matchingKeys = keys.filter(\n k => k['kty'] === kty && k['use'] === 'sig'\n );\n\n /*\n if (matchingKeys.length == 0) {\n let error = 'No matching key found.';\n console.error(error);\n return Promise.reject(error);\n }*/\n if (matchingKeys.length > 1) {\n let error =\n 'More than one matching key found. Please specify a kid in the id_token header.';\n console.error(error);\n return Promise.reject(error);\n } else if (matchingKeys.length === 1) {\n key = matchingKeys[0];\n }\n }\n\n if (!key && !retry && params.loadKeys) {\n return params\n .loadKeys()\n .then(loadedKeys => (params.jwks = loadedKeys))\n .then(_ => this.validateSignature(params, true));\n }\n\n if (!key && retry && !kid) {\n let error = 'No matching key found.';\n console.error(error);\n return Promise.reject(error);\n }\n\n if (!key && retry && kid) {\n let error =\n 'expected key not found in property jwks. ' +\n 'This property is most likely loaded with the ' +\n 'discovery document. ' +\n 'Expected key id (kid): ' +\n kid;\n\n console.error(error);\n return Promise.reject(error);\n }\n\n let keyObj = rs.KEYUTIL.getKey(key);\n let validationOptions = {\n alg: this.allowedAlgorithms,\n gracePeriod: this.gracePeriodInSec\n };\n let isValid = rs.KJUR.jws.JWS.verifyJWT(\n params.idToken,\n keyObj,\n validationOptions\n );\n\n if (isValid) {\n return Promise.resolve();\n } else {\n return Promise.reject('Signature not valid');\n }\n }\n\n private alg2kty(alg: string) {\n switch (alg.charAt(0)) {\n case 'R':\n return 'RSA';\n case 'E':\n return 'EC';\n default:\n throw new Error('Cannot infer kty from alg: ' + alg);\n }\n }\n\n calcHash(valueToHash: string, algorithm: string): Promise {\n let hashAlg = new rs.KJUR.crypto.MessageDigest({ alg: algorithm });\n let result = hashAlg.digestString(valueToHash);\n let byteArrayAsString = this.toByteArrayAsString(result);\n return Promise.resolve(byteArrayAsString);\n }\n\n toByteArrayAsString(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/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 Description\n \n \n Additional options that can be passt 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 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 \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:33\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.\n\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:43\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 \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:26\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 \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:11\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 \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:50\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.\n\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:18\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 export 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.\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 * 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.\n */\n preventClearHashAfterLogin? = false;\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/**\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}\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 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 \n validateAtHash\n \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 \n validateSignature\n \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 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:41\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 | 'received_first_token'\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 | 'logout';\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 Constructor\n \n \n \n \nconstructor(type: EventType)\n \n \n \n \n Defined in projects/lib/src/events.ts:25\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 | 'received_first_token'\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 | 'logout';\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 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:35\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 | 'received_first_token'\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 | 'logout';\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 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 \n Abstract\n debug\n \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: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 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 Abstract\n error\n \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:64\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 Abstract\n info\n \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:61\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 Abstract\n log\n \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:62\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 Abstract\n warn\n \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:63\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 export 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.\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 * 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.\n */\n preventClearHashAfterLogin? = false;\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/**\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}\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-oidic.module.ts\n \n\n\n\n\n \n \n \n \n\n \n \n \n Methods\n \n \n \n \n \n \n \n \n Static\n forRoot\n \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-oidic.module.ts:27\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 { OAuthStorage, OAuthLogger } from './types';\nimport { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HTTP_INTERCEPTORS, HttpClientModule } 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 { CryptoHandler } from './token-validation/crypto-handler';\nimport { JwksValidationHandler } from './token-validation/jwks-validation-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: CryptoHandler, useClass: JwksValidationHandler },\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 ]\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 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 \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 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 \n handleError\n \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: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 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 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 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 \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 \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 \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 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 \n Abstract\n handleError\n \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 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 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 \n Abstract\n getItem\n \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:74\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 \n Abstract\n removeItem\n \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:75\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 \n Abstract\n setItem\n \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:76\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 export 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.\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 * 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.\n */\n preventClearHashAfterLogin? = false;\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/**\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}\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 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:29\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 | 'received_first_token'\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 | 'logout';\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 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 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 acr_values_supported\n \n \n authorization_endpoint\n \n \n check_session_iframe\n \n \n claim_types_supported\n \n \n claims_parameter_supported\n \n \n claims_supported\n \n \n display_values_supported\n \n \n end_session_endpoint\n \n \n grant_types_supported\n \n \n id_token_encryption_alg_values_supported\n \n \n id_token_encryption_enc_values_supported\n \n \n id_token_signing_alg_values_supported\n \n \n issuer\n \n \n jwks_uri\n \n \n registration_endpoint\n \n \n request_object_signing_alg_values_supported\n \n \n response_modes_supported\n \n \n response_types_supported\n \n \n scopes_supported\n \n \n service_documentation\n \n \n subject_types_supported\n \n \n token_endpoint\n \n \n token_endpoint_auth_methods_supported\n \n \n token_endpoint_auth_signing_alg_values_supported\n \n \n ui_locales_supported\n \n \n userinfo_encryption_alg_values_supported\n \n \n userinfo_encryption_enc_values_supported\n \n \n userinfo_endpoint\n \n \n userinfo_signing_alg_values_supported\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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 scopes_supported\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 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 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 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 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 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 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 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 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 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 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 export 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.\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 * 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.\n */\n preventClearHashAfterLogin? = false;\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/**\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}\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 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 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 idToken\n \n \n idTokenClaims\n \n \n idTokenClaimsJson\n \n \n idTokenExpiresAt\n \n \n idTokenHeader\n \n \n idTokenHeaderJson\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 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 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 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 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 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 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 export 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.\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 * 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.\n */\n preventClearHashAfterLogin? = false;\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/**\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}\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 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 \n accessToken\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in projects/lib/src/types.ts:85\n \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:86\n \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:84\n \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:87\n \n \n\n\n \n \n\n\n\n\n\n\n\n\n \n\n\n \n export 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.\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 * 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.\n */\n preventClearHashAfterLogin? = false;\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/**\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}\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 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 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 access_token\n \n \n expires_in\n \n \n id_token\n \n \n refresh_token\n \n \n scope\n \n \n Optional\n state\n \n \n token_type\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 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 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 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 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 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 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 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 export 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.\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 * 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.\n */\n preventClearHashAfterLogin? = false;\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/**\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}\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 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 \n Public\n getHashFragmentParams\n \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 \n Public\n parseQueryString\n \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\n pairs,\n pair,\n separatorIndex,\n escapedKey,\n escapedValue,\n key,\n 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 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 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 sub\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:121\n \n \n \n \n\n\n \n Properties\n \n \n \n \n \n sub\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 export 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.\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 * 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.\n */\n preventClearHashAfterLogin? = false;\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/**\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}\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 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 \n Public\n Abstract\n validateAtHash\n \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 \n Public\n Abstract\n validateSignature\n \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(validationParams: ValidationParams): 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(valueToHash: string, algorithm: string): 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 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 Index\n \n \n \n \n Properties\n \n \n \n \n \n \n accessToken\n \n \n idToken\n \n \n idTokenClaims\n \n \n idTokenHeader\n \n \n jwks\n \n \n loadKeys\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 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 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 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 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 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 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(validationParams: ValidationParams): 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(valueToHash: string, algorithm: string): 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 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 \n decodeKey\n \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 \n decodeValue\n \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 \n encodeKey\n \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 \n encodeValue\n \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\nChange Log\nLates features\nSee Release Notes\nNew Features in Version 2.1\n\nNew Config API (the original one is still supported)\nNew convenience methods in OAuthService to streamline default tasks:\nsetupAutomaticSilentRefresh()\nloadDiscoveryDocumentAndTryLogin()\n\n\nSingle Sign out through Session Status Change Notification according to the OpenID Connect Session Management specs. This means, you can be notified when the user logs out using at the login provider.\nPossibility to define the ValidationHandler, the Config as well as the OAuthStorage via DI\nBetter structured documentation\n\nNew Features in Version 2\n\nToken Refresh for Implicit Flow by implementing \"silent refresh\"\nValidating the signature of the received id_token\nProviding Events via the observable events.\nThe event token_expires can be used together with a silent refresh to automatically refresh a token when/ before it expires (see also property timeoutFactor).\n\nBreaking Changes in Version 2\n\nThe property oidc defaults to true.\nIf you are just using oauth2, you have to set oidc to false. Otherwise, the validation of the user profile will fail!\nBy default, sessionStorage is used. To use localStorage call method setStorage\nDemands using https as OIDC and OAuth2 relay on it. This rule can be relaxed using the property requireHttps, e. g. for local testing.\nDemands that every url provided by the discovery document starts with the issuer's url. This can be relaxed by using the property strictDiscoveryDocumentValidation.\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"},"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 : 8.0.2\n \n @angular/common : 8.0.2\n \n @angular/compiler : 8.0.2\n \n @angular/core : 8.0.2\n \n @angular/elements : 8.0.2\n \n @angular/forms : 8.0.2\n \n @angular/platform-browser : 8.0.2\n \n @angular/platform-browser-dynamic : 8.0.2\n \n @angular/router : 8.0.2\n \n @webcomponents/custom-elements : ^1.2.4\n \n base64-js : ^1.3.0\n \n bootstrap : ^3.3.7\n \n jsrsasign : ^8.0.12\n \n rxjs : 6.5.2\n \n rxjs-compat : ^6.5.2\n \n text-encoder-lite : ^1.0.1\n \n tsickle : ^0.35.0\n \n zone.js : ^0.9.1\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 \n \n \n \n\n\n projects/lib/src/base64-helper.ts\n \n \n \n \n \n \n \n \n b64DecodeUnicode\n \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 \n base64UrlEncode\n \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 \n createDefaultLogger\n \n \n \n \n \n \n \ncreateDefaultLogger()\n \n \n\n\n\n\n \n \n \n \n \n \n \n \n \n createDefaultStorage\n \n \n \n \n \n \n \ncreateDefaultStorage()\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.\n\nCredits\n\ngenerator-angular2-library for scaffolding an Angular library\njsrasign until version 5: For validating token signature and for hashing; beginning with version 6, we are using browser APIs to minimize our bundle size\nIdentity Server (used for testing with an .NET/.NET Core Backend)\nKeycloak (Redhat) for testing with Java\n\nResources\n\nSources and Sample:\nhttps://github.com/manfredsteyer/angular-oauth2-oidc\n\nSource Code Documentation\nhttps://manfredsteyer.github.io/angular-oauth2-oidc/docs\n\n\nTested Environment\nSuccessfully tested with Angular 7 and its Router, PathLocationStrategy as well as HashLocationStrategy and CommonJS-Bundling via webpack. At server side we've used IdentityServer (.NET/ .NET Core) and Redhat's Keycloak (Java).\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 closed 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 Implicit Flow (where a user is redirected to Identity Provider)\nLogging in via Code Flow + PKCE\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\n\nSample-Auth-Server\nYou can use the OIDC-Sample-Server mentioned in the samples for Testing. It assumes, that your Web-App runs on http://localhost:8080.\nUsername/Password: max/geheim\nclientIds: \n\nspa-demo (implicit flow)\ndemo-resource-owner (resource owner password flow)\n\nredirectUris:\n\nlocalhost:[8080-8089|4200-4202]\nlocalhost:[8080-8089|4200-4202]/index.html\nlocalhost:[8080-8089|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}Configuring for Implicit Flow\nThis section shows how to implement login leveraging implicit flow. This is the OAuth2/OIDC flow best suitable for\nSingle Page Application. It sends the user to the Identity Provider's login page. After logging in, the SPA gets tokens.\nThis also allows for single sign on as well as single sign off.\nTo configure the library, the following sample uses the new configuration API introduced with Version 2.1.\nHence, the original API is still supported.\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 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\nSkipping 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. \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.\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.\nMore Documentation (!)\nSee the documentation for more information about this library.\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\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\nLegend\n\n Declarations\n\n Module\n\n Bootstrap\n\n Providers\n\n Exports\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 2 Injectables\n \n \n \n \n \n \n \n 19 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\" | \"received_first_token\" | \"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\" | \"logout\"\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 WAIT_FOR_TOKEN_RECEIVED (projects/.../default-oauth.interceptor.ts)\n \n \n \n \n \n \n\n\n projects/lib/src/tokens.ts\n \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/interceptors/default-oauth.interceptor.ts\n \n \n \n \n \n \n \n \n WAIT_FOR_TOKEN_RECEIVED\n \n \n \n \n \n \n Type : number\n\n \n \n \n \n Default value : 1000\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/code-flow-+-pcke.html":{"url":"additional-documentation/code-flow-+-pcke.html","title":"additional-page - Code Flow + PCKE","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\nCode Flow\nSince Version 8, this library also supports code flow and PKCE to align with the current draft of the OAuth 2.0 Security Best Current Practice document. \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://demo.identityserver.io',\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\n // Not recommented:\n // disablePKCI: true,\n };After this, you can initialize the code flow using:\n this.oauthService.initCodeFlow();There is also a convenience method initLoginFlow which initializes either the code flow or the implicit flow depending on your configuration. \n this.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.tokenValidationHandler = new JwksValidationHandler();\nthis.oauthService.loadDiscoveryDocumentAndTryLogin();\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\nThe strategy to use for refreshing your token differs between implicit flow and code flow. Hence, you find here one separate section for both of them.\nThe last section shows how to automate refreshing for both flows.\nRefreshing when using Code Flow (not Implicit Flow!)\n\n\nFor refreshing a token with implicit flow, please see section below!\n\n\nWhen using code flow, you can get an refresh_token. While the original standard DOES NOT allow this for SPAs, the mentioned 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 an refresh token.\nTo refresh your token, just call the refresh method:\nthis.oauthService.refresh();Refreshing when using Implicit Flow (not Code Flow!)\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 // 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 parent.postMessage(location.hash, location.origin);\n \n\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/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}Events\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/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\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/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 implicit 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.\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"}}
}
diff --git a/docs/license.html b/docs/license.html
index 5812a9a3..37fd99b5 100644
--- a/docs/license.html
+++ b/docs/license.html
@@ -48,6 +48,7 @@
+
diff --git a/docs/miscellaneous/functions.html b/docs/miscellaneous/functions.html
index 6de7a837..556fd28e 100644
--- a/docs/miscellaneous/functions.html
+++ b/docs/miscellaneous/functions.html
@@ -43,6 +43,7 @@
+