@affinidi/cli 2.0.0 ā 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -8
- package/dist/commands/generate/app.d.ts +5 -3
- package/dist/commands/generate/app.js +123 -83
- package/dist/commands/generate/app.js.map +1 -1
- package/dist/helpers/app.d.ts +14 -6
- package/dist/helpers/app.js +22 -10
- package/dist/helpers/app.js.map +1 -1
- package/dist/helpers/jwk.d.ts +2 -0
- package/dist/helpers/jwk.js +21 -1
- package/dist/helpers/jwk.js.map +1 -1
- package/dist/services/affinidi/auth/bff-auth-provider.d.ts +5 -1
- package/dist/services/affinidi/auth/bff-auth-provider.js +10 -7
- package/dist/services/affinidi/auth/bff-auth-provider.js.map +1 -1
- package/dist/services/affinidi/auth/types.d.ts +5 -1
- package/dist/services/affinidi/bff-service.d.ts +8 -3
- package/dist/services/affinidi/bff-service.js +80 -26
- package/dist/services/affinidi/bff-service.js.map +1 -1
- package/dist/services/affinidi/errors.js +13 -7
- package/dist/services/affinidi/errors.js.map +1 -1
- package/dist/services/affinidi/iam/index.js +28 -16
- package/dist/services/affinidi/iam/index.js.map +1 -1
- package/dist/services/affinidi/vp-adapter/index.js +24 -12
- package/dist/services/affinidi/vp-adapter/index.js.map +1 -1
- package/dist/services/credentials-vault.d.ts +4 -3
- package/dist/services/credentials-vault.js +32 -6
- package/dist/services/credentials-vault.js.map +1 -1
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -250,16 +250,16 @@ To check what is the current active project use the command [`affinidi project g
|
|
|
250
250
|
|
|
251
251
|
To switch the active project use the command [`affinidi project select-project`](#affinidi-project-select-project)
|
|
252
252
|
|
|
253
|
-
When you authenticate to Affinidi, the first project is set as your active one by default.
|
|
253
|
+
When you authenticate to Affinidi, the first project is set as your active one by default.
|
|
254
254
|
|
|
255
255
|
### Session and configuration files
|
|
256
256
|
|
|
257
|
-
When you authenticate to Affinidi with affinidi start the CLI will
|
|
257
|
+
When you authenticate to Affinidi with `affinidi start` the CLI will store your current session in OS Keychain (on macOS the passwords are managed by the Keychain, on Linux they are managed by the Secret Service API/libsecret, and on Windows they are managed by Credential Vault).
|
|
258
258
|
|
|
259
|
+
NOTE: If system keychain is not available, the CLI will create a folder with a credentials file in your home directory.
|
|
259
260
|
`~/.affinidi/credentials-v2.json` - Stores your current session credentials. Keep it secret as this allows you to call Affinidi services.
|
|
260
261
|
|
|
261
|
-
When you run affinidi stop your session information is deleted.
|
|
262
|
-
|
|
262
|
+
When you run `affinidi stop` your session information is deleted.
|
|
263
263
|
|
|
264
264
|
## Support & Feedback
|
|
265
265
|
|
|
@@ -421,11 +421,13 @@ Generates a reference application that integrates Affinidi Login. Requires git
|
|
|
421
421
|
|
|
422
422
|
```
|
|
423
423
|
USAGE
|
|
424
|
-
$ affinidi generate app [--json] [--no-color] [--no-input] [-
|
|
424
|
+
$ affinidi generate app [--json] [--no-color] [--no-input] [-a <value>] [-f <value>] [-l <value>] [-p <value>]
|
|
425
|
+
[--force]
|
|
425
426
|
|
|
426
427
|
FLAGS
|
|
427
428
|
-a, --provider=<value> Authentication provider for the reference app
|
|
428
429
|
-f, --framework=<value> Framework for the reference app
|
|
430
|
+
-l, --library=<value> Library for the reference app
|
|
429
431
|
-p, --path=<value> Relative or absolute path where reference application should be cloned into
|
|
430
432
|
--force Override destination directory if exists
|
|
431
433
|
|
|
@@ -1128,7 +1130,7 @@ EXAMPLES
|
|
|
1128
1130
|
$ affinidi start
|
|
1129
1131
|
```
|
|
1130
1132
|
|
|
1131
|
-
_See code: [dist/commands/start.ts](https://github.com/affinidi/affinidi-cli/blob/v2.
|
|
1133
|
+
_See code: [dist/commands/start.ts](https://github.com/affinidi/affinidi-cli/blob/v2.1.0/dist/commands/start.ts)_
|
|
1132
1134
|
|
|
1133
1135
|
## `affinidi stop`
|
|
1134
1136
|
|
|
@@ -1147,7 +1149,7 @@ EXAMPLES
|
|
|
1147
1149
|
$ affinidi stop
|
|
1148
1150
|
```
|
|
1149
1151
|
|
|
1150
|
-
_See code: [dist/commands/stop.ts](https://github.com/affinidi/affinidi-cli/blob/v2.
|
|
1152
|
+
_See code: [dist/commands/stop.ts](https://github.com/affinidi/affinidi-cli/blob/v2.1.0/dist/commands/stop.ts)_
|
|
1151
1153
|
|
|
1152
1154
|
## `affinidi token create-token`
|
|
1153
1155
|
|
|
@@ -1282,5 +1284,5 @@ EXAMPLES
|
|
|
1282
1284
|
$ affinidi whoami
|
|
1283
1285
|
```
|
|
1284
1286
|
|
|
1285
|
-
_See code: [dist/commands/whoami.ts](https://github.com/affinidi/affinidi-cli/blob/v2.
|
|
1287
|
+
_See code: [dist/commands/whoami.ts](https://github.com/affinidi/affinidi-cli/blob/v2.1.0/dist/commands/whoami.ts)_
|
|
1286
1288
|
<!-- commandsstop -->
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import { BaseCommand } from '../../common';
|
|
2
|
+
import { AppsInformation } from '../../helpers/app';
|
|
2
3
|
export default class GenerateApp extends BaseCommand<typeof GenerateApp> {
|
|
3
|
-
static apps:
|
|
4
|
+
static apps: AppsInformation;
|
|
4
5
|
static providers: string[];
|
|
5
|
-
static frameworks: string[]
|
|
6
|
+
static frameworks: Map<string, string[]>;
|
|
6
7
|
static libraries: Map<string, string[]>;
|
|
7
8
|
static summary: string;
|
|
8
9
|
static examples: string[];
|
|
9
10
|
static flags: {
|
|
10
|
-
framework: import("@oclif/core/lib/interfaces/parser").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
11
11
|
provider: import("@oclif/core/lib/interfaces/parser").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
12
|
+
framework: import("@oclif/core/lib/interfaces/parser").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
13
|
+
library: import("@oclif/core/lib/interfaces/parser").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
12
14
|
path: import("@oclif/core/lib/interfaces/parser").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
13
15
|
force: import("@oclif/core/lib/interfaces/parser").BooleanFlag<boolean>;
|
|
14
16
|
};
|
|
@@ -24,11 +24,6 @@ class GenerateApp extends common_1.BaseCommand {
|
|
|
24
24
|
GenerateApp.providers = providers;
|
|
25
25
|
GenerateApp.frameworks = frameworks;
|
|
26
26
|
GenerateApp.libraries = libraries;
|
|
27
|
-
GenerateApp.flags.framework = core_1.Flags.string({
|
|
28
|
-
char: 'f',
|
|
29
|
-
summary: 'Framework for the reference app',
|
|
30
|
-
options: frameworks,
|
|
31
|
-
});
|
|
32
27
|
GenerateApp.flags.provider = core_1.Flags.string({
|
|
33
28
|
char: 'a',
|
|
34
29
|
summary: 'Authentication provider for the reference app',
|
|
@@ -36,91 +31,132 @@ class GenerateApp extends common_1.BaseCommand {
|
|
|
36
31
|
});
|
|
37
32
|
}
|
|
38
33
|
async run() {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
if (
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
const framework = flags.framework ??
|
|
55
|
-
(await (0, prompts_1.select)({
|
|
56
|
-
message: 'Select the framework for the reference app.',
|
|
57
|
-
choices: GenerateApp.frameworks.map((value) => ({
|
|
58
|
-
name: value,
|
|
59
|
-
value,
|
|
60
|
-
})),
|
|
61
|
-
}));
|
|
62
|
-
const promptFlags = await (0, prompts_2.promptRequiredParameters)(['path'], flags);
|
|
63
|
-
promptFlags.framework = framework;
|
|
64
|
-
promptFlags.provider = provider;
|
|
65
|
-
const schema = zod_1.default.object({
|
|
66
|
-
path: zod_1.default.string().max(validators_1.INPUT_LIMIT),
|
|
67
|
-
framework: zod_1.default.string().max(validators_1.INPUT_LIMIT),
|
|
68
|
-
provider: zod_1.default.string().max(validators_1.INPUT_LIMIT),
|
|
69
|
-
});
|
|
70
|
-
const validatedFlags = schema.parse(promptFlags);
|
|
71
|
-
const appName = (0, app_1.getAppName)(framework, provider, GenerateApp.libraries);
|
|
72
|
-
core_1.ux.action.start('Generating reference application');
|
|
73
|
-
await (0, degit_1.cloneWithDegit)(`${APPS_GITHUB_LOCATION}/${appName}`, validatedFlags.path, flags.force);
|
|
74
|
-
core_1.ux.action.stop('Generated successfully!');
|
|
75
|
-
if (!flags['no-input']) {
|
|
76
|
-
const configure = await (0, prompts_1.confirm)({
|
|
77
|
-
message: 'Automatically configure reference app environment?',
|
|
78
|
-
});
|
|
79
|
-
if (configure) {
|
|
80
|
-
core_1.ux.action.start('Fetching available login configurations');
|
|
81
|
-
const configs = await vp_adapter_1.vpAdapterService.listLoginConfigurations();
|
|
82
|
-
core_1.ux.action.stop('Fetched successfully!');
|
|
83
|
-
const choices = configs.configurations.map((config) => ({
|
|
84
|
-
value: {
|
|
85
|
-
id: config.configurationId,
|
|
86
|
-
auth: config.auth,
|
|
87
|
-
},
|
|
88
|
-
name: `${config.name} [id: ${config.configurationId}]`,
|
|
34
|
+
try {
|
|
35
|
+
const { flags } = await this.parse(GenerateApp);
|
|
36
|
+
if (flags['no-input']) {
|
|
37
|
+
if (!flags.provider)
|
|
38
|
+
throw new errors_1.CLIError((0, error_messages_1.giveFlagInputErrorMessage)('provider'));
|
|
39
|
+
if (!flags.framework)
|
|
40
|
+
throw new errors_1.CLIError((0, error_messages_1.giveFlagInputErrorMessage)('framework'));
|
|
41
|
+
}
|
|
42
|
+
const provider = flags.provider ??
|
|
43
|
+
(await (0, prompts_1.select)({
|
|
44
|
+
message: 'Select the provider for the reference app.',
|
|
45
|
+
choices: GenerateApp.providers.map((value) => ({
|
|
46
|
+
name: value,
|
|
47
|
+
value,
|
|
48
|
+
})),
|
|
89
49
|
}));
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
50
|
+
const framework = flags.framework ??
|
|
51
|
+
(await (0, prompts_1.select)({
|
|
52
|
+
message: 'Select the framework for the reference app.',
|
|
53
|
+
choices: GenerateApp.frameworks.get(provider).map((value) => ({
|
|
54
|
+
name: value,
|
|
55
|
+
value,
|
|
56
|
+
})),
|
|
57
|
+
}));
|
|
58
|
+
const library = flags.library ??
|
|
59
|
+
(await (0, prompts_1.select)({
|
|
60
|
+
message: 'Select the library for the reference app.',
|
|
61
|
+
choices: GenerateApp.libraries.get(`${provider}-${framework}`).map((value) => ({
|
|
62
|
+
name: value,
|
|
63
|
+
value,
|
|
64
|
+
})),
|
|
65
|
+
}));
|
|
66
|
+
const promptFlags = await (0, prompts_2.promptRequiredParameters)(['path'], flags);
|
|
67
|
+
promptFlags.framework = framework;
|
|
68
|
+
promptFlags.provider = provider;
|
|
69
|
+
promptFlags.library = library;
|
|
70
|
+
const schema = zod_1.default.object({
|
|
71
|
+
path: zod_1.default.string().max(validators_1.INPUT_LIMIT),
|
|
72
|
+
framework: zod_1.default.string().max(validators_1.INPUT_LIMIT),
|
|
73
|
+
provider: zod_1.default.string().max(validators_1.INPUT_LIMIT),
|
|
74
|
+
library: zod_1.default.string().max(validators_1.INPUT_LIMIT),
|
|
75
|
+
});
|
|
76
|
+
const validatedFlags = schema.parse(promptFlags);
|
|
77
|
+
const appName = (0, app_1.getAppName)(framework, provider, library);
|
|
78
|
+
core_1.ux.action.start('Generating reference application');
|
|
79
|
+
await (0, degit_1.cloneWithDegit)(`${APPS_GITHUB_LOCATION}/${appName}`, validatedFlags.path, flags.force);
|
|
80
|
+
core_1.ux.action.stop('Generated successfully!');
|
|
81
|
+
if (!flags['no-input']) {
|
|
82
|
+
const configure = await (0, prompts_1.confirm)({
|
|
83
|
+
message: 'Automatically configure reference app environment?',
|
|
93
84
|
});
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
webOriginUrl: GenerateApp.apps.appName.redirectUris.webOriginUrl,
|
|
85
|
+
if (configure) {
|
|
86
|
+
core_1.ux.action.start('Fetching available login configurations');
|
|
87
|
+
const configs = await vp_adapter_1.vpAdapterService.listLoginConfigurations();
|
|
88
|
+
core_1.ux.action.stop('Fetched successfully!');
|
|
89
|
+
const choices = configs.configurations.map((config) => ({
|
|
90
|
+
value: {
|
|
91
|
+
id: config.configurationId,
|
|
92
|
+
auth: config.auth,
|
|
93
|
+
},
|
|
94
|
+
name: `${config.name} [id: ${config.configurationId}]`,
|
|
95
|
+
}));
|
|
96
|
+
choices.push({
|
|
97
|
+
value: {
|
|
98
|
+
id: 'new-config',
|
|
99
|
+
auth: undefined,
|
|
100
|
+
},
|
|
101
|
+
name: 'Create new login config',
|
|
112
102
|
});
|
|
113
|
-
await (0,
|
|
114
|
-
|
|
103
|
+
const selectedConfig = await (0, prompts_1.select)({
|
|
104
|
+
message: 'Select a login configuration to use in your reference application',
|
|
105
|
+
choices,
|
|
106
|
+
});
|
|
107
|
+
let newConfigClientSecret = undefined;
|
|
108
|
+
// Create a new login config
|
|
109
|
+
if (selectedConfig.id === 'new-config') {
|
|
110
|
+
const newConfigName = (0, validators_1.validateInputLength)(await (0, prompts_1.input)({ message: `Enter a name for the login config` }), validators_1.INPUT_LIMIT);
|
|
111
|
+
const redirectUri = (0, app_1.getRedirectUri)(GenerateApp.apps, appName);
|
|
112
|
+
const createLoginConfigInput = {
|
|
113
|
+
name: newConfigName,
|
|
114
|
+
redirectUris: [redirectUri],
|
|
115
|
+
};
|
|
116
|
+
const createConfigOutput = await vp_adapter_1.vpAdapterService.createLoginConfig(createLoginConfigInput);
|
|
117
|
+
this.warn(this.chalk.red.bold('Please save the clientSecret somewhere safe. You will not be able to view it again.'));
|
|
118
|
+
this.logJson({ loginConfig: createConfigOutput.auth });
|
|
119
|
+
selectedConfig.id = createConfigOutput.configurationId;
|
|
120
|
+
selectedConfig.auth = createConfigOutput.auth;
|
|
121
|
+
newConfigClientSecret = createConfigOutput.auth.clientSecret;
|
|
122
|
+
}
|
|
123
|
+
const clientSecret = newConfigClientSecret ??
|
|
124
|
+
(0, validators_1.validateInputLength)(await (0, password_1.default)({
|
|
125
|
+
message: "What is the login configuration's client secret?",
|
|
126
|
+
mask: true,
|
|
127
|
+
}), validators_1.INPUT_LIMIT);
|
|
128
|
+
if (provider === common_1.RefAppProvider.AFFINIDI) {
|
|
129
|
+
core_1.ux.action.start('Configuring reference application');
|
|
130
|
+
await (0, env_configurer_1.configureAppEnvironment)(validatedFlags.path, selectedConfig.auth.clientId, clientSecret, selectedConfig.auth.issuer);
|
|
131
|
+
core_1.ux.action.stop('Configured successfully!');
|
|
132
|
+
}
|
|
133
|
+
else if (provider === common_1.RefAppProvider.AUTH0) {
|
|
134
|
+
const domain = (0, validators_1.validateInputLength)(await (0, prompts_1.input)({ message: 'What is your Auth0 tenant URL?' }), validators_1.INPUT_LIMIT);
|
|
135
|
+
const accessToken = (0, validators_1.validateInputLength)(await (0, password_1.default)({ message: 'What is your Auth0 access token?' }), validators_1.TOKEN_LIMIT);
|
|
136
|
+
core_1.ux.action.start('Creating Auth0 resources and configuring reference application');
|
|
137
|
+
const socialConnectionName = `Affinidi-${framework}`;
|
|
138
|
+
const { auth0ClientId, auth0ClientSecret, connectionName } = await (0, auth0_1.createAuth0Resources)(accessToken, domain, selectedConfig.auth.clientId, clientSecret, selectedConfig.auth.issuer, socialConnectionName, {
|
|
139
|
+
callbackUrl: GenerateApp.apps.appName.redirectUris.callbackUrl,
|
|
140
|
+
logOutUrl: GenerateApp.apps.appName.redirectUris.logOutUrl,
|
|
141
|
+
webOriginUrl: GenerateApp.apps.appName.redirectUris.webOriginUrl,
|
|
142
|
+
});
|
|
143
|
+
await (0, env_configurer_1.configureAppEnvironment)(validatedFlags.path, auth0ClientId, auth0ClientSecret, domain, connectionName);
|
|
144
|
+
core_1.ux.action.stop('Configured successfully!');
|
|
145
|
+
}
|
|
115
146
|
}
|
|
116
147
|
}
|
|
148
|
+
this.log('Please read the generated README for instructions on how to run your reference application');
|
|
149
|
+
}
|
|
150
|
+
catch (err) {
|
|
151
|
+
if (!err?.oclif)
|
|
152
|
+
throw new errors_1.CLIError('Unexpected error while generating reference app');
|
|
153
|
+
else
|
|
154
|
+
throw new errors_1.CLIError(err);
|
|
117
155
|
}
|
|
118
|
-
this.log('Please read the generated README for instructions on how to run your reference application');
|
|
119
156
|
}
|
|
120
157
|
}
|
|
121
158
|
exports.default = GenerateApp;
|
|
122
159
|
GenerateApp.providers = [];
|
|
123
|
-
GenerateApp.frameworks = [];
|
|
124
160
|
GenerateApp.summary = 'Generates a reference application that integrates Affinidi Login. Requires git';
|
|
125
161
|
GenerateApp.examples = [
|
|
126
162
|
'<%= config.bin %> <%= command.id %>',
|
|
@@ -128,13 +164,17 @@ GenerateApp.examples = [
|
|
|
128
164
|
'<%= config.bin %> <%= command.id %> --path "../my-app" --framework django --provider affinidi --force',
|
|
129
165
|
];
|
|
130
166
|
GenerateApp.flags = {
|
|
167
|
+
provider: core_1.Flags.string({
|
|
168
|
+
char: 'a',
|
|
169
|
+
summary: 'Authentication provider for the reference app',
|
|
170
|
+
}),
|
|
131
171
|
framework: core_1.Flags.string({
|
|
132
172
|
char: 'f',
|
|
133
173
|
summary: 'Framework for the reference app',
|
|
134
174
|
}),
|
|
135
|
-
|
|
136
|
-
char: '
|
|
137
|
-
summary: '
|
|
175
|
+
library: core_1.Flags.string({
|
|
176
|
+
char: 'l',
|
|
177
|
+
summary: 'Library for the reference app',
|
|
138
178
|
}),
|
|
139
179
|
path: core_1.Flags.string({
|
|
140
180
|
char: 'p',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/commands/generate/app.ts"],"names":[],"mappings":";;;AAAA,0EAAyC;AACzC,+CAA0D;AAC1D,sCAAuC;AACvC,mDAAiD;AACjD,sDAAmB;AACnB,yCAA0D;AAC1D,gEAAuE;AACvE,kDAA+D;AAC/D,wDAAuF;AACvF,
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/commands/generate/app.ts"],"names":[],"mappings":"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"}
|
package/dist/helpers/app.d.ts
CHANGED
|
@@ -1,11 +1,19 @@
|
|
|
1
|
-
export
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
export type AppsInformation = {
|
|
2
|
+
[key: string]: {
|
|
3
|
+
[innerKey: string]: {
|
|
4
|
+
[innermostKey: string]: string;
|
|
5
|
+
};
|
|
6
|
+
};
|
|
7
|
+
};
|
|
8
|
+
export declare function getAppName(framework: string, provider: string, library: string): string;
|
|
9
|
+
export declare function getApps(filePath: string): Promise<AppsInformation>;
|
|
10
|
+
export declare function getSupportedSampleApps(appsInformation: AppsInformation): string[];
|
|
4
11
|
export declare function getSupportedProviders(sampleApps: string[]): string[];
|
|
5
|
-
export declare function getSupportedFrameworks(sampleApps: string[]): string[]
|
|
12
|
+
export declare function getSupportedFrameworks(sampleApps: string[]): Map<string, string[]>;
|
|
6
13
|
export declare function getSupportedLibraries(sampleApps: string[]): Map<string, string[]>;
|
|
7
|
-
export declare function getSupportedAppsInformation(apps:
|
|
14
|
+
export declare function getSupportedAppsInformation(apps: AppsInformation): {
|
|
8
15
|
providers: string[];
|
|
9
|
-
frameworks: string[]
|
|
16
|
+
frameworks: Map<string, string[]>;
|
|
10
17
|
libraries: Map<string, string[]>;
|
|
11
18
|
};
|
|
19
|
+
export declare function getRedirectUri(apps: AppsInformation, appName: string): string;
|
package/dist/helpers/app.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getSupportedAppsInformation = exports.getSupportedLibraries = exports.getSupportedFrameworks = exports.getSupportedProviders = exports.getSupportedSampleApps = exports.getApps = exports.getAppName = void 0;
|
|
3
|
+
exports.getRedirectUri = exports.getSupportedAppsInformation = exports.getSupportedLibraries = exports.getSupportedFrameworks = exports.getSupportedProviders = exports.getSupportedSampleApps = exports.getApps = exports.getAppName = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const errors_1 = require("@oclif/core/lib/errors");
|
|
6
6
|
const axios_1 = tslib_1.__importDefault(require("axios"));
|
|
7
|
-
function getAppName(framework, provider,
|
|
8
|
-
return `${provider}-${framework}-${
|
|
7
|
+
function getAppName(framework, provider, library) {
|
|
8
|
+
return `${provider}-${framework}-${library}`;
|
|
9
9
|
}
|
|
10
10
|
exports.getAppName = getAppName;
|
|
11
11
|
async function getApps(filePath) {
|
|
@@ -46,11 +46,17 @@ function getSupportedProviders(sampleApps) {
|
|
|
46
46
|
exports.getSupportedProviders = getSupportedProviders;
|
|
47
47
|
function getSupportedFrameworks(sampleApps) {
|
|
48
48
|
try {
|
|
49
|
-
const frameworks =
|
|
49
|
+
const frameworks = new Map();
|
|
50
50
|
for (const sampleApp of sampleApps) {
|
|
51
51
|
const nameSplit = sampleApp.split('-');
|
|
52
|
-
|
|
53
|
-
|
|
52
|
+
const provider = nameSplit[0];
|
|
53
|
+
const frameworkNames = frameworks.get(provider);
|
|
54
|
+
if (!frameworkNames) {
|
|
55
|
+
frameworks.set(provider, [nameSplit[1]]);
|
|
56
|
+
}
|
|
57
|
+
else if (!frameworkNames.includes(nameSplit[1])) {
|
|
58
|
+
frameworkNames.push(nameSplit[1]);
|
|
59
|
+
frameworks.set(provider, frameworkNames);
|
|
54
60
|
}
|
|
55
61
|
}
|
|
56
62
|
return frameworks;
|
|
@@ -62,19 +68,21 @@ function getSupportedFrameworks(sampleApps) {
|
|
|
62
68
|
exports.getSupportedFrameworks = getSupportedFrameworks;
|
|
63
69
|
function getSupportedLibraries(sampleApps) {
|
|
64
70
|
try {
|
|
65
|
-
const
|
|
71
|
+
const libraries = new Map();
|
|
66
72
|
for (const sampleApp of sampleApps) {
|
|
67
73
|
const nameSplit = sampleApp.split('-');
|
|
74
|
+
const provider = nameSplit[0];
|
|
68
75
|
const framework = nameSplit[1];
|
|
69
|
-
const libNames =
|
|
76
|
+
const libNames = libraries.get(`${provider}-${framework}`);
|
|
70
77
|
if (!libNames) {
|
|
71
|
-
|
|
78
|
+
libraries.set(`${provider}-${framework}`, [nameSplit[2]]);
|
|
72
79
|
}
|
|
73
80
|
else if (!libNames.includes(nameSplit[2])) {
|
|
74
81
|
libNames.push(nameSplit[2]);
|
|
82
|
+
libraries.set(`${provider}-${framework}`, libNames);
|
|
75
83
|
}
|
|
76
84
|
}
|
|
77
|
-
return
|
|
85
|
+
return libraries;
|
|
78
86
|
}
|
|
79
87
|
catch (err) {
|
|
80
88
|
throw new errors_1.CLIError('Unable to fetch supported libraries');
|
|
@@ -89,4 +97,8 @@ function getSupportedAppsInformation(apps) {
|
|
|
89
97
|
return { providers, frameworks, libraries };
|
|
90
98
|
}
|
|
91
99
|
exports.getSupportedAppsInformation = getSupportedAppsInformation;
|
|
100
|
+
function getRedirectUri(apps, appName) {
|
|
101
|
+
return apps[appName].redirectUris.callbackUrl;
|
|
102
|
+
}
|
|
103
|
+
exports.getRedirectUri = getRedirectUri;
|
|
92
104
|
//# sourceMappingURL=app.js.map
|
package/dist/helpers/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/helpers/app.ts"],"names":[],"mappings":";;;;AAAA,mDAAiD;AACjD,0DAAyB;
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/helpers/app.ts"],"names":[],"mappings":"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"}
|
package/dist/helpers/jwk.d.ts
CHANGED
|
@@ -2,3 +2,5 @@ import * as jose from 'jose';
|
|
|
2
2
|
import { SupportedAlgorithms, SupportedKeyTypes } from '../common';
|
|
3
3
|
export declare function pemToJWK(publicKeyPEM: string, algorithm: SupportedAlgorithms): Promise<jose.JWK>;
|
|
4
4
|
export declare function getKeyType(algorithm: SupportedAlgorithms): SupportedKeyTypes;
|
|
5
|
+
export declare function JWKToPem(publicKey: jose.KeyLike): Promise<string>;
|
|
6
|
+
export declare function decryptSessionIdWithPrivateKey(message: string, privateKey: jose.KeyLike): Promise<string>;
|
package/dist/helpers/jwk.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getKeyType = exports.pemToJWK = void 0;
|
|
3
|
+
exports.decryptSessionIdWithPrivateKey = exports.JWKToPem = exports.getKeyType = exports.pemToJWK = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const errors_1 = require("@oclif/core/lib/errors");
|
|
6
6
|
const jose = tslib_1.__importStar(require("jose"));
|
|
@@ -26,4 +26,24 @@ function getKeyType(algorithm) {
|
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
exports.getKeyType = getKeyType;
|
|
29
|
+
async function JWKToPem(publicKey) {
|
|
30
|
+
try {
|
|
31
|
+
return await jose.exportSPKI(publicKey);
|
|
32
|
+
}
|
|
33
|
+
catch (_) {
|
|
34
|
+
throw new errors_1.CLIError('Unable to convert the provided public key to pem format');
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
exports.JWKToPem = JWKToPem;
|
|
38
|
+
async function decryptSessionIdWithPrivateKey(message, privateKey) {
|
|
39
|
+
try {
|
|
40
|
+
const { plaintext } = await jose.compactDecrypt(message, privateKey);
|
|
41
|
+
const decoder = new TextDecoder();
|
|
42
|
+
return decoder.decode(plaintext);
|
|
43
|
+
}
|
|
44
|
+
catch (_) {
|
|
45
|
+
throw new errors_1.CLIError('Unable to decrypt the message with the private-key');
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
exports.decryptSessionIdWithPrivateKey = decryptSessionIdWithPrivateKey;
|
|
29
49
|
//# sourceMappingURL=jwk.js.map
|
package/dist/helpers/jwk.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jwk.js","sourceRoot":"","sources":["../../src/helpers/jwk.ts"],"names":[],"mappings":";;;;AAAA,mDAAiD;AACjD,mDAA4B;AAC5B,sCAAkE;AAE3D,KAAK,UAAU,QAAQ,CAAC,YAAoB,EAAE,SAA8B;IACjF,IAAI;QACF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,SAAS,CAAC,CAAA;QAChE,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;KACvC;IAAC,OAAO,KAAK,EAAE;QACd,MAAM,IAAI,iBAAQ,CAAC,0CAA0C,CAAC,CAAA;KAC/D;AACH,CAAC;AAPD,4BAOC;AAED,SAAgB,UAAU,CAAC,SAA8B;IACvD,QAAQ,SAAS,EAAE;QACjB,KAAK,4BAAmB,CAAC,KAAK,CAAC;QAC/B,KAAK,4BAAmB,CAAC,KAAK;YAC5B,OAAO,0BAAiB,CAAC,EAAE,CAAA;QAC7B,KAAK,4BAAmB,CAAC,KAAK,CAAC;QAC/B,KAAK,4BAAmB,CAAC,KAAK;YAC5B,OAAO,0BAAiB,CAAC,GAAG,CAAA;KAC/B;AACH,CAAC;AATD,gCASC"}
|
|
1
|
+
{"version":3,"file":"jwk.js","sourceRoot":"","sources":["../../src/helpers/jwk.ts"],"names":[],"mappings":";;;;AAAA,mDAAiD;AACjD,mDAA4B;AAC5B,sCAAkE;AAE3D,KAAK,UAAU,QAAQ,CAAC,YAAoB,EAAE,SAA8B;IACjF,IAAI;QACF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,SAAS,CAAC,CAAA;QAChE,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;KACvC;IAAC,OAAO,KAAK,EAAE;QACd,MAAM,IAAI,iBAAQ,CAAC,0CAA0C,CAAC,CAAA;KAC/D;AACH,CAAC;AAPD,4BAOC;AAED,SAAgB,UAAU,CAAC,SAA8B;IACvD,QAAQ,SAAS,EAAE;QACjB,KAAK,4BAAmB,CAAC,KAAK,CAAC;QAC/B,KAAK,4BAAmB,CAAC,KAAK;YAC5B,OAAO,0BAAiB,CAAC,EAAE,CAAA;QAC7B,KAAK,4BAAmB,CAAC,KAAK,CAAC;QAC/B,KAAK,4BAAmB,CAAC,KAAK;YAC5B,OAAO,0BAAiB,CAAC,GAAG,CAAA;KAC/B;AACH,CAAC;AATD,gCASC;AAEM,KAAK,UAAU,QAAQ,CAAC,SAAuB;IACpD,IAAI;QACF,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;KACxC;IAAC,OAAO,CAAC,EAAE;QACV,MAAM,IAAI,iBAAQ,CAAC,yDAAyD,CAAC,CAAA;KAC9E;AACH,CAAC;AAND,4BAMC;AAEM,KAAK,UAAU,8BAA8B,CAAC,OAAe,EAAE,UAAwB;IAC5F,IAAI;QACF,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,UAAU,CAAC,CAAA;QACpE,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAA;QACjC,OAAO,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;KACjC;IAAC,OAAO,CAAC,EAAE;QACV,MAAM,IAAI,iBAAQ,CAAC,oDAAoD,CAAC,CAAA;KACzE;AACH,CAAC;AARD,wEAQC"}
|
|
@@ -1,8 +1,12 @@
|
|
|
1
|
+
import { KeyLike } from 'jose';
|
|
1
2
|
import { AuthProvider, AuthProviderConfig } from './types';
|
|
2
3
|
export declare class BFFAuthProvider implements AuthProvider {
|
|
3
4
|
private readonly logger;
|
|
4
5
|
constructor({ logger }: AuthProviderConfig);
|
|
5
|
-
authenticate(
|
|
6
|
+
authenticate({ privateKey, publicKey }: {
|
|
7
|
+
privateKey: KeyLike;
|
|
8
|
+
publicKey: KeyLike;
|
|
9
|
+
}): Promise<string>;
|
|
6
10
|
/**
|
|
7
11
|
* Handles `Success` case when the user accepts
|
|
8
12
|
* the access to the personal data.
|
|
@@ -8,6 +8,7 @@ const helmet_1 = tslib_1.__importDefault(require("helmet"));
|
|
|
8
8
|
const open_1 = tslib_1.__importDefault(require("open"));
|
|
9
9
|
const tcp_port_used_1 = require("tcp-port-used");
|
|
10
10
|
const auth_result_page_1 = require("./auth-result-page");
|
|
11
|
+
const jwk_1 = require("../../../helpers/jwk");
|
|
11
12
|
const credentials_vault_1 = require("../../credentials-vault");
|
|
12
13
|
const env_config_1 = require("../../env-config");
|
|
13
14
|
const bff_service_1 = require("../bff-service");
|
|
@@ -15,14 +16,14 @@ class BFFAuthProvider {
|
|
|
15
16
|
constructor({ logger }) {
|
|
16
17
|
this.logger = logger;
|
|
17
18
|
}
|
|
18
|
-
async authenticate() {
|
|
19
|
+
async authenticate({ privateKey, publicKey }) {
|
|
19
20
|
const port = 64287;
|
|
20
21
|
const isPortInUse = await (0, tcp_port_used_1.check)(env_config_1.config.redirectPort);
|
|
21
22
|
if (isPortInUse) {
|
|
22
23
|
throw new Error(`\nš„ Port [${port}] is unavailable. Affinidi CLI is currently relying on it.\n` +
|
|
23
24
|
`Please close the process that is using port [${port}] and try again.`);
|
|
24
25
|
}
|
|
25
|
-
const authUrl = await bff_service_1.bffService.
|
|
26
|
+
const authUrl = await bff_service_1.bffService.postAuthUrl(await (0, jwk_1.JWKToPem)(publicKey));
|
|
26
27
|
const state = authUrl.searchParams.get('state');
|
|
27
28
|
if (!state) {
|
|
28
29
|
throw new Error('Unexpected error occurred. state parameter missing');
|
|
@@ -51,7 +52,7 @@ class BFFAuthProvider {
|
|
|
51
52
|
this.shutDownServer(server);
|
|
52
53
|
}
|
|
53
54
|
else {
|
|
54
|
-
await this.handleSuccess({ resolve, reject, res, timeout, state });
|
|
55
|
+
await this.handleSuccess({ privateKey, resolve, reject, res, timeout, state });
|
|
55
56
|
this.shutDownServer(server);
|
|
56
57
|
}
|
|
57
58
|
});
|
|
@@ -71,14 +72,16 @@ class BFFAuthProvider {
|
|
|
71
72
|
* @private
|
|
72
73
|
*/
|
|
73
74
|
async handleSuccess(params) {
|
|
74
|
-
const { resolve, reject, res, timeout, state } = params;
|
|
75
|
+
const { privateKey, resolve, reject, res, timeout, state } = params;
|
|
75
76
|
clearTimeout(timeout);
|
|
76
77
|
try {
|
|
77
78
|
this.logger.debug(`Getting sessionId for state: ${JSON.stringify(state)}`);
|
|
78
|
-
const
|
|
79
|
+
const encryptedSessionIdBase64 = await bff_service_1.bffService.getSessionId(state);
|
|
80
|
+
const encryptedSessionId = Buffer.from(encryptedSessionIdBase64, 'base64').toString('utf-8');
|
|
81
|
+
const sessionId = await (0, jwk_1.decryptSessionIdWithPrivateKey)(encryptedSessionId, privateKey);
|
|
79
82
|
this.logger.debug(`Received session: ${JSON.stringify(sessionId)}`);
|
|
80
|
-
credentials_vault_1.credentialsVault.setSessionId(sessionId);
|
|
81
|
-
this.logger.debug(
|
|
83
|
+
await credentials_vault_1.credentialsVault.setSessionId(sessionId);
|
|
84
|
+
this.logger.debug('Session stored in vault');
|
|
82
85
|
resolve(sessionId);
|
|
83
86
|
res.end((0, auth_result_page_1.authResultPage)('Logged in successfully', 'Head back to the terminal to continue using Affinidi CLI.<br><br>You can also access our services from the <a href="https://portal.affinidi.com" target="_blank">Affindi Portal</a>'));
|
|
84
87
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bff-auth-provider.js","sourceRoot":"","sources":["../../../../src/services/affinidi/auth/bff-auth-provider.ts"],"names":[],"mappings":";;;;AACA,0DAAyB;AACzB,8DAA6B;AAC7B,4DAA2B;
|
|
1
|
+
{"version":3,"file":"bff-auth-provider.js","sourceRoot":"","sources":["../../../../src/services/affinidi/auth/bff-auth-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
|
+
import { KeyLike } from 'jose';
|
|
1
2
|
import { LoggerAdapter } from '../logger';
|
|
2
3
|
export interface AuthProvider {
|
|
3
|
-
authenticate(
|
|
4
|
+
authenticate(keys: {
|
|
5
|
+
privateKey: KeyLike;
|
|
6
|
+
publicKey: KeyLike;
|
|
7
|
+
}): Promise<string>;
|
|
4
8
|
}
|
|
5
9
|
export type AuthProviderConfig = {
|
|
6
10
|
logger: LoggerAdapter;
|