From 5bc590c7bd3d24d4ba5d092c680cb61105cdaaa3 Mon Sep 17 00:00:00 2001 From: Sachin Maheshwari Date: Mon, 16 Jul 2018 17:49:55 +0530 Subject: [PATCH 1/4] m2m implementation with circleci ver 2. --- config/custom-environment-variables.js | 5 +++++ config/test.js | 5 +++++ deploy.sh | 28 +++++++++++++++++++++++++- package.json | 3 ++- src/handlers/util.js | 15 ++++---------- 5 files changed, 43 insertions(+), 13 deletions(-) diff --git a/config/custom-environment-variables.js b/config/custom-environment-variables.js index b4f0554..15331c0 100644 --- a/config/custom-environment-variables.js +++ b/config/custom-environment-variables.js @@ -20,4 +20,9 @@ module.exports = { TC_SLACK_WEBHOOK_URL: 'TC_SLACK_WEBHOOK_URL', SYSTEM_USER_CLIENT_ID: 'SYSTEM_USER_CLIENT_ID', SYSTEM_USER_CLIENT_SECRET: 'SYSTEM_USER_CLIENT_SECRET', + AUTH0_URL: 'AUTH0_URL', + AUTH0_AUDIENCE: 'AUTH0_AUDIENCE', + TOKEN_CACHE_TIME: 'TOKEN_CACHE_TIME', + AUTH0_CLIENT_ID: 'AUTH0_CLIENT_ID', + AUTH0_CLIENT_SECRET: 'AUTH0_CLIENT_SECRET', }; diff --git a/config/test.js b/config/test.js index 96a0382..6fb73e3 100644 --- a/config/test.js +++ b/config/test.js @@ -23,4 +23,9 @@ module.exports = { }, TC_SLACK_WEBHOOK_URL: 'http://localhost:3001/slack', API_BASE_URL: 'http://localhost:3001', + AUTH0_URL: process.env.DEV_AUTH0_URL || '', + AUTH0_AUDIENCE: process.env.DEV_AUTH0_AUDIENCE || '', + TOKEN_CACHE_TIME: process.env.DEV_TOKEN_CACHE_TIME || 86400000, + AUTH0_CLIENT_ID: process.env.DEV_AUTH0_CLIENT_ID, + AUTH0_CLIENT_SECRET: process.env.DEV_AUTH0_CLIENT_SECRET, }; diff --git a/deploy.sh b/deploy.sh index 8708f47..4f8fbf7 100755 --- a/deploy.sh +++ b/deploy.sh @@ -70,6 +70,26 @@ make_task_def(){ { "name": "TC_SLACK_WEBHOOK_URL", "value": "%s" + }, + { + "name": "AUTH0_URL", + "value": "%s" + }, + { + "name": "AUTH0_AUDIENCE", + "value": "%s" + }, + { + "name": "AUTH0_CLIENT_ID", + "value": "%s" + }, + { + "name": "AUTH0_CLIENT_SECRET", + "value": "%s" + }, + { + "name": "TOKEN_CACHE_TIME", + "value": "%s" } ], "logConfiguration": { @@ -86,13 +106,19 @@ make_task_def(){ CAPTURE_LOGS=$(eval "echo \$${ENV}_CAPTURE_LOGS") LOGENTRIES_TOKEN=$(eval "echo \$${ENV}_LOGENTRIES_TOKEN") LOG_LEVEL=$(eval "echo \$${ENV}_LOG_LEVEL") + AUTH0_URL=$(eval "echo \$${ENV}_AUTH0_URL") + AUTH0_AUDIENCE=$(eval "echo \$${ENV}_AUTH0_AUDIENCE") + TOKEN_CACHE_TIME=$(eval "echo \$${ENV}_TOKEN_CACHE_TIME") + AUTH0_CLIENT_ID=$(eval "echo \$${ENV}_AUTH0_CLIENT_ID") + AUTH0_CLIENT_SECRET=$(eval "echo \$${ENV}_AUTH0_CLIENT_SECRET") + if [ "$ENV" = "PROD" ]; then NODE_ENV=production elif [ "$ENV" = "DEV" ]; then NODE_ENV=development fi - task_def=$(printf "$task_template" $ACCOUNT_ID $AWS_REGION $AWS_REPOSITORY $CIRCLE_SHA1 $NODE_ENV $LOG_LEVEL $CAPTURE_LOGS $LOGENTRIES_TOKEN $RABBITMQ_URL $SYSTEM_USER_CLIENT_ID $SYSTEM_USER_CLIENT_SECRET $TC_SLACK_WEBHOOK_URL $AWS_ECS_CLUSTER $AWS_REGION $NODE_ENV) + task_def=$(printf "$task_template" $ACCOUNT_ID $AWS_REGION $AWS_REPOSITORY $CIRCLE_SHA1 $NODE_ENV $LOG_LEVEL $CAPTURE_LOGS $LOGENTRIES_TOKEN $RABBITMQ_URL $SYSTEM_USER_CLIENT_ID $SYSTEM_USER_CLIENT_SECRET $TC_SLACK_WEBHOOK_URL "$AUTH0_URL" "$AUTH0_AUDIENCE" $AUTH0_CLIENT_ID "$AUTH0_CLIENT_SECRET" $TOKEN_CACHE_TIME $AWS_ECS_CLUSTER $AWS_REGION $NODE_ENV) } push_ecr_image(){ diff --git a/package.json b/package.json index 67f1978..3672438 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,8 @@ "config": "^1.24.0", "jackrabbit": "^4.3.0", "lodash": "^4.16.6", - "request": "^2.78.0" + "request": "^2.78.0", + "tc-core-library-js": "appirio-tech/tc-core-library-js.git#v2.3" }, "devDependencies": { "babel-cli": "^6.9.0", diff --git a/src/handlers/util.js b/src/handlers/util.js index b590709..9a264b6 100644 --- a/src/handlers/util.js +++ b/src/handlers/util.js @@ -11,6 +11,9 @@ const _ = require('lodash'); const config = require('config'); const Promise = require('bluebird'); const request = require('request'); +const tcCoreLibAuth = require('tc-core-library-js').auth; + +const M2m = tcCoreLibAuth.m2m(config); /** * Makes a GET request to the API server @@ -39,17 +42,7 @@ function requestPromise(options, cb = null) { } const getSystemUserToken = Promise.coroutine(function* () { - const formData = { - clientId: config.get('SYSTEM_USER_CLIENT_ID'), - secret: config.get('SYSTEM_USER_CLIENT_SECRET'), - }; - return yield requestPromise( - { - method: 'POST', - url: `${config.get('API_BASE_URL')}/v3/authorizations/`, - form: formData, - }, - (data, resolve) => resolve(data.result.content.token)); + return yield M2m.getMachineToken(config.AUTH0_CLIENT_ID, config.AUTH0_CLIENT_SECRET); }); /** From 5195d9d53e474e3685ac2d74426aa9150c535c06 Mon Sep 17 00:00:00 2001 From: Sachin Maheshwari Date: Mon, 16 Jul 2018 18:01:35 +0530 Subject: [PATCH 2/4] testing with latest core lib version. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3672438..6d2fd7b 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "jackrabbit": "^4.3.0", "lodash": "^4.16.6", "request": "^2.78.0", - "tc-core-library-js": "appirio-tech/tc-core-library-js.git#v2.3" + "tc-core-library-js": "appirio-tech/tc-core-library-js.git#v2.4" }, "devDependencies": { "babel-cli": "^6.9.0", From fb8a525d5c2c7f394a1f892aa6b6a9eb97ec5204 Mon Sep 17 00:00:00 2001 From: Sachin Maheshwari Date: Tue, 17 Jul 2018 10:21:04 +0530 Subject: [PATCH 3/4] unit test cases are not working with latest core 2.4, reverting to core lib 2.3, which is functionality wise. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 6d2fd7b..3672438 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "jackrabbit": "^4.3.0", "lodash": "^4.16.6", "request": "^2.78.0", - "tc-core-library-js": "appirio-tech/tc-core-library-js.git#v2.4" + "tc-core-library-js": "appirio-tech/tc-core-library-js.git#v2.3" }, "devDependencies": { "babel-cli": "^6.9.0", From 2359fae73fd08018904de0f4860393c0a3d083c5 Mon Sep 17 00:00:00 2001 From: Sachin Maheshwari Date: Tue, 17 Jul 2018 10:28:54 +0530 Subject: [PATCH 4/4] cleaning up static client id and secret. --- config/custom-environment-variables.js | 2 -- config/default.js | 3 --- deploy.sh | 10 +--------- 3 files changed, 1 insertion(+), 14 deletions(-) diff --git a/config/custom-environment-variables.js b/config/custom-environment-variables.js index 15331c0..07e29b9 100644 --- a/config/custom-environment-variables.js +++ b/config/custom-environment-variables.js @@ -18,8 +18,6 @@ module.exports = { URL: 'RABBITMQ_URL', }, TC_SLACK_WEBHOOK_URL: 'TC_SLACK_WEBHOOK_URL', - SYSTEM_USER_CLIENT_ID: 'SYSTEM_USER_CLIENT_ID', - SYSTEM_USER_CLIENT_SECRET: 'SYSTEM_USER_CLIENT_SECRET', AUTH0_URL: 'AUTH0_URL', AUTH0_AUDIENCE: 'AUTH0_AUDIENCE', TOKEN_CACHE_TIME: 'TOKEN_CACHE_TIME', diff --git a/config/default.js b/config/default.js index bf0e7ee..62b9fd8 100644 --- a/config/default.js +++ b/config/default.js @@ -33,9 +33,6 @@ module.exports = { // The base url to the project/user API server API_BASE_URL: 'http://localhost:3001', - // Id and secret to generate token to make calls as system admin user - SYSTEM_USER_CLIENT_ID: '', - SYSTEM_USER_CLIENT_SECRET: '', // Disable delay exchange and use direct instead ( delete existing delay exchnge after changing) DISABLE_DELAY_EXCHANGE: false, diff --git a/deploy.sh b/deploy.sh index 4f8fbf7..c6e5c74 100755 --- a/deploy.sh +++ b/deploy.sh @@ -59,14 +59,6 @@ make_task_def(){ "name": "RABBITMQ_URL", "value": "%s" }, - { - "name": "SYSTEM_USER_CLIENT_ID", - "value": "%s" - }, - { - "name": "SYSTEM_USER_CLIENT_SECRET", - "value": "%s" - }, { "name": "TC_SLACK_WEBHOOK_URL", "value": "%s" @@ -118,7 +110,7 @@ make_task_def(){ NODE_ENV=development fi - task_def=$(printf "$task_template" $ACCOUNT_ID $AWS_REGION $AWS_REPOSITORY $CIRCLE_SHA1 $NODE_ENV $LOG_LEVEL $CAPTURE_LOGS $LOGENTRIES_TOKEN $RABBITMQ_URL $SYSTEM_USER_CLIENT_ID $SYSTEM_USER_CLIENT_SECRET $TC_SLACK_WEBHOOK_URL "$AUTH0_URL" "$AUTH0_AUDIENCE" $AUTH0_CLIENT_ID "$AUTH0_CLIENT_SECRET" $TOKEN_CACHE_TIME $AWS_ECS_CLUSTER $AWS_REGION $NODE_ENV) + task_def=$(printf "$task_template" $ACCOUNT_ID $AWS_REGION $AWS_REPOSITORY $CIRCLE_SHA1 $NODE_ENV $LOG_LEVEL $CAPTURE_LOGS $LOGENTRIES_TOKEN $RABBITMQ_URL $TC_SLACK_WEBHOOK_URL "$AUTH0_URL" "$AUTH0_AUDIENCE" $AUTH0_CLIENT_ID "$AUTH0_CLIENT_SECRET" $TOKEN_CACHE_TIME $AWS_ECS_CLUSTER $AWS_REGION $NODE_ENV) } push_ecr_image(){