feat: 添加多项功能和修复

功能新增:
- OSS 存储使用情况显示(文件页面)
- OSS 当日流量统计(阿里云云监控API)
- 分享页面路由修复(/s/xxx 格式支持)

Bug修复:
- 修复分享页面资源路径(相对路径改绝对路径)
- 修复分享码获取逻辑(支持路径格式)
- 修复OSS配额undefined显示问题
- 修复登录流程OSS配置检查
- 修复文件数为null时的显示问题

依赖更新:
- 添加 @alicloud/cms20190101 云监控SDK
- 添加 @alicloud/openapi-client

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-22 21:04:22 +08:00
parent a86903fcdc
commit b135987fe8
3410 changed files with 494007 additions and 11 deletions

View File

@@ -0,0 +1,60 @@
{
"name": "@alicloud/credentials",
"version": "2.4.4",
"description": "alibaba cloud node.js sdk credentials",
"main": "dist/src/client.js",
"scripts": {
"prepublishOnly": "tsc",
"build": "tsc",
"lint": "eslint --fix ./src --ext .ts",
"test": "mocha -b -r ts-node/register test/**/*.test.ts test/*.test.ts --timeout 15000",
"test-dev": "nyc -e .ts -r=html -r=text -r=lcov mocha -b -r ts-node/register",
"cov": "nyc -e .ts -r=html -r=text -r=lcov npm run test",
"ci": "npm run cov",
"integration": "mocha -b -r ts-node/register -R spec integration/*.test.ts",
"clean": "rm -rf coverage"
},
"repository": {
"type": "git",
"url": "git+https://github.com/aliyun/nodejs-credentials.git"
},
"keywords": [
"alibaba cloud",
"sdk",
"credentials"
],
"author": "Alibaba Cloud SDK",
"license": "MIT",
"devDependencies": {
"@types/debug": "^4.1.12",
"@types/expect.js": "^0.3.29",
"@types/ini": "^1.3.30",
"@types/mocha": "^10.0.6",
"@types/node": "^20.11.10",
"@types/rewire": "^2.5.28",
"@typescript-eslint/eslint-plugin": "^6.18.1",
"@typescript-eslint/parser": "^6.18.1",
"eslint": "^8.56.0",
"expect.js": "^0.3.1",
"mm": "^2.4.1",
"mocha": "^10.1.0",
"nyc": "^15.1.0",
"rewire": "^7.0.0",
"ts-node": "^10.9.2",
"typescript": "^4.7.4"
},
"dependencies": {
"@alicloud/tea-typescript": "^1.8.0",
"httpx": "^2.3.3",
"ini": "^1.3.5",
"kitx": "^2.0.0"
},
"bugs": {
"url": "https://github.com/aliyun/nodejs-credentials/issues"
},
"homepage": "https://github.com/aliyun/nodejs-credentials#readme",
"files": [
"src",
"dist"
]
}

View File

@@ -0,0 +1,5 @@
import DefaultCredential from './default_credential';
import ICredential from './icredential';
export default class AccessKeyCredential extends DefaultCredential implements ICredential {
constructor(accessKeyId: string, accessKeySecret: string);
}

View File

@@ -0,0 +1,25 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const default_credential_1 = __importDefault(require("./default_credential"));
const config_1 = __importDefault(require("./config"));
class AccessKeyCredential extends default_credential_1.default {
constructor(accessKeyId, accessKeySecret) {
if (!accessKeyId) {
throw new Error('Missing required accessKeyId option in config for access_key');
}
if (!accessKeySecret) {
throw new Error('Missing required accessKeySecret option in config for access_key');
}
const conf = new config_1.default({
type: 'access_key',
accessKeyId,
accessKeySecret
});
super(conf);
}
}
exports.default = AccessKeyCredential;
//# sourceMappingURL=access_key_credential.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"access_key_credential.js","sourceRoot":"","sources":["../../src/access_key_credential.ts"],"names":[],"mappings":";;;;;AAAA,8EAAqD;AAErD,sDAA8B;AAE9B,MAAqB,mBAAoB,SAAQ,4BAAiB;IAChE,YAAY,WAAmB,EAAE,eAAuB;QACtD,IAAI,CAAC,WAAW,EAAE;YAChB,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;SACjF;QAED,IAAI,CAAC,eAAe,EAAE;YACpB,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;SACrF;QACD,MAAM,IAAI,GAAG,IAAI,gBAAM,CAAC;YACtB,IAAI,EAAE,YAAY;YAClB,WAAW;YACX,eAAe;SAChB,CAAC,CAAC;QACH,KAAK,CAAC,IAAI,CAAC,CAAC;IACd,CAAC;CACF;AAhBD,sCAgBC"}

View File

@@ -0,0 +1,5 @@
import DefaultCredential from './default_credential';
import ICredential from './icredential';
export default class BearerTokenCredential extends DefaultCredential implements ICredential {
constructor(bearerToken: string);
}

View File

@@ -0,0 +1,21 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const default_credential_1 = __importDefault(require("./default_credential"));
const config_1 = __importDefault(require("./config"));
class BearerTokenCredential extends default_credential_1.default {
constructor(bearerToken) {
if (!bearerToken) {
throw new Error('Missing required bearerToken option in config for bearer');
}
const conf = new config_1.default({
type: 'bearer'
});
super(conf);
this.bearerToken = bearerToken;
}
}
exports.default = BearerTokenCredential;
//# sourceMappingURL=bearer_token_credential.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"bearer_token_credential.js","sourceRoot":"","sources":["../../src/bearer_token_credential.ts"],"names":[],"mappings":";;;;;AAAA,8EAAqD;AAErD,sDAA8B;AAE9B,MAAqB,qBAAsB,SAAQ,4BAAiB;IAElE,YAAY,WAAmB;QAC7B,IAAI,CAAC,WAAW,EAAE;YAChB,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;SAC7E;QACD,MAAM,IAAI,GAAG,IAAI,gBAAM,CAAC;YACtB,IAAI,EAAE,QAAQ;SACf,CAAC,CAAC;QACH,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;CACF;AAZD,wCAYC"}

View File

@@ -0,0 +1,43 @@
import ICredential from './icredential';
import Config from './config';
import CredentialModel from './credential_model';
import CredentialsProvider from './credentials_provider';
import StaticAKCredentialsProvider from './providers/static_ak';
import StaticSTSCredentialsProvider from './providers/static_sts';
import RAMRoleARNCredentialsProvider from './providers/ram_role_arn';
import OIDCRoleArnCredentialsProvider from './providers/oidc_role_arn';
import ECSRAMRoleCredentialsProvider from './providers/ecs_ram_role';
import DefaultCredentialsProvider from './providers/default';
import URICredentialsProvider from './providers/uri';
import CLIProfileCredentialsProvider from './providers/cli_profile';
import ProfileCredentialsProvider from './providers/profile';
import EnvironmentVariableCredentialsProvider from './providers/env';
export { CredentialModel, Config, DefaultCredentialsProvider, CredentialsProvider, StaticAKCredentialsProvider, StaticSTSCredentialsProvider, RAMRoleARNCredentialsProvider, OIDCRoleArnCredentialsProvider, ECSRAMRoleCredentialsProvider, URICredentialsProvider, EnvironmentVariableCredentialsProvider, ProfileCredentialsProvider, CLIProfileCredentialsProvider };
export default class Credential implements ICredential {
credential: ICredential;
constructor(config?: Config | null, provider?: CredentialsProvider | {
[key: string]: any;
} | null);
/**
* @deprecated Use getCredential() instead of
*/
getAccessKeyId(): Promise<string>;
/**
* @deprecated Use getCredential() instead of
*/
getAccessKeySecret(): Promise<string>;
/**
* @deprecated Use getCredential() instead of
*/
getSecurityToken(): Promise<string>;
/**
* @deprecated Use getCredential() instead of
*/
getBearerToken(): string;
/**
* @deprecated Use getCredential() instead of
*/
getType(): string;
getCredential(): Promise<CredentialModel>;
private load;
}

View File

@@ -0,0 +1,229 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.CLIProfileCredentialsProvider = exports.ProfileCredentialsProvider = exports.EnvironmentVariableCredentialsProvider = exports.URICredentialsProvider = exports.ECSRAMRoleCredentialsProvider = exports.OIDCRoleArnCredentialsProvider = exports.RAMRoleARNCredentialsProvider = exports.StaticSTSCredentialsProvider = exports.StaticAKCredentialsProvider = exports.DefaultCredentialsProvider = exports.Config = exports.CredentialModel = void 0;
const rsa_key_pair_credential_1 = __importDefault(require("./rsa_key_pair_credential"));
const bearer_token_credential_1 = __importDefault(require("./bearer_token_credential"));
const config_1 = __importDefault(require("./config"));
exports.Config = config_1.default;
const credential_model_1 = __importDefault(require("./credential_model"));
exports.CredentialModel = credential_model_1.default;
const static_ak_1 = __importDefault(require("./providers/static_ak"));
exports.StaticAKCredentialsProvider = static_ak_1.default;
const static_sts_1 = __importDefault(require("./providers/static_sts"));
exports.StaticSTSCredentialsProvider = static_sts_1.default;
const ram_role_arn_1 = __importDefault(require("./providers/ram_role_arn"));
exports.RAMRoleARNCredentialsProvider = ram_role_arn_1.default;
const oidc_role_arn_1 = __importDefault(require("./providers/oidc_role_arn"));
exports.OIDCRoleArnCredentialsProvider = oidc_role_arn_1.default;
const ecs_ram_role_1 = __importDefault(require("./providers/ecs_ram_role"));
exports.ECSRAMRoleCredentialsProvider = ecs_ram_role_1.default;
const default_1 = __importDefault(require("./providers/default"));
exports.DefaultCredentialsProvider = default_1.default;
const uri_1 = __importDefault(require("./providers/uri"));
exports.URICredentialsProvider = uri_1.default;
const cli_profile_1 = __importDefault(require("./providers/cli_profile"));
exports.CLIProfileCredentialsProvider = cli_profile_1.default;
const profile_1 = __importDefault(require("./providers/profile"));
exports.ProfileCredentialsProvider = profile_1.default;
const env_1 = __importDefault(require("./providers/env"));
exports.EnvironmentVariableCredentialsProvider = env_1.default;
class InnerCredentialsClient {
constructor(type, provider) {
this.type = type;
this.provider = provider;
}
/**
* @deprecated use getCredential() instead of
* @returns the access key id of credentials
*/
async getAccessKeyId() {
const credentials = await this.provider.getCredentials();
return credentials.accessKeyId;
}
/**
* @deprecated use getCredential() instead of
* @returns the access key secret of credentials
*/
async getAccessKeySecret() {
const credentials = await this.provider.getCredentials();
return credentials.accessKeySecret;
}
/**
* @deprecated use getCredential() instead of
* @returns the security token of credentials
*/
async getSecurityToken() {
const credentials = await this.provider.getCredentials();
return credentials.securityToken;
}
getBearerToken() {
return;
}
getType() {
return this.type;
}
async getCredential() {
const credentials = await this.provider.getCredentials();
return new credential_model_1.default({
accessKeyId: credentials.accessKeyId,
accessKeySecret: credentials.accessKeySecret,
securityToken: credentials.securityToken,
bearerToken: undefined,
type: this.getType(),
providerName: credentials.providerName,
});
}
}
function isCredentialsProviderClass(t) {
if (!t) {
return false;
}
return typeof t.getCredentials === 'function' && typeof t.getProviderName === 'function';
}
class Credential {
constructor(config = null, provider = null) {
if (isCredentialsProviderClass(provider)) {
this.load(null, provider);
}
else {
this.load(config, null);
}
}
/**
* @deprecated Use getCredential() instead of
*/
getAccessKeyId() {
return this.credential.getAccessKeyId();
}
/**
* @deprecated Use getCredential() instead of
*/
getAccessKeySecret() {
return this.credential.getAccessKeySecret();
}
/**
* @deprecated Use getCredential() instead of
*/
getSecurityToken() {
return this.credential.getSecurityToken();
}
/**
* @deprecated Use getCredential() instead of
*/
getBearerToken() {
return this.credential.getBearerToken();
}
/**
* @deprecated Use getCredential() instead of
*/
getType() {
return this.credential.getType();
}
getCredential() {
return this.credential.getCredential();
}
load(config, provider) {
if (provider) {
this.credential = new InnerCredentialsClient(provider.getProviderName(), provider);
return;
}
if (!config) {
this.credential = new InnerCredentialsClient('default', default_1.default.builder().build());
return;
}
if (!config.type) {
throw new Error('Missing required type option');
}
switch (config.type) {
case 'access_key':
this.credential = new InnerCredentialsClient('access_key', static_ak_1.default.builder()
.withAccessKeyId(config.accessKeyId)
.withAccessKeySecret(config.accessKeySecret)
.build());
break;
case 'sts':
this.credential = new InnerCredentialsClient('sts', static_sts_1.default.builder()
.withAccessKeyId(config.accessKeyId)
.withAccessKeySecret(config.accessKeySecret)
.withSecurityToken(config.securityToken)
.build());
break;
case 'ecs_ram_role':
this.credential = new InnerCredentialsClient('ecs_ram_role', ecs_ram_role_1.default.builder()
.withRoleName(config.roleName)
.withDisableIMDSv1(config.disableIMDSv1)
.withAsyncCredentialUpdateEnabled(config.asyncCredentialUpdateEnabled)
.withReadTimeout(config.timeout)
.withConnectTimeout(config.connectTimeout)
.build());
break;
case 'ram_role_arn':
{
let credentialsProvider;
if (config.securityToken) {
credentialsProvider = static_sts_1.default.builder()
.withAccessKeyId(config.accessKeyId)
.withAccessKeySecret(config.accessKeySecret)
.withSecurityToken(config.securityToken)
.build();
}
else {
credentialsProvider = static_ak_1.default.builder()
.withAccessKeyId(config.accessKeyId)
.withAccessKeySecret(config.accessKeySecret)
.build();
}
this.credential = new InnerCredentialsClient('ram_role_arn', ram_role_arn_1.default.builder()
.withCredentialsProvider(credentialsProvider)
.withRoleArn(config.roleArn)
.withPolicy(config.policy)
.withDurationSeconds(config.roleSessionExpiration)
.withRoleSessionName(config.roleSessionName)
.withReadTimeout(config.timeout)
.withConnectTimeout(config.connectTimeout)
.withEnableVpc(config.enableVpc)
.withStsEndpoint(config.stsEndpoint)
.withStsRegionId(config.stsRegionId)
.withExternalId(config.externalId)
// .withHttpOptions(runtime)
.build());
}
break;
case 'oidc_role_arn':
this.credential = new InnerCredentialsClient('oidc_role_arn', oidc_role_arn_1.default.builder()
.withRoleArn(config.roleArn)
.withOIDCProviderArn(config.oidcProviderArn)
.withOIDCTokenFilePath(config.oidcTokenFilePath)
.withRoleSessionName(config.roleSessionName)
.withPolicy(config.policy)
.withDurationSeconds(config.roleSessionExpiration)
.withStsEndpoint(config.stsEndpoint)
.withStsRegionId(config.stsRegionId)
.withEnableVpc(config.enableVpc)
.withReadTimeout(config.timeout)
.withConnectTimeout(config.connectTimeout)
.build());
break;
case 'rsa_key_pair':
this.credential = new rsa_key_pair_credential_1.default(config.publicKeyId, config.privateKeyFile);
break;
case 'bearer':
this.credential = new bearer_token_credential_1.default(config.bearerToken);
break;
case 'credentials_uri':
this.credential = new InnerCredentialsClient('credentials_uri', uri_1.default.builder()
.withCredentialsURI(config.credentialsURI)
.withReadTimeout(config.timeout)
.withConnectTimeout(config.connectTimeout)
.build());
break;
default:
throw new Error('Invalid type option, support: access_key, sts, ecs_ram_role, ram_role_arn, rsa_key_pair, credentials_uri');
}
}
}
exports.default = Credential;
//# sourceMappingURL=client.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,36 @@
import * as $tea from '@alicloud/tea-typescript';
export default class Config extends $tea.Model {
accessKeyId?: string;
accessKeySecret?: string;
securityToken?: string;
bearerToken?: string;
durationSeconds?: number;
roleArn?: string;
policy?: string;
roleSessionExpiration?: number;
roleSessionName?: string;
publicKeyId?: string;
privateKeyFile?: string;
roleName?: string;
enableIMDSv2?: boolean;
disableIMDSv1: boolean;
asyncCredentialUpdateEnabled: boolean;
metadataTokenDuration?: number;
credentialsURI?: string;
oidcProviderArn: string;
oidcTokenFilePath: string;
type?: string;
externalId?: string;
stsEndpoint?: string;
timeout?: number;
connectTimeout?: number;
static names(): {
[key: string]: string;
};
static types(): {
[key: string]: any;
};
constructor(config?: {
[key: string]: any;
});
}

