2026-02-15 22:45:22 +08:00
|
|
|
import { AccessInput, BaseAccess, IsAccess } from '@certd/pipeline';
|
|
|
|
|
import { VolcengineClient } from './ve-client.js';
|
2025-03-28 23:27:24 +08:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 这个注解将注册一个授权配置
|
|
|
|
|
* 在certd的后台管理系统中,用户可以选择添加此类型的授权
|
|
|
|
|
*/
|
|
|
|
|
@IsAccess({
|
|
|
|
|
name: 'volcengine',
|
|
|
|
|
title: '火山引擎',
|
|
|
|
|
desc: '',
|
|
|
|
|
icon: 'svg:icon-volcengine',
|
2025-08-25 16:19:37 +08:00
|
|
|
order: 1,
|
2025-03-28 23:27:24 +08:00
|
|
|
})
|
|
|
|
|
export class VolcengineAccess extends BaseAccess {
|
|
|
|
|
|
|
|
|
|
@AccessInput({
|
|
|
|
|
title: 'AccessKeyID',
|
|
|
|
|
component: {
|
|
|
|
|
placeholder: 'AccessKeyID',
|
|
|
|
|
},
|
2026-02-15 22:45:22 +08:00
|
|
|
helper: "[获取密钥](https://console.volcengine.com/iam/keymanage/)",
|
2025-03-28 23:27:24 +08:00
|
|
|
required: true,
|
|
|
|
|
})
|
|
|
|
|
accessKeyId = '';
|
|
|
|
|
@AccessInput({
|
|
|
|
|
title: 'SecretAccessKey',
|
|
|
|
|
component: {
|
|
|
|
|
placeholder: 'SecretAccessKey',
|
|
|
|
|
},
|
|
|
|
|
required: true,
|
|
|
|
|
encrypt: true,
|
|
|
|
|
})
|
|
|
|
|
secretAccessKey = '';
|
|
|
|
|
|
2026-02-15 22:45:22 +08:00
|
|
|
|
|
|
|
|
@AccessInput({
|
|
|
|
|
title: "测试",
|
|
|
|
|
component: {
|
|
|
|
|
name: "api-test",
|
|
|
|
|
action: "onTestRequest",
|
|
|
|
|
},
|
|
|
|
|
helper: "点击测试接口看是否正常",
|
|
|
|
|
})
|
|
|
|
|
testRequest = true;
|
|
|
|
|
|
|
|
|
|
async onTestRequest() {
|
|
|
|
|
await this.getCallerIdentity();
|
|
|
|
|
return "ok";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
async getCallerIdentity() {
|
|
|
|
|
const veClient = new VolcengineClient({
|
|
|
|
|
access: this,
|
|
|
|
|
logger: this.ctx.logger,
|
|
|
|
|
http: this.ctx.http,
|
|
|
|
|
});
|
|
|
|
|
const service = await veClient.getStsService();
|
|
|
|
|
|
|
|
|
|
const res = await service.request({
|
|
|
|
|
action: "GetCallerIdentity",
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
const result = res.Result || {};
|
|
|
|
|
this.ctx.logger.info("✅ 密钥有效!");
|
|
|
|
|
this.ctx.logger.info(` 账户ID: ${result.AccountId}`);
|
|
|
|
|
this.ctx.logger.info(` ARN: ${result.Trn}`);
|
|
|
|
|
this.ctx.logger.info(` 用户ID: ${result.IdentityId}`);
|
|
|
|
|
|
|
|
|
|
return {
|
|
|
|
|
valid: true,
|
|
|
|
|
accountId: result.AccountId,
|
|
|
|
|
arn: result.Trn,
|
|
|
|
|
userId: result.IdentityId
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2025-03-28 23:27:24 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
new VolcengineAccess();
|