moleculer-iam
Version:
Centralized IAM module for moleculer. Including a certified OIDC provider and an Identity provider for user profile, credentials, and custom claims management. Custom claims could be defined/updated by declarative schema which contains claims validation a
39 lines (34 loc) • 1.38 kB
JavaScript
#!/usr/bin/env node
// const fs = require("fs");
// const path = require("path");
const jose = require("jose");
const keystore = new jose.JWKS.KeyStore();
const handleGenerationError = error => console.warn(`Warning:`, error.message);
Promise.all([
keystore.generate("RSA", 2048, {use: "sig"}).catch(handleGenerationError),
keystore.generate("RSA", 2048, {use: "enc"}).catch(handleGenerationError),
keystore.generate("EC", "P-256", {use: "sig"}).catch(handleGenerationError),
keystore.generate("EC", "P-256", {use: "enc"}).catch(handleGenerationError),
keystore.generate("OKP", "Ed25519", {use: "sig"}).catch(handleGenerationError),
])
.then(() => {
if (keystore.all({ use: "sig" }).length === 0) {
console.error(`Error: empty signature keys`);
process.exit(1);
} else if (keystore.all({ use: "enc" }).length === 0) {
console.error(`Error: empty encryption keys`);
process.exit(1);
}
const jwks = JSON.stringify(keystore.toJWKS(true), null, 2);
console.log(jwks);
// const filePath = path.resolve(process.cwd(), "./jwks.json");
// try {
// fs.statSync(filePath);
// } catch (error) {
// fs.writeFileSync(filePath, jwks);
// console.log(`Succeed: ${filePath} created`);
// process.exit(0);
// }
// console.error(`Error: ${filePath} already exists`);
// process.exit(1);
});