View File

@@ -0,0 +1,93 @@
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
const $tea = __importStar(require("@alicloud/tea-typescript"));
class Config extends $tea.Model {
static names() {
return {
accessKeyId: 'accessKeyId',
accessKeySecret: 'accessKeySecret',
securityToken: 'securityToken',
bearerToken: 'bearerToken',
durationSeconds: 'durationSeconds',
roleArn: 'roleArn',
policy: 'policy',
roleSessionExpiration: 'roleSessionExpiration',
roleSessionName: 'roleSessionName',
externalId: 'externalId',
stsEndpoint: 'stsEndpoint',
stsRegionId: 'stsRegionId',
enableVpc: 'enableVpc',
timeout: 'readTimeout',
connectTimeout: 'connectTimeout',
publicKeyId: 'publicKeyId',
privateKeyFile: 'privateKeyFile',
roleName: 'roleName',
enableIMDSv2: 'enableIMDSv2',
disableIMDSv1: 'disableIMDSv1',
asyncCredentialUpdateEnabled: 'asyncCredentialUpdateEnabled',
metadataTokenDuration: 'metadataTokenDuration',
credentialsURI: 'credentialsURI',
oidcProviderArn: 'oidcProviderArn',
oidcTokenFilePath: 'oidcTokenFilePath',
type: 'type',
};
}
static types() {
return {
accessKeyId: 'string',
accessKeySecret: 'string',
securityToken: 'string',
bearerToken: 'string',
durationSeconds: 'number',
roleArn: 'string',
policy: 'string',
roleSessionExpiration: 'number',
roleSessionName: 'string',
externalId: 'string',
stsEndpoint: 'string',
stsRegionId: 'string',
enableVpc: 'string',
timeout: 'number',
connectTimeout: 'number',
publicKeyId: 'string',
privateKeyFile: 'string',
roleName: 'string',
enableIMDSv2: 'boolean',
disableIMDSv1: 'boolean',
asyncCredentialUpdateEnabled: 'boolean',
metadataTokenDuration: 'number',
credentialsURI: 'string',
oidcProviderArn: 'string',
oidcTokenFilePath: 'string',
type: 'string',
};
}
constructor(config) {
super(config);
}
}
exports.default = Config;
//# sourceMappingURL=config.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+DAAiD;AAEjD,MAAqB,MAAO,SAAQ,IAAI,CAAC,KAAK;IA0B5C,MAAM,CAAC,KAAK;QACV,OAAO;YACL,WAAW,EAAE,aAAa;YAC1B,eAAe,EAAE,iBAAiB;YAClC,aAAa,EAAE,eAAe;YAC9B,WAAW,EAAE,aAAa;YAC1B,eAAe,EAAE,iBAAiB;YAClC,OAAO,EAAE,SAAS;YAClB,MAAM,EAAE,QAAQ;YAChB,qBAAqB,EAAE,uBAAuB;YAC9C,eAAe,EAAE,iBAAiB;YAClC,UAAU,EAAE,YAAY;YACxB,WAAW,EAAE,aAAa;YAC1B,WAAW,EAAE,aAAa;YAC1B,SAAS,EAAE,WAAW;YACtB,OAAO,EAAE,aAAa;YACtB,cAAc,EAAE,gBAAgB;YAChC,WAAW,EAAE,aAAa;YAC1B,cAAc,EAAE,gBAAgB;YAChC,QAAQ,EAAE,UAAU;YACpB,YAAY,EAAE,cAAc;YAC5B,aAAa,EAAE,eAAe;YAC9B,4BAA4B,EAAE,8BAA8B;YAC5D,qBAAqB,EAAE,uBAAuB;YAC9C,cAAc,EAAE,gBAAgB;YAChC,eAAe,EAAE,iBAAiB;YAClC,iBAAiB,EAAE,mBAAmB;YACtC,IAAI,EAAE,MAAM;SACb,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,KAAK;QACV,OAAO;YACL,WAAW,EAAE,QAAQ;YACrB,eAAe,EAAE,QAAQ;YACzB,aAAa,EAAE,QAAQ;YACvB,WAAW,EAAE,QAAQ;YACrB,eAAe,EAAE,QAAQ;YACzB,OAAO,EAAE,QAAQ;YACjB,MAAM,EAAE,QAAQ;YAChB,qBAAqB,EAAE,QAAQ;YAC/B,eAAe,EAAE,QAAQ;YACzB,UAAU,EAAE,QAAQ;YACpB,WAAW,EAAE,QAAQ;YACrB,WAAW,EAAE,QAAQ;YACrB,SAAS,EAAE,QAAQ;YACnB,OAAO,EAAE,QAAQ;YACjB,cAAc,EAAE,QAAQ;YACxB,WAAW,EAAE,QAAQ;YACrB,cAAc,EAAE,QAAQ;YACxB,QAAQ,EAAE,QAAQ;YAClB,YAAY,EAAE,SAAS;YACvB,aAAa,EAAE,SAAS;YACxB,4BAA4B,EAAE,SAAS;YACvC,qBAAqB,EAAE,QAAQ;YAC/B,cAAc,EAAE,QAAQ;YACxB,eAAe,EAAE,QAAQ;YACzB,iBAAiB,EAAE,QAAQ;YAC3B,IAAI,EAAE,QAAQ;SACf,CAAC;IACJ,CAAC;IAED,YAAY,MAA+B;QACzC,KAAK,CAAC,MAAM,CAAC,CAAC;IAChB,CAAC;CACF;AA3FD,yBA2FC"}

View File

@@ -0,0 +1,18 @@
import * as $tea from '@alicloud/tea-typescript';
export default class CredentialModel extends $tea.Model {
accessKeyId?: string;
accessKeySecret?: string;
securityToken?: string;
bearerToken?: string;
type?: string;
providerName?: string;
static names(): {
[key: string]: string;
};
static types(): {
[key: string]: any;
};
constructor(map?: {
[key: string]: any;
});
}

View File

@@ -0,0 +1,53 @@
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
const $tea = __importStar(require("@alicloud/tea-typescript"));
class CredentialModel extends $tea.Model {
static names() {
return {
accessKeyId: 'accessKeyId',
accessKeySecret: 'accessKeySecret',
securityToken: 'securityToken',
bearerToken: 'bearerToken',
type: 'type',
providerName: 'providerName',
};
}
static types() {
return {
accessKeyId: 'string',
accessKeySecret: 'string',
securityToken: 'string',
bearerToken: 'string',
type: 'string',
providerName: 'string',
};
}
constructor(map) {
super(map);
}
}
exports.default = CredentialModel;
//# sourceMappingURL=credential_model.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"credential_model.js","sourceRoot":"","sources":["../../src/credential_model.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+DAAiD;AAEjD,MAAqB,eAAgB,SAAQ,IAAI,CAAC,KAAK;IAOrD,MAAM,CAAC,KAAK;QACV,OAAO;YACL,WAAW,EAAE,aAAa;YAC1B,eAAe,EAAE,iBAAiB;YAClC,aAAa,EAAE,eAAe;YAC9B,WAAW,EAAE,aAAa;YAC1B,IAAI,EAAE,MAAM;YACZ,YAAY,EAAE,cAAc;SAC7B,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,KAAK;QACV,OAAO;YACL,WAAW,EAAE,QAAQ;YACrB,eAAe,EAAE,QAAQ;YACzB,aAAa,EAAE,QAAQ;YACvB,WAAW,EAAE,QAAQ;YACrB,IAAI,EAAE,QAAQ;YACd,YAAY,EAAE,QAAQ;SACvB,CAAC;IACJ,CAAC;IAED,YAAY,GAA4B;QACtC,KAAK,CAAC,GAAG,CAAC,CAAC;IACb,CAAC;CACF;AAhCD,kCAgCC"}

View File

@@ -0,0 +1,19 @@
export default class Credentials {
readonly accessKeyId: string;
readonly accessKeySecret: string;
readonly securityToken: string;
readonly providerName: string;
constructor(builder: CredentialsBuilder);
static builder(): CredentialsBuilder;
}
export declare class CredentialsBuilder {
accessKeyId: string;
accessKeySecret: string;
securityToken: string;
providerName: string;
withAccessKeyId(value: string): this;
withAccessKeySecret(value: string): this;
withSecurityToken(value: string): this;
withProviderName(value: string): this;
build(): Credentials;
}

View File

@@ -0,0 +1,38 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.CredentialsBuilder = void 0;
class Credentials {
constructor(builder) {
this.accessKeyId = builder.accessKeyId;
this.accessKeySecret = builder.accessKeySecret;
this.securityToken = builder.securityToken;
this.providerName = builder.providerName;
}
static builder() {
return new CredentialsBuilder();
}
}
exports.default = Credentials;
class CredentialsBuilder {
withAccessKeyId(value) {
this.accessKeyId = value;
return this;
}
withAccessKeySecret(value) {
this.accessKeySecret = value;
return this;
}
withSecurityToken(value) {
this.securityToken = value;
return this;
}
withProviderName(value) {
this.providerName = value;
return this;
}
build() {
return new Credentials(this);
}
}
exports.CredentialsBuilder = CredentialsBuilder;
//# sourceMappingURL=credentials.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/credentials.ts"],"names":[],"mappings":";;;AAAA,MAAqB,WAAW;IAM9B,YAAY,OAA4B;QACtC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;QAC/C,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;QAC3C,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAC3C,CAAC;IAED,MAAM,CAAC,OAAO;QACZ,OAAO,IAAI,kBAAkB,EAAE,CAAC;IAClC,CAAC;CACF;AAhBD,8BAgBC;AAED,MAAa,kBAAkB;IAMtB,eAAe,CAAC,KAAa;QAClC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,mBAAmB,CAAC,KAAa;QACtC,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,iBAAiB,CAAC,KAAa;QACpC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,gBAAgB,CAAC,KAAa;QACnC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK;QACV,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;CACF;AA7BD,gDA6BC"}

View File

@@ -0,0 +1,5 @@
import Credentials from './credentials';
export default interface CredentialsProvider {
getCredentials: () => Promise<Credentials>;
getProviderName: () => string;
}

View File

@@ -0,0 +1,3 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=credentials_provider.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"credentials_provider.js","sourceRoot":"","sources":["../../src/credentials_provider.ts"],"names":[],"mappings":""}

View File

@@ -0,0 +1,17 @@
import Config from './config';
import CredentialModel from './credential_model';
import ICredential from './icredential';
export default class DefaultCredential implements ICredential {
accessKeyId: string;
accessKeySecret: string;
securityToken?: string;
bearerToken?: string;
type: string;
constructor(config: Config);
getAccessKeyId(): Promise<string>;
getAccessKeySecret(): Promise<string>;
getSecurityToken(): Promise<string>;
getBearerToken(): string;
getType(): string;
getCredential(): Promise<CredentialModel>;
}

View File

@@ -0,0 +1,41 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const credential_model_1 = __importDefault(require("./credential_model"));
class DefaultCredential {
constructor(config) {
this.accessKeyId = config.accessKeyId || '';
this.accessKeySecret = config.accessKeySecret || '';
this.securityToken = config.securityToken || '';
this.bearerToken = config.bearerToken || '';
this.type = config.type || '';
}
async getAccessKeyId() {
return this.accessKeyId;
}
async getAccessKeySecret() {
return this.accessKeySecret;
}
async getSecurityToken() {
return this.securityToken;
}
getBearerToken() {
return this.bearerToken;
}
getType() {
return this.type;
}
async getCredential() {
return new credential_model_1.default({
accessKeyId: this.accessKeyId,
accessKeySecret: this.accessKeySecret,
securityToken: this.securityToken,
bearerToken: this.bearerToken,
type: this.type,
});
}
}
exports.default = DefaultCredential;
//# sourceMappingURL=default_credential.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"default_credential.js","sourceRoot":"","sources":["../../src/default_credential.ts"],"names":[],"mappings":";;;;;AACA,0EAAiD;AAGjD,MAAqB,iBAAiB;IAOpC,YAAY,MAAc;QACxB,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC;QAC5C,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC;QACpD,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,EAAE,CAAC;QAChD,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,kBAAkB;QACtB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,OAAO,IAAI,0BAAe,CAAC;YACzB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC,CAAC;IACL,CAAC;CACF;AA5CD,oCA4CC"}

View File

@@ -0,0 +1,24 @@
import SessionCredential from './session_credential';
import ICredential from './icredential';
export default class EcsRamRoleCredential extends SessionCredential implements ICredential {
roleName: string;
enableIMDSv2: boolean;
metadataTokenDuration?: number;
runtime: {
[key: string]: any;
};
metadataToken?: string;
staleTime?: number;
readTimeout?: number;
connectTimeout?: number;
constructor(roleName?: string, runtime?: {
[key: string]: any;
}, enableIMDSv2?: boolean, metadataTokenDuration?: number);
getBody(url: string, options?: {
[key: string]: any;
}): Promise<string>;
getMetadataToken(): Promise<string>;
updateCredential(): Promise<void>;
getRoleName(): Promise<string>;
needToRefresh(): boolean;
}

View File

@@ -0,0 +1,80 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const session_credential_1 = __importDefault(require("./session_credential"));
const httpx_1 = __importDefault(require("httpx"));
const config_1 = __importDefault(require("./config"));
const SECURITY_CRED_URL = 'http://100.100.100.200/latest/meta-data/ram/security-credentials/';
const SECURITY_CRED_TOKEN_URL = 'http://100.100.100.200/latest/api/token';
class EcsRamRoleCredential extends session_credential_1.default {
constructor(roleName = '', runtime = {}, enableIMDSv2 = false, metadataTokenDuration = 21600) {
const conf = new config_1.default({
type: 'ecs_ram_role',
});
super(conf);
this.roleName = roleName;
this.enableIMDSv2 = enableIMDSv2;
this.metadataTokenDuration = metadataTokenDuration;
this.runtime = runtime;
this.sessionCredential = null;
this.metadataToken = null;
this.staleTime = 0;
}
async getBody(url, options = {}) {
const response = await httpx_1.default.request(url, options);
return (await httpx_1.default.read(response, 'utf8'));
}
async getMetadataToken() {
if (this.needToRefresh()) {
let tmpTime = new Date().getTime() + this.metadataTokenDuration * 1000;
const response = await httpx_1.default.request(SECURITY_CRED_TOKEN_URL, {
headers: {
'X-aliyun-ecs-metadata-token-ttl-seconds': `${this.metadataTokenDuration}`
},
method: "PUT"
});
if (response.statusCode !== 200) {
throw new Error(`Failed to get token from ECS Metadata Service. HttpCode=${response.statusCode}`);
}
this.staleTime = tmpTime;
return (await httpx_1.default.read(response, 'utf8'));
}
return this.metadataToken;
}
async updateCredential() {
let options = {};
if (this.enableIMDSv2) {
this.metadataToken = await this.getMetadataToken();
options = {
headers: {
'X-aliyun-ecs-metadata-token': this.metadataToken
},
readTimeout: this.readTimeout,
connectTimeout: this.connectTimeout
};
}
const roleName = await this.getRoleName();
const url = SECURITY_CRED_URL + roleName;
const body = await this.getBody(url, options);
const json = JSON.parse(body);
this.sessionCredential = {
AccessKeyId: json.AccessKeyId,
AccessKeySecret: json.AccessKeySecret,
Expiration: json.Expiration,
SecurityToken: json.SecurityToken,
};
}
async getRoleName() {
if (this.roleName && this.roleName.length) {
return this.roleName;
}
return await this.getBody(SECURITY_CRED_URL);
}
needToRefresh() {
return new Date().getTime() >= this.staleTime;
}
}
exports.default = EcsRamRoleCredential;
//# sourceMappingURL=ecs_ram_role_credential.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"ecs_ram_role_credential.js","sourceRoot":"","sources":["../../src/ecs_ram_role_credential.ts"],"names":[],"mappings":"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"}

View File

@@ -0,0 +1,9 @@
import CredentialModel from './credential_model';
export default interface ICredential {
getAccessKeyId: () => Promise<string>;
getAccessKeySecret: () => Promise<string>;
getSecurityToken: () => Promise<string>;
getBearerToken: () => string;
getType: () => string;
getCredential: () => Promise<CredentialModel>;
}

View File

@@ -0,0 +1,3 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=icredential.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"icredential.js","sourceRoot":"","sources":["../../src/icredential.ts"],"names":[],"mappings":""}

View File

