playwright-ms-auth 0.0.12 → 0.0.14
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/lib/authenticate.d.ts.map +1 -1
- package/lib/authenticate.js +93 -59
- package/lib/authenticate.js.map +1 -1
- package/lib/certAuth.js +14 -10
- package/lib/certAuth.js.map +1 -1
- package/lib/cli.js +55 -53
- package/lib/cli.js.map +1 -1
- package/lib/config.js +30 -26
- package/lib/config.js.map +1 -1
- package/lib/index.js +31 -9
- package/lib/index.js.map +1 -1
- package/lib/providers/AzureKeyVaultProvider.js +19 -15
- package/lib/providers/AzureKeyVaultProvider.js.map +1 -1
- package/lib/providers/CredentialProvider.js +5 -1
- package/lib/providers/CredentialProvider.js.map +1 -1
- package/lib/providers/CredentialProviderFactory.js +13 -9
- package/lib/providers/CredentialProviderFactory.js.map +1 -1
- package/lib/providers/EnvironmentProvider.js +10 -6
- package/lib/providers/EnvironmentProvider.js.map +1 -1
- package/lib/providers/GitHubSecretsProvider.js +10 -6
- package/lib/providers/GitHubSecretsProvider.js.map +1 -1
- package/lib/providers/LocalFileProvider.js +14 -10
- package/lib/providers/LocalFileProvider.js.map +1 -1
- package/lib/providers/index.js +22 -6
- package/lib/providers/index.js.map +1 -1
- package/lib/types.js +4 -1
- package/lib/types.js.map +1 -1
- package/lib/utils.js +70 -27
- package/lib/utils.js.map +1 -1
- package/package.json +1 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authenticate.d.ts","sourceRoot":"","sources":["../src/authenticate.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAoB,MAAM,SAAS,CAAC;AAc9D;;GAEG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAuEf;
|
|
1
|
+
{"version":3,"file":"authenticate.d.ts","sourceRoot":"","sources":["../src/authenticate.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAoB,MAAM,SAAS,CAAC;AAc9D;;GAEG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAuEf;AAsRD;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAe5E"}
|
package/lib/authenticate.js
CHANGED
|
@@ -1,47 +1,51 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.authenticate = authenticate;
|
|
4
|
+
exports.loadStorageState = loadStorageState;
|
|
5
|
+
const test_1 = require("@playwright/test");
|
|
6
|
+
const providers_1 = require("./providers");
|
|
7
|
+
const certAuth_1 = require("./certAuth");
|
|
8
|
+
const utils_1 = require("./utils");
|
|
9
|
+
const node_crypto_1 = require("node:crypto");
|
|
6
10
|
const DEFAULT_LOGIN_ENDPOINT = "login.microsoftonline.com";
|
|
7
11
|
/**
|
|
8
12
|
* Perform Microsoft Entra authentication and save storage state
|
|
9
13
|
*/
|
|
10
|
-
|
|
11
|
-
const storagePath = getStorageStatePath(config.email);
|
|
14
|
+
async function authenticate(config, targetUrl) {
|
|
15
|
+
const storagePath = (0, utils_1.getStorageStatePath)(config.email);
|
|
12
16
|
// Check if existing storage state is still valid
|
|
13
|
-
const isValid = await isStorageStateValid(storagePath, config.storageStateExpiration);
|
|
17
|
+
const isValid = await (0, utils_1.isStorageStateValid)(storagePath, config.storageStateExpiration);
|
|
14
18
|
if (isValid) {
|
|
15
|
-
log(`[MsAuth] Storage state for '${config.email}' is still valid, skipping authentication`);
|
|
19
|
+
(0, utils_1.log)(`[MsAuth] Storage state for '${config.email}' is still valid, skipping authentication`);
|
|
16
20
|
return;
|
|
17
21
|
}
|
|
18
|
-
log(`[MsAuth] Starting authentication for '${config.email}'`);
|
|
19
|
-
log(`[MsAuth] Credential provider: ${config.credentialProvider}`);
|
|
20
|
-
log(`[MsAuth] Credential type: ${config.credentialType}`);
|
|
22
|
+
(0, utils_1.log)(`[MsAuth] Starting authentication for '${config.email}'`);
|
|
23
|
+
(0, utils_1.log)(`[MsAuth] Credential provider: ${config.credentialProvider}`);
|
|
24
|
+
(0, utils_1.log)(`[MsAuth] Credential type: ${config.credentialType}`);
|
|
21
25
|
if (config.headless === false) {
|
|
22
|
-
log(`[MsAuth] Running in headful mode (visible browser)`);
|
|
26
|
+
(0, utils_1.log)(`[MsAuth] Running in headful mode (visible browser)`);
|
|
23
27
|
}
|
|
24
28
|
// Create credential provider and retrieve credential
|
|
25
|
-
const provider = CredentialProviderFactory.createProvider(config.credentialProvider, config.providerConfig);
|
|
29
|
+
const provider = providers_1.CredentialProviderFactory.createProvider(config.credentialProvider, config.providerConfig);
|
|
26
30
|
const credential = await provider.getCredential();
|
|
27
31
|
// Validate credential type matches configuration
|
|
28
32
|
if (credential.type !== config.credentialType) {
|
|
29
|
-
log(`[MsAuth] ##[warning]Credential type mismatch: expected '${config.credentialType}' but got '${credential.type}'`);
|
|
33
|
+
(0, utils_1.log)(`[MsAuth] ##[warning]Credential type mismatch: expected '${config.credentialType}' but got '${credential.type}'`);
|
|
30
34
|
}
|
|
31
35
|
// Launch browser and perform authentication
|
|
32
36
|
const headlessMode = config.headless !== false;
|
|
33
37
|
console.log(`[CONSOLE] About to launch browser with headless=${headlessMode} (config.headless=${config.headless})`);
|
|
34
|
-
log(`[MsAuth] About to launch browser with headless=${headlessMode} (config.headless=${config.headless})`);
|
|
35
|
-
const browser = await chromium.launch({
|
|
38
|
+
(0, utils_1.log)(`[MsAuth] About to launch browser with headless=${headlessMode} (config.headless=${config.headless})`);
|
|
39
|
+
const browser = await test_1.chromium.launch({
|
|
36
40
|
headless: headlessMode,
|
|
37
41
|
channel: "msedge", // Use Microsoft Edge for better Windows compatibility
|
|
38
42
|
args: ["--no-sandbox", "--disable-setuid-sandbox"],
|
|
39
43
|
});
|
|
40
44
|
console.log(`[CONSOLE] Browser launched successfully with headless=${headlessMode}`);
|
|
41
|
-
log(`[MsAuth] Browser launched successfully`);
|
|
45
|
+
(0, utils_1.log)(`[MsAuth] Browser launched successfully`);
|
|
42
46
|
try {
|
|
43
47
|
await performAuthenticationFlow(browser, config, targetUrl, credential, storagePath);
|
|
44
|
-
log(`[MsAuth] ##[section]Authentication completed successfully for '${config.email}'`);
|
|
48
|
+
(0, utils_1.log)(`[MsAuth] ##[section]Authentication completed successfully for '${config.email}'`);
|
|
45
49
|
}
|
|
46
50
|
finally {
|
|
47
51
|
await browser.close();
|
|
@@ -57,16 +61,16 @@ async function performAuthenticationFlow(browser, config, targetUrl, credential,
|
|
|
57
61
|
const page = await context.newPage();
|
|
58
62
|
try {
|
|
59
63
|
// Navigate to target URL which will redirect to login
|
|
60
|
-
log(`[MsAuth] Navigating to ${targetUrl}`);
|
|
64
|
+
(0, utils_1.log)(`[MsAuth] Navigating to ${targetUrl}`);
|
|
61
65
|
await page.goto(targetUrl, { waitUntil: "domcontentloaded" });
|
|
62
66
|
// Verify we're on the Entra login page
|
|
63
67
|
const loginEndpoint = config.loginEndpoint || DEFAULT_LOGIN_ENDPOINT;
|
|
64
68
|
const loginUrlPattern = new RegExp(`https:\\/\\/${loginEndpoint.replace(/\./g, "\\.")}\\\/`);
|
|
65
|
-
await expect(page, "Expected Entra sign-in page").toHaveURL(loginUrlPattern, { timeout: 30000 });
|
|
69
|
+
await (0, test_1.expect)(page, "Expected Entra sign-in page").toHaveURL(loginUrlPattern, { timeout: 30000 });
|
|
66
70
|
const actualEndpoint = new URL(page.url()).hostname;
|
|
67
|
-
log(`[MsAuth] On Entra login page: ${actualEndpoint}`);
|
|
71
|
+
(0, utils_1.log)(`[MsAuth] On Entra login page: ${actualEndpoint}`);
|
|
68
72
|
// Enter email address
|
|
69
|
-
log(`[MsAuth] Entering email: ${config.email}`);
|
|
73
|
+
(0, utils_1.log)(`[MsAuth] Entering email: ${config.email}`);
|
|
70
74
|
await page.getByRole("textbox", { name: "email" }).fill(config.email);
|
|
71
75
|
await page.getByRole("button", { name: "next" }).click();
|
|
72
76
|
// Handle authentication based on credential type
|
|
@@ -79,42 +83,50 @@ async function performAuthenticationFlow(browser, config, targetUrl, credential,
|
|
|
79
83
|
// Handle "Stay signed in?" prompt
|
|
80
84
|
await handleStaySignedIn(page);
|
|
81
85
|
// Wait for redirect to target URL or any page on the same domain
|
|
82
|
-
log(`[MsAuth] Waiting for redirect to target domain`);
|
|
86
|
+
(0, utils_1.log)(`[MsAuth] Waiting for redirect to target domain`);
|
|
83
87
|
const targetDomain = new URL(targetUrl).origin;
|
|
88
|
+
const targetBaseDomain = new URL(targetUrl).hostname.split('.').slice(-3).join('.'); // e.g., "test.powerapps.com"
|
|
84
89
|
try {
|
|
85
90
|
// Try to wait for the exact URL first
|
|
86
91
|
await page.waitForURL(targetUrl, { timeout: 5000 });
|
|
87
92
|
}
|
|
88
93
|
catch {
|
|
89
|
-
// If exact URL doesn't match, check if we're on the same domain
|
|
94
|
+
// If exact URL doesn't match, check if we're on the same base domain or at least off the login page
|
|
90
95
|
const currentUrl = page.url();
|
|
91
|
-
|
|
92
|
-
|
|
96
|
+
const currentHostname = new URL(currentUrl).hostname;
|
|
97
|
+
const currentBaseDomain = currentHostname.split('.').slice(-3).join('.');
|
|
98
|
+
// Success if we're on same base domain (e.g., *.test.powerapps.com) or same origin
|
|
99
|
+
const isOnTargetDomain = currentUrl.startsWith(targetDomain) || currentBaseDomain === targetBaseDomain;
|
|
100
|
+
// Also success if we're no longer on the login page
|
|
101
|
+
const loginEndpointHost = config.loginEndpoint || DEFAULT_LOGIN_ENDPOINT;
|
|
102
|
+
const isOffLoginPage = !currentHostname.includes(loginEndpointHost);
|
|
103
|
+
if (!isOnTargetDomain && !isOffLoginPage) {
|
|
104
|
+
throw new Error(`Authentication may have failed. Expected to be on ${targetDomain} or similar, but got ${currentUrl}`);
|
|
93
105
|
}
|
|
94
|
-
log(`[MsAuth] Redirected to ${currentUrl} (authentication successful)`);
|
|
106
|
+
(0, utils_1.log)(`[MsAuth] Redirected to ${currentUrl} (authentication successful)`);
|
|
95
107
|
}
|
|
96
108
|
// Give it a bit more time for cookies to settle
|
|
97
109
|
await page.waitForTimeout(2000);
|
|
98
110
|
// Save storage state
|
|
99
|
-
await ensureDirExists(getStorageStatePath(config.email).replace(/[^/\\\\]+$/, ""));
|
|
111
|
+
await (0, utils_1.ensureDirExists)((0, utils_1.getStorageStatePath)(config.email).replace(/[^/\\\\]+$/, ""));
|
|
100
112
|
await context.storageState({ path: storagePath });
|
|
101
|
-
log(`[MsAuth] Saved storage state to ${storagePath}`);
|
|
113
|
+
(0, utils_1.log)(`[MsAuth] Saved storage state to ${storagePath}`);
|
|
102
114
|
// Take success screenshot
|
|
103
|
-
const screenshotPath = getAuthScreenshotPath(config.email, "success");
|
|
104
|
-
await ensureDirExists(screenshotPath.replace(/[^/\\\\]+$/, ""));
|
|
115
|
+
const screenshotPath = (0, utils_1.getAuthScreenshotPath)(config.email, "success");
|
|
116
|
+
await (0, utils_1.ensureDirExists)(screenshotPath.replace(/[^/\\\\]+$/, ""));
|
|
105
117
|
await page
|
|
106
118
|
.screenshot({ path: screenshotPath, fullPage: true })
|
|
107
119
|
.catch(() => { });
|
|
108
|
-
log(`[MsAuth] Screenshot saved to ${screenshotPath}`);
|
|
120
|
+
(0, utils_1.log)(`[MsAuth] Screenshot saved to ${screenshotPath}`);
|
|
109
121
|
}
|
|
110
122
|
catch (error) {
|
|
111
123
|
// Take failure screenshot
|
|
112
|
-
const screenshotPath = getAuthScreenshotPath(config.email, "failed");
|
|
113
|
-
await ensureDirExists(screenshotPath.replace(/[^/\\\\]+$/, ""));
|
|
124
|
+
const screenshotPath = (0, utils_1.getAuthScreenshotPath)(config.email, "failed");
|
|
125
|
+
await (0, utils_1.ensureDirExists)(screenshotPath.replace(/[^/\\\\]+$/, ""));
|
|
114
126
|
await page
|
|
115
127
|
.screenshot({ path: screenshotPath, fullPage: true })
|
|
116
128
|
.catch(() => { });
|
|
117
|
-
log(`[MsAuth] ##[error]Authentication failed. Screenshot: ${screenshotPath}`);
|
|
129
|
+
(0, utils_1.log)(`[MsAuth] ##[error]Authentication failed. Screenshot: ${screenshotPath}`);
|
|
118
130
|
throw error;
|
|
119
131
|
}
|
|
120
132
|
finally {
|
|
@@ -125,21 +137,21 @@ async function performAuthenticationFlow(browser, config, targetUrl, credential,
|
|
|
125
137
|
* Handle certificate-based authentication
|
|
126
138
|
*/
|
|
127
139
|
async function handleCertificateAuth(page, certificate, endpoint, email) {
|
|
128
|
-
log(`[MsAuth] Using certificate authentication`);
|
|
140
|
+
(0, utils_1.log)(`[MsAuth] Using certificate authentication`);
|
|
129
141
|
// Log certificate fingerprint for debugging
|
|
130
|
-
const fingerprint = createHash("sha256")
|
|
142
|
+
const fingerprint = (0, node_crypto_1.createHash)("sha256")
|
|
131
143
|
.update(new Uint8Array(certificate))
|
|
132
144
|
.digest("hex");
|
|
133
|
-
log(`[MsAuth] Certificate fingerprint: ${fingerprint}`);
|
|
134
|
-
log(`[MsAuth] Certificate size: ${certificate.byteLength} bytes`);
|
|
145
|
+
(0, utils_1.log)(`[MsAuth] Certificate fingerprint: ${fingerprint}`);
|
|
146
|
+
(0, utils_1.log)(`[MsAuth] Certificate size: ${certificate.byteLength} bytes`);
|
|
135
147
|
// Add certificate authentication route
|
|
136
|
-
await addCertAuthRoute(page, { pfx: certificate, authEndpoint: endpoint });
|
|
148
|
+
await (0, certAuth_1.addCertAuthRoute)(page, { pfx: certificate, authEndpoint: endpoint });
|
|
137
149
|
// Handle account type selection if needed
|
|
138
150
|
const workOrSchoolButton = page.getByRole("button", {
|
|
139
151
|
name: "Work or school account",
|
|
140
152
|
});
|
|
141
153
|
if (await workOrSchoolButton.isVisible({ timeout: 5000 }).catch(() => false)) {
|
|
142
|
-
log(`[MsAuth] Selecting 'Work or school account'`);
|
|
154
|
+
(0, utils_1.log)(`[MsAuth] Selecting 'Work or school account'`);
|
|
143
155
|
await workOrSchoolButton.click();
|
|
144
156
|
}
|
|
145
157
|
// Handle certificate selection if needed
|
|
@@ -147,19 +159,19 @@ async function handleCertificateAuth(page, certificate, endpoint, email) {
|
|
|
147
159
|
.getByRole("link", { name: "certificate" })
|
|
148
160
|
.or(page.getByRole("button", { name: "certificate" }));
|
|
149
161
|
if (await certButton.isVisible({ timeout: 5000 }).catch(() => false)) {
|
|
150
|
-
log(`[MsAuth] Selecting certificate authentication`);
|
|
162
|
+
(0, utils_1.log)(`[MsAuth] Selecting certificate authentication`);
|
|
151
163
|
await certButton.click();
|
|
152
164
|
}
|
|
153
165
|
// Wait for certificate authentication to complete
|
|
154
|
-
log(`[MsAuth] Waiting for certificate authentication response`);
|
|
155
|
-
await waitForCertAuthResponse(page, endpoint);
|
|
166
|
+
(0, utils_1.log)(`[MsAuth] Waiting for certificate authentication response`);
|
|
167
|
+
await (0, certAuth_1.waitForCertAuthResponse)(page, endpoint);
|
|
156
168
|
// Check for certificate validation errors
|
|
157
169
|
const certFailure = page.getByRole("heading", {
|
|
158
170
|
name: /Certificate validation failed|We couldn't sign you in with a certificate/i,
|
|
159
171
|
});
|
|
160
172
|
if (await certFailure.isVisible({ timeout: 2000 }).catch(() => false)) {
|
|
161
173
|
const failureText = await certFailure.textContent();
|
|
162
|
-
log(`[MsAuth] ##[error]Certificate authentication failed: ${failureText}`);
|
|
174
|
+
(0, utils_1.log)(`[MsAuth] ##[error]Certificate authentication failed: ${failureText}`);
|
|
163
175
|
// Try to get error details
|
|
164
176
|
const moreDetails = page.getByRole("button", { name: "More details" });
|
|
165
177
|
if (await moreDetails.isVisible({ timeout: 1000 }).catch(() => false)) {
|
|
@@ -175,25 +187,27 @@ async function handleCertificateAuth(page, certificate, endpoint, email) {
|
|
|
175
187
|
.evaluate("navigator.clipboard.readText()")
|
|
176
188
|
.catch(() => "");
|
|
177
189
|
if (errorDetails) {
|
|
178
|
-
log(`[MsAuth] ##[error]Error details: ${errorDetails}`);
|
|
190
|
+
(0, utils_1.log)(`[MsAuth] ##[error]Error details: ${errorDetails}`);
|
|
179
191
|
}
|
|
180
192
|
}
|
|
181
193
|
}
|
|
182
194
|
throw new Error(`Certificate authentication failed for ${email}. Check Entra sign-in logs.`);
|
|
183
195
|
}
|
|
184
|
-
log(`[MsAuth] Certificate authentication successful`);
|
|
196
|
+
(0, utils_1.log)(`[MsAuth] Certificate authentication successful`);
|
|
197
|
+
// Wait a bit for any post-auth UI to load
|
|
198
|
+
await page.waitForTimeout(2000);
|
|
185
199
|
}
|
|
186
200
|
/**
|
|
187
201
|
* Handle password-based authentication
|
|
188
202
|
*/
|
|
189
203
|
async function handlePasswordAuth(page, password, email) {
|
|
190
|
-
log(`[MsAuth] Using password authentication`);
|
|
204
|
+
(0, utils_1.log)(`[MsAuth] Using password authentication`);
|
|
191
205
|
// Wait for password field
|
|
192
206
|
await page
|
|
193
207
|
.getByRole("textbox", { name: "password" })
|
|
194
208
|
.waitFor({ timeout: 10000 });
|
|
195
209
|
// Enter password
|
|
196
|
-
log(`[MsAuth] Entering password`);
|
|
210
|
+
(0, utils_1.log)(`[MsAuth] Entering password`);
|
|
197
211
|
await page.getByRole("textbox", { name: "password" }).fill(password);
|
|
198
212
|
await page
|
|
199
213
|
.getByRole("button", { name: "submit" })
|
|
@@ -204,27 +218,47 @@ async function handlePasswordAuth(page, password, email) {
|
|
|
204
218
|
const passwordError = page.locator("#passwordError, .has-error");
|
|
205
219
|
if (await passwordError.isVisible().catch(() => false)) {
|
|
206
220
|
const errorText = await passwordError.textContent().catch(() => "");
|
|
207
|
-
log(`[MsAuth] ##[error]Password authentication failed: ${errorText}`);
|
|
221
|
+
(0, utils_1.log)(`[MsAuth] ##[error]Password authentication failed: ${errorText}`);
|
|
208
222
|
throw new Error(`Password authentication failed for ${email}. Please verify the password is correct.`);
|
|
209
223
|
}
|
|
210
|
-
log(`[MsAuth] Password authentication successful`);
|
|
224
|
+
(0, utils_1.log)(`[MsAuth] Password authentication successful`);
|
|
211
225
|
}
|
|
212
226
|
/**
|
|
213
227
|
* Handle "Stay signed in?" prompt
|
|
214
228
|
*/
|
|
215
229
|
async function handleStaySignedIn(page) {
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
230
|
+
(0, utils_1.log)(`[MsAuth] Checking for 'Stay signed in?' prompt...`);
|
|
231
|
+
// Try multiple selectors for better compatibility
|
|
232
|
+
const staySignedInHeading = page.getByRole("heading", { name: /stay signed in/i });
|
|
233
|
+
const staySignedInText = page.getByText(/stay signed in/i);
|
|
234
|
+
const yesButton = page.getByRole("button", { name: /^yes$/i });
|
|
235
|
+
const noButton = page.getByRole("button", { name: /^no$/i });
|
|
236
|
+
// Check if the prompt is visible
|
|
237
|
+
const isPromptVisible = await Promise.race([
|
|
238
|
+
staySignedInHeading.isVisible({ timeout: 10000 }).catch(() => false),
|
|
239
|
+
staySignedInText.isVisible({ timeout: 10000 }).catch(() => false),
|
|
240
|
+
]);
|
|
241
|
+
if (isPromptVisible) {
|
|
242
|
+
(0, utils_1.log)(`[MsAuth] 'Stay signed in?' prompt detected - clicking Yes`);
|
|
243
|
+
// Click Yes button
|
|
244
|
+
await yesButton.click({ timeout: 5000 }).catch(async () => {
|
|
245
|
+
(0, utils_1.log)(`[MsAuth] Failed to click Yes button by role, trying alternative selector`);
|
|
246
|
+
await page.locator('input[type="submit"][value="Yes"]').click();
|
|
247
|
+
});
|
|
248
|
+
(0, utils_1.log)(`[MsAuth] Clicked 'Yes' on stay signed in prompt`);
|
|
249
|
+
// Wait for navigation after clicking
|
|
250
|
+
await page.waitForTimeout(2000);
|
|
251
|
+
}
|
|
252
|
+
else {
|
|
253
|
+
(0, utils_1.log)(`[MsAuth] No 'Stay signed in?' prompt detected`);
|
|
220
254
|
}
|
|
221
255
|
}
|
|
222
256
|
/**
|
|
223
257
|
* Load existing storage state into a browser context
|
|
224
258
|
*/
|
|
225
|
-
|
|
226
|
-
const storagePath = getStorageStatePath(config.email);
|
|
227
|
-
const isValid = await isStorageStateValid(storagePath, config.storageStateExpiration);
|
|
259
|
+
async function loadStorageState(config) {
|
|
260
|
+
const storagePath = (0, utils_1.getStorageStatePath)(config.email);
|
|
261
|
+
const isValid = await (0, utils_1.isStorageStateValid)(storagePath, config.storageStateExpiration);
|
|
228
262
|
if (!isValid) {
|
|
229
263
|
throw new Error(`Storage state for '${config.email}' does not exist or has expired. ` +
|
|
230
264
|
`Please run authentication first.`);
|
package/lib/authenticate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authenticate.js","sourceRoot":"","sources":["../src/authenticate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"authenticate.js","sourceRoot":"","sources":["../src/authenticate.ts"],"names":[],"mappings":"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"}
|
package/lib/certAuth.js
CHANGED
|
@@ -1,14 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.addCertAuthRoute = addCertAuthRoute;
|
|
4
|
+
exports.waitForCertAuthResponse = waitForCertAuthResponse;
|
|
5
|
+
const node_https_1 = require("node:https");
|
|
6
|
+
const utils_1 = require("./utils");
|
|
3
7
|
const DEFAULT_AUTH_ENDPOINT = "login.microsoftonline.com";
|
|
4
8
|
/**
|
|
5
9
|
* Add certificate authentication route handler to the page
|
|
6
10
|
*/
|
|
7
|
-
|
|
11
|
+
async function addCertAuthRoute(page, options) {
|
|
8
12
|
const endpoint = options.authEndpoint || DEFAULT_AUTH_ENDPOINT;
|
|
9
13
|
const uri = getCertAuthGlob(endpoint);
|
|
10
14
|
const { pfx, passphrase } = options;
|
|
11
|
-
log(`[CertAuth] Adding certificate authentication route for endpoint: ${endpoint}`);
|
|
15
|
+
(0, utils_1.log)(`[CertAuth] Adding certificate authentication route for endpoint: ${endpoint}`);
|
|
12
16
|
await page.route(uri, certAuthHandler({ pfx, passphrase }));
|
|
13
17
|
}
|
|
14
18
|
/**
|
|
@@ -18,14 +22,14 @@ export async function addCertAuthRoute(page, options) {
|
|
|
18
22
|
function certAuthHandler(options) {
|
|
19
23
|
return async (route, request) => {
|
|
20
24
|
try {
|
|
21
|
-
log(`[CertAuth] Handling certificate authentication request to ${request.url()}`);
|
|
25
|
+
(0, utils_1.log)(`[CertAuth] Handling certificate authentication request to ${request.url()}`);
|
|
22
26
|
const resp = await doCertAuthPost(request, options);
|
|
23
27
|
await route.fulfill(resp);
|
|
24
|
-
log(`[CertAuth] Certificate authentication request completed with status ${resp.status}`);
|
|
28
|
+
(0, utils_1.log)(`[CertAuth] Certificate authentication request completed with status ${resp.status}`);
|
|
25
29
|
}
|
|
26
30
|
catch (e) {
|
|
27
31
|
const message = e instanceof Error ? e.message : String(e);
|
|
28
|
-
log(`[CertAuth] ##[error]Failed to send cert auth request: ${message}`);
|
|
32
|
+
(0, utils_1.log)(`[CertAuth] ##[error]Failed to send cert auth request: ${message}`);
|
|
29
33
|
await route.abort("failed");
|
|
30
34
|
}
|
|
31
35
|
};
|
|
@@ -35,8 +39,8 @@ function certAuthHandler(options) {
|
|
|
35
39
|
*/
|
|
36
40
|
function doCertAuthPost(request, options) {
|
|
37
41
|
return new Promise((resolve, reject) => {
|
|
38
|
-
const agent = new Agent(options);
|
|
39
|
-
const req =
|
|
42
|
+
const agent = new node_https_1.Agent(options);
|
|
43
|
+
const req = (0, node_https_1.request)(request.url(), {
|
|
40
44
|
method: "POST",
|
|
41
45
|
headers: request.headers(),
|
|
42
46
|
agent,
|
|
@@ -68,7 +72,7 @@ function doCertAuthPost(request, options) {
|
|
|
68
72
|
/**
|
|
69
73
|
* Wait for certificate authentication response
|
|
70
74
|
*/
|
|
71
|
-
|
|
75
|
+
function waitForCertAuthResponse(page, endpoint) {
|
|
72
76
|
const authEndpoint = endpoint || DEFAULT_AUTH_ENDPOINT;
|
|
73
77
|
const glob = getCertAuthGlob(authEndpoint);
|
|
74
78
|
return page.waitForResponse(glob).then(() => { });
|
package/lib/certAuth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"certAuth.js","sourceRoot":"","sources":["../src/certAuth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"certAuth.js","sourceRoot":"","sources":["../src/certAuth.ts"],"names":[],"mappings":"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"}
|
package/lib/cli.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
const commander_1 = require("commander");
|
|
5
|
+
const authenticate_1 = require("./authenticate");
|
|
6
|
+
const config_1 = require("./config");
|
|
7
|
+
const types_1 = require("./types");
|
|
8
|
+
const utils_1 = require("./utils");
|
|
9
|
+
const program = new commander_1.Command();
|
|
8
10
|
program
|
|
9
11
|
.name("ms-auth")
|
|
10
12
|
.description("Microsoft Entra authentication CLI for Playwright")
|
|
@@ -13,66 +15,66 @@ program
|
|
|
13
15
|
.command("login")
|
|
14
16
|
.description("Perform Microsoft Entra authentication and save storage state")
|
|
15
17
|
.requiredOption("-u, --url <url>", "Target URL to authenticate against")
|
|
16
|
-
.option("-e, --email <email>", `User email (or set ${EnvVars.EMAIL})`)
|
|
17
|
-
.option("-t, --credential-type <type>", `Credential type: password|certificate (or set ${EnvVars.CREDENTIAL_TYPE})`, "password")
|
|
18
|
-
.option("-p, --credential-provider <provider>", `Credential provider: azure-keyvault|local-file|environment|github-secrets (or set ${EnvVars.CREDENTIAL_PROVIDER})`, "azure-keyvault")
|
|
19
|
-
.option("--keyvault-endpoint <endpoint>", `Azure KeyVault endpoint (or set ${EnvVars.KEYVAULT_ENDPOINT})`)
|
|
20
|
-
.option("--keyvault-secret <secret>", `Azure KeyVault secret name (or set ${EnvVars.KEYVAULT_SECRET_NAME})`)
|
|
21
|
-
.option("--local-file <path>", `Local file path for credential (or set ${EnvVars.LOCAL_FILE_PATH})`)
|
|
22
|
-
.option("--env-variable <name>", `Environment variable name (or set ${EnvVars.ENV_VARIABLE_NAME})`)
|
|
18
|
+
.option("-e, --email <email>", `User email (or set ${types_1.EnvVars.EMAIL})`)
|
|
19
|
+
.option("-t, --credential-type <type>", `Credential type: password|certificate (or set ${types_1.EnvVars.CREDENTIAL_TYPE})`, "password")
|
|
20
|
+
.option("-p, --credential-provider <provider>", `Credential provider: azure-keyvault|local-file|environment|github-secrets (or set ${types_1.EnvVars.CREDENTIAL_PROVIDER})`, "azure-keyvault")
|
|
21
|
+
.option("--keyvault-endpoint <endpoint>", `Azure KeyVault endpoint (or set ${types_1.EnvVars.KEYVAULT_ENDPOINT})`)
|
|
22
|
+
.option("--keyvault-secret <secret>", `Azure KeyVault secret name (or set ${types_1.EnvVars.KEYVAULT_SECRET_NAME})`)
|
|
23
|
+
.option("--local-file <path>", `Local file path for credential (or set ${types_1.EnvVars.LOCAL_FILE_PATH})`)
|
|
24
|
+
.option("--env-variable <name>", `Environment variable name (or set ${types_1.EnvVars.ENV_VARIABLE_NAME})`)
|
|
23
25
|
.option("--password <password>", `Password for authentication (not recommended for production, use credential providers instead)`)
|
|
24
|
-
.option("--github-repo <repo>", `GitHub repository owner/repo (or set ${EnvVars.GITHUB_REPOSITORY})`)
|
|
25
|
-
.option("--github-secret <secret>", `GitHub secret name (or set ${EnvVars.GITHUB_SECRET_NAME})`)
|
|
26
|
-
.option("--output-dir <dir>", `Output directory for storage state (or set ${EnvVars.OUTPUT_DIR})`)
|
|
26
|
+
.option("--github-repo <repo>", `GitHub repository owner/repo (or set ${types_1.EnvVars.GITHUB_REPOSITORY})`)
|
|
27
|
+
.option("--github-secret <secret>", `GitHub secret name (or set ${types_1.EnvVars.GITHUB_SECRET_NAME})`)
|
|
28
|
+
.option("--output-dir <dir>", `Output directory for storage state (or set ${types_1.EnvVars.OUTPUT_DIR})`)
|
|
27
29
|
.option("--headful", "Run browser in headful mode (visible browser window)")
|
|
28
30
|
.option("--debug", "Enable debug logging")
|
|
29
31
|
.action(async (options) => {
|
|
30
32
|
try {
|
|
31
33
|
// Enable debug logging if requested
|
|
32
34
|
if (options.debug) {
|
|
33
|
-
process.env[EnvVars.SYSTEM_DEBUG] = "true";
|
|
35
|
+
process.env[types_1.EnvVars.SYSTEM_DEBUG] = "true";
|
|
34
36
|
}
|
|
35
|
-
log("[CLI] Starting authentication");
|
|
36
|
-
log(`[CLI] Target URL: ${options.url}`);
|
|
37
|
+
(0, utils_1.log)("[CLI] Starting authentication");
|
|
38
|
+
(0, utils_1.log)(`[CLI] Target URL: ${options.url}`);
|
|
37
39
|
// Set environment variables from CLI options
|
|
38
40
|
if (options.email)
|
|
39
|
-
process.env[EnvVars.EMAIL] = options.email;
|
|
41
|
+
process.env[types_1.EnvVars.EMAIL] = options.email;
|
|
40
42
|
if (options.credentialType)
|
|
41
|
-
process.env[EnvVars.CREDENTIAL_TYPE] = options.credentialType;
|
|
43
|
+
process.env[types_1.EnvVars.CREDENTIAL_TYPE] = options.credentialType;
|
|
42
44
|
// Handle password option - automatically set provider to environment
|
|
43
45
|
if (options.password) {
|
|
44
|
-
process.env[EnvVars.CREDENTIAL_PROVIDER] = "environment";
|
|
45
|
-
process.env[EnvVars.ENV_VARIABLE_NAME] = "MS_AUTH_PASSWORD_INLINE";
|
|
46
|
+
process.env[types_1.EnvVars.CREDENTIAL_PROVIDER] = "environment";
|
|
47
|
+
process.env[types_1.EnvVars.ENV_VARIABLE_NAME] = "MS_AUTH_PASSWORD_INLINE";
|
|
46
48
|
process.env["MS_AUTH_PASSWORD_INLINE"] = options.password;
|
|
47
49
|
}
|
|
48
50
|
else if (options.credentialProvider) {
|
|
49
|
-
process.env[EnvVars.CREDENTIAL_PROVIDER] = options.credentialProvider;
|
|
51
|
+
process.env[types_1.EnvVars.CREDENTIAL_PROVIDER] = options.credentialProvider;
|
|
50
52
|
}
|
|
51
53
|
if (options.keyvaultEndpoint)
|
|
52
|
-
process.env[EnvVars.KEYVAULT_ENDPOINT] = options.keyvaultEndpoint;
|
|
54
|
+
process.env[types_1.EnvVars.KEYVAULT_ENDPOINT] = options.keyvaultEndpoint;
|
|
53
55
|
if (options.keyvaultSecret)
|
|
54
|
-
process.env[EnvVars.KEYVAULT_SECRET_NAME] = options.keyvaultSecret;
|
|
56
|
+
process.env[types_1.EnvVars.KEYVAULT_SECRET_NAME] = options.keyvaultSecret;
|
|
55
57
|
if (options.localFile)
|
|
56
|
-
process.env[EnvVars.LOCAL_FILE_PATH] = options.localFile;
|
|
58
|
+
process.env[types_1.EnvVars.LOCAL_FILE_PATH] = options.localFile;
|
|
57
59
|
if (options.envVariable)
|
|
58
|
-
process.env[EnvVars.ENV_VARIABLE_NAME] = options.envVariable;
|
|
60
|
+
process.env[types_1.EnvVars.ENV_VARIABLE_NAME] = options.envVariable;
|
|
59
61
|
if (options.githubRepo)
|
|
60
|
-
process.env[EnvVars.GITHUB_REPOSITORY] = options.githubRepo;
|
|
62
|
+
process.env[types_1.EnvVars.GITHUB_REPOSITORY] = options.githubRepo;
|
|
61
63
|
if (options.githubSecret)
|
|
62
|
-
process.env[EnvVars.GITHUB_SECRET_NAME] = options.githubSecret;
|
|
64
|
+
process.env[types_1.EnvVars.GITHUB_SECRET_NAME] = options.githubSecret;
|
|
63
65
|
if (options.outputDir)
|
|
64
|
-
process.env[EnvVars.OUTPUT_DIR] = options.outputDir;
|
|
66
|
+
process.env[types_1.EnvVars.OUTPUT_DIR] = options.outputDir;
|
|
65
67
|
// Load configuration from environment
|
|
66
|
-
const config = loadConfigFromEnv();
|
|
68
|
+
const config = (0, config_1.loadConfigFromEnv)();
|
|
67
69
|
// Set headless mode based on --headful flag
|
|
68
70
|
config.headless = !options.headful; // If --headful is set, headless = false
|
|
69
|
-
validateConfig(config);
|
|
70
|
-
log(`[CLI] Email: ${config.email}`);
|
|
71
|
-
log(`[CLI] Credential type: ${config.credentialType}`);
|
|
72
|
-
log(`[CLI] Credential provider: ${config.credentialProvider}`);
|
|
73
|
-
log(`[CLI] Browser mode: ${config.headless ? "headless" : "headful"}`);
|
|
71
|
+
(0, config_1.validateConfig)(config);
|
|
72
|
+
(0, utils_1.log)(`[CLI] Email: ${config.email}`);
|
|
73
|
+
(0, utils_1.log)(`[CLI] Credential type: ${config.credentialType}`);
|
|
74
|
+
(0, utils_1.log)(`[CLI] Credential provider: ${config.credentialProvider}`);
|
|
75
|
+
(0, utils_1.log)(`[CLI] Browser mode: ${config.headless ? "headless" : "headful"}`);
|
|
74
76
|
// Perform authentication
|
|
75
|
-
await authenticate(config, options.url);
|
|
77
|
+
await (0, authenticate_1.authenticate)(config, options.url);
|
|
76
78
|
console.log("✅ Authentication successful!");
|
|
77
79
|
process.exit(0);
|
|
78
80
|
}
|
|
@@ -91,31 +93,31 @@ program
|
|
|
91
93
|
.action(() => {
|
|
92
94
|
console.log("Supported Environment Variables:\n");
|
|
93
95
|
console.log("Core Configuration:");
|
|
94
|
-
console.log(` ${EnvVars.EMAIL} - User email address`);
|
|
95
|
-
console.log(` ${EnvVars.CREDENTIAL_TYPE} - Credential type (password|certificate)`);
|
|
96
|
-
console.log(` ${EnvVars.CREDENTIAL_PROVIDER} - Provider type (azure-keyvault|local-file|environment|github-secrets)`);
|
|
97
|
-
console.log(` ${EnvVars.OUTPUT_DIR} - Output directory for storage state`);
|
|
98
|
-
console.log(` ${EnvVars.LOGIN_ENDPOINT} - Entra login endpoint (default: login.microsoftonline.com)`);
|
|
99
|
-
console.log(` ${EnvVars.STORAGE_STATE_EXPIRATION} - Hours until storage state expires (default: 24)`);
|
|
96
|
+
console.log(` ${types_1.EnvVars.EMAIL} - User email address`);
|
|
97
|
+
console.log(` ${types_1.EnvVars.CREDENTIAL_TYPE} - Credential type (password|certificate)`);
|
|
98
|
+
console.log(` ${types_1.EnvVars.CREDENTIAL_PROVIDER} - Provider type (azure-keyvault|local-file|environment|github-secrets)`);
|
|
99
|
+
console.log(` ${types_1.EnvVars.OUTPUT_DIR} - Output directory for storage state`);
|
|
100
|
+
console.log(` ${types_1.EnvVars.LOGIN_ENDPOINT} - Entra login endpoint (default: login.microsoftonline.com)`);
|
|
101
|
+
console.log(` ${types_1.EnvVars.STORAGE_STATE_EXPIRATION} - Hours until storage state expires (default: 24)`);
|
|
100
102
|
console.log();
|
|
101
103
|
console.log("Azure KeyVault Provider:");
|
|
102
|
-
console.log(` ${EnvVars.KEYVAULT_ENDPOINT} - KeyVault endpoint URL`);
|
|
103
|
-
console.log(` ${EnvVars.KEYVAULT_SECRET_NAME}- Secret name in KeyVault`);
|
|
104
|
+
console.log(` ${types_1.EnvVars.KEYVAULT_ENDPOINT} - KeyVault endpoint URL`);
|
|
105
|
+
console.log(` ${types_1.EnvVars.KEYVAULT_SECRET_NAME}- Secret name in KeyVault`);
|
|
104
106
|
console.log();
|
|
105
107
|
console.log("Local File Provider:");
|
|
106
|
-
console.log(` ${EnvVars.LOCAL_FILE_PATH} - Path to credential file`);
|
|
107
|
-
console.log(` ${EnvVars.CERTIFICATE_PASSWORD}- Password for encrypted certificate`);
|
|
108
|
+
console.log(` ${types_1.EnvVars.LOCAL_FILE_PATH} - Path to credential file`);
|
|
109
|
+
console.log(` ${types_1.EnvVars.CERTIFICATE_PASSWORD}- Password for encrypted certificate`);
|
|
108
110
|
console.log();
|
|
109
111
|
console.log("Environment Variable Provider:");
|
|
110
|
-
console.log(` ${EnvVars.ENV_VARIABLE_NAME} - Name of environment variable containing credential`);
|
|
112
|
+
console.log(` ${types_1.EnvVars.ENV_VARIABLE_NAME} - Name of environment variable containing credential`);
|
|
111
113
|
console.log();
|
|
112
114
|
console.log("GitHub Secrets Provider:");
|
|
113
|
-
console.log(` ${EnvVars.GITHUB_REPOSITORY} - GitHub repository (owner/repo)`);
|
|
114
|
-
console.log(` ${EnvVars.GITHUB_SECRET_NAME} - GitHub secret name`);
|
|
115
|
-
console.log(` ${EnvVars.GITHUB_TOKEN} - GitHub token (optional)`);
|
|
115
|
+
console.log(` ${types_1.EnvVars.GITHUB_REPOSITORY} - GitHub repository (owner/repo)`);
|
|
116
|
+
console.log(` ${types_1.EnvVars.GITHUB_SECRET_NAME} - GitHub secret name`);
|
|
117
|
+
console.log(` ${types_1.EnvVars.GITHUB_TOKEN} - GitHub token (optional)`);
|
|
116
118
|
console.log();
|
|
117
119
|
console.log("Debug:");
|
|
118
|
-
console.log(` ${EnvVars.SYSTEM_DEBUG} - Enable debug logging (true|false)`);
|
|
120
|
+
console.log(` ${types_1.EnvVars.SYSTEM_DEBUG} - Enable debug logging (true|false)`);
|
|
119
121
|
});
|
|
120
122
|
program.parse();
|
|
121
123
|
//# sourceMappingURL=cli.js.map
|