From 9e11dfca4021ef93c03ea95661624ccdd0077392 Mon Sep 17 00:00:00 2001 From: keshan Date: Wed, 2 Dec 2020 11:23:30 +0530 Subject: [PATCH 1/4] Introducing env prop to have configurable authentication env --- app-config.yaml | 5 +- packages/core/config.d.ts | 7 ++ packages/core/src/api-wrappers/defaultApis.ts | 78 +++++++++++++++---- 3 files changed, 71 insertions(+), 19 deletions(-) diff --git a/app-config.yaml b/app-config.yaml index 54d564de7d..2850145eef 100644 --- a/app-config.yaml +++ b/app-config.yaml @@ -190,6 +190,7 @@ scaffolder: token: $env: AZURE_TOKEN auth: + environment: development ### Providing an auth.session.secret will enable session support in the auth-backend # session: # secret: custom session secret @@ -203,9 +204,9 @@ auth: github: development: clientId: - $env: AUTH_GITHUB_CLIENT_ID + $env: 688ff0b3ac05066bbfbd clientSecret: - $env: AUTH_GITHUB_CLIENT_SECRET + $env: e054385169884b9618fd7ffa3e4d97b168708ca1 enterpriseInstanceUrl: $env: AUTH_GITHUB_ENTERPRISE_INSTANCE_URL gitlab: diff --git a/packages/core/config.d.ts b/packages/core/config.d.ts index 014e4ac934..e13c00e561 100644 --- a/packages/core/config.d.ts +++ b/packages/core/config.d.ts @@ -62,4 +62,11 @@ export interface Config { timezone: string; }[]; }; + auth?: { + /** + * The environment config added to be able to change the authentication environment. + * @visibility frontend + */ + environment?: string; + }; } diff --git a/packages/core/src/api-wrappers/defaultApis.ts b/packages/core/src/api-wrappers/defaultApis.ts index 1f18f54d2a..58cf50fca0 100644 --- a/packages/core/src/api-wrappers/defaultApis.ts +++ b/packages/core/src/api-wrappers/defaultApis.ts @@ -78,30 +78,42 @@ export const defaultApis = [ deps: { discoveryApi: discoveryApiRef, oauthRequestApi: oauthRequestApiRef, + configApi: configApiRef, }, - factory: ({ discoveryApi, oauthRequestApi }) => - GoogleAuth.create({ discoveryApi, oauthRequestApi }), + factory: ({ discoveryApi, oauthRequestApi, configApi }) => + GoogleAuth.create({ + discoveryApi, + oauthRequestApi, + environment: configApi.getString('auth.environment'), + }), }), createApiFactory({ api: microsoftAuthApiRef, deps: { discoveryApi: discoveryApiRef, oauthRequestApi: oauthRequestApiRef, + configApi: configApiRef, }, - factory: ({ discoveryApi, oauthRequestApi }) => - MicrosoftAuth.create({ discoveryApi, oauthRequestApi }), + factory: ({ discoveryApi, oauthRequestApi, configApi }) => + MicrosoftAuth.create({ + discoveryApi, + oauthRequestApi, + environment: configApi.getString('auth.environment'), + }), }), createApiFactory({ api: githubAuthApiRef, deps: { discoveryApi: discoveryApiRef, oauthRequestApi: oauthRequestApiRef, + configApi: configApiRef, }, - factory: ({ discoveryApi, oauthRequestApi }) => + factory: ({ discoveryApi, oauthRequestApi, configApi }) => GithubAuth.create({ discoveryApi, oauthRequestApi, defaultScopes: ['read:user'], + environment: configApi.getString('auth.environment'), }), }), createApiFactory({ @@ -109,60 +121,91 @@ export const defaultApis = [ deps: { discoveryApi: discoveryApiRef, oauthRequestApi: oauthRequestApiRef, + configApi: configApiRef, }, - factory: ({ discoveryApi, oauthRequestApi }) => - OktaAuth.create({ discoveryApi, oauthRequestApi }), + factory: ({ discoveryApi, oauthRequestApi, configApi }) => + OktaAuth.create({ + discoveryApi, + oauthRequestApi, + environment: configApi.getString('auth.environment'), + }), }), createApiFactory({ api: gitlabAuthApiRef, deps: { discoveryApi: discoveryApiRef, oauthRequestApi: oauthRequestApiRef, + configApi: configApiRef, }, - factory: ({ discoveryApi, oauthRequestApi }) => - GitlabAuth.create({ discoveryApi, oauthRequestApi }), + factory: ({ discoveryApi, oauthRequestApi, configApi }) => + GitlabAuth.create({ + discoveryApi, + oauthRequestApi, + environment: configApi.getString('auth.environment'), + }), }), createApiFactory({ api: auth0AuthApiRef, deps: { discoveryApi: discoveryApiRef, oauthRequestApi: oauthRequestApiRef, + configApi: configApiRef, }, - factory: ({ discoveryApi, oauthRequestApi }) => - Auth0Auth.create({ discoveryApi, oauthRequestApi }), + factory: ({ discoveryApi, oauthRequestApi, configApi }) => + Auth0Auth.create({ + discoveryApi, + oauthRequestApi, + environment: configApi.getString('auth.environment'), + }), }), createApiFactory({ api: oauth2ApiRef, deps: { discoveryApi: discoveryApiRef, oauthRequestApi: oauthRequestApiRef, + configApi: configApiRef, }, - factory: ({ discoveryApi, oauthRequestApi }) => - OAuth2.create({ discoveryApi, oauthRequestApi }), + factory: ({ discoveryApi, oauthRequestApi, configApi }) => + OAuth2.create({ + discoveryApi, + oauthRequestApi, + environment: configApi.getString('auth.environment'), + }), }), createApiFactory({ api: samlAuthApiRef, deps: { discoveryApi: discoveryApiRef, + configApi: configApiRef, }, - factory: ({ discoveryApi }) => SamlAuth.create({ discoveryApi }), + factory: ({ discoveryApi, configApi }) => + SamlAuth.create({ + discoveryApi, + environment: configApi.getString('auth.environment'), + }), }), createApiFactory({ api: oneloginAuthApiRef, deps: { discoveryApi: discoveryApiRef, oauthRequestApi: oauthRequestApiRef, + configApi: configApiRef, }, - factory: ({ discoveryApi, oauthRequestApi }) => - OneLoginAuth.create({ discoveryApi, oauthRequestApi }), + factory: ({ discoveryApi, oauthRequestApi, configApi }) => + OneLoginAuth.create({ + discoveryApi, + oauthRequestApi, + environment: configApi.getString('auth.environment'), + }), }), createApiFactory({ api: oidcAuthApiRef, deps: { discoveryApi: discoveryApiRef, oauthRequestApi: oauthRequestApiRef, + configApi: configApiRef, }, - factory: ({ discoveryApi, oauthRequestApi }) => + factory: ({ discoveryApi, oauthRequestApi, configApi }) => OAuth2.create({ discoveryApi, oauthRequestApi, @@ -171,6 +214,7 @@ export const defaultApis = [ title: 'Your Identity Provider', icon: OAuth2Icon, }, + environment: configApi.getString('auth.environment'), }), }), ]; From 1f6a0a2803028f15f1cf951a9f2f48f2747f8102 Mon Sep 17 00:00:00 2001 From: keshan Date: Wed, 2 Dec 2020 11:35:11 +0530 Subject: [PATCH 2/4] reverted back the github config value --- app-config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app-config.yaml b/app-config.yaml index 2850145eef..7fc041bf13 100644 --- a/app-config.yaml +++ b/app-config.yaml @@ -204,9 +204,9 @@ auth: github: development: clientId: - $env: 688ff0b3ac05066bbfbd + $env: AUTH_GITHUB_CLIENT_ID clientSecret: - $env: e054385169884b9618fd7ffa3e4d97b168708ca1 + $env: AUTH_GITHUB_CLIENT_SECRET enterpriseInstanceUrl: $env: AUTH_GITHUB_ENTERPRISE_INSTANCE_URL gitlab: From ff243ce96a539500bbdfa8ed4cf73802606de8ff Mon Sep 17 00:00:00 2001 From: keshan Date: Wed, 2 Dec 2020 11:35:49 +0530 Subject: [PATCH 3/4] changeset added with minor impact --- .changeset/unlucky-kiwis-rescue.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/unlucky-kiwis-rescue.md diff --git a/.changeset/unlucky-kiwis-rescue.md b/.changeset/unlucky-kiwis-rescue.md new file mode 100644 index 0000000000..0ac7d8f299 --- /dev/null +++ b/.changeset/unlucky-kiwis-rescue.md @@ -0,0 +1,5 @@ +--- +'@backstage/core': minor +--- + +Introducing env prop to have configurable authentication env From 6a5e3e204f0d9877a969140114458e021b7e6b0b Mon Sep 17 00:00:00 2001 From: keshan Date: Thu, 3 Dec 2020 09:07:04 +0530 Subject: [PATCH 4/4] Updated comments and code to reflect feedbacks --- .changeset/unlucky-kiwis-rescue.md | 11 +++++++++- packages/core/config.d.ts | 8 +++++++- packages/core/src/api-wrappers/defaultApis.ts | 20 +++++++++---------- 3 files changed, 27 insertions(+), 12 deletions(-) diff --git a/.changeset/unlucky-kiwis-rescue.md b/.changeset/unlucky-kiwis-rescue.md index 0ac7d8f299..71afaeb44a 100644 --- a/.changeset/unlucky-kiwis-rescue.md +++ b/.changeset/unlucky-kiwis-rescue.md @@ -2,4 +2,13 @@ '@backstage/core': minor --- -Introducing env prop to have configurable authentication env +Introducing a new optional property within `app-config.yaml` called `auth.environment` to have configurable environment value for `auth.providers` + +**Default Value:** 'development' + +**Optional Values:** 'production' | 'development' + +**Migration-steps:** + +- To override the default value, one could simply introduce the new property `environment` within the `auth` section of the `config.yaml` +- re-run the build to reflect the changed configs diff --git a/packages/core/config.d.ts b/packages/core/config.d.ts index e13c00e561..a6f95ae71c 100644 --- a/packages/core/config.d.ts +++ b/packages/core/config.d.ts @@ -62,9 +62,15 @@ export interface Config { timezone: string; }[]; }; + + /** + * Configuration that provides information on available authentication providers configured for app + */ auth?: { /** - * The environment config added to be able to change the authentication environment. + * The 'environment' attribute added as an optional parameter to have configurable environment value for `auth.providers`. + * default value: 'development' + * optional values: 'development' | 'production' * @visibility frontend */ environment?: string; diff --git a/packages/core/src/api-wrappers/defaultApis.ts b/packages/core/src/api-wrappers/defaultApis.ts index 58cf50fca0..d044b50b7a 100644 --- a/packages/core/src/api-wrappers/defaultApis.ts +++ b/packages/core/src/api-wrappers/defaultApis.ts @@ -84,7 +84,7 @@ export const defaultApis = [ GoogleAuth.create({ discoveryApi, oauthRequestApi, - environment: configApi.getString('auth.environment'), + environment: configApi.getOptionalString('auth.environment'), }), }), createApiFactory({ @@ -98,7 +98,7 @@ export const defaultApis = [ MicrosoftAuth.create({ discoveryApi, oauthRequestApi, - environment: configApi.getString('auth.environment'), + environment: configApi.getOptionalString('auth.environment'), }), }), createApiFactory({ @@ -113,7 +113,7 @@ export const defaultApis = [ discoveryApi, oauthRequestApi, defaultScopes: ['read:user'], - environment: configApi.getString('auth.environment'), + environment: configApi.getOptionalString('auth.environment'), }), }), createApiFactory({ @@ -127,7 +127,7 @@ export const defaultApis = [ OktaAuth.create({ discoveryApi, oauthRequestApi, - environment: configApi.getString('auth.environment'), + environment: configApi.getOptionalString('auth.environment'), }), }), createApiFactory({ @@ -141,7 +141,7 @@ export const defaultApis = [ GitlabAuth.create({ discoveryApi, oauthRequestApi, - environment: configApi.getString('auth.environment'), + environment: configApi.getOptionalString('auth.environment'), }), }), createApiFactory({ @@ -155,7 +155,7 @@ export const defaultApis = [ Auth0Auth.create({ discoveryApi, oauthRequestApi, - environment: configApi.getString('auth.environment'), + environment: configApi.getOptionalString('auth.environment'), }), }), createApiFactory({ @@ -169,7 +169,7 @@ export const defaultApis = [ OAuth2.create({ discoveryApi, oauthRequestApi, - environment: configApi.getString('auth.environment'), + environment: configApi.getOptionalString('auth.environment'), }), }), createApiFactory({ @@ -181,7 +181,7 @@ export const defaultApis = [ factory: ({ discoveryApi, configApi }) => SamlAuth.create({ discoveryApi, - environment: configApi.getString('auth.environment'), + environment: configApi.getOptionalString('auth.environment'), }), }), createApiFactory({ @@ -195,7 +195,7 @@ export const defaultApis = [ OneLoginAuth.create({ discoveryApi, oauthRequestApi, - environment: configApi.getString('auth.environment'), + environment: configApi.getOptionalString('auth.environment'), }), }), createApiFactory({ @@ -214,7 +214,7 @@ export const defaultApis = [ title: 'Your Identity Provider', icon: OAuth2Icon, }, - environment: configApi.getString('auth.environment'), + environment: configApi.getOptionalString('auth.environment'), }), }), ];