@affinidi/cli 2.6.0 → 2.7.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/dist/commands/generate/app.js +74 -29
- package/dist/commands/generate/app.js.map +1 -1
- package/dist/commands/token/create-token.d.ts +0 -4
- package/dist/commands/token/create-token.js +7 -82
- package/dist/commands/token/create-token.js.map +1 -1
- package/dist/helpers/app.d.ts +38 -2
- package/dist/helpers/app.js +7 -1
- package/dist/helpers/app.js.map +1 -1
- package/dist/helpers/token.d.ts +30 -0
- package/dist/helpers/token.js +85 -0
- package/dist/helpers/token.js.map +1 -0
- package/dist/services/generator/env-configurer.d.ts +12 -1
- package/dist/services/generator/env-configurer.js +11 -6
- package/dist/services/generator/env-configurer.js.map +1 -1
- package/package.json +4 -4
|
@@ -12,9 +12,12 @@ const prompts_2 = require("../../common/prompts");
|
|
|
12
12
|
const validators_1 = require("../../common/validators");
|
|
13
13
|
const app_1 = require("../../helpers/app");
|
|
14
14
|
const degit_1 = require("../../helpers/degit");
|
|
15
|
+
const token_1 = require("../../helpers/token");
|
|
15
16
|
const vp_adapter_1 = require("../../services/affinidi/vp-adapter");
|
|
16
17
|
const auth0_1 = require("../../services/generator/auth0");
|
|
17
18
|
const env_configurer_1 = require("../../services/generator/env-configurer");
|
|
19
|
+
const uuid_1 = require("uuid");
|
|
20
|
+
const bff_service_1 = require("../../services/affinidi/bff-service");
|
|
18
21
|
const APPS_INFORMATION_GITHUB_LOCATION = 'samples/apps.json';
|
|
19
22
|
const APPS_GITHUB_LOCATION = 'affinidi/reference-app-affinidi-vault/samples';
|
|
20
23
|
class GenerateApp extends common_1.BaseCommand {
|
|
@@ -41,23 +44,29 @@ class GenerateApp extends common_1.BaseCommand {
|
|
|
41
44
|
}
|
|
42
45
|
const provider = flags.provider ??
|
|
43
46
|
(await (0, prompts_1.select)({
|
|
44
|
-
message: 'Select the provider for the sample app
|
|
47
|
+
message: 'Select the provider for the sample app',
|
|
45
48
|
choices: GenerateApp.providers.map((value) => ({
|
|
46
49
|
name: value,
|
|
47
50
|
value,
|
|
48
51
|
})),
|
|
49
52
|
}));
|
|
53
|
+
// Make nextjs first option
|
|
54
|
+
const frameworks = GenerateApp.frameworks.get(provider);
|
|
55
|
+
const nextJsIndex = frameworks.indexOf('nextjs');
|
|
56
|
+
if (nextJsIndex > 0) {
|
|
57
|
+
frameworks.unshift(frameworks.splice(nextJsIndex, 1)[0]);
|
|
58
|
+
}
|
|
50
59
|
const framework = flags.framework ??
|
|
51
60
|
(await (0, prompts_1.select)({
|
|
52
|
-
message: 'Select the framework for the sample app
|
|
53
|
-
choices:
|
|
61
|
+
message: 'Select the framework for the sample app',
|
|
62
|
+
choices: frameworks.map((value) => ({
|
|
54
63
|
name: value,
|
|
55
64
|
value,
|
|
56
65
|
})),
|
|
57
66
|
}));
|
|
58
67
|
const library = flags.library ??
|
|
59
68
|
(await (0, prompts_1.select)({
|
|
60
|
-
message: 'Select the library for the sample app
|
|
69
|
+
message: 'Select the library for the sample app',
|
|
61
70
|
choices: GenerateApp.libraries.get(`${provider}-${framework}`).map((value) => ({
|
|
62
71
|
name: value,
|
|
63
72
|
value,
|
|
@@ -77,12 +86,13 @@ class GenerateApp extends common_1.BaseCommand {
|
|
|
77
86
|
const appName = (0, app_1.getAppName)(framework, provider, library);
|
|
78
87
|
core_1.ux.action.start('Generating sample app');
|
|
79
88
|
await (0, degit_1.cloneWithDegit)(`${APPS_GITHUB_LOCATION}/${appName}`, validatedFlags.path, flags.force);
|
|
89
|
+
// await cloneWithDegit(`${APPS_GITHUB_LOCATION}/${appName}#token-metadata`, validatedFlags.path, flags.force)
|
|
80
90
|
core_1.ux.action.stop('Generated successfully!');
|
|
81
91
|
if (!flags['no-input']) {
|
|
82
|
-
const
|
|
83
|
-
message: 'Automatically configure
|
|
92
|
+
const configureLogin = await (0, prompts_1.confirm)({
|
|
93
|
+
message: 'Automatically configure Affinidi Login?',
|
|
84
94
|
});
|
|
85
|
-
if (
|
|
95
|
+
if (configureLogin) {
|
|
86
96
|
core_1.ux.action.start('Fetching available login configurations');
|
|
87
97
|
const configs = await vp_adapter_1.vpAdapterService.listLoginConfigurations();
|
|
88
98
|
core_1.ux.action.stop('Fetched successfully!');
|
|
@@ -93,7 +103,7 @@ class GenerateApp extends common_1.BaseCommand {
|
|
|
93
103
|
},
|
|
94
104
|
name: `${config.name} [id: ${config.configurationId}]`,
|
|
95
105
|
}));
|
|
96
|
-
choices.
|
|
106
|
+
choices.unshift({
|
|
97
107
|
value: {
|
|
98
108
|
id: 'new-config',
|
|
99
109
|
auth: undefined,
|
|
@@ -104,48 +114,83 @@ class GenerateApp extends common_1.BaseCommand {
|
|
|
104
114
|
message: 'Select a login configuration to use in your sample app',
|
|
105
115
|
choices,
|
|
106
116
|
});
|
|
107
|
-
let newConfigClientSecret = undefined;
|
|
108
117
|
// Create a new login config
|
|
109
118
|
if (selectedConfig.id === 'new-config') {
|
|
110
|
-
const newConfigName = (0, validators_1.validateInputLength)(await (0, prompts_1.input)({
|
|
119
|
+
const newConfigName = (0, validators_1.validateInputLength)(await (0, prompts_1.input)({
|
|
120
|
+
message: `Enter a name for the login config`,
|
|
121
|
+
default: `sample-login-config-${Math.random().toString(36).slice(2, 7)}`,
|
|
122
|
+
}), validators_1.INPUT_LIMIT);
|
|
123
|
+
core_1.ux.action.start('Creating login configuration');
|
|
111
124
|
const redirectUri = (0, app_1.getRedirectUri)(GenerateApp.apps, appName);
|
|
112
125
|
const createLoginConfigInput = {
|
|
113
126
|
name: newConfigName,
|
|
114
127
|
redirectUris: [redirectUri],
|
|
115
128
|
};
|
|
116
129
|
const createConfigOutput = await vp_adapter_1.vpAdapterService.createLoginConfig(createLoginConfigInput);
|
|
117
|
-
|
|
130
|
+
core_1.ux.action.stop('Created successfully!');
|
|
118
131
|
this.logJson({ loginConfig: createConfigOutput.auth });
|
|
132
|
+
this.warn(this.chalk.yellowBright.bold("\nPlease save the clientSecret somewhere safe. It will be added to the app env's file. You will not be able to view it again.\n"));
|
|
119
133
|
selectedConfig.id = createConfigOutput.configurationId;
|
|
120
134
|
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 sample app');
|
|
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
135
|
}
|
|
133
|
-
|
|
136
|
+
let clientId = selectedConfig.auth.clientId;
|
|
137
|
+
let clientSecret = selectedConfig.auth.clientSecret;
|
|
138
|
+
let issuer = selectedConfig.auth.issuer;
|
|
139
|
+
let connectionName;
|
|
140
|
+
clientSecret ?? (clientSecret = (0, validators_1.validateInputLength)(await (0, password_1.default)({
|
|
141
|
+
message: "What is the login configuration's client secret?",
|
|
142
|
+
mask: true,
|
|
143
|
+
}), validators_1.INPUT_LIMIT));
|
|
144
|
+
if (provider === common_1.RefAppProvider.AUTH0) {
|
|
134
145
|
const domain = (0, validators_1.validateInputLength)(await (0, prompts_1.input)({ message: 'What is your Auth0 tenant URL?' }), validators_1.INPUT_LIMIT);
|
|
135
146
|
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
|
|
137
|
-
|
|
138
|
-
const { auth0ClientId, auth0ClientSecret
|
|
147
|
+
core_1.ux.action.start('Creating Auth0 resources');
|
|
148
|
+
connectionName = `Affinidi-${framework}`;
|
|
149
|
+
const { auth0ClientId, auth0ClientSecret } = await (0, auth0_1.createAuth0Resources)(accessToken, domain, selectedConfig.auth.clientId, clientSecret, selectedConfig.auth.issuer, connectionName, {
|
|
139
150
|
callbackUrl: GenerateApp.apps.appName.redirectUris.callbackUrl,
|
|
140
151
|
logOutUrl: GenerateApp.apps.appName.redirectUris.logOutUrl,
|
|
141
152
|
webOriginUrl: GenerateApp.apps.appName.redirectUris.webOriginUrl,
|
|
142
153
|
});
|
|
143
|
-
|
|
144
|
-
|
|
154
|
+
clientId = auth0ClientId;
|
|
155
|
+
clientSecret = auth0ClientSecret;
|
|
156
|
+
issuer = domain;
|
|
157
|
+
core_1.ux.action.stop('Created successfully!');
|
|
158
|
+
}
|
|
159
|
+
const tokenMetadata = (0, app_1.getAppMetadataToken)(GenerateApp.apps, appName);
|
|
160
|
+
let tokenParams;
|
|
161
|
+
if (tokenMetadata) {
|
|
162
|
+
const configureToken = await (0, prompts_1.confirm)({
|
|
163
|
+
message: 'Configure Personal Access Token to enable features like credential issuance and Affinidi Iota Framework?',
|
|
164
|
+
});
|
|
165
|
+
if (configureToken) {
|
|
166
|
+
core_1.ux.action.start('Creating Personal Access Token and assigning app permissions on active project');
|
|
167
|
+
const keypair = (0, token_1.generateKeyPair)((0, uuid_1.v4)(), common_1.SupportedAlgorithms.RS256);
|
|
168
|
+
const jwks = keypair.jwks;
|
|
169
|
+
const tokenName = `sample-app-token-${Math.random().toString(36).slice(2, 7)}`;
|
|
170
|
+
const token = await (0, token_1.createToken)(tokenName, common_1.SupportedAlgorithms.RS256, jwks);
|
|
171
|
+
const promises = [(0, token_1.addPrincipal)(token.id), bff_service_1.bffService.getActiveProject()];
|
|
172
|
+
const [, activeProject] = await Promise.all(promises);
|
|
173
|
+
const projectId = activeProject.id;
|
|
174
|
+
await (0, token_1.updatePolicies)(token.id, projectId, tokenMetadata.policy.actions, [`*:${projectId}:*`]);
|
|
175
|
+
tokenParams = {
|
|
176
|
+
projectId,
|
|
177
|
+
tokenId: token.id,
|
|
178
|
+
privateKey: keypair.privateKey,
|
|
179
|
+
};
|
|
180
|
+
core_1.ux.action.stop('Created successfully!');
|
|
181
|
+
this.logJson(tokenParams);
|
|
182
|
+
this.warn(this.chalk.yellowBright.bold("\nPlease save the privateKey somewhere safe. It will be added to the app env's file. You will not be able to view it again.\n"));
|
|
183
|
+
}
|
|
145
184
|
}
|
|
185
|
+
await (0, env_configurer_1.configureAppEnvironment)(validatedFlags.path, {
|
|
186
|
+
clientId,
|
|
187
|
+
clientSecret,
|
|
188
|
+
issuer,
|
|
189
|
+
connectionName,
|
|
190
|
+
}, tokenParams);
|
|
146
191
|
}
|
|
147
192
|
}
|
|
148
|
-
this.log('
|
|
193
|
+
this.log('\nPlease read the generated README for instructions on how to run your sample app\n');
|
|
149
194
|
}
|
|
150
195
|
catch (err) {
|
|
151
196
|
if (!err?.oclif)
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/commands/generate/app.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.CreateToken = void 0;
|
|
4
4
|
const promises_1 = require("fs/promises");
|
|
5
|
-
const node_crypto_1 = require("node:crypto");
|
|
6
5
|
const prompts_1 = require("@inquirer/prompts");
|
|
7
6
|
const core_1 = require("@oclif/core");
|
|
8
7
|
const uuid_1 = require("uuid");
|
|
@@ -12,7 +11,7 @@ const prompts_2 = require("../../common/prompts");
|
|
|
12
11
|
const validators_1 = require("../../common/validators");
|
|
13
12
|
const jwk_1 = require("../../helpers/jwk");
|
|
14
13
|
const bff_service_1 = require("../../services/affinidi/bff-service");
|
|
15
|
-
const
|
|
14
|
+
const token_1 = require("../../helpers/token");
|
|
16
15
|
const flagsSchema = zod_1.z
|
|
17
16
|
.object({
|
|
18
17
|
name: zod_1.z.string().max(validators_1.INPUT_LIMIT),
|
|
@@ -42,7 +41,7 @@ class CreateToken extends common_1.BaseCommand {
|
|
|
42
41
|
let keypair, jwks;
|
|
43
42
|
const kid = validatedFlags['key-id'] ?? (0, uuid_1.v4)();
|
|
44
43
|
if (validatedFlags['auto-generate-key']) {
|
|
45
|
-
keypair =
|
|
44
|
+
keypair = (0, token_1.generateKeyPair)(kid, validatedFlags.algorithm, validatedFlags.passphrase);
|
|
46
45
|
jwks = keypair.jwks;
|
|
47
46
|
}
|
|
48
47
|
else {
|
|
@@ -61,19 +60,19 @@ class CreateToken extends common_1.BaseCommand {
|
|
|
61
60
|
],
|
|
62
61
|
};
|
|
63
62
|
}
|
|
64
|
-
const token = await
|
|
63
|
+
const token = await (0, token_1.createToken)(validatedFlags.name, validatedFlags.algorithm, jwks, validatedFlags['key-id']);
|
|
65
64
|
core_1.ux.action.stop('Created successfully!');
|
|
66
65
|
let projectId;
|
|
67
66
|
if (validatedFlags['with-permissions']) {
|
|
68
67
|
core_1.ux.action.start('Adding token to active project');
|
|
69
|
-
const promises = [
|
|
68
|
+
const promises = [(0, token_1.addPrincipal)(token.id), bff_service_1.bffService.getActiveProject()];
|
|
70
69
|
const [, activeProject] = await Promise.all(promises);
|
|
71
70
|
projectId = activeProject.id;
|
|
72
71
|
core_1.ux.action.stop('Added successfully!');
|
|
73
72
|
core_1.ux.action.start('Granting permissions to token');
|
|
74
73
|
const actions = validatedFlags.actions ? validatedFlags.actions.split(' ') : ['*'];
|
|
75
74
|
const resources = validatedFlags.actions ? validatedFlags.actions.split(' ') : ['*'];
|
|
76
|
-
await
|
|
75
|
+
await (0, token_1.updatePolicies)(token.id, projectId, actions, resources);
|
|
77
76
|
core_1.ux.action.stop('Granted successfully!');
|
|
78
77
|
}
|
|
79
78
|
if (!this.jsonEnabled()) {
|
|
@@ -104,9 +103,9 @@ class CreateToken extends common_1.BaseCommand {
|
|
|
104
103
|
promptFlags['auto-generate-key'] = !!promptFlags['auto-generate-key'];
|
|
105
104
|
}
|
|
106
105
|
if (promptFlags['auto-generate-key'] && !promptFlags['no-input']) {
|
|
107
|
-
promptFlags.passphrase = (0, validators_1.validateInputLength)(await (0, prompts_1.input)({
|
|
106
|
+
promptFlags.passphrase ?? (promptFlags.passphrase = (0, validators_1.validateInputLength)(await (0, prompts_1.input)({
|
|
108
107
|
message: 'Enter a passphrase to encrypt the private key. Leave it empty for no encryption',
|
|
109
|
-
}), validators_1.INPUT_LIMIT);
|
|
108
|
+
}), validators_1.INPUT_LIMIT));
|
|
110
109
|
}
|
|
111
110
|
if (!promptFlags['auto-generate-key']) {
|
|
112
111
|
promptFlags = await (0, prompts_2.promptRequiredParameters)(['public-key-file'], promptFlags);
|
|
@@ -131,80 +130,6 @@ class CreateToken extends common_1.BaseCommand {
|
|
|
131
130
|
}
|
|
132
131
|
return flagsSchema.parse(promptFlags);
|
|
133
132
|
}
|
|
134
|
-
async createToken(name, algorithm, jwks, keyId) {
|
|
135
|
-
let token = await iam_1.iamService.createToken({
|
|
136
|
-
name,
|
|
137
|
-
authenticationMethod: {
|
|
138
|
-
type: 'PRIVATE_KEY',
|
|
139
|
-
signingAlgorithm: algorithm,
|
|
140
|
-
publicKeyInfo: {
|
|
141
|
-
jwks,
|
|
142
|
-
},
|
|
143
|
-
},
|
|
144
|
-
});
|
|
145
|
-
// If keyId was not provided it means that a randomly generated uuid was assigned and we should change it to the tokenId
|
|
146
|
-
if (!keyId) {
|
|
147
|
-
jwks.keys[0].kid = token.id;
|
|
148
|
-
token = await iam_1.iamService.updateToken(token.id, {
|
|
149
|
-
name,
|
|
150
|
-
authenticationMethod: {
|
|
151
|
-
type: 'PRIVATE_KEY',
|
|
152
|
-
signingAlgorithm: algorithm,
|
|
153
|
-
publicKeyInfo: {
|
|
154
|
-
jwks,
|
|
155
|
-
},
|
|
156
|
-
},
|
|
157
|
-
});
|
|
158
|
-
}
|
|
159
|
-
return token;
|
|
160
|
-
}
|
|
161
|
-
generateKeyPair(keyId, algorithm, passphrase) {
|
|
162
|
-
const { publicKey, privateKey } = (0, node_crypto_1.generateKeyPairSync)('rsa', { modulusLength: 4096 });
|
|
163
|
-
const publicKeyPem = publicKey.export({ format: 'pem', type: 'spki' });
|
|
164
|
-
const exportOptions = {
|
|
165
|
-
format: 'pem',
|
|
166
|
-
type: 'pkcs8',
|
|
167
|
-
};
|
|
168
|
-
if (passphrase) {
|
|
169
|
-
exportOptions.cipher = 'aes-256-cbc';
|
|
170
|
-
exportOptions.passphrase = passphrase;
|
|
171
|
-
}
|
|
172
|
-
const privateKeyPem = privateKey.export(exportOptions);
|
|
173
|
-
const publicKeyJwk = publicKey.export({ format: 'jwk' });
|
|
174
|
-
const jwks = {
|
|
175
|
-
keys: [
|
|
176
|
-
{
|
|
177
|
-
use: 'sig',
|
|
178
|
-
kid: keyId,
|
|
179
|
-
alg: algorithm,
|
|
180
|
-
...publicKeyJwk,
|
|
181
|
-
},
|
|
182
|
-
],
|
|
183
|
-
};
|
|
184
|
-
return { publicKey: publicKeyPem, privateKey: privateKeyPem, jwks };
|
|
185
|
-
}
|
|
186
|
-
async addPrincipal(tokenId) {
|
|
187
|
-
await iam_1.iamService.addPrincipalToProject({
|
|
188
|
-
principalId: tokenId,
|
|
189
|
-
principalType: 'token',
|
|
190
|
-
});
|
|
191
|
-
}
|
|
192
|
-
async updatePolicies(tokenId, activeProjectId, actions, resources) {
|
|
193
|
-
const policiesData = {
|
|
194
|
-
version: '2022-12-15',
|
|
195
|
-
statement: [
|
|
196
|
-
{
|
|
197
|
-
principal: [`ari:iam::${activeProjectId}:token/${tokenId}`],
|
|
198
|
-
action: actions,
|
|
199
|
-
resource: resources,
|
|
200
|
-
effect: 'Allow',
|
|
201
|
-
},
|
|
202
|
-
],
|
|
203
|
-
};
|
|
204
|
-
const validatedPolicies = validators_1.policiesDataSchema.parse(policiesData);
|
|
205
|
-
const result = await iam_1.iamService.updatePolicies(tokenId, 'token', validatedPolicies);
|
|
206
|
-
return result;
|
|
207
|
-
}
|
|
208
133
|
}
|
|
209
134
|
exports.CreateToken = CreateToken;
|
|
210
135
|
CreateToken.summary = 'Creates a Personal Access Token (PAT)';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-token.js","sourceRoot":"","sources":["../../../src/commands/token/create-token.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"create-token.js","sourceRoot":"","sources":["../../../src/commands/token/create-token.ts"],"names":[],"mappings":"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"}
|
package/dist/helpers/app.d.ts
CHANGED
|
@@ -1,7 +1,38 @@
|
|
|
1
1
|
export type AppsInformation = {
|
|
2
2
|
[key: string]: {
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
redirectUris: {
|
|
4
|
+
callbackUrl: string;
|
|
5
|
+
logOutUrl?: string;
|
|
6
|
+
webOriginUrl?: string;
|
|
7
|
+
};
|
|
8
|
+
metadata: {
|
|
9
|
+
name: string;
|
|
10
|
+
description: string;
|
|
11
|
+
features?: string[];
|
|
12
|
+
idp: {
|
|
13
|
+
name: string;
|
|
14
|
+
link: string;
|
|
15
|
+
};
|
|
16
|
+
framework: {
|
|
17
|
+
name: string;
|
|
18
|
+
icon: string;
|
|
19
|
+
link: string;
|
|
20
|
+
};
|
|
21
|
+
language: {
|
|
22
|
+
name: string;
|
|
23
|
+
icon: string;
|
|
24
|
+
link: string;
|
|
25
|
+
};
|
|
26
|
+
library: {
|
|
27
|
+
name: string;
|
|
28
|
+
icon: string;
|
|
29
|
+
link: string;
|
|
30
|
+
};
|
|
31
|
+
token?: {
|
|
32
|
+
policy: {
|
|
33
|
+
actions: string[];
|
|
34
|
+
};
|
|
35
|
+
};
|
|
5
36
|
};
|
|
6
37
|
};
|
|
7
38
|
};
|
|
@@ -17,3 +48,8 @@ export declare function getSupportedAppsInformation(apps: AppsInformation): {
|
|
|
17
48
|
libraries: Map<string, string[]>;
|
|
18
49
|
};
|
|
19
50
|
export declare function getRedirectUri(apps: AppsInformation, appName: string): string;
|
|
51
|
+
export declare function getAppMetadataToken(apps: AppsInformation, appName: string): {
|
|
52
|
+
policy: {
|
|
53
|
+
actions: string[];
|
|
54
|
+
};
|
|
55
|
+
} | undefined;
|
package/dist/helpers/app.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getRedirectUri = exports.getSupportedAppsInformation = exports.getSupportedLibraries = exports.getSupportedFrameworks = exports.getSupportedProviders = exports.getSupportedSampleApps = exports.getApps = exports.getAppName = void 0;
|
|
3
|
+
exports.getAppMetadataToken = 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"));
|
|
@@ -10,6 +10,8 @@ function getAppName(framework, provider, library) {
|
|
|
10
10
|
exports.getAppName = getAppName;
|
|
11
11
|
async function getApps(filePath) {
|
|
12
12
|
const githubFileUrl = `https://api.github.com/repos/affinidi/reference-app-affinidi-vault/contents/${filePath}`;
|
|
13
|
+
// const githubFileUrl =
|
|
14
|
+
// 'https://api.github.com/repos/affinidi/reference-app-affinidi-vault/contents/samples/apps.json?ref=token-metadata'
|
|
13
15
|
try {
|
|
14
16
|
const response = await axios_1.default.get(githubFileUrl);
|
|
15
17
|
if (response.data && response.data.content) {
|
|
@@ -101,4 +103,8 @@ function getRedirectUri(apps, appName) {
|
|
|
101
103
|
return apps[appName].redirectUris.callbackUrl;
|
|
102
104
|
}
|
|
103
105
|
exports.getRedirectUri = getRedirectUri;
|
|
106
|
+
function getAppMetadataToken(apps, appName) {
|
|
107
|
+
return apps[appName].metadata.token;
|
|
108
|
+
}
|
|
109
|
+
exports.getAppMetadataToken = getAppMetadataToken;
|
|
104
110
|
//# 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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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { SupportedAlgorithms } from '../common';
|
|
3
|
+
import { JsonWebKeySetDto } from '../services/affinidi/iam/iam.api';
|
|
4
|
+
export declare function generateKeyPair(keyId: string, algorithm: string, passphrase?: string): {
|
|
5
|
+
publicKey: string | Buffer;
|
|
6
|
+
privateKey: string | Buffer;
|
|
7
|
+
jwks: {
|
|
8
|
+
keys: {
|
|
9
|
+
crv?: string | undefined;
|
|
10
|
+
d?: string | undefined;
|
|
11
|
+
dp?: string | undefined;
|
|
12
|
+
dq?: string | undefined;
|
|
13
|
+
e?: string | undefined;
|
|
14
|
+
k?: string | undefined;
|
|
15
|
+
kty?: string | undefined;
|
|
16
|
+
n?: string | undefined;
|
|
17
|
+
p?: string | undefined;
|
|
18
|
+
q?: string | undefined;
|
|
19
|
+
qi?: string | undefined;
|
|
20
|
+
x?: string | undefined;
|
|
21
|
+
y?: string | undefined;
|
|
22
|
+
use: string;
|
|
23
|
+
kid: string;
|
|
24
|
+
alg: string;
|
|
25
|
+
}[];
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
export declare function createToken(name: string, algorithm: SupportedAlgorithms, jwks: JsonWebKeySetDto, keyId?: string): Promise<import("../services/affinidi/iam/iam.api").TokenDto>;
|
|
29
|
+
export declare function addPrincipal(tokenId: string): Promise<void>;
|
|
30
|
+
export declare function updatePolicies(tokenId: string, activeProjectId: string, actions: string[], resources: string[]): Promise<import("../services/affinidi/iam/iam.api").PolicyDto>;
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.updatePolicies = exports.addPrincipal = exports.createToken = exports.generateKeyPair = void 0;
|
|
4
|
+
const node_crypto_1 = require("node:crypto");
|
|
5
|
+
const validators_1 = require("../common/validators");
|
|
6
|
+
const index_1 = require("../services/affinidi/iam/index");
|
|
7
|
+
function generateKeyPair(keyId, algorithm, passphrase) {
|
|
8
|
+
const { publicKey, privateKey } = (0, node_crypto_1.generateKeyPairSync)('rsa', { modulusLength: 4096 });
|
|
9
|
+
const publicKeyPem = publicKey.export({ format: 'pem', type: 'spki' });
|
|
10
|
+
const exportOptions = {
|
|
11
|
+
format: 'pem',
|
|
12
|
+
type: 'pkcs8',
|
|
13
|
+
};
|
|
14
|
+
if (passphrase) {
|
|
15
|
+
exportOptions.cipher = 'aes-256-cbc';
|
|
16
|
+
exportOptions.passphrase = passphrase;
|
|
17
|
+
}
|
|
18
|
+
const privateKeyPem = privateKey.export(exportOptions);
|
|
19
|
+
const publicKeyJwk = publicKey.export({ format: 'jwk' });
|
|
20
|
+
const jwks = {
|
|
21
|
+
keys: [
|
|
22
|
+
{
|
|
23
|
+
use: 'sig',
|
|
24
|
+
kid: keyId,
|
|
25
|
+
alg: algorithm,
|
|
26
|
+
...publicKeyJwk,
|
|
27
|
+
},
|
|
28
|
+
],
|
|
29
|
+
};
|
|
30
|
+
return { publicKey: publicKeyPem, privateKey: privateKeyPem, jwks };
|
|
31
|
+
}
|
|
32
|
+
exports.generateKeyPair = generateKeyPair;
|
|
33
|
+
async function createToken(name, algorithm, jwks, keyId) {
|
|
34
|
+
let token = await index_1.iamService.createToken({
|
|
35
|
+
name,
|
|
36
|
+
authenticationMethod: {
|
|
37
|
+
type: 'PRIVATE_KEY',
|
|
38
|
+
signingAlgorithm: algorithm,
|
|
39
|
+
publicKeyInfo: {
|
|
40
|
+
jwks,
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
});
|
|
44
|
+
// If keyId was not provided it means that a randomly generated uuid was assigned and we should change it to the tokenId
|
|
45
|
+
if (!keyId) {
|
|
46
|
+
jwks.keys[0].kid = token.id;
|
|
47
|
+
token = await index_1.iamService.updateToken(token.id, {
|
|
48
|
+
name,
|
|
49
|
+
authenticationMethod: {
|
|
50
|
+
type: 'PRIVATE_KEY',
|
|
51
|
+
signingAlgorithm: algorithm,
|
|
52
|
+
publicKeyInfo: {
|
|
53
|
+
jwks,
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
return token;
|
|
59
|
+
}
|
|
60
|
+
exports.createToken = createToken;
|
|
61
|
+
async function addPrincipal(tokenId) {
|
|
62
|
+
await index_1.iamService.addPrincipalToProject({
|
|
63
|
+
principalId: tokenId,
|
|
64
|
+
principalType: 'token',
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
exports.addPrincipal = addPrincipal;
|
|
68
|
+
async function updatePolicies(tokenId, activeProjectId, actions, resources) {
|
|
69
|
+
const policiesData = {
|
|
70
|
+
version: '2022-12-15',
|
|
71
|
+
statement: [
|
|
72
|
+
{
|
|
73
|
+
principal: [`ari:iam::${activeProjectId}:token/${tokenId}`],
|
|
74
|
+
action: actions,
|
|
75
|
+
resource: resources,
|
|
76
|
+
effect: 'Allow',
|
|
77
|
+
},
|
|
78
|
+
],
|
|
79
|
+
};
|
|
80
|
+
const validatedPolicies = validators_1.policiesDataSchema.parse(policiesData);
|
|
81
|
+
const result = await index_1.iamService.updatePolicies(tokenId, 'token', validatedPolicies);
|
|
82
|
+
return result;
|
|
83
|
+
}
|
|
84
|
+
exports.updatePolicies = updatePolicies;
|
|
85
|
+
//# sourceMappingURL=token.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token.js","sourceRoot":"","sources":["../../src/helpers/token.ts"],"names":[],"mappings":";;;AACA,6CAAiD;AAEjD,qDAAyD;AAEzD,0DAA2D;AAE3D,SAAgB,eAAe,CAAC,KAAa,EAAE,SAAiB,EAAE,UAAmB;IACnF,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,IAAA,iCAAmB,EAAC,KAAK,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAA;IAErF,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;IACtE,MAAM,aAAa,GAA4B;QAC7C,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,OAAO;KACd,CAAA;IACD,IAAI,UAAU,EAAE;QACd,aAAa,CAAC,MAAM,GAAG,aAAa,CAAA;QACpC,aAAa,CAAC,UAAU,GAAG,UAAU,CAAA;KACtC;IACD,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;IACtD,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;IAExD,MAAM,IAAI,GAAG;QACX,IAAI,EAAE;YACJ;gBACE,GAAG,EAAE,KAAK;gBACV,GAAG,EAAE,KAAK;gBACV,GAAG,EAAE,SAAS;gBACd,GAAG,YAAY;aAChB;SACF;KACF,CAAA;IAED,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,IAAI,EAAE,CAAA;AACrE,CAAC;AA3BD,0CA2BC;AAEM,KAAK,UAAU,WAAW,CAC/B,IAAY,EACZ,SAA8B,EAC9B,IAAsB,EACtB,KAAc;IAEd,IAAI,KAAK,GAAG,MAAM,kBAAU,CAAC,WAAW,CAAC;QACvC,IAAI;QACJ,oBAAoB,EAAE;YACpB,IAAI,EAAE,aAAa;YACnB,gBAAgB,EAAE,SAAS;YAC3B,aAAa,EAAE;gBACb,IAAI;aACL;SACF;KACF,CAAC,CAAA;IACF,wHAAwH;IACxH,IAAI,CAAC,KAAK,EAAE;QACV,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAA;QAC3B,KAAK,GAAG,MAAM,kBAAU,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,EAAE;YAC7C,IAAI;YACJ,oBAAoB,EAAE;gBACpB,IAAI,EAAE,aAAa;gBACnB,gBAAgB,EAAE,SAAS;gBAC3B,aAAa,EAAE;oBACb,IAAI;iBACL;aACF;SACF,CAAC,CAAA;KACH;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AA/BD,kCA+BC;AAEM,KAAK,UAAU,YAAY,CAAC,OAAe;IAChD,MAAM,kBAAU,CAAC,qBAAqB,CAAC;QACrC,WAAW,EAAE,OAAO;QACpB,aAAa,EAAE,OAAO;KACvB,CAAC,CAAA;AACJ,CAAC;AALD,oCAKC;AAEM,KAAK,UAAU,cAAc,CAAC,OAAe,EAAE,eAAuB,EAAE,OAAiB,EAAE,SAAmB;IACnH,MAAM,YAAY,GAAG;QACnB,OAAO,EAAE,YAAY;QACrB,SAAS,EAAE;YACT;gBACE,SAAS,EAAE,CAAC,YAAY,eAAe,UAAU,OAAO,EAAE,CAAC;gBAC3D,MAAM,EAAE,OAAO;gBACf,QAAQ,EAAE,SAAS;gBACnB,MAAM,EAAE,OAAO;aAChB;SACF;KACF,CAAA;IACD,MAAM,iBAAiB,GAAG,+BAAkB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;IAChE,MAAM,MAAM,GAAG,MAAM,kBAAU,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAA;IACnF,OAAO,MAAM,CAAA;AACf,CAAC;AAfD,wCAeC"}
|
|
@@ -1 +1,12 @@
|
|
|
1
|
-
export
|
|
1
|
+
export type LoginParams = {
|
|
2
|
+
clientId: string;
|
|
3
|
+
clientSecret: string;
|
|
4
|
+
issuer: string;
|
|
5
|
+
connectionName?: string;
|
|
6
|
+
};
|
|
7
|
+
export type TokenParams = {
|
|
8
|
+
projectId: string;
|
|
9
|
+
tokenId: string;
|
|
10
|
+
privateKey: string;
|
|
11
|
+
};
|
|
12
|
+
export declare function configureAppEnvironment(path: string, loginParams: LoginParams, tokenParams?: TokenParams): Promise<void>;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.configureAppEnvironment = void 0;
|
|
4
4
|
const promises_1 = require("fs/promises");
|
|
5
|
-
async function configureAppEnvironment(path,
|
|
5
|
+
async function configureAppEnvironment(path, loginParams, tokenParams) {
|
|
6
6
|
const donEnv = `${path}/.env`;
|
|
7
7
|
const donEnvExample = `${path}/.env.example`;
|
|
8
8
|
// if (!pathExistsSync(donEnvExample)) {
|
|
@@ -10,11 +10,16 @@ async function configureAppEnvironment(path, clientId, clientSecret, issuer, con
|
|
|
10
10
|
// }
|
|
11
11
|
await (0, promises_1.copyFile)(donEnvExample, donEnv);
|
|
12
12
|
let envContent = await (0, promises_1.readFile)(donEnv, 'utf-8');
|
|
13
|
-
envContent = envContent.replace(/PROVIDER_CLIENT_ID=".*"/, `PROVIDER_CLIENT_ID="${clientId}"`);
|
|
14
|
-
envContent = envContent.replace(/PROVIDER_CLIENT_SECRET=".*"/, `PROVIDER_CLIENT_SECRET="${clientSecret}"`);
|
|
15
|
-
envContent = envContent.replace(/PROVIDER_ISSUER=".*"/, `PROVIDER_ISSUER="${issuer}"`);
|
|
16
|
-
if (connectionName) {
|
|
17
|
-
envContent = envContent.replace(/NEXT_PUBLIC_SOCIAL_CONNECTOR_NAME=".*"/, `NEXT_PUBLIC_SOCIAL_CONNECTOR_NAME="${connectionName}"`);
|
|
13
|
+
envContent = envContent.replace(/PROVIDER_CLIENT_ID=".*"/, `PROVIDER_CLIENT_ID="${loginParams.clientId}"`);
|
|
14
|
+
envContent = envContent.replace(/PROVIDER_CLIENT_SECRET=".*"/, `PROVIDER_CLIENT_SECRET="${loginParams.clientSecret}"`);
|
|
15
|
+
envContent = envContent.replace(/PROVIDER_ISSUER=".*"/, `PROVIDER_ISSUER="${loginParams.issuer}"`);
|
|
16
|
+
if (loginParams.connectionName) {
|
|
17
|
+
envContent = envContent.replace(/NEXT_PUBLIC_SOCIAL_CONNECTOR_NAME=".*"/, `NEXT_PUBLIC_SOCIAL_CONNECTOR_NAME="${loginParams.connectionName}"`);
|
|
18
|
+
}
|
|
19
|
+
if (tokenParams) {
|
|
20
|
+
envContent = envContent.replace(/PROJECT_ID=".*"/, `PROJECT_ID="${tokenParams.projectId}"`);
|
|
21
|
+
envContent = envContent.replace(/TOKEN_ID=".*"/, `TOKEN_ID="${tokenParams.tokenId}"`);
|
|
22
|
+
envContent = envContent.replace(/PRIVATE_KEY=".*"/, `PRIVATE_KEY="${tokenParams.privateKey}"`);
|
|
18
23
|
}
|
|
19
24
|
await (0, promises_1.writeFile)(donEnv, envContent, 'utf-8');
|
|
20
25
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env-configurer.js","sourceRoot":"","sources":["../../../src/services/generator/env-configurer.ts"],"names":[],"mappings":";;;AAAA,0CAA2D;
|
|
1
|
+
{"version":3,"file":"env-configurer.js","sourceRoot":"","sources":["../../../src/services/generator/env-configurer.ts"],"names":[],"mappings":";;;AAAA,0CAA2D;AAepD,KAAK,UAAU,uBAAuB,CAAC,IAAY,EAAE,WAAwB,EAAE,WAAyB;IAC7G,MAAM,MAAM,GAAG,GAAG,IAAI,OAAO,CAAA;IAC7B,MAAM,aAAa,GAAG,GAAG,IAAI,eAAe,CAAA;IAE5C,wCAAwC;IACxC,yFAAyF;IACzF,IAAI;IAEJ,MAAM,IAAA,mBAAQ,EAAC,aAAa,EAAE,MAAM,CAAC,CAAA;IAErC,IAAI,UAAU,GAAG,MAAM,IAAA,mBAAQ,EAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChD,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,yBAAyB,EAAE,uBAAuB,WAAW,CAAC,QAAQ,GAAG,CAAC,CAAA;IAC1G,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,6BAA6B,EAAE,2BAA2B,WAAW,CAAC,YAAY,GAAG,CAAC,CAAA;IACtH,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,sBAAsB,EAAE,oBAAoB,WAAW,CAAC,MAAM,GAAG,CAAC,CAAA;IAElG,IAAI,WAAW,CAAC,cAAc,EAAE;QAC9B,UAAU,GAAG,UAAU,CAAC,OAAO,CAC7B,wCAAwC,EACxC,sCAAsC,WAAW,CAAC,cAAc,GAAG,CACpE,CAAA;KACF;IAED,IAAI,WAAW,EAAE;QACf,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,iBAAiB,EAAE,eAAe,WAAW,CAAC,SAAS,GAAG,CAAC,CAAA;QAC3F,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,eAAe,EAAE,aAAa,WAAW,CAAC,OAAO,GAAG,CAAC,CAAA;QACrF,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,kBAAkB,EAAE,gBAAgB,WAAW,CAAC,UAAU,GAAG,CAAC,CAAA;KAC/F;IAED,MAAM,IAAA,oBAAS,EAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;AAC9C,CAAC;AA7BD,0DA6BC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@affinidi/cli",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.7.0",
|
|
4
4
|
"description": "Affinidi CLI",
|
|
5
5
|
"author": "affinidi.com",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -47,15 +47,15 @@
|
|
|
47
47
|
"@inquirer/password": "^1.1.11",
|
|
48
48
|
"@inquirer/prompts": "^3.1.1",
|
|
49
49
|
"@inquirer/select": "^1.3.1",
|
|
50
|
-
"@oclif/core": "^2.
|
|
50
|
+
"@oclif/core": "^2.15.0",
|
|
51
51
|
"@oclif/plugin-autocomplete": "^2.3.6",
|
|
52
52
|
"@oclif/plugin-commands": "^2.2.25",
|
|
53
53
|
"@oclif/plugin-help": "^5.2.18",
|
|
54
54
|
"@oclif/plugin-not-found": "^2.4.1",
|
|
55
55
|
"@oclif/plugin-search": "^0.0.22",
|
|
56
|
-
"@oclif/plugin-warn-if-update-available": "^2.
|
|
56
|
+
"@oclif/plugin-warn-if-update-available": "^2.1.1",
|
|
57
57
|
"@postman/node-keytar": "^7.9.3",
|
|
58
|
-
"axios": "^1.
|
|
58
|
+
"axios": "^1.7.2",
|
|
59
59
|
"chalk": "^4.1.2",
|
|
60
60
|
"conf": "^10.2.0",
|
|
61
61
|
"degit": "^2.8.4",
|