diff --git a/package-lock.json b/package-lock.json index 170c4e372cb..7135e3f8aaa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8429,9 +8429,10 @@ } }, "node_modules/@mongodb-js/oidc-plugin": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@mongodb-js/oidc-plugin/-/oidc-plugin-1.0.2.tgz", - "integrity": "sha512-hwTbkmJ31RPB5ksA6pLepnaQOBz6iurE+uH89B1IIJdxVuiO0Qz+OqpTN8vk8LZzcVDb/WbNoxqxogCWwMqFKw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@mongodb-js/oidc-plugin/-/oidc-plugin-1.1.1.tgz", + "integrity": "sha512-u2t3dvUpQJeTmMvXyZu730yJzqJ3aKraQ7ELlNwpKpl1AGxL6Dd9Z2AEu9ycExZjXhyjBW/lbaWuEhdNZHEgeg==", + "license": "Apache-2.0", "dependencies": { "express": "^4.18.2", "open": "^9.1.0", @@ -8445,6 +8446,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "license": "MIT", "engines": { "node": ">=12" }, @@ -8456,6 +8458,7 @@ "version": "9.1.0", "resolved": "https://registry.npmjs.org/open/-/open-9.1.0.tgz", "integrity": "sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==", + "license": "MIT", "dependencies": { "default-browser": "^4.0.0", "define-lazy-prop": "^3.0.0", @@ -17228,9 +17231,10 @@ "integrity": "sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ==" }, "node_modules/big-integer": { - "version": "1.6.51", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", - "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", + "version": "1.6.52", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", + "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", + "license": "Unlicense", "engines": { "node": ">=0.6" } @@ -17408,6 +17412,7 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", + "license": "MIT", "dependencies": { "big-integer": "^1.6.44" }, @@ -17687,6 +17692,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz", "integrity": "sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==", + "license": "MIT", "dependencies": { "run-applescript": "^5.0.0" }, @@ -20084,6 +20090,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-4.0.0.tgz", "integrity": "sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==", + "license": "MIT", "dependencies": { "bundle-name": "^3.0.0", "default-browser-id": "^3.0.0", @@ -20101,6 +20108,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz", "integrity": "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==", + "license": "MIT", "dependencies": { "bplist-parser": "^0.2.0", "untildify": "^4.0.0" @@ -20113,9 +20121,10 @@ } }, "node_modules/default-browser/node_modules/execa": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-7.1.1.tgz", - "integrity": "sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", + "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", + "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.1", @@ -20138,6 +20147,7 @@ "version": "4.3.1", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", + "license": "Apache-2.0", "engines": { "node": ">=14.18.0" } @@ -20146,6 +20156,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, @@ -20157,6 +20168,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "license": "MIT", "engines": { "node": ">=12" }, @@ -20165,9 +20177,10 @@ } }, "node_modules/default-browser/node_modules/npm-run-path": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", - "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "license": "MIT", "dependencies": { "path-key": "^4.0.0" }, @@ -20182,6 +20195,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "license": "MIT", "dependencies": { "mimic-fn": "^4.0.0" }, @@ -20196,6 +20210,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "license": "MIT", "engines": { "node": ">=12" }, @@ -20207,6 +20222,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "license": "MIT", "engines": { "node": ">=12" }, @@ -27555,6 +27571,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "license": "MIT", "dependencies": { "is-docker": "^3.0.0" }, @@ -27572,6 +27589,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "license": "MIT", "bin": { "is-docker": "cli.js" }, @@ -39139,6 +39157,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz", "integrity": "sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==", + "license": "MIT", "dependencies": { "execa": "^5.0.0" }, @@ -41598,6 +41617,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz", "integrity": "sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==", + "license": "MIT", "engines": { "node": ">=12" }, @@ -42503,6 +42523,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "license": "MIT", "engines": { "node": ">=8" } @@ -44320,7 +44341,7 @@ "@mongodb-js/compass-utils": "^0.6.9", "@mongodb-js/devtools-connect": "^3.2.5", "@mongodb-js/devtools-proxy-support": "^0.3.5", - "@mongodb-js/oidc-plugin": "^1.0.0", + "@mongodb-js/oidc-plugin": "^1.1.1", "compass-preferences-model": "^2.26.0", "electron": "^29.4.5", "hadron-app-registry": "^9.2.2", @@ -48269,7 +48290,7 @@ "@mongodb-js/devtools-docker-test-envs": "^1.3.2", "@mongodb-js/eslint-config-compass": "^1.1.4", "@mongodb-js/mocha-config-compass": "^1.3.10", - "@mongodb-js/oidc-plugin": "^1.0.0", + "@mongodb-js/oidc-plugin": "^1.1.1", "@mongodb-js/prettier-config-compass": "^1.0.2", "@mongodb-js/tsconfig-compass": "^1.0.4", "@types/lodash": "^4.14.188", @@ -56122,7 +56143,7 @@ "@mongodb-js/devtools-proxy-support": "^0.3.5", "@mongodb-js/eslint-config-compass": "^1.1.4", "@mongodb-js/mocha-config-compass": "^1.3.10", - "@mongodb-js/oidc-plugin": "^1.0.0", + "@mongodb-js/oidc-plugin": "^1.1.1", "@mongodb-js/prettier-config-compass": "^1.0.2", "@mongodb-js/tsconfig-compass": "^1.0.4", "@testing-library/react": "^12.1.5", @@ -60018,9 +60039,9 @@ } }, "@mongodb-js/oidc-plugin": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@mongodb-js/oidc-plugin/-/oidc-plugin-1.0.2.tgz", - "integrity": "sha512-hwTbkmJ31RPB5ksA6pLepnaQOBz6iurE+uH89B1IIJdxVuiO0Qz+OqpTN8vk8LZzcVDb/WbNoxqxogCWwMqFKw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@mongodb-js/oidc-plugin/-/oidc-plugin-1.1.1.tgz", + "integrity": "sha512-u2t3dvUpQJeTmMvXyZu730yJzqJ3aKraQ7ELlNwpKpl1AGxL6Dd9Z2AEu9ycExZjXhyjBW/lbaWuEhdNZHEgeg==", "requires": { "express": "^4.18.2", "open": "^9.1.0", @@ -67479,9 +67500,9 @@ "integrity": "sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ==" }, "big-integer": { - "version": "1.6.51", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", - "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==" + "version": "1.6.52", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", + "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==" }, "big.js": { "version": "5.2.2", @@ -70013,9 +70034,9 @@ }, "dependencies": { "execa": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-7.1.1.tgz", - "integrity": "sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", + "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", "requires": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.1", @@ -70044,9 +70065,9 @@ "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==" }, "npm-run-path": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", - "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", "requires": { "path-key": "^4.0.0" } @@ -80737,7 +80758,7 @@ "@mongodb-js/devtools-docker-test-envs": "^1.3.2", "@mongodb-js/eslint-config-compass": "^1.1.4", "@mongodb-js/mocha-config-compass": "^1.3.10", - "@mongodb-js/oidc-plugin": "^1.0.0", + "@mongodb-js/oidc-plugin": "^1.1.1", "@mongodb-js/prettier-config-compass": "^1.0.2", "@mongodb-js/ssh-tunnel": "^2.3.3", "@mongodb-js/tsconfig-compass": "^1.0.4", diff --git a/packages/atlas-service/package.json b/packages/atlas-service/package.json index 9f8b4f481a4..879cd0617ac 100644 --- a/packages/atlas-service/package.json +++ b/packages/atlas-service/package.json @@ -80,7 +80,7 @@ "@mongodb-js/compass-utils": "^0.6.9", "@mongodb-js/devtools-connect": "^3.2.5", "@mongodb-js/devtools-proxy-support": "^0.3.5", - "@mongodb-js/oidc-plugin": "^1.0.0", + "@mongodb-js/oidc-plugin": "^1.1.1", "hadron-app-registry": "^9.2.2", "compass-preferences-model": "^2.26.0", "electron": "^29.4.5", diff --git a/packages/atlas-service/src/main.spec.ts b/packages/atlas-service/src/main.spec.ts index cd89272f83d..19e9a527fd2 100644 --- a/packages/atlas-service/src/main.spec.ts +++ b/packages/atlas-service/src/main.spec.ts @@ -331,7 +331,7 @@ describe('CompassAuthServiceMain', function () { } as any; await CompassAuthService.init(preferences, {} as any); CompassAuthService['config'] = defaultConfig; - expect(getListenerCount(logger)).to.eq(27); + expect(getListenerCount(logger)).to.eq(30); // We did all preparations, reset sinon history for easier assertions sandbox.resetHistory(); diff --git a/packages/connection-form/src/components/advanced-options-tabs/authentication-tab/authentication-oidc.spec.tsx b/packages/connection-form/src/components/advanced-options-tabs/authentication-tab/authentication-oidc.spec.tsx index 5117c361731..99cae4de99f 100644 --- a/packages/connection-form/src/components/advanced-options-tabs/authentication-tab/authentication-oidc.spec.tsx +++ b/packages/connection-form/src/components/advanced-options-tabs/authentication-tab/authentication-oidc.spec.tsx @@ -118,6 +118,27 @@ describe('Authentication OIDC Connection Form', function () { }); }); + it('handles the Use ID token instead of Access Token checkbox', async function () { + fireEvent.click(screen.getByText('Use ID token instead of Access Token')); + await expectToConnectWith({ + connectionString: + 'mongodb://localhost:27017/?authMechanism=MONGODB-OIDC&authSource=%24external', + oidc: { + passIdTokenAsAccessToken: true, + }, + }); + }); + + it('handles the Use ID token instead of Access Token checkbox on and off', async function () { + fireEvent.click(screen.getByText('Use ID token instead of Access Token')); + fireEvent.click(screen.getByText('Use ID token instead of Access Token')); + await expectToConnectWith({ + connectionString: + 'mongodb://localhost:27017/?authMechanism=MONGODB-OIDC&authSource=%24external', + oidc: {}, + }); + }); + it('handles the Consider Target Endpoint Trusted checkbox', async function () { fireEvent.click(screen.getByText('Consider Target Endpoint Trusted')); await expectToConnectWith({ diff --git a/packages/connection-form/src/components/advanced-options-tabs/authentication-tab/authentication-oidc.tsx b/packages/connection-form/src/components/advanced-options-tabs/authentication-tab/authentication-oidc.tsx index 9ac91596774..48dd18cc8a8 100644 --- a/packages/connection-form/src/components/advanced-options-tabs/authentication-tab/authentication-oidc.tsx +++ b/packages/connection-form/src/components/advanced-options-tabs/authentication-tab/authentication-oidc.tsx @@ -121,6 +121,38 @@ function AuthenticationOIDC({ /> + + ) => { + if (checked) { + return handleFieldChanged('passIdTokenAsAccessToken', true); + } + + return handleFieldChanged( + 'passIdTokenAsAccessToken', + undefined + ); + }} + data-testid="oidc-pass-id-token-as-access-token" + id="oidc-pass-id-token-as-access-token" + label={ + <> + + + Use ID tokens instead of access tokens to work around + misconfigured or broken identity providers. This will only + work if the server is configured correspondingly. + + + } + checked={!!connectionOptions.oidc?.passIdTokenAsAccessToken} + /> + + {showOIDCDeviceAuthFlow && (