From 603f3093b6dbd02c19e7b244b0ec8a3a5353dfa7 Mon Sep 17 00:00:00 2001 From: kushalshit27 <43465488+kushalshit27@users.noreply.github.com> Date: Tue, 11 Feb 2025 20:34:23 +0530 Subject: [PATCH 1/6] Add Google Credential Manager support --- src/tools/auth0/handlers/clients.ts | 45 +++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/src/tools/auth0/handlers/clients.ts b/src/tools/auth0/handlers/clients.ts index 5845ce17f..9f685127b 100644 --- a/src/tools/auth0/handlers/clients.ts +++ b/src/tools/auth0/handlers/clients.ts @@ -8,6 +8,51 @@ export const schema = { type: 'object', properties: { name: { type: 'string', minLength: 1, pattern: '[^<>]+' }, + mobile: { + type: 'object', + properties: { + android: { + type: 'object', + properties: { + app_package_name: { type: 'string' }, + sha256_cert_fingerprints: { + type: 'array', + items: { type: 'string' }, + }, + }, + }, + ios: { + type: 'object', + properties: { + team_id: { type: 'string' }, + app_bundle_identifier: { type: 'string' }, + }, + }, + }, + }, + native_social_login: { + type: 'object', + properties: { + apple: { + type: 'object', + properties: { + enabled: { type: 'boolean' }, + }, + }, + facebook: { + type: 'object', + properties: { + enabled: { type: 'boolean' }, + }, + }, + google: { + type: 'object', + properties: { + enabled: { type: 'boolean' }, + }, + }, + }, + }, }, required: ['name'], }, From cee59dae40f4834190b9b72c24cabdd7d978cde8 Mon Sep 17 00:00:00 2001 From: kushalshit27 <43465488+kushalshit27@users.noreply.github.com> Date: Wed, 12 Feb 2025 18:57:58 +0530 Subject: [PATCH 2/6] Add example Google Credential Manager support --- examples/directory/clients/My Natve app.json | 13 +++++++++++++ examples/yaml/tenant.yaml | 11 ++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 examples/directory/clients/My Natve app.json diff --git a/examples/directory/clients/My Natve app.json b/examples/directory/clients/My Natve app.json new file mode 100644 index 000000000..65608f064 --- /dev/null +++ b/examples/directory/clients/My Natve app.json @@ -0,0 +1,13 @@ +{ + "name": "My Natve app", + "mobile": { + "android": { + "app_package_name": "com.my.android.id" + } + }, + "native_social_login": { + "google": { + "enabled": true + } + } +} diff --git a/examples/yaml/tenant.yaml b/examples/yaml/tenant.yaml index 4b563748b..e16681124 100644 --- a/examples/yaml/tenant.yaml +++ b/examples/yaml/tenant.yaml @@ -28,7 +28,16 @@ clients: name: "My M2M" app_type: "non_interactive" # Add other client settings https://auth0.com/docs/api/management/v2#!/Clients/post_clients - + - + name: "My Natve app" + app_type: native + mobile: + android: + app_package_name: com.my.android.id + native_social_login: + google: + enabled: true + # Add other client settings https://auth0.com/docs/api/management/v2#!/Clients/post_clients databases: - name: "users" From 22c84831a92ce839e5be02d775e79be01f931e0c Mon Sep 17 00:00:00 2001 From: kushalshit27 <43465488+kushalshit27@users.noreply.github.com> Date: Wed, 12 Feb 2025 19:04:41 +0530 Subject: [PATCH 3/6] Add example Google Credential Manager support --- examples/directory/clients/My Natve app.json | 40 ++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/examples/directory/clients/My Natve app.json b/examples/directory/clients/My Natve app.json index 65608f064..4e1b30226 100644 --- a/examples/directory/clients/My Natve app.json +++ b/examples/directory/clients/My Natve app.json @@ -1,5 +1,11 @@ { "name": "My Natve app", + "app_type": "native", + "grant_types": [ + "authorization_code", + "implicit", + "refresh_token" + ], "mobile": { "android": { "app_package_name": "com.my.android.id" @@ -8,6 +14,40 @@ "native_social_login": { "google": { "enabled": true + }, + "facebook": { + "enabled": false + }, + "apple": { + "enabled": false + } + }, + "is_first_party": true, + "sso_disabled": false, + "cross_origin_auth": false, + "oidc_conformant": false, + "oidc_backchannel_logout": { + "backchannel_logout_initiators": { + "mode": "custom", + "selected_initiators": [ + "rp-logout", + "idp-logout" + ] + } + }, + "jwt_configuration": { + "lifetime_in_seconds": 36000, + "secret_encoded": false + }, + "token_endpoint_auth_method": "none", + "custom_login_page_on": true, + "oidc_logout": { + "backchannel_logout_initiators": { + "mode": "custom", + "selected_initiators": [ + "rp-logout", + "idp-logout" + ] } } } From 4b2a0abf8631ee293c84faa619799138439c61b1 Mon Sep 17 00:00:00 2001 From: kushalshit27 <43465488+kushalshit27@users.noreply.github.com> Date: Thu, 13 Feb 2025 12:30:59 +0530 Subject: [PATCH 4/6] auth0 from 4.17.0 to 4.18.0 --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 49e09d3b2..2c24b5c14 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ "license": "MIT", "dependencies": { "ajv": "^6.12.6", - "auth0": "^4.17.0", + "auth0": "^4.18.0", "dot-prop": "^5.2.0", "fs-extra": "^10.1.0", "js-yaml": "^4.1.0", @@ -1404,9 +1404,9 @@ "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" }, "node_modules/auth0": { - "version": "4.17.0", - "resolved": "https://registry.npmjs.org/auth0/-/auth0-4.17.0.tgz", - "integrity": "sha512-5X4k+l0D1Xo+SBbgkQogobU6SSW+zDUNWtqa0HsYQTrTVA6CQmLRE0bxzDFS9lnTXGQEQwKXhDMHdksj2csrpg==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/auth0/-/auth0-4.18.0.tgz", + "integrity": "sha512-KuS5JhL3SBySTcJOW5Ksd8WyM5oZ3WXS9sX2PD/r6MqtSoYGjpky1FGlE5wX2jMe5VSQZva72ilUoyiXtaVgJg==", "license": "MIT", "dependencies": { "jose": "^4.13.2", @@ -7547,9 +7547,9 @@ "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" }, "auth0": { - "version": "4.17.0", - "resolved": "https://registry.npmjs.org/auth0/-/auth0-4.17.0.tgz", - "integrity": "sha512-5X4k+l0D1Xo+SBbgkQogobU6SSW+zDUNWtqa0HsYQTrTVA6CQmLRE0bxzDFS9lnTXGQEQwKXhDMHdksj2csrpg==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/auth0/-/auth0-4.18.0.tgz", + "integrity": "sha512-KuS5JhL3SBySTcJOW5Ksd8WyM5oZ3WXS9sX2PD/r6MqtSoYGjpky1FGlE5wX2jMe5VSQZva72ilUoyiXtaVgJg==", "requires": { "jose": "^4.13.2", "undici-types": "^6.15.0", diff --git a/package.json b/package.json index 2c4db48f6..4f6993ef2 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "homepage": "https://github.com/auth0/auth0-deploy-cli#readme", "dependencies": { "ajv": "^6.12.6", - "auth0": "^4.17.0", + "auth0": "^4.18.0", "dot-prop": "^5.2.0", "fs-extra": "^10.1.0", "js-yaml": "^4.1.0", From 1382c3a8c77f12bdf8266c880c1d2cd87d323d7c Mon Sep 17 00:00:00 2001 From: kushalshit27 <43465488+kushalshit27@users.noreply.github.com> Date: Mon, 17 Feb 2025 10:40:54 +0530 Subject: [PATCH 5/6] Fix typo in tenant.yaml: corrected 'My Natve app' to 'My Native app' --- .../directory/clients/{My Natve app.json => My Native app.json} | 2 +- examples/yaml/tenant.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename examples/directory/clients/{My Natve app.json => My Native app.json} (97%) diff --git a/examples/directory/clients/My Natve app.json b/examples/directory/clients/My Native app.json similarity index 97% rename from examples/directory/clients/My Natve app.json rename to examples/directory/clients/My Native app.json index 4e1b30226..b18167f88 100644 --- a/examples/directory/clients/My Natve app.json +++ b/examples/directory/clients/My Native app.json @@ -1,5 +1,5 @@ { - "name": "My Natve app", + "name": "My Native app", "app_type": "native", "grant_types": [ "authorization_code", diff --git a/examples/yaml/tenant.yaml b/examples/yaml/tenant.yaml index e16681124..36f91f507 100644 --- a/examples/yaml/tenant.yaml +++ b/examples/yaml/tenant.yaml @@ -29,7 +29,7 @@ clients: app_type: "non_interactive" # Add other client settings https://auth0.com/docs/api/management/v2#!/Clients/post_clients - - name: "My Natve app" + name: "My Native app" app_type: native mobile: android: From cb63c48cce2551678c6f93b852c87344ed8f79f1 Mon Sep 17 00:00:00 2001 From: kushalshit27 <43465488+kushalshit27@users.noreply.github.com> Date: Mon, 17 Feb 2025 10:49:12 +0530 Subject: [PATCH 6/6] Add test for creating a native client in clients handler --- test/tools/auth0/handlers/clients.tests.js | 54 ++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/test/tools/auth0/handlers/clients.tests.js b/test/tools/auth0/handlers/clients.tests.js index ce8389961..ce9b97680 100644 --- a/test/tools/auth0/handlers/clients.tests.js +++ b/test/tools/auth0/handlers/clients.tests.js @@ -13,6 +13,22 @@ const pool = { }, }; +const someNativeClient = { + name: 'someNativeClient', + app_type: 'native', + grant_types: ['authorization_code', 'implicit', 'refresh_token'], + mobile: { + android: { + app_package_name: 'com.my.android.id', + }, + }, + native_social_login: { + google: { + enabled: true, + }, + }, +}; + describe('#clients handler', () => { const config = function (key) { return config.data && config.data[key]; @@ -80,6 +96,44 @@ describe('#clients handler', () => { await stageFn.apply(handler, [{ clients: [{ name: 'someClient' }] }]); }); + it('should create native client', async () => { + const auth0 = { + clients: { + create: function (data) { + (() => expect(this).to.not.be.undefined)(); + expect(data).to.be.an('object'); + expect(data.name).to.equal('someNativeClient'); + expect(data.app_type).to.equal('native'); + expect(data.grant_types).to.deep.equal([ + 'authorization_code', + 'implicit', + 'refresh_token', + ]); + expect(data.mobile).to.deep.equal({ + android: { + app_package_name: 'com.my.android.id', + }, + }); + expect(data.native_social_login).to.deep.equal({ + google: { + enabled: true, + }, + }); + return Promise.resolve({ data }); + }, + update: () => Promise.resolve({ data: [] }), + delete: () => Promise.resolve({ data: [] }), + getAll: (params) => mockPagedData(params, 'clients', []), + }, + pool, + }; + + const handler = new clients.default({ client: pageClient(auth0), config }); + const stageFn = Object.getPrototypeOf(handler).processChanges; + + await stageFn.apply(handler, [{ clients: [someNativeClient] }]); + }); + it('should get clients', async () => { const auth0 = { clients: {