@@ -0,0 +1,19 @@
import SessionCredential from './session_credential';
import Config from './config';
export default class OidcRoleArnCredential extends SessionCredential {
roleArn: string;
oidcProviderArn: string;
oidcTokenFilePath: string;
policy: string;
durationSeconds: number;
roleSessionName: string;
runtime: {
[key: string]: any;
};
host: string;
constructor(config: Config, runtime?: {
[key: string]: any;
});
private getOdicToken;
updateCredential(): Promise<void>;
}

View File

@@ -0,0 +1,79 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const session_credential_1 = __importDefault(require("./session_credential"));
const http_1 = require("./util/http");
const config_1 = __importDefault(require("./config"));
const fs_1 = __importDefault(require("fs"));
class OidcRoleArnCredential extends session_credential_1.default {
constructor(config, runtime = {}) {
if (!config.roleArn) {
config.roleArn = process.env.ALIBABA_CLOUD_ROLE_ARN;
if (!config.roleArn) {
throw new Error('roleArn does not exist and env ALIBABA_CLOUD_ROLE_ARN is null.');
}
}
if (!config.oidcProviderArn) {
config.oidcProviderArn = process.env.ALIBABA_CLOUD_OIDC_PROVIDER_ARN;
if (!config.oidcProviderArn) {
throw new Error('oidcProviderArn does not exist and env ALIBABA_CLOUD_OIDC_PROVIDER_ARN is null.');
}
}
if (!config.oidcTokenFilePath) {
config.oidcTokenFilePath = process.env.ALIBABA_CLOUD_OIDC_TOKEN_FILE;
if (!config.oidcTokenFilePath) {
throw new Error('oidcTokenFilePath is not exists and env ALIBABA_CLOUD_OIDC_TOKEN_FILE is null.');
}
}
if (!config.roleSessionName && process.env.ALIBABA_CLOUD_ROLE_SESSION_NAME) {
config.roleSessionName = process.env.ALIBABA_CLOUD_ROLE_SESSION_NAME;
}
const conf = new config_1.default({
type: 'oidc_role_arn'
});
super(conf);
this.oidcTokenFilePath = config.oidcTokenFilePath;
this.roleArn = config.roleArn;
this.policy = config.policy;
this.oidcProviderArn = config.oidcProviderArn;
this.durationSeconds = config.roleSessionExpiration || 3600;
this.roleSessionName = config.roleSessionName || 'role_session_name';
runtime.method = 'POST';
runtime.anonymous = true;
this.runtime = runtime;
this.host = 'https://sts.aliyuncs.com';
}
getOdicToken(oidcTokenFilePath) {
if (!fs_1.default.existsSync(oidcTokenFilePath)) {
throw new Error(`oidcTokenFilePath ${oidcTokenFilePath} is not exists.`);
}
let oidcToken = null;
try {
oidcToken = fs_1.default.readFileSync(oidcTokenFilePath, 'utf-8');
}
catch (err) {
throw new Error(`oidcTokenFilePath ${oidcTokenFilePath} cannot be read.`);
}
return oidcToken;
}
async updateCredential() {
const oidcToken = this.getOdicToken(this.oidcTokenFilePath);
const params = {
Action: 'AssumeRoleWithOIDC',
RoleArn: this.roleArn,
OIDCProviderArn: this.oidcProviderArn,
OIDCToken: oidcToken,
DurationSeconds: this.durationSeconds,
RoleSessionName: this.roleSessionName
};
if (this.policy) {
params.policy = this.policy;
}
const json = await (0, http_1.request)(this.host, params, this.runtime);
this.sessionCredential = json.Credentials;
}
}
exports.default = OidcRoleArnCredential;
//# sourceMappingURL=oidc_role_arn_credential.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"oidc_role_arn_credential.js","sourceRoot":"","sources":["../../src/oidc_role_arn_credential.ts"],"names":[],"mappings":";;;;;AAAA,8EAAqD;AACrD,sCAAsC;AACtC,sDAA8B;AAC9B,4CAAoB;AAEpB,MAAqB,qBAAsB,SAAQ,4BAAiB;IAUlE,YAAY,MAAc,EAAE,UAAkC,EAAE;QAC9D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;YACnB,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;YACpD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;gBACnB,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;aACnF;SACF;QAED,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE;YAC3B,MAAM,CAAC,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC;YACrE,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE;gBAC3B,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAAC;aACpG;SACF;QAED,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE;YAC7B,MAAM,CAAC,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC;YACrE,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE;gBAC7B,MAAM,IAAI,KAAK,CAAC,gFAAgF,CAAC,CAAC;aACnG;SACF;QAED,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE;YAC1E,MAAM,CAAC,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC;SACtE;QAED,MAAM,IAAI,GAAG,IAAI,gBAAM,CAAC;YACtB,IAAI,EAAE,eAAe;SACtB,CAAC,CAAC;QACH,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;QAClD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;QAC9C,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,qBAAqB,IAAI,IAAI,CAAC;QAC5D,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,mBAAmB,CAAC;QACrE,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;QACxB,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACzC,CAAC;IAEO,YAAY,CAAC,iBAAyB;QAC5C,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE;YACrC,MAAM,IAAI,KAAK,CAAC,qBAAqB,iBAAiB,kBAAkB,CAAC,CAAC;SAC3E;QACD,IAAI,SAAS,GAAG,IAAI,CAAC;QACrB,IAAI;YACF,SAAS,GAAG,YAAE,CAAC,YAAY,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;SACzD;QAAC,OAAO,GAAG,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,qBAAqB,iBAAiB,kBAAkB,CAAC,CAAC;SAC3E;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC5D,MAAM,MAAM,GAA2B;YACrC,MAAM,EAAE,oBAAoB;YAC5B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,SAAS,EAAE,SAAS;YACpB,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,eAAe,EAAE,IAAI,CAAC,eAAe;SACtC,CAAC;QACF,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;SAC7B;QACD,MAAM,IAAI,GAAG,MAAM,IAAA,cAAO,EAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5D,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC;IAC5C,CAAC;CACF;AAjFD,wCAiFC"}

View File

@@ -0,0 +1,5 @@
import ICredential from '../icredential';
declare const _default: {
getCredential(): ICredential;
};
export default _default;

View File

@@ -0,0 +1,16 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const uri_credential_1 = __importDefault(require("../uri_credential"));
exports.default = {
getCredential() {
const credentialsURI = process.env.ALIBABA_CLOUD_CREDENTIALS_URI;
if (credentialsURI) {
return new uri_credential_1.default(credentialsURI);
}
return null;
}
};
//# sourceMappingURL=credentials_uri_provider.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"credentials_uri_provider.js","sourceRoot":"","sources":["../../../src/provider/credentials_uri_provider.ts"],"names":[],"mappings":";;;;;AAAA,uEAA8C;AAG9C,kBAAe;IACb,aAAa;QACX,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC;QACjE,IAAI,cAAc,EAAE;YAClB,OAAO,IAAI,wBAAa,CAAC,cAAc,CAAC,CAAC;SAC1C;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAA"}

View File

@@ -0,0 +1,5 @@
import ICredential from '../icredential';
declare const _default: {
getCredential(): ICredential;
};
export default _default;

View File

@@ -0,0 +1,23 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const access_key_credential_1 = __importDefault(require("../access_key_credential"));
exports.default = {
getCredential() {
const accessKeyId = process.env.ALIBABA_CLOUD_ACCESS_KEY_ID;
const accessKeySecret = process.env.ALIBABA_CLOUD_ACCESS_KEY_SECRET;
if (accessKeyId === undefined || accessKeySecret === undefined) {
return null;
}
if (accessKeyId === null || accessKeyId === '') {
throw new Error('Environment variable ALIBABA_CLOUD_ACCESS_KEY_ID cannot be empty');
}
if (accessKeySecret === null || accessKeySecret === '') {
throw new Error('Environment variable ALIBABA_CLOUD_ACCESS_KEY_SECRET cannot be empty');
}
return new access_key_credential_1.default(accessKeyId, accessKeySecret);
}
};
//# sourceMappingURL=environment_variable_credentials_provider.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"environment_variable_credentials_provider.js","sourceRoot":"","sources":["../../../src/provider/environment_variable_credentials_provider.ts"],"names":[],"mappings":";;;;;AACA,qFAA2D;AAG3D,kBAAe;IACb,aAAa;QACX,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC;QAC5D,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC;QAEpE,IAAI,WAAW,KAAK,SAAS,IAAI,eAAe,KAAK,SAAS,EAAE;YAC9D,OAAO,IAAI,CAAC;SACb;QAED,IAAI,WAAW,KAAK,IAAI,IAAI,WAAW,KAAK,EAAE,EAAE;YAC9C,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;SACrF;QAED,IAAI,eAAe,KAAK,IAAI,IAAI,eAAe,KAAK,EAAE,EAAE;YACtD,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;SACzF;QAED,OAAO,IAAI,+BAAmB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;IAC/D,CAAC;CACF,CAAA"}

View File

@@ -0,0 +1,5 @@
import ICredential from '../icredential';
declare const _default: {
getCredential(): ICredential;
};
export default _default;

View File

@@ -0,0 +1,17 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const ecs_ram_role_credential_1 = __importDefault(require("../ecs_ram_role_credential"));
exports.default = {
getCredential() {
const roleName = process.env.ALIBABA_CLOUD_ECS_METADATA;
const enableIMDSv2 = process.env.ALIBABA_CLOUD_ECS_IMDSV2_ENABLE;
if (roleName && roleName.length) {
return new ecs_ram_role_credential_1.default(roleName, {}, enableIMDSv2 && enableIMDSv2.toLowerCase() === 'true');
}
return null;
}
};
//# sourceMappingURL=instance_ram_role_credentials_provider.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"instance_ram_role_credentials_provider.js","sourceRoot":"","sources":["../../../src/provider/instance_ram_role_credentials_provider.ts"],"names":[],"mappings":";;;;;AAIA,yFAA8D;AAE9D,kBAAe;IACb,aAAa;QACX,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC;QACxD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC;QACjE,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,EAAE;YAC/B,OAAO,IAAI,iCAAoB,CAAC,QAAQ,EAAE,EAAE,EAAE,YAAY,IAAI,YAAY,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,CAAC;SACtG;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAA"}

View File

@@ -0,0 +1,5 @@
import ICredential from '../icredential';
declare const _default: {
getCredential(): ICredential;
};
export default _default;

View File

@@ -0,0 +1,18 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const oidc_role_arn_credential_1 = __importDefault(require("../oidc_role_arn_credential"));
const config_1 = __importDefault(require("../config"));
exports.default = {
getCredential() {
if (process.env.ALIBABA_CLOUD_ROLE_ARN
&& process.env.ALIBABA_CLOUD_OIDC_PROVIDER_ARN
&& process.env.ALIBABA_CLOUD_OIDC_TOKEN_FILE) {
return new oidc_role_arn_credential_1.default(new config_1.default({}));
}
return null;
}
};
//# sourceMappingURL=oidc_role_arn_credentials_provider.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"oidc_role_arn_credentials_provider.js","sourceRoot":"","sources":["../../../src/provider/oidc_role_arn_credentials_provider.ts"],"names":[],"mappings":";;;;;AAIA,2FAAgE;AAChE,uDAA+B;AAE/B,kBAAe;IACb,aAAa;QACX,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB;eACjC,OAAO,CAAC,GAAG,CAAC,+BAA+B;eAC3C,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE;YAC9C,OAAO,IAAI,kCAAqB,CAAC,IAAI,gBAAM,CAAC,EAAE,CAAC,CAAC,CAAC;SAClD;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAA"}

View File

@@ -0,0 +1,5 @@
import ICredential from '../icredential';
declare const _default: {
getCredential(credentialName?: string): ICredential;
};
export default _default;

View File

@@ -0,0 +1,100 @@
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const access_key_credential_1 = __importDefault(require("../access_key_credential"));
const sts_token_credential_1 = __importDefault(require("../sts_token_credential"));
const ecs_ram_role_credential_1 = __importDefault(require("../ecs_ram_role_credential"));
const ram_role_arn_credential_1 = __importDefault(require("../ram_role_arn_credential"));
const oidc_role_arn_credential_1 = __importDefault(require("../oidc_role_arn_credential"));
const rsa_key_pair_credential_1 = __importDefault(require("../rsa_key_pair_credential"));
const bearer_token_credential_1 = __importDefault(require("../bearer_token_credential"));
const utils = __importStar(require("../util/utils"));
const fs_1 = __importDefault(require("fs"));
const config_1 = __importDefault(require("../config"));
const DEFAULT_PATH = process.env.HOME + '/.alibabacloud/credentials';
exports.default = {
getCredential(credentialName = 'default') {
let fileContent = null;
const credentialFile = process.env.ALIBABA_CLOUD_CREDENTIALS_FILE;
if (credentialFile === undefined) {
if (fs_1.default.existsSync(DEFAULT_PATH)) {
const content = utils.parseFile(DEFAULT_PATH, true);
if (content) {
fileContent = content;
}
}
}
else {
if (credentialFile === null || credentialFile === '') {
throw new Error('Environment variable credentialFile cannot be empty');
}
if (!fs_1.default.existsSync(credentialFile)) {
throw new Error(`credentialFile ${credentialFile} cannot be empty`);
}
fileContent = utils.parseFile(credentialFile);
}
if (!fileContent) {
return null;
}
const config = fileContent[credentialName] || {};
if (!config.type) {
throw new Error('Missing required type option in credentialFile');
}
switch (config.type) {
case 'access_key':
return new access_key_credential_1.default(config.access_key_id, config.access_key_secret);
case 'sts':
return new sts_token_credential_1.default(config.access_key_id, config.access_key_secret, config.security_token);
case 'ecs_ram_role':
return new ecs_ram_role_credential_1.default(config.role_name);
case 'ram_role_arn': {
const conf = new config_1.default({
roleArn: config.role_arn,
accessKeyId: config.access_key_id,
accessKeySecret: config.access_key_secret
});
return new ram_role_arn_credential_1.default(conf);
}
case 'oidc_role_arn': {
const conf = new config_1.default({
roleArn: config.role_arn,
oidcProviderArn: config.oidc_provider_arn,
oidcTokenFilePath: config.oidc_token_file_path
});
return new oidc_role_arn_credential_1.default(conf);
}
case 'rsa_key_pair':
return new rsa_key_pair_credential_1.default(config.public_key_id, config.private_key_file);
case 'bearer':
return new bearer_token_credential_1.default(config.bearer_token);
default:
throw new Error('Invalid type option, support: access_key, sts, ecs_ram_role, ram_role_arn, oidc_role_arn, rsa_key_pair, bearer');
}
}
};
//# sourceMappingURL=profile_credentials_provider.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"profile_credentials_provider.js","sourceRoot":"","sources":["../../../src/provider/profile_credentials_provider.ts"],"names":[],"mappings":"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"}

View File

@@ -0,0 +1,6 @@
import ICredential from '../icredential';
type IProvider = {
getCredential: () => ICredential;
};
export declare function getCredentials(providers?: IProvider[]): ICredential;
export {};

View File

@@ -0,0 +1,30 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getCredentials = void 0;
const environment_variable_credentials_provider_1 = __importDefault(require("./environment_variable_credentials_provider"));
const profile_credentials_provider_1 = __importDefault(require("./profile_credentials_provider"));
const instance_ram_role_credentials_provider_1 = __importDefault(require("./instance_ram_role_credentials_provider"));
const credentials_uri_provider_1 = __importDefault(require("./credentials_uri_provider"));
const oidc_role_arn_credentials_provider_1 = __importDefault(require("./oidc_role_arn_credentials_provider"));
const defaultProviders = [
environment_variable_credentials_provider_1.default,
oidc_role_arn_credentials_provider_1.default,
profile_credentials_provider_1.default,
instance_ram_role_credentials_provider_1.default,
credentials_uri_provider_1.default
];
function getCredentials(providers = null) {
const providerChain = providers || defaultProviders;
for (const provider of providerChain) {
const credential = provider.getCredential();
if (credential) {
return credential;
}
}
throw new Error('Not found credentials');
}
exports.getCredentials = getCredentials;
//# sourceMappingURL=provider_chain.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"provider_chain.js","sourceRoot":"","sources":["../../../src/provider/provider_chain.ts"],"names":[],"mappings":";;;;;;AAAA,4HAAiG;AACjG,kGAAwE;AACxE,sHAA0F;AAC1F,0FAAgE;AAChE,8GAAkF;AAQlF,MAAM,gBAAgB,GAAiB;IACrC,mDAAsC;IACtC,4CAA8B;IAC9B,sCAA0B;IAC1B,gDAAkC;IAClC,kCAAsB;CACvB,CAAC;AAEF,SAAgB,cAAc,CAAC,YAAyB,IAAI;IAC1D,MAAM,aAAa,GAAG,SAAS,IAAI,gBAAgB,CAAC;IACpD,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE;QACpC,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,EAAE,CAAC;QAC5C,IAAI,UAAU,EAAE;YACd,OAAO,UAAU,CAAC;SACnB;KACF;IAED,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;AAC3C,CAAC;AAVD,wCAUC"}

