angular-auth-oidc-client
Version:
Angular Lib for OpenID Connect & OAuth2
51 lines • 9.05 kB
JavaScript
import { Injectable, inject } from '@angular/core';
import { throwError } from 'rxjs';
import { map, retry } from 'rxjs/operators';
import { DataService } from '../../api/data.service';
import { LoggerService } from '../../logging/logger.service';
import * as i0 from "@angular/core";
const WELL_KNOWN_SUFFIX = `/.well-known/openid-configuration`;
export class AuthWellKnownDataService {
constructor() {
this.loggerService = inject(LoggerService);
this.http = inject(DataService);
}
getWellKnownEndPointsForConfig(config) {
const { authWellknownEndpointUrl, authWellknownEndpoints = {} } = config;
if (!authWellknownEndpointUrl) {
const errorMessage = 'no authWellknownEndpoint given!';
this.loggerService.logError(config, errorMessage);
return throwError(() => new Error(errorMessage));
}
return this.getWellKnownDocument(authWellknownEndpointUrl, config).pipe(map((wellKnownEndpoints) => ({
issuer: wellKnownEndpoints.issuer,
jwksUri: wellKnownEndpoints.jwks_uri,
authorizationEndpoint: wellKnownEndpoints.authorization_endpoint,
tokenEndpoint: wellKnownEndpoints.token_endpoint,
userInfoEndpoint: wellKnownEndpoints.userinfo_endpoint,
endSessionEndpoint: wellKnownEndpoints.end_session_endpoint,
checkSessionIframe: wellKnownEndpoints.check_session_iframe,
revocationEndpoint: wellKnownEndpoints.revocation_endpoint,
introspectionEndpoint: wellKnownEndpoints.introspection_endpoint,
parEndpoint: wellKnownEndpoints.pushed_authorization_request_endpoint,
})), map((mappedWellKnownEndpoints) => ({
...mappedWellKnownEndpoints,
...authWellknownEndpoints,
})));
}
getWellKnownDocument(wellKnownEndpoint, config) {
let url = wellKnownEndpoint;
const wellKnownSuffix = config.authWellknownUrlSuffix || WELL_KNOWN_SUFFIX;
if (!wellKnownEndpoint.includes(wellKnownSuffix)) {
url = `${wellKnownEndpoint}${wellKnownSuffix}`;
}
return this.http.get(url, config).pipe(retry(2));
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: AuthWellKnownDataService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: AuthWellKnownDataService, providedIn: 'root' }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: AuthWellKnownDataService, decorators: [{
type: Injectable,
args: [{ providedIn: 'root' }]
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC13ZWxsLWtub3duLWRhdGEuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItYXV0aC1vaWRjLWNsaWVudC9zcmMvbGliL2NvbmZpZy9hdXRoLXdlbGwta25vd24vYXV0aC13ZWxsLWtub3duLWRhdGEuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7QUFJN0QsTUFBTSxpQkFBaUIsR0FBRyxtQ0FBbUMsQ0FBQztBQUc5RCxNQUFNLE9BQU8sd0JBQXdCO0lBRHJDO1FBRW1CLGtCQUFhLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRXRDLFNBQUksR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7S0FxRDdDO0lBbkRDLDhCQUE4QixDQUM1QixNQUEyQjtRQUUzQixNQUFNLEVBQUUsd0JBQXdCLEVBQUUsc0JBQXNCLEdBQUcsRUFBRSxFQUFFLEdBQUcsTUFBTSxDQUFDO1FBRXpFLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQzlCLE1BQU0sWUFBWSxHQUFHLGlDQUFpQyxDQUFDO1lBRXZELElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQztZQUVsRCxPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBQ25ELENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyx3QkFBd0IsRUFBRSxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQ3JFLEdBQUcsQ0FDRCxDQUFDLGtCQUFrQixFQUFFLEVBQUUsQ0FDckIsQ0FBQztZQUNDLE1BQU0sRUFBRSxrQkFBa0IsQ0FBQyxNQUFNO1lBQ2pDLE9BQU8sRUFBRSxrQkFBa0IsQ0FBQyxRQUFRO1lBQ3BDLHFCQUFxQixFQUFFLGtCQUFrQixDQUFDLHNCQUFzQjtZQUNoRSxhQUFhLEVBQUUsa0JBQWtCLENBQUMsY0FBYztZQUNoRCxnQkFBZ0IsRUFBRSxrQkFBa0IsQ0FBQyxpQkFBaUI7WUFDdEQsa0JBQWtCLEVBQUUsa0JBQWtCLENBQUMsb0JBQW9CO1lBQzNELGtCQUFrQixFQUFFLGtCQUFrQixDQUFDLG9CQUFvQjtZQUMzRCxrQkFBa0IsRUFBRSxrQkFBa0IsQ0FBQyxtQkFBbUI7WUFDMUQscUJBQXFCLEVBQUUsa0JBQWtCLENBQUMsc0JBQXNCO1lBQ2hFLFdBQVcsRUFDVCxrQkFBa0IsQ0FBQyxxQ0FBcUM7U0FDaEMsQ0FBQSxDQUMvQixFQUNELEdBQUcsQ0FBQyxDQUFDLHdCQUF3QixFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2pDLEdBQUcsd0JBQXdCO1lBQzNCLEdBQUcsc0JBQXNCO1NBQzFCLENBQUMsQ0FBQyxDQUNKLENBQUM7SUFDSixDQUFDO0lBRU8sb0JBQW9CLENBQzFCLGlCQUF5QixFQUN6QixNQUEyQjtRQUUzQixJQUFJLEdBQUcsR0FBRyxpQkFBaUIsQ0FBQztRQUU1QixNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsc0JBQXNCLElBQUksaUJBQWlCLENBQUM7UUFFM0UsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO1lBQ2pELEdBQUcsR0FBRyxHQUFHLGlCQUFpQixHQUFHLGVBQWUsRUFBRSxDQUFDO1FBQ2pELENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkQsQ0FBQzs4R0F2RFUsd0JBQXdCO2tIQUF4Qix3QkFBd0IsY0FEWCxNQUFNOzsyRkFDbkIsd0JBQXdCO2tCQURwQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCwgcmV0cnkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IERhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXBpL2RhdGEuc2VydmljZSc7XHJcbmltcG9ydCB7IExvZ2dlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9sb2dnaW5nL2xvZ2dlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT3BlbklkQ29uZmlndXJhdGlvbiB9IGZyb20gJy4uL29wZW5pZC1jb25maWd1cmF0aW9uJztcclxuaW1wb3J0IHsgQXV0aFdlbGxLbm93bkVuZHBvaW50cyB9IGZyb20gJy4vYXV0aC13ZWxsLWtub3duLWVuZHBvaW50cyc7XHJcblxyXG5jb25zdCBXRUxMX0tOT1dOX1NVRkZJWCA9IGAvLndlbGwta25vd24vb3BlbmlkLWNvbmZpZ3VyYXRpb25gO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIEF1dGhXZWxsS25vd25EYXRhU2VydmljZSB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXJTZXJ2aWNlID0gaW5qZWN0KExvZ2dlclNlcnZpY2UpO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IGh0dHAgPSBpbmplY3QoRGF0YVNlcnZpY2UpO1xyXG5cclxuICBnZXRXZWxsS25vd25FbmRQb2ludHNGb3JDb25maWcoXHJcbiAgICBjb25maWc6IE9wZW5JZENvbmZpZ3VyYXRpb25cclxuICApOiBPYnNlcnZhYmxlPEF1dGhXZWxsS25vd25FbmRwb2ludHM+IHtcclxuICAgIGNvbnN0IHsgYXV0aFdlbGxrbm93bkVuZHBvaW50VXJsLCBhdXRoV2VsbGtub3duRW5kcG9pbnRzID0ge30gfSA9IGNvbmZpZztcclxuXHJcbiAgICBpZiAoIWF1dGhXZWxsa25vd25FbmRwb2ludFVybCkge1xyXG4gICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSAnbm8gYXV0aFdlbGxrbm93bkVuZHBvaW50IGdpdmVuISc7XHJcblxyXG4gICAgICB0aGlzLmxvZ2dlclNlcnZpY2UubG9nRXJyb3IoY29uZmlnLCBlcnJvck1lc3NhZ2UpO1xyXG5cclxuICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKGVycm9yTWVzc2FnZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLmdldFdlbGxLbm93bkRvY3VtZW50KGF1dGhXZWxsa25vd25FbmRwb2ludFVybCwgY29uZmlnKS5waXBlKFxyXG4gICAgICBtYXAoXHJcbiAgICAgICAgKHdlbGxLbm93bkVuZHBvaW50cykgPT5cclxuICAgICAgICAgICh7XHJcbiAgICAgICAgICAgIGlzc3Vlcjogd2VsbEtub3duRW5kcG9pbnRzLmlzc3VlcixcclxuICAgICAgICAgICAgandrc1VyaTogd2VsbEtub3duRW5kcG9pbnRzLmp3a3NfdXJpLFxyXG4gICAgICAgICAgICBhdXRob3JpemF0aW9uRW5kcG9pbnQ6IHdlbGxLbm93bkVuZHBvaW50cy5hdXRob3JpemF0aW9uX2VuZHBvaW50LFxyXG4gICAgICAgICAgICB0b2tlbkVuZHBvaW50OiB3ZWxsS25vd25FbmRwb2ludHMudG9rZW5fZW5kcG9pbnQsXHJcbiAgICAgICAgICAgIHVzZXJJbmZvRW5kcG9pbnQ6IHdlbGxLbm93bkVuZHBvaW50cy51c2VyaW5mb19lbmRwb2ludCxcclxuICAgICAgICAgICAgZW5kU2Vzc2lvbkVuZHBvaW50OiB3ZWxsS25vd25FbmRwb2ludHMuZW5kX3Nlc3Npb25fZW5kcG9pbnQsXHJcbiAgICAgICAgICAgIGNoZWNrU2Vzc2lvbklmcmFtZTogd2VsbEtub3duRW5kcG9pbnRzLmNoZWNrX3Nlc3Npb25faWZyYW1lLFxyXG4gICAgICAgICAgICByZXZvY2F0aW9uRW5kcG9pbnQ6IHdlbGxLbm93bkVuZHBvaW50cy5yZXZvY2F0aW9uX2VuZHBvaW50LFxyXG4gICAgICAgICAgICBpbnRyb3NwZWN0aW9uRW5kcG9pbnQ6IHdlbGxLbm93bkVuZHBvaW50cy5pbnRyb3NwZWN0aW9uX2VuZHBvaW50LFxyXG4gICAgICAgICAgICBwYXJFbmRwb2ludDpcclxuICAgICAgICAgICAgICB3ZWxsS25vd25FbmRwb2ludHMucHVzaGVkX2F1dGhvcml6YXRpb25fcmVxdWVzdF9lbmRwb2ludCxcclxuICAgICAgICAgIH0gYXMgQXV0aFdlbGxLbm93bkVuZHBvaW50cylcclxuICAgICAgKSxcclxuICAgICAgbWFwKChtYXBwZWRXZWxsS25vd25FbmRwb2ludHMpID0+ICh7XHJcbiAgICAgICAgLi4ubWFwcGVkV2VsbEtub3duRW5kcG9pbnRzLFxyXG4gICAgICAgIC4uLmF1dGhXZWxsa25vd25FbmRwb2ludHMsXHJcbiAgICAgIH0pKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0V2VsbEtub3duRG9jdW1lbnQoXHJcbiAgICB3ZWxsS25vd25FbmRwb2ludDogc3RyaW5nLFxyXG4gICAgY29uZmlnOiBPcGVuSWRDb25maWd1cmF0aW9uXHJcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGxldCB1cmwgPSB3ZWxsS25vd25FbmRwb2ludDtcclxuXHJcbiAgICBjb25zdCB3ZWxsS25vd25TdWZmaXggPSBjb25maWcuYXV0aFdlbGxrbm93blVybFN1ZmZpeCB8fCBXRUxMX0tOT1dOX1NVRkZJWDtcclxuXHJcbiAgICBpZiAoIXdlbGxLbm93bkVuZHBvaW50LmluY2x1ZGVzKHdlbGxLbm93blN1ZmZpeCkpIHtcclxuICAgICAgdXJsID0gYCR7d2VsbEtub3duRW5kcG9pbnR9JHt3ZWxsS25vd25TdWZmaXh9YDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh1cmwsIGNvbmZpZykucGlwZShyZXRyeSgyKSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==