angular-auth-oidc-client
Version:
Angular Lib for OpenID Connect & OAuth2
48 lines • 8.61 kB
JavaScript
import { HttpResponse } from '@angular/common/http';
import { Injectable, inject } from '@angular/core';
import { throwError } from 'rxjs';
import { catchError, retry } from 'rxjs/operators';
import { DataService } from '../api/data.service';
import { LoggerService } from '../logging/logger.service';
import { StoragePersistenceService } from '../storage/storage-persistence.service';
import * as i0 from "@angular/core";
export class SigninKeyDataService {
constructor() {
this.loggerService = inject(LoggerService);
this.storagePersistenceService = inject(StoragePersistenceService);
this.dataService = inject(DataService);
}
getSigningKeys(currentConfiguration) {
const authWellKnownEndPoints = this.storagePersistenceService.read('authWellKnownEndPoints', currentConfiguration);
const jwksUri = authWellKnownEndPoints?.jwksUri;
if (!jwksUri) {
const error = `getSigningKeys: authWellKnownEndpoints.jwksUri is: '${jwksUri}'`;
this.loggerService.logWarning(currentConfiguration, error);
return throwError(() => new Error(error));
}
this.loggerService.logDebug(currentConfiguration, 'Getting signinkeys from ', jwksUri);
return this.dataService.get(jwksUri, currentConfiguration).pipe(retry(2), catchError((e) => this.handleErrorGetSigningKeys(e, currentConfiguration)));
}
handleErrorGetSigningKeys(errorResponse, currentConfiguration) {
let errMsg = '';
if (errorResponse instanceof HttpResponse) {
const body = errorResponse.body || {};
const err = JSON.stringify(body);
const { status, statusText } = errorResponse;
errMsg = `${status || ''} - ${statusText || ''} ${err || ''}`;
}
else {
const { message } = errorResponse;
errMsg = !!message ? message : `${errorResponse}`;
}
this.loggerService.logError(currentConfiguration, errMsg);
return throwError(() => new Error(errMsg));
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: SigninKeyDataService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: SigninKeyDataService, providedIn: 'root' }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: SigninKeyDataService, decorators: [{
type: Injectable,
args: [{ providedIn: 'root' }]
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmluLWtleS1kYXRhLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWF1dGgtb2lkYy1jbGllbnQvc3JjL2xpYi9mbG93cy9zaWduaW4ta2V5LWRhdGEuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVsRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0NBQXdDLENBQUM7O0FBSW5GLE1BQU0sT0FBTyxvQkFBb0I7SUFEakM7UUFFbUIsa0JBQWEsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFdEMsOEJBQXlCLEdBQUcsTUFBTSxDQUNqRCx5QkFBeUIsQ0FDMUIsQ0FBQztRQUVlLGdCQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0tBb0RwRDtJQWxEQyxjQUFjLENBQ1osb0JBQXlDO1FBRXpDLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FDaEUsd0JBQXdCLEVBQ3hCLG9CQUFvQixDQUNyQixDQUFDO1FBQ0YsTUFBTSxPQUFPLEdBQUcsc0JBQXNCLEVBQUUsT0FBTyxDQUFDO1FBRWhELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNiLE1BQU0sS0FBSyxHQUFHLHVEQUF1RCxPQUFPLEdBQUcsQ0FBQztZQUVoRixJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUUzRCxPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzVDLENBQUM7UUFFRCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FDekIsb0JBQW9CLEVBQ3BCLDBCQUEwQixFQUMxQixPQUFPLENBQ1IsQ0FBQztRQUVGLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQVUsT0FBTyxFQUFFLG9CQUFvQixDQUFDLENBQUMsSUFBSSxDQUN0RSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQ1IsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsQ0FBQyxFQUFFLG9CQUFvQixDQUFDLENBQUMsQ0FDM0UsQ0FBQztJQUNKLENBQUM7SUFFTyx5QkFBeUIsQ0FDL0IsYUFBc0MsRUFDdEMsb0JBQXlDO1FBRXpDLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUVoQixJQUFJLGFBQWEsWUFBWSxZQUFZLEVBQUUsQ0FBQztZQUMxQyxNQUFNLElBQUksR0FBRyxhQUFhLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN0QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2pDLE1BQU0sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsYUFBYSxDQUFDO1lBRTdDLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxFQUFFLE1BQU0sVUFBVSxJQUFJLEVBQUUsSUFBSSxHQUFHLElBQUksRUFBRSxFQUFFLENBQUM7UUFDaEUsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsYUFBYSxDQUFDO1lBRWxDLE1BQU0sR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsYUFBYSxFQUFFLENBQUM7UUFDcEQsQ0FBQztRQUNELElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLG9CQUFvQixFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRTFELE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDN0MsQ0FBQzs4R0ExRFUsb0JBQW9CO2tIQUFwQixvQkFBb0IsY0FEUCxNQUFNOzsyRkFDbkIsb0JBQW9CO2tCQURoQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgcmV0cnkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBEYXRhU2VydmljZSB9IGZyb20gJy4uL2FwaS9kYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgT3BlbklkQ29uZmlndXJhdGlvbiB9IGZyb20gJy4uL2NvbmZpZy9vcGVuaWQtY29uZmlndXJhdGlvbic7XG5pbXBvcnQgeyBMb2dnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vbG9nZ2luZy9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTdG9yYWdlUGVyc2lzdGVuY2VTZXJ2aWNlIH0gZnJvbSAnLi4vc3RvcmFnZS9zdG9yYWdlLXBlcnNpc3RlbmNlLnNlcnZpY2UnO1xuaW1wb3J0IHsgSnd0S2V5cyB9IGZyb20gJy4uL3ZhbGlkYXRpb24vand0a2V5cyc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgU2lnbmluS2V5RGF0YVNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlclNlcnZpY2UgPSBpbmplY3QoTG9nZ2VyU2VydmljZSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzdG9yYWdlUGVyc2lzdGVuY2VTZXJ2aWNlID0gaW5qZWN0KFxuICAgIFN0b3JhZ2VQZXJzaXN0ZW5jZVNlcnZpY2VcbiAgKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGRhdGFTZXJ2aWNlID0gaW5qZWN0KERhdGFTZXJ2aWNlKTtcblxuICBnZXRTaWduaW5nS2V5cyhcbiAgICBjdXJyZW50Q29uZmlndXJhdGlvbjogT3BlbklkQ29uZmlndXJhdGlvblxuICApOiBPYnNlcnZhYmxlPEp3dEtleXM+IHtcbiAgICBjb25zdCBhdXRoV2VsbEtub3duRW5kUG9pbnRzID0gdGhpcy5zdG9yYWdlUGVyc2lzdGVuY2VTZXJ2aWNlLnJlYWQoXG4gICAgICAnYXV0aFdlbGxLbm93bkVuZFBvaW50cycsXG4gICAgICBjdXJyZW50Q29uZmlndXJhdGlvblxuICAgICk7XG4gICAgY29uc3Qgandrc1VyaSA9IGF1dGhXZWxsS25vd25FbmRQb2ludHM/Lmp3a3NVcmk7XG5cbiAgICBpZiAoIWp3a3NVcmkpIHtcbiAgICAgIGNvbnN0IGVycm9yID0gYGdldFNpZ25pbmdLZXlzOiBhdXRoV2VsbEtub3duRW5kcG9pbnRzLmp3a3NVcmkgaXM6ICcke2p3a3NVcml9J2A7XG5cbiAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dXYXJuaW5nKGN1cnJlbnRDb25maWd1cmF0aW9uLCBlcnJvcik7XG5cbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcihlcnJvcikpO1xuICAgIH1cblxuICAgIHRoaXMubG9nZ2VyU2VydmljZS5sb2dEZWJ1ZyhcbiAgICAgIGN1cnJlbnRDb25maWd1cmF0aW9uLFxuICAgICAgJ0dldHRpbmcgc2lnbmlua2V5cyBmcm9tICcsXG4gICAgICBqd2tzVXJpXG4gICAgKTtcblxuICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLmdldDxKd3RLZXlzPihqd2tzVXJpLCBjdXJyZW50Q29uZmlndXJhdGlvbikucGlwZShcbiAgICAgIHJldHJ5KDIpLFxuICAgICAgY2F0Y2hFcnJvcigoZSkgPT4gdGhpcy5oYW5kbGVFcnJvckdldFNpZ25pbmdLZXlzKGUsIGN1cnJlbnRDb25maWd1cmF0aW9uKSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVFcnJvckdldFNpZ25pbmdLZXlzKFxuICAgIGVycm9yUmVzcG9uc2U6IEh0dHBSZXNwb25zZTxhbnk+IHwgYW55LFxuICAgIGN1cnJlbnRDb25maWd1cmF0aW9uOiBPcGVuSWRDb25maWd1cmF0aW9uXG4gICk6IE9ic2VydmFibGU8bmV2ZXI+IHtcbiAgICBsZXQgZXJyTXNnID0gJyc7XG5cbiAgICBpZiAoZXJyb3JSZXNwb25zZSBpbnN0YW5jZW9mIEh0dHBSZXNwb25zZSkge1xuICAgICAgY29uc3QgYm9keSA9IGVycm9yUmVzcG9uc2UuYm9keSB8fCB7fTtcbiAgICAgIGNvbnN0IGVyciA9IEpTT04uc3RyaW5naWZ5KGJvZHkpO1xuICAgICAgY29uc3QgeyBzdGF0dXMsIHN0YXR1c1RleHQgfSA9IGVycm9yUmVzcG9uc2U7XG5cbiAgICAgIGVyck1zZyA9IGAke3N0YXR1cyB8fCAnJ30gLSAke3N0YXR1c1RleHQgfHwgJyd9ICR7ZXJyIHx8ICcnfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgbWVzc2FnZSB9ID0gZXJyb3JSZXNwb25zZTtcblxuICAgICAgZXJyTXNnID0gISFtZXNzYWdlID8gbWVzc2FnZSA6IGAke2Vycm9yUmVzcG9uc2V9YDtcbiAgICB9XG4gICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmxvZ0Vycm9yKGN1cnJlbnRDb25maWd1cmF0aW9uLCBlcnJNc2cpO1xuXG4gICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKGVyck1zZykpO1xuICB9XG59XG4iXX0=