View File

@@ -0,0 +1,43 @@
import Credentials from '../credentials';
import CredentialsProvider from '../credentials_provider';
declare class CLIProfileCredentialsProviderBuilder {
profileName: string;
build(): CLIProfileCredentialsProvider;
withProfileName(profileName: string): this;
}
interface Profile {
name: string;
mode: string;
access_key_id: string;
access_key_secret: string;
sts_token: string;
region_id: string;
ram_role_arn: string;
ram_session_name: string;
expired_seconds: number;
sts_region: string;
source_profile: string;
ram_role_name: string;
oidc_token_file: string;
oidc_provider_arn: string;
sts_endpoint: string;
enable_vpc: boolean;
duration_seconds: number;
}
declare class Configuration {
current: string;
profiles: Profile[];
}
export declare function getConfiguration(cfgPath: string): Promise<Configuration>;
export declare function getProfile(conf: Configuration, profileName: string): Profile;
export default class CLIProfileCredentialsProvider implements CredentialsProvider {
static builder(): CLIProfileCredentialsProviderBuilder;
private readonly profileName;
private innerProvider;
private homedir;
constructor(builder: CLIProfileCredentialsProviderBuilder);
private getCredentialsProvider;
getCredentials(): Promise<Credentials>;
getProviderName(): string;
}
export {};

View File

@@ -0,0 +1,157 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getProfile = exports.getConfiguration = void 0;
const fs_1 = require("fs");
const util_1 = require("util");
const path_1 = __importDefault(require("path"));
const os_1 = __importDefault(require("os"));
const credentials_1 = __importDefault(require("../credentials"));
const static_ak_1 = __importDefault(require("./static_ak"));
const static_sts_1 = __importDefault(require("./static_sts"));
const ram_role_arn_1 = __importDefault(require("./ram_role_arn"));
const oidc_role_arn_1 = __importDefault(require("./oidc_role_arn"));
const ecs_ram_role_1 = __importDefault(require("./ecs_ram_role"));
const readFileAsync = (0, util_1.promisify)(fs_1.readFile);
class CLIProfileCredentialsProviderBuilder {
build() {
// 优先级:
// 1. 使用显示指定的 profileName
// 2. 使用环境变量ALIBABA_CLOUD_PROFILE制定的 profileName
// 3. 使用 CLI 配置中的当前 profileName
if (!this.profileName) {
this.profileName = process.env.ALIBABA_CLOUD_PROFILE;
}
if (process.env.ALIBABA_CLOUD_CLI_PROFILE_DISABLED && process.env.ALIBABA_CLOUD_CLI_PROFILE_DISABLED.toLowerCase() === 'true') {
throw new Error('the CLI profile is disabled');
}
return new CLIProfileCredentialsProvider(this);
}
withProfileName(profileName) {
this.profileName = profileName;
return this;
}
}
class Configuration {
}
async function getConfiguration(cfgPath) {
let content;
try {
content = await readFileAsync(cfgPath, 'utf8');
}
catch (ex) {
throw new Error(`reading aliyun cli config from '${cfgPath}' failed.`);
}
let conf;
try {
conf = JSON.parse(content);
}
catch (ex) {
throw new Error(`parse aliyun cli config from '${cfgPath}' failed: ${content}`);
}
if (!conf || !conf.profiles || conf.profiles.length === 0) {
throw new Error(`no any configured profiles in '${cfgPath}'`);
}
return conf;
}
exports.getConfiguration = getConfiguration;
function getProfile(conf, profileName) {
for (const p of conf.profiles) {
if (p.name === profileName) {
return p;
}
}
throw new Error(`unable to get profile with '${profileName}'`);
}
exports.getProfile = getProfile;
class CLIProfileCredentialsProvider {
static builder() {
return new CLIProfileCredentialsProviderBuilder();
}
constructor(builder) {
// used for mock
this.homedir = os_1.default.homedir();
this.profileName = builder.profileName;
}
getCredentialsProvider(conf, profileName) {
const p = getProfile(conf, profileName);
switch (p.mode) {
case 'AK':
return static_ak_1.default.builder()
.withAccessKeyId(p.access_key_id)
.withAccessKeySecret(p.access_key_secret)
.build();
case 'StsToken':
return static_sts_1.default.builder()
.withAccessKeyId(p.access_key_id)
.withAccessKeySecret(p.access_key_secret)
.withSecurityToken(p.sts_token)
.build();
case 'RamRoleArn': {
const previousProvider = static_ak_1.default.builder()
.withAccessKeyId(p.access_key_id)
.withAccessKeySecret(p.access_key_secret)
.build();
return ram_role_arn_1.default.builder()
.withCredentialsProvider(previousProvider)
.withRoleArn(p.ram_role_arn)
.withRoleSessionName(p.ram_session_name)
.withDurationSeconds(p.expired_seconds)
.withStsRegionId(p.sts_region)
.withStsEndpoint(p.sts_endpoint)
.withEnableVpc(p.enable_vpc)
.build();
}
case 'EcsRamRole':
return ecs_ram_role_1.default.builder().withRoleName(p.ram_role_name).build();
case 'OIDC':
return oidc_role_arn_1.default.builder()
.withOIDCTokenFilePath(p.oidc_token_file)
.withOIDCProviderArn(p.oidc_provider_arn)
.withRoleArn(p.ram_role_arn)
.withStsRegionId(p.sts_region)
.withDurationSeconds(p.expired_seconds)
.withRoleSessionName(p.ram_session_name)
.withDurationSeconds(p.duration_seconds)
.withEnableVpc(p.enable_vpc)
.build();
case 'ChainableRamRoleArn': {
const previousProvider = this.getCredentialsProvider(conf, p.source_profile);
return ram_role_arn_1.default.builder()
.withCredentialsProvider(previousProvider)
.withRoleArn(p.ram_role_arn)
.withRoleSessionName(p.ram_session_name)
.withDurationSeconds(p.expired_seconds)
.withStsRegionId(p.sts_region)
.build();
}
default:
throw new Error(`unsupported profile mode '${p.mode}'`);
}
}
async getCredentials() {
if (!this.innerProvider) {
if (!this.homedir) {
throw new Error('cannot found home dir');
}
const cfgPath = path_1.default.join(this.homedir, '.aliyun/config.json');
const conf = await getConfiguration(cfgPath);
const profileName = this.profileName || conf.current;
this.innerProvider = this.getCredentialsProvider(conf, profileName);
}
const credentials = await this.innerProvider.getCredentials();
return credentials_1.default.builder()
.withAccessKeyId(credentials.accessKeyId)
.withAccessKeySecret(credentials.accessKeySecret)
.withSecurityToken(credentials.securityToken)
.withProviderName(`${this.getProviderName()}/${this.innerProvider.getProviderName()}`)
.build();
}
getProviderName() {
return 'cli_profile';
}
}
exports.default = CLIProfileCredentialsProvider;
//# sourceMappingURL=cli_profile.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"cli_profile.js","sourceRoot":"","sources":["../../../src/providers/cli_profile.ts"],"names":[],"mappings":"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"}

View File

@@ -0,0 +1,14 @@
import Credentials from '../credentials';
import CredentialsProvider from '../credentials_provider';
export default class DefaultCredentialsProvider implements CredentialsProvider {
private readonly providers;
private lastUsedProvider;
static builder(): DefaultCredentialsProviderBuilder;
constructor(builder: DefaultCredentialsProviderBuilder);
getCredentials(): Promise<Credentials>;
getProviderName(): string;
}
declare class DefaultCredentialsProviderBuilder {
build(): DefaultCredentialsProvider;
}
export {};

View File

@@ -0,0 +1,112 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const credentials_1 = __importDefault(require("../credentials"));
const cli_profile_1 = __importDefault(require("./cli_profile"));
const ecs_ram_role_1 = __importDefault(require("./ecs_ram_role"));
const env_1 = __importDefault(require("./env"));
const oidc_role_arn_1 = __importDefault(require("./oidc_role_arn"));
const uri_1 = __importDefault(require("./uri"));
const profile_1 = __importDefault(require("./profile"));
class DefaultCredentialsProvider {
static builder() {
return new DefaultCredentialsProviderBuilder();
}
constructor(builder) {
this.providers = [];
// Add static ak or sts credentials provider from env
try {
const envProvider = env_1.default.builder().build();
this.providers.push(envProvider);
}
catch (ex) {
// ignore
}
// oidc check
try {
const oidcProvider = oidc_role_arn_1.default.builder().build();
this.providers.push(oidcProvider);
}
catch (ex) {
// ignore
}
// cli credentials provider
try {
const cliProfileProvider = cli_profile_1.default.builder().build();
this.providers.push(cliProfileProvider);
}
catch (ex) {
// ignore
}
// profile credentials provider
try {
const profileProvider = profile_1.default.builder().build();
this.providers.push(profileProvider);
}
catch (ex) {
// ignore
}
// Add IMDS
try {
const ecsRamRoleProvider = ecs_ram_role_1.default.builder().withRoleName(process.env.ALIBABA_CLOUD_ECS_METADATA).build();
this.providers.push(ecsRamRoleProvider);
}
catch (ex) {
// ignore
}
// credentials uri
try {
const uriProvider = uri_1.default.builder().withCredentialsURI(process.env.ALIBABA_CLOUD_CREDENTIALS_URI).build();
this.providers.push(uriProvider);
}
catch (ex) {
// ignore
}
}
async getCredentials() {
if (this.lastUsedProvider) {
const inner = await this.lastUsedProvider.getCredentials();
return credentials_1.default.builder()
.withAccessKeyId(inner.accessKeyId)
.withAccessKeySecret(inner.accessKeySecret)
.withSecurityToken(inner.securityToken)
.withProviderName(`${this.getProviderName()}/${this.lastUsedProvider.getProviderName()}`)
.build();
}
const errors = [];
for (const provider of this.providers) {
this.lastUsedProvider = provider;
let inner;
try {
inner = await provider.getCredentials();
}
catch (ex) {
errors.push(ex);
continue;
}
if (inner) {
return credentials_1.default.builder()
.withAccessKeyId(inner.accessKeyId)
.withAccessKeySecret(inner.accessKeySecret)
.withSecurityToken(inner.securityToken)
.withProviderName(`${this.getProviderName()}/${this.lastUsedProvider.getProviderName()}`)
.build();
}
}
throw new Error(`unable to get credentials from any of the providers in the chain: ${errors.map((e) => {
return e.message;
}).join(', ')}`);
}
getProviderName() {
return 'default';
}
}
exports.default = DefaultCredentialsProvider;
class DefaultCredentialsProviderBuilder {
build() {
return new DefaultCredentialsProvider(this);
}
}
//# sourceMappingURL=default.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"default.js","sourceRoot":"","sources":["../../../src/providers/default.ts"],"names":[],"mappings":"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"}

View File

@@ -0,0 +1,35 @@
/// <reference types="node" />
import CredentialsProvider from '../credentials_provider';
import { SessionCredentialProvider } from './session';
export default class ECSRAMRoleCredentialsProvider extends SessionCredentialProvider implements CredentialsProvider {
private readonly roleName;
private readonly disableIMDSv1;
private checker;
private doRequest;
private readonly readTimeout;
private readonly connectTimeout;
private shouldRefreshCred;
static builder(): ECSRAMRoleCredentialsProviderBuilder;
constructor(builder: ECSRAMRoleCredentialsProviderBuilder);
checkCredentialsUpdateAsynchronously(): NodeJS.Timeout;
close(): void;
private getMetadataToken;
private getRoleName;
private getCredentialsInternal;
getProviderName(): string;
}
declare class ECSRAMRoleCredentialsProviderBuilder {
roleName: string;
disableIMDSv1: boolean;
readTimeout?: number;
connectTimeout?: number;
asyncCredentialUpdateEnabled?: boolean;
constructor();
withRoleName(roleName: string): ECSRAMRoleCredentialsProviderBuilder;
withDisableIMDSv1(disableIMDSv1: boolean): ECSRAMRoleCredentialsProviderBuilder;
withReadTimeout(readTimeout: number): ECSRAMRoleCredentialsProviderBuilder;
withConnectTimeout(connectTimeout: number): ECSRAMRoleCredentialsProviderBuilder;
withAsyncCredentialUpdateEnabled(asyncCredentialUpdateEnabled: boolean): ECSRAMRoleCredentialsProviderBuilder;
build(): ECSRAMRoleCredentialsProvider;
}
export {};

View File

@@ -0,0 +1,187 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const http_1 = require("./http");
const session_1 = require("./session");
const PREFETCH_TIME = 60 * 60;
const defaultMetadataTokenDuration = 21600; // 6 hours
class ECSRAMRoleCredentialsProvider extends session_1.SessionCredentialProvider {
static builder() {
return new ECSRAMRoleCredentialsProviderBuilder();
}
constructor(builder) {
super(session_1.STALE_TIME, PREFETCH_TIME);
// for mock
this.doRequest = http_1.doRequest;
this.refresher = this.getCredentialsInternal;
this.roleName = builder.roleName;
this.disableIMDSv1 = builder.disableIMDSv1;
this.readTimeout = builder.readTimeout;
this.connectTimeout = builder.connectTimeout;
this.checker = null;
this.shouldRefreshCred = false;
if (builder.asyncCredentialUpdateEnabled) {
this.checker = this.checkCredentialsUpdateAsynchronously();
}
}
checkCredentialsUpdateAsynchronously() {
return setTimeout(async () => {
try {
if (this.shouldRefreshCred) {
await this.getCredentials();
}
}
catch (err) {
console.error('CheckCredentialsUpdateAsynchronously Error:', err);
}
finally {
this.checker = this.checkCredentialsUpdateAsynchronously();
}
}, 1000 * 60);
}
close() {
if (this.checker != null) {
clearTimeout(this.checker);
this.checker = null;
}
}
async getMetadataToken() {
// PUT http://100.100.100.200/latest/api/token
const request = http_1.Request.builder()
.withMethod('PUT')
.withProtocol('http')
.withHost('100.100.100.200')
.withPath('/latest/api/token')
.withHeaders({
'x-aliyun-ecs-metadata-token-ttl-seconds': `${defaultMetadataTokenDuration}`
})
.withReadTimeout(this.readTimeout || 1000)
.withConnectTimeout(this.connectTimeout || 1000)
.build();
// ConnectTimeout: 5 * time.Second,
// ReadTimeout: 5 * time.Second,
try {
const response = await this.doRequest(request);
if (response.statusCode !== 200) {
throw new Error(`get metadata token failed with ${response.statusCode}`);
}
return response.body.toString('utf8');
}
catch (error) {
if (this.disableIMDSv1) {
throw error;
}
return null;
}
}
async getRoleName() {
const builder = http_1.Request.builder()
.withMethod('GET')
.withProtocol('http')
.withHost('100.100.100.200')
.withPath('/latest/meta-data/ram/security-credentials/')
.withReadTimeout(this.readTimeout || 1000)
.withConnectTimeout(this.connectTimeout || 1000);
const metadataToken = await this.getMetadataToken();
if (metadataToken !== null) {
builder.withHeaders({
'x-aliyun-ecs-metadata-token': metadataToken
});
}
// ConnectTimeout: 5 * time.Second,
// ReadTimeout: 5 * time.Second,
const request = builder.build();
const response = await this.doRequest(request);
if (response.statusCode !== 200) {
throw new Error(`get role name failed: ${request.method} ${request.toRequestURL()} ${response.statusCode}`);
}
return response.body.toString().trim();
}
async getCredentialsInternal() {
let roleName = this.roleName;
if (!roleName) {
roleName = await this.getRoleName();
}
const builder = http_1.Request.builder()
.withMethod('GET')
.withProtocol('http')
.withHost('100.100.100.200')
.withPath(`/latest/meta-data/ram/security-credentials/${roleName}`)
.withReadTimeout(this.readTimeout || 1000)
.withConnectTimeout(this.connectTimeout || 1000);
// ConnectTimeout: 5 * time.Second,
// ReadTimeout: 5 * time.Second,
// Headers: map[string]string{ },
const metadataToken = await this.getMetadataToken();
if (metadataToken !== null) {
builder.withHeaders({
'x-aliyun-ecs-metadata-token': metadataToken
});
}
const request = builder.build();
const response = await this.doRequest(request);
if (response.statusCode !== 200) {
throw new Error(`get sts token failed, httpStatus: ${response.statusCode}, message = ${response.body.toString()}`);
}
let data;
try {
data = JSON.parse(response.body.toString());
}
catch (ex) {
throw new Error(`get sts token failed, json parse failed: ${ex.message}`);
}
if (!data || !data.AccessKeyId || !data.AccessKeySecret || !data.SecurityToken) {
throw new Error('get sts token failed');
}
if (data.Code !== 'Success') {
throw new Error('refresh Ecs sts token err, Code is not Success');
}
this.shouldRefreshCred = true;
return new session_1.Session(data.AccessKeyId, data.AccessKeySecret, data.SecurityToken, data.Expiration);
}
getProviderName() {
return 'ecs_ram_role';
}
}
exports.default = ECSRAMRoleCredentialsProvider;
class ECSRAMRoleCredentialsProviderBuilder {
constructor() {
this.disableIMDSv1 = false;
this.asyncCredentialUpdateEnabled = false;
}
withRoleName(roleName) {
this.roleName = roleName;
return this;
}
withDisableIMDSv1(disableIMDSv1) {
this.disableIMDSv1 = disableIMDSv1;
return this;
}
withReadTimeout(readTimeout) {
this.readTimeout = readTimeout;
return this;
}
withConnectTimeout(connectTimeout) {
this.connectTimeout = connectTimeout;
return this;
}
withAsyncCredentialUpdateEnabled(asyncCredentialUpdateEnabled) {
this.asyncCredentialUpdateEnabled = asyncCredentialUpdateEnabled;
return this;
}
build() {
// 允许通过环境变量强制关闭 IMDS
if (process.env.ALIBABA_CLOUD_ECS_METADATA_DISABLED && process.env.ALIBABA_CLOUD_ECS_METADATA_DISABLED.toLowerCase() === 'true') {
throw new Error('IMDS credentials is disabled');
}
// 设置 roleName 默认值
if (!this.roleName) {
this.roleName = process.env.ALIBABA_CLOUD_ECS_METADATA;
}
// 允许通过环境变量强制关闭 V1
if (process.env.ALIBABA_CLOUD_IMDSV1_DISABLED && process.env.ALIBABA_CLOUD_IMDSV1_DISABLED.toLowerCase() === 'true') {
this.disableIMDSv1 = true;
}
return new ECSRAMRoleCredentialsProvider(this);
}
}
//# sourceMappingURL=ecs_ram_role.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,12 @@
import Credentials from '../credentials';
import CredentialsProvider from '../credentials_provider';
export default class EnvironmentVariableCredentialsProvider implements CredentialsProvider {
static builder(): EnvironmentVariableCredentialsProviderBuilder;
getCredentials(): Promise<Credentials>;
getProviderName(): string;
constructor(builder: EnvironmentVariableCredentialsProviderBuilder);
}
declare class EnvironmentVariableCredentialsProviderBuilder {
build(): EnvironmentVariableCredentialsProvider;
}
export {};

