@robinmordasiewicz/f5xc-api-mcp 1.0.82-2512312028 → 1.0.82-2601010145
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/auth/credential-manager.d.ts +40 -29
- package/dist/auth/credential-manager.d.ts.map +1 -1
- package/dist/auth/credential-manager.js +132 -100
- package/dist/auth/credential-manager.js.map +1 -1
- package/dist/auth/http-client.d.ts.map +1 -1
- package/dist/auth/http-client.js +21 -10
- package/dist/auth/http-client.js.map +1 -1
- package/dist/auth/index.d.ts +5 -0
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +5 -0
- package/dist/auth/index.js.map +1 -1
- package/dist/config/paths.d.ts +34 -0
- package/dist/config/paths.d.ts.map +1 -0
- package/dist/config/paths.js +67 -0
- package/dist/config/paths.js.map +1 -0
- package/dist/index.d.ts +12 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -11
- package/dist/index.js.map +1 -1
- package/dist/profile/index.d.ts +9 -0
- package/dist/profile/index.d.ts.map +1 -0
- package/dist/profile/index.js +8 -0
- package/dist/profile/index.js.map +1 -0
- package/dist/profile/manager.d.ts +75 -0
- package/dist/profile/manager.d.ts.map +1 -0
- package/dist/profile/manager.js +327 -0
- package/dist/profile/manager.js.map +1 -0
- package/dist/profile/types.d.ts +51 -0
- package/dist/profile/types.d.ts.map +1 -0
- package/dist/profile/types.js +8 -0
- package/dist/profile/types.js.map +1 -0
- package/dist/server.d.ts +6 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +8 -2
- package/dist/server.js.map +1 -1
- package/package.json +1 -1
- package/dist/config/config-manager.d.ts +0 -72
- package/dist/config/config-manager.d.ts.map +0 -1
- package/dist/config/config-manager.js +0 -247
- package/dist/config/config-manager.js.map +0 -1
- package/dist/config/index.d.ts +0 -7
- package/dist/config/index.d.ts.map +0 -1
- package/dist/config/index.js +0 -7
- package/dist/config/index.js.map +0 -1
- package/dist/config/schema.d.ts +0 -74
- package/dist/config/schema.d.ts.map +0 -1
- package/dist/config/schema.js +0 -75
- package/dist/config/schema.js.map +0 -1
- package/dist/config/types.d.ts +0 -77
- package/dist/config/types.d.ts.map +0 -1
- package/dist/config/types.js +0 -31
- package/dist/config/types.js.map +0 -1
|
@@ -4,9 +4,10 @@
|
|
|
4
4
|
* Handles authentication configuration and URL normalization.
|
|
5
5
|
* Supports dual-mode operation:
|
|
6
6
|
* - Documentation mode: No credentials required
|
|
7
|
-
* - Execution mode: API token or P12
|
|
7
|
+
* - Execution mode: API token or P12/Certificate authentication
|
|
8
|
+
*
|
|
9
|
+
* Cross-compatible with f5xc-xcsh CLI profiles.
|
|
8
10
|
*/
|
|
9
|
-
import { ConfigManager } from "../config/index.js";
|
|
10
11
|
/**
|
|
11
12
|
* Authentication modes supported by the server
|
|
12
13
|
*/
|
|
@@ -20,13 +21,15 @@ export declare enum AuthMode {
|
|
|
20
21
|
}
|
|
21
22
|
/**
|
|
22
23
|
* Environment variable names for authentication
|
|
24
|
+
* These take priority over profile settings
|
|
23
25
|
*/
|
|
24
26
|
export declare const AUTH_ENV_VARS: {
|
|
25
27
|
readonly API_URL: "F5XC_API_URL";
|
|
26
28
|
readonly API_TOKEN: "F5XC_API_TOKEN";
|
|
27
|
-
readonly
|
|
28
|
-
readonly
|
|
29
|
-
readonly
|
|
29
|
+
readonly P12_BUNDLE: "F5XC_P12_BUNDLE";
|
|
30
|
+
readonly CERT: "F5XC_CERT";
|
|
31
|
+
readonly KEY: "F5XC_KEY";
|
|
32
|
+
readonly NAMESPACE: "F5XC_NAMESPACE";
|
|
30
33
|
};
|
|
31
34
|
/**
|
|
32
35
|
* Credential configuration for API access
|
|
@@ -40,8 +43,12 @@ export interface Credentials {
|
|
|
40
43
|
token: string | null;
|
|
41
44
|
/** P12 certificate buffer (for cert auth) */
|
|
42
45
|
p12Certificate: Buffer | null;
|
|
43
|
-
/**
|
|
44
|
-
|
|
46
|
+
/** Certificate content (for mTLS) */
|
|
47
|
+
cert: string | null;
|
|
48
|
+
/** Private key content (for mTLS) */
|
|
49
|
+
key: string | null;
|
|
50
|
+
/** Default namespace */
|
|
51
|
+
namespace: string | null;
|
|
45
52
|
}
|
|
46
53
|
/**
|
|
47
54
|
* Normalize F5XC tenant URL to standard API endpoint format
|
|
@@ -67,41 +74,37 @@ export declare function extractTenantFromUrl(url: string): string | null;
|
|
|
67
74
|
* Credential Manager
|
|
68
75
|
*
|
|
69
76
|
* Manages authentication credentials for F5 Distributed Cloud API.
|
|
70
|
-
* Supports
|
|
77
|
+
* Supports credential loading with priority:
|
|
71
78
|
* 1. Environment variables (highest priority - overrides all)
|
|
72
|
-
* 2.
|
|
79
|
+
* 2. Active profile from ~/.config/xcsh/ (cross-compatible with xcsh CLI)
|
|
73
80
|
* 3. No credentials (documentation mode - lowest priority)
|
|
74
81
|
*/
|
|
75
82
|
export declare class CredentialManager {
|
|
76
83
|
private credentials;
|
|
77
|
-
private
|
|
78
|
-
private
|
|
79
|
-
constructor(
|
|
80
|
-
/**
|
|
81
|
-
* Load credentials from environment variables
|
|
82
|
-
*/
|
|
83
|
-
private loadFromEnvironment;
|
|
84
|
+
private activeProfileName;
|
|
85
|
+
private initialized;
|
|
86
|
+
constructor();
|
|
84
87
|
/**
|
|
85
|
-
*
|
|
88
|
+
* Initialize credentials asynchronously
|
|
89
|
+
* Must be called before using credentials
|
|
86
90
|
*/
|
|
87
|
-
|
|
91
|
+
initialize(): Promise<void>;
|
|
88
92
|
/**
|
|
89
|
-
*
|
|
93
|
+
* Load credentials from environment variables
|
|
90
94
|
*/
|
|
91
|
-
private
|
|
95
|
+
private loadFromEnvironment;
|
|
92
96
|
/**
|
|
93
|
-
*
|
|
94
|
-
* Environment variables override profile settings
|
|
97
|
+
* Load credentials from active profile
|
|
95
98
|
*/
|
|
96
|
-
private
|
|
99
|
+
private loadFromProfile;
|
|
97
100
|
/**
|
|
98
|
-
* Build credentials object from
|
|
101
|
+
* Build credentials object from profile data
|
|
99
102
|
*/
|
|
100
103
|
private buildCredentials;
|
|
101
104
|
/**
|
|
102
105
|
* Load credentials with priority order:
|
|
103
106
|
* 1. Environment variables (highest)
|
|
104
|
-
* 2.
|
|
107
|
+
* 2. Active profile from ~/.config/xcsh/
|
|
105
108
|
* 3. No credentials - documentation mode (lowest)
|
|
106
109
|
*/
|
|
107
110
|
private loadCredentials;
|
|
@@ -135,17 +138,25 @@ export declare class CredentialManager {
|
|
|
135
138
|
*/
|
|
136
139
|
getP12Certificate(): Buffer | null;
|
|
137
140
|
/**
|
|
138
|
-
* Get
|
|
141
|
+
* Get certificate content (for mTLS)
|
|
142
|
+
*/
|
|
143
|
+
getCert(): string | null;
|
|
144
|
+
/**
|
|
145
|
+
* Get private key content (for mTLS)
|
|
146
|
+
*/
|
|
147
|
+
getKey(): string | null;
|
|
148
|
+
/**
|
|
149
|
+
* Get default namespace
|
|
139
150
|
*/
|
|
140
|
-
|
|
151
|
+
getNamespace(): string | null;
|
|
141
152
|
/**
|
|
142
153
|
* Get full credentials object
|
|
143
154
|
*/
|
|
144
155
|
getCredentials(): Readonly<Credentials>;
|
|
145
156
|
/**
|
|
146
|
-
* Reload credentials from environment
|
|
157
|
+
* Reload credentials from environment/profile
|
|
147
158
|
* Useful for testing or when credentials change
|
|
148
159
|
*/
|
|
149
|
-
reload(): void
|
|
160
|
+
reload(): Promise<void>;
|
|
150
161
|
}
|
|
151
162
|
//# sourceMappingURL=credential-manager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credential-manager.d.ts","sourceRoot":"","sources":["../../src/auth/credential-manager.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"credential-manager.d.ts","sourceRoot":"","sources":["../../src/auth/credential-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH;;GAEG;AACH,oBAAY,QAAQ;IAClB,kDAAkD;IAClD,IAAI,SAAS;IACb,+BAA+B;IAC/B,KAAK,UAAU;IACf,4CAA4C;IAC5C,WAAW,gBAAgB;CAC5B;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa;;;;;;;CAOhB,CAAC;AAEX;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,0BAA0B;IAC1B,IAAI,EAAE,QAAQ,CAAC;IACf,yBAAyB;IACzB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,iCAAiC;IACjC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,6CAA6C;IAC7C,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,qCAAqC;IACrC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,qCAAqC;IACrC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,wBAAwB;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAcD;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAsBrD;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG/D;AAED;;;;;;;;GAQG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,iBAAiB,CAAuB;IAChD,OAAO,CAAC,WAAW,CAAS;;IAe5B;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAMjC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAsB3B;;OAEG;YACW,eAAe;IAmB7B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAqExB;;;;;OAKG;YACW,eAAe;IA0C7B;;;OAGG;IACH,gBAAgB,IAAI,MAAM,GAAG,IAAI;IAIjC;;OAEG;IACH,WAAW,IAAI,QAAQ;IAIvB;;OAEG;IACH,eAAe,IAAI,OAAO;IAI1B;;OAEG;IACH,SAAS,IAAI,MAAM,GAAG,IAAI;IAI1B;;OAEG;IACH,SAAS,IAAI,MAAM,GAAG,IAAI;IAI1B;;OAEG;IACH,QAAQ,IAAI,MAAM,GAAG,IAAI;IAIzB;;OAEG;IACH,iBAAiB,IAAI,MAAM,GAAG,IAAI;IAIlC;;OAEG;IACH,OAAO,IAAI,MAAM,GAAG,IAAI;IAIxB;;OAEG;IACH,MAAM,IAAI,MAAM,GAAG,IAAI;IAIvB;;OAEG;IACH,YAAY,IAAI,MAAM,GAAG,IAAI;IAI7B;;OAEG;IACH,cAAc,IAAI,QAAQ,CAAC,WAAW,CAAC;IAIvC;;;OAGG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;CAK9B"}
|
|
@@ -4,11 +4,13 @@
|
|
|
4
4
|
* Handles authentication configuration and URL normalization.
|
|
5
5
|
* Supports dual-mode operation:
|
|
6
6
|
* - Documentation mode: No credentials required
|
|
7
|
-
* - Execution mode: API token or P12
|
|
7
|
+
* - Execution mode: API token or P12/Certificate authentication
|
|
8
|
+
*
|
|
9
|
+
* Cross-compatible with f5xc-xcsh CLI profiles.
|
|
8
10
|
*/
|
|
9
11
|
import { readFileSync } from "fs";
|
|
10
12
|
import { logger } from "../utils/logging.js";
|
|
11
|
-
import {
|
|
13
|
+
import { getProfileManager } from "../profile/index.js";
|
|
12
14
|
/**
|
|
13
15
|
* Authentication modes supported by the server
|
|
14
16
|
*/
|
|
@@ -23,13 +25,15 @@ export var AuthMode;
|
|
|
23
25
|
})(AuthMode || (AuthMode = {}));
|
|
24
26
|
/**
|
|
25
27
|
* Environment variable names for authentication
|
|
28
|
+
* These take priority over profile settings
|
|
26
29
|
*/
|
|
27
30
|
export const AUTH_ENV_VARS = {
|
|
28
31
|
API_URL: "F5XC_API_URL",
|
|
29
32
|
API_TOKEN: "F5XC_API_TOKEN",
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
+
P12_BUNDLE: "F5XC_P12_BUNDLE",
|
|
34
|
+
CERT: "F5XC_CERT",
|
|
35
|
+
KEY: "F5XC_KEY",
|
|
36
|
+
NAMESPACE: "F5XC_NAMESPACE",
|
|
33
37
|
};
|
|
34
38
|
/**
|
|
35
39
|
* URL normalization patterns
|
|
@@ -88,118 +92,106 @@ export function extractTenantFromUrl(url) {
|
|
|
88
92
|
* Credential Manager
|
|
89
93
|
*
|
|
90
94
|
* Manages authentication credentials for F5 Distributed Cloud API.
|
|
91
|
-
* Supports
|
|
95
|
+
* Supports credential loading with priority:
|
|
92
96
|
* 1. Environment variables (highest priority - overrides all)
|
|
93
|
-
* 2.
|
|
97
|
+
* 2. Active profile from ~/.config/xcsh/ (cross-compatible with xcsh CLI)
|
|
94
98
|
* 3. No credentials (documentation mode - lowest priority)
|
|
95
99
|
*/
|
|
96
100
|
export class CredentialManager {
|
|
97
101
|
credentials;
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
constructor(
|
|
101
|
-
|
|
102
|
-
this.credentials =
|
|
102
|
+
activeProfileName = null;
|
|
103
|
+
initialized = false;
|
|
104
|
+
constructor() {
|
|
105
|
+
// Initialize with empty credentials - will be loaded async
|
|
106
|
+
this.credentials = {
|
|
107
|
+
mode: AuthMode.NONE,
|
|
108
|
+
apiUrl: null,
|
|
109
|
+
token: null,
|
|
110
|
+
p12Certificate: null,
|
|
111
|
+
cert: null,
|
|
112
|
+
key: null,
|
|
113
|
+
namespace: null,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Initialize credentials asynchronously
|
|
118
|
+
* Must be called before using credentials
|
|
119
|
+
*/
|
|
120
|
+
async initialize() {
|
|
121
|
+
if (this.initialized)
|
|
122
|
+
return;
|
|
123
|
+
this.credentials = await this.loadCredentials();
|
|
124
|
+
this.initialized = true;
|
|
103
125
|
}
|
|
104
126
|
/**
|
|
105
127
|
* Load credentials from environment variables
|
|
106
128
|
*/
|
|
107
129
|
loadFromEnvironment() {
|
|
130
|
+
const apiUrl = process.env[AUTH_ENV_VARS.API_URL];
|
|
131
|
+
const apiToken = process.env[AUTH_ENV_VARS.API_TOKEN];
|
|
132
|
+
const p12Bundle = process.env[AUTH_ENV_VARS.P12_BUNDLE];
|
|
133
|
+
const cert = process.env[AUTH_ENV_VARS.CERT];
|
|
134
|
+
const key = process.env[AUTH_ENV_VARS.KEY];
|
|
135
|
+
const defaultNamespace = process.env[AUTH_ENV_VARS.NAMESPACE];
|
|
136
|
+
const hasAuth = !!(apiToken || p12Bundle || (cert && key));
|
|
108
137
|
return {
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
138
|
+
name: "__env__",
|
|
139
|
+
apiUrl: apiUrl || "",
|
|
140
|
+
apiToken,
|
|
141
|
+
p12Bundle,
|
|
142
|
+
cert,
|
|
143
|
+
key,
|
|
144
|
+
defaultNamespace,
|
|
145
|
+
hasAuth,
|
|
113
146
|
};
|
|
114
147
|
}
|
|
115
148
|
/**
|
|
116
|
-
* Load credentials from
|
|
149
|
+
* Load credentials from active profile
|
|
117
150
|
*/
|
|
118
|
-
|
|
151
|
+
async loadFromProfile() {
|
|
119
152
|
try {
|
|
120
|
-
const
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
if (!profileName) {
|
|
126
|
-
return null;
|
|
127
|
-
}
|
|
128
|
-
const profile = config.profiles[profileName];
|
|
129
|
-
if (!profile) {
|
|
130
|
-
return null;
|
|
153
|
+
const profileManager = getProfileManager();
|
|
154
|
+
const profile = await profileManager.getActiveProfile();
|
|
155
|
+
if (profile) {
|
|
156
|
+
this.activeProfileName = profile.name;
|
|
157
|
+
return profile;
|
|
131
158
|
}
|
|
132
|
-
|
|
133
|
-
// Touch the profile to update lastUsedAt (async, but don't block)
|
|
134
|
-
this.configManager.touchProfile(profileName).catch(() => {
|
|
135
|
-
// Silently ignore touch errors
|
|
136
|
-
});
|
|
137
|
-
return {
|
|
138
|
-
apiUrl: profile.apiUrl,
|
|
139
|
-
token: profile.apiToken,
|
|
140
|
-
p12File: profile.p12File,
|
|
141
|
-
p12Password: profile.p12Password,
|
|
142
|
-
};
|
|
159
|
+
return null;
|
|
143
160
|
}
|
|
144
161
|
catch (error) {
|
|
145
|
-
logger.debug("Failed to load credentials from
|
|
162
|
+
logger.debug("Failed to load credentials from profile", {
|
|
146
163
|
error: error instanceof Error ? error.message : String(error),
|
|
147
164
|
});
|
|
148
165
|
return null;
|
|
149
166
|
}
|
|
150
167
|
}
|
|
151
168
|
/**
|
|
152
|
-
*
|
|
153
|
-
*/
|
|
154
|
-
selectProfile(config) {
|
|
155
|
-
// Check if F5XC_PROFILE is explicitly set
|
|
156
|
-
const envProfile = process.env[AUTH_ENV_VARS.PROFILE];
|
|
157
|
-
if (envProfile && config.profiles[envProfile]) {
|
|
158
|
-
return envProfile;
|
|
159
|
-
}
|
|
160
|
-
// Fall back to default profile if set
|
|
161
|
-
return config.defaultProfile ?? null;
|
|
162
|
-
}
|
|
163
|
-
/**
|
|
164
|
-
* Merge raw credentials from environment and config
|
|
165
|
-
* Environment variables override profile settings
|
|
166
|
-
*/
|
|
167
|
-
mergeCredentials(envCreds, profileCreds) {
|
|
168
|
-
return {
|
|
169
|
-
apiUrl: envCreds.apiUrl ?? profileCreds.apiUrl,
|
|
170
|
-
token: envCreds.token ?? profileCreds.token,
|
|
171
|
-
p12File: envCreds.p12File ?? profileCreds.p12File,
|
|
172
|
-
p12Password: envCreds.p12Password ?? profileCreds.p12Password,
|
|
173
|
-
};
|
|
174
|
-
}
|
|
175
|
-
/**
|
|
176
|
-
* Build credentials object from raw credentials
|
|
169
|
+
* Build credentials object from profile data
|
|
177
170
|
*/
|
|
178
|
-
buildCredentials(
|
|
179
|
-
const apiUrl =
|
|
180
|
-
const token = rawCreds.token;
|
|
181
|
-
const p12File = rawCreds.p12File;
|
|
182
|
-
const p12Password = rawCreds.p12Password;
|
|
171
|
+
buildCredentials(profile) {
|
|
172
|
+
const apiUrl = profile.apiUrl;
|
|
183
173
|
// Determine authentication mode
|
|
184
174
|
let mode = AuthMode.NONE;
|
|
185
175
|
let normalizedUrl = null;
|
|
186
176
|
let p12Certificate = null;
|
|
177
|
+
let cert = null;
|
|
178
|
+
let key = null;
|
|
187
179
|
if (apiUrl) {
|
|
188
180
|
normalizedUrl = normalizeApiUrl(apiUrl);
|
|
189
|
-
if (
|
|
190
|
-
//
|
|
181
|
+
if (profile.p12Bundle) {
|
|
182
|
+
// P12 certificate authentication
|
|
191
183
|
mode = AuthMode.CERTIFICATE;
|
|
192
184
|
try {
|
|
193
|
-
p12Certificate = readFileSync(
|
|
194
|
-
logger.info("Loaded P12 certificate", { file:
|
|
185
|
+
p12Certificate = readFileSync(profile.p12Bundle);
|
|
186
|
+
logger.info("Loaded P12 certificate", { file: profile.p12Bundle });
|
|
195
187
|
}
|
|
196
188
|
catch (error) {
|
|
197
189
|
logger.error("Failed to load P12 certificate", {
|
|
198
|
-
file:
|
|
190
|
+
file: profile.p12Bundle,
|
|
199
191
|
error: error instanceof Error ? error.message : String(error),
|
|
200
192
|
});
|
|
201
193
|
// Fall back to token auth if certificate load fails
|
|
202
|
-
if (
|
|
194
|
+
if (profile.apiToken) {
|
|
203
195
|
mode = AuthMode.TOKEN;
|
|
204
196
|
logger.info("Falling back to token authentication");
|
|
205
197
|
}
|
|
@@ -208,48 +200,72 @@ export class CredentialManager {
|
|
|
208
200
|
}
|
|
209
201
|
}
|
|
210
202
|
}
|
|
211
|
-
else if (
|
|
203
|
+
else if (profile.cert && profile.key) {
|
|
204
|
+
// Certificate + key authentication
|
|
205
|
+
mode = AuthMode.CERTIFICATE;
|
|
206
|
+
try {
|
|
207
|
+
cert = readFileSync(profile.cert, "utf-8");
|
|
208
|
+
key = readFileSync(profile.key, "utf-8");
|
|
209
|
+
logger.info("Loaded certificate and key", {
|
|
210
|
+
cert: profile.cert,
|
|
211
|
+
key: profile.key,
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
catch (error) {
|
|
215
|
+
logger.error("Failed to load certificate/key", {
|
|
216
|
+
error: error instanceof Error ? error.message : String(error),
|
|
217
|
+
});
|
|
218
|
+
if (profile.apiToken) {
|
|
219
|
+
mode = AuthMode.TOKEN;
|
|
220
|
+
logger.info("Falling back to token authentication");
|
|
221
|
+
}
|
|
222
|
+
else {
|
|
223
|
+
mode = AuthMode.NONE;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
else if (profile.apiToken) {
|
|
212
228
|
mode = AuthMode.TOKEN;
|
|
213
229
|
}
|
|
214
230
|
}
|
|
215
231
|
return {
|
|
216
232
|
mode,
|
|
217
233
|
apiUrl: normalizedUrl,
|
|
218
|
-
token:
|
|
234
|
+
token: profile.apiToken ?? null,
|
|
219
235
|
p12Certificate,
|
|
220
|
-
|
|
236
|
+
cert,
|
|
237
|
+
key,
|
|
238
|
+
namespace: profile.defaultNamespace ?? null,
|
|
221
239
|
};
|
|
222
240
|
}
|
|
223
241
|
/**
|
|
224
242
|
* Load credentials with priority order:
|
|
225
243
|
* 1. Environment variables (highest)
|
|
226
|
-
* 2.
|
|
244
|
+
* 2. Active profile from ~/.config/xcsh/
|
|
227
245
|
* 3. No credentials - documentation mode (lowest)
|
|
228
246
|
*/
|
|
229
|
-
loadCredentials() {
|
|
230
|
-
// Step 1:
|
|
247
|
+
async loadCredentials() {
|
|
248
|
+
// Step 1: Check environment variables first (highest priority)
|
|
231
249
|
const envCreds = this.loadFromEnvironment();
|
|
232
|
-
if (envCreds.apiUrl &&
|
|
250
|
+
if (envCreds.apiUrl && envCreds.hasAuth) {
|
|
233
251
|
const credentials = this.buildCredentials(envCreds);
|
|
234
252
|
const tenant = credentials.apiUrl ? extractTenantFromUrl(credentials.apiUrl) : null;
|
|
235
253
|
logger.info("Credentials loaded from environment variables", {
|
|
236
254
|
mode: credentials.mode,
|
|
237
255
|
tenant,
|
|
238
|
-
profile: this.activeProfile,
|
|
239
256
|
});
|
|
240
257
|
return credentials;
|
|
241
258
|
}
|
|
242
|
-
// Step 2: Try
|
|
243
|
-
const
|
|
244
|
-
if (
|
|
245
|
-
const
|
|
246
|
-
const credentials = this.buildCredentials(merged);
|
|
259
|
+
// Step 2: Try active profile from ~/.config/xcsh/
|
|
260
|
+
const profile = await this.loadFromProfile();
|
|
261
|
+
if (profile) {
|
|
262
|
+
const credentials = this.buildCredentials(profile);
|
|
247
263
|
if (credentials.mode !== AuthMode.NONE) {
|
|
248
264
|
const tenant = credentials.apiUrl ? extractTenantFromUrl(credentials.apiUrl) : null;
|
|
249
|
-
logger.info("Credentials loaded from
|
|
265
|
+
logger.info("Credentials loaded from profile", {
|
|
250
266
|
mode: credentials.mode,
|
|
251
267
|
tenant,
|
|
252
|
-
profile: this.
|
|
268
|
+
profile: this.activeProfileName,
|
|
253
269
|
});
|
|
254
270
|
return credentials;
|
|
255
271
|
}
|
|
@@ -261,7 +277,9 @@ export class CredentialManager {
|
|
|
261
277
|
apiUrl: null,
|
|
262
278
|
token: null,
|
|
263
279
|
p12Certificate: null,
|
|
264
|
-
|
|
280
|
+
cert: null,
|
|
281
|
+
key: null,
|
|
282
|
+
namespace: null,
|
|
265
283
|
};
|
|
266
284
|
}
|
|
267
285
|
/**
|
|
@@ -269,7 +287,7 @@ export class CredentialManager {
|
|
|
269
287
|
* Returns null if credentials are from environment variables or no profile is active
|
|
270
288
|
*/
|
|
271
289
|
getActiveProfile() {
|
|
272
|
-
return this.
|
|
290
|
+
return this.activeProfileName;
|
|
273
291
|
}
|
|
274
292
|
/**
|
|
275
293
|
* Get the current authentication mode
|
|
@@ -308,10 +326,22 @@ export class CredentialManager {
|
|
|
308
326
|
return this.credentials.p12Certificate;
|
|
309
327
|
}
|
|
310
328
|
/**
|
|
311
|
-
* Get
|
|
329
|
+
* Get certificate content (for mTLS)
|
|
330
|
+
*/
|
|
331
|
+
getCert() {
|
|
332
|
+
return this.credentials.cert;
|
|
333
|
+
}
|
|
334
|
+
/**
|
|
335
|
+
* Get private key content (for mTLS)
|
|
336
|
+
*/
|
|
337
|
+
getKey() {
|
|
338
|
+
return this.credentials.key;
|
|
339
|
+
}
|
|
340
|
+
/**
|
|
341
|
+
* Get default namespace
|
|
312
342
|
*/
|
|
313
|
-
|
|
314
|
-
return this.credentials.
|
|
343
|
+
getNamespace() {
|
|
344
|
+
return this.credentials.namespace;
|
|
315
345
|
}
|
|
316
346
|
/**
|
|
317
347
|
* Get full credentials object
|
|
@@ -320,11 +350,13 @@ export class CredentialManager {
|
|
|
320
350
|
return Object.freeze({ ...this.credentials });
|
|
321
351
|
}
|
|
322
352
|
/**
|
|
323
|
-
* Reload credentials from environment
|
|
353
|
+
* Reload credentials from environment/profile
|
|
324
354
|
* Useful for testing or when credentials change
|
|
325
355
|
*/
|
|
326
|
-
reload() {
|
|
327
|
-
this.
|
|
356
|
+
async reload() {
|
|
357
|
+
this.initialized = false;
|
|
358
|
+
this.activeProfileName = null;
|
|
359
|
+
await this.initialize();
|
|
328
360
|
}
|
|
329
361
|
}
|
|
330
362
|
//# sourceMappingURL=credential-manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credential-manager.js","sourceRoot":"","sources":["../../src/auth/credential-manager.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"credential-manager.js","sourceRoot":"","sources":["../../src/auth/credential-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../src/auth/http-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAc,EACZ,aAAa,EACb,kBAAkB,EAGnB,MAAM,OAAO,CAAC;AAEf,OAAO,EAAE,iBAAiB,EAAY,MAAM,yBAAyB,CAAC;AAItE;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,sCAAsC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,sCAAsC;IACtC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAWD;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,OAAO;IACtC,oBAAoB;IACpB,IAAI,EAAE,CAAC,CAAC;IACR,uBAAuB;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,uBAAuB;IACvB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,MAAM,CAA6B;gBAE/B,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,GAAE,gBAAqB;IAS/E;;OAEG;IACH,OAAO,CAAC,YAAY;
|
|
1
|
+
{"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../src/auth/http-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAc,EACZ,aAAa,EACb,kBAAkB,EAGnB,MAAM,OAAO,CAAC;AAEf,OAAO,EAAE,iBAAiB,EAAY,MAAM,yBAAyB,CAAC;AAItE;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,sCAAsC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,sCAAsC;IACtC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAWD;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,OAAO;IACtC,oBAAoB;IACpB,IAAI,EAAE,CAAC,CAAC;IACR,uBAAuB;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,uBAAuB;IACvB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,MAAM,CAA6B;gBAE/B,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,GAAE,gBAAqB;IAS/E;;OAEG;IACH,OAAO,CAAC,YAAY;IA8HpB;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACG,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAI1F;;OAEG;IACG,IAAI,CAAC,CAAC,GAAG,OAAO,EACpB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAI1B;;OAEG;IACG,GAAG,CAAC,CAAC,GAAG,OAAO,EACnB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAI1B;;OAEG;IACG,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAI7F;;OAEG;YACW,OAAO;IAgCrB;;OAEG;IACH,gBAAgB,IAAI,aAAa,GAAG,IAAI;CAGzC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,iBAAiB,EAAE,iBAAiB,EACpC,MAAM,CAAC,EAAE,gBAAgB,GACxB,UAAU,CAEZ"}
|
package/dist/auth/http-client.js
CHANGED
|
@@ -65,16 +65,27 @@ export class HttpClient {
|
|
|
65
65
|
}
|
|
66
66
|
else if (authMode === AuthMode.CERTIFICATE) {
|
|
67
67
|
const p12Buffer = this.credentialManager.getP12Certificate();
|
|
68
|
-
const
|
|
69
|
-
|
|
70
|
-
|
|
68
|
+
const cert = this.credentialManager.getCert();
|
|
69
|
+
const key = this.credentialManager.getKey();
|
|
70
|
+
if (p12Buffer) {
|
|
71
|
+
// Create HTTPS agent with P12 certificate for mTLS
|
|
72
|
+
// F5XC P12 certificates typically don't require a password
|
|
73
|
+
axiosConfig.httpsAgent = new https.Agent({
|
|
74
|
+
pfx: p12Buffer,
|
|
75
|
+
rejectUnauthorized: true,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
else if (cert && key) {
|
|
79
|
+
// Create HTTPS agent with separate cert/key for mTLS
|
|
80
|
+
axiosConfig.httpsAgent = new https.Agent({
|
|
81
|
+
cert,
|
|
82
|
+
key,
|
|
83
|
+
rejectUnauthorized: true,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
throw new AuthenticationError("Certificate not loaded - provide P12 bundle or cert/key pair");
|
|
71
88
|
}
|
|
72
|
-
// Create HTTPS agent with P12 certificate for mTLS
|
|
73
|
-
axiosConfig.httpsAgent = new https.Agent({
|
|
74
|
-
pfx: p12Buffer,
|
|
75
|
-
passphrase: p12Password ?? undefined,
|
|
76
|
-
rejectUnauthorized: true,
|
|
77
|
-
});
|
|
78
89
|
}
|
|
79
90
|
const client = axios.create(axiosConfig);
|
|
80
91
|
// Add request interceptor for logging
|
|
@@ -164,7 +175,7 @@ export class HttpClient {
|
|
|
164
175
|
async request(method, path, data, config) {
|
|
165
176
|
if (!this.client) {
|
|
166
177
|
throw new AuthenticationError("HTTP client not available - server is in documentation mode. " +
|
|
167
|
-
"Set F5XC_API_URL and F5XC_API_TOKEN or
|
|
178
|
+
"Set F5XC_API_URL and F5XC_API_TOKEN (or F5XC_P12_BUNDLE for certificate auth) to enable API execution.");
|
|
168
179
|
}
|
|
169
180
|
const startTime = Date.now();
|
|
170
181
|
const response = await this.client.request({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../src/auth/http-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAKN,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAqB,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAc/E;;GAEG;AACH,MAAM,cAAc,GAA+B;IACjD,OAAO,EAAE,KAAK,EAAE,aAAa;IAC7B,OAAO,EAAE,EAAE;IACX,KAAK,EAAE,KAAK;CACb,CAAC;AAgBF;;;;;GAKG;AACH,MAAM,OAAO,UAAU;IACb,MAAM,GAAyB,IAAI,CAAC;IACpC,iBAAiB,CAAoB;IACrC,MAAM,CAA6B;IAE3C,YAAY,iBAAoC,EAAE,SAA2B,EAAE;QAC7E,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAC3C,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,MAAM,EAAE,CAAC;QAE/C,IAAI,IAAI,CAAC,iBAAiB,CAAC,eAAe,EAAE,EAAE,CAAC;YAC7C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACpC,CAAC;IACH,CAAC;IAED;;OAEG;IACK,YAAY;QAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC;QACtD,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,CAAC;QAEnD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,mBAAmB,CAAC,wBAAwB,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,WAAW,GAAuB;YACtC,OAAO;YACP,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;YAC5B,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,MAAM,EAAE,kBAAkB;gBAC1B,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO;aACvB;SACF,CAAC;QAEF,2BAA2B;QAC3B,IAAI,QAAQ,KAAK,QAAQ,CAAC,KAAK,EAAE,CAAC;YAChC,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC;YAChD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,IAAI,mBAAmB,CAAC,0BAA0B,CAAC,CAAC;YAC5D,CAAC;YACD,WAAW,CAAC,OAAO,GAAG;gBACpB,GAAG,WAAW,CAAC,OAAO;gBACtB,aAAa,EAAE,YAAY,KAAK,EAAE;aACnC,CAAC;QACJ,CAAC;aAAM,IAAI,QAAQ,KAAK,QAAQ,CAAC,WAAW,EAAE,CAAC;YAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,CAAC;YAC7D,MAAM,
|
|
1
|
+
{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../src/auth/http-client.ts"],"names":[],"mappings":"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"}
|
package/dist/auth/index.d.ts
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Auth Module - Export all authentication utilities
|
|
3
|
+
*
|
|
4
|
+
* Cross-compatible with f5xc-xcsh CLI.
|
|
5
|
+
* Profiles are stored in ~/.config/xcsh/ (shared with xcsh CLI).
|
|
3
6
|
*/
|
|
4
7
|
export { AuthMode, AUTH_ENV_VARS, CredentialManager, normalizeApiUrl, extractTenantFromUrl, } from "./credential-manager.js";
|
|
5
8
|
export type { Credentials } from "./credential-manager.js";
|
|
6
9
|
export { HttpClient, createHttpClient } from "./http-client.js";
|
|
7
10
|
export type { HttpClientConfig, ApiResponse } from "./http-client.js";
|
|
11
|
+
export { ProfileManager, getProfileManager } from "../profile/index.js";
|
|
12
|
+
export type { Profile, ProfileConfig, ProfileResult, ProfileValidationError, } from "../profile/index.js";
|
|
8
13
|
//# sourceMappingURL=index.d.ts.map
|