新增 JWKS 生成模块,支持密钥文件的创建与保存
This commit is contained in:
31
src/modules/jwks/index.ts
Normal file
31
src/modules/jwks/index.ts
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
import { generate } from '@kevisual/auth'
|
||||||
|
import fs from 'node:fs';
|
||||||
|
import path from 'node:path';
|
||||||
|
export const getPath = async (dir: string) => {
|
||||||
|
const JWKS_PATH = path.join(dir, 'jwks.json');
|
||||||
|
const PRIVATE_JWK_PATH = path.join(dir, 'privateKey.json');
|
||||||
|
const PRIVATE_KEY_PATH = path.join(dir, 'privateKey.txt');
|
||||||
|
const PUBLIC_KEY_PATH = path.join(dir, 'publicKey.txt');
|
||||||
|
return {
|
||||||
|
JWKS_PATH,
|
||||||
|
PRIVATE_JWK_PATH,
|
||||||
|
PRIVATE_KEY_PATH,
|
||||||
|
PUBLIC_KEY_PATH,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export const jwksGenerate = async (opts: { dir: string }) => {
|
||||||
|
const dir = path.isAbsolute(opts.dir) ? opts.dir : path.join(process.cwd(), opts.dir);
|
||||||
|
if (!fs.existsSync(dir)) {
|
||||||
|
fs.mkdirSync(dir, { recursive: true });
|
||||||
|
}
|
||||||
|
const { JWKS_PATH, PRIVATE_JWK_PATH, PRIVATE_KEY_PATH, PUBLIC_KEY_PATH } = await getPath(dir);
|
||||||
|
const { jwks, privateJWK, privatePEM, publicPEM } = await generate();
|
||||||
|
fs.writeFileSync(PUBLIC_KEY_PATH, publicPEM);
|
||||||
|
fs.writeFileSync(PRIVATE_KEY_PATH, privatePEM);
|
||||||
|
fs.writeFileSync(PRIVATE_JWK_PATH, JSON.stringify(privateJWK, null, 2));
|
||||||
|
fs.writeFileSync(JWKS_PATH, JSON.stringify(jwks, null, 2));
|
||||||
|
console.log(`Keys have been saved to directory: ${dir}`);
|
||||||
|
}
|
||||||
|
|
||||||
Reference in New Issue
Block a user