View File

@@ -0,0 +1,40 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const credentials_1 = __importDefault(require("../credentials"));
class EnvironmentVariableCredentialsProvider {
static builder() {
return new EnvironmentVariableCredentialsProviderBuilder();
}
async getCredentials() {
const accessKeyId = process.env.ALIBABA_CLOUD_ACCESS_KEY_ID;
if (!accessKeyId) {
throw new Error('unable to get credentials from enviroment variables, Access key ID must be specified via environment variable (ALIBABA_CLOUD_ACCESS_KEY_ID)');
}
const accessKeySecret = process.env.ALIBABA_CLOUD_ACCESS_KEY_SECRET;
if (!accessKeySecret) {
throw new Error('unable to get credentials from enviroment variables, Access key secret must be specified via environment variable (ALIBABA_CLOUD_ACCESS_KEY_SECRET)');
}
const securityToken = process.env.ALIBABA_CLOUD_SECURITY_TOKEN;
return credentials_1.default.builder()
.withAccessKeyId(accessKeyId)
.withAccessKeySecret(accessKeySecret)
.withSecurityToken(securityToken)
.withProviderName(this.getProviderName())
.build();
}
getProviderName() {
return 'env';
}
constructor(builder) {
}
}
exports.default = EnvironmentVariableCredentialsProvider;
class EnvironmentVariableCredentialsProviderBuilder {
build() {
return new EnvironmentVariableCredentialsProvider(this);
}
}
//# sourceMappingURL=env.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../../src/providers/env.ts"],"names":[],"mappings":";;;;;AAAA,iEAAyC;AAGzC,MAAqB,sCAAsC;IACzD,MAAM,CAAC,OAAO;QACZ,OAAO,IAAI,6CAA6C,EAAE,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC;QAC5D,IAAI,CAAC,WAAW,EAAE;YAChB,MAAM,IAAI,KAAK,CAAC,6IAA6I,CAAC,CAAA;SAC/J;QAED,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC;QACpE,IAAI,CAAC,eAAe,EAAE;YACpB,MAAM,IAAI,KAAK,CAAC,qJAAqJ,CAAC,CAAA;SACvK;QAED,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC;QAE/D,OAAO,qBAAW,CAAC,OAAO,EAAE;aACzB,eAAe,CAAC,WAAW,CAAC;aAC5B,mBAAmB,CAAC,eAAe,CAAC;aACpC,iBAAiB,CAAC,aAAa,CAAC;aAChC,gBAAgB,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;aACxC,KAAK,EAAE,CAAC;IACb,CAAC;IAGD,eAAe;QACb,OAAO,KAAK,CAAC;IACf,CAAC;IAED,YAAY,OAAsD;IAElE,CAAC;CACF;AAlCD,yDAkCC;AAED,MAAM,6CAA6C;IACjD,KAAK;QACH,OAAO,IAAI,sCAAsC,CAAC,IAAI,CAAC,CAAC;IAC1D,CAAC;CACF"}

View File

@@ -0,0 +1,85 @@
/// <reference types="node" />
/// <reference types="node" />
export declare class Request {
readonly queries: {
[key: string]: string;
};
readonly headers: {
[key: string]: string;
};
readonly method: string;
readonly protocol: any;
readonly host: any;
readonly path: any;
readonly bodyForm: {
[key: string]: string;
};
readonly bodyBytes: Buffer;
readonly url: string;
readonly readTimeout: number;
readonly connectTimeout: number;
static builder(): RequestBuilder;
constructor(builder: RequestBuilder);
toRequestURL(): string;
}
export declare class RequestBuilder {
method: string;
protocol: string;
host: string;
path: string;
queries: {
[key: string]: string;
};
headers: {
[key: string]: string;
};
bodyForm: {
[key: string]: string;
};
bodyBytes: Buffer;
readTimeout: number;
connectTimeout: number;
url: string;
build(): Request;
withMethod(method: string): this;
withProtocol(protocol: string): this;
withHost(host: string): this;
withPath(path: string): this;
withQueries(queries: {
[key: string]: string;
}): this;
withHeaders(headers: {
[key: string]: string;
}): this;
withBodyForm(bodyForm: {
[key: string]: string;
}): this;
withURL(url: string): this;
withReadTimeout(readTimeout: number): this;
withConnectTimeout(connectTimeout: number): this;
}
export declare class Response {
readonly statusCode: number;
readonly body: Buffer;
readonly headers: {
[key: string]: string;
};
static builder(): ResponseBuilder;
constructor(builder: ResponseBuilder);
}
declare class ResponseBuilder {
statusCode: number;
headers: {
[key: string]: string;
};
body: Buffer;
withStatusCode(statusCode: number): this;
withHeaders(headers: {
[key: string]: string;
}): this;
withBody(body: Buffer): this;
constructor();
build(): Response;
}
export declare function doRequest(req: Request): Promise<Response>;
export {};

View File

@@ -0,0 +1,158 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.doRequest = exports.Response = exports.RequestBuilder = exports.Request = void 0;
const httpx_1 = __importDefault(require("httpx"));
class Request {
static builder() {
return new RequestBuilder();
}
constructor(builder) {
this.method = builder.method;
this.protocol = builder.protocol;
this.host = builder.host;
this.path = builder.path;
this.queries = builder.queries;
this.headers = builder.headers;
this.bodyForm = builder.bodyForm;
this.bodyBytes = builder.bodyBytes;
this.url = builder.url;
this.readTimeout = builder.readTimeout;
this.connectTimeout = builder.connectTimeout;
}
toRequestURL() {
if (this.url) {
return this.url;
}
let url = `${this.protocol}://${this.host}${this.path}`;
if (this.queries && Object.keys(this.queries).length > 0) {
url += `?` + querystringify(this.queries);
}
return url;
}
}
exports.Request = Request;
class RequestBuilder {
build() {
// set default values
if (!this.protocol) {
this.protocol = 'https';
}
if (!this.path) {
this.path = '/';
}
if (!this.headers) {
this.headers = {};
}
if (!this.queries) {
this.queries = {};
}
return new Request(this);
}
withMethod(method) {
this.method = method;
return this;
}
withProtocol(protocol) {
this.protocol = protocol;
return this;
}
withHost(host) {
this.host = host;
return this;
}
withPath(path) {
this.path = path;
return this;
}
withQueries(queries) {
this.queries = queries;
return this;
}
withHeaders(headers) {
this.headers = headers;
return this;
}
withBodyForm(bodyForm) {
this.bodyForm = bodyForm;
return this;
}
withURL(url) {
this.url = url;
return this;
}
withReadTimeout(readTimeout) {
this.readTimeout = readTimeout;
return this;
}
withConnectTimeout(connectTimeout) {
this.connectTimeout = connectTimeout;
return this;
}
}
exports.RequestBuilder = RequestBuilder;
class Response {
static builder() {
return new ResponseBuilder();
}
constructor(builder) {
this.statusCode = builder.statusCode;
this.headers = builder.headers;
this.body = builder.body;
}
}
exports.Response = Response;
class ResponseBuilder {
withStatusCode(statusCode) {
this.statusCode = statusCode;
return this;
}
withHeaders(headers) {
this.headers = headers;
return this;
}
withBody(body) {
this.body = body;
return this;
}
constructor() {
this.headers = {};
}
build() {
return new Response(this);
}
}
function querystringify(queries) {
const fields = [];
for (const [key, value] of Object.entries(queries)) {
fields.push(key + '=' + encodeURIComponent(value));
}
return fields.join('&');
}
async function doRequest(req) {
const url = req.toRequestURL();
let body;
if (req.bodyForm && Object.keys(req.bodyForm).length > 0) {
body = querystringify(req.bodyForm);
if (!req.headers['Content-Type']) {
req.headers['Content-Type'] = 'application/x-www-form-urlencoded';
}
}
const response = await httpx_1.default.request(url, {
method: req.method,
data: body,
headers: req.headers,
readTimeout: req.readTimeout,
connectTimeout: req.connectTimeout
});
const responseBody = await httpx_1.default.read(response, '');
return Response.builder()
.withStatusCode(response.statusCode)
.withHeaders(response.headers)
.withBody(responseBody)
.build();
}
exports.doRequest = doRequest;
//# sourceMappingURL=http.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/providers/http.ts"],"names":[],"mappings":"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"}

View File

@@ -0,0 +1,48 @@
import CredentialsProvider from '../credentials_provider';
import { Session, SessionCredentialProvider } from './session';
declare class OIDCRoleArnCredentialsProviderBuilder {
oidcProviderArn: any;
oidcTokenFilePath: any;
roleArn: any;
roleSessionName: string;
stsEndpoint: string;
stsRegionId: string;
policy: string;
durationSeconds: number;
enableVpc?: boolean;
readTimeout?: number;
connectTimeout?: number;
withOIDCProviderArn(oidcProviderArn: string): this;
withOIDCTokenFilePath(path: string): this;
withRoleArn(roleArn: string): this;
withRoleSessionName(roleSessionName: string): this;
withDurationSeconds(durationSeconds: number): this;
withStsEndpoint(stsEndpoint: string): this;
withStsRegionId(regionId: string): this;
withPolicy(policy: string): this;
withEnableVpc(enableVpc: boolean): OIDCRoleArnCredentialsProviderBuilder;
withReadTimeout(readTimeout: number): OIDCRoleArnCredentialsProviderBuilder;
withConnectTimeout(connectTimeout: number): OIDCRoleArnCredentialsProviderBuilder;
build(): OIDCRoleArnCredentialsProvider;
}
export default class OIDCRoleArnCredentialsProvider extends SessionCredentialProvider implements CredentialsProvider {
private readonly roleArn;
private readonly oidcProviderArn;
private readonly oidcTokenFilePath;
private readonly policy;
private readonly durationSeconds;
private readonly roleSessionName;
runtime: {
[key: string]: any;
};
private readonly stsEndpoint;
private doRequest;
private readonly readTimeout;
private readonly connectTimeout;
lastUpdateTimestamp: number;
static builder(): OIDCRoleArnCredentialsProviderBuilder;
constructor(builder: OIDCRoleArnCredentialsProviderBuilder);
getProviderName(): string;
getCredentialsInternal(): Promise<Session>;
}
export {};

View File

@@ -0,0 +1,201 @@
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
const fs_1 = require("fs");
const util_1 = require("util");
const session_1 = require("./session");
const utils = __importStar(require("../util/utils"));
const http_1 = require("./http");
const readFileAsync = (0, util_1.promisify)(fs_1.readFile);
class OIDCRoleArnCredentialsProviderBuilder {
withOIDCProviderArn(oidcProviderArn) {
this.oidcProviderArn = oidcProviderArn;
return this;
}
withOIDCTokenFilePath(path) {
this.oidcTokenFilePath = path;
return this;
}
withRoleArn(roleArn) {
this.roleArn = roleArn;
return this;
}
withRoleSessionName(roleSessionName) {
this.roleSessionName = roleSessionName;
return this;
}
withDurationSeconds(durationSeconds) {
this.durationSeconds = durationSeconds;
return this;
}
withStsEndpoint(stsEndpoint) {
this.stsEndpoint = stsEndpoint;
return this;
}
withStsRegionId(regionId) {
this.stsRegionId = regionId;
return this;
}
withPolicy(policy) {
this.policy = policy;
return this;
}
withEnableVpc(enableVpc) {
this.enableVpc = enableVpc;
return this;
}
withReadTimeout(readTimeout) {
this.readTimeout = readTimeout;
return this;
}
withConnectTimeout(connectTimeout) {
this.connectTimeout = connectTimeout;
return this;
}
build() {
// set default values
if (!this.oidcProviderArn) {
this.oidcProviderArn = process.env.ALIBABA_CLOUD_OIDC_PROVIDER_ARN;
}
if (!this.oidcTokenFilePath) {
this.oidcTokenFilePath = process.env.ALIBABA_CLOUD_OIDC_TOKEN_FILE;
}
if (!this.roleSessionName) {
this.roleSessionName = process.env.ALIBABA_CLOUD_ROLE_SESSION_NAME;
}
if (!this.durationSeconds) {
this.durationSeconds = 3600;
}
if (!this.roleArn) {
this.roleArn = process.env.ALIBABA_CLOUD_ROLE_ARN;
}
if (!this.roleArn) {
throw new Error('roleArn does not exist and env ALIBABA_CLOUD_ROLE_ARN is null.');
}
if (!this.oidcProviderArn) {
throw new Error('oidcProviderArn does not exist and env ALIBABA_CLOUD_OIDC_PROVIDER_ARN is null.');
}
if (!this.oidcTokenFilePath) {
throw new Error('oidcTokenFilePath is not exists and env ALIBABA_CLOUD_OIDC_TOKEN_FILE is null.');
}
if (!this.roleSessionName) {
this.roleSessionName = 'credentials-nodejs-' + Date.now();
}
if (this.durationSeconds < 900) {
throw new Error('session duration should be in the range of 900s - max session duration');
}
if (!this.stsRegionId) {
this.stsRegionId = process.env.ALIBABA_CLOUD_STS_REGION;
}
if (!this.enableVpc) {
this.enableVpc = process.env.ALIBABA_CLOUD_VPC_ENDPOINT_ENABLED && process.env.ALIBABA_CLOUD_VPC_ENDPOINT_ENABLED.toLowerCase() === 'true' || false;
}
// sts endpoint
if (!this.stsEndpoint) {
if (this.stsRegionId) {
if (this.enableVpc) {
this.stsEndpoint = `sts-vpc.${this.stsRegionId}.aliyuncs.com`;
}
else {
this.stsEndpoint = `sts.${this.stsRegionId}.aliyuncs.com`;
}
}
else {
this.stsEndpoint = 'sts.aliyuncs.com';
}
}
return new OIDCRoleArnCredentialsProvider(this);
}
}
class OIDCRoleArnCredentialsProvider extends session_1.SessionCredentialProvider {
static builder() {
return new OIDCRoleArnCredentialsProviderBuilder();
}
constructor(builder) {
super(session_1.STALE_TIME);
this.doRequest = http_1.doRequest;
this.refresher = this.getCredentialsInternal;
this.roleArn = builder.roleArn;
this.oidcProviderArn = builder.oidcProviderArn;
this.oidcTokenFilePath = builder.oidcTokenFilePath;
this.policy = builder.policy;
this.durationSeconds = builder.durationSeconds;
this.roleSessionName = builder.roleSessionName;
this.stsEndpoint = builder.stsEndpoint;
this.readTimeout = builder.readTimeout;
this.connectTimeout = builder.connectTimeout;
// used for mock
this.doRequest = http_1.doRequest;
}
getProviderName() {
return 'oidc_role_arn';
}
async getCredentialsInternal() {
const oidcToken = await readFileAsync(this.oidcTokenFilePath, 'utf8');
const builder = http_1.Request.builder().withMethod('POST').withProtocol('https').withHost(this.stsEndpoint).withReadTimeout(this.readTimeout || 10000).withConnectTimeout(this.connectTimeout || 5000);
const queries = Object.create(null);
queries['Version'] = '2015-04-01';
queries['Action'] = 'AssumeRoleWithOIDC';
queries['Format'] = 'JSON';
queries['Timestamp'] = utils.timestamp();
builder.withQueries(queries);
const bodyForm = Object.create(null);
bodyForm['OIDCProviderArn'] = this.oidcProviderArn;
bodyForm['OIDCToken'] = oidcToken;
bodyForm['RoleArn'] = this.roleArn;
if (this.policy) {
bodyForm['Policy'] = this.policy;
}
bodyForm['RoleSessionName'] = this.roleSessionName;
bodyForm['DurationSeconds'] = `${this.durationSeconds}`;
builder.withBodyForm(bodyForm);
const headers = Object.create(null);
// set headers
headers['Content-Type'] = 'application/x-www-form-urlencoded';
builder.withHeaders(headers);
const request = builder.build();
const response = await this.doRequest(request);
if (response.statusCode !== 200) {
throw new Error(`get sts token failed with OIDC: ${response.body.toString('utf8')}`);
}
let data;
try {
data = JSON.parse(response.body.toString('utf8'));
}
catch (ex) {
throw new Error(`get sts token failed with OIDC, unmarshal fail: ${response.body.toString('utf8')}`);
}
if (!data || !data.Credentials) {
throw new Error(`get sts token failed with OIDC`);
}
const { AccessKeyId, AccessKeySecret, SecurityToken, Expiration } = data.Credentials;
if (!AccessKeyId || !AccessKeySecret || !SecurityToken) {
throw new Error('get sts token failed with OIDC');
}
return new session_1.Session(AccessKeyId, AccessKeySecret, SecurityToken, Expiration);
}
}
exports.default = OIDCRoleArnCredentialsProvider;
//# sourceMappingURL=oidc_role_arn.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,18 @@
import Credentials from '../credentials';
import CredentialsProvider from '../credentials_provider';
export default class ProfileCredentialsProvider implements CredentialsProvider {
private readonly profileName;
private innerProvider;
private readonly homedir;
getCredentials(): Promise<Credentials>;
getCredentialsProvider(ini: any): CredentialsProvider;
getProviderName(): string;
static builder(): ProfileCredentialsProviderBuilder;
constructor(builder: ProfileCredentialsProviderBuilder);
}
declare class ProfileCredentialsProviderBuilder {
profileName: string;
withProfileName(profileName: string): this;
build(): ProfileCredentialsProvider;
}
export {};

