angular-auth-oidc-client
Version:
An OpenID Connect Code Flow with PKCE,Implicit Flow client for Angular
144 lines • 12.1 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { of, ReplaySubject } from 'rxjs';
import { catchError, switchMap } from 'rxjs/operators';
/**
* @record
*/
export function ConfigResult() { }
if (false) {
/** @type {?} */
ConfigResult.prototype.authWellknownEndpoints;
/** @type {?} */
ConfigResult.prototype.customConfig;
}
export class OidcConfigService {
/**
* @param {?} httpClient
*/
constructor(httpClient) {
this.httpClient = httpClient;
this.configurationLoadedInternal = new ReplaySubject(1);
}
/**
* @return {?}
*/
get onConfigurationLoaded() {
return this.configurationLoadedInternal.asObservable();
}
/**
* @param {?} configUrl
* @return {?}
*/
load(configUrl) {
return this.httpClient
.get(configUrl)
.pipe(switchMap((/**
* @param {?} clientConfiguration
* @return {?}
*/
clientConfiguration => {
return this.loadUsingConfiguration(clientConfiguration);
})), catchError((/**
* @param {?} error
* @return {?}
*/
error => {
console.error(`OidcConfigService 'load' threw an error on calling ${configUrl}`, error);
this.configurationLoadedInternal.next(undefined);
return of(false);
})))
.toPromise();
}
/**
* @param {?} stsServer
* @return {?}
*/
load_using_stsServer(stsServer) {
return this.loadUsingConfiguration({ stsServer }).toPromise();
}
/**
* @param {?} url
* @return {?}
*/
load_using_custom_stsServer(url) {
return this.httpClient
.get(url)
.pipe(switchMap((/**
* @param {?} wellKnownEndpoints
* @return {?}
*/
wellKnownEndpoints => {
this.configurationLoadedInternal.next({
authWellknownEndpoints: wellKnownEndpoints,
customConfig: { stsServer: url },
});
return of(true);
})), catchError((/**
* @param {?} error
* @return {?}
*/
error => {
console.error(`OidcConfigService 'load_using_custom_stsServer' threw an error on calling ${url}`, error);
this.configurationLoadedInternal.next(undefined);
return of(false);
})))
.toPromise();
}
/**
* @private
* @param {?} clientConfig
* @return {?}
*/
loadUsingConfiguration(clientConfig) {
if (!clientConfig.stsServer) {
console.error(`Property 'stsServer' is not present of passed config ${JSON.stringify(clientConfig)}`, clientConfig);
throw new Error(`Property 'stsServer' is not present of passed config ${JSON.stringify(clientConfig)}`);
}
/** @type {?} */
const url = `${clientConfig.stsServer}/.well-known/openid-configuration`;
return this.httpClient.get(url).pipe(switchMap((/**
* @param {?} wellKnownEndpoints
* @return {?}
*/
wellKnownEndpoints => {
this.configurationLoadedInternal.next({
authWellknownEndpoints: wellKnownEndpoints,
customConfig: clientConfig,
});
return of(true);
})), catchError((/**
* @param {?} error
* @return {?}
*/
error => {
console.error(`OidcConfigService 'load_using_stsServer' threw an error on calling ${url}`, error);
this.configurationLoadedInternal.next(undefined);
return of(false);
})));
}
}
OidcConfigService.decorators = [
{ type: Injectable }
];
/** @nocollapse */
OidcConfigService.ctorParameters = () => [
{ type: HttpClient }
];
if (false) {
/**
* @type {?}
* @private
*/
OidcConfigService.prototype.configurationLoadedInternal;
/**
* @type {?}
* @private
*/
OidcConfigService.prototype.httpClient;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2lkYy5zZWN1cml0eS5jb25maWcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FuZ3VsYXItYXV0aC1vaWRjLWNsaWVudC8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9vaWRjLnNlY3VyaXR5LmNvbmZpZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWMsRUFBRSxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBRXZELGtDQUdDOzs7SUFGRyw4Q0FBNEI7O0lBQzVCLG9DQUFrQjs7QUFJdEIsTUFBTSxPQUFPLGlCQUFpQjs7OztJQU8xQixZQUE2QixVQUFzQjtRQUF0QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBTjNDLGdDQUEyQixHQUFHLElBQUksYUFBYSxDQUFlLENBQUMsQ0FBQyxDQUFDO0lBTWxCLENBQUM7Ozs7SUFKeEQsSUFBVyxxQkFBcUI7UUFDNUIsT0FBTyxJQUFJLENBQUMsMkJBQTJCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDM0QsQ0FBQzs7Ozs7SUFJRCxJQUFJLENBQUMsU0FBaUI7UUFDbEIsT0FBTyxJQUFJLENBQUMsVUFBVTthQUNqQixHQUFHLENBQUMsU0FBUyxDQUFDO2FBQ2QsSUFBSSxDQUNELFNBQVM7Ozs7UUFBQyxtQkFBbUIsQ0FBQyxFQUFFO1lBQzVCLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDNUQsQ0FBQyxFQUFDLEVBQ0YsVUFBVTs7OztRQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyxzREFBc0QsU0FBUyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDeEYsSUFBSSxDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNqRCxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQixDQUFDLEVBQUMsQ0FDTDthQUNBLFNBQVMsRUFBRSxDQUFDO0lBQ3JCLENBQUM7Ozs7O0lBRUQsb0JBQW9CLENBQUMsU0FBaUI7UUFDbEMsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ2xFLENBQUM7Ozs7O0lBRUQsMkJBQTJCLENBQUMsR0FBVztRQUNuQyxPQUFPLElBQUksQ0FBQyxVQUFVO2FBQ2pCLEdBQUcsQ0FBQyxHQUFHLENBQUM7YUFDUixJQUFJLENBQ0QsU0FBUzs7OztRQUFDLGtCQUFrQixDQUFDLEVBQUU7WUFDM0IsSUFBSSxDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FBQztnQkFDbEMsc0JBQXNCLEVBQUUsa0JBQWtCO2dCQUMxQyxZQUFZLEVBQUUsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFO2FBQ25DLENBQUMsQ0FBQztZQUNILE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BCLENBQUMsRUFBQyxFQUNGLFVBQVU7Ozs7UUFBQyxLQUFLLENBQUMsRUFBRTtZQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsNkVBQTZFLEdBQUcsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3pHLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDakQsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsQ0FBQyxFQUFDLENBQ0w7YUFDQSxTQUFTLEVBQUUsQ0FBQztJQUNyQixDQUFDOzs7Ozs7SUFFTyxzQkFBc0IsQ0FBQyxZQUFpQjtRQUM1QyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRTtZQUN6QixPQUFPLENBQUMsS0FBSyxDQUFDLHdEQUF3RCxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDcEgsTUFBTSxJQUFJLEtBQUssQ0FBQyx3REFBd0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDM0c7O2NBRUssR0FBRyxHQUFHLEdBQUcsWUFBWSxDQUFDLFNBQVMsbUNBQW1DO1FBRXhFLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUNoQyxTQUFTOzs7O1FBQUMsa0JBQWtCLENBQUMsRUFBRTtZQUMzQixJQUFJLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDO2dCQUNsQyxzQkFBc0IsRUFBRSxrQkFBa0I7Z0JBQzFDLFlBQVksRUFBRSxZQUFZO2FBQzdCLENBQUMsQ0FBQztZQUNILE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BCLENBQUMsRUFBQyxFQUNGLFVBQVU7Ozs7UUFBQyxLQUFLLENBQUMsRUFBRTtZQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsc0VBQXNFLEdBQUcsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ2xHLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDakQsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsQ0FBQyxFQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7OztZQXhFSixVQUFVOzs7O1lBVkYsVUFBVTs7Ozs7OztJQVlmLHdEQUF5RTs7Ozs7SUFNN0QsdUNBQXVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlnUmVzdWx0IHtcbiAgICBhdXRoV2VsbGtub3duRW5kcG9pbnRzOiBhbnk7XG4gICAgY3VzdG9tQ29uZmlnOiBhbnk7XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBPaWRjQ29uZmlnU2VydmljZSB7XG4gICAgcHJpdmF0ZSBjb25maWd1cmF0aW9uTG9hZGVkSW50ZXJuYWwgPSBuZXcgUmVwbGF5U3ViamVjdDxDb25maWdSZXN1bHQ+KDEpO1xuXG4gICAgcHVibGljIGdldCBvbkNvbmZpZ3VyYXRpb25Mb2FkZWQoKTogT2JzZXJ2YWJsZTxDb25maWdSZXN1bHQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvbkxvYWRlZEludGVybmFsLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgaHR0cENsaWVudDogSHR0cENsaWVudCkgeyB9XG5cbiAgICBsb2FkKGNvbmZpZ1VybDogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5nZXQoY29uZmlnVXJsKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKGNsaWVudENvbmZpZ3VyYXRpb24gPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5sb2FkVXNpbmdDb25maWd1cmF0aW9uKGNsaWVudENvbmZpZ3VyYXRpb24pO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBPaWRjQ29uZmlnU2VydmljZSAnbG9hZCcgdGhyZXcgYW4gZXJyb3Igb24gY2FsbGluZyAke2NvbmZpZ1VybH1gLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZmlndXJhdGlvbkxvYWRlZEludGVybmFsLm5leHQodW5kZWZpbmVkKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnRvUHJvbWlzZSgpO1xuICAgIH1cblxuICAgIGxvYWRfdXNpbmdfc3RzU2VydmVyKHN0c1NlcnZlcjogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRVc2luZ0NvbmZpZ3VyYXRpb24oeyBzdHNTZXJ2ZXIgfSkudG9Qcm9taXNlKCk7XG4gICAgfVxuXG4gICAgbG9hZF91c2luZ19jdXN0b21fc3RzU2VydmVyKHVybDogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgIC5nZXQodXJsKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKHdlbGxLbm93bkVuZHBvaW50cyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZmlndXJhdGlvbkxvYWRlZEludGVybmFsLm5leHQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgYXV0aFdlbGxrbm93bkVuZHBvaW50czogd2VsbEtub3duRW5kcG9pbnRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tQ29uZmlnOiB7IHN0c1NlcnZlcjogdXJsIH0sXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YodHJ1ZSk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYE9pZGNDb25maWdTZXJ2aWNlICdsb2FkX3VzaW5nX2N1c3RvbV9zdHNTZXJ2ZXInIHRocmV3IGFuIGVycm9yIG9uIGNhbGxpbmcgJHt1cmx9YCwgZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb25Mb2FkZWRJbnRlcm5hbC5uZXh0KHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihmYWxzZSk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC50b1Byb21pc2UoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGxvYWRVc2luZ0NvbmZpZ3VyYXRpb24oY2xpZW50Q29uZmlnOiBhbnkpIHtcbiAgICAgICAgaWYgKCFjbGllbnRDb25maWcuc3RzU2VydmVyKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGBQcm9wZXJ0eSAnc3RzU2VydmVyJyBpcyBub3QgcHJlc2VudCBvZiBwYXNzZWQgY29uZmlnICR7SlNPTi5zdHJpbmdpZnkoY2xpZW50Q29uZmlnKX1gLCBjbGllbnRDb25maWcpO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBQcm9wZXJ0eSAnc3RzU2VydmVyJyBpcyBub3QgcHJlc2VudCBvZiBwYXNzZWQgY29uZmlnICR7SlNPTi5zdHJpbmdpZnkoY2xpZW50Q29uZmlnKX1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHVybCA9IGAke2NsaWVudENvbmZpZy5zdHNTZXJ2ZXJ9Ly53ZWxsLWtub3duL29wZW5pZC1jb25maWd1cmF0aW9uYDtcblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldCh1cmwpLnBpcGUoXG4gICAgICAgICAgICBzd2l0Y2hNYXAod2VsbEtub3duRW5kcG9pbnRzID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb25Mb2FkZWRJbnRlcm5hbC5uZXh0KHtcbiAgICAgICAgICAgICAgICAgICAgYXV0aFdlbGxrbm93bkVuZHBvaW50czogd2VsbEtub3duRW5kcG9pbnRzLFxuICAgICAgICAgICAgICAgICAgICBjdXN0b21Db25maWc6IGNsaWVudENvbmZpZyxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gb2YodHJ1ZSk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYE9pZGNDb25maWdTZXJ2aWNlICdsb2FkX3VzaW5nX3N0c1NlcnZlcicgdGhyZXcgYW4gZXJyb3Igb24gY2FsbGluZyAke3VybH1gLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uTG9hZGVkSW50ZXJuYWwubmV4dCh1bmRlZmluZWQpO1xuICAgICAgICAgICAgICAgIHJldHVybiBvZihmYWxzZSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==