@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
73 lines • 10 kB
JavaScript
import { ValidationMethod } from '../sso-configuration.model';
import { gettext } from '@c8y/ngx-components';
import { RequestConfiguration } from './request-configuration.model';
export const validationMethodConfig = {
[ValidationMethod.INTROSPECTION]: {
name: 'INTROSPECTION',
value: 'INTROSPECTION',
label: gettext('Introspection`Method of validating access token from external IAM system`'),
defaults: {
method: 'POST',
body: 'token=${accessToken}&client_id=${clientId}&client_secret=',
url: '',
headers: {},
operation: 'EXECUTE',
requestParams: {}
}
},
[ValidationMethod.USERINFO]: {
name: 'USERINFO',
value: 'USERINFO',
label: gettext('User info`Method of validating access token from external IAM system`'),
defaults: {
url: '',
method: 'GET',
body: '',
headers: { Authorization: 'Bearer ${accessToken}' },
operation: 'EXECUTE',
requestParams: {}
}
}
};
const defaultTokenValidationRequest = {
body: 'token=${accessToken}&client_id=${clientId}&client_secret=',
url: '',
headers: {},
method: 'POST',
operation: 'EXECUTE',
requestParams: {}
};
const defaultUserIdConfig = {
jwtField: '',
useConstantValue: true
};
export class ExternalToken {
constructor(externalTokenConfig) {
const _externalTokenConfig = Object.assign({ enabled: false }, externalTokenConfig);
this.userOrAppIdConfig = _externalTokenConfig.userOrAppIdConfig || defaultUserIdConfig;
this.validationMethod = _externalTokenConfig.validationMethod || ValidationMethod.INTROSPECTION;
this.validationRequired = _externalTokenConfig.validationRequired;
this.enabled = _externalTokenConfig.enabled;
this.tokenValidationRequest = new RequestConfiguration(_externalTokenConfig.tokenValidationRequest || defaultTokenValidationRequest);
this.accessTokenValidityCheckIntervalInMinutes =
_externalTokenConfig.accessTokenValidityCheckIntervalInMinutes || 1;
}
toExternalTokenConfig() {
if (!this.enabled) {
return { enabled: this.enabled };
}
const externalTokenConfig = {
userOrAppIdConfig: this.userOrAppIdConfig,
validationRequired: this.validationRequired,
enabled: this.enabled
};
if (this.validationRequired) {
externalTokenConfig.validationMethod = this.validationMethod;
externalTokenConfig.tokenValidationRequest = this.tokenValidationRequest.toRequest();
externalTokenConfig.accessTokenValidityCheckIntervalInMinutes =
this.accessTokenValidityCheckIntervalInMinutes;
}
return externalTokenConfig;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZXJuYWwtdG9rZW4tY29uZmlnLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vYXV0aC1jb25maWd1cmF0aW9uL3Nzby1jb25maWd1cmF0aW9uL3RlbXBsYXRlLXBhcnRzL2V4dGVybmFsLXRva2VuLWNvbmZpZy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBSUwsZ0JBQWdCLEVBQ2pCLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXJFLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHO0lBQ3BDLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLEVBQUU7UUFDaEMsSUFBSSxFQUFFLGVBQWU7UUFDckIsS0FBSyxFQUFFLGVBQWU7UUFDdEIsS0FBSyxFQUFFLE9BQU8sQ0FBQywyRUFBMkUsQ0FBQztRQUMzRixRQUFRLEVBQUU7WUFDUixNQUFNLEVBQUUsTUFBTTtZQUNkLElBQUksRUFBRSwyREFBMkQ7WUFDakUsR0FBRyxFQUFFLEVBQUU7WUFDUCxPQUFPLEVBQUUsRUFBRTtZQUNYLFNBQVMsRUFBRSxTQUFTO1lBQ3BCLGFBQWEsRUFBRSxFQUFFO1NBQ2xCO0tBQ0Y7SUFDRCxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxFQUFFO1FBQzNCLElBQUksRUFBRSxVQUFVO1FBQ2hCLEtBQUssRUFBRSxVQUFVO1FBQ2pCLEtBQUssRUFBRSxPQUFPLENBQUMsdUVBQXVFLENBQUM7UUFDdkYsUUFBUSxFQUFFO1lBQ1IsR0FBRyxFQUFFLEVBQUU7WUFDUCxNQUFNLEVBQUUsS0FBSztZQUNiLElBQUksRUFBRSxFQUFFO1lBQ1IsT0FBTyxFQUFFLEVBQUUsYUFBYSxFQUFFLHVCQUF1QixFQUFFO1lBQ25ELFNBQVMsRUFBRSxTQUFTO1lBQ3BCLGFBQWEsRUFBRSxFQUFFO1NBQ2xCO0tBQ0Y7Q0FDRixDQUFDO0FBRUYsTUFBTSw2QkFBNkIsR0FBZTtJQUNoRCxJQUFJLEVBQUUsMkRBQTJEO0lBQ2pFLEdBQUcsRUFBRSxFQUFFO0lBQ1AsT0FBTyxFQUFFLEVBQUU7SUFDWCxNQUFNLEVBQUUsTUFBTTtJQUNkLFNBQVMsRUFBRSxTQUFTO0lBQ3BCLGFBQWEsRUFBRSxFQUFFO0NBQ2xCLENBQUM7QUFFRixNQUFNLG1CQUFtQixHQUFpQjtJQUN4QyxRQUFRLEVBQUUsRUFBRTtJQUNaLGdCQUFnQixFQUFFLElBQUk7Q0FDdkIsQ0FBQztBQUVGLE1BQU0sT0FBTyxhQUFhO0lBUXhCLFlBQVksbUJBQXdDO1FBQ2xELE1BQU0sb0JBQW9CLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3BGLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxvQkFBb0IsQ0FBQyxpQkFBaUIsSUFBSSxtQkFBbUIsQ0FBQztRQUN2RixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsb0JBQW9CLENBQUMsZ0JBQWdCLElBQUksZ0JBQWdCLENBQUMsYUFBYSxDQUFDO1FBQ2hHLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxvQkFBb0IsQ0FBQyxrQkFBa0IsQ0FBQztRQUNsRSxJQUFJLENBQUMsT0FBTyxHQUFHLG9CQUFvQixDQUFDLE9BQU8sQ0FBQztRQUM1QyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxvQkFBb0IsQ0FDcEQsb0JBQW9CLENBQUMsc0JBQXNCLElBQUksNkJBQTZCLENBQzdFLENBQUM7UUFDRixJQUFJLENBQUMseUNBQXlDO1lBQzVDLG9CQUFvQixDQUFDLHlDQUF5QyxJQUFJLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQscUJBQXFCO1FBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbEIsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbkMsQ0FBQztRQUNELE1BQU0sbUJBQW1CLEdBQXdCO1lBQy9DLGlCQUFpQixFQUFFLElBQUksQ0FBQyxpQkFBaUI7WUFDekMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjtZQUMzQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87U0FDdEIsQ0FBQztRQUNGLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDNUIsbUJBQW1CLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1lBQzdELG1CQUFtQixDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNyRixtQkFBbUIsQ0FBQyx5Q0FBeUM7Z0JBQzNELElBQUksQ0FBQyx5Q0FBeUMsQ0FBQztRQUNuRCxDQUFDO1FBQ0QsT0FBTyxtQkFBbUIsQ0FBQztJQUM3QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBFeHRlcm5hbFRva2VuQ29uZmlnLFxuICBTU09SZXF1ZXN0LFxuICBVc2VySWRDb25maWcsXG4gIFZhbGlkYXRpb25NZXRob2Rcbn0gZnJvbSAnLi4vc3NvLWNvbmZpZ3VyYXRpb24ubW9kZWwnO1xuaW1wb3J0IHsgZ2V0dGV4dCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgUmVxdWVzdENvbmZpZ3VyYXRpb24gfSBmcm9tICcuL3JlcXVlc3QtY29uZmlndXJhdGlvbi5tb2RlbCc7XG5cbmV4cG9ydCBjb25zdCB2YWxpZGF0aW9uTWV0aG9kQ29uZmlnID0ge1xuICBbVmFsaWRhdGlvbk1ldGhvZC5JTlRST1NQRUNUSU9OXToge1xuICAgIG5hbWU6ICdJTlRST1NQRUNUSU9OJyxcbiAgICB2YWx1ZTogJ0lOVFJPU1BFQ1RJT04nLFxuICAgIGxhYmVsOiBnZXR0ZXh0KCdJbnRyb3NwZWN0aW9uYE1ldGhvZCBvZiB2YWxpZGF0aW5nIGFjY2VzcyB0b2tlbiBmcm9tIGV4dGVybmFsIElBTSBzeXN0ZW1gJyksXG4gICAgZGVmYXVsdHM6IHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keTogJ3Rva2VuPSR7YWNjZXNzVG9rZW59JmNsaWVudF9pZD0ke2NsaWVudElkfSZjbGllbnRfc2VjcmV0PScsXG4gICAgICB1cmw6ICcnLFxuICAgICAgaGVhZGVyczoge30sXG4gICAgICBvcGVyYXRpb246ICdFWEVDVVRFJyxcbiAgICAgIHJlcXVlc3RQYXJhbXM6IHt9XG4gICAgfVxuICB9LFxuICBbVmFsaWRhdGlvbk1ldGhvZC5VU0VSSU5GT106IHtcbiAgICBuYW1lOiAnVVNFUklORk8nLFxuICAgIHZhbHVlOiAnVVNFUklORk8nLFxuICAgIGxhYmVsOiBnZXR0ZXh0KCdVc2VyIGluZm9gTWV0aG9kIG9mIHZhbGlkYXRpbmcgYWNjZXNzIHRva2VuIGZyb20gZXh0ZXJuYWwgSUFNIHN5c3RlbWAnKSxcbiAgICBkZWZhdWx0czoge1xuICAgICAgdXJsOiAnJyxcbiAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICBib2R5OiAnJyxcbiAgICAgIGhlYWRlcnM6IHsgQXV0aG9yaXphdGlvbjogJ0JlYXJlciAke2FjY2Vzc1Rva2VufScgfSxcbiAgICAgIG9wZXJhdGlvbjogJ0VYRUNVVEUnLFxuICAgICAgcmVxdWVzdFBhcmFtczoge31cbiAgICB9XG4gIH1cbn07XG5cbmNvbnN0IGRlZmF1bHRUb2tlblZhbGlkYXRpb25SZXF1ZXN0OiBTU09SZXF1ZXN0ID0ge1xuICBib2R5OiAndG9rZW49JHthY2Nlc3NUb2tlbn0mY2xpZW50X2lkPSR7Y2xpZW50SWR9JmNsaWVudF9zZWNyZXQ9JyxcbiAgdXJsOiAnJyxcbiAgaGVhZGVyczoge30sXG4gIG1ldGhvZDogJ1BPU1QnLFxuICBvcGVyYXRpb246ICdFWEVDVVRFJyxcbiAgcmVxdWVzdFBhcmFtczoge31cbn07XG5cbmNvbnN0IGRlZmF1bHRVc2VySWRDb25maWc6IFVzZXJJZENvbmZpZyA9IHtcbiAgand0RmllbGQ6ICcnLFxuICB1c2VDb25zdGFudFZhbHVlOiB0cnVlXG59O1xuXG5leHBvcnQgY2xhc3MgRXh0ZXJuYWxUb2tlbiB7XG4gIHVzZXJPckFwcElkQ29uZmlnOiBVc2VySWRDb25maWc7XG4gIHZhbGlkYXRpb25NZXRob2Q6IFZhbGlkYXRpb25NZXRob2Q7XG4gIHZhbGlkYXRpb25SZXF1aXJlZDogYm9vbGVhbjtcbiAgZW5hYmxlZDogYm9vbGVhbjtcbiAgdG9rZW5WYWxpZGF0aW9uUmVxdWVzdDogUmVxdWVzdENvbmZpZ3VyYXRpb247XG4gIGFjY2Vzc1Rva2VuVmFsaWRpdHlDaGVja0ludGVydmFsSW5NaW51dGVzOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoZXh0ZXJuYWxUb2tlbkNvbmZpZzogRXh0ZXJuYWxUb2tlbkNvbmZpZykge1xuICAgIGNvbnN0IF9leHRlcm5hbFRva2VuQ29uZmlnID0gT2JqZWN0LmFzc2lnbih7IGVuYWJsZWQ6IGZhbHNlIH0sIGV4dGVybmFsVG9rZW5Db25maWcpO1xuICAgIHRoaXMudXNlck9yQXBwSWRDb25maWcgPSBfZXh0ZXJuYWxUb2tlbkNvbmZpZy51c2VyT3JBcHBJZENvbmZpZyB8fCBkZWZhdWx0VXNlcklkQ29uZmlnO1xuICAgIHRoaXMudmFsaWRhdGlvbk1ldGhvZCA9IF9leHRlcm5hbFRva2VuQ29uZmlnLnZhbGlkYXRpb25NZXRob2QgfHwgVmFsaWRhdGlvbk1ldGhvZC5JTlRST1NQRUNUSU9OO1xuICAgIHRoaXMudmFsaWRhdGlvblJlcXVpcmVkID0gX2V4dGVybmFsVG9rZW5Db25maWcudmFsaWRhdGlvblJlcXVpcmVkO1xuICAgIHRoaXMuZW5hYmxlZCA9IF9leHRlcm5hbFRva2VuQ29uZmlnLmVuYWJsZWQ7XG4gICAgdGhpcy50b2tlblZhbGlkYXRpb25SZXF1ZXN0ID0gbmV3IFJlcXVlc3RDb25maWd1cmF0aW9uKFxuICAgICAgX2V4dGVybmFsVG9rZW5Db25maWcudG9rZW5WYWxpZGF0aW9uUmVxdWVzdCB8fCBkZWZhdWx0VG9rZW5WYWxpZGF0aW9uUmVxdWVzdFxuICAgICk7XG4gICAgdGhpcy5hY2Nlc3NUb2tlblZhbGlkaXR5Q2hlY2tJbnRlcnZhbEluTWludXRlcyA9XG4gICAgICBfZXh0ZXJuYWxUb2tlbkNvbmZpZy5hY2Nlc3NUb2tlblZhbGlkaXR5Q2hlY2tJbnRlcnZhbEluTWludXRlcyB8fCAxO1xuICB9XG5cbiAgdG9FeHRlcm5hbFRva2VuQ29uZmlnKCk6IEV4dGVybmFsVG9rZW5Db25maWcge1xuICAgIGlmICghdGhpcy5lbmFibGVkKSB7XG4gICAgICByZXR1cm4geyBlbmFibGVkOiB0aGlzLmVuYWJsZWQgfTtcbiAgICB9XG4gICAgY29uc3QgZXh0ZXJuYWxUb2tlbkNvbmZpZzogRXh0ZXJuYWxUb2tlbkNvbmZpZyA9IHtcbiAgICAgIHVzZXJPckFwcElkQ29uZmlnOiB0aGlzLnVzZXJPckFwcElkQ29uZmlnLFxuICAgICAgdmFsaWRhdGlvblJlcXVpcmVkOiB0aGlzLnZhbGlkYXRpb25SZXF1aXJlZCxcbiAgICAgIGVuYWJsZWQ6IHRoaXMuZW5hYmxlZFxuICAgIH07XG4gICAgaWYgKHRoaXMudmFsaWRhdGlvblJlcXVpcmVkKSB7XG4gICAgICBleHRlcm5hbFRva2VuQ29uZmlnLnZhbGlkYXRpb25NZXRob2QgPSB0aGlzLnZhbGlkYXRpb25NZXRob2Q7XG4gICAgICBleHRlcm5hbFRva2VuQ29uZmlnLnRva2VuVmFsaWRhdGlvblJlcXVlc3QgPSB0aGlzLnRva2VuVmFsaWRhdGlvblJlcXVlc3QudG9SZXF1ZXN0KCk7XG4gICAgICBleHRlcm5hbFRva2VuQ29uZmlnLmFjY2Vzc1Rva2VuVmFsaWRpdHlDaGVja0ludGVydmFsSW5NaW51dGVzID1cbiAgICAgICAgdGhpcy5hY2Nlc3NUb2tlblZhbGlkaXR5Q2hlY2tJbnRlcnZhbEluTWludXRlcztcbiAgICB9XG4gICAgcmV0dXJuIGV4dGVybmFsVG9rZW5Db25maWc7XG4gIH1cbn1cbiJdfQ==