View File

@@ -0,0 +1,99 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const path_1 = __importDefault(require("path"));
const os_1 = __importDefault(require("os"));
const credentials_1 = __importDefault(require("../credentials"));
const utils_1 = require("../util/utils");
const static_ak_1 = __importDefault(require("./static_ak"));
const ecs_ram_role_1 = __importDefault(require("./ecs_ram_role"));
const ram_role_arn_1 = __importDefault(require("./ram_role_arn"));
class ProfileCredentialsProvider {
async getCredentials() {
if (!this.innerProvider) {
let sharedCfgPath = process.env.ALIBABA_CLOUD_CREDENTIALS_FILE;
if (!sharedCfgPath) {
if (!this.homedir) {
throw new Error('cannot found home dir');
}
sharedCfgPath = path_1.default.join(this.homedir, '.alibabacloud/credentials');
}
const ini = await (0, utils_1.loadIni)(sharedCfgPath);
this.innerProvider = this.getCredentialsProvider(ini);
}
const credentials = await this.innerProvider.getCredentials();
return credentials_1.default.builder()
.withAccessKeyId(credentials.accessKeyId)
.withAccessKeySecret(credentials.accessKeySecret)
.withSecurityToken(credentials.securityToken)
.withProviderName(`${this.getProviderName()}/${this.innerProvider.getProviderName()}`)
.build();
}
getCredentialsProvider(ini) {
const config = ini[this.profileName] || {};
if (!config.type) {
throw new Error(`Can not find credential type for "${this.profileName}"`);
}
switch (config.type) {
case 'access_key':
return static_ak_1.default.builder()
.withAccessKeyId(config.access_key_id)
.withAccessKeySecret(config.access_key_secret)
.build();
case 'ecs_ram_role':
return ecs_ram_role_1.default.builder()
.withRoleName(config.role_name)
.build();
case 'ram_role_arn':
{
const previous = static_ak_1.default.builder()
.withAccessKeyId(config.access_key_id)
.withAccessKeySecret(config.access_key_secret)
.build();
return ram_role_arn_1.default.builder()
.withCredentialsProvider(previous)
.withRoleArn(config.role_arn)
.withRoleSessionName(config.role_session_name)
.withPolicy(config.policy)
// .withStsEndpoint(config.stsEndpoint)
// .withStsRegionId(config.stsRegionId)
// .withEnableVpc(config.enableVpc)
// .withExternalId(config.enableVpc)
.build();
}
default:
throw new Error('Invalid type option, support: access_key, ecs_ram_role, ram_role_arn');
}
}
getProviderName() {
return 'profile';
}
static builder() {
return new ProfileCredentialsProviderBuilder();
}
constructor(builder) {
// used for mock
this.homedir = os_1.default.homedir();
this.profileName = builder.profileName;
}
}
exports.default = ProfileCredentialsProvider;
class ProfileCredentialsProviderBuilder {
withProfileName(profileName) {
this.profileName = profileName;
return this;
}
build() {
// 优先级:
// 1. 使用显示指定的 profileName
// 2. 使用环境变量ALIBABA_CLOUD_PROFILE指定的 profileName
// 3. 兜底使用 default 作为 profileName
if (!this.profileName) {
this.profileName = process.env.ALIBABA_CLOUD_PROFILE || 'default';
}
return new ProfileCredentialsProvider(this);
}
}
//# sourceMappingURL=profile.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"profile.js","sourceRoot":"","sources":["../../../src/providers/profile.ts"],"names":[],"mappings":"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"}

View File

@@ -0,0 +1,45 @@
import CredentialsProvider from '../credentials_provider';
import { SessionCredentialProvider } from './session';
declare class RAMRoleARNCredentialsProviderBuilder {
credentialsProvider: CredentialsProvider;
roleArn: string;
roleSessionName: string;
durationSeconds: number;
stsEndpoint: string;
stsRegionId: string;
policy: string;
externalId: string;
enableVpc?: boolean;
readTimeout?: number;
connectTimeout?: number;
build(): RAMRoleARNCredentialsProvider;
withCredentialsProvider(credentialsProvider: CredentialsProvider): RAMRoleARNCredentialsProviderBuilder;
withRoleArn(roleArn: string): RAMRoleARNCredentialsProviderBuilder;
withStsRegionId(regionId: string): RAMRoleARNCredentialsProviderBuilder;
withStsEndpoint(endpoint: string): RAMRoleARNCredentialsProviderBuilder;
withRoleSessionName(roleSessionName: string): RAMRoleARNCredentialsProviderBuilder;
withPolicy(policy: string): RAMRoleARNCredentialsProviderBuilder;
withExternalId(externalId: string): RAMRoleARNCredentialsProviderBuilder;
withDurationSeconds(durationSeconds: number): RAMRoleARNCredentialsProviderBuilder;
withEnableVpc(enableVpc: boolean): RAMRoleARNCredentialsProviderBuilder;
withReadTimeout(readTimeout: number): RAMRoleARNCredentialsProviderBuilder;
withConnectTimeout(connectTimeout: number): RAMRoleARNCredentialsProviderBuilder;
}
export default class RAMRoleARNCredentialsProvider extends SessionCredentialProvider implements CredentialsProvider {
private readonly credentialsProvider;
private readonly stsEndpoint;
private readonly roleSessionName;
private readonly policy;
private readonly durationSeconds;
private readonly externalId;
private readonly roleArn;
private readonly readTimeout;
private readonly connectTimeout;
private doRequest;
private lastUpdateTimestamp;
static builder(): RAMRoleARNCredentialsProviderBuilder;
constructor(builder: RAMRoleARNCredentialsProviderBuilder);
private getCredentialsInternal;
getProviderName(): string;
}
export {};

View File

@@ -0,0 +1,242 @@
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const kitx = __importStar(require("kitx"));
const debug_1 = __importDefault(require("debug"));
const utils = __importStar(require("../util/utils"));
const http_1 = require("./http");
const session_1 = require("./session");
const log = (0, debug_1.default)('sign');
// type HttpOptions struct {
// Proxy : string
// ConnectTimeout int
// ReadTimeout int
// }
class RAMRoleARNCredentialsProviderBuilder {
build() {
if (!this.credentialsProvider) {
throw new Error('must specify a previous credentials provider to asssume role');
}
if (!(this.roleArn = this.roleArn || process.env.ALIBABA_CLOUD_ROLE_ARN))
throw new Error('the RoleArn is empty');
if (!this.roleSessionName) {
this.roleSessionName = process.env.ALIBABA_CLOUD_ROLE_SESSION_NAME || 'credentials-nodejs-' + Date.now();
}
if (!this.stsRegionId) {
this.stsRegionId = process.env.ALIBABA_CLOUD_STS_REGION;
}
if (!this.enableVpc) {
this.enableVpc = process.env.ALIBABA_CLOUD_VPC_ENDPOINT_ENABLED && process.env.ALIBABA_CLOUD_VPC_ENDPOINT_ENABLED.toLowerCase() === 'true' || false;
}
// duration seconds
if (!this.durationSeconds) {
// default to 3600
this.durationSeconds = 3600;
}
if (this.durationSeconds < 900) {
throw new Error('session duration should be in the range of 900s - max session duration');
}
// sts endpoint
if (!this.stsEndpoint) {
if (this.stsRegionId) {
if (this.enableVpc) {
this.stsEndpoint = `sts-vpc.${this.stsRegionId}.aliyuncs.com`;
}
else {
this.stsEndpoint = `sts.${this.stsRegionId}.aliyuncs.com`;
}
}
else {
this.stsEndpoint = 'sts.aliyuncs.com';
}
}
return new RAMRoleARNCredentialsProvider(this);
}
withCredentialsProvider(credentialsProvider) {
this.credentialsProvider = credentialsProvider;
return this;
}
withRoleArn(roleArn) {
this.roleArn = roleArn;
return this;
}
withStsRegionId(regionId) {
this.stsRegionId = regionId;
return this;
}
withStsEndpoint(endpoint) {
this.stsEndpoint = endpoint;
return this;
}
withRoleSessionName(roleSessionName) {
this.roleSessionName = roleSessionName;
return this;
}
withPolicy(policy) {
this.policy = policy;
return this;
}
withExternalId(externalId) {
this.externalId = externalId;
return this;
}
withDurationSeconds(durationSeconds) {
this.durationSeconds = durationSeconds;
return this;
}
withEnableVpc(enableVpc) {
this.enableVpc = enableVpc;
return this;
}
withReadTimeout(readTimeout) {
this.readTimeout = readTimeout;
return this;
}
withConnectTimeout(connectTimeout) {
this.connectTimeout = connectTimeout;
return this;
}
}
function encode(str) {
const result = encodeURIComponent(str);
return result.replace(/!/g, '%21')
.replace(/'/g, '%27')
.replace(/\(/g, '%28')
.replace(/\)/g, '%29')
.replace(/\*/g, '%2A');
}
class RAMRoleARNCredentialsProvider extends session_1.SessionCredentialProvider {
static builder() {
return new RAMRoleARNCredentialsProviderBuilder();
}
constructor(builder) {
super(session_1.STALE_TIME);
// used for mock
this.doRequest = http_1.doRequest;
this.refresher = this.getCredentialsInternal;
this.credentialsProvider = builder.credentialsProvider;
this.stsEndpoint = builder.stsEndpoint;
this.roleSessionName = builder.roleSessionName;
this.policy = builder.policy;
this.durationSeconds = builder.durationSeconds;
this.roleArn = builder.roleArn;
this.externalId = builder.externalId;
this.readTimeout = builder.readTimeout;
this.connectTimeout = builder.connectTimeout;
}
async getCredentialsInternal() {
const credentials = await this.credentialsProvider.getCredentials();
const method = 'POST';
const builder = http_1.Request.builder().withMethod(method).withProtocol('https').withHost(this.stsEndpoint).withReadTimeout(this.readTimeout || 10000).withConnectTimeout(this.connectTimeout || 5000);
const queries = Object.create(null);
queries['Version'] = '2015-04-01';
queries['Action'] = 'AssumeRole';
queries['Format'] = 'JSON';
queries['Timestamp'] = utils.timestamp();
queries['SignatureMethod'] = 'HMAC-SHA1';
queries['SignatureVersion'] = '1.0';
queries['SignatureNonce'] = kitx.makeNonce();
queries['AccessKeyId'] = credentials.accessKeyId;
if (credentials.securityToken) {
queries['SecurityToken'] = credentials.securityToken;
}
const bodyForm = Object.create(null);
bodyForm['RoleArn'] = this.roleArn;
if (this.policy) {
bodyForm['Policy'] = this.policy;
}
if (this.externalId) {
bodyForm['ExternalId'] = this.externalId;
}
bodyForm['RoleSessionName'] = this.roleSessionName;
bodyForm['DurationSeconds'] = `${this.durationSeconds}`;
builder.withBodyForm(bodyForm);
// caculate signature
const signParams = Object.create(null);
for (const [key, value] of Object.entries(queries)) {
signParams[key] = value;
}
for (const [key, value] of Object.entries(bodyForm)) {
signParams[key] = value;
}
const keys = Object.keys(signParams).sort();
const stringToSign = `${method}&${encode('/')}&${encode(keys.map((key) => {
return `${encode(key)}=${encode(signParams[key])}`;
}).join('&'))}`;
log('stringToSign[Client]:');
log(stringToSign);
const secret = credentials.accessKeySecret + '&';
const signature = kitx.sha1(stringToSign, secret, 'base64');
queries['Signature'] = signature;
builder.withQueries(queries);
const headers = Object.create(null);
// set headers
headers['Content-Type'] = 'application/x-www-form-urlencoded';
headers['x-acs-credentials-provider'] = credentials.providerName;
builder.withHeaders(headers);
// if (this.httpOptions) {
// req.connectTimeout = this.httpOptions.connectTimeout;
// req.readTimeout = this.httpOptions.readTimeout;
// req.proxy = this.httpOptions.proxy;
// }
const request = builder.build();
const response = await this.doRequest(request);
if (response.statusCode != 200) {
if (response.headers['content-type'] && response.headers['content-type'].startsWith('application/json')) {
const body = JSON.parse(response.body.toString('utf8'));
const serverStringToSign = body.Message.slice('Specified signature is not matched with our calculation. server string to sign is:'.length);
log('stringToSign[Server]:');
log(stringToSign);
if (body.Code === 'SignatureDoesNotMatch' && serverStringToSign === stringToSign) {
throw new Error(`the access key secret is invalid`);
}
}
throw new Error(`refresh session token failed: ${response.body.toString('utf8')}`);
}
let data;
try {
data = JSON.parse(response.body.toString('utf8'));
}
catch (ex) {
throw new Error(`refresh RoleArn sts token err, unmarshal fail: ${response.body.toString('utf8')}`);
}
if (!data || !data.Credentials) {
throw new Error(`refresh RoleArn sts token err, fail to get credentials`);
}
if (!data.Credentials.AccessKeyId || !data.Credentials.AccessKeySecret || !data.Credentials.SecurityToken) {
throw new Error('refresh RoleArn sts token err, fail to get credentials');
}
const { AccessKeyId, AccessKeySecret, SecurityToken, Expiration } = data.Credentials;
return new session_1.Session(AccessKeyId, AccessKeySecret, SecurityToken, Expiration);
}
getProviderName() {
return `ram_role_arn/${this.credentialsProvider.getProviderName()}`;
}
}
exports.default = RAMRoleARNCredentialsProvider;
//# sourceMappingURL=ram_role_arn.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,31 @@
import CredentialsProvider from '../credentials_provider';
import Credentials from '../credentials';
export declare const STALE_TIME: number;
export declare class Session {
accessKeyId: string;
accessKeySecret: string;
securityToken: string;
expiration: string;
constructor(accessKeyId: string, accessKeySecret: string, securityToken: string, expiration: string);
}
export declare type SessionRefresher = () => Promise<Session>;
export declare class SessionCredentialProvider implements CredentialsProvider {
private expirationTimestamp;
private session;
private refreshFaliure;
private readonly staleTime;
private readonly prefetchTime;
private staleTimestamp;
private prefetchTimestamp;
refresher: SessionRefresher;
constructor(staleTime?: number, prefetchTime?: number);
getCredentials(): Promise<Credentials>;
refreshTimestamp(): void;
maxStaleFailureJitter(): number;
jitterTime(time: number, jitterStart: number, jitterEnd: number): number;
refreshSession(): Promise<void>;
getSession(): Promise<Session>;
needUpdateCredential(): boolean;
shouldPrefetchCredential(): boolean;
getProviderName(): string;
}

View File

@@ -0,0 +1,119 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.SessionCredentialProvider = exports.Session = exports.STALE_TIME = void 0;
const time_1 = require("./time");
const utils_1 = require("../util/utils");
const credentials_1 = __importDefault(require("../credentials"));
exports.STALE_TIME = 15 * 60;
class Session {
constructor(accessKeyId, accessKeySecret, securityToken, expiration) {
this.accessKeyId = accessKeyId;
this.accessKeySecret = accessKeySecret;
this.securityToken = securityToken;
this.expiration = expiration;
}
}
exports.Session = Session;
class SessionCredentialProvider {
constructor(staleTime = 0, prefetchTime = 0) {
this.staleTime = staleTime || exports.STALE_TIME;
if (prefetchTime) {
this.prefetchTime = prefetchTime;
this.prefetchTimestamp = Date.now() + (prefetchTime * 1000);
}
this.refreshFaliure = 0;
}
async getCredentials() {
this.session = await this.getSession();
return credentials_1.default.builder()
.withAccessKeyId(this.session.accessKeyId)
.withAccessKeySecret(this.session.accessKeySecret)
.withSecurityToken(this.session.securityToken)
.withProviderName(this.getProviderName())
.build();
}
refreshTimestamp() {
this.staleTimestamp = this.expirationTimestamp - this.staleTime;
if (this.prefetchTimestamp) {
this.prefetchTimestamp = (Date.now() + (this.prefetchTime * 1000)) / 1000;
}
}
maxStaleFailureJitter() {
const exponentialBackoffMillis = (1 << (this.refreshFaliure - 1));
return exponentialBackoffMillis > 10 ? exponentialBackoffMillis : 10;
}
jitterTime(time, jitterStart, jitterEnd) {
const jitterRange = jitterEnd - jitterStart;
const jitterAmount = Math.abs(Math.floor(Math.random() * jitterRange));
return time + jitterStart + jitterAmount;
}
async refreshSession() {
try {
const session = await this.refresher();
const now = Date.now() / 1000;
const oldSessionAvailable = this.staleTimestamp > now;
const oldSession = this.session;
this.expirationTimestamp = (0, time_1.parseUTC)(session.expiration) / 1000;
this.session = session;
this.refreshFaliure = 0;
this.refreshTimestamp();
// 过期时间大于15分钟不用管
if (this.staleTimestamp > now) {
return;
}
// 不足或等于15分钟但未过期下次会再次刷新
if (now < (this.staleTimestamp + this.staleTime)) {
this.expirationTimestamp = now + this.staleTime;
}
// 已过期看缓存缓存若大于15分钟返回缓存若小于15分钟则根据策略判断是立刻重试还是稍后重试
if (now > (this.staleTimestamp + this.staleTime)) {
if (oldSessionAvailable) {
this.session = oldSession;
this.expirationTimestamp = (0, time_1.parseUTC)(oldSession.expiration) / 1000;
this.refreshTimestamp();
return;
}
const waitUntilNextRefresh = 50 + (0, utils_1.getRandomInt)(20);
this.expirationTimestamp = now + waitUntilNextRefresh + this.staleTime;
}
}
catch (err) {
if (!this.session) {
throw err;
}
const now = Date.now() / 1000;
if (now < this.staleTimestamp) {
return;
}
this.refreshFaliure++;
this.expirationTimestamp = this.jitterTime(now, 1, this.maxStaleFailureJitter()) + this.staleTime;
}
}
async getSession() {
if (this.needUpdateCredential() || this.shouldPrefetchCredential()) {
await this.refreshSession();
this.refreshTimestamp();
}
return this.session;
}
needUpdateCredential() {
if (!this.session || !this.expirationTimestamp) {
return true;
}
return (Date.now() / 1000) >= this.staleTimestamp;
}
shouldPrefetchCredential() {
if (!this.prefetchTimestamp) {
return false;
}
return this.expirationTimestamp - (Date.now() / 1000) <= this.prefetchTime;
}
getProviderName() {
return 'session';
}
}
exports.SessionCredentialProvider = SessionCredentialProvider;
//# sourceMappingURL=session.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/providers/session.ts"],"names":[],"mappings":"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"}

View File

@@ -0,0 +1,23 @@
import Credentials from '../credentials';
import CredentialsProvider from '../credentials_provider';
/**
* @internal
*/
export declare class StaticAKCredentialsProviderBuilder {
accessKeyId: string;
accessKeySecret: string;
withAccessKeyId(accessKeyId: string): StaticAKCredentialsProviderBuilder;
withAccessKeySecret(accessKeySecret: string): StaticAKCredentialsProviderBuilder;
build(): StaticAKCredentialsProvider;
}
/**
* @internal
*/
export default class StaticAKCredentialsProvider implements CredentialsProvider {
static builder(): StaticAKCredentialsProviderBuilder;
private readonly accessKeyId;
private readonly accessKeySecret;
constructor(builder: StaticAKCredentialsProviderBuilder);
getProviderName(): string;
getCredentials(): Promise<Credentials>;
}

View File

@@ -0,0 +1,61 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.StaticAKCredentialsProviderBuilder = void 0;
const credentials_1 = __importDefault(require("../credentials"));
/**
* @internal
*/
class StaticAKCredentialsProviderBuilder {
withAccessKeyId(accessKeyId) {
this.accessKeyId = accessKeyId;
return this;
}
withAccessKeySecret(accessKeySecret) {
this.accessKeySecret = accessKeySecret;
return this;
}
build() {
if (!this.accessKeyId) {
this.accessKeyId = process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'];
}
if (!this.accessKeyId) {
throw new Error('the access key id is empty');
}
if (!this.accessKeySecret) {
this.accessKeySecret = process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'];
}
if (!this.accessKeySecret) {
throw new Error('the access key secret is empty');
}
return new StaticAKCredentialsProvider(this);
}
}
exports.StaticAKCredentialsProviderBuilder = StaticAKCredentialsProviderBuilder;
/**
* @internal
*/
class StaticAKCredentialsProvider {
static builder() {
return new StaticAKCredentialsProviderBuilder();
}
constructor(builder) {
this.accessKeyId = builder.accessKeyId;
this.accessKeySecret = builder.accessKeySecret;
}
getProviderName() {
return 'static_ak';
}
async getCredentials() {
const credentials = credentials_1.default
.builder()
.withAccessKeyId(this.accessKeyId).withAccessKeySecret(this.accessKeySecret)
.withProviderName('static_ak')
.build();
return credentials;
}
}
exports.default = StaticAKCredentialsProvider;
//# sourceMappingURL=static_ak.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"static_ak.js","sourceRoot":"","sources":["../../../src/providers/static_ak.ts"],"names":[],"mappings":";;;;;;AACA,iEAAyC;AAGzC;;GAEG;AACH,MAAa,kCAAkC;IAItC,eAAe,CAAC,WAAmB;QACxC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,mBAAmB,CAAC,eAAuB;QAChD,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK;QACV,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;SAC/D;QAED,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;SAC/C;QAED,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACzB,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;SACvE;QAED,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACzB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;SACnD;QAED,OAAO,IAAI,2BAA2B,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC;CACF;AAjCD,gFAiCC;AAED;;GAEG;AACH,MAAqB,2BAA2B;IAC9C,MAAM,CAAC,OAAO;QACZ,OAAO,IAAI,kCAAkC,EAAE,CAAC;IAClD,CAAC;IAKD,YAAmB,OAA4C;QAC7D,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;IACjD,CAAC;IAED,eAAe;QACb,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,MAAM,WAAW,GAAG,qBAAW;aAC5B,OAAO,EAAE;aACT,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,eAAe,CAAC;aAC3E,gBAAgB,CAAC,WAAW,CAAC;aAC7B,KAAK,EAAE,CAAC;QACX,OAAO,WAAW,CAAC;IACrB,CAAC;CACF;AAzBD,8CAyBC"}

View File

@@ -0,0 +1,26 @@
import Credentials from '../credentials';
import CredentialsProvider from '../credentials_provider';
/**
* @internal
*/
export declare class StaticSTSCredentialsProviderBuilder {
accessKeyId: string;
accessKeySecret: string;
securityToken: string;
withAccessKeyId(accessKeyId: string): StaticSTSCredentialsProviderBuilder;
withAccessKeySecret(accessKeySecret: string): StaticSTSCredentialsProviderBuilder;
withSecurityToken(securityToken: string): StaticSTSCredentialsProviderBuilder;
build(): StaticSTSCredentialsProvider;
}
/**
* @internal
*/
export default class StaticSTSCredentialsProvider implements CredentialsProvider {
static builder(): StaticSTSCredentialsProviderBuilder;
private readonly accessKeyId;
private readonly accessKeySecret;
private readonly securityToken;
constructor(builder: StaticSTSCredentialsProviderBuilder);
getProviderName(): string;
getCredentials(): Promise<Credentials>;
}

View File

@@ -0,0 +1,72 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.StaticSTSCredentialsProviderBuilder = void 0;
const credentials_1 = __importDefault(require("../credentials"));
/**
* @internal
*/
class StaticSTSCredentialsProviderBuilder {
withAccessKeyId(accessKeyId) {
this.accessKeyId = accessKeyId;
return this;
}
withAccessKeySecret(accessKeySecret) {
this.accessKeySecret = accessKeySecret;
return this;
}
withSecurityToken(securityToken) {
this.securityToken = securityToken;
return this;
}
build() {
if (!this.accessKeyId) {
this.accessKeyId = process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'];
}
if (!this.accessKeyId) {
throw new Error('the access key id is empty');
}
if (!this.accessKeySecret) {
this.accessKeySecret = process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'];
}
if (!this.accessKeySecret) {
throw new Error('the access key secret is empty');
}
if (!this.securityToken) {
this.securityToken = process.env['ALIBABA_CLOUD_SECURITY_TOKEN'];
}
if (!this.securityToken) {
throw new Error('the security token is empty');
}
return new StaticSTSCredentialsProvider(this);
}
}
exports.StaticSTSCredentialsProviderBuilder = StaticSTSCredentialsProviderBuilder;
/**
* @internal
*/
class StaticSTSCredentialsProvider {
static builder() {
return new StaticSTSCredentialsProviderBuilder();
}
constructor(builder) {
this.accessKeyId = builder.accessKeyId;
this.accessKeySecret = builder.accessKeySecret;
this.securityToken = builder.securityToken;
}
getProviderName() {
return 'static_sts';
}
async getCredentials() {
return credentials_1.default.builder()
.withAccessKeyId(this.accessKeyId)
.withAccessKeySecret(this.accessKeySecret)
.withSecurityToken(this.securityToken)
.withProviderName(this.getProviderName())
.build();
}
}
exports.default = StaticSTSCredentialsProvider;
//# sourceMappingURL=static_sts.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"static_sts.js","sourceRoot":"","sources":["../../../src/providers/static_sts.ts"],"names":[],"mappings":";;;;;;AACA,iEAAyC;AAGzC;;GAEG;AACH,MAAa,mCAAmC;IAKvC,eAAe,CAAC,WAAmB;QACxC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,mBAAmB,CAAC,eAAuB;QAChD,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,iBAAiB,CAAC,aAAqB;QAC5C,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK;QACV,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;SAC/D;QAED,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;SAC/C;QAED,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACzB,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;SACvE;QAED,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACzB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;SACnD;QAED,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACvB,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;SAClE;QAED,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACvB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;SAChD;QAED,OAAO,IAAI,4BAA4B,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;CACF;AA/CD,kFA+CC;AAED;;GAEG;AACH,MAAqB,4BAA4B;IAC/C,MAAM,CAAC,OAAO;QACZ,OAAO,IAAI,mCAAmC,EAAE,CAAC;IACnD,CAAC;IAMD,YAAmB,OAA4C;QAC7D,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;QAC/C,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAC7C,CAAC;IAED,eAAe;QACb,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,OAAO,qBAAW,CAAC,OAAO,EAAE;aACzB,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC;aACjC,mBAAmB,CAAC,IAAI,CAAC,eAAe,CAAC;aACzC,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC;aACrC,gBAAgB,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;aACxC,KAAK,EAAE,CAAC;IACb,CAAC;CACF;AA3BD,+CA2BC"}

View File

@@ -0,0 +1,7 @@
/**
* Parses a UTC format date time string and returns the number of milliseconds between midnight,
* January 1, 1970 Universal Coordinated Time (UTC) (or GMT) and the specified date.
* @param value A UTC format date time string. For example: 2015-04-09T11:52:19Z
* @returns The number of milliseconds between 1970.01.01 to the specified date.
*/
export declare function parseUTC(value: string): number;

View File

@@ -0,0 +1,85 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.parseUTC = void 0;
/**
* Parses a UTC format date time string and returns the number of milliseconds between midnight,
* January 1, 1970 Universal Coordinated Time (UTC) (or GMT) and the specified date.
* @param value A UTC format date time string. For example: 2015-04-09T11:52:19Z
* @returns The number of milliseconds between 1970.01.01 to the specified date.
*/
function parseUTC(value) {
if (!value) {
throw new Error('invalid UTC format time string');
}
if (value.length === 20) {
// 2024-08-30T07:03:06Z
if (value[4] !== '-' || value[7] !== '-' || value[10] !== 'T' || value[13] !== ':' || value[16] !== ':' || value[19] !== 'Z') {
throw new Error('invalid UTC format date string');
}
}
else if (value.length === 24) {
// 2024-08-30T07:03:06.117Z
if (value[4] !== '-' || value[7] !== '-' || value[10] !== 'T' || value[13] !== ':' || value[16] !== ':' || value[19] !== '.' || value[23] !== 'Z') {
throw new Error('invalid UTC format date string');
}
}
else {
throw new Error('invalid UTC format time string');
}
const yearStr = value.slice(0, 4);
const year = Number.parseInt(yearStr, 10);
if (isNaN(year)) {
throw new Error('invalid year string');
}
const monthStr = value.slice(5, 7);
const month = Number.parseInt(monthStr, 10);
if (isNaN(month)) {
throw new Error('invalid month string');
}
if (month < 1 || month > 12) {
throw new Error('invalid month value');
}
const dateStr = value.slice(8, 10);
const date = Number.parseInt(dateStr, 10);
if (isNaN(date)) {
throw new Error('invalid date string');
}
if (date < 1 || date > 31) {
throw new Error('invalid date value');
}
const hoursStr = value.slice(11, 13);
const hours = Number.parseInt(hoursStr, 10);
if (isNaN(hours)) {
throw new Error('invalid hours string');
}
if (hours < 0 || hours > 24) {
throw new Error('invalid hours value');
}
const minutesStr = value.slice(14, 16);
const minutes = Number.parseInt(minutesStr, 10);
if (isNaN(minutes)) {
throw new Error('invalid minutes string');
}
if (minutes < 0 || minutes > 60) {
throw new Error('invalid minutes value');
}
const secondsStr = value.slice(17, 19);
const seconds = Number.parseInt(secondsStr, 10);
if (isNaN(seconds)) {
throw new Error('invalid seconds string');
}
if (seconds < 0 || seconds > 60) {
throw new Error('invalid seconds value');
}
if (value.length === 24) {
const msStr = value.slice(20, 23);
const ms = Number.parseInt(msStr, 10);
if (isNaN(ms)) {
throw new Error('invalid ms string');
}
return Date.UTC(year, month - 1, date, hours, minutes, seconds, ms);
}
return Date.UTC(year, month - 1, date, hours, minutes, seconds);
}
exports.parseUTC = parseUTC;
//# sourceMappingURL=time.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"time.js","sourceRoot":"","sources":["../../../src/providers/time.ts"],"names":[],"mappings":"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"}

View File

@@ -0,0 +1,27 @@
import CredentialsProvider from '../credentials_provider';
import { SessionCredentialProvider } from './session';
/**
* @internal
*/
export default class URICredentialsProvider extends SessionCredentialProvider implements CredentialsProvider {
static builder(): URICredentialsProviderBuilder;
private readonly credentialsURI;
private doRequest;
private readonly readTimeout;
private readonly connectTimeout;
constructor(builder: URICredentialsProviderBuilder);
getProviderName(): string;
private getCredentialsUri;
}
/**
* @internal
*/
export declare class URICredentialsProviderBuilder {
credentialsURI: string;
readTimeout?: number;
connectTimeout?: number;
withCredentialsURI(credentialsURI: string): URICredentialsProviderBuilder;
withReadTimeout(readTimeout: number): URICredentialsProviderBuilder;
withConnectTimeout(connectTimeout: number): URICredentialsProviderBuilder;
build(): URICredentialsProvider;
}

View File

@@ -0,0 +1,73 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.URICredentialsProviderBuilder = void 0;
const session_1 = require("./session");
const http_1 = require("./http");
/**
* @internal
*/
class URICredentialsProvider extends session_1.SessionCredentialProvider {
static builder() {
return new URICredentialsProviderBuilder();
}
constructor(builder) {
super(session_1.STALE_TIME);
this.doRequest = http_1.doRequest;
this.refresher = this.getCredentialsUri;
this.credentialsURI = builder.credentialsURI;
this.readTimeout = builder.readTimeout;
this.connectTimeout = builder.connectTimeout;
}
getProviderName() {
return 'credential_uri';
}
async getCredentialsUri() {
const builder = http_1.Request.builder()
.withMethod('GET')
.withURL(this.credentialsURI)
.withReadTimeout(this.readTimeout || 10000)
.withConnectTimeout(this.connectTimeout || 5000);
const request = builder.build();
const response = await this.doRequest(request);
if (response.statusCode !== 200) {
throw new Error(`get sts token failed, httpStatus: ${response.statusCode}, message = ${response.body.toString('utf8')}.`);
}
let data;
try {
data = JSON.parse(response.body.toString('utf8'));
}
catch (ex) {
throw new Error(`get sts token failed, json parse failed: ${ex.message}, result: ${response.body.toString('utf8')}.`);
}
if (!data || !data.AccessKeyId || !data.AccessKeySecret || !data.SecurityToken) {
throw new Error(`error retrieving credentials from credentialsURI result: ${JSON.stringify(data)}.`);
}
return new session_1.Session(data.AccessKeyId, data.AccessKeySecret, data.SecurityToken, data.Expiration);
}
}
exports.default = URICredentialsProvider;
/**
* @internal
*/
class URICredentialsProviderBuilder {
withCredentialsURI(credentialsURI) {
this.credentialsURI = credentialsURI;
return this;
}
withReadTimeout(readTimeout) {
this.readTimeout = readTimeout;
return this;
}
withConnectTimeout(connectTimeout) {
this.connectTimeout = connectTimeout;
return this;
}
build() {
if (!this.credentialsURI) {
this.credentialsURI = process.env.ALIBABA_CLOUD_CREDENTIALS_URI;
}
return new URICredentialsProvider(this);
}
}
exports.URICredentialsProviderBuilder = URICredentialsProviderBuilder;
//# sourceMappingURL=uri.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"uri.js","sourceRoot":"","sources":["../../../src/providers/uri.ts"],"names":[],"mappings":";;;AAGA,uCAA0E;AAC1E,iCAA2C;AAG3C;;GAEG;AACH,MAAqB,sBAAuB,SAAQ,mCAAyB;IAC3E,MAAM,CAAC,OAAO;QACZ,OAAO,IAAI,6BAA6B,EAAE,CAAC;IAC7C,CAAC;IAOD,YAAmB,OAAsC;QACvD,KAAK,CAAC,oBAAU,CAAC,CAAC;QALZ,cAAS,GAAG,gBAAS,CAAC;QAM5B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC;QACxC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;QAC7C,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;IAC/C,CAAC;IAED,eAAe;QACb,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAEO,KAAK,CAAC,iBAAiB;QAC7B,MAAM,OAAO,GAAG,cAAO,CAAC,OAAO,EAAE;aAC9B,UAAU,CAAC,KAAK,CAAC;aACjB,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC;aAC5B,eAAe,CAAC,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC;aAC1C,kBAAkB,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,CAAC;QAEnD,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAE/C,IAAI,QAAQ,CAAC,UAAU,KAAK,GAAG,EAAE;YAC/B,MAAM,IAAI,KAAK,CAAC,qCAAqC,QAAQ,CAAC,UAAU,eAAe,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SAC3H;QAED,IAAI,IAAI,CAAC;QACT,IAAI;YACF,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;SACnD;QAAC,OAAO,EAAE,EAAE;YACX,MAAM,IAAI,KAAK,CAAC,4CAA4C,EAAE,CAAC,OAAO,aAAa,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;SACtH;QAED,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YAC9E,MAAM,IAAI,KAAK,CAAC,4DAA4D,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;SACrG;QAED,OAAO,IAAI,iBAAO,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAClG,CAAC;CACF;AAjDD,yCAiDC;AAID;;GAEG;AACH,MAAa,6BAA6B;IAKjC,kBAAkB,CAAC,cAAsB;QAC9C,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,eAAe,CAAC,WAAmB;QACjC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,kBAAkB,CAAC,cAAsB;QACvC,IAAI,CAAC,cAAc,GAAG,cAAc,CAAA;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK;QACV,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACxB,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC;SACjE;QACD,OAAO,IAAI,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;CACF;AAzBD,sEAyBC"}

View File

@@ -0,0 +1,16 @@
import SessionCredential from './session_credential';
import Config from './config';
export default class RamRoleArnCredential extends SessionCredential {
roleArn: string;
policy: string;
durationSeconds: number;
roleSessionName: string;
runtime: {
[key: string]: any;
};
host: string;
constructor(config: Config, runtime?: {
[key: string]: any;
});
updateCredential(): Promise<void>;
}

View File

@@ -0,0 +1,51 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const session_credential_1 = __importDefault(require("./session_credential"));
const http_1 = require("./util/http");
const config_1 = __importDefault(require("./config"));
class RamRoleArnCredential extends session_credential_1.default {
constructor(config, runtime = {}) {
if (!config.accessKeyId) {
throw new Error('Missing required accessKeyId option in config for ram_role_arn');
}
if (!config.accessKeySecret) {
throw new Error('Missing required accessKeySecret option in config for ram_role_arn');
}
if (!config.roleArn) {
throw new Error('Missing required roleArn option in config for ram_role_arn');
}
const conf = new config_1.default({
type: 'ram_role_arn',
accessKeyId: config.accessKeyId,
accessKeySecret: config.accessKeySecret,
securityToken: config.securityToken
});
super(conf);
this.roleArn = config.roleArn;
this.policy = config.policy;
this.durationSeconds = config.roleSessionExpiration || 3600;
this.roleSessionName = config.roleSessionName || 'role_session_name';
this.runtime = runtime;
this.host = 'https://sts.aliyuncs.com';
}
async updateCredential() {
const params = {
accessKeyId: this.accessKeyId,
securityToken: this.securityToken,
roleArn: this.roleArn,
action: 'AssumeRole',
durationSeconds: this.durationSeconds,
roleSessionName: this.roleSessionName
};
if (this.policy) {
params.policy = this.policy;
}
const json = await (0, http_1.request)(this.host, params, this.runtime, this.accessKeySecret);
this.sessionCredential = json.Credentials;
}
}
exports.default = RamRoleArnCredential;
//# sourceMappingURL=ram_role_arn_credential.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"ram_role_arn_credential.js","sourceRoot":"","sources":["../../src/ram_role_arn_credential.ts"],"names":[],"mappings":";;;;;AAAA,8EAAqD;AACrD,sCAAsC;AACtC,sDAA8B;AAE9B,MAAqB,oBAAqB,SAAQ,4BAAiB;IAQjE,YAAY,MAAc,EAAE,UAAgC,EAAE;QAC5D,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;YACvB,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;SACnF;QAED,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE;YAC3B,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;SACvF;QAED,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;YACnB,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;SAC/E;QAED,MAAM,IAAI,GAAG,IAAI,gBAAM,CAAC;YACtB,IAAI,EAAE,cAAc;YACpB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,aAAa,EAAE,MAAM,CAAC,aAAa;SACpC,CAAC,CAAC;QACH,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,qBAAqB,IAAI,IAAI,CAAC;QAC5D,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,mBAAmB,CAAC;QACrE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,MAAM,MAAM,GAAyB;YACnC,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,YAAY;YACpB,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,eAAe,EAAE,IAAI,CAAC,eAAe;SACtC,CAAC;QACF,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;SAC7B;QACD,MAAM,IAAI,GAAG,MAAM,IAAA,cAAO,EAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QAClF,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC;IAC5C,CAAC;CACF;AAnDD,uCAmDC"}

View File

@@ -0,0 +1,9 @@
import SessionCredential from './session_credential';
import ICredential from './icredential';
export default class RsaKeyPairCredential extends SessionCredential implements ICredential {
privateKey: string;
publicKeyId: string;
roleName: string;
constructor(publicKeyId: string, privateKeyFile: string);
updateCredential(): Promise<void>;
}

View File

@@ -0,0 +1,66 @@
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const fs_1 = __importDefault(require("fs"));
const session_credential_1 = __importDefault(require("./session_credential"));
const utils = __importStar(require("./util/utils"));
const http_1 = require("./util/http");
const config_1 = __importDefault(require("./config"));
const SECURITY_CRED_URL = 'http://100.100.100.200/latest/meta-data/ram/security-credentials/';
class RsaKeyPairCredential extends session_credential_1.default {
constructor(publicKeyId, privateKeyFile) {
if (!publicKeyId) {
throw new Error('Missing required publicKeyId option in config for rsa_key_pair');
}
if (!privateKeyFile) {
throw new Error('Missing required privateKeyFile option in config for rsa_key_pair');
}
if (!fs_1.default.existsSync(privateKeyFile)) {
throw new Error(`privateKeyFile ${privateKeyFile} cannot be empty`);
}
const conf = new config_1.default({
type: 'rsa_key_pair'
});
super(conf);
this.privateKey = utils.parseFile(privateKeyFile);
this.publicKeyId = publicKeyId;
}
async updateCredential() {
const url = SECURITY_CRED_URL + this.roleName;
const json = await (0, http_1.request)(url, {
accessKeyId: this.publicKeyId,
action: 'GenerateSessionAccessKey',
durationSeconds: 3600,
signatureMethod: 'SHA256withRSA',
signatureType: 'PRIVATEKEY',
}, {}, this.privateKey);
this.sessionCredential = json.Credentials;
}
}
exports.default = RsaKeyPairCredential;
//# sourceMappingURL=rsa_key_pair_credential.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"rsa_key_pair_credential.js","sourceRoot":"","sources":["../../src/rsa_key_pair_credential.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAAoB;AACpB,8EAAqD;AACrD,oDAAsC;AACtC,sCAAsC;AAEtC,sDAA8B;AAE9B,MAAM,iBAAiB,GAAG,mEAAmE,CAAC;AAE9F,MAAqB,oBAAqB,SAAQ,4BAAiB;IAKjE,YAAY,WAAmB,EAAE,cAAsB;QACrD,IAAI,CAAC,WAAW,EAAE;YAChB,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;SACnF;QAED,IAAI,CAAC,cAAc,EAAE;YACnB,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;SACtF;QAED,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE;YAClC,MAAM,IAAI,KAAK,CAAC,kBAAkB,cAAc,kBAAkB,CAAC,CAAC;SACrE;QAED,MAAM,IAAI,GAAG,IAAI,gBAAM,CAAC;YACtB,IAAI,EAAE,cAAc;SACrB,CAAC,CAAC;QACH,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QAClD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,MAAM,GAAG,GAAG,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9C,MAAM,IAAI,GAAG,MAAM,IAAA,cAAO,EAAC,GAAG,EAAE;YAC9B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,MAAM,EAAE,0BAA0B;YAClC,eAAe,EAAE,IAAI;YACrB,eAAe,EAAE,eAAe;YAChC,aAAa,EAAE,YAAY;SAC5B,EAAE,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACxB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC;IAC5C,CAAC;CACF;AArCD,uCAqCC"}

View File

@@ -0,0 +1,15 @@
import DefaultCredential from './default_credential';
import Config from './config';
import CredentialModel from './credential_model';
export default class SessionCredential extends DefaultCredential {
sessionCredential: any;
durationSeconds: number;
constructor(config: Config);
updateCredential(): Promise<void>;
ensureCredential(): Promise<void>;
getAccessKeyId(): Promise<any>;
getAccessKeySecret(): Promise<any>;
getSecurityToken(): Promise<any>;
needUpdateCredential(): boolean;
getCredential(): Promise<CredentialModel>;
}

View File

@@ -0,0 +1,88 @@
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const default_credential_1 = __importDefault(require("./default_credential"));
const utils = __importStar(require("./util/utils"));
const config_1 = __importDefault(require("./config"));
const credential_model_1 = __importDefault(require("./credential_model"));
class SessionCredential extends default_credential_1.default {
constructor(config) {
const conf = new config_1.default({
type: config.type,
accessKeyId: config.accessKeyId,
accessKeySecret: config.accessKeySecret,
securityToken: config.securityToken
});
super(conf);
this.sessionCredential = null;
this.durationSeconds = config.durationSeconds || 3600;
}
async updateCredential() {
throw new Error('need implemented in sub-class');
}
async ensureCredential() {
const needUpdate = this.needUpdateCredential();
if (needUpdate) {
await this.updateCredential();
}
}
async getAccessKeyId() {
await this.ensureCredential();
return this.sessionCredential.AccessKeyId;
}
async getAccessKeySecret() {
await this.ensureCredential();
return this.sessionCredential.AccessKeySecret;
}
async getSecurityToken() {
await this.ensureCredential();
return this.sessionCredential.SecurityToken;
}
needUpdateCredential() {
if (!this.sessionCredential || !this.sessionCredential.Expiration || !this.sessionCredential.AccessKeyId || !this.sessionCredential.AccessKeySecret || !this.sessionCredential.SecurityToken) {
return true;
}
const expireTime = utils.timestamp(new Date(), this.durationSeconds * 0.05 * 1000);
if (this.sessionCredential.Expiration < expireTime) {
return true;
}
return false;
}
async getCredential() {
await this.ensureCredential();
return new credential_model_1.default({
accessKeyId: this.sessionCredential.AccessKeyId,
accessKeySecret: this.sessionCredential.AccessKeySecret,
securityToken: this.sessionCredential.SecurityToken,
bearerToken: this.bearerToken,
type: this.type,
});
}
}
exports.default = SessionCredential;
//# sourceMappingURL=session_credential.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"session_credential.js","sourceRoot":"","sources":["../../src/session_credential.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,8EAAqD;AACrD,oDAAsC;AACtC,sDAA8B;AAC9B,0EAAiD;AAEjD,MAAqB,iBAAkB,SAAQ,4BAAiB;IAI9D,YAAY,MAAc;QACxB,MAAM,IAAI,GAAG,IAAI,gBAAM,CAAC;YACtB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,aAAa,EAAE,MAAM,CAAC,aAAa;SACpC,CAAC,CAAC;QACH,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,IAAI,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC/C,IAAI,UAAU,EAAE;YACd,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;SAC/B;IACH,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,kBAAkB;QACtB,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC;IAC9C,CAAC;IAED,oBAAoB;QAClB,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE;YAC5L,OAAO,IAAI,CAAC;SACb;QACD,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,EAAE,IAAI,CAAC,eAAe,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;QACnF,IAAI,IAAI,CAAC,iBAAiB,CAAC,UAAU,GAAG,UAAU,EAAE;YAClD,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC9B,OAAO,IAAI,0BAAe,CAAC;YACzB,WAAW,EAAE,IAAI,CAAC,iBAAiB,CAAC,WAAW;YAC/C,eAAe,EAAE,IAAI,CAAC,iBAAiB,CAAC,eAAe;YACvD,aAAa,EAAE,IAAI,CAAC,iBAAiB,CAAC,aAAa;YACnD,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC,CAAC;IACL,CAAC;CACF;AA/DD,oCA+DC"}

Some files were not shown because too many files have changed in this diff Show More