From e50277f9ab1b89f2f83f3541374c22f918286745 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Wed, 31 Jul 2019 13:14:19 +0200 Subject: [PATCH 001/197] Update version numbers for bugfix release 0.22.1 --- pom.xml | 2 +- powerauth-data-adapter-client/pom.xml | 8 +++---- powerauth-data-adapter-model/pom.xml | 6 ++--- powerauth-mtoken-model/pom.xml | 4 ++-- powerauth-nextstep-client/pom.xml | 6 ++--- powerauth-nextstep-model/pom.xml | 4 ++-- powerauth-nextstep/pom.xml | 6 ++--- .../pom.xml | 6 ++--- .../pom.xml | 8 +++---- powerauth-webflow-authentication-form/pom.xml | 6 ++--- powerauth-webflow-authentication-init/pom.xml | 6 ++--- .../pom.xml | 6 ++--- .../pom.xml | 8 +++---- .../pom.xml | 6 ++--- powerauth-webflow-authentication-sms/pom.xml | 8 +++---- powerauth-webflow-authentication/pom.xml | 10 ++++---- powerauth-webflow-client/pom.xml | 6 ++--- powerauth-webflow-i18n/pom.xml | 4 ++-- powerauth-webflow-resources/pom.xml | 6 ++--- powerauth-webflow/package-lock.json | 2 +- powerauth-webflow/package.json | 2 +- powerauth-webflow/pom.xml | 24 +++++++++---------- 22 files changed, 72 insertions(+), 72 deletions(-) diff --git a/pom.xml b/pom.xml index 5c77123c0..83217539e 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ io.getlime.security powerauth-webflow-parent - 0.22.0 + 0.22.1 pom diff --git a/powerauth-data-adapter-client/pom.xml b/powerauth-data-adapter-client/pom.xml index 794b664b6..a4681e0b9 100644 --- a/powerauth-data-adapter-client/pom.xml +++ b/powerauth-data-adapter-client/pom.xml @@ -8,13 +8,13 @@ powerauth-data-adapter-client powerauth-data-adapter-client io.getlime.security - 0.22.0 + 0.22.1 jar powerauth-webflow-parent io.getlime.security - 0.22.0 + 0.22.1 ../pom.xml @@ -37,12 +37,12 @@ io.getlime.security powerauth-data-adapter-model - 0.22.0 + 0.22.1 io.getlime.security powerauth-nextstep-model - 0.22.0 + 0.22.1 diff --git a/powerauth-data-adapter-model/pom.xml b/powerauth-data-adapter-model/pom.xml index 3ab64b4f1..21bd9a5be 100644 --- a/powerauth-data-adapter-model/pom.xml +++ b/powerauth-data-adapter-model/pom.xml @@ -8,13 +8,13 @@ powerauth-data-adapter-model powerauth-data-adapter-model io.getlime.security - 0.22.0 + 0.22.1 jar powerauth-webflow-parent io.getlime.security - 0.22.0 + 0.22.1 ../pom.xml @@ -27,7 +27,7 @@ io.getlime.security powerauth-nextstep-model - 0.22.0 + 0.22.1 diff --git a/powerauth-mtoken-model/pom.xml b/powerauth-mtoken-model/pom.xml index 097d7943e..5a657f1bd 100644 --- a/powerauth-mtoken-model/pom.xml +++ b/powerauth-mtoken-model/pom.xml @@ -6,12 +6,12 @@ 4.0.0 powerauth-mtoken-model io.getlime.security - 0.22.0 + 0.22.1 powerauth-webflow-parent io.getlime.security - 0.22.0 + 0.22.1 ../pom.xml diff --git a/powerauth-nextstep-client/pom.xml b/powerauth-nextstep-client/pom.xml index f360bc755..596f7604e 100644 --- a/powerauth-nextstep-client/pom.xml +++ b/powerauth-nextstep-client/pom.xml @@ -8,14 +8,14 @@ powerauth-webflow-parent io.getlime.security - 0.22.0 + 0.22.1 ../pom.xml powerauth-nextstep-client powerauth-nextstep-client io.getlime.security - 0.22.0 + 0.22.1 jar @@ -37,7 +37,7 @@ io.getlime.security powerauth-nextstep-model - 0.22.0 + 0.22.1 diff --git a/powerauth-nextstep-model/pom.xml b/powerauth-nextstep-model/pom.xml index 349ad3896..b67e23a67 100644 --- a/powerauth-nextstep-model/pom.xml +++ b/powerauth-nextstep-model/pom.xml @@ -8,13 +8,13 @@ powerauth-nextstep-model powerauth-nextstep-model io.getlime.security - 0.22.0 + 0.22.1 jar io.getlime.security powerauth-webflow-parent - 0.22.0 + 0.22.1 ../pom.xml diff --git a/powerauth-nextstep/pom.xml b/powerauth-nextstep/pom.xml index 3e35d56e6..16f49c7fb 100644 --- a/powerauth-nextstep/pom.xml +++ b/powerauth-nextstep/pom.xml @@ -7,13 +7,13 @@ powerauth-nextstep io.getlime.security PowerAuth 2.0 Next Step Server - 0.22.0 + 0.22.1 war io.getlime.security powerauth-webflow-parent - 0.22.0 + 0.22.1 ../pom.xml @@ -42,7 +42,7 @@ io.getlime.security powerauth-nextstep-model - 0.22.0 + 0.22.1 diff --git a/powerauth-webflow-authentication-approval-sca/pom.xml b/powerauth-webflow-authentication-approval-sca/pom.xml index 519211b12..a1a02eaff 100644 --- a/powerauth-webflow-authentication-approval-sca/pom.xml +++ b/powerauth-webflow-authentication-approval-sca/pom.xml @@ -8,20 +8,20 @@ powerauth-webflow-parent io.getlime.security - 0.22.0 + 0.22.1 ../pom.xml powerauth-webflow-authentication-approval-sca powerauth-webflow-authentication-approval-sca io.getlime.security - 0.22.0 + 0.22.1 io.getlime.security powerauth-webflow-authentication - 0.22.0 + 0.22.1 diff --git a/powerauth-webflow-authentication-consent/pom.xml b/powerauth-webflow-authentication-consent/pom.xml index 0b390fd9f..3cb5434d1 100644 --- a/powerauth-webflow-authentication-consent/pom.xml +++ b/powerauth-webflow-authentication-consent/pom.xml @@ -24,25 +24,25 @@ powerauth-webflow-parent io.getlime.security - 0.22.0 + 0.22.1 ../pom.xml powerauth-webflow-authentication-consent powerauth-webflow-authentication-consent io.getlime.security - 0.22.0 + 0.22.1 io.getlime.security powerauth-webflow-authentication - 0.22.0 + 0.22.1 io.getlime.security powerauth-data-adapter-client - 0.22.0 + 0.22.1 com.googlecode.owasp-java-html-sanitizer diff --git a/powerauth-webflow-authentication-form/pom.xml b/powerauth-webflow-authentication-form/pom.xml index f98171cbb..bcbc0d93e 100644 --- a/powerauth-webflow-authentication-form/pom.xml +++ b/powerauth-webflow-authentication-form/pom.xml @@ -8,20 +8,20 @@ powerauth-webflow-parent io.getlime.security - 0.22.0 + 0.22.1 ../pom.xml powerauth-webflow-authentication-form powerauth-webflow-authentication-form io.getlime.security - 0.22.0 + 0.22.1 io.getlime.security powerauth-webflow-authentication - 0.22.0 + 0.22.1 org.bouncycastle diff --git a/powerauth-webflow-authentication-init/pom.xml b/powerauth-webflow-authentication-init/pom.xml index 5e3465996..392fcd0db 100644 --- a/powerauth-webflow-authentication-init/pom.xml +++ b/powerauth-webflow-authentication-init/pom.xml @@ -8,20 +8,20 @@ powerauth-webflow-parent io.getlime.security - 0.22.0 + 0.22.1 ../pom.xml powerauth-webflow-authentication-init powerauth-webflow-authentication-init io.getlime.security - 0.22.0 + 0.22.1 io.getlime.security powerauth-webflow-authentication - 0.22.0 + 0.22.1 diff --git a/powerauth-webflow-authentication-login-sca/pom.xml b/powerauth-webflow-authentication-login-sca/pom.xml index 4db800109..35348c015 100644 --- a/powerauth-webflow-authentication-login-sca/pom.xml +++ b/powerauth-webflow-authentication-login-sca/pom.xml @@ -8,20 +8,20 @@ powerauth-webflow-parent io.getlime.security - 0.22.0 + 0.22.1 ../pom.xml powerauth-webflow-authentication-login-sca powerauth-webflow-authentication-login-sca io.getlime.security - 0.22.0 + 0.22.1 io.getlime.security powerauth-webflow-authentication - 0.22.0 + 0.22.1 io.getlime.security diff --git a/powerauth-webflow-authentication-mtoken/pom.xml b/powerauth-webflow-authentication-mtoken/pom.xml index 6f52d1251..f34e75c95 100644 --- a/powerauth-webflow-authentication-mtoken/pom.xml +++ b/powerauth-webflow-authentication-mtoken/pom.xml @@ -24,14 +24,14 @@ powerauth-webflow-parent io.getlime.security - 0.22.0 + 0.22.1 ../pom.xml powerauth-webflow-authentication-mtoken powerauth-webflow-authentication-mtoken io.getlime.security - 0.22.0 + 0.22.1 @@ -50,7 +50,7 @@ io.getlime.security powerauth-webflow-authentication - 0.22.0 + 0.22.1 io.getlime.security @@ -65,7 +65,7 @@ io.getlime.security powerauth-mtoken-model - 0.22.0 + 0.22.1 diff --git a/powerauth-webflow-authentication-operation-review/pom.xml b/powerauth-webflow-authentication-operation-review/pom.xml index 2215d01bd..cca8c1016 100644 --- a/powerauth-webflow-authentication-operation-review/pom.xml +++ b/powerauth-webflow-authentication-operation-review/pom.xml @@ -24,20 +24,20 @@ powerauth-webflow-parent io.getlime.security - 0.22.0 + 0.22.1 ../pom.xml powerauth-webflow-authentication-operation-review powerauth-webflow-authentication-operation-review io.getlime.security - 0.22.0 + 0.22.1 io.getlime.security powerauth-webflow-authentication - 0.22.0 + 0.22.1 diff --git a/powerauth-webflow-authentication-sms/pom.xml b/powerauth-webflow-authentication-sms/pom.xml index bed0a405a..621c0f937 100644 --- a/powerauth-webflow-authentication-sms/pom.xml +++ b/powerauth-webflow-authentication-sms/pom.xml @@ -24,25 +24,25 @@ powerauth-webflow-parent io.getlime.security - 0.22.0 + 0.22.1 ../pom.xml powerauth-webflow-authentication-sms powerauth-webflow-authentication-sms io.getlime.security - 0.22.0 + 0.22.1 io.getlime.security powerauth-webflow-authentication - 0.22.0 + 0.22.1 io.getlime.security powerauth-data-adapter-client - 0.22.0 + 0.22.1 diff --git a/powerauth-webflow-authentication/pom.xml b/powerauth-webflow-authentication/pom.xml index 48937f5ba..797202c1e 100644 --- a/powerauth-webflow-authentication/pom.xml +++ b/powerauth-webflow-authentication/pom.xml @@ -8,14 +8,14 @@ powerauth-webflow-parent io.getlime.security - 0.22.0 + 0.22.1 ../pom.xml io.getlime.security powerauth-webflow-authentication powerauth-webflow-authentication - 0.22.0 + 0.22.1 jar @@ -41,17 +41,17 @@ io.getlime.security powerauth-data-adapter-client - 0.22.0 + 0.22.1 io.getlime.security powerauth-nextstep-client - 0.22.0 + 0.22.1 io.getlime.security powerauth-webflow-i18n - 0.22.0 + 0.22.1 io.getlime.security diff --git a/powerauth-webflow-client/pom.xml b/powerauth-webflow-client/pom.xml index f51a80b01..6392cb7bb 100644 --- a/powerauth-webflow-client/pom.xml +++ b/powerauth-webflow-client/pom.xml @@ -24,13 +24,13 @@ powerauth-webflow-client io.getlime.security PowerAuth 2.0 Web Flow testing client for OAuth 2.0 dance. - 0.22.0 + 0.22.1 war powerauth-webflow-parent io.getlime.security - 0.22.0 + 0.22.1 ../pom.xml @@ -85,7 +85,7 @@ io.getlime.security powerauth-nextstep-client - 0.22.0 + 0.22.1 diff --git a/powerauth-webflow-i18n/pom.xml b/powerauth-webflow-i18n/pom.xml index bd79a0c9a..ec4576d14 100644 --- a/powerauth-webflow-i18n/pom.xml +++ b/powerauth-webflow-i18n/pom.xml @@ -7,13 +7,13 @@ powerauth-webflow-i18n io.getlime.security PowerAuth 2.0 Next Step Server - 0.22.0 + 0.22.1 jar io.getlime.security powerauth-webflow-parent - 0.22.0 + 0.22.1 ../pom.xml diff --git a/powerauth-webflow-resources/pom.xml b/powerauth-webflow-resources/pom.xml index c319f3da3..055c209bf 100644 --- a/powerauth-webflow-resources/pom.xml +++ b/powerauth-webflow-resources/pom.xml @@ -8,14 +8,14 @@ powerauth-webflow-parent io.getlime.security - 0.22.0 + 0.22.1 ../pom.xml io.getlime.security powerauth-webflow-resources powerauth-webflow-resources - 0.22.0 + 0.22.1 jar @@ -45,7 +45,7 @@ io.getlime.security powerauth-data-adapter-client - 0.22.0 + 0.22.1 diff --git a/powerauth-webflow/package-lock.json b/powerauth-webflow/package-lock.json index 50a69ebeb..524964a8e 100644 --- a/powerauth-webflow/package-lock.json +++ b/powerauth-webflow/package-lock.json @@ -1,6 +1,6 @@ { "name": "powerauth-webflow", - "version": "0.22.0", + "version": "0.22.1", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/powerauth-webflow/package.json b/powerauth-webflow/package.json index e3fee0ee9..8d04cf6df 100644 --- a/powerauth-webflow/package.json +++ b/powerauth-webflow/package.json @@ -1,6 +1,6 @@ { "name": "powerauth-webflow", - "version": "0.22.0", + "version": "0.22.1", "description": "Federated Authentication and Authorization Server for Web", "repository": { "type": "git", diff --git a/powerauth-webflow/pom.xml b/powerauth-webflow/pom.xml index c323980ff..0d84202d7 100644 --- a/powerauth-webflow/pom.xml +++ b/powerauth-webflow/pom.xml @@ -7,14 +7,14 @@ io.getlime.security powerauth-webflow-parent - 0.22.0 + 0.22.1 ../pom.xml powerauth-webflow powerauth-webflow Federated Authentication and Authorization Server for Web - 0.22.0 + 0.22.1 war @@ -103,27 +103,27 @@ io.getlime.security powerauth-webflow-authentication-form - 0.22.0 + 0.22.1 io.getlime.security powerauth-webflow-authentication-login-sca - 0.22.0 + 0.22.1 io.getlime.security powerauth-webflow-authentication-init - 0.22.0 + 0.22.1 io.getlime.security powerauth-webflow-authentication-operation-review - 0.22.0 + 0.22.1 io.getlime.security powerauth-webflow-authentication-mtoken - 0.22.0 + 0.22.1 bcprov-jdk15on @@ -134,27 +134,27 @@ io.getlime.security powerauth-webflow-authentication-sms - 0.22.0 + 0.22.1 io.getlime.security powerauth-webflow-authentication-approval-sca - 0.22.0 + 0.22.1 io.getlime.security powerauth-webflow-authentication-consent - 0.22.0 + 0.22.1 io.getlime.security powerauth-webflow-resources - 0.22.0 + 0.22.1 io.getlime.security powerauth-webflow-i18n - 0.22.0 + 0.22.1 From f82067cfa500cd89b611c864b9342baba28e3774 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Thu, 1 Aug 2019 13:54:28 +0200 Subject: [PATCH 002/197] Documentation update --- docs/Basic-Definitions.md | 2 +- docs/Components.md | 4 ++-- docs/Data-Adapter-REST-API-Reference.md | 3 ++- docs/Next-Step-Server.md | 4 ++-- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/docs/Basic-Definitions.md b/docs/Basic-Definitions.md index 7eee632f7..b947f3eab 100644 --- a/docs/Basic-Definitions.md +++ b/docs/Basic-Definitions.md @@ -166,7 +166,7 @@ Operation review is a special authentication step which handles review of operat ### Organization -Organizations separate users into different segments, such as RETAIL, SME and so on. The organization ID is an identifier used to specify organization selected by the user in the first step of user authentication. +Organizations separate users into different segments, such as `RETAIL`, `SME` and so on. The organization ID is an identifier used to specify organization selected by the user in the first step of user authentication. Each organization may use different user identifiers and authenticate against different systems. Such functionality is handled in the Data Adapter implementation. ### Authentication method diff --git a/docs/Components.md b/docs/Components.md index b286e2a9d..f8e3ae1db 100644 --- a/docs/Components.md +++ b/docs/Components.md @@ -47,6 +47,7 @@ Data Adapter connects Web Flow to other backends and serves as an integration co Data Adapter handles following use cases: +* Lookup user ID for given username. * User authentication with remote backend based on provided credentials for form based authentication step. * Retrieve user details for given user ID such as firstname and surname. * Retrieve data for given user and decorate operation data (e.g. bank account names, balances, currencies, etc.). @@ -58,14 +59,13 @@ Data Adapter handles following use cases: * Prepare consent form text and options. * Verify consent form options selected by the user. * Save consent form options selected by the user. -* Lookup username for given user ID. * Verify authorization SMS code and user password. For more information see the [Web Flow customization project](https://github.com/wultra/powerauth-webflow-customization) ## Mobile Token -Mobile Token is a standalone mobile application which allows user to confirm authentication, or authorization operations, created by Web Flow Server. +Mobile Token is a standalone mobile application which allows user to confirm authentication, or authorization operations, created on Next Step Server. Operations are typically accessed via REST API published by Web Flow Server. For more information see our [Mobile Token product page](https://www.wultra.com/product/powerauth-mobile-token). diff --git a/docs/Data-Adapter-REST-API-Reference.md b/docs/Data-Adapter-REST-API-Reference.md index 9cb4477f2..a9cfd1f40 100644 --- a/docs/Data-Adapter-REST-API-Reference.md +++ b/docs/Data-Adapter-REST-API-Reference.md @@ -83,7 +83,8 @@ Get a system status response, with basic information about the running applicati ## User Lookup -Performs a lookup of user account. +Performs a lookup of user account. The specified username is converted into a user ID. The username and user ID values +may be identical, however in typical deployments they are different. diff --git a/docs/Next-Step-Server.md b/docs/Next-Step-Server.md index ece20c8de..c93f8f993 100644 --- a/docs/Next-Step-Server.md +++ b/docs/Next-Step-Server.md @@ -22,11 +22,11 @@ Next Step Server implements following functionality: - update an operation based on next step decision - retrieve operation detail - list pending operations for user - - retrieve operation configuration + - retrieve operation configuration for an operation or all defined operations - update operation form data + - update user and organization for an operation - update application context for an operation - set chosen authentication method - - retrieve operation configuration - management of organizations - list organizations - retrieve organization detail From 1d37f4cee9f2953b0b3f0eb6772244fd2589b7cb Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Thu, 1 Aug 2019 15:53:13 +0200 Subject: [PATCH 003/197] Update DB drop script and update documentation, minor bugfixes --- docs/Readme.md | 2 +- docs/sql/mysql/drop_schema.sql | 1 + docs/sql/oracle/drop_schema.sql | 7 +++++++ docs/swagger/mobile_token_api_swagger.yml | 2 +- 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/docs/Readme.md b/docs/Readme.md index 44622c9c4..59abf7920 100644 --- a/docs/Readme.md +++ b/docs/Readme.md @@ -11,7 +11,7 @@ Web Flow can handle various types of authentication and authorization steps duri * User ID assignment (user identification is resolved using backend systems) * SMS OTP authorization (user receives a SMS with one time code which is used for authorization) * Mobile token authorization (user confirms operation on mobile device, PowerAuth signature is used for authorization) -* SCA login (user specifies username in first step, the second step uses password and SMS code verification) +* SCA login (user specifies username in the first screen, the second screen uses password and SMS code verification) * SCA approval (SCA login followed by approval using password and SMS code verification) Web Flow can also display OAuth 2.0 consent page with options required to be selected for completing the operation. diff --git a/docs/sql/mysql/drop_schema.sql b/docs/sql/mysql/drop_schema.sql index 96ef68e32..a8e5658a5 100644 --- a/docs/sql/mysql/drop_schema.sql +++ b/docs/sql/mysql/drop_schema.sql @@ -6,6 +6,7 @@ DROP TABLE IF EXISTS ns_operation; DROP TABLE IF EXISTS ns_operation_config; DROP TABLE IF EXISTS ns_user_prefs; DROP TABLE IF EXISTS ns_auth_method; +DROP TABLE IF EXISTS ns_organization; DROP TABLE IF EXISTS oauth_code; DROP TABLE IF EXISTS oauth_refresh_token; DROP TABLE IF EXISTS oauth_access_token; diff --git a/docs/sql/oracle/drop_schema.sql b/docs/sql/oracle/drop_schema.sql index 6a79f1a02..2767b1ec8 100644 --- a/docs/sql/oracle/drop_schema.sql +++ b/docs/sql/oracle/drop_schema.sql @@ -54,6 +54,13 @@ EXCEPTION END; / +BEGIN + EXECUTE IMMEDIATE 'DROP TABLE ns_organization'; +EXCEPTION + WHEN OTHERS THEN NULL; +END; +/ + BEGIN EXECUTE IMMEDIATE 'DROP TABLE oauth_code'; EXCEPTION diff --git a/docs/swagger/mobile_token_api_swagger.yml b/docs/swagger/mobile_token_api_swagger.yml index 3d488e243..9ab34af8e 100644 --- a/docs/swagger/mobile_token_api_swagger.yml +++ b/docs/swagger/mobile_token_api_swagger.yml @@ -67,7 +67,7 @@ paths: "amount": 100, "currency": "CZK", "amountFormatted": "100,00", - "currencyFormatted": "Kč" + "currencyFormatted": "Kč" }, { "type": "KEY_VALUE", From 870b2c52083e7a31e2759af58419342e0b3bd2e8 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Thu, 1 Aug 2019 16:28:52 +0200 Subject: [PATCH 004/197] Fix #605: Fix security issues reported by GitHub --- powerauth-webflow/.snyk | 30 ---- powerauth-webflow/package-lock.json | 239 +++++++++++++--------------- powerauth-webflow/package.json | 3 +- 3 files changed, 111 insertions(+), 161 deletions(-) diff --git a/powerauth-webflow/.snyk b/powerauth-webflow/.snyk index e59b919f0..a0205db67 100644 --- a/powerauth-webflow/.snyk +++ b/powerauth-webflow/.snyk @@ -2,33 +2,3 @@ version: v1.13.5 ignore: {} # patches apply the minimum changes required to fix a vulnerability -patch: - SNYK-JS-LODASH-450202: - - hard-source-webpack-plugin > lodash: - patched: '2019-07-04T05:27:32.954Z' - - redux > lodash: - patched: '2019-07-04T05:27:32.954Z' - - webpack > async > lodash: - patched: '2019-07-04T05:27:32.954Z' - - snyk > snyk-mvn-plugin > lodash: - patched: '2019-07-05T05:27:34.400Z' - - snyk > lodash: - patched: '2019-07-05T05:27:34.400Z' - - snyk > snyk-nodejs-lockfile-parser > lodash: - patched: '2019-07-05T05:27:34.400Z' - - snyk > @snyk/dep-graph > lodash: - patched: '2019-07-05T05:27:34.400Z' - - snyk > inquirer > lodash: - patched: '2019-07-05T05:27:34.400Z' - - snyk > snyk-nuget-plugin > lodash: - patched: '2019-07-05T05:27:34.400Z' - - snyk > snyk-config > lodash: - patched: '2019-07-05T05:27:34.400Z' - - snyk > snyk-nodejs-lockfile-parser > graphlib > lodash: - patched: '2019-07-05T05:27:34.400Z' - - snyk > snyk-go-plugin > graphlib > lodash: - patched: '2019-07-05T05:27:34.400Z' - - snyk > snyk-php-plugin > @snyk/composer-lockfile-parser > lodash: - patched: '2019-07-05T05:27:34.400Z' - - snyk > @snyk/dep-graph > graphlib > lodash: - patched: '2019-07-05T05:27:34.400Z' diff --git a/powerauth-webflow/package-lock.json b/powerauth-webflow/package-lock.json index 50a69ebeb..1a1147d1d 100644 --- a/powerauth-webflow/package-lock.json +++ b/powerauth-webflow/package-lock.json @@ -20,20 +20,20 @@ } }, "@snyk/composer-lockfile-parser": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@snyk/composer-lockfile-parser/-/composer-lockfile-parser-1.0.2.tgz", - "integrity": "sha512-kFzMajJLgWYsRTD+j1B79RckP1nYolM3UU9wJAo6VjvaBJ1R8E6IXmz0lEJBwK2zXM4EPrgk41ZqmoQS3hselQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@snyk/composer-lockfile-parser/-/composer-lockfile-parser-1.0.3.tgz", + "integrity": "sha512-hb+6E7kMzWlcwfe//ILDoktBPKL2a3+RnJT/CXnzRXaiLQpsdkf5li4q2v0fmvd+4v7L3tTN8KM+//lJyviEkg==", "requires": { - "lodash": "4.17.11" + "lodash": "^4.17.13" } }, "@snyk/dep-graph": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@snyk/dep-graph/-/dep-graph-1.8.1.tgz", - "integrity": "sha512-cWqJwuiU1+9hL0Fd/qgq0DYeWM/6mqPIa/B0yoEsHD8nR/IPFgalVvMbOSdPKeApvi/AxDzcRxr8tfqHJ7aq2w==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@snyk/dep-graph/-/dep-graph-1.10.0.tgz", + "integrity": "sha512-QwQTmmnVb1mjAffGsjKKrwit8ahLWyhlKWQcTVZo9UXFgWAwiuCjTXKAXhijZjGvrXQzNf5KbIBu+SZ1Dq2toQ==", "requires": { "graphlib": "^2.1.5", - "lodash": "^4", + "lodash": "^4.7.14", "object-hash": "^1.3.1", "semver": "^6.0.0", "source-map-support": "^0.5.11", @@ -41,9 +41,9 @@ }, "dependencies": { "semver": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.2.0.tgz", - "integrity": "sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A==" + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" }, "source-map": { "version": "0.6.1", @@ -51,9 +51,9 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, "source-map-support": { - "version": "0.5.12", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz", - "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==", + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -86,9 +86,9 @@ "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==" }, "@types/node": { - "version": "12.0.12", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.0.12.tgz", - "integrity": "sha512-Uy0PN4R5vgBUXFoJrKryf5aTk3kJ8Rv3PdlHjl6UaX+Cqp1QE0yPQ68MPXGrZOfG7gZVNDIJZYyot0B9ubXUrQ==" + "version": "12.6.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.6.8.tgz", + "integrity": "sha512-aX+gFgA5GHcDi89KG5keey2zf0WfZk/HAQotEamsK2kbey+8yGKcson0hbK8E+v0NArlCJQCqMP161YhV6ZXLg==" }, "@yarnpkg/lockfile": { "version": "1.1.0", @@ -195,9 +195,9 @@ } }, "ansi-escapes": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.2.0.tgz", - "integrity": "sha512-0+VX4uhi8m3aNbzoqKmkAVOEj6uQzcUHXoFPkKjhZPTpGRUBqVh930KbB6PS4zIyDZccphlLIYlu8nsjFzkXwg==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.2.1.tgz", + "integrity": "sha512-Cg3ymMAdN10wOk/VYfLV7KCQyv7EDirJ64500sU7n9UlmioEtDuU5Gd+hj73hXSU/ex7tHJSssmyftDdkMLO8Q==", "requires": { "type-fest": "^0.5.2" } @@ -1636,11 +1636,6 @@ "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" }, - "child_process": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/child_process/-/child_process-1.0.2.tgz", - "integrity": "sha1-sffn/HPSXn/R1FWtyU4UODAYK1o=" - }, "chokidar": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.2.tgz", @@ -1933,9 +1928,9 @@ }, "dependencies": { "@types/node": { - "version": "8.10.50", - "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.50.tgz", - "integrity": "sha512-+ZbcUwJdaBgOZpwXeT0v+gHC/jQbEfzoc9s4d0rN0JIKeQbuTrT+A2n1aQY6LpZjrLXJT7avVUqiCecCJeeZxA==" + "version": "8.10.51", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.51.tgz", + "integrity": "sha512-cArrlJp3Yv6IyFT/DYe+rlO8o3SIHraALbBW/+CcCYW/a9QucpLI+n2p4sRxAvl2O35TiecpX2heSZtJjvEO+Q==" } } }, @@ -2360,9 +2355,9 @@ } }, "external-editor": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz", - "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", "requires": { "chardet": "^0.7.0", "iconv-lite": "^0.4.24", @@ -2558,11 +2553,6 @@ "map-cache": "^0.2.2" } }, - "fs": { - "version": "0.0.1-security", - "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz", - "integrity": "sha1-invTcYa23d84E/I4WLV+yq9eQdQ=" - }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -3400,11 +3390,11 @@ "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" }, "https-proxy-agent": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz", - "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.2.tgz", + "integrity": "sha512-c8Ndjc9Bkpfx/vCJueCPy0jlP4ccCCSNDp8xwCZzPjKJUm+B+u9WX2x98Qx4n1PiMNTWo3D7KK5ifNV/yJyRzg==", "requires": { - "agent-base": "^4.1.0", + "agent-base": "^4.3.0", "debug": "^3.1.0" } }, @@ -3461,9 +3451,9 @@ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" }, "inquirer": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.4.1.tgz", - "integrity": "sha512-/Jw+qPZx4EDYsaT6uz7F4GJRNFMRdKNeUZw3ZnKV8lyuUgz/YWRCSUAJMZSVhSq4Ec0R2oYnyi6b3d4JXcL5Nw==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.0.tgz", + "integrity": "sha512-scfHejeG/lVZSpvCXpsB4j/wQNPM5JC8kiElOI0OUTwmc1RTpXr4H32/HOlQHcZiYl2z2VElwuCVDRG8vFmbnA==", "requires": { "ansi-escapes": "^3.2.0", "chalk": "^2.4.2", @@ -3471,7 +3461,7 @@ "cli-width": "^2.0.0", "external-editor": "^3.0.3", "figures": "^2.0.0", - "lodash": "^4.17.11", + "lodash": "^4.17.12", "mute-stream": "0.0.7", "run-async": "^2.2.0", "rxjs": "^6.4.0", @@ -4002,9 +3992,9 @@ } }, "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" }, "lodash-es": { "version": "4.17.14", @@ -4690,25 +4680,6 @@ "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" }, - "path": { - "version": "0.12.7", - "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", - "integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=", - "requires": { - "process": "^0.11.1", - "util": "^0.10.3" - }, - "dependencies": { - "util": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", - "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", - "requires": { - "inherits": "2.0.3" - } - } - } - }, "path-browserify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", @@ -5746,11 +5717,11 @@ } }, "snyk": { - "version": "1.192.0", - "resolved": "https://registry.npmjs.org/snyk/-/snyk-1.192.0.tgz", - "integrity": "sha512-+js/wtkeFndQRnHayPZLtqL0BJcDIICV2BdmtJZlYkGE+Jthm76tazJlpYWCAXe6D3VzSXE15Mb9drMp1vH4Fg==", + "version": "1.208.0", + "resolved": "https://registry.npmjs.org/snyk/-/snyk-1.208.0.tgz", + "integrity": "sha512-MMOQazfz+5fvoCDEBBJiuYNdcrtE3anemGvL7VJFlWu4uc8YgVZ8gvetEO7OmLmn4FfTmJ/hAthEQgcXYjDjFw==", "requires": { - "@snyk/dep-graph": "1.8.1", + "@snyk/dep-graph": "1.10.0", "@snyk/gemfile": "1.2.0", "@types/agent-base": "^4.2.0", "abbrev": "^1.1.1", @@ -5762,7 +5733,7 @@ "git-url-parse": "11.1.2", "glob": "^7.1.3", "inquirer": "^6.2.2", - "lodash": "^4.17.11", + "lodash": "^4.17.14", "needle": "^2.2.4", "opn": "^5.5.0", "os-name": "^3.0.0", @@ -5771,18 +5742,18 @@ "semver": "^6.0.0", "snyk-config": "^2.2.1", "snyk-docker-plugin": "1.25.1", - "snyk-go-plugin": "1.10.2", + "snyk-go-plugin": "1.11.0", "snyk-gradle-plugin": "2.12.5", "snyk-module": "1.9.1", - "snyk-mvn-plugin": "2.3.0", - "snyk-nodejs-lockfile-parser": "1.13.0", - "snyk-nuget-plugin": "1.10.0", - "snyk-php-plugin": "1.6.2", + "snyk-mvn-plugin": "2.3.1", + "snyk-nodejs-lockfile-parser": "1.16.0", + "snyk-nuget-plugin": "1.11.2", + "snyk-php-plugin": "1.6.4", "snyk-policy": "1.13.5", "snyk-python-plugin": "1.10.2", "snyk-resolve": "1.0.1", "snyk-resolve-deps": "4.0.3", - "snyk-sbt-plugin": "2.5.5", + "snyk-sbt-plugin": "2.6.1", "snyk-tree": "^1.0.0", "snyk-try-require": "1.3.1", "source-map-support": "^0.5.11", @@ -5822,9 +5793,9 @@ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, "semver": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.2.0.tgz", - "integrity": "sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A==" + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" }, "source-map": { "version": "0.6.1", @@ -5832,9 +5803,9 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, "source-map-support": { - "version": "0.5.12", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz", - "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==", + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -5859,12 +5830,12 @@ } }, "snyk-config": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/snyk-config/-/snyk-config-2.2.1.tgz", - "integrity": "sha512-eCsFKHHE4J2DpD/1NzAtCmkmVDK310OXRtmoW0RlLnld1ESprJ5A/QRJ5Zxx1JbA8gjuwERY5vfUFA8lEJeopA==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/snyk-config/-/snyk-config-2.2.2.tgz", + "integrity": "sha512-ud1UJhU5b3z2achCVbXin6m3eeESvJTn9hBDYjp5BafI+1ajOJt0LnUB9+SAZ3CnQIK90PUb/3nSx0xjtda7sA==", "requires": { "debug": "^3.1.0", - "lodash": "^4.17.11", + "lodash": "^4.17.14", "nconf": "^0.10.0" } }, @@ -5888,9 +5859,9 @@ } }, "semver": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.2.0.tgz", - "integrity": "sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A==" + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" } } }, @@ -5904,14 +5875,15 @@ } }, "snyk-go-plugin": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/snyk-go-plugin/-/snyk-go-plugin-1.10.2.tgz", - "integrity": "sha512-k+f/0XgiAfnqK36L3t3EBYyMy8/vVFAU9ctHO5BztaXZXMfkYZpRsJGbvR3c7cVE4n4ruwYQhlKLM8bCuai8SQ==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/snyk-go-plugin/-/snyk-go-plugin-1.11.0.tgz", + "integrity": "sha512-9hsGgloioGuey5hbZfv+MkFEslxXHyzUlaAazcR0NsY7VLyG/b2g3f88f/ZwCwlWaKL9LMv/ERIiey3oWAB/qg==", "requires": { "debug": "^4.1.1", "graphlib": "^2.1.1", "snyk-go-parser": "1.3.1", - "tmp": "0.0.33" + "tmp": "0.0.33", + "tslib": "^1.10.0" }, "dependencies": { "debug": { @@ -5988,11 +5960,11 @@ } }, "snyk-mvn-plugin": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/snyk-mvn-plugin/-/snyk-mvn-plugin-2.3.0.tgz", - "integrity": "sha512-LOSiJu+XUPVqKCXcnQPLhlyTGm3ikDwjvYw5fpiEnvjMWkMDd8IfzZqulqreebJDmadUpP7Cn0fabfx7TszqxA==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/snyk-mvn-plugin/-/snyk-mvn-plugin-2.3.1.tgz", + "integrity": "sha512-2RgBnYe3Upc7SL+sL7MmnoCoJV/TZZ7q2L0J1BAbjoD/4cca4q0TCR6QVLzytHf4fSqc6QjSMjTUfmAo0kgsBg==", "requires": { - "lodash": "4.17.11", + "lodash": "^4.17.13", "tslib": "1.9.3" }, "dependencies": { @@ -6004,13 +5976,13 @@ } }, "snyk-nodejs-lockfile-parser": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/snyk-nodejs-lockfile-parser/-/snyk-nodejs-lockfile-parser-1.13.0.tgz", - "integrity": "sha512-fC1o9SJ+iM+IYeBUYtvCIYh005WAvWMzqhEH3hI4zGPdCYQqGYIfVpXf29aCOKoorkTR345k5g6Etx54+BbrTQ==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/snyk-nodejs-lockfile-parser/-/snyk-nodejs-lockfile-parser-1.16.0.tgz", + "integrity": "sha512-cf3uozRXEG88nsjOQlo+SfOJPpcLs45qpnuk2vhBBZ577IMnV+fTOJQsP2YRiikLUbdgkVlduviwUO6OVn1PhA==", "requires": { "@yarnpkg/lockfile": "^1.0.2", "graphlib": "^2.1.5", - "lodash": "^4.17.11", + "lodash": "^4.17.14", "source-map-support": "^0.5.7", "tslib": "^1.9.3", "uuid": "^3.3.2" @@ -6022,9 +5994,9 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, "source-map-support": { - "version": "0.5.12", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz", - "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==", + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -6033,31 +6005,40 @@ } }, "snyk-nuget-plugin": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/snyk-nuget-plugin/-/snyk-nuget-plugin-1.10.0.tgz", - "integrity": "sha512-V69AIWcHw4KrgEFC8kNWoqHo54wZkWGfqyVv+kJjQxARWYmQqV4YL/vxfLAoZ7mDsNXgjPn5M4ZEaeHFCeWcyA==", + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/snyk-nuget-plugin/-/snyk-nuget-plugin-1.11.2.tgz", + "integrity": "sha512-dNAwwFzrxI0gJh+3Eta7EFlz+jzXeTqXUwThaEASxCNNugV8gKsK/v+k0pQBsRPKvTLFlswB2D2Bt1E7YSOixA==", "requires": { "debug": "^3.1.0", "jszip": "^3.1.5", - "lodash": "^4.17.10", - "snyk-paket-parser": "1.4.3", + "lodash": "^4.17.14", + "snyk-paket-parser": "1.5.0", + "tslib": "^1.9.3", "xml2js": "^0.4.17" } }, "snyk-paket-parser": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/snyk-paket-parser/-/snyk-paket-parser-1.4.3.tgz", - "integrity": "sha512-6m736zGVoeT/zS9KEtlmqTSPEPjAfLe8iYoQ3AwbyxDhzuLY49lTaV67MyZtGwjhi1x4KBe+XOgeWwyf6Avf/A==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/snyk-paket-parser/-/snyk-paket-parser-1.5.0.tgz", + "integrity": "sha512-1CYMPChJ9D9LBy3NLqHyv8TY7pR/LMISSr08LhfFw/FpfRZ+gTH8W6bbxCmybAYrOFNCqZkRprqOYDqZQFHipA==", "requires": { "tslib": "^1.9.3" } }, "snyk-php-plugin": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/snyk-php-plugin/-/snyk-php-plugin-1.6.2.tgz", - "integrity": "sha512-6QM7HCmdfhuXSNGFgNOVC+GVT1Y2UfBoO+TAeV1uM1CdRGPJziz12F79a1Qyc9YGuiAwmm5DtdatUgKraC8gdA==", + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/snyk-php-plugin/-/snyk-php-plugin-1.6.4.tgz", + "integrity": "sha512-FFQeimtbwq17nDUS0o0zuKgyjXSX7SpoC9iYTeKvxTXrmKf2QlxTtPvmMM4/hQxehEu1i40ow1Ozw0Ahxm8Dpw==", "requires": { - "@snyk/composer-lockfile-parser": "1.0.2" + "@snyk/composer-lockfile-parser": "1.0.3", + "tslib": "1.9.3" + }, + "dependencies": { + "tslib": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" + } } }, "snyk-policy": { @@ -6077,9 +6058,9 @@ }, "dependencies": { "semver": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.2.0.tgz", - "integrity": "sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A==" + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" } } }, @@ -6123,22 +6104,20 @@ } }, "snyk-sbt-plugin": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/snyk-sbt-plugin/-/snyk-sbt-plugin-2.5.5.tgz", - "integrity": "sha512-oSybTDLw8VF2nOdlbL7GRHafCxsM6ydTH6hKacvpN6mYDbNaohscAWB/FjLIPCCimVorWldEdSdotSCukq2eYg==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/snyk-sbt-plugin/-/snyk-sbt-plugin-2.6.1.tgz", + "integrity": "sha512-zWU14cm+cpamJ0CJdekTfgmv6ifdgVcapO6d27KTJThqRuR0arCqGPPyZa/Zl+jzhcK0dtRS4Ihk7g+d36SWIg==", "requires": { - "child_process": "1.0.2", - "fs": "0.0.1-security", - "path": "0.12.7", "semver": "^6.1.2", "tmp": "^0.1.0", - "tree-kill": "^1.2.1" + "tree-kill": "^1.2.1", + "tslib": "^1.10.0" }, "dependencies": { "semver": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.2.0.tgz", - "integrity": "sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A==" + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" }, "tmp": { "version": "0.1.0", diff --git a/powerauth-webflow/package.json b/powerauth-webflow/package.json index e3fee0ee9..0249c2e47 100644 --- a/powerauth-webflow/package.json +++ b/powerauth-webflow/package.json @@ -39,7 +39,8 @@ "bluebird": "^3.5.0", "intl": "^1.2.5", "sanitize-html": "^1.20.1", - "snyk": "^1.192.0" + "snyk": "^1.208.0", + "lodash": "^4.17.15" }, "scripts": { "watch": "webpack --watch -d", From f667f667ea29c3f66261996a3384c4a973ca437d Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Thu, 1 Aug 2019 17:34:11 +0200 Subject: [PATCH 005/197] Fix #607: Fix failing travis build --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 266deef7e..53cd22111 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,6 @@ language: java jdk: - - oraclejdk8 + - openjdk11 branches: only: - master From 32da745bb63d82e6abfd1ed370f9a9c8a5cfde6d Mon Sep 17 00:00:00 2001 From: snyk-test Date: Tue, 6 Aug 2019 21:06:04 +0000 Subject: [PATCH 006/197] fix: powerauth-webflow-i18n/pom.xml to reduce vulnerabilities The following vulnerabilities are fixed with an upgrade: - https://snyk.io/vuln/SNYK-JAVA-COMFASTERXMLJACKSONCORE-455617 --- powerauth-webflow-i18n/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/powerauth-webflow-i18n/pom.xml b/powerauth-webflow-i18n/pom.xml index bd79a0c9a..81c2168ad 100644 --- a/powerauth-webflow-i18n/pom.xml +++ b/powerauth-webflow-i18n/pom.xml @@ -21,7 +21,7 @@ com.fasterxml.jackson.core jackson-databind - 2.9.9.2 + 2.9.9.3 org.springframework From 754835701bb47eb189e069c27eebd74e3f590087 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 7 Aug 2019 06:50:17 +0000 Subject: [PATCH 007/197] Bump lodash.mergewith from 4.6.1 to 4.6.2 in /powerauth-webflow Bumps [lodash.mergewith](https://github.com/lodash/lodash) from 4.6.1 to 4.6.2. - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](https://github.com/lodash/lodash/commits) Signed-off-by: dependabot[bot] --- powerauth-webflow/package-lock.json | 47 ++++++++++++++++++++--------- 1 file changed, 33 insertions(+), 14 deletions(-) diff --git a/powerauth-webflow/package-lock.json b/powerauth-webflow/package-lock.json index 50a69ebeb..58708431d 100644 --- a/powerauth-webflow/package-lock.json +++ b/powerauth-webflow/package-lock.json @@ -2585,7 +2585,8 @@ }, "ansi-regex": { "version": "2.1.1", - "bundled": true + "bundled": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -2603,11 +2604,13 @@ }, "balanced-match": { "version": "1.0.0", - "bundled": true + "bundled": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2620,15 +2623,18 @@ }, "code-point-at": { "version": "1.1.0", - "bundled": true + "bundled": true, + "optional": true }, "concat-map": { "version": "0.0.1", - "bundled": true + "bundled": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", - "bundled": true + "bundled": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -2731,7 +2737,8 @@ }, "inherits": { "version": "2.0.3", - "bundled": true + "bundled": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -2741,6 +2748,7 @@ "is-fullwidth-code-point": { "version": "1.0.0", "bundled": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -2753,17 +2761,20 @@ "minimatch": { "version": "3.0.4", "bundled": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { "version": "0.0.8", - "bundled": true + "bundled": true, + "optional": true }, "minipass": { "version": "2.3.5", "bundled": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -2780,6 +2791,7 @@ "mkdirp": { "version": "0.5.1", "bundled": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -2852,7 +2864,8 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true + "bundled": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -2862,6 +2875,7 @@ "once": { "version": "1.4.0", "bundled": true, + "optional": true, "requires": { "wrappy": "1" } @@ -2937,7 +2951,8 @@ }, "safe-buffer": { "version": "5.1.2", - "bundled": true + "bundled": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -2967,6 +2982,7 @@ "string-width": { "version": "1.0.2", "bundled": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -2984,6 +3000,7 @@ "strip-ansi": { "version": "3.0.1", "bundled": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -3022,11 +3039,13 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true + "bundled": true, + "optional": true }, "yallist": { "version": "3.0.3", - "bundled": true + "bundled": true, + "optional": true } } }, @@ -4057,9 +4076,9 @@ "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" }, "lodash.mergewith": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz", - "integrity": "sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ==" + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", + "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==" }, "lodash.set": { "version": "4.3.2", From 8d011f0b233b8cefa7f15d05332d5792b57a2f3b Mon Sep 17 00:00:00 2001 From: Petr Dvorak Date: Wed, 14 Aug 2019 13:59:12 +0200 Subject: [PATCH 008/197] Fix #613: Use organization ID from user detail response if available --- .../controller/UserProfileController.java | 6 ++++ powerauth-webflow/package-lock.json | 32 +++++++++---------- 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/powerauth-webflow-resources/src/main/java/io/getlime/security/powerauth/lib/webflow/resource/controller/UserProfileController.java b/powerauth-webflow-resources/src/main/java/io/getlime/security/powerauth/lib/webflow/resource/controller/UserProfileController.java index 85d73cb65..35ccc54d8 100644 --- a/powerauth-webflow-resources/src/main/java/io/getlime/security/powerauth/lib/webflow/resource/controller/UserProfileController.java +++ b/powerauth-webflow-resources/src/main/java/io/getlime/security/powerauth/lib/webflow/resource/controller/UserProfileController.java @@ -92,6 +92,12 @@ public UserProfileController(DataAdapterClient client, AuthorizationServerTokenS userResponse.getUser().setFamilyName(userDetail.getFamilyName()); userResponse.getConnection().setLanguage(language); userResponse.getConnection().setSca(sca); + + // In case Data Adapter translated organization ID, use the translated value, + // otherwise use the organization ID that is assigned to the access token. + if (userDetail.getOrganizationId() != null && !userDetail.getOrganizationId().isEmpty()) { + organizationId = userDetail.getOrganizationId(); + } userResponse.getConnection().setOrganizationId(organizationId); } catch (DataAdapterClientErrorException e) { // Return dummy user diff --git a/powerauth-webflow/package-lock.json b/powerauth-webflow/package-lock.json index 0221f2759..f7190adc9 100644 --- a/powerauth-webflow/package-lock.json +++ b/powerauth-webflow/package-lock.json @@ -258,7 +258,7 @@ "arr-flatten": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=" }, "arr-union": { "version": "3.1.0", @@ -1251,7 +1251,7 @@ "babylon": { "version": "6.18.0", "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "integrity": "sha1-ry87iPpvXB5MY00aD46sT1WzleM=", "dev": true }, "balanced-match": { @@ -1322,7 +1322,7 @@ "big.js": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==" + "integrity": "sha1-pfwpi4G54Nyi5FiCR4S2XFK6WI4=" }, "binary-extensions": { "version": "1.13.0", @@ -1342,7 +1342,7 @@ "bn.js": { "version": "4.11.8", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" + "integrity": "sha1-LN4J617jQfSEdGuwMJsyU7GxRC8=" }, "boxen": { "version": "1.3.0", @@ -1663,7 +1663,7 @@ "cipher-base": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "integrity": "sha1-h2Dk7MJy9MNjUy+SbYdKriwTl94=", "requires": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -2265,7 +2265,7 @@ "evp_bytestokey": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "integrity": "sha1-f8vbGY3HGVlDLv4ThCaE4FJaywI=", "requires": { "md5.js": "^1.3.4", "safe-buffer": "^5.1.1" @@ -3182,7 +3182,7 @@ "globals": { "version": "9.18.0", "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "integrity": "sha1-qjiWs+abSH8X4x7SFD1pqOMMLYo=", "dev": true }, "got": { @@ -3870,7 +3870,7 @@ "json-loader": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", - "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==" + "integrity": "sha1-3KFKcCNf+C8KyaOr62DTN6NlGF0=" }, "json-stable-stringify": { "version": "1.0.1", @@ -4177,7 +4177,7 @@ "miller-rabin": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "integrity": "sha1-8IA1HIZbDcViqEYpZtqlNUPHik0=", "requires": { "bn.js": "^4.0.0", "brorand": "^1.0.1" @@ -4201,7 +4201,7 @@ "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", "requires": { "brace-expansion": "^1.1.7" } @@ -4375,7 +4375,7 @@ "node-fetch": { "version": "1.7.3", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", - "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", + "integrity": "sha1-mA9vcthSEaU0fGsrwYxbhMPrR+8=", "requires": { "encoding": "^0.1.11", "is-stream": "^1.0.1" @@ -4896,7 +4896,7 @@ "promise": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "integrity": "sha1-BktyYCsY+Q8pGSuLG8QY/9Hr078=", "requires": { "asap": "~2.0.3" } @@ -5227,7 +5227,7 @@ "redux": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/redux/-/redux-3.7.2.tgz", - "integrity": "sha512-pNqnf9q1hI5HHZRBkj3bAngGZW/JMCmexDlOxw4XagXY2o1327nHH54LoTjiPJ0gizoqPDRqWyX/00g0hD6w+A==", + "integrity": "sha1-BrcxIyFZAdJdBlvjQusCa8HIU3s=", "requires": { "lodash": "^4.2.1", "lodash-es": "^4.2.1", @@ -5259,7 +5259,7 @@ "regenerator-transform": { "version": "0.10.1", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", - "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", + "integrity": "sha1-HkmWg3Ix2ot/PPQRTXG1aRoGgN0=", "dev": true, "requires": { "babel-runtime": "^6.18.0", @@ -6241,7 +6241,7 @@ "source-map-support": { "version": "0.4.18", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "integrity": "sha1-Aoam3ovkJkEzhZTpfM6nXwosWF8=", "dev": true, "requires": { "source-map": "^0.5.6" @@ -6893,7 +6893,7 @@ "webpack": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-2.7.0.tgz", - "integrity": "sha512-MjAA0ZqO1ba7ZQJRnoCdbM56mmFpipOPUv/vQpwwfSI42p5PVDdoiuK2AL2FwFUVgT859Jr43bFZXRg/LNsqvg==", + "integrity": "sha1-sqEiaAQ3P/09A+qca9UlBnA09rE=", "requires": { "acorn": "^5.0.0", "acorn-dynamic-import": "^2.0.0", From 027a5c6a750fe6056d5e5bc0b119ed263ce42963 Mon Sep 17 00:00:00 2001 From: Petr Dvorak Date: Wed, 14 Aug 2019 15:06:12 +0200 Subject: [PATCH 009/197] Update package.json with latest npm --- powerauth-webflow/package-lock.json | 41 ++++++++--------------------- 1 file changed, 11 insertions(+), 30 deletions(-) diff --git a/powerauth-webflow/package-lock.json b/powerauth-webflow/package-lock.json index f7190adc9..2d495db30 100644 --- a/powerauth-webflow/package-lock.json +++ b/powerauth-webflow/package-lock.json @@ -2575,8 +2575,7 @@ }, "ansi-regex": { "version": "2.1.1", - "bundled": true, - "optional": true + "bundled": true }, "aproba": { "version": "1.2.0", @@ -2594,13 +2593,11 @@ }, "balanced-match": { "version": "1.0.0", - "bundled": true, - "optional": true + "bundled": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, - "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2613,18 +2610,15 @@ }, "code-point-at": { "version": "1.1.0", - "bundled": true, - "optional": true + "bundled": true }, "concat-map": { "version": "0.0.1", - "bundled": true, - "optional": true + "bundled": true }, "console-control-strings": { "version": "1.1.0", - "bundled": true, - "optional": true + "bundled": true }, "core-util-is": { "version": "1.0.2", @@ -2727,8 +2721,7 @@ }, "inherits": { "version": "2.0.3", - "bundled": true, - "optional": true + "bundled": true }, "ini": { "version": "1.3.5", @@ -2738,7 +2731,6 @@ "is-fullwidth-code-point": { "version": "1.0.0", "bundled": true, - "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -2751,20 +2743,17 @@ "minimatch": { "version": "3.0.4", "bundled": true, - "optional": true, "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { "version": "0.0.8", - "bundled": true, - "optional": true + "bundled": true }, "minipass": { "version": "2.3.5", "bundled": true, - "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -2781,7 +2770,6 @@ "mkdirp": { "version": "0.5.1", "bundled": true, - "optional": true, "requires": { "minimist": "0.0.8" } @@ -2854,8 +2842,7 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true, - "optional": true + "bundled": true }, "object-assign": { "version": "4.1.1", @@ -2865,7 +2852,6 @@ "once": { "version": "1.4.0", "bundled": true, - "optional": true, "requires": { "wrappy": "1" } @@ -2941,8 +2927,7 @@ }, "safe-buffer": { "version": "5.1.2", - "bundled": true, - "optional": true + "bundled": true }, "safer-buffer": { "version": "2.1.2", @@ -2972,7 +2957,6 @@ "string-width": { "version": "1.0.2", "bundled": true, - "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -2990,7 +2974,6 @@ "strip-ansi": { "version": "3.0.1", "bundled": true, - "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -3029,13 +3012,11 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true, - "optional": true + "bundled": true }, "yallist": { "version": "3.0.3", - "bundled": true, - "optional": true + "bundled": true } } }, From 04f85ecb1cdf60d15268a549e0ac2be5e2904d08 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 29 Aug 2019 00:15:44 +0000 Subject: [PATCH 010/197] Bump mixin-deep from 1.3.1 to 1.3.2 in /powerauth-webflow Bumps [mixin-deep](https://github.com/jonschlinkert/mixin-deep) from 1.3.1 to 1.3.2. - [Release notes](https://github.com/jonschlinkert/mixin-deep/releases) - [Commits](https://github.com/jonschlinkert/mixin-deep/compare/1.3.1...1.3.2) Signed-off-by: dependabot[bot] --- powerauth-webflow/package-lock.json | 47 ++++++++++++++++++++--------- 1 file changed, 33 insertions(+), 14 deletions(-) diff --git a/powerauth-webflow/package-lock.json b/powerauth-webflow/package-lock.json index 2d495db30..0b6f13e2c 100644 --- a/powerauth-webflow/package-lock.json +++ b/powerauth-webflow/package-lock.json @@ -2575,7 +2575,8 @@ }, "ansi-regex": { "version": "2.1.1", - "bundled": true + "bundled": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -2593,11 +2594,13 @@ }, "balanced-match": { "version": "1.0.0", - "bundled": true + "bundled": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2610,15 +2613,18 @@ }, "code-point-at": { "version": "1.1.0", - "bundled": true + "bundled": true, + "optional": true }, "concat-map": { "version": "0.0.1", - "bundled": true + "bundled": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", - "bundled": true + "bundled": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -2721,7 +2727,8 @@ }, "inherits": { "version": "2.0.3", - "bundled": true + "bundled": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -2731,6 +2738,7 @@ "is-fullwidth-code-point": { "version": "1.0.0", "bundled": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -2743,17 +2751,20 @@ "minimatch": { "version": "3.0.4", "bundled": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { "version": "0.0.8", - "bundled": true + "bundled": true, + "optional": true }, "minipass": { "version": "2.3.5", "bundled": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -2770,6 +2781,7 @@ "mkdirp": { "version": "0.5.1", "bundled": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -2842,7 +2854,8 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true + "bundled": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -2852,6 +2865,7 @@ "once": { "version": "1.4.0", "bundled": true, + "optional": true, "requires": { "wrappy": "1" } @@ -2927,7 +2941,8 @@ }, "safe-buffer": { "version": "5.1.2", - "bundled": true + "bundled": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -2957,6 +2972,7 @@ "string-width": { "version": "1.0.2", "bundled": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -2974,6 +2990,7 @@ "strip-ansi": { "version": "3.0.1", "bundled": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -3012,11 +3029,13 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true + "bundled": true, + "optional": true }, "yallist": { "version": "3.0.3", - "bundled": true + "bundled": true, + "optional": true } } }, @@ -4193,9 +4212,9 @@ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" }, "mixin-deep": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", "requires": { "for-in": "^1.0.2", "is-extendable": "^1.0.1" From d981873191ac16841df35d9a62517078a5391ef8 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Fri, 6 Sep 2019 11:13:00 +0200 Subject: [PATCH 011/197] Update package-lock.json --- powerauth-webflow/package-lock.json | 73 +++++++++++------------------ 1 file changed, 27 insertions(+), 46 deletions(-) diff --git a/powerauth-webflow/package-lock.json b/powerauth-webflow/package-lock.json index 0b6f13e2c..bc25fe3dd 100644 --- a/powerauth-webflow/package-lock.json +++ b/powerauth-webflow/package-lock.json @@ -258,7 +258,7 @@ "arr-flatten": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=" + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" }, "arr-union": { "version": "3.1.0", @@ -1251,7 +1251,7 @@ "babylon": { "version": "6.18.0", "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha1-ry87iPpvXB5MY00aD46sT1WzleM=", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", "dev": true }, "balanced-match": { @@ -1322,7 +1322,7 @@ "big.js": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha1-pfwpi4G54Nyi5FiCR4S2XFK6WI4=" + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==" }, "binary-extensions": { "version": "1.13.0", @@ -1342,7 +1342,7 @@ "bn.js": { "version": "4.11.8", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha1-LN4J617jQfSEdGuwMJsyU7GxRC8=" + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" }, "boxen": { "version": "1.3.0", @@ -1663,7 +1663,7 @@ "cipher-base": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha1-h2Dk7MJy9MNjUy+SbYdKriwTl94=", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", "requires": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -2265,7 +2265,7 @@ "evp_bytestokey": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha1-f8vbGY3HGVlDLv4ThCaE4FJaywI=", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", "requires": { "md5.js": "^1.3.4", "safe-buffer": "^5.1.1" @@ -2575,8 +2575,7 @@ }, "ansi-regex": { "version": "2.1.1", - "bundled": true, - "optional": true + "bundled": true }, "aproba": { "version": "1.2.0", @@ -2594,13 +2593,11 @@ }, "balanced-match": { "version": "1.0.0", - "bundled": true, - "optional": true + "bundled": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, - "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2613,18 +2610,15 @@ }, "code-point-at": { "version": "1.1.0", - "bundled": true, - "optional": true + "bundled": true }, "concat-map": { "version": "0.0.1", - "bundled": true, - "optional": true + "bundled": true }, "console-control-strings": { "version": "1.1.0", - "bundled": true, - "optional": true + "bundled": true }, "core-util-is": { "version": "1.0.2", @@ -2727,8 +2721,7 @@ }, "inherits": { "version": "2.0.3", - "bundled": true, - "optional": true + "bundled": true }, "ini": { "version": "1.3.5", @@ -2738,7 +2731,6 @@ "is-fullwidth-code-point": { "version": "1.0.0", "bundled": true, - "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -2751,20 +2743,17 @@ "minimatch": { "version": "3.0.4", "bundled": true, - "optional": true, "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { "version": "0.0.8", - "bundled": true, - "optional": true + "bundled": true }, "minipass": { "version": "2.3.5", "bundled": true, - "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -2781,7 +2770,6 @@ "mkdirp": { "version": "0.5.1", "bundled": true, - "optional": true, "requires": { "minimist": "0.0.8" } @@ -2854,8 +2842,7 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true, - "optional": true + "bundled": true }, "object-assign": { "version": "4.1.1", @@ -2865,7 +2852,6 @@ "once": { "version": "1.4.0", "bundled": true, - "optional": true, "requires": { "wrappy": "1" } @@ -2941,8 +2927,7 @@ }, "safe-buffer": { "version": "5.1.2", - "bundled": true, - "optional": true + "bundled": true }, "safer-buffer": { "version": "2.1.2", @@ -2972,7 +2957,6 @@ "string-width": { "version": "1.0.2", "bundled": true, - "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -2990,7 +2974,6 @@ "strip-ansi": { "version": "3.0.1", "bundled": true, - "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -3029,13 +3012,11 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true, - "optional": true + "bundled": true }, "yallist": { "version": "3.0.3", - "bundled": true, - "optional": true + "bundled": true } } }, @@ -3182,7 +3163,7 @@ "globals": { "version": "9.18.0", "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha1-qjiWs+abSH8X4x7SFD1pqOMMLYo=", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", "dev": true }, "got": { @@ -3870,7 +3851,7 @@ "json-loader": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", - "integrity": "sha1-3KFKcCNf+C8KyaOr62DTN6NlGF0=" + "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==" }, "json-stable-stringify": { "version": "1.0.1", @@ -4177,7 +4158,7 @@ "miller-rabin": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha1-8IA1HIZbDcViqEYpZtqlNUPHik0=", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", "requires": { "bn.js": "^4.0.0", "brorand": "^1.0.1" @@ -4201,7 +4182,7 @@ "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { "brace-expansion": "^1.1.7" } @@ -4375,7 +4356,7 @@ "node-fetch": { "version": "1.7.3", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", - "integrity": "sha1-mA9vcthSEaU0fGsrwYxbhMPrR+8=", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", "requires": { "encoding": "^0.1.11", "is-stream": "^1.0.1" @@ -4896,7 +4877,7 @@ "promise": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha1-BktyYCsY+Q8pGSuLG8QY/9Hr078=", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", "requires": { "asap": "~2.0.3" } @@ -5227,7 +5208,7 @@ "redux": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/redux/-/redux-3.7.2.tgz", - "integrity": "sha1-BrcxIyFZAdJdBlvjQusCa8HIU3s=", + "integrity": "sha512-pNqnf9q1hI5HHZRBkj3bAngGZW/JMCmexDlOxw4XagXY2o1327nHH54LoTjiPJ0gizoqPDRqWyX/00g0hD6w+A==", "requires": { "lodash": "^4.2.1", "lodash-es": "^4.2.1", @@ -5259,7 +5240,7 @@ "regenerator-transform": { "version": "0.10.1", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", - "integrity": "sha1-HkmWg3Ix2ot/PPQRTXG1aRoGgN0=", + "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", "dev": true, "requires": { "babel-runtime": "^6.18.0", @@ -6241,7 +6222,7 @@ "source-map-support": { "version": "0.4.18", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha1-Aoam3ovkJkEzhZTpfM6nXwosWF8=", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", "dev": true, "requires": { "source-map": "^0.5.6" @@ -6893,7 +6874,7 @@ "webpack": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-2.7.0.tgz", - "integrity": "sha1-sqEiaAQ3P/09A+qca9UlBnA09rE=", + "integrity": "sha512-MjAA0ZqO1ba7ZQJRnoCdbM56mmFpipOPUv/vQpwwfSI42p5PVDdoiuK2AL2FwFUVgT859Jr43bFZXRg/LNsqvg==", "requires": { "acorn": "^5.0.0", "acorn-dynamic-import": "^2.0.0", From f855d949a3d1c5f3a5f44e3dff31c12f3bbf361a Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Fri, 6 Sep 2019 15:26:30 +0200 Subject: [PATCH 012/197] Fix #617: AFS: Global and per-operation configuration --- docs/Web-Flow-0.23.0.md | 20 +++++++++++++ docs/sql/mysql/create_schema.sql | 3 +- docs/sql/oracle/create_schema.sql | 3 +- .../model/enumeration/AfsType.java | 25 ++++++++++++++++ .../model/enumeration/BannerType.java | 15 ++++++++++ .../model/enumeration/ValueFormatType.java | 15 ++++++++++ .../GetOperationConfigDetailResponse.java | 17 +++++++++++ .../converter/OperationConfigConverter.java | 1 + .../model/entity/OperationConfigEntity.java | 19 ++++++++++++ .../WebFlowServicesConfiguration.java | 29 +++++++++++++++++++ .../src/main/resources/application.properties | 4 +++ 11 files changed, 149 insertions(+), 2 deletions(-) create mode 100644 docs/Web-Flow-0.23.0.md create mode 100644 powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/enumeration/AfsType.java diff --git a/docs/Web-Flow-0.23.0.md b/docs/Web-Flow-0.23.0.md new file mode 100644 index 000000000..3fc4000df --- /dev/null +++ b/docs/Web-Flow-0.23.0.md @@ -0,0 +1,20 @@ +# Migration from 0.22.0 to 0.23.0 + +## Changes Since 0.22.0 + +### Database Changes + +Following database changes were introduced in version `0.23.0`: + +- We added `afs_enabled` column to table `ns_operation_config` + +DDL update script for Oracle: +``` +ALTER TABLE ns_operation_config ADD afs_enabled NUMBER(1) DEFAULT 0 NOT NULL; +``` + +DDL update script for MySQL: +```sql +ALTER TABLE `ns_operation_config` ADD `afs_enabled` BOOLEAN NOT NULL DEFAULT FALSE; +``` + diff --git a/docs/sql/mysql/create_schema.sql b/docs/sql/mysql/create_schema.sql index 257051e46..1e47dd4a4 100644 --- a/docs/sql/mysql/create_schema.sql +++ b/docs/sql/mysql/create_schema.sql @@ -89,7 +89,8 @@ CREATE TABLE ns_operation_config ( operation_name VARCHAR(32) PRIMARY KEY NOT NULL, template_version CHAR NOT NULL, template_id INTEGER NOT NULL, - mobile_token_mode VARCHAR(256) NOT NULL + mobile_token_mode VARCHAR(256) NOT NULL, + afs_enabled BOOLEAN NOT NULL DEFAULT FALSE, ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- Table ns_organization stores definitions of organizations related to the operations. diff --git a/docs/sql/oracle/create_schema.sql b/docs/sql/oracle/create_schema.sql index 15da7403c..ba51a5814 100644 --- a/docs/sql/oracle/create_schema.sql +++ b/docs/sql/oracle/create_schema.sql @@ -89,7 +89,8 @@ CREATE TABLE ns_operation_config ( operation_name VARCHAR(32) PRIMARY KEY NOT NULL, template_version VARCHAR(1) NOT NULL, template_id INTEGER NOT NULL, - mobile_token_mode VARCHAR(256) NOT NULL + mobile_token_mode VARCHAR(256) NOT NULL, + afs_enabled NUMBER(1) DEFAULT 0 NOT NULL ); -- Table ns_organization stores definitions of organizations related to the operations. diff --git a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/enumeration/AfsType.java b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/enumeration/AfsType.java new file mode 100644 index 000000000..e133c9248 --- /dev/null +++ b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/enumeration/AfsType.java @@ -0,0 +1,25 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.getlime.security.powerauth.lib.dataadapter.model.enumeration; + +/** + * Product used for anti-fraud service integration. + * + * @author Roman Strobl, roman.strobl@wultra.com + */ +public enum AfsType { + THREAT_MARK +} diff --git a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/enumeration/BannerType.java b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/enumeration/BannerType.java index 24b306e09..5c1b077b1 100644 --- a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/enumeration/BannerType.java +++ b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/enumeration/BannerType.java @@ -1,3 +1,18 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package io.getlime.security.powerauth.lib.dataadapter.model.enumeration; /** diff --git a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/enumeration/ValueFormatType.java b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/enumeration/ValueFormatType.java index a6cb8f8fb..8de5f836d 100644 --- a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/enumeration/ValueFormatType.java +++ b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/enumeration/ValueFormatType.java @@ -1,3 +1,18 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package io.getlime.security.powerauth.lib.dataadapter.model.enumeration; /** diff --git a/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/response/GetOperationConfigDetailResponse.java b/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/response/GetOperationConfigDetailResponse.java index 025512c13..f27a821fe 100644 --- a/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/response/GetOperationConfigDetailResponse.java +++ b/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/response/GetOperationConfigDetailResponse.java @@ -26,6 +26,7 @@ public class GetOperationConfigDetailResponse { private String templateVersion; private Integer templateId; private String mobileTokenMode; + private boolean afsEnabled; /** * Get operation name. @@ -90,4 +91,20 @@ public String getMobileTokenMode() { public void setMobileTokenMode(String mobileTokenMode) { this.mobileTokenMode = mobileTokenMode; } + + /** + * Get whether anti-fraud system is enabled. + * @return Whether anti-fraud system is enabled. + */ + public boolean isAfsEnabled() { + return afsEnabled; + } + + /** + * Set whether anti-fraud system is enabled. + * @param afsEnabled Whether anti-fraud system is enabled. + */ + public void setAfsEnabled(boolean afsEnabled) { + this.afsEnabled = afsEnabled; + } } diff --git a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/converter/OperationConfigConverter.java b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/converter/OperationConfigConverter.java index 0860a9506..2d67fe527 100644 --- a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/converter/OperationConfigConverter.java +++ b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/converter/OperationConfigConverter.java @@ -36,6 +36,7 @@ public GetOperationConfigDetailResponse fromOperationConfigEntity(OperationConfi response.setTemplateVersion(operationConfig.getTemplateVersion()); response.setTemplateId(operationConfig.getTemplateId()); response.setMobileTokenMode(operationConfig.getMobileTokenMode()); + response.setAfsEnabled(operationConfig.getAfsEnabled()); return response; } } diff --git a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/repository/model/entity/OperationConfigEntity.java b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/repository/model/entity/OperationConfigEntity.java index 4d3b32b3a..75946bcdc 100644 --- a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/repository/model/entity/OperationConfigEntity.java +++ b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/repository/model/entity/OperationConfigEntity.java @@ -46,6 +46,9 @@ public class OperationConfigEntity implements Serializable { @Column(name = "mobile_token_mode") private String mobileTokenMode; + @Column(name = "afs_enabled") + private boolean afsEnabled; + /** * Get operation name. * @return Operation name. @@ -110,6 +113,22 @@ public void setMobileTokenMode(String mobileTokenMode) { this.mobileTokenMode = mobileTokenMode; } + /** + * Get whether anti-fraud system is enabled. + * @return Whether anti-fraud system is enabled. + */ + public boolean getAfsEnabled() { + return afsEnabled; + } + + /** + * Set whether anti-fraud system is enabled. + * @param afsEnabled Whether anti-fraud system is enabled. + */ + public void setAfsEnabled(boolean afsEnabled) { + this.afsEnabled = afsEnabled; + } + @Override public boolean equals(Object o) { if (this == o) return true; diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/configuration/WebFlowServicesConfiguration.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/configuration/WebFlowServicesConfiguration.java index 6674d8da7..767eebfd8 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/configuration/WebFlowServicesConfiguration.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/configuration/WebFlowServicesConfiguration.java @@ -17,6 +17,7 @@ package io.getlime.security.powerauth.lib.webflow.authentication.configuration; import io.getlime.security.powerauth.lib.dataadapter.client.DataAdapterClient; +import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.AfsType; import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.PasswordProtectionType; import io.getlime.security.powerauth.lib.nextstep.client.NextStepClient; import io.getlime.security.powerauth.lib.webflow.authentication.service.SSLConfigurationService; @@ -89,6 +90,18 @@ public class WebFlowServicesConfiguration { @Value("${powerauth.webflow.timeout.warning.delayMs:60000}") private int timeoutWarningDelay; + /** + * Whether anti-fraud system integration is enabled. + */ + @Value("${powerauth.webflow.afs.enabled:false}") + private boolean afsEnabled; + + /** + * Type of product used for anti-fraud system integration. + */ + @Value("${powerauth.webflow.afs.type:THREAT_MARK}") + private AfsType afsType; + @Autowired public WebFlowServicesConfiguration(SSLConfigurationService sslConfigurationService) { this.sslConfigurationService = sslConfigurationService; @@ -187,4 +200,20 @@ public int getTimeoutWarningDelay() { public void setTimeoutWarningDelay(int timeoutWarningDelay) { this.timeoutWarningDelay = timeoutWarningDelay; } + + /** + * Get whether anti-fraud system integration is enabled. + * @return Whether anti-fraud system integration is enabled. + */ + public boolean isAfsEnabled() { + return afsEnabled; + } + + /** + * Get anti-fraud system type. + * @return Anti-fraud system type. + */ + public AfsType getAfsType() { + return afsType; + } } diff --git a/powerauth-webflow/src/main/resources/application.properties b/powerauth-webflow/src/main/resources/application.properties index c98d542fc..ec5c14d32 100644 --- a/powerauth-webflow/src/main/resources/application.properties +++ b/powerauth-webflow/src/main/resources/application.properties @@ -66,6 +66,10 @@ powerauth.webflow.sms.resend.delayMs=60000 # Configuration of Delay for Showing Operation Timeout Warning in Milliseconds powerauth.webflow.timeout.warning.delayMs=60000 +# Anti-fraud system configuration +powerauth.webflow.afs.enabled=false +powerauth.webflow.afs.type=ThreatMark + # Disable JMX spring.jmx.enabled=false From 50eb193ef36d37759cea133a45aaf2fc7f9f52ba Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Fri, 6 Sep 2019 16:50:41 +0200 Subject: [PATCH 013/197] Update method name --- .../app/nextstep/converter/OperationConfigConverter.java | 2 +- .../nextstep/repository/model/entity/OperationConfigEntity.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/converter/OperationConfigConverter.java b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/converter/OperationConfigConverter.java index 2d67fe527..da0b2ffe3 100644 --- a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/converter/OperationConfigConverter.java +++ b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/converter/OperationConfigConverter.java @@ -36,7 +36,7 @@ public GetOperationConfigDetailResponse fromOperationConfigEntity(OperationConfi response.setTemplateVersion(operationConfig.getTemplateVersion()); response.setTemplateId(operationConfig.getTemplateId()); response.setMobileTokenMode(operationConfig.getMobileTokenMode()); - response.setAfsEnabled(operationConfig.getAfsEnabled()); + response.setAfsEnabled(operationConfig.isAfsEnabled()); return response; } } diff --git a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/repository/model/entity/OperationConfigEntity.java b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/repository/model/entity/OperationConfigEntity.java index 75946bcdc..427144795 100644 --- a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/repository/model/entity/OperationConfigEntity.java +++ b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/repository/model/entity/OperationConfigEntity.java @@ -117,7 +117,7 @@ public void setMobileTokenMode(String mobileTokenMode) { * Get whether anti-fraud system is enabled. * @return Whether anti-fraud system is enabled. */ - public boolean getAfsEnabled() { + public boolean isAfsEnabled() { return afsEnabled; } From e97bce1faef4bbfbe3eb342aa964f1d712b19ade Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Tue, 10 Sep 2019 17:28:39 +0200 Subject: [PATCH 014/197] Fix #622: AFS: Refactor Web Socket integration, detect browser closed event --- docs/Web-Flow-0.23.0.md | 13 ++ docs/sql/mysql/create_schema.sql | 24 +--- docs/sql/mysql/drop_schema.sql | 2 - docs/sql/oracle/create_schema.sql | 22 +--- docs/sql/oracle/drop_schema.sql | 9 -- .../mtoken/controller/MessageController.java | 12 +- .../controller/MobileAppApiController.java | 2 +- .../MobileTokenOnlineController.java | 17 +-- .../response/MobileTokenInitResponse.java | 16 --- powerauth-webflow-authentication/pom.xml | 8 ++ .../controller/AuthMethodController.java | 35 ++---- .../listener/WebSocketDisconnectListener.java | 114 ++++++++++++++++++ .../request/WebSocketRegistrationRequest.java | 2 +- .../WebSocketAuthorizationResponse.java | 2 +- .../WebSocketRegistrationResponse.java | 2 +- .../OperationSessionRepository.java | 5 + .../model/entity/OperationSessionEntity.java | 22 ++++ .../service/AuthMethodResolutionService.java | 61 ++++++++++ .../service/OperationSessionService.java | 47 +++++++- .../service/WebSocketMessageService.java | 79 ++++-------- .../static/resources/messages_cs.properties | 3 + .../static/resources/messages_en.properties | 3 + powerauth-webflow/pom.xml | 8 -- .../src/main/js/actions/approvalScaActions.js | 40 ++---- .../src/main/js/actions/consentActions.js | 45 +++---- .../src/main/js/actions/errorHandling.js | 54 +++++++++ .../src/main/js/actions/loginScaActions.js | 42 ++----- .../src/main/js/actions/smsAuthActions.js | 46 ++----- .../main/js/actions/startHandshakeActions.js | 11 +- .../js/actions/tokenAuthOfflineActions.js | 42 ++----- .../main/js/actions/tokenAuthOnlineActions.js | 33 ++--- .../src/main/js/components/error.js | 6 + .../src/main/js/components/startHandshake.js | 24 +++- .../src/main/js/components/success.js | 6 + .../src/main/js/components/tokenAuth.js | 22 ++-- .../src/main/js/dispatcher/dispatcher.js | 8 ++ .../src/main/js/websocket-client.js | 54 ++++++--- .../src/main/resources/application.properties | 2 +- .../src/main/resources/templates/index.html | 12 ++ 39 files changed, 566 insertions(+), 389 deletions(-) create mode 100644 powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/listener/WebSocketDisconnectListener.java rename {powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken => powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication}/model/request/WebSocketRegistrationRequest.java (97%) rename {powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken => powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication}/model/response/WebSocketAuthorizationResponse.java (98%) rename {powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken => powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication}/model/response/WebSocketRegistrationResponse.java (97%) create mode 100644 powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AuthMethodResolutionService.java rename {powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken => powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication}/service/WebSocketMessageService.java (52%) create mode 100644 powerauth-webflow/src/main/js/actions/errorHandling.js diff --git a/docs/Web-Flow-0.23.0.md b/docs/Web-Flow-0.23.0.md index 3fc4000df..b21dcbf5f 100644 --- a/docs/Web-Flow-0.23.0.md +++ b/docs/Web-Flow-0.23.0.md @@ -7,14 +7,27 @@ Following database changes were introduced in version `0.23.0`: - We added `afs_enabled` column to table `ns_operation_config` +- We added `operation_hash` and `websocket_session_id` columns to table `wf_operation_session` DDL update script for Oracle: ``` ALTER TABLE ns_operation_config ADD afs_enabled NUMBER(1) DEFAULT 0 NOT NULL; + +ALTER TABLE wf_operation_session ADD operation_hash VARCHAR(256) DEFAULT 0 NOT NULL; +ALTER TABLE wf_operation_session ADD websocket_session_id VARCHAR(32) DEFAULT 0 NOT NULL; + +CREATE INDEX wf_operation_hash ON wf_operation_session (operation_hash); +CREATE INDEX wf_websocket_session ON wf_operation_session (websocket_session_id); ``` DDL update script for MySQL: ```sql ALTER TABLE `ns_operation_config` ADD `afs_enabled` BOOLEAN NOT NULL DEFAULT FALSE; + +ALTER TABLE `wf_operation_session` ADD `operation_hash` VARCHAR(256), +ALTER TABLE `wf_operation_session` ADD `websocket_session_id` VARCHAR(32), + +CREATE INDEX wf_operation_hash ON wf_operation_session (operation_hash); +CREATE INDEX wf_websocket_session ON wf_operation_session (websocket_session_id); ``` diff --git a/docs/sql/mysql/create_schema.sql b/docs/sql/mysql/create_schema.sql index 1e47dd4a4..4e8163c3e 100644 --- a/docs/sql/mysql/create_schema.sql +++ b/docs/sql/mysql/create_schema.sql @@ -90,7 +90,7 @@ CREATE TABLE ns_operation_config ( template_version CHAR NOT NULL, template_id INTEGER NOT NULL, mobile_token_mode VARCHAR(256) NOT NULL, - afs_enabled BOOLEAN NOT NULL DEFAULT FALSE, + afs_enabled BOOLEAN NOT NULL DEFAULT FALSE ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- Table ns_organization stores definitions of organizations related to the operations. @@ -160,6 +160,8 @@ CREATE TABLE ns_step_definition ( CREATE TABLE wf_operation_session ( operation_id VARCHAR(256) PRIMARY KEY NOT NULL, http_session_id VARCHAR(256) NOT NULL, + operation_hash VARCHAR(256), + websocket_session_id VARCHAR(32), result VARCHAR(32) NOT NULL, timestamp_created TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; @@ -181,21 +183,5 @@ CREATE TABLE da_sms_authorization ( timestamp_expires TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; --- Table UserConnection is required only for the demo client application which is based on Spring Social. --- See: https://github.com/spring-projects/spring-social -/* -CREATE TABLE UserConnection ( - userId VARCHAR(255) NOT NULL, - providerId VARCHAR(255) NOT NULL, - providerUserId VARCHAR(255), - rank INTEGER NOT NULL, - displayName VARCHAR(255), - profileUrl VARCHAR(512), - imageUrl VARCHAR(512), - accessToken VARCHAR(512) NOT NULL, - secret VARCHAR(512), - refreshToken VARCHAR(512), - expireTime BIGINT, -PRIMARY KEY (userId, providerId, providerUserId)); -CREATE UNIQUE INDEX UserConnectionRank on UserConnection(userId, providerId, rank); -*/ +CREATE INDEX wf_operation_hash ON wf_operation_session (operation_hash); +CREATE INDEX wf_websocket_session ON wf_operation_session (websocket_session_id); diff --git a/docs/sql/mysql/drop_schema.sql b/docs/sql/mysql/drop_schema.sql index a8e5658a5..4617c56c7 100644 --- a/docs/sql/mysql/drop_schema.sql +++ b/docs/sql/mysql/drop_schema.sql @@ -13,5 +13,3 @@ DROP TABLE IF EXISTS oauth_access_token; DROP TABLE IF EXISTS oauth_client_token; DROP TABLE IF EXISTS oauth_client_details; --- This table is only required for demo client application --- DROP TABLE IF EXISTS UserConnection; diff --git a/docs/sql/oracle/create_schema.sql b/docs/sql/oracle/create_schema.sql index ba51a5814..f85d9b88b 100644 --- a/docs/sql/oracle/create_schema.sql +++ b/docs/sql/oracle/create_schema.sql @@ -161,6 +161,8 @@ CREATE TABLE ns_step_definition ( CREATE TABLE wf_operation_session ( operation_id VARCHAR(256) PRIMARY KEY NOT NULL, http_session_id VARCHAR(256) NOT NULL, + operation_hash VARCHAR(256), + websocket_session_id VARCHAR(32), result VARCHAR(32) NOT NULL, timestamp_created TIMESTAMP ); @@ -182,21 +184,5 @@ CREATE TABLE da_sms_authorization ( timestamp_expires TIMESTAMP ); --- Table UserConnection is required only for the demo client application which is based on Spring Social. --- See: https://github.com/spring-projects/spring-social -/* -CREATE TABLE UserConnection ( - userId VARCHAR(255) NOT NULL, - providerId VARCHAR(255) NOT NULL, - providerUserId VARCHAR(255), - rank INTEGER NOT NULL, - displayName VARCHAR(255), - profileUrl VARCHAR(512), - imageUrl VARCHAR(512), - accessToken VARCHAR(512) NOT NULL, - secret VARCHAR(512), - refreshToken VARCHAR(512), - expireTime NUMBER(19), -PRIMARY KEY (userId, providerId, providerUserId)); -CREATE UNIQUE INDEX UserConnectionRank on UserConnection(userId, providerId, rank); -*/ +CREATE INDEX wf_operation_hash ON wf_operation_session (operation_hash); +CREATE INDEX wf_websocket_session ON wf_operation_session (websocket_session_id); diff --git a/docs/sql/oracle/drop_schema.sql b/docs/sql/oracle/drop_schema.sql index 2767b1ec8..dc6b1c926 100644 --- a/docs/sql/oracle/drop_schema.sql +++ b/docs/sql/oracle/drop_schema.sql @@ -96,13 +96,4 @@ EXCEPTION END; / -/* This table is required only for the demo client application -BEGIN - EXECUTE IMMEDIATE 'DROP TABLE UserConnection'; -EXCEPTION - WHEN OTHERS THEN NULL; -END; -/ -*/ - diff --git a/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/controller/MessageController.java b/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/controller/MessageController.java index e93493359..f031a05ac 100644 --- a/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/controller/MessageController.java +++ b/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/controller/MessageController.java @@ -15,8 +15,8 @@ */ package io.getlime.security.powerauth.lib.webflow.authentication.mtoken.controller; -import io.getlime.security.powerauth.lib.webflow.authentication.mtoken.model.request.WebSocketRegistrationRequest; -import io.getlime.security.powerauth.lib.webflow.authentication.mtoken.service.WebSocketMessageService; +import io.getlime.security.powerauth.lib.webflow.authentication.model.request.WebSocketRegistrationRequest; +import io.getlime.security.powerauth.lib.webflow.authentication.service.WebSocketMessageService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.handler.annotation.MessageMapping; import org.springframework.messaging.simp.SimpMessageHeaderAccessor; @@ -30,8 +30,12 @@ @Controller public class MessageController { + private final WebSocketMessageService webSocketMessageService; + @Autowired - private WebSocketMessageService webSocketMessageService; + public MessageController(WebSocketMessageService webSocketMessageService) { + this.webSocketMessageService = webSocketMessageService; + } /** * Registration of WebSockets. WebSocket sessions are linked to operations for later authorization messages @@ -45,7 +49,7 @@ public class MessageController { public void register(SimpMessageHeaderAccessor headerAccessor, WebSocketRegistrationRequest registrationRequest) { String sessionId = headerAccessor.getSessionId(); String webSocketId = registrationRequest.getWebSocketId(); - webSocketMessageService.putWebSocketSession(webSocketId, sessionId); + webSocketMessageService.storeWebSocketSession(webSocketId, sessionId); webSocketMessageService.sendRegistrationMessage(webSocketId, sessionId); } diff --git a/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/controller/MobileAppApiController.java b/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/controller/MobileAppApiController.java index 4b4724674..e4b12c6f5 100644 --- a/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/controller/MobileAppApiController.java +++ b/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/controller/MobileAppApiController.java @@ -39,8 +39,8 @@ import io.getlime.security.powerauth.lib.webflow.authentication.mtoken.model.converter.OperationConverter; import io.getlime.security.powerauth.lib.webflow.authentication.mtoken.model.request.MobileTokenAuthenticationRequest; import io.getlime.security.powerauth.lib.webflow.authentication.mtoken.model.response.MobileTokenAuthenticationResponse; -import io.getlime.security.powerauth.lib.webflow.authentication.mtoken.service.WebSocketMessageService; import io.getlime.security.powerauth.lib.webflow.authentication.service.AuthMethodQueryService; +import io.getlime.security.powerauth.lib.webflow.authentication.service.WebSocketMessageService; import io.getlime.security.powerauth.rest.api.base.authentication.PowerAuthApiAuthentication; import io.getlime.security.powerauth.rest.api.base.exception.PowerAuthAuthenticationException; import io.getlime.security.powerauth.rest.api.spring.annotation.PowerAuth; diff --git a/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/controller/MobileTokenOnlineController.java b/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/controller/MobileTokenOnlineController.java index a211c4eaf..662b108a6 100644 --- a/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/controller/MobileTokenOnlineController.java +++ b/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/controller/MobileTokenOnlineController.java @@ -32,7 +32,6 @@ import io.getlime.security.powerauth.lib.webflow.authentication.mtoken.model.response.MobileTokenAuthenticationResponse; import io.getlime.security.powerauth.lib.webflow.authentication.mtoken.model.response.MobileTokenInitResponse; import io.getlime.security.powerauth.lib.webflow.authentication.mtoken.service.PushMessageService; -import io.getlime.security.powerauth.lib.webflow.authentication.mtoken.service.WebSocketMessageService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -56,21 +55,18 @@ public class MobileTokenOnlineController extends AuthMethodControllerorg.springframework.boot spring-boot-devtools + + org.springframework + spring-messaging + + + org.springframework + spring-websocket + diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/controller/AuthMethodController.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/controller/AuthMethodController.java index 0f101169a..120929e0e 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/controller/AuthMethodController.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/controller/AuthMethodController.java @@ -37,10 +37,7 @@ import io.getlime.security.powerauth.lib.webflow.authentication.model.converter.FormDataConverter; import io.getlime.security.powerauth.lib.webflow.authentication.repository.model.entity.OperationSessionEntity; import io.getlime.security.powerauth.lib.webflow.authentication.security.UserOperationAuthentication; -import io.getlime.security.powerauth.lib.webflow.authentication.service.AuthMethodQueryService; -import io.getlime.security.powerauth.lib.webflow.authentication.service.AuthenticationManagementService; -import io.getlime.security.powerauth.lib.webflow.authentication.service.MessageTranslationService; -import io.getlime.security.powerauth.lib.webflow.authentication.service.OperationSessionService; +import io.getlime.security.powerauth.lib.webflow.authentication.service.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -88,6 +85,9 @@ public abstract class AuthMethodController { + + private static final Logger logger = LoggerFactory.getLogger(WebSocketDisconnectListener.class); + + private final OperationSessionService operationSessionService; + private final AuthMethodResolutionService authMethodResolutionService; + private final NextStepClient nextStepClient; + private final DataAdapterClient dataAdapterClient; + + /** + * Constructor for Web Socket disconnect listener. + * @param operationSessionService Operation to session mapping service. + * @param authMethodResolutionService Authentication method resolution service. + * @param nextStepClient Next Step client. + * @param dataAdapterClient Data Adapter client. + */ + @Autowired + public WebSocketDisconnectListener(OperationSessionService operationSessionService, AuthMethodResolutionService authMethodResolutionService, NextStepClient nextStepClient, DataAdapterClient dataAdapterClient) { + this.operationSessionService = operationSessionService; + this.authMethodResolutionService = authMethodResolutionService; + this.nextStepClient = nextStepClient; + this.dataAdapterClient = dataAdapterClient; + } + + /** + * In case user closes web browser a session disconnect event is processed. Check the operation result and cancel it if necessary. + * @param sessionDisconnectEvent Session disconnect event. + */ + @Override + public void onApplicationEvent(SessionDisconnectEvent sessionDisconnectEvent) { + String sessionId = sessionDisconnectEvent.getSessionId(); + String operationId = operationSessionService.lookupOperationIdByWebSocketSessionId(sessionId); + if (operationId == null) { + // Operation does not exist, nothing to do + return; + } + try { + ObjectResponse operationDetailResponse = nextStepClient.getOperationDetail(operationId); + GetOperationDetailResponse operationDetail = operationDetailResponse.getResponseObject(); + if (operationDetail.getResult() == AuthResult.CONTINUE) { + // Update operation result in operation to session mapping + operationSessionService.updateOperationResult(operationId, AuthResult.FAILED); + // Cancel operation due to interrupt by close browser event + List operationHistory = operationDetail.getHistory(); + if (!operationHistory.isEmpty()) { + // Check whether authentication method is overridden, in this case use overridden authentication method + AuthMethod authMethod = authMethodResolutionService.resolveAuthMethodOverride(operationDetail); + if (authMethod == null) { + // Authentication method is not overridden, use last known authentication method + authMethod = operationHistory.get(operationHistory.size() - 1).getAuthMethod(); + } + nextStepClient.updateOperation(operationDetail.getOperationId(), operationDetail.getUserId(), operationDetail.getOrganizationId(), authMethod, AuthStepResult.CANCELED, OperationCancelReason.INTERRUPTED_OPERATION.toString(), null, operationDetail.getApplicationContext()); + // Notify Data Adapter about cancellation + FormData formData = new FormDataConverter().fromOperationFormData(operationDetail.getFormData()); + OperationContext operationContext = new OperationContext(operationDetail.getOperationId(), operationDetail.getOperationName(), operationDetail.getOperationData(), formData, operationDetail.getApplicationContext()); + dataAdapterClient.operationChangedNotification(OperationChange.CANCELED, operationDetail.getUserId(), operationDetail.getOrganizationId(), operationContext); + } else { + logger.warn("Operation history is not available for operation ID {}", operationId); + } + } + } catch (NextStepServiceException | DataAdapterClientErrorException ex) { + logger.error(ex.getMessage(), ex); + } + } +} diff --git a/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/model/request/WebSocketRegistrationRequest.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/model/request/WebSocketRegistrationRequest.java similarity index 97% rename from powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/model/request/WebSocketRegistrationRequest.java rename to powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/model/request/WebSocketRegistrationRequest.java index 62236ed0a..ac93c85da 100644 --- a/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/model/request/WebSocketRegistrationRequest.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/model/request/WebSocketRegistrationRequest.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.getlime.security.powerauth.lib.webflow.authentication.mtoken.model.request; +package io.getlime.security.powerauth.lib.webflow.authentication.model.request; /** * Request for registration of a WebSocket session. diff --git a/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/model/response/WebSocketAuthorizationResponse.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/model/response/WebSocketAuthorizationResponse.java similarity index 98% rename from powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/model/response/WebSocketAuthorizationResponse.java rename to powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/model/response/WebSocketAuthorizationResponse.java index d192a7432..2117ea90c 100644 --- a/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/model/response/WebSocketAuthorizationResponse.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/model/response/WebSocketAuthorizationResponse.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.getlime.security.powerauth.lib.webflow.authentication.mtoken.model.response; +package io.getlime.security.powerauth.lib.webflow.authentication.model.response; import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthResult; diff --git a/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/model/response/WebSocketRegistrationResponse.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/model/response/WebSocketRegistrationResponse.java similarity index 97% rename from powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/model/response/WebSocketRegistrationResponse.java rename to powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/model/response/WebSocketRegistrationResponse.java index 3556a652c..02fa1ece8 100644 --- a/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/model/response/WebSocketRegistrationResponse.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/model/response/WebSocketRegistrationResponse.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.getlime.security.powerauth.lib.webflow.authentication.mtoken.model.response; +package io.getlime.security.powerauth.lib.webflow.authentication.model.response; /** * Response to registration of a new WebSocket session. diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/repository/OperationSessionRepository.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/repository/OperationSessionRepository.java index c9230f496..8cbd17a20 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/repository/OperationSessionRepository.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/repository/OperationSessionRepository.java @@ -34,4 +34,9 @@ public interface OperationSessionRepository extends CrudRepository findActiveOperationsByHttpSessionId(String httpSessionId); OperationSessionEntity findByOperationId(String operationId); + + OperationSessionEntity findByOperationHash(String operationHash); + + OperationSessionEntity findByWebSocketSessionId(String operationHash); + } diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/repository/model/entity/OperationSessionEntity.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/repository/model/entity/OperationSessionEntity.java index c249b6973..aa9d8636d 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/repository/model/entity/OperationSessionEntity.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/repository/model/entity/OperationSessionEntity.java @@ -40,6 +40,12 @@ public class OperationSessionEntity implements Serializable { @Column(name = "http_session_id") private String httpSessionId; + @Column(name = "operation_hash") + private String operationHash; + + @Column(name = "websocket_session_id") + private String webSocketSessionId; + @Column(name = "result") @Enumerated(EnumType.STRING) private AuthResult result; @@ -74,6 +80,22 @@ public void setHttpSessionId(String httpSessionId) { this.httpSessionId = httpSessionId; } + public String getOperationHash() { + return operationHash; + } + + public void setOperationHash(String operationHash) { + this.operationHash = operationHash; + } + + public String getWebSocketSessionId() { + return webSocketSessionId; + } + + public void setWebSocketSessionId(String webSocketSessionId) { + this.webSocketSessionId = webSocketSessionId; + } + public AuthResult getResult() { return result; } diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AuthMethodResolutionService.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AuthMethodResolutionService.java new file mode 100644 index 000000000..f5569eacf --- /dev/null +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AuthMethodResolutionService.java @@ -0,0 +1,61 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.getlime.security.powerauth.lib.webflow.authentication.service; + +import io.getlime.security.powerauth.lib.nextstep.model.entity.OperationHistory; +import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthMethod; +import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthStepResult; +import io.getlime.security.powerauth.lib.nextstep.model.response.GetOperationDetailResponse; +import org.springframework.stereotype.Service; + +/** + * Service for resolution of authentication methods. SCA methods override authentication method name to support + * delegation to other authentication methods. + * + * @author Roman Strobl, roman.strobl@wultra.com + */ +@Service +public class AuthMethodResolutionService { + + /** + * Check whether current authentication method is overridden. Overriding is used for SCA methods which delegate + * functionality to other methods. + * @param operation Operation. + * @return Override authentication method or null in case authentication method is not overridden. + */ + public AuthMethod resolveAuthMethodOverride(GetOperationDetailResponse operation) { + if (operation == null || operation.getHistory().isEmpty()) { + return null; + } + OperationHistory currentHistory = operation.getHistory().get(operation.getHistory().size() - 1); + // Handle special case when LOGIN_SCA method is used, this authentication method delegates work + // to other authentication methods. The first case is when current step is confirmed and contains LOGIN_SCA + // as chosen authentication method (typically in INIT step). + // Same logic is valid for APPROVAL_SCA method. + if (currentHistory.getRequestAuthStepResult() == AuthStepResult.CONFIRMED && + (operation.getChosenAuthMethod() == AuthMethod.LOGIN_SCA || operation.getChosenAuthMethod() == AuthMethod.APPROVAL_SCA)) { + return operation.getChosenAuthMethod(); + } + // The second case is when the current step has LOGIN_SCA or APPROVAL_SCA as an authentication method and next + // authentication method has not been chosen yet. + if (operation.getChosenAuthMethod() == null && + (currentHistory.getAuthMethod() == AuthMethod.LOGIN_SCA || currentHistory.getAuthMethod() == AuthMethod.APPROVAL_SCA)) { + return currentHistory.getAuthMethod(); + } + // Regular case with no delegation. + return null; + } +} diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/OperationSessionService.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/OperationSessionService.java index 379f906de..352068266 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/OperationSessionService.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/OperationSessionService.java @@ -22,7 +22,7 @@ import org.springframework.stereotype.Service; import javax.xml.bind.DatatypeConverter; -import java.io.UnsupportedEncodingException; +import java.nio.charset.StandardCharsets; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.List; @@ -63,6 +63,8 @@ public OperationSessionEntity getOperationToSessionMapping(String operationId) { */ public void persistOperationToSessionMapping(String operationId, String httpSessionId, AuthResult result) { OperationSessionEntity operationSessionEntity = new OperationSessionEntity(operationId, httpSessionId, result); + String operationHash = generateOperationHash(operationId); + operationSessionEntity.setOperationHash(operationHash); operationSessionRepository.save(operationSessionEntity); } @@ -104,10 +106,49 @@ public String generateOperationHash(String operationId) { return null; } try { - return DatatypeConverter.printHexBinary(MessageDigest.getInstance("SHA-512").digest(operationId.getBytes("UTF-8"))); - } catch (NoSuchAlgorithmException | UnsupportedEncodingException e) { + return DatatypeConverter.printHexBinary(MessageDigest.getInstance("SHA-512").digest(operationId.getBytes(StandardCharsets.UTF_8))); + } catch (NoSuchAlgorithmException e) { return null; } } + /** + * Lookup Web Socket Session ID based on operation hash. + * @param operationHash Operation hash. + * @return Web Socket Session ID or null if session was not found. + */ + public String lookupWebSocketSessionIdByOperationHash(String operationHash) { + OperationSessionEntity operationSessionEntity = operationSessionRepository.findByOperationHash(operationHash); + if (operationSessionEntity != null) { + return operationSessionEntity.getWebSocketSessionId(); + } + return null; + } + + /** + * Lookup Operation ID based on Web Socket session ID. + * @param webSocketSessionId Web Socket session ID. + * @return Operation ID or null if session was not found. + */ + public String lookupOperationIdByWebSocketSessionId(String webSocketSessionId) { + OperationSessionEntity operationSessionEntity = operationSessionRepository.findByWebSocketSessionId(webSocketSessionId); + if (operationSessionEntity != null) { + return operationSessionEntity.getOperationId(); + } + return null; + } + + /** + * Lookup an operation by operation hash and store Web Socket session ID. + * @param operationHash Operation hash. + * @param webSocketSessionId Web Socket session ID. + */ + public void storeWebSocketSessionId(String operationHash, String webSocketSessionId) { + OperationSessionEntity operationSessionEntity = operationSessionRepository.findByOperationHash(operationHash); + if (operationSessionEntity != null) { + operationSessionEntity.setWebSocketSessionId(webSocketSessionId); + operationSessionRepository.save(operationSessionEntity); + } + } + } diff --git a/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/service/WebSocketMessageService.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/WebSocketMessageService.java similarity index 52% rename from powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/service/WebSocketMessageService.java rename to powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/WebSocketMessageService.java index ad09c30d7..c6a0071c4 100644 --- a/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/service/WebSocketMessageService.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/WebSocketMessageService.java @@ -1,8 +1,8 @@ -package io.getlime.security.powerauth.lib.webflow.authentication.mtoken.service; +package io.getlime.security.powerauth.lib.webflow.authentication.service; import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthResult; -import io.getlime.security.powerauth.lib.webflow.authentication.mtoken.model.response.WebSocketAuthorizationResponse; -import io.getlime.security.powerauth.lib.webflow.authentication.mtoken.model.response.WebSocketRegistrationResponse; +import io.getlime.security.powerauth.lib.webflow.authentication.model.response.WebSocketAuthorizationResponse; +import io.getlime.security.powerauth.lib.webflow.authentication.model.response.WebSocketRegistrationResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.MessageHeaders; import org.springframework.messaging.simp.SimpMessageHeaderAccessor; @@ -10,13 +10,6 @@ import org.springframework.messaging.simp.SimpMessagingTemplate; import org.springframework.stereotype.Service; -import javax.xml.bind.DatatypeConverter; -import java.io.UnsupportedEncodingException; -import java.security.MessageDigest; -import java.security.NoSuchAlgorithmException; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentMap; - /** * Service that handles web socket to session pairing and notifying * clients about events. @@ -27,27 +20,28 @@ public class WebSocketMessageService { private final SimpMessagingTemplate websocket; - private final ConcurrentMap websocketIdToSessionMap; + private final OperationSessionService operationSessionService; /** * Service constructor. * @param websocket Web Socket simple messaging template. + * @param operationSessionService Operation to session mapping service. */ @Autowired - public WebSocketMessageService(SimpMessagingTemplate websocket) { + public WebSocketMessageService(SimpMessagingTemplate websocket, OperationSessionService operationSessionService) { this.websocket = websocket; - websocketIdToSessionMap = new ConcurrentHashMap<>(); + this.operationSessionService = operationSessionService; } /** * Create a MessageHeaders object for session. * - * @param sessionId WebSocket session ID. + * @param webSocketSessionId WebSocket session ID. * @return Message headers. */ - private MessageHeaders createHeaders(String sessionId) { + private MessageHeaders createHeaders(String webSocketSessionId) { SimpMessageHeaderAccessor headerAccessor = SimpMessageHeaderAccessor.create(SimpMessageType.MESSAGE); - headerAccessor.setSessionId(sessionId); + headerAccessor.setSessionId(webSocketSessionId); headerAccessor.setLeaveMutable(true); return headerAccessor.getMessageHeaders(); } @@ -59,8 +53,8 @@ private MessageHeaders createHeaders(String sessionId) { * @param authResult Authorization result. */ public void notifyAuthorizationComplete(String operationId, AuthResult authResult) { - final String webSocketId = generateWebSocketId(operationId); - final String sessionId = getSessionId(webSocketId); + final String webSocketId = operationSessionService.generateOperationHash(operationId); + final String sessionId = lookupWebSocketSessionId(webSocketId); WebSocketAuthorizationResponse authorizationResponse = new WebSocketAuthorizationResponse(); authorizationResponse.setWebSocketId(webSocketId); authorizationResponse.setAuthResult(authResult); @@ -69,59 +63,36 @@ public void notifyAuthorizationComplete(String operationId, AuthResult authResul } } - /** - * Generates a hash from operationId which is used as Web Socket ID. - * - * @param operationId Operation ID. - * @return webSocketId Web Socket ID. - */ - public String generateWebSocketId(String operationId) { - try { - return DatatypeConverter.printHexBinary(MessageDigest.getInstance("SHA-512").digest(operationId.getBytes("UTF-8"))); - } catch (NoSuchAlgorithmException | UnsupportedEncodingException e) { - return null; - } - } - /** * Sends a message about successful websocket registration to the user. * - * @param webSocketId Web Socket ID. + * @param operationHash Operation hash. * @param sessionId Session ID. */ - public void sendRegistrationMessage(String webSocketId, String sessionId) { + public void sendRegistrationMessage(String operationHash, String sessionId) { WebSocketRegistrationResponse registrationResponse = new WebSocketRegistrationResponse(); - registrationResponse.setWebSocketId(webSocketId); + registrationResponse.setWebSocketId(operationHash); websocket.convertAndSendToUser(sessionId, "/topic/registration", registrationResponse, createHeaders(sessionId)); } /** - * Get session ID for given Web Socket ID. + * Get Web Socket session ID for given operation hash. * - * @param webSocketId Web socket ID - * @return Session ID. + * @param operationHash Operation hash. + * @return Web Socket session ID. */ - public String getSessionId(String webSocketId) { - return websocketIdToSessionMap.get(webSocketId); + public String lookupWebSocketSessionId(String operationHash) { + return operationSessionService.lookupWebSocketSessionIdByOperationHash(operationHash); } /** - * Relate a new web socket identifier to the session with given ID. + * Store a mapping for new web socket identifier to the Web Socket session with given ID. * - * @param webSocketId Web Socket ID. - * @param sessionId Session ID. - */ - public void putWebSocketSession(String webSocketId, String sessionId) { - websocketIdToSessionMap.put(webSocketId, sessionId); - } - - /** - * Removes WebSocket session identified by operationId from session tracking. - * - * @param operationId Operation ID. + * @param operationHash Operation hash. + * @param webSocketSessionId Web Socket Session ID. */ - public void removeWebSocketSession(String operationId) { - websocketIdToSessionMap.remove(generateWebSocketId(operationId)); + public void storeWebSocketSession(String operationHash, String webSocketSessionId) { + operationSessionService.storeWebSocketSessionId(operationHash, webSocketSessionId); } } diff --git a/powerauth-webflow-i18n/src/main/resources/static/resources/messages_cs.properties b/powerauth-webflow-i18n/src/main/resources/static/resources/messages_cs.properties index a35ee782c..4570eef76 100644 --- a/powerauth-webflow-i18n/src/main/resources/static/resources/messages_cs.properties +++ b/powerauth-webflow-i18n/src/main/resources/static/resources/messages_cs.properties @@ -145,3 +145,6 @@ organization.sme=Firemní security.warning.android.title=Bezpečnostní upozornění security.warning.android.text=Vaše Android zařízení nedosahuje dostatečné úrovně zabezpečení pro tuto operaci, použijte prosím jiné zařízení. security.warning.android.override=Přesto pokračovat + +# Close browser window warning +browser.close.warning=Opravdu si přejete zrušit tuto operaci? \ No newline at end of file diff --git a/powerauth-webflow-i18n/src/main/resources/static/resources/messages_en.properties b/powerauth-webflow-i18n/src/main/resources/static/resources/messages_en.properties index 5c3e2bad1..87fa8a5c8 100644 --- a/powerauth-webflow-i18n/src/main/resources/static/resources/messages_en.properties +++ b/powerauth-webflow-i18n/src/main/resources/static/resources/messages_en.properties @@ -146,3 +146,6 @@ organization.sme=Corporate security.warning.android.title=Security Warning security.warning.android.text=Your Android device is not secure enough for confirming this operation, please use a different device. security.warning.android.override=Continue anyway + +# Close browser window warning +browser.close.warning=Are you sure you want to cancel current operation? \ No newline at end of file diff --git a/powerauth-webflow/pom.xml b/powerauth-webflow/pom.xml index c323980ff..3f3b07690 100644 --- a/powerauth-webflow/pom.xml +++ b/powerauth-webflow/pom.xml @@ -56,14 +56,6 @@ org.springframework.boot spring-boot-devtools - - org.springframework - spring-messaging - - - org.springframework - spring-websocket - org.springframework.security spring-security-messaging diff --git a/powerauth-webflow/src/main/js/actions/approvalScaActions.js b/powerauth-webflow/src/main/js/actions/approvalScaActions.js index 0aef95fbd..25693a0ae 100644 --- a/powerauth-webflow/src/main/js/actions/approvalScaActions.js +++ b/powerauth-webflow/src/main/js/actions/approvalScaActions.js @@ -14,7 +14,8 @@ * limitations under the License. */ import axios from "axios"; -import {dispatchAction, dispatchError} from "../dispatcher/dispatcher"; +import {dispatchError} from "../dispatcher/dispatcher"; +import {handleAuthFailedError} from "./errorHandling"; /** * Initialize SCA approval. @@ -60,35 +61,16 @@ export function init() { break; } case 'AUTH_FAILED': { - // handle timeout - login action can not succeed anymore, do not show login screen, show error instead - if (response.data.message === "operation.timeout") { - dispatchAction(dispatch, response); - break; - } - // if the operation has been interrupted by new operation, show an error - if (response.data.message === "operation.interrupted") { - dispatchAction(dispatch, response); - break; - } - // if the maximum number of attempts has been exceeded, show an error, the method cannot continue - if (response.data.message === "authentication.maxAttemptsExceeded") { - dispatchAction(dispatch, response); - break; - } - // if there is no supported auth method, show error, there is no point in continuing - // TODO - handle fallback - see issue #32 - if (response.data.message === "error.noAuthMethod") { - dispatchAction(dispatch, response); - break; + if (!handleAuthFailedError(dispatch, response)) { + dispatch({ + type: "SHOW_SCREEN_APPROVAL_SCA", + payload: { + loading: false, + error: true, + message: response.data.message + } + }); } - dispatch({ - type: "SHOW_SCREEN_APPROVAL_SCA", - payload: { - loading: false, - error: true, - message: response.data.message - } - }); break; } } diff --git a/powerauth-webflow/src/main/js/actions/consentActions.js b/powerauth-webflow/src/main/js/actions/consentActions.js index 924225231..63b642ce2 100644 --- a/powerauth-webflow/src/main/js/actions/consentActions.js +++ b/powerauth-webflow/src/main/js/actions/consentActions.js @@ -15,6 +15,7 @@ */ import axios from "axios"; import {dispatchAction, dispatchError} from "../dispatcher/dispatcher"; +import {handleAuthFailedError} from "./errorHandling"; /** * Initialize OAuth 2.0 consent form. @@ -88,38 +89,20 @@ export function authenticate(options) { break; } case 'AUTH_FAILED': { - // handle timeout - action can not succeed anymore, show error - if (response.data.message === "operation.timeout") { - dispatchAction(dispatch, response); - break; + if (!handleAuthFailedError(dispatch, response)) { + dispatch({ + type: "SHOW_SCREEN_CONSENT", + payload: { + loading: false, + error: true, + message: response.data.message, + remainingAttempts: response.data.remainingAttempts, + consentValidationPassed: response.data.consentValidationPassed, + validationErrorMessage: response.data.validationErrorMessage, + optionValidationResults: response.data.optionValidationResults + } + }); } - // if the operation has been interrupted by new operation, show an error - if (response.data.message === "operation.interrupted") { - dispatchAction(dispatch, response); - break; - } - // if the maximum number of attempts has been exceeded, show an error, the method cannot continue - if (response.data.message === "authentication.maxAttemptsExceeded") { - dispatchAction(dispatch, response); - break; - } - // if there is no supported auth method, show error, there is no point in continuing - if (response.data.message === "error.noAuthMethod") { - dispatchAction(dispatch, response); - break; - } - dispatch({ - type: "SHOW_SCREEN_CONSENT", - payload: { - loading: false, - error: true, - message: response.data.message, - remainingAttempts: response.data.remainingAttempts, - consentValidationPassed: response.data.consentValidationPassed, - validationErrorMessage: response.data.validationErrorMessage, - optionValidationResults: response.data.optionValidationResults - } - }); break; } } diff --git a/powerauth-webflow/src/main/js/actions/errorHandling.js b/powerauth-webflow/src/main/js/actions/errorHandling.js new file mode 100644 index 000000000..e50280c72 --- /dev/null +++ b/powerauth-webflow/src/main/js/actions/errorHandling.js @@ -0,0 +1,54 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import {dispatchAction} from "../dispatcher/dispatcher"; + +/** + * Shared logic for handling authentication failed errors. In case the error is critical, dispatch error immediately. + * + * @param dispatch Dispatch. + * @param response Response. + * @returns {boolean} True in case error has been handled. + */ +export function handleAuthFailedError(dispatch, response) { + // handle timeout - login action can not succeed anymore, do not show login screen, show error instead + if (response.data.message === "operation.timeout") { + dispatchAction(dispatch, response); + return true; + } + // if the operation has been interrupted by new operation, show an error + if (response.data.message === "operation.interrupted") { + dispatchAction(dispatch, response); + return true; + } + // if the operation is no longer available, show an error + if (response.data.message === "operation.notAvailable") { + dispatchAction(dispatch, response); + return true; + } + // if the maximum number of attempts has been exceeded, show an error, the method cannot continue + if (response.data.message === "authentication.maxAttemptsExceeded") { + dispatchAction(dispatch, response); + return true; + } + // if there is no supported auth method, show error, there is no point in continuing + // TODO - handle fallback - see issue #32 + if (response.data.message === "error.noAuthMethod") { + dispatchAction(dispatch, response); + return true; + } + return false; +} \ No newline at end of file diff --git a/powerauth-webflow/src/main/js/actions/loginScaActions.js b/powerauth-webflow/src/main/js/actions/loginScaActions.js index a906533d1..0702138d1 100644 --- a/powerauth-webflow/src/main/js/actions/loginScaActions.js +++ b/powerauth-webflow/src/main/js/actions/loginScaActions.js @@ -14,7 +14,8 @@ * limitations under the License. */ import axios from "axios"; -import {dispatchAction, dispatchError} from "../dispatcher/dispatcher"; +import {dispatchError} from "../dispatcher/dispatcher"; +import {handleAuthFailedError} from "./errorHandling"; /** * Initialize SCA login for given username. @@ -65,36 +66,17 @@ export function init(username, organizationId) { break; } case 'AUTH_FAILED': { - // handle timeout - login action can not succeed anymore, do not show login screen, show error instead - if (response.data.message === "operation.timeout") { - dispatchAction(dispatch, response); - break; - } - // if the operation has been interrupted by new operation, show an error - if (response.data.message === "operation.interrupted") { - dispatchAction(dispatch, response); - break; - } - // if the maximum number of attempts has been exceeded, show an error, the method cannot continue - if (response.data.message === "authentication.maxAttemptsExceeded") { - dispatchAction(dispatch, response); - break; - } - // if there is no supported auth method, show error, there is no point in continuing - // TODO - handle fallback - see issue #32 - if (response.data.message === "error.noAuthMethod") { - dispatchAction(dispatch, response); - break; + if (!handleAuthFailedError(dispatch, response)) { + dispatch({ + type: "SHOW_SCREEN_LOGIN_SCA", + payload: { + loading: false, + error: true, + message: response.data.message, + remainingAttempts: response.data.remainingAttempts + } + }); } - dispatch({ - type: "SHOW_SCREEN_LOGIN_SCA", - payload: { - loading: false, - error: true, - message: response.data.message, - remainingAttempts: response.data.remainingAttempts - } - }); break; } } diff --git a/powerauth-webflow/src/main/js/actions/smsAuthActions.js b/powerauth-webflow/src/main/js/actions/smsAuthActions.js index 9e2d326b8..2572ffc7a 100644 --- a/powerauth-webflow/src/main/js/actions/smsAuthActions.js +++ b/powerauth-webflow/src/main/js/actions/smsAuthActions.js @@ -15,6 +15,7 @@ */ import axios from "axios"; import {dispatchAction, dispatchError} from "../dispatcher/dispatcher"; +import {handleAuthFailedError} from "./errorHandling"; /** * Get operation detail. @@ -188,41 +189,18 @@ export function authenticate(userAuthCode, userPassword, component) { break; } case 'AUTH_FAILED': { - // handle timeout - action can not succeed anymore, show error - if (response.data.message === "operation.timeout") { - dispatchAction(dispatch, response); - break; - } - // if the operation has been interrupted by new operation, show an error - if (response.data.message === "operation.interrupted") { - dispatchAction(dispatch, response); - break; - } - // if the maximum number of attempts has been exceeded, show an error, the method cannot continue - if (response.data.message === "authentication.maxAttemptsExceeded") { - dispatchAction(dispatch, response); - break; - } - // if the maximum number of SMS OTP messages has been exceeded, show an error, the method cannot continue - if (response.data.message === "smsAuthorization.maxAttemptsExceeded") { - dispatchAction(dispatch, response); - break; - } - // if there is no supported auth method, show error, there is no point in continuing - if (response.data.message === "error.noAuthMethod") { - dispatchAction(dispatch, response); - break; + if (!handleAuthFailedError(dispatch, response)) { + dispatch({ + type: getActionType(component), + payload: { + loading: false, + error: true, + init: false, + message: response.data.message, + remainingAttempts: response.data.remainingAttempts + } + }); } - dispatch({ - type: getActionType(component), - payload: { - loading: false, - error: true, - init: false, - message: response.data.message, - remainingAttempts: response.data.remainingAttempts - } - }); break; } } diff --git a/powerauth-webflow/src/main/js/actions/startHandshakeActions.js b/powerauth-webflow/src/main/js/actions/startHandshakeActions.js index c160eb2ab..3b4fbca27 100644 --- a/powerauth-webflow/src/main/js/actions/startHandshakeActions.js +++ b/powerauth-webflow/src/main/js/actions/startHandshakeActions.js @@ -15,23 +15,28 @@ */ import axios from 'axios'; import {dispatchAction, dispatchError} from '../dispatcher/dispatcher' +import {handleAuthFailedError} from "./errorHandling"; /** * Initiate authentication/authorization process. * @returns {Function} No return value. */ -export function authenticate() { +export function authenticate(callback) { return function (dispatch) { axios.post("./api/auth/init/authenticate", {}, { headers: { 'X-OPERATION-HASH': operationHash, } }).then((response) => { - // save operation hash in case the operation has been just initialized (default operation) + // Save operation hash in case the operation has been just initialized (default operation) if (operationHash === null) { operationHash = response.data.operationHash; } - dispatchAction(dispatch, response); + if (!handleAuthFailedError(dispatch, response)) { + // Callback is used to initialize Web Socket connection after handshake has been completed + callback(); + dispatchAction(dispatch, response); + } return null; }).catch((error) => { dispatchError(dispatch, error); diff --git a/powerauth-webflow/src/main/js/actions/tokenAuthOfflineActions.js b/powerauth-webflow/src/main/js/actions/tokenAuthOfflineActions.js index 5039cfd79..2b22b3b80 100644 --- a/powerauth-webflow/src/main/js/actions/tokenAuthOfflineActions.js +++ b/powerauth-webflow/src/main/js/actions/tokenAuthOfflineActions.js @@ -15,6 +15,7 @@ */ import axios from "axios"; import {dispatchAction, dispatchError} from "../dispatcher/dispatcher"; +import {handleAuthFailedError} from "./errorHandling"; /** * Initialize offline mode for mobile token. @@ -115,37 +116,18 @@ export function authenticateOffline(activationId, authCode, nonce) { break; } case 'AUTH_FAILED': { - // handle timeout - action can not succeed anymore, show error - if (response.data.message === "operation.timeout") { - dispatchAction(dispatch, response); - break; + if (!handleAuthFailedError(dispatch, response)) { + dispatch({ + type: "SHOW_SCREEN_TOKEN", + payload: { + loading: false, + error: true, + init: false, + message: response.data.message, + remainingAttempts: response.data.remainingAttempts + } + }); } - // if the operation has been interrupted by new operation, show an error - if (response.data.message === "operation.interrupted") { - dispatchAction(dispatch, response); - break; - } - // if the maximum number of attempts has been exceeded, show an error, the method cannot continue - if (response.data.message === "authentication.maxAttemptsExceeded") { - dispatchAction(dispatch, response); - break; - } - // if there is no supported auth method, show error, there is no point in continuing - // TODO - handle fallback - see issue #32 - if (response.data.message === "error.noAuthMethod") { - dispatchAction(dispatch, response); - break; - } - dispatch({ - type: "SHOW_SCREEN_TOKEN", - payload: { - loading: false, - error: true, - init: false, - message: response.data.message, - remainingAttempts: response.data.remainingAttempts - } - }); break; } } diff --git a/powerauth-webflow/src/main/js/actions/tokenAuthOnlineActions.js b/powerauth-webflow/src/main/js/actions/tokenAuthOnlineActions.js index 20bc119cc..33906fd6f 100644 --- a/powerauth-webflow/src/main/js/actions/tokenAuthOnlineActions.js +++ b/powerauth-webflow/src/main/js/actions/tokenAuthOnlineActions.js @@ -15,6 +15,7 @@ */ import axios from "axios"; import {dispatchAction, dispatchError} from "../dispatcher/dispatcher"; +import {handleAuthFailedError} from "./errorHandling"; /** * Get operation detail. @@ -107,30 +108,16 @@ export function authenticateOnline(callback) { break; } case 'AUTH_FAILED': { - // handle case when authentication method is no longer available - if (response.data.message === "operation.methodNotAvailable") { - dispatchAction(dispatch, response); - break; + if (!handleAuthFailedError(dispatch, response)) { + callback(true); + dispatch({ + type: "SHOW_SCREEN_TOKEN", + payload: { + info: "reload", + init: false + } + }); } - // handle timeout - action can not succeed anymore, show error - if (response.data.message === "operation.timeout") { - dispatchAction(dispatch, response); - break; - } - // if there is no supported auth method, show error, there is no point in continuing - // TODO - handle fallback - see issue #32 - if (response.data.message === "error.noAuthMethod") { - dispatchAction(dispatch, response); - break; - } - callback(true); - dispatch({ - type: "SHOW_SCREEN_TOKEN", - payload: { - info: "reload", - init: false - } - }); break; } } diff --git a/powerauth-webflow/src/main/js/components/error.js b/powerauth-webflow/src/main/js/components/error.js index 890daae3d..f2ed4836f 100644 --- a/powerauth-webflow/src/main/js/components/error.js +++ b/powerauth-webflow/src/main/js/components/error.js @@ -17,6 +17,8 @@ import React from "react"; import {connect} from "react-redux"; // i18n import {FormattedMessage} from "react-intl"; +// Web Socket support +const stompClient = require('../websocket-client'); /** * Error component with redirect to original application. @@ -34,6 +36,8 @@ export default class Error extends React.Component { } componentWillMount() { + // Disable onbeforeunload dialog + window.onbeforeunload = undefined; // Disable checking of timeout to avoid sending additional requests to server this.props.dispatch({ type: "UPDATE_TIMEOUT", @@ -43,6 +47,8 @@ export default class Error extends React.Component { timeoutCheckEnabled: false } }); + // Disconnect Web Socket connection + stompClient.disconnect(); if (this.props.context.message === "message.networkError") { // do not redirect user in case of network errors - just display the error this.setState({networkError: true}); diff --git a/powerauth-webflow/src/main/js/components/startHandshake.js b/powerauth-webflow/src/main/js/components/startHandshake.js index 77e58624d..8a43179b5 100644 --- a/powerauth-webflow/src/main/js/components/startHandshake.js +++ b/powerauth-webflow/src/main/js/components/startHandshake.js @@ -19,7 +19,8 @@ import {connect} from 'react-redux'; import {authenticate} from '../actions/startHandshakeActions' // Components import Spinner from 'react-tiny-spin'; - +// Web Socket support +const stompClient = require('../websocket-client'); /** * Component for dispatching the initial web flow state. */ @@ -29,8 +30,27 @@ import Spinner from 'react-tiny-spin'; }) export default class StartHandshake extends React.Component { + constructor() { + super(); + this.onRegister = this.onRegister.bind(this); + } + componentWillMount() { - this.props.dispatch(authenticate()); + const onRegister = this.onRegister; + this.props.dispatch(authenticate(function() { + // Register Web Socket client as soon as handshake has been completed. + // The Web Socket ID is identical to operation SHA-512 hash. + if (operationHash !== undefined) { + stompClient.register([ + {route: '/user/topic/registration', callback: onRegister} + ], operationHash); + } + })); + } + + onRegister() { + // Debug logging is disabled. + // console.log('WebSocket has been registered.'); } render() { diff --git a/powerauth-webflow/src/main/js/components/success.js b/powerauth-webflow/src/main/js/components/success.js index 63aa2511a..3e9ba5238 100644 --- a/powerauth-webflow/src/main/js/components/success.js +++ b/powerauth-webflow/src/main/js/components/success.js @@ -17,6 +17,8 @@ import React from "react"; import {connect} from "react-redux"; // i18n import {FormattedMessage} from "react-intl"; +// Web Socket support +const stompClient = require('../websocket-client'); /** * Component showing successful authentication result with redirect to original application. @@ -29,6 +31,8 @@ import {FormattedMessage} from "react-intl"; export default class Success extends React.Component { componentWillMount() { + // Disable onbeforeunload dialog + window.onbeforeunload = undefined; // Disable checking of timeout to avoid sending additional requests to server this.props.dispatch({ type: "UPDATE_TIMEOUT", @@ -38,6 +42,8 @@ export default class Success extends React.Component { timeoutCheckEnabled: false } }); + // Disconnect Web Socket connection + stompClient.disconnect(); setTimeout(() => { window.location = './authenticate/continue'; }, 3000); diff --git a/powerauth-webflow/src/main/js/components/tokenAuth.js b/powerauth-webflow/src/main/js/components/tokenAuth.js index 430ce8b88..ec428cd55 100644 --- a/powerauth-webflow/src/main/js/components/tokenAuth.js +++ b/powerauth-webflow/src/main/js/components/tokenAuth.js @@ -43,7 +43,6 @@ export default class Token extends React.Component { super(); this.update = this.update.bind(this); this.init = this.init.bind(this); - this.onRegister = this.onRegister.bind(this); this.onAuthorize = this.onAuthorize.bind(this); this.setAuthorizationInProgress = this.setAuthorizationInProgress.bind(this); this.isAuthorizationInProgress = this.isAuthorizationInProgress.bind(this); @@ -180,11 +179,6 @@ export default class Token extends React.Component { return this.state.updateTimeout; } - onRegister() { - // disabled debug logging - // console.log('WebSocket has been registered.'); - } - onAuthorize() { // disabled debug logging // console.log('Authorization request received from WebSocket.'); @@ -211,6 +205,10 @@ export default class Token extends React.Component { if (!b) { // Authorization was completed successfully. setAuthorized(true); + // Unsubscribe from authorization events. + if (operationHash !== undefined) { + stompClient.unsubscribe('/user/topic/authorization'); + } } // End of attempt to authorize by WebSockets - 3s polling can be resumed in case authorization is not done yet. setAuthorizationInProgress(false); @@ -234,8 +232,6 @@ export default class Token extends React.Component { if (updateTimeout !== null) { clearTimeout(updateTimeout); } - // disconnect Web Socket connection - stompClient.disconnect(); this.setState({disconnected: true}); } @@ -249,15 +245,13 @@ export default class Token extends React.Component { componentWillReceiveProps(props) { if (!this.state.configurationInitialized) { - const webSocketId = props.context.webSocketId; const offlineModeAvailable = props.context.offlineModeAvailable; const smsFallbackAvailable = props.context.smsFallbackAvailable; const username = props.context.username; - if (webSocketId !== undefined && offlineModeAvailable !== undefined) { - stompClient.register([ - {route: '/user/topic/registration', callback: this.onRegister}, - {route: '/user/topic/authorization', callback: this.onAuthorize} - ], webSocketId); + if (offlineModeAvailable !== undefined && smsFallbackAvailable !== undefined && username !== undefined) { + if (operationHash !== undefined) { + stompClient.subscribe('/user/topic/authorization', this.onAuthorize); + } this.setState({offlineModeAvailable: offlineModeAvailable}); this.setState({smsFallbackAvailable: smsFallbackAvailable}); this.setState({username: username}); diff --git a/powerauth-webflow/src/main/js/dispatcher/dispatcher.js b/powerauth-webflow/src/main/js/dispatcher/dispatcher.js index 6a0969c60..ac11ec8a7 100644 --- a/powerauth-webflow/src/main/js/dispatcher/dispatcher.js +++ b/powerauth-webflow/src/main/js/dispatcher/dispatcher.js @@ -23,6 +23,14 @@ export function dispatchAction(dispatch, response) { if (response.data.next.length > 0) { if (response.data.result === "CONFIRMED") { const next = response.data.next; + if (next.length === 0) { + dispatch({ + type: "SHOW_SCREEN_ERROR", + payload: { + message: "error.noAuthMethod" + } + }) + } let authMethods = []; for (let key in next) { if (next.hasOwnProperty(key)) { diff --git a/powerauth-webflow/src/main/js/websocket-client.js b/powerauth-webflow/src/main/js/websocket-client.js index 55d8b2fc3..4d6e26702 100644 --- a/powerauth-webflow/src/main/js/websocket-client.js +++ b/powerauth-webflow/src/main/js/websocket-client.js @@ -16,13 +16,13 @@ 'use strict'; const SockJS = require('sockjs-client'); -let stompClient; +let client; require('stompjs'); /** * Registration for WebSocket routes with callback functions called on incoming messages. - * @param registrations routes and callback functions - * @param webSocketId Web Socket ID + * @param registrations Registration routes and callback functions. + * @param webSocketId Web Socket ID. */ function register(registrations, webSocketId) { var msie = document.documentMode; @@ -34,39 +34,59 @@ function register(registrations, webSocketId) { let headers = {}; headers[csrf.headerName] = csrf.token; const socket = SockJS('./websocket'); - stompClient = Stomp.over(socket); - stompClient.debug = () => {}; - stompClient.connect(headers, function (frame) { + client = Stomp.over(socket); + client.debug = () => {}; + client.connect(headers, function (frame) { registrations.forEach(function (registration) { - stompClient.subscribe(registration.route, registration.callback); + client.subscribe(registration.route, registration.callback); }); // registration of the client with given webSocketId to link WebSocket session and operation const msg = {"webSocketId": webSocketId}; - stompClient.send("/app/registration", {}, JSON.stringify(msg)); + client.send("/app/registration", {}, JSON.stringify(msg)); }); } + +/** + * Subscribe to a Web Socket route with a callback function. + * @param route Web Socket route. + * @param callback Callback function to call on an event. + */ +function subscribe(route, callback) { + client.subscribe(route, callback); +} + +/** + * Unsubscribe from a route. + * @param route Web Socket route. + */ +function unsubscribe(route) { + client.unsubscribe(route); +} + /** - * Sends a WebSocket message - * @param destination message destination - * @param params parameters, use {} for empty - * @param message text of the message as JSON + * Send a WebSocket message. + * @param destination Message destination. + * @param params Parameters, use {} for empty. + * @param message Text of the message as JSON. */ function send(destination, params, message) { - if (stompClient !== undefined) { - stompClient.send(destination, params, message); + if (client !== undefined) { + client.send(destination, params, message); } } /** - * Disconnects the WebSocket. + * Disconnect the WebSocket. */ function disconnect() { - if (stompClient !== undefined) { - stompClient.disconnect(); + if (client !== undefined) { + client.disconnect(); } } module.exports.register = register; +module.exports.subscribe = subscribe; +module.exports.unsubscribe = unsubscribe; module.exports.disconnect = disconnect; module.exports.send = send; \ No newline at end of file diff --git a/powerauth-webflow/src/main/resources/application.properties b/powerauth-webflow/src/main/resources/application.properties index ec5c14d32..659f9fcaa 100644 --- a/powerauth-webflow/src/main/resources/application.properties +++ b/powerauth-webflow/src/main/resources/application.properties @@ -68,7 +68,7 @@ powerauth.webflow.timeout.warning.delayMs=60000 # Anti-fraud system configuration powerauth.webflow.afs.enabled=false -powerauth.webflow.afs.type=ThreatMark +powerauth.webflow.afs.type=THREAT_MARK # Disable JMX spring.jmx.enabled=false diff --git a/powerauth-webflow/src/main/resources/templates/index.html b/powerauth-webflow/src/main/resources/templates/index.html index 61ea5820a..9333897f0 100644 --- a/powerauth-webflow/src/main/resources/templates/index.html +++ b/powerauth-webflow/src/main/resources/templates/index.html @@ -24,6 +24,18 @@ var operationHash = [[${operationHash}]]; var showAndroidSecurityWarning = [[${showAndroidSecurityWarning}]]; + window.onbeforeunload = function() { + // Modern browsers do not allow custom messages, so text will be only shown in old browsers. + // Note that the onbeforeunload dialog does not appear in case user does no action, see: + // https://bugs.chromium.org/p/chromium/issues/detail?id=707007 + if (lang === 'en') { + return I18N_EN.messages['browser.close.warning']; + } + if (lang === 'cs') { + return I18N_CS.messages['browser.close.warning']; + } + return I18N_EN.messages['browser.close.warning']; + }; /*]]>*/ From 61ade50c172ed283ba3288ead554ea40757bb37f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Dvo=C5=99=C3=A1k?= Date: Tue, 10 Sep 2019 19:09:18 +0200 Subject: [PATCH 015/197] Fix #629: Fix MySQL typo --- docs/sql/mysql/create_schema.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sql/mysql/create_schema.sql b/docs/sql/mysql/create_schema.sql index 1e47dd4a4..2b4b4c08e 100644 --- a/docs/sql/mysql/create_schema.sql +++ b/docs/sql/mysql/create_schema.sql @@ -90,7 +90,7 @@ CREATE TABLE ns_operation_config ( template_version CHAR NOT NULL, template_id INTEGER NOT NULL, mobile_token_mode VARCHAR(256) NOT NULL, - afs_enabled BOOLEAN NOT NULL DEFAULT FALSE, + afs_enabled BOOLEAN NOT NULL DEFAULT FALSE ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- Table ns_organization stores definitions of organizations related to the operations. From c336f303ddfb94e822736d66fcaf4f7df2536c7c Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Wed, 11 Sep 2019 13:42:32 +0200 Subject: [PATCH 016/197] Fix #626: Remove unused application properties --- powerauth-nextstep/src/main/resources/application.properties | 5 ----- powerauth-webflow/src/main/resources/application.properties | 5 ----- 2 files changed, 10 deletions(-) diff --git a/powerauth-nextstep/src/main/resources/application.properties b/powerauth-nextstep/src/main/resources/application.properties index b9f654ab2..08cbb8e5e 100644 --- a/powerauth-nextstep/src/main/resources/application.properties +++ b/powerauth-nextstep/src/main/resources/application.properties @@ -1,11 +1,6 @@ # Allow externalization of properties using application-ext.properties spring.profiles.active=ext -# Database Keep-Alive -spring.datasource.test-while-idle=true -spring.datasource.test-on-borrow=true -spring.datasource.validation-query=SELECT 1 - # Database Configuration - MySQL spring.datasource.url=jdbc:mysql://localhost:3306/powerauth spring.datasource.username=powerauth diff --git a/powerauth-webflow/src/main/resources/application.properties b/powerauth-webflow/src/main/resources/application.properties index ec5c14d32..893c98824 100644 --- a/powerauth-webflow/src/main/resources/application.properties +++ b/powerauth-webflow/src/main/resources/application.properties @@ -22,11 +22,6 @@ powerauth.webflow.page.title=PowerAuth 2.0 Web Flow powerauth.webflow.page.ext-resources.location=classpath:/static/resources/ powerauth.webflow.page.custom-css.url= -# Database Keep-Alive -spring.datasource.test-while-idle=true -spring.datasource.test-on-borrow=true -spring.datasource.validation-query=SELECT 1 - # Database Configuration - MySQL spring.datasource.url=jdbc:mysql://localhost:3306/powerauth spring.datasource.username=powerauth From ade86c4964539888a8ce7bbbdbd7c55fc884ea86 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Wed, 11 Sep 2019 22:47:15 +0200 Subject: [PATCH 017/197] Fix #632: Create DDL for PostgreSQL --- docs/sql/mysql/drop_schema.sql | 3 - docs/sql/oracle/create_schema.sql | 2 +- docs/sql/oracle/drop_schema.sql | 9 - docs/sql/postgresql/create_schema.sql | 183 +++++++++++++ docs/sql/postgresql/drop_schema.sql | 14 + docs/sql/postgresql/initial_data.sql | 251 ++++++++++++++++++ .../src/main/resources/application.properties | 9 + .../src/main/resources/application.properties | 9 + 8 files changed, 467 insertions(+), 13 deletions(-) create mode 100644 docs/sql/postgresql/create_schema.sql create mode 100644 docs/sql/postgresql/drop_schema.sql create mode 100644 docs/sql/postgresql/initial_data.sql diff --git a/docs/sql/mysql/drop_schema.sql b/docs/sql/mysql/drop_schema.sql index a8e5658a5..db38be86b 100644 --- a/docs/sql/mysql/drop_schema.sql +++ b/docs/sql/mysql/drop_schema.sql @@ -12,6 +12,3 @@ DROP TABLE IF EXISTS oauth_refresh_token; DROP TABLE IF EXISTS oauth_access_token; DROP TABLE IF EXISTS oauth_client_token; DROP TABLE IF EXISTS oauth_client_details; - --- This table is only required for demo client application --- DROP TABLE IF EXISTS UserConnection; diff --git a/docs/sql/oracle/create_schema.sql b/docs/sql/oracle/create_schema.sql index ba51a5814..e32c37efa 100644 --- a/docs/sql/oracle/create_schema.sql +++ b/docs/sql/oracle/create_schema.sql @@ -119,7 +119,7 @@ CREATE TABLE ns_operation ( result VARCHAR(32), timestamp_created TIMESTAMP, timestamp_expires TIMESTAMP, - CONSTRAINT operation_organization_fk FOREIGN KEY (organization_id) REFERENCES ns_organization (organization_id), + CONSTRAINT operation_organization_fk FOREIGN KEY (organization_id) REFERENCES ns_organization (organization_id) ); -- Table ns_operation_history stores all changes of operations. diff --git a/docs/sql/oracle/drop_schema.sql b/docs/sql/oracle/drop_schema.sql index 2767b1ec8..dc6b1c926 100644 --- a/docs/sql/oracle/drop_schema.sql +++ b/docs/sql/oracle/drop_schema.sql @@ -96,13 +96,4 @@ EXCEPTION END; / -/* This table is required only for the demo client application -BEGIN - EXECUTE IMMEDIATE 'DROP TABLE UserConnection'; -EXCEPTION - WHEN OTHERS THEN NULL; -END; -/ -*/ - diff --git a/docs/sql/postgresql/create_schema.sql b/docs/sql/postgresql/create_schema.sql new file mode 100644 index 000000000..6ebb38a7d --- /dev/null +++ b/docs/sql/postgresql/create_schema.sql @@ -0,0 +1,183 @@ +-- Table oauth_client_details stores details about OAuth2 client applications. +-- Every Web Flow client application should have a record in this table. +-- See: https://github.com/spring-projects/spring-security-oauth/BYTEA/master/spring-security-oauth2/src/main/java/org/springframework/security/oauth2/provider/client/JdbcClientDetailsService.java +CREATE TABLE oauth_client_details ( + client_id VARCHAR(256) PRIMARY KEY, + resource_ids VARCHAR(256), + client_secret VARCHAR(256), + scope VARCHAR(256), + authorized_grant_types VARCHAR(256), + web_server_redirect_uri VARCHAR(256), + authorities VARCHAR(256), + access_token_validity INTEGER, + refresh_token_validity INTEGER, + additional_information VARCHAR(4000), + autoapprove VARCHAR(256) +); + +-- Table oauth_client_token stores OAuth2 tokens for retrieval by client applications. +-- See: https://docs.spring.io/spring-security/oauth/apidocs/org/springframework/security/oauth2/client/token/JdbcClientTokenServices.html +CREATE TABLE oauth_client_token ( + token_id VARCHAR(256), + token BYTEA, + authentication_id VARCHAR(256) PRIMARY KEY, + user_name VARCHAR(256), + client_id VARCHAR(256) +); + +-- Table oauth_access_token stores OAuth2 access tokens. +-- See: https://github.com/spring-projects/spring-security-oauth/BYTEA/master/spring-security-oauth2/src/main/java/org/springframework/security/oauth2/provider/token/store/JdbcTokenStore.java +CREATE TABLE oauth_access_token ( + token_id VARCHAR(256), + token BYTEA, + authentication_id VARCHAR(256) PRIMARY KEY, + user_name VARCHAR(256), + client_id VARCHAR(256), + authentication BYTEA, + refresh_token VARCHAR(256) +); + +-- Table oauth_access_token stores OAuth2 refresh tokens. +-- See: https://github.com/spring-projects/spring-security-oauth/BYTEA/master/spring-security-oauth2/src/main/java/org/springframework/security/oauth2/provider/token/store/JdbcTokenStore.java +CREATE TABLE oauth_refresh_token ( + token_id VARCHAR(256), + token BYTEA, + authentication BYTEA +); + +-- Table oauth_code stores data for the OAuth2 authorization code grant. +-- See: https://github.com/spring-projects/spring-security-oauth/BYTEA/master/spring-security-oauth2/src/main/java/org/springframework/security/oauth2/provider/code/JdbcAuthorizationCodeServices.java +CREATE TABLE oauth_code ( + code VARCHAR(255), + authentication BYTEA +); + +-- Table ns_auth_method stores configuration of authentication methods. +-- Data in this table needs to be loaded before Web Flow is started. +CREATE TABLE ns_auth_method ( + auth_method VARCHAR(32) PRIMARY KEY NOT NULL, + order_number INTEGER NOT NULL, + check_user_prefs BOOLEAN DEFAULT FALSE NOT NULL, + user_prefs_column INTEGER, + user_prefs_default BOOLEAN DEFAULT FALSE, + check_auth_fails BOOLEAN DEFAULT FALSE NOT NULL, + max_auth_fails INTEGER, + has_user_interface BOOLEAN DEFAULT FALSE, + has_mobile_token BOOLEAN DEFAULT FALSE, + display_name_key VARCHAR(32) +); + +-- Table ns_user_prefs stores user preferences. +-- Status of authentication methods is stored in this table per user (methods can be enabled or disabled). +CREATE TABLE ns_user_prefs ( + user_id VARCHAR(256) PRIMARY KEY NOT NULL, + auth_method_1 BOOLEAN DEFAULT FALSE, + auth_method_2 BOOLEAN DEFAULT FALSE, + auth_method_3 BOOLEAN DEFAULT FALSE, + auth_method_4 BOOLEAN DEFAULT FALSE, + auth_method_5 BOOLEAN DEFAULT FALSE, + auth_method_1_config VARCHAR(256), + auth_method_2_config VARCHAR(256), + auth_method_3_config VARCHAR(256), + auth_method_4_config VARCHAR(256), + auth_method_5_config VARCHAR(256) +); + +-- Table ns_operation_config stores configuration of operations. +-- Each operation type (defined by operation_name) has a related mobile token template and configuration of signatures. +CREATE TABLE ns_operation_config ( + operation_name VARCHAR(32) PRIMARY KEY NOT NULL, + template_version VARCHAR(1) NOT NULL, + template_id INTEGER NOT NULL, + mobile_token_mode VARCHAR(256) NOT NULL, + afs_enabled BOOLEAN DEFAULT FALSE NOT NULL +); + +-- Table ns_organization stores definitions of organizations related to the operations. +-- At least one default organization must be configured. +-- Data in this table needs to be loaded before Web Flow is started. +CREATE TABLE ns_organization ( + organization_id VARCHAR(256) PRIMARY KEY NOT NULL, + display_name_key VARCHAR(256), + is_default BOOLEAN DEFAULT FALSE NOT NULL, + order_number INTEGER NOT NULL +); + +-- Table ns_operation stores details of Web Flow operations. +-- Only the last status is stored in this table, changes of operations are stored in table ns_operation_history. +CREATE TABLE ns_operation ( + operation_id VARCHAR(256) PRIMARY KEY NOT NULL, + operation_name VARCHAR(32) NOT NULL, + operation_data TEXT NOT NULL, + operation_form_data TEXT, + application_id VARCHAR(256), + application_name VARCHAR(256), + application_description VARCHAR(256), + application_extras TEXT, + user_id VARCHAR(256), + organization_id VARCHAR(256), + result VARCHAR(32), + timestamp_created TIMESTAMP, + timestamp_expires TIMESTAMP, + CONSTRAINT operation_organization_fk FOREIGN KEY (organization_id) REFERENCES ns_organization (organization_id) +); + +-- Table ns_operation_history stores all changes of operations. +-- Data in this table needs to be loaded before Web Flow is started. +CREATE TABLE ns_operation_history ( + operation_id VARCHAR(256) NOT NULL, + result_id INTEGER NOT NULL, + request_auth_method VARCHAR(32) NOT NULL, + request_auth_step_result VARCHAR(32) NOT NULL, + request_params VARCHAR(4000), + response_result VARCHAR(32) NOT NULL, + response_result_description VARCHAR(256), + response_steps VARCHAR(4000), + response_timestamp_created TIMESTAMP, + response_timestamp_expires TIMESTAMP, + chosen_auth_method VARCHAR(32), + CONSTRAINT history_pk PRIMARY KEY (operation_id, result_id), + CONSTRAINT history_operation_fk FOREIGN KEY (operation_id) REFERENCES ns_operation (operation_id), + CONSTRAINT history_auth_method_fk FOREIGN KEY (request_auth_method) REFERENCES ns_auth_method (auth_method) +); + +-- Table ns_step_definition stores definitions of authentication/authorization steps. +-- Data in this table needs to be loaded before Web Flow is started. +CREATE TABLE ns_step_definition ( + step_definition_id INTEGER PRIMARY KEY NOT NULL, + operation_name VARCHAR(32) NOT NULL, + operation_type VARCHAR(32) NOT NULL, + request_auth_method VARCHAR(32), + request_auth_step_result VARCHAR(32), + response_priority INTEGER NOT NULL, + response_auth_method VARCHAR(32), + response_result VARCHAR(32) NOT NULL, + CONSTRAINT step_request_auth_method_fk FOREIGN KEY (request_auth_method) REFERENCES ns_auth_method (auth_method), + CONSTRAINT step_response_auth_method_fk FOREIGN KEY (response_auth_method) REFERENCES ns_auth_method (auth_method) +); + +-- Table wf_operation_session maps operations to HTTP sessions. +-- Table is needed for handling of concurrent operations. +CREATE TABLE wf_operation_session ( + operation_id VARCHAR(256) PRIMARY KEY NOT NULL, + http_session_id VARCHAR(256) NOT NULL, + result VARCHAR(32) NOT NULL, + timestamp_created TIMESTAMP +); + +-- Table da_sms_authorization stores data for SMS OTP authorization. +CREATE TABLE da_sms_authorization ( + message_id VARCHAR(256) PRIMARY KEY NOT NULL, + operation_id VARCHAR(256) NOT NULL, + user_id VARCHAR(256) NOT NULL, + organization_id VARCHAR(256), + operation_name VARCHAR(32) NOT NULL, + authorization_code VARCHAR(32) NOT NULL, + salt BYTEA NOT NULL, + message_text TEXT NOT NULL, + verify_request_count INTEGER, + verified BOOLEAN DEFAULT FALSE, + timestamp_created TIMESTAMP, + timestamp_verified TIMESTAMP, + timestamp_expires TIMESTAMP +); diff --git a/docs/sql/postgresql/drop_schema.sql b/docs/sql/postgresql/drop_schema.sql new file mode 100644 index 000000000..c9a3793ef --- /dev/null +++ b/docs/sql/postgresql/drop_schema.sql @@ -0,0 +1,14 @@ +DROP TABLE IF EXISTS da_sms_authorization; +DROP TABLE IF EXISTS wf_operation_session; +DROP TABLE IF EXISTS ns_step_definition; +DROP TABLE IF EXISTS ns_operation_history; +DROP TABLE IF EXISTS ns_operation; +DROP TABLE IF EXISTS ns_operation_config; +DROP TABLE IF EXISTS ns_user_prefs; +DROP TABLE IF EXISTS ns_auth_method; +DROP TABLE IF EXISTS ns_organization; +DROP TABLE IF EXISTS oauth_code; +DROP TABLE IF EXISTS oauth_refresh_token; +DROP TABLE IF EXISTS oauth_access_token; +DROP TABLE IF EXISTS oauth_client_token; +DROP TABLE IF EXISTS oauth_client_details; \ No newline at end of file diff --git a/docs/sql/postgresql/initial_data.sql b/docs/sql/postgresql/initial_data.sql new file mode 100644 index 000000000..723690f4f --- /dev/null +++ b/docs/sql/postgresql/initial_data.sql @@ -0,0 +1,251 @@ +-- default oauth 2.0 client +-- Note: bcrypt('changeme', 12) => '$2a$12$MkYsT5igDXSDgRwyDVz1B.93h8F81E4GZJd/spy/1vhjM4CJgeed.' +INSERT INTO oauth_client_details (client_id, client_secret, scope, authorized_grant_types, additional_information, autoapprove) +VALUES ('democlient', '$2a$12$MkYsT5igDXSDgRwyDVz1B.93h8F81E4GZJd/spy/1vhjM4CJgeed.', 'profile', 'authorization_code', '{}', 'true'); + +-- authentication methods +INSERT INTO ns_auth_method (auth_method, order_number, check_user_prefs, user_prefs_column, user_prefs_default, check_auth_fails, max_auth_fails, has_user_interface, has_mobile_token, display_name_key) +VALUES ('INIT', 1, FALSE, NULL, NULL, FALSE, NULL, FALSE, FALSE, NULL); +INSERT INTO ns_auth_method (auth_method, order_number, check_user_prefs, user_prefs_column, user_prefs_default, check_auth_fails, max_auth_fails, has_user_interface, has_mobile_token, display_name_key) +VALUES ('USER_ID_ASSIGN', 2, FALSE, NULL, NULL, FALSE, NULL, FALSE, FALSE, NULL); +INSERT INTO ns_auth_method (auth_method, order_number, check_user_prefs, user_prefs_column, user_prefs_default, check_auth_fails, max_auth_fails, has_user_interface, has_mobile_token, display_name_key) +VALUES ('USERNAME_PASSWORD_AUTH', 3, FALSE, NULL, NULL, TRUE, 5, TRUE, FALSE, 'method.usernamePassword'); +INSERT INTO ns_auth_method (auth_method, order_number, check_user_prefs, user_prefs_column, user_prefs_default, check_auth_fails, max_auth_fails, has_user_interface, has_mobile_token, display_name_key) +VALUES ('SHOW_OPERATION_DETAIL', 4, FALSE, NULL, NULL, FALSE, NULL, TRUE, FALSE, 'method.showOperationDetail'); +INSERT INTO ns_auth_method (auth_method, order_number, check_user_prefs, user_prefs_column, user_prefs_default, check_auth_fails, max_auth_fails, has_user_interface, has_mobile_token, display_name_key) +VALUES ('POWERAUTH_TOKEN', 5, TRUE, 1, FALSE, TRUE, 5, TRUE, TRUE, 'method.powerauthToken'); +INSERT INTO ns_auth_method (auth_method, order_number, check_user_prefs, user_prefs_column, user_prefs_default, check_auth_fails, max_auth_fails, has_user_interface, has_mobile_token, display_name_key) +VALUES ('SMS_KEY', 6, FALSE, NULL, NULL, TRUE, 5, TRUE, FALSE, 'method.smsKey'); +INSERT INTO ns_auth_method (auth_method, order_number, check_user_prefs, user_prefs_column, user_prefs_default, check_auth_fails, max_auth_fails, has_user_interface, has_mobile_token, display_name_key) +VALUES ('CONSENT', 7, FALSE, NULL, NULL, TRUE, 5, TRUE, FALSE, 'method.consent'); +INSERT INTO ns_auth_method (auth_method, order_number, check_user_prefs, user_prefs_column, user_prefs_default, check_auth_fails, max_auth_fails, has_user_interface, has_mobile_token, display_name_key) +VALUES ('LOGIN_SCA', 8, FALSE, NULL, NULL, TRUE, 5, TRUE, TRUE, 'method.loginSca'); +INSERT INTO ns_auth_method (auth_method, order_number, check_user_prefs, user_prefs_column, user_prefs_default, check_auth_fails, max_auth_fails, has_user_interface, has_mobile_token, display_name_key) +VALUES ('APPROVAL_SCA', 9, FALSE, NULL, NULL, TRUE, 5, TRUE, TRUE, 'method.approvalSca'); + +-- operation configuration +INSERT INTO ns_operation_config (operation_name, template_version, template_id, mobile_token_mode) VALUES ('login', 'A', 2, '{"type":"2FA","variants":["possession_knowledge","possession_biometry"]}'); +INSERT INTO ns_operation_config (operation_name, template_version, template_id, mobile_token_mode) VALUES ('login_sca', 'A', 2, '{"type":"2FA","variants":["possession_knowledge","possession_biometry"]}'); +INSERT INTO ns_operation_config (operation_name, template_version, template_id, mobile_token_mode) VALUES ('authorize_payment', 'A', 1, '{"type":"2FA","variants":["possession_knowledge","possession_biometry"]}'); +INSERT INTO ns_operation_config (operation_name, template_version, template_id, mobile_token_mode) VALUES ('authorize_payment_sca', 'A', 1, '{"type":"2FA","variants":["possession_knowledge","possession_biometry"]}'); + +-- organization configuration +INSERT INTO ns_organization (organization_id, display_name_key, is_default, order_number) VALUES ('RETAIL', 'organization.retail', TRUE, 1); +INSERT INTO ns_organization (organization_id, display_name_key, is_default, order_number) VALUES ('SME', 'organization.sme', FALSE, 2); + +-- login - init operation -> CONTINUE +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (1, 'login', 'CREATE', NULL, NULL, 1, 'USER_ID_ASSIGN', 'CONTINUE'); +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (2, 'login', 'CREATE', NULL, NULL, 2, 'USERNAME_PASSWORD_AUTH', 'CONTINUE'); + +-- login - update operation - CONFIRMED -> CONTINUE +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (3, 'login', 'UPDATE', 'USER_ID_ASSIGN', 'CONFIRMED', 1, 'CONSENT', 'CONTINUE'); +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (4, 'login', 'UPDATE', 'USERNAME_PASSWORD_AUTH', 'CONFIRMED', 1, 'CONSENT', 'CONTINUE'); + +-- login - update operation - CANCELED -> FAILED +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (5, 'login', 'UPDATE', 'USER_ID_ASSIGN', 'CANCELED', 1, NULL, 'FAILED'); +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (6, 'login', 'UPDATE', 'USERNAME_PASSWORD_AUTH', 'CANCELED', 1, NULL, 'FAILED'); + +-- login - update operation - AUTH_METHOD_FAILED -> FAILED +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (8, 'login', 'UPDATE', 'USER_ID_ASSIGN', 'AUTH_METHOD_FAILED', 1, NULL, 'FAILED'); +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (9, 'login', 'UPDATE', 'USERNAME_PASSWORD_AUTH', 'AUTH_METHOD_FAILED', 1, NULL, 'FAILED'); + +-- login - update operation - AUTH_FAILED -> CONTINUE +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (11, 'login', 'UPDATE', 'USER_ID_ASSIGN', 'AUTH_FAILED', 1, 'USER_ID_ASSIGN', 'CONTINUE'); +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (12, 'login', 'UPDATE', 'USERNAME_PASSWORD_AUTH', 'AUTH_FAILED', 1, 'USERNAME_PASSWORD_AUTH', 'CONTINUE'); + +-- login - update operation (consent) - CONFIRMED -> DONE +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (13, 'login', 'UPDATE', 'CONSENT', 'CONFIRMED', 1, NULL, 'DONE'); + +-- login - update operation (consent) - CANCELED -> FAILED +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (14, 'login', 'UPDATE', 'CONSENT', 'CANCELED', 1, NULL, 'FAILED'); + +-- login - update operation (consent) - AUTH_METHOD_FAILED -> FAILED +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (15, 'login', 'UPDATE', 'CONSENT', 'AUTH_METHOD_FAILED', 1, NULL, 'FAILED'); + +-- login - update operation (consent) - AUTH_FAILED -> FAILED +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (16, 'login', 'UPDATE', 'CONSENT', 'AUTH_FAILED', 1, 'CONSENT', 'CONTINUE'); + +-- authorize_payment - init operation -> CONTINUE +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (17, 'authorize_payment', 'CREATE', NULL, NULL, 1, 'USER_ID_ASSIGN', 'CONTINUE'); +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (18, 'authorize_payment', 'CREATE', NULL, NULL, 2, 'USERNAME_PASSWORD_AUTH', 'CONTINUE'); + +-- authorize_payment - update operation (login) - CONFIRMED -> CONTINUE +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (19, 'authorize_payment', 'UPDATE', 'USER_ID_ASSIGN', 'CONFIRMED', 1, 'POWERAUTH_TOKEN', 'CONTINUE'); +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (20, 'authorize_payment', 'UPDATE', 'USER_ID_ASSIGN', 'CONFIRMED', 2, 'SMS_KEY', 'CONTINUE'); + +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (21, 'authorize_payment', 'UPDATE', 'USERNAME_PASSWORD_AUTH', 'CONFIRMED', 1, 'POWERAUTH_TOKEN', 'CONTINUE'); +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (22, 'authorize_payment', 'UPDATE', 'USERNAME_PASSWORD_AUTH', 'CONFIRMED', 2, 'SMS_KEY', 'CONTINUE'); + +-- authorize_payment - update operation (login) - CANCELED -> FAILED +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (23, 'authorize_payment', 'UPDATE', 'USER_ID_ASSIGN', 'CANCELED', 1, NULL, 'FAILED'); +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (24, 'authorize_payment', 'UPDATE', 'USERNAME_PASSWORD_AUTH', 'CANCELED', 1, NULL, 'FAILED'); + +-- authorize_payment - update operation (login) - AUTH_METHOD_FAILED -> FAILED +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (25, 'authorize_payment', 'UPDATE', 'USER_ID_ASSIGN', 'AUTH_METHOD_FAILED', 1, NULL, 'FAILED'); +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (26, 'authorize_payment', 'UPDATE', 'USERNAME_PASSWORD_AUTH', 'AUTH_METHOD_FAILED', 1, NULL, 'FAILED'); + +-- authorize_payment - update operation (login) - AUTH_FAILED -> CONTINUE +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (27, 'authorize_payment', 'UPDATE', 'USER_ID_ASSIGN', 'AUTH_FAILED', 1, 'USER_ID_ASSIGN', 'CONTINUE'); +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (28, 'authorize_payment', 'UPDATE', 'USERNAME_PASSWORD_AUTH', 'AUTH_FAILED', 1, 'USERNAME_PASSWORD_AUTH', 'CONTINUE'); + +-- authorize_payment - update operation (authorize using mobile token) - CONFIRMED -> CONTINUE +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (29, 'authorize_payment', 'UPDATE', 'POWERAUTH_TOKEN', 'CONFIRMED', 1, 'CONSENT', 'CONTINUE'); + +-- authorize_payment - update operation (authorize using mobile token) - CANCELED -> FAILED +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (30, 'authorize_payment', 'UPDATE', 'POWERAUTH_TOKEN', 'CANCELED', 1, NULL, 'FAILED'); + +-- authorize_payment - update operation (authorize using mobile token) - AUTH_METHOD_FAILED -> FAILED +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (31, 'authorize_payment', 'UPDATE', 'POWERAUTH_TOKEN', 'AUTH_METHOD_FAILED', 1, NULL, 'FAILED'); + +-- authorize_payment - update operation (authorize using mobile token) - AUTH_FAILED -> CONTINUE +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (32, 'authorize_payment', 'UPDATE', 'POWERAUTH_TOKEN', 'AUTH_FAILED', 1, 'POWERAUTH_TOKEN', 'CONTINUE'); + +-- authorize_payment - update operation (authorize using sms key) - CONFIRMED -> CONTINUE +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (33, 'authorize_payment', 'UPDATE', 'SMS_KEY', 'CONFIRMED', 1, 'CONSENT', 'CONTINUE'); + +-- authorize_payment - update operation (authorize using sms key) - CANCELED -> FAILED +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (34, 'authorize_payment', 'UPDATE', 'SMS_KEY', 'CANCELED', 1, NULL, 'FAILED'); + +-- authorize_payment - update operation (authorize using sms key) - AUTH_METHOD_FAILED -> FAILED +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (35, 'authorize_payment', 'UPDATE', 'SMS_KEY', 'AUTH_METHOD_FAILED', 1, NULL, 'FAILED'); + +-- authorize_payment - update operation (authorize using sms key) - AUTH_FAILED -> CONTINUE +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (36, 'authorize_payment', 'UPDATE', 'SMS_KEY', 'AUTH_FAILED', 1, 'SMS_KEY', 'CONTINUE'); + +-- authorize_payment - update operation (consent) - CONFIRMED -> DONE +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (37, 'authorize_payment', 'UPDATE', 'CONSENT', 'CONFIRMED', 1, NULL, 'DONE'); + +-- authorize_payment - update operation (consent) - CANCELED -> FAILED +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (38, 'authorize_payment', 'UPDATE', 'CONSENT', 'CANCELED', 1, NULL, 'FAILED'); + +-- authorize_payment - update operation (consent) - AUTH_METHOD_FAILED -> FAILED +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (39, 'authorize_payment', 'UPDATE', 'CONSENT', 'AUTH_METHOD_FAILED', 1, NULL, 'FAILED'); + +-- authorize_payment - update operation (consent) - AUTH_FAILED -> CONTINUE +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (40, 'authorize_payment', 'UPDATE', 'CONSENT', 'AUTH_FAILED', 1, 'CONSENT', 'CONTINUE'); + +-- login_sca - init operation -> CONTINUE +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (41, 'login_sca', 'CREATE', NULL, NULL, 1, 'LOGIN_SCA', 'CONTINUE'); + +-- login_sca - update operation (login) - CONFIRMED -> CONTINUE +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (42, 'login_sca', 'UPDATE', 'LOGIN_SCA', 'CONFIRMED', 1, 'CONSENT', 'CONTINUE'); + +-- login_sca - update operation (login) - CANCELED -> FAILED +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (43, 'login_sca', 'UPDATE', 'LOGIN_SCA', 'CANCELED', 1, NULL, 'FAILED'); + +-- login_sca - update operation (login) - AUTH_METHOD_FAILED -> FAILED +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (44, 'login_sca', 'UPDATE', 'LOGIN_SCA', 'AUTH_METHOD_FAILED', 1, NULL, 'FAILED'); + +-- login_sca - update operation (login) - AUTH_FAILED -> CONTINUE +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (45, 'login_sca', 'UPDATE', 'LOGIN_SCA', 'AUTH_FAILED', 1, 'LOGIN_SCA', 'CONTINUE'); + +-- login_sca - update operation (consent) - CONFIRMED -> DONE +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (46, 'login_sca', 'UPDATE', 'CONSENT', 'CONFIRMED', 1, NULL, 'DONE'); + +-- login_sca - update operation (consent) - CANCELED -> FAILED +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (47, 'login_sca', 'UPDATE', 'CONSENT', 'CANCELED', 1, NULL, 'FAILED'); + +-- login_sca - update operation (consent) - AUTH_METHOD_FAILED -> FAILED +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (48, 'login_sca', 'UPDATE', 'CONSENT', 'AUTH_METHOD_FAILED', 1, NULL, 'FAILED'); + +-- login_sca - update operation (consent) - AUTH_FAILED -> CONTINUE +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (49, 'login_sca', 'UPDATE', 'CONSENT', 'AUTH_FAILED', 1, 'LOGIN_SCA', 'CONTINUE'); + +-- authorize_payment_sca - init operation -> CONTINUE +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (50, 'authorize_payment_sca', 'CREATE', NULL, NULL, 1, 'LOGIN_SCA', 'CONTINUE'); + +-- authorize_payment_sca - update operation (login) - CONFIRMED -> CONTINUE +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (51, 'authorize_payment_sca', 'UPDATE', 'LOGIN_SCA', 'CONFIRMED', 1, 'APPROVAL_SCA', 'CONTINUE'); + +-- authorize_payment_sca - update operation (login) - CANCELED -> FAILED +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (52, 'authorize_payment_sca', 'UPDATE', 'LOGIN_SCA', 'CANCELED', 1, NULL, 'FAILED'); + +-- authorize_payment_sca - update operation (login) - AUTH_METHOD_FAILED -> FAILED +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (53, 'authorize_payment_sca', 'UPDATE', 'LOGIN_SCA', 'AUTH_METHOD_FAILED', 1, NULL, 'FAILED'); + +-- authorize_payment_sca - update operation (login) - AUTH_FAILED -> CONTINUE +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (54, 'authorize_payment_sca', 'UPDATE', 'LOGIN_SCA', 'AUTH_FAILED', 1, 'LOGIN_SCA', 'CONTINUE'); + +-- authorize_payment_sca - update operation (approval) - CONFIRMED -> DONE +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (55, 'authorize_payment_sca', 'UPDATE', 'APPROVAL_SCA', 'CONFIRMED', 1, 'CONSENT', 'CONTINUE'); + +-- authorize_payment_sca - update operation (approval) - CANCELED -> FAILED +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (56, 'authorize_payment_sca', 'UPDATE', 'APPROVAL_SCA', 'CANCELED', 1, NULL, 'FAILED'); + +-- authorize_payment_sca - update operation (approval) - AUTH_METHOD_FAILED -> FAILED +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (57, 'authorize_payment_sca', 'UPDATE', 'APPROVAL_SCA', 'AUTH_METHOD_FAILED', 1, NULL, 'FAILED'); + +-- authorize_payment_sca - update operation (approval) - AUTH_FAILED -> CONTINUE +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (58, 'authorize_payment_sca', 'UPDATE', 'APPROVAL_SCA', 'AUTH_FAILED', 1, 'APPROVAL_SCA', 'CONTINUE'); + +-- authorize_payment_sca - update operation (consent) - CONFIRMED -> DONE +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (59, 'authorize_payment_sca', 'UPDATE', 'CONSENT', 'CONFIRMED', 1, NULL, 'DONE'); + +-- authorize_payment_sca - update operation (consent) - CANCELED -> FAILED +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (60, 'authorize_payment_sca', 'UPDATE', 'CONSENT', 'CANCELED', 1, NULL, 'FAILED'); + +-- authorize_payment_sca - update operation (consent) - AUTH_METHOD_FAILED -> FAILED +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (61, 'authorize_payment_sca', 'UPDATE', 'CONSENT', 'AUTH_METHOD_FAILED', 1, NULL, 'FAILED'); + +-- authorize_payment_sca - update operation (consent) - AUTH_FAILED -> CONTINUE +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (62, 'authorize_payment_sca', 'UPDATE', 'CONSENT', 'AUTH_FAILED', 1, 'APPROVAL_SCA', 'CONTINUE'); diff --git a/powerauth-nextstep/src/main/resources/application.properties b/powerauth-nextstep/src/main/resources/application.properties index b9f654ab2..2902ea08d 100644 --- a/powerauth-nextstep/src/main/resources/application.properties +++ b/powerauth-nextstep/src/main/resources/application.properties @@ -14,6 +14,15 @@ spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.jpa.properties.hibernate.connection.characterEncoding=utf8 spring.jpa.properties.hibernate.connection.useUnicode=true +# Database Configuration - PostgreSQL +#spring.datasource.url=jdbc:postgresql://localhost:5432/postgres +#spring.datasource.username=powerauth +#spring.datasource.password= +#spring.datasource.driver-class-name=org.postgresql.Driver +#spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults=false +#spring.jpa.properties.hibernate.connection.characterEncoding=utf8 +#spring.jpa.properties.hibernate.connection.useUnicode=true + # Database Configuration - Oracle #spring.datasource.url=jdbc:oracle:thin:@//localhost:1521/powerauth #spring.datasource.username=powerauth diff --git a/powerauth-webflow/src/main/resources/application.properties b/powerauth-webflow/src/main/resources/application.properties index ec5c14d32..bd6be41f0 100644 --- a/powerauth-webflow/src/main/resources/application.properties +++ b/powerauth-webflow/src/main/resources/application.properties @@ -35,6 +35,15 @@ spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.jpa.properties.hibernate.connection.characterEncoding=utf8 spring.jpa.properties.hibernate.connection.useUnicode=true +# Database Configuration - PostgreSQL +#spring.datasource.url=jdbc:postgresql://localhost:5432/postgres +#spring.datasource.username=powerauth +#spring.datasource.password=powerauth +#spring.datasource.driver-class-name=org.postgresql.Driver +#spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults=false +#spring.jpa.properties.hibernate.connection.characterEncoding=utf8 +#spring.jpa.properties.hibernate.connection.useUnicode=true + # Database Configuration - Oracle #spring.datasource.url=jdbc:oracle:thin:@//localhost:1521/powerauth #spring.datasource.username=powerauth From e89c8d16a0d64befaae392271ae9867da36e601d Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Wed, 11 Sep 2019 22:48:14 +0200 Subject: [PATCH 018/197] Update sample database --- powerauth-nextstep/src/main/resources/application.properties | 2 +- powerauth-webflow/src/main/resources/application.properties | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/powerauth-nextstep/src/main/resources/application.properties b/powerauth-nextstep/src/main/resources/application.properties index 2902ea08d..3005160f7 100644 --- a/powerauth-nextstep/src/main/resources/application.properties +++ b/powerauth-nextstep/src/main/resources/application.properties @@ -15,7 +15,7 @@ spring.jpa.properties.hibernate.connection.characterEncoding=utf8 spring.jpa.properties.hibernate.connection.useUnicode=true # Database Configuration - PostgreSQL -#spring.datasource.url=jdbc:postgresql://localhost:5432/postgres +#spring.datasource.url=jdbc:postgresql://localhost:5432/powerauth #spring.datasource.username=powerauth #spring.datasource.password= #spring.datasource.driver-class-name=org.postgresql.Driver diff --git a/powerauth-webflow/src/main/resources/application.properties b/powerauth-webflow/src/main/resources/application.properties index bd6be41f0..02de9ba52 100644 --- a/powerauth-webflow/src/main/resources/application.properties +++ b/powerauth-webflow/src/main/resources/application.properties @@ -36,7 +36,7 @@ spring.jpa.properties.hibernate.connection.characterEncoding=utf8 spring.jpa.properties.hibernate.connection.useUnicode=true # Database Configuration - PostgreSQL -#spring.datasource.url=jdbc:postgresql://localhost:5432/postgres +#spring.datasource.url=jdbc:postgresql://localhost:5432/powerauth #spring.datasource.username=powerauth #spring.datasource.password=powerauth #spring.datasource.driver-class-name=org.postgresql.Driver From d32da900e61393bc25c32aed9a7cc35cafbec534 Mon Sep 17 00:00:00 2001 From: Petr Dvorak Date: Thu, 12 Sep 2019 10:32:28 +0200 Subject: [PATCH 019/197] Fix #628: Implement consent engine --- docs/sql/mysql/create_schema.sql | 34 +- docs/sql/oracle/create_schema.sql | 40 +- pom.xml | 4 +- powerauth-nextstep/pom.xml | 1 - powerauth-tpp-engine-model/pom.xml | 39 ++ .../tppengine/model/entity/GivenConsent.java | 145 +++++++ .../model/entity/GivenConsentHistory.java | 147 +++++++ .../model/enumeration/ConsentChange.java | 41 ++ .../model/request/GiveConsentRequest.java | 92 ++++ .../model/request/RemoveConsentRequest.java | 77 ++++ .../model/response/ConsentDetailResponse.java | 99 +++++ .../response/ConsentHistoryListResponse.java | 55 +++ .../model/response/ConsentListResponse.java | 55 +++ .../model/response/GiveConsentResponse.java | 130 ++++++ .../response/UserConsentDetailResponse.java | 53 +++ powerauth-tpp-engine/pom.xml | 109 +++++ .../app/tppengine/ServletInitializer.java | 29 ++ .../app/tppengine/TppEngineApplication.java | 29 ++ .../configuration/SecurityConfig.java | 42 ++ .../configuration/SwaggerConfiguration.java | 45 ++ .../controller/ConsentInfoController.java | 52 +++ .../controller/UserConsentController.java | 156 +++++++ .../tppengine/converter/ConsentConverter.java | 38 ++ .../app/tppengine/exception/ConsentError.java | 38 ++ .../exception/ConsentNotFoundException.java | 41 ++ .../exception/DefaultExceptionResolver.java | 64 +++ .../repository/ConsentRepository.java | 38 ++ .../UserConsentHistoryRepository.java | 42 ++ .../repository/UserConsentRepository.java | 46 ++ .../model/entity/ConsentEntity.java | 110 +++++ .../model/entity/UserConsentEntity.java | 122 ++++++ .../entity/UserConsentHistoryEntity.java | 128 ++++++ .../app/tppengine/service/ConsentService.java | 52 +++ .../tppengine/service/UserConsentService.java | 397 ++++++++++++++++++ .../src/main/resources/application.properties | 38 ++ .../tppengine/TppEngineApplicationTests.java | 27 ++ 36 files changed, 2651 insertions(+), 4 deletions(-) create mode 100644 powerauth-tpp-engine-model/pom.xml create mode 100644 powerauth-tpp-engine-model/src/main/java/io/getlime/security/powerauth/app/tppengine/model/entity/GivenConsent.java create mode 100644 powerauth-tpp-engine-model/src/main/java/io/getlime/security/powerauth/app/tppengine/model/entity/GivenConsentHistory.java create mode 100644 powerauth-tpp-engine-model/src/main/java/io/getlime/security/powerauth/app/tppengine/model/enumeration/ConsentChange.java create mode 100644 powerauth-tpp-engine-model/src/main/java/io/getlime/security/powerauth/app/tppengine/model/request/GiveConsentRequest.java create mode 100644 powerauth-tpp-engine-model/src/main/java/io/getlime/security/powerauth/app/tppengine/model/request/RemoveConsentRequest.java create mode 100644 powerauth-tpp-engine-model/src/main/java/io/getlime/security/powerauth/app/tppengine/model/response/ConsentDetailResponse.java create mode 100644 powerauth-tpp-engine-model/src/main/java/io/getlime/security/powerauth/app/tppengine/model/response/ConsentHistoryListResponse.java create mode 100644 powerauth-tpp-engine-model/src/main/java/io/getlime/security/powerauth/app/tppengine/model/response/ConsentListResponse.java create mode 100644 powerauth-tpp-engine-model/src/main/java/io/getlime/security/powerauth/app/tppengine/model/response/GiveConsentResponse.java create mode 100644 powerauth-tpp-engine-model/src/main/java/io/getlime/security/powerauth/app/tppengine/model/response/UserConsentDetailResponse.java create mode 100644 powerauth-tpp-engine/pom.xml create mode 100644 powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/ServletInitializer.java create mode 100644 powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/TppEngineApplication.java create mode 100644 powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/configuration/SecurityConfig.java create mode 100644 powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/configuration/SwaggerConfiguration.java create mode 100644 powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/controller/ConsentInfoController.java create mode 100644 powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/controller/UserConsentController.java create mode 100644 powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/converter/ConsentConverter.java create mode 100644 powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/exception/ConsentError.java create mode 100644 powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/exception/ConsentNotFoundException.java create mode 100644 powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/exception/DefaultExceptionResolver.java create mode 100644 powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/repository/ConsentRepository.java create mode 100644 powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/repository/UserConsentHistoryRepository.java create mode 100644 powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/repository/UserConsentRepository.java create mode 100644 powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/repository/model/entity/ConsentEntity.java create mode 100644 powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/repository/model/entity/UserConsentEntity.java create mode 100644 powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/repository/model/entity/UserConsentHistoryEntity.java create mode 100644 powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/service/ConsentService.java create mode 100644 powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/service/UserConsentService.java create mode 100644 powerauth-tpp-engine/src/main/resources/application.properties create mode 100644 powerauth-tpp-engine/src/test/java/io/getlime/security/powerauth/app/tppengine/TppEngineApplicationTests.java diff --git a/docs/sql/mysql/create_schema.sql b/docs/sql/mysql/create_schema.sql index 1e47dd4a4..701cc55ff 100644 --- a/docs/sql/mysql/create_schema.sql +++ b/docs/sql/mysql/create_schema.sql @@ -90,7 +90,7 @@ CREATE TABLE ns_operation_config ( template_version CHAR NOT NULL, template_id INTEGER NOT NULL, mobile_token_mode VARCHAR(256) NOT NULL, - afs_enabled BOOLEAN NOT NULL DEFAULT FALSE, + afs_enabled BOOLEAN NOT NULL DEFAULT FALSE ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- Table ns_organization stores definitions of organizations related to the operations. @@ -181,6 +181,38 @@ CREATE TABLE da_sms_authorization ( timestamp_expires TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; +CREATE TABLE tpp_consent +( + `consent_id` VARCHAR(64) PRIMARY KEY NOT NULL, + `consent_name` VARCHAR(128) NOT NULL, + `consent_text` TEXT NOT NULL, + `version` INT NOT NULL +) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + +CREATE TABLE tpp_user_consent +( + `id` INTEGER PRIMARY KEY NOT NULL AUTO_INCREMENT, + `user_id` VARCHAR(256) NOT NULL, + `client_id` VARCHAR(256) NOT NULL, + `consent_id` VARCHAR(64) NOT NULL, + `external_id` VARCHAR(256) NOT NULL, + `consent_parameters` TEXT NOT NULL, + `timestamp_created` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + `timestamp_updated` TIMESTAMP DEFAULT CURRENT_TIMESTAMP +) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + +CREATE TABLE tpp_user_consent_history +( + `id` INTEGER PRIMARY KEY NOT NULL AUTO_INCREMENT, + `user_id` VARCHAR(256) NOT NULL, + `client_id` VARCHAR(256) NOT NULL, + `consent_id` VARCHAR(64) NOT NULL, + `consent_change` VARCHAR(16) NOT NULL, + `external_id` VARCHAR(256) NOT NULL, + `consent_parameters` TEXT NOT NULL, + `timestamp_created` TIMESTAMP DEFAULT CURRENT_TIMESTAMP +) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + -- Table UserConnection is required only for the demo client application which is based on Spring Social. -- See: https://github.com/spring-projects/spring-social /* diff --git a/docs/sql/oracle/create_schema.sql b/docs/sql/oracle/create_schema.sql index ba51a5814..d0cde34d6 100644 --- a/docs/sql/oracle/create_schema.sql +++ b/docs/sql/oracle/create_schema.sql @@ -1,3 +1,9 @@ +-- +-- Create sequences. +-- +CREATE SEQUENCE "TPP_USER_CONSENT_SEQ" MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER NOCYCLE; +CREATE SEQUENCE "TPP_USER_CONSENT_HISTORY_SEQ" MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER NOCYCLE; + -- Table oauth_client_details stores details about OAuth2 client applications. -- Every Web Flow client application should have a record in this table. -- See: https://github.com/spring-projects/spring-security-oauth/blob/master/spring-security-oauth2/src/main/java/org/springframework/security/oauth2/provider/client/JdbcClientDetailsService.java @@ -119,7 +125,7 @@ CREATE TABLE ns_operation ( result VARCHAR(32), timestamp_created TIMESTAMP, timestamp_expires TIMESTAMP, - CONSTRAINT operation_organization_fk FOREIGN KEY (organization_id) REFERENCES ns_organization (organization_id), + CONSTRAINT operation_organization_fk FOREIGN KEY (organization_id) REFERENCES ns_organization (organization_id) ); -- Table ns_operation_history stores all changes of operations. @@ -182,6 +188,38 @@ CREATE TABLE da_sms_authorization ( timestamp_expires TIMESTAMP ); +CREATE TABLE tpp_consent +( + consent_id VARCHAR(64) PRIMARY KEY NOT NULL, + consent_name VARCHAR(128) NOT NULL, + consent_text CLOB NOT NULL, + version INT NOT NULL +); + +CREATE TABLE tpp_user_consent +( + id INTEGER PRIMARY KEY NOT NULL, + user_id VARCHAR(256) NOT NULL, + client_id VARCHAR(256) NOT NULL, + consent_id VARCHAR(64) NOT NULL, + external_id VARCHAR(256) NOT NULL, + consent_parameters CLOB NOT NULL, + timestamp_created TIMESTAMP, + timestamp_updated TIMESTAMP +); + +CREATE TABLE tpp_user_consent_history +( + id INTEGER PRIMARY KEY NOT NULL, + user_id VARCHAR(256) NOT NULL, + client_id VARCHAR(256) NOT NULL, + consent_id VARCHAR(64) NOT NULL, + consent_change VARCHAR(16) NOT NULL, + external_id VARCHAR(256) NOT NULL, + consent_parameters CLOB NOT NULL, + timestamp_created TIMESTAMP +); + -- Table UserConnection is required only for the demo client application which is based on Spring Social. -- See: https://github.com/spring-projects/spring-social /* diff --git a/pom.xml b/pom.xml index 5c77123c0..c9d34917f 100644 --- a/pom.xml +++ b/pom.xml @@ -82,6 +82,8 @@ powerauth-webflow-resources powerauth-webflow-client powerauth-mtoken-model + powerauth-tpp-engine + powerauth-tpp-engine-model @@ -192,7 +194,7 @@ org.zeroturnaround jrebel-maven-plugin - 1.1.8 + 1.1.9 generate-rebel-xml diff --git a/powerauth-nextstep/pom.xml b/powerauth-nextstep/pom.xml index 3e35d56e6..1e0afcaab 100644 --- a/powerauth-nextstep/pom.xml +++ b/powerauth-nextstep/pom.xml @@ -5,7 +5,6 @@ powerauth-nextstep powerauth-nextstep - io.getlime.security PowerAuth 2.0 Next Step Server 0.22.0 war diff --git a/powerauth-tpp-engine-model/pom.xml b/powerauth-tpp-engine-model/pom.xml new file mode 100644 index 000000000..f05dc7391 --- /dev/null +++ b/powerauth-tpp-engine-model/pom.xml @@ -0,0 +1,39 @@ + + + + + 4.0.0 + powerauth-tpp-engine-model + + + powerauth-webflow-parent + io.getlime.security + 0.22.0 + + + + + + io.getlime.core + rest-model-base + 1.1.0 + + + + \ No newline at end of file diff --git a/powerauth-tpp-engine-model/src/main/java/io/getlime/security/powerauth/app/tppengine/model/entity/GivenConsent.java b/powerauth-tpp-engine-model/src/main/java/io/getlime/security/powerauth/app/tppengine/model/entity/GivenConsent.java new file mode 100644 index 000000000..c1fa99bcc --- /dev/null +++ b/powerauth-tpp-engine-model/src/main/java/io/getlime/security/powerauth/app/tppengine/model/entity/GivenConsent.java @@ -0,0 +1,145 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.getlime.security.powerauth.app.tppengine.model.entity; + +import java.util.Date; + +/** + * Response entity representing consent status for given user and TPP app. + * + * @author Petr Dvorak, petr@wultra.com + */ +public class GivenConsent { + + /** + * Given consent ID. + */ + private Long id; + + /** + * TPP application client ID. + */ + private String clientId; + + /** + * Consent ID. + */ + private String consentId; + + /** + * Name of the consent. + */ + private String consentName; + + /** + * Text of the consent (possibly with placeholders). + */ + private String consentText; + + /** + * Parameters of the consent, to be filled in to placeholders. + */ + private String consentParameters; + + /** + * External ID of the consent initiation, usually related to operation ID or some other + * ID uniquely related to the operation. + */ + private String externalId; + + /** + * Timestamp the consent was created. + */ + private Date timestampCreated; + + /** + * Timestamp the consent was last re-approved. + */ + private Date timestampUpdated; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getClientId() { + return clientId; + } + + public void setClientId(String clientId) { + this.clientId = clientId; + } + + public String getConsentId() { + return consentId; + } + + public void setConsentId(String consentId) { + this.consentId = consentId; + } + + public String getConsentName() { + return consentName; + } + + public void setConsentName(String consentName) { + this.consentName = consentName; + } + + public String getConsentText() { + return consentText; + } + + public void setConsentText(String consentText) { + this.consentText = consentText; + } + + public String getConsentParameters() { + return consentParameters; + } + + public void setConsentParameters(String consentParameters) { + this.consentParameters = consentParameters; + } + + public String getExternalId() { + return externalId; + } + + public void setExternalId(String externalId) { + this.externalId = externalId; + } + + public Date getTimestampCreated() { + return timestampCreated; + } + + public void setTimestampCreated(Date timestampCreated) { + this.timestampCreated = timestampCreated; + } + + public Date getTimestampUpdated() { + return timestampUpdated; + } + + public void setTimestampUpdated(Date timestampUpdated) { + this.timestampUpdated = timestampUpdated; + } +} diff --git a/powerauth-tpp-engine-model/src/main/java/io/getlime/security/powerauth/app/tppengine/model/entity/GivenConsentHistory.java b/powerauth-tpp-engine-model/src/main/java/io/getlime/security/powerauth/app/tppengine/model/entity/GivenConsentHistory.java new file mode 100644 index 000000000..05ea6fec1 --- /dev/null +++ b/powerauth-tpp-engine-model/src/main/java/io/getlime/security/powerauth/app/tppengine/model/entity/GivenConsentHistory.java @@ -0,0 +1,147 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.getlime.security.powerauth.app.tppengine.model.entity; + +import java.util.Date; + +/** + * Response entity object in the consent history. + * + * @author Petr Dvorak, petr@wultra.com + */ +public class GivenConsentHistory { + + /** + * Given consent ID. + */ + private Long id; + + /** + * TPP application client ID. + */ + private String clientId; + + /** + * Change of the consent that was made. This data item is backed by + * {@link io.getlime.security.powerauth.app.tppengine.model.enumeration.ConsentChange} + * and can have the same values (represented as string). + */ + private String change; + + /** + * Consent ID. + */ + private String consentId; + + /** + * Name of the consent. + */ + private String consentName; + + /** + * Text of the consent, possibly with placeholders. + */ + private String consentText; + + /** + * Consent parameters, to be filled to placeholders. + */ + private String consentParameters; + + /** + * External ID of the consent initiation, usually related to operation ID or some other + * ID uniquely related to the operation. + */ + private String externalId; + + /** + * Timestamp of when the change was made. + */ + private Date timestampCreated; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getClientId() { + return clientId; + } + + public void setClientId(String clientId) { + this.clientId = clientId; + } + + public String getChange() { + return change; + } + + public void setChange(String change) { + this.change = change; + } + + public String getConsentId() { + return consentId; + } + + public void setConsentId(String consentId) { + this.consentId = consentId; + } + + public String getConsentName() { + return consentName; + } + + public void setConsentName(String consentName) { + this.consentName = consentName; + } + + public String getConsentText() { + return consentText; + } + + public void setConsentText(String consentText) { + this.consentText = consentText; + } + + public String getConsentParameters() { + return consentParameters; + } + + public void setConsentParameters(String consentParameters) { + this.consentParameters = consentParameters; + } + + public String getExternalId() { + return externalId; + } + + public void setExternalId(String externalId) { + this.externalId = externalId; + } + + public Date getTimestampCreated() { + return timestampCreated; + } + + public void setTimestampCreated(Date timestampCreated) { + this.timestampCreated = timestampCreated; + } +} diff --git a/powerauth-tpp-engine-model/src/main/java/io/getlime/security/powerauth/app/tppengine/model/enumeration/ConsentChange.java b/powerauth-tpp-engine-model/src/main/java/io/getlime/security/powerauth/app/tppengine/model/enumeration/ConsentChange.java new file mode 100644 index 000000000..f0f176aad --- /dev/null +++ b/powerauth-tpp-engine-model/src/main/java/io/getlime/security/powerauth/app/tppengine/model/enumeration/ConsentChange.java @@ -0,0 +1,41 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.getlime.security.powerauth.app.tppengine.model.enumeration; + +/** + * Enum representing a status change of a consent. + * + * @author Petr Dvorak, petr@wultra.com + */ +public enum ConsentChange { + + /** + * Consent was granted. + */ + APPROVE, + + /** + * Consent was prolonged. + */ + PROLONG, + + /** + * Consent was rejected. + */ + REJECT + +} diff --git a/powerauth-tpp-engine-model/src/main/java/io/getlime/security/powerauth/app/tppengine/model/request/GiveConsentRequest.java b/powerauth-tpp-engine-model/src/main/java/io/getlime/security/powerauth/app/tppengine/model/request/GiveConsentRequest.java new file mode 100644 index 000000000..fc2531f49 --- /dev/null +++ b/powerauth-tpp-engine-model/src/main/java/io/getlime/security/powerauth/app/tppengine/model/request/GiveConsentRequest.java @@ -0,0 +1,92 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.getlime.security.powerauth.app.tppengine.model.request; + +import java.util.Map; + +/** + * Request for giving a consent (with provided ID) to third party provider (with given ID). + * + * @author Petr Dvorak, petr@wultra.com + */ +public class GiveConsentRequest { + + /** + * User ID. + */ + private String userId; + + /** + * Consent ID. + */ + private String consentId; + + /** + * TPP app client ID. + */ + private String clientId; + + /** + * (optional) External ID, usually associated with operation ID. + */ + private String externalId; + + /** + * Consent parameters, to be filled into the consent text. + */ + private Map parameters; + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + public String getConsentId() { + return consentId; + } + + public void setConsentId(String consentId) { + this.consentId = consentId; + } + + public String getClientId() { + return clientId; + } + + public void setClientId(String clientId) { + this.clientId = clientId; + } + + public String getExternalId() { + return externalId; + } + + public void setExternalId(String externalId) { + this.externalId = externalId; + } + + public void setParameters(Map parameters) { + this.parameters = parameters; + } + + public Map getParameters() { + return parameters; + } +} diff --git a/powerauth-tpp-engine-model/src/main/java/io/getlime/security/powerauth/app/tppengine/model/request/RemoveConsentRequest.java b/powerauth-tpp-engine-model/src/main/java/io/getlime/security/powerauth/app/tppengine/model/request/RemoveConsentRequest.java new file mode 100644 index 000000000..9079513ba --- /dev/null +++ b/powerauth-tpp-engine-model/src/main/java/io/getlime/security/powerauth/app/tppengine/model/request/RemoveConsentRequest.java @@ -0,0 +1,77 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.getlime.security.powerauth.app.tppengine.model.request; + +/** + * Request for removing a consent (with provided ID) to third party provider (with given ID). + * + * @author Petr Dvorak, petr@wultra.com + */ +public class RemoveConsentRequest { + + /** + * User ID. + */ + private String userId; + + /** + * Consent ID. + */ + private String consentId; + + /** + * TPP app client ID. + */ + private String clientId; + + /** + * (optional) External identification of the change. + */ + private String externalId; + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + public String getConsentId() { + return consentId; + } + + public void setConsentId(String consentId) { + this.consentId = consentId; + } + + public String getClientId() { + return clientId; + } + + public void setClientId(String clientId) { + this.clientId = clientId; + } + + public String getExternalId() { + return externalId; + } + + public void setExternalId(String externalId) { + this.externalId = externalId; + } +} \ No newline at end of file diff --git a/powerauth-tpp-engine-model/src/main/java/io/getlime/security/powerauth/app/tppengine/model/response/ConsentDetailResponse.java b/powerauth-tpp-engine-model/src/main/java/io/getlime/security/powerauth/app/tppengine/model/response/ConsentDetailResponse.java new file mode 100644 index 000000000..7e79aa7a7 --- /dev/null +++ b/powerauth-tpp-engine-model/src/main/java/io/getlime/security/powerauth/app/tppengine/model/response/ConsentDetailResponse.java @@ -0,0 +1,99 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.getlime.security.powerauth.app.tppengine.model.response; + +/** + * Class representing a consent detail response. + * + * @author Petr Dvorak, petr@wultra.com + */ +public class ConsentDetailResponse { + + /** + * Identifier of the consent used for the consent query. + */ + private String id; + + /** + * Name of the consent, used for display of the list of existing consents. + */ + private String name; + + /** + * Text of the consent. It may contains placeholders in the form `{{PLACEHOLDER}}` that will + * be replaced at the later stages with a specific text (for example, a TPP name, an app name + * or resource owner data). + */ + private String text; + + /** + * Current version of the consent. + */ + private Long version; + + /** + * Non-parametric constructor. + */ + public ConsentDetailResponse() { + } + + /** + * Constructor for consent information. + * @param id Identifier of the consent. + * @param name Name of the consent, used for display. + * @param text Text of the consent with the placeholders (raw consent string). + * @param version Consent version. + */ + public ConsentDetailResponse(String id, String name, String text, Long version) { + this.id = id; + this.name = name; + this.text = text; + this.version = version; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getText() { + return text; + } + + public void setText(String text) { + this.text = text; + } + + public Long getVersion() { + return version; + } + + public void setVersion(Long version) { + this.version = version; + } +} diff --git a/powerauth-tpp-engine-model/src/main/java/io/getlime/security/powerauth/app/tppengine/model/response/ConsentHistoryListResponse.java b/powerauth-tpp-engine-model/src/main/java/io/getlime/security/powerauth/app/tppengine/model/response/ConsentHistoryListResponse.java new file mode 100644 index 000000000..3f5e5d72c --- /dev/null +++ b/powerauth-tpp-engine-model/src/main/java/io/getlime/security/powerauth/app/tppengine/model/response/ConsentHistoryListResponse.java @@ -0,0 +1,55 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.getlime.security.powerauth.app.tppengine.model.response; + +import io.getlime.security.powerauth.app.tppengine.model.entity.GivenConsentHistory; + +import java.util.List; + +/** + * Class representing a response of the consent history for given user. + * + * @author Petr Dvorak, petr@wultra.com + */ +public class ConsentHistoryListResponse { + + /** + * User ID. + */ + private String userId; + + /** + * List of history items related to user consents. + */ + private List history; + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + public List getHistory() { + return history; + } + + public void setHistory(List history) { + this.history = history; + } +} diff --git a/powerauth-tpp-engine-model/src/main/java/io/getlime/security/powerauth/app/tppengine/model/response/ConsentListResponse.java b/powerauth-tpp-engine-model/src/main/java/io/getlime/security/powerauth/app/tppengine/model/response/ConsentListResponse.java new file mode 100644 index 000000000..dfab705d0 --- /dev/null +++ b/powerauth-tpp-engine-model/src/main/java/io/getlime/security/powerauth/app/tppengine/model/response/ConsentListResponse.java @@ -0,0 +1,55 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.getlime.security.powerauth.app.tppengine.model.response; + +import io.getlime.security.powerauth.app.tppengine.model.entity.GivenConsent; + +import java.util.List; + +/** + * Class representing currently given consents by a user. + * + * @author Petr Dvorak, petr@wultra.com + */ +public class ConsentListResponse { + + /** + * User ID. + */ + private String userId; + + /** + * List of consents currently given by the user. + */ + private List consents; + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + public List getConsents() { + return consents; + } + + public void setConsents(List consents) { + this.consents = consents; + } +} diff --git a/powerauth-tpp-engine-model/src/main/java/io/getlime/security/powerauth/app/tppengine/model/response/GiveConsentResponse.java b/powerauth-tpp-engine-model/src/main/java/io/getlime/security/powerauth/app/tppengine/model/response/GiveConsentResponse.java new file mode 100644 index 000000000..5cd3fa505 --- /dev/null +++ b/powerauth-tpp-engine-model/src/main/java/io/getlime/security/powerauth/app/tppengine/model/response/GiveConsentResponse.java @@ -0,0 +1,130 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.getlime.security.powerauth.app.tppengine.model.response; + +/** + * Information about just given consent. + * + * @author Petr Dvorak, petr@wultra.com + */ +public class GiveConsentResponse { + + /** + * Given consent ID. + */ + private Long id; + + /** + * User ID. + */ + private String userId; + + /** + * TPP application client ID. + */ + private String clientId; + + /** + * Consent ID. + */ + private String consentId; + + /** + * Name of the consent. + */ + private String consentName; + + /** + * Text of the consent, possibly with placeholders. + */ + private String consentText; + + /** + * Parameters of the consent, to be filled in to placeholders. + */ + private String consentParameters; + + /** + * External ID of the consent initiation, usually related to operation ID or some other + * ID uniquely related to the operation. + */ + private String externalId; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + public String getClientId() { + return clientId; + } + + public void setClientId(String clientId) { + this.clientId = clientId; + } + + public String getConsentId() { + return consentId; + } + + public void setConsentId(String consentId) { + this.consentId = consentId; + } + + public String getConsentName() { + return consentName; + } + + public void setConsentName(String consentName) { + this.consentName = consentName; + } + + public String getConsentText() { + return consentText; + } + + public void setConsentText(String consentText) { + this.consentText = consentText; + } + + public String getConsentParameters() { + return consentParameters; + } + + public void setConsentParameters(String consentParameters) { + this.consentParameters = consentParameters; + } + + public String getExternalId() { + return externalId; + } + + public void setExternalId(String externalId) { + this.externalId = externalId; + } +} diff --git a/powerauth-tpp-engine-model/src/main/java/io/getlime/security/powerauth/app/tppengine/model/response/UserConsentDetailResponse.java b/powerauth-tpp-engine-model/src/main/java/io/getlime/security/powerauth/app/tppengine/model/response/UserConsentDetailResponse.java new file mode 100644 index 000000000..77dcb15ec --- /dev/null +++ b/powerauth-tpp-engine-model/src/main/java/io/getlime/security/powerauth/app/tppengine/model/response/UserConsentDetailResponse.java @@ -0,0 +1,53 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.getlime.security.powerauth.app.tppengine.model.response; + +import io.getlime.security.powerauth.app.tppengine.model.entity.GivenConsent; + +/** + * Response object representing a given consent to TPP app by given user. + * + * @author Petr Dvorak, petr@wultra.com + */ +public class UserConsentDetailResponse { + + /** + * User ID. + */ + private String userId; + + /** + * Information about given consent, or null in case a consent is not given by the user. + */ + private GivenConsent consent; + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + public GivenConsent getConsent() { + return consent; + } + + public void setConsent(GivenConsent consent) { + this.consent = consent; + } +} diff --git a/powerauth-tpp-engine/pom.xml b/powerauth-tpp-engine/pom.xml new file mode 100644 index 000000000..93ca51aa3 --- /dev/null +++ b/powerauth-tpp-engine/pom.xml @@ -0,0 +1,109 @@ + + + 4.0.0 + + powerauth-tpp-engine + powerauth-tpp-engine + Default TPP registry and consent engine implementation + 0.22.0 + war + + + io.getlime.security + powerauth-webflow-parent + 0.22.0 + ../pom.xml + + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-tomcat + provided + + + org.springframework.boot + spring-boot-starter-security + + + org.springframework.boot + spring-boot-starter-data-jpa + + + + + io.getlime.security + powerauth-tpp-engine-model + 0.22.0 + + + + + com.fasterxml.jackson.datatype + jackson-datatype-joda + 2.10.0.pr1 + + + + + io.springfox + springfox-swagger2 + 2.9.2 + + + io.springfox + springfox-swagger-ui + 2.9.2 + + + + + com.google.guava + guava + 27.0.1-jre + + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + build-info + + build-info + + + + + + org.apache.maven.plugins + maven-deploy-plugin + + true + + + + org.apache.maven.plugins + maven-war-plugin + ${maven-war-plugin.version} + + + + + diff --git a/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/ServletInitializer.java b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/ServletInitializer.java new file mode 100644 index 000000000..79a18a719 --- /dev/null +++ b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/ServletInitializer.java @@ -0,0 +1,29 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.getlime.security.powerauth.app.tppengine; + +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; + +public class ServletInitializer extends SpringBootServletInitializer { + + @Override + protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { + return application.sources(TppEngineApplication.class); + } + +} diff --git a/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/TppEngineApplication.java b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/TppEngineApplication.java new file mode 100644 index 000000000..75c91ed5d --- /dev/null +++ b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/TppEngineApplication.java @@ -0,0 +1,29 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.getlime.security.powerauth.app.tppengine; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class TppEngineApplication { + + public static void main(String[] args) { + SpringApplication.run(TppEngineApplication.class, args); + } + +} diff --git a/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/configuration/SecurityConfig.java b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/configuration/SecurityConfig.java new file mode 100644 index 000000000..762587503 --- /dev/null +++ b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/configuration/SecurityConfig.java @@ -0,0 +1,42 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.getlime.security.powerauth.app.tppengine.configuration; + +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; + +/** + * Default Spring Security configuration. + * + * @author Petr Dvorak, petr@wultra.com + */ +@Configuration +public class SecurityConfig extends WebSecurityConfigurerAdapter { + + /** + * Configures HTTP security. + * @param http HTTP security. + * @throws Exception Thrown when configuration fails. + */ + @Override + protected void configure(HttpSecurity http) throws Exception { + http.httpBasic().disable(); + http.csrf().disable(); + } + +} \ No newline at end of file diff --git a/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/configuration/SwaggerConfiguration.java b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/configuration/SwaggerConfiguration.java new file mode 100644 index 000000000..2f4710e8b --- /dev/null +++ b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/configuration/SwaggerConfiguration.java @@ -0,0 +1,45 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.getlime.security.powerauth.app.tppengine.configuration; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.swagger2.annotations.EnableSwagger2; + +/** + * Configuration class used for setting up Swagger documentation. + * + * @author Petr Dvorak, petr@wultra.com + */ +@Configuration +@EnableSwagger2 +public class SwaggerConfiguration { + + @Bean + public Docket productApi() { + return new Docket(DocumentationType.SWAGGER_2) + .select() + .apis(RequestHandlerSelectors.basePackage("io.getlime.security.powerauth.app.tppengine")) + .paths(PathSelectors.any()) + .build(); + } + +} diff --git a/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/controller/ConsentInfoController.java b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/controller/ConsentInfoController.java new file mode 100644 index 000000000..6d71e42da --- /dev/null +++ b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/controller/ConsentInfoController.java @@ -0,0 +1,52 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.getlime.security.powerauth.app.tppengine.controller; + +import io.getlime.core.rest.model.base.response.ObjectResponse; +import io.getlime.security.powerauth.app.tppengine.exception.ConsentNotFoundException; +import io.getlime.security.powerauth.app.tppengine.model.response.ConsentDetailResponse; +import io.getlime.security.powerauth.app.tppengine.service.ConsentService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +/** + * Controller class for providing information about consent. + * + * @author Petr Dvorak, petr@wultra.com + */ +@RestController +@RequestMapping("consent") +public class ConsentInfoController { + + private final ConsentService consentService; + + @Autowired + public ConsentInfoController(ConsentService consentService) { + this.consentService = consentService; + } + + @RequestMapping(method = RequestMethod.GET) + public ObjectResponse consentDetail(@RequestParam("id") String id) throws ConsentNotFoundException { + final ConsentDetailResponse response = consentService.consentDetail(id); + if (response == null) { + throw new ConsentNotFoundException(id); + } else { + return new ObjectResponse<>(response); + } + } + +} diff --git a/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/controller/UserConsentController.java b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/controller/UserConsentController.java new file mode 100644 index 000000000..3ff7cc779 --- /dev/null +++ b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/controller/UserConsentController.java @@ -0,0 +1,156 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.getlime.security.powerauth.app.tppengine.controller; + +import io.getlime.core.rest.model.base.request.ObjectRequest; +import io.getlime.core.rest.model.base.response.ObjectResponse; +import io.getlime.core.rest.model.base.response.Response; +import io.getlime.security.powerauth.app.tppengine.exception.ConsentNotFoundException; +import io.getlime.security.powerauth.app.tppengine.model.request.GiveConsentRequest; +import io.getlime.security.powerauth.app.tppengine.model.request.RemoveConsentRequest; +import io.getlime.security.powerauth.app.tppengine.model.response.ConsentHistoryListResponse; +import io.getlime.security.powerauth.app.tppengine.model.response.ConsentListResponse; +import io.getlime.security.powerauth.app.tppengine.model.response.GiveConsentResponse; +import io.getlime.security.powerauth.app.tppengine.model.response.UserConsentDetailResponse; +import io.getlime.security.powerauth.app.tppengine.service.UserConsentService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +/** + * Controller class for providing information about consents given or rejected by given users. + * + * @author Petr Dvorak, petr@wultra.com + */ +@RestController +@RequestMapping("user") +public class UserConsentController { + + private final UserConsentService userConsentService; + + @Autowired + public UserConsentController(UserConsentService userConsentService) { + this.userConsentService = userConsentService; + } + + /** + * Create a new approved consent to a TPP app for given user ID. + * + * @param request Information about the consent to create. + * @return Response with consent created. + */ + @RequestMapping(value = "consent", method = RequestMethod.POST) + public ObjectResponse giveConsent(@RequestBody ObjectRequest request) throws ConsentNotFoundException { + final GiveConsentRequest requestObject = request.getRequestObject(); + //TODO: add validator + GiveConsentResponse response = userConsentService.giveConsent(requestObject); + return new ObjectResponse<>(response); + } + + /** + * Remove (reject) a consent from a TPP app for given user ID. + * + * @param request Information about consent to remove. + * @return Information about success or failure. + */ + @RequestMapping(value = "consent", method = RequestMethod.DELETE) + public Response removeConsent(@RequestBody ObjectRequest request) throws ConsentNotFoundException { + RemoveConsentRequest requestObject = request.getRequestObject(); + //TODO: add validator + userConsentService.removeConsent(requestObject); + return new Response(); + } + + /** + * Remove (reject) a consent from a TPP app for given user ID. Backup method using POST, instead of DELETE. + * + * @param request Information about consent to remove. + * @return Information about success or failure. + */ + @RequestMapping(value = "consent/delete", method = RequestMethod.POST) + public Response removeConsentPost(@RequestBody ObjectRequest request) throws ConsentNotFoundException { + RemoveConsentRequest requestObject = request.getRequestObject(); + //TODO: add validator + userConsentService.removeConsent(requestObject); + return new Response(); + } + + /** + * Remove (reject) a consent with given ID. + * + * @param consentId Consent ID. + * @return Information about success or failure. + */ + @RequestMapping(value = "consent/id", method = RequestMethod.DELETE) + public Response removeConsent(@RequestParam("cid") Long consentId) throws ConsentNotFoundException { + userConsentService.removeConsent(consentId); + return new Response(); + } + + /** + * Remove (reject) a consent with given ID. Backup method using POST, instead of DELETE. + * + * @param consentId Consent ID. + * @return Information about success or failure. + */ + @RequestMapping(value = "consent/id/delete", method = RequestMethod.POST) + public Response removeConsentPost(@RequestParam("cid") Long consentId) throws ConsentNotFoundException { + userConsentService.removeConsent(consentId); + return new Response(); + } + + /** + * Return the list of all current consents for a given user and optionally, filtered for given TPP app. + * + * @param userId User ID. + * @param clientId (optional) TPP App Client ID. + * @return List of consents that are currently active. + */ + @RequestMapping(value = "consent", method = RequestMethod.GET) + public ObjectResponse listConsent(@RequestParam("userId") String userId, @RequestParam(value = "clientId", required = false) String clientId) throws ConsentNotFoundException { + final ConsentListResponse response = userConsentService.consentListForUser(userId, clientId); + return new ObjectResponse<>(response); + } + + /** + * Return the detail of current status of a consent for a given user and third party app. + * + * @param userId User ID. + * @param clientId TPP App Client ID. + * @param consentId Consent ID. + * @return Check + */ + @RequestMapping(value = "consent/status", method = RequestMethod.GET) + public ObjectResponse listConsent(@RequestParam("userId") String userId, @RequestParam("clientId") String clientId, @RequestParam("consentId") String consentId) throws ConsentNotFoundException { + UserConsentDetailResponse response = userConsentService.consentStatus(userId, consentId, clientId); + return new ObjectResponse<>(response); + } + + /** + * History of consent approval or rejection for given user. Optionally, a TPP app may be specified to + * narrow down the results. + * + * @param userId User ID. + * @param clientId (optional) TPP App Client ID. + * @return List of history items. + */ + @RequestMapping(value = "consent/history", method = RequestMethod.GET) + public ObjectResponse historyConsent(@RequestParam("userId") String userId, @RequestParam(value = "clientId", required = false) String clientId) throws ConsentNotFoundException { + ConsentHistoryListResponse response = userConsentService.consentHistoryForUser(userId, clientId); + return new ObjectResponse<>(response); + } + +} diff --git a/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/converter/ConsentConverter.java b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/converter/ConsentConverter.java new file mode 100644 index 000000000..58555f8fc --- /dev/null +++ b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/converter/ConsentConverter.java @@ -0,0 +1,38 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.getlime.security.powerauth.app.tppengine.converter; + +import io.getlime.security.powerauth.app.tppengine.model.response.ConsentDetailResponse; +import io.getlime.security.powerauth.app.tppengine.repository.model.entity.ConsentEntity; + +/** + * Converter related to consent entity conversions. + * + * @author Petr Dvorak, petr@wultra.com + */ +public class ConsentConverter { + + /** + * Convert a new consent detail response from database ce. + * @param ce Database ce representing a consent. + * @return Response object for consent detail. + */ + public ConsentDetailResponse fromConsentEntity(ConsentEntity ce) { + return new ConsentDetailResponse(ce.getId(), ce.getName(), ce.getText(), ce.getVersion()); + } + +} diff --git a/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/exception/ConsentError.java b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/exception/ConsentError.java new file mode 100644 index 000000000..7453f21da --- /dev/null +++ b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/exception/ConsentError.java @@ -0,0 +1,38 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.getlime.security.powerauth.app.tppengine.exception; + +import io.getlime.core.rest.model.base.entity.Error; + +/** + * Error related to consent. + * + * @author Petr Dvorak, petr@wultra.com + */ +public class ConsentError extends Error { + + private static final String code = "CONSENT_ERROR"; + + public ConsentError() { + super(); + this.setCode(code); + } + + public ConsentError(String message) { + super(code, message); + } +} diff --git a/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/exception/ConsentNotFoundException.java b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/exception/ConsentNotFoundException.java new file mode 100644 index 000000000..ede0dfc83 --- /dev/null +++ b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/exception/ConsentNotFoundException.java @@ -0,0 +1,41 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.getlime.security.powerauth.app.tppengine.exception; + +/** + * Exception thrown on missing consent. + * + * @author Petr Dvorak, petr@wultra.com + */ +public class ConsentNotFoundException extends Exception { + + private final String id; + + public ConsentNotFoundException(String id) { + super(); + this.id = id; + } + + /** + * Get ID of the consent that was not found. + * @return ID of the consent that was not found. + */ + public String getId() { + return id; + } + +} diff --git a/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/exception/DefaultExceptionResolver.java b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/exception/DefaultExceptionResolver.java new file mode 100644 index 000000000..a769c8c50 --- /dev/null +++ b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/exception/DefaultExceptionResolver.java @@ -0,0 +1,64 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.getlime.security.powerauth.app.tppengine.exception; + +import io.getlime.core.rest.model.base.entity.Error; +import io.getlime.core.rest.model.base.response.ErrorResponse; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.ResponseStatus; + +/** + * Controller advice responsible for default exception resolving. + * + * @author Petr Dvorak, petr@wultra.com + */ +@ControllerAdvice +public class DefaultExceptionResolver { + + private static final Logger logger = LoggerFactory.getLogger(DefaultExceptionResolver.class); + + /** + * Default exception handler, for unexpected errors. + * @param t Throwable. + * @return Response with error details. + */ + @ExceptionHandler(Throwable.class) + @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) + public @ResponseBody ErrorResponse handleDefaultException(Throwable t) { + logger.error("Error occurred in TPP engine server", t); + Error error = new Error(Error.Code.ERROR_GENERIC, "error.unknown"); + return new ErrorResponse(error); + } + + /** + * Exception thrown in case consent was not found. + * @param t Exception thrown when consent is not found. + * @return Response with error details. + */ + @ExceptionHandler(ConsentNotFoundException.class) + @ResponseStatus(HttpStatus.NOT_FOUND) + public @ResponseBody ErrorResponse handleConsentNotFoundException(ConsentNotFoundException t) { + logger.error("Consent with ID {} was not found", t.getId(), t); + return new ErrorResponse(new ConsentError("consent.missing")); + } + +} \ No newline at end of file diff --git a/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/repository/ConsentRepository.java b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/repository/ConsentRepository.java new file mode 100644 index 000000000..d55f92f5d --- /dev/null +++ b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/repository/ConsentRepository.java @@ -0,0 +1,38 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.getlime.security.powerauth.app.tppengine.repository; + +import io.getlime.security.powerauth.app.tppengine.repository.model.entity.ConsentEntity; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.CrudRepository; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import java.util.Optional; + +/** + * Repository used for accessing the consent database. + * + * @author Petr Dvorak, petr@wultra.com + */ +@Repository +public interface ConsentRepository extends CrudRepository { + + @Query("SELECT c FROM ConsentEntity c WHERE c.id = :id ORDER BY c.version DESC") + Optional findFirstById(@Param("id") String id); + +} diff --git a/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/repository/UserConsentHistoryRepository.java b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/repository/UserConsentHistoryRepository.java new file mode 100644 index 000000000..6896e7141 --- /dev/null +++ b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/repository/UserConsentHistoryRepository.java @@ -0,0 +1,42 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.getlime.security.powerauth.app.tppengine.repository; + +import io.getlime.security.powerauth.app.tppengine.repository.model.entity.UserConsentHistoryEntity; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.CrudRepository; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + * Repository responsible for storing history of adding and removing consents of given user + * to TPP app. + * + * @author Petr Dvorak, petr@wultra.com + */ +@Repository +public interface UserConsentHistoryRepository extends CrudRepository { + + @Query("SELECT che FROM UserConsentHistoryEntity che WHERE che.userId = :userId") + List consentHistoryForUser(@Param("userId") String userId); + + @Query("SELECT che FROM UserConsentHistoryEntity che WHERE che.userId = :userId AND che.clientId = :clientId") + List consentHistoryForUser(@Param("userId") String userId, @Param("clientId") String clientId); + +} diff --git a/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/repository/UserConsentRepository.java b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/repository/UserConsentRepository.java new file mode 100644 index 000000000..a93995f81 --- /dev/null +++ b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/repository/UserConsentRepository.java @@ -0,0 +1,46 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.getlime.security.powerauth.app.tppengine.repository; + +import io.getlime.security.powerauth.app.tppengine.repository.model.entity.UserConsentEntity; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.CrudRepository; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import java.util.List; +import java.util.Optional; + +/** + * Repository interface used for storing approved and removing rejected consents + * of a user and TPP app. + * + * @author Petr Dvorak, petr@wultra.com + */ +@Repository +public interface UserConsentRepository extends CrudRepository { + + @Query("SELECT uc FROM UserConsentEntity uc WHERE uc.userId = :userId AND uc.clientId = :clientId AND uc.consentId = :consentId") + Optional findConsentStatus(@Param("userId") String userId, @Param("consentId") String consentId, @Param("clientId") String clientId); + + @Query("SELECT uc FROM UserConsentEntity uc WHERE uc.userId = :userId") + List findAllConsentsGivenByUser(@Param("userId") String userId); + + @Query("SELECT uc FROM UserConsentEntity uc WHERE uc.userId = :userId AND uc.clientId = :clientId") + List findConsentsGivenByUserToApp(@Param("userId") String userId, @Param("clientId") String clientId); + +} diff --git a/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/repository/model/entity/ConsentEntity.java b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/repository/model/entity/ConsentEntity.java new file mode 100644 index 000000000..4c1ce58ed --- /dev/null +++ b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/repository/model/entity/ConsentEntity.java @@ -0,0 +1,110 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.getlime.security.powerauth.app.tppengine.repository.model.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; +import java.io.Serializable; + +/** + * Database entity representing a consent. + * + * @author Petr Dvorak, petr@wultra.com + */ +@Entity +@Table(name = "tpp_consent") +public class ConsentEntity implements Serializable { + + @Id + @Column(name = "consent_id") + private String id; + + @Column(name = "consent_name") + private String name; + + @Column(name = "consent_text") + private String text; + + @Column(name = "version") + private Long version; + + /** + * Get consent ID. + * @return Consent ID. + */ + public String getId() { + return id; + } + + /** + * Set consent ID. + * @param id Consent ID. + */ + public void setId(String id) { + this.id = id; + } + + /** + * Get consent name. + * @return Consent name. + */ + public String getName() { + return name; + } + + /** + * Set consent name. + * @param name Consent name. + */ + public void setName(String name) { + this.name = name; + } + + /** + * Get consent text. + * @return Consent text. + */ + public String getText() { + return text; + } + + /** + * Set consent text. + * @param text Consent text. + */ + public void setText(String text) { + this.text = text; + } + + /** + * Get consent version. + * @return Consent version. + */ + public Long getVersion() { + return version; + } + + /** + * Set consent version. + * @param version Consent version. + */ + public void setVersion(Long version) { + this.version = version; + } +} diff --git a/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/repository/model/entity/UserConsentEntity.java b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/repository/model/entity/UserConsentEntity.java new file mode 100644 index 000000000..a940616d1 --- /dev/null +++ b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/repository/model/entity/UserConsentEntity.java @@ -0,0 +1,122 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.getlime.security.powerauth.app.tppengine.repository.model.entity; + +import javax.persistence.*; +import java.io.Serializable; +import java.util.Date; + +/** + * Entity representing the current status of a consent. + * + * @author Petr Dvorak, petr@wultra.com + */ +@Entity +@Table(name = "tpp_user_consent") +public class UserConsentEntity implements Serializable { + + @Id + @SequenceGenerator(name = "tpp_user_consent", sequenceName = "tpp_user_consent_seq") + @GeneratedValue(strategy = GenerationType.AUTO, generator = "tpp_user_consent") + @Column(name = "id") + private Long id; + + @Column(name = "user_id") + private String userId; + + @Column(name = "client_id") + private String clientId; + + @Column(name = "consent_id") + private String consentId; + + @Column(name = "consent_parameters") + private String parameters; + + @Column(name = "external_id") + private String externalId; + + @Column(name = "timestamp_created") + private Date timestampCreated; + + @Column(name = "timestamp_updated") + private Date timestampUpdated; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + public String getClientId() { + return clientId; + } + + public void setClientId(String clientId) { + this.clientId = clientId; + } + + public String getConsentId() { + return consentId; + } + + public void setConsentId(String consentId) { + this.consentId = consentId; + } + + public String getParameters() { + return parameters; + } + + public void setParameters(String parameters) { + this.parameters = parameters; + } + + public String getExternalId() { + return externalId; + } + + public void setExternalId(String externalId) { + this.externalId = externalId; + } + + public Date getTimestampCreated() { + return timestampCreated; + } + + public void setTimestampCreated(Date timestampCreated) { + this.timestampCreated = timestampCreated; + } + + public Date getTimestampUpdated() { + return timestampUpdated; + } + + public void setTimestampUpdated(Date timestampUpdated) { + this.timestampUpdated = timestampUpdated; + } +} diff --git a/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/repository/model/entity/UserConsentHistoryEntity.java b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/repository/model/entity/UserConsentHistoryEntity.java new file mode 100644 index 000000000..fe0c1a7f7 --- /dev/null +++ b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/repository/model/entity/UserConsentHistoryEntity.java @@ -0,0 +1,128 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.getlime.security.powerauth.app.tppengine.repository.model.entity; + +import io.getlime.security.powerauth.app.tppengine.model.enumeration.ConsentChange; + +import javax.persistence.*; +import java.io.Serializable; +import java.util.Date; + +/** + * Database entity representing a historic event of consent approval or rejection, + * useful mainly for auditing purposes and for informing the end user. + * + * @author Petr Dvorak, petr@wultra.com + */ +@Entity +@Table(name = "tpp_user_consent_history") +public class UserConsentHistoryEntity implements Serializable { + + @Id + @SequenceGenerator(name = "tpp_user_consent_history", sequenceName = "tpp_user_consent_history_seq") + @GeneratedValue(strategy = GenerationType.AUTO, generator = "tpp_user_consent_history") + @Column(name = "id") + private Long id; + + @Column(name = "user_id") + private String userId; + + @Column(name = "client_id") + private String clientId; + + @Column(name = "consent_id") + private String consentId; + + @Column(name = "consent_change") + @Enumerated(EnumType.STRING) + private ConsentChange change; + + @Column(name = "external_id") + private String externalId; + + @Column(name = "consent_parameters") + private String parameters; + + @Column(name = "timestamp_created") + private Date timestampCreated; + + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + public String getClientId() { + return clientId; + } + + public void setClientId(String clientId) { + this.clientId = clientId; + } + + public String getConsentId() { + return consentId; + } + + public void setConsentId(String consentId) { + this.consentId = consentId; + } + + public ConsentChange getChange() { + return change; + } + + public void setChange(ConsentChange change) { + this.change = change; + } + + public String getExternalId() { + return externalId; + } + + public void setExternalId(String externalId) { + this.externalId = externalId; + } + + public String getParameters() { + return parameters; + } + + public void setParameters(String parameters) { + this.parameters = parameters; + } + + public Date getTimestampCreated() { + return timestampCreated; + } + + public void setTimestampCreated(Date timestampCreated) { + this.timestampCreated = timestampCreated; + } + +} diff --git a/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/service/ConsentService.java b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/service/ConsentService.java new file mode 100644 index 000000000..f1bc25b7b --- /dev/null +++ b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/service/ConsentService.java @@ -0,0 +1,52 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.getlime.security.powerauth.app.tppengine.service; + +import io.getlime.security.powerauth.app.tppengine.converter.ConsentConverter; +import io.getlime.security.powerauth.app.tppengine.model.response.ConsentDetailResponse; +import io.getlime.security.powerauth.app.tppengine.repository.ConsentRepository; +import io.getlime.security.powerauth.app.tppengine.repository.model.entity.ConsentEntity; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Optional; + +/** + * Service used for accessing consent business logic. + * + * @author Petr Dvorak, petr@wultra.com + */ +@Service +public class ConsentService { + + private final ConsentRepository consentRepository; + + private final ConsentConverter consentConverter = new ConsentConverter(); + + @Autowired + public ConsentService(ConsentRepository consentRepository) { + this.consentRepository = consentRepository; + } + + public ConsentDetailResponse consentDetail(String id) { + final Optional consentEntity = consentRepository.findFirstById(id); + return consentEntity + .map(consentConverter::fromConsentEntity) + .orElse(null); + } + +} diff --git a/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/service/UserConsentService.java b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/service/UserConsentService.java new file mode 100644 index 000000000..09ee73a34 --- /dev/null +++ b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/service/UserConsentService.java @@ -0,0 +1,397 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.getlime.security.powerauth.app.tppengine.service; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import io.getlime.security.powerauth.app.tppengine.exception.ConsentNotFoundException; +import io.getlime.security.powerauth.app.tppengine.model.entity.GivenConsent; +import io.getlime.security.powerauth.app.tppengine.model.entity.GivenConsentHistory; +import io.getlime.security.powerauth.app.tppengine.model.enumeration.ConsentChange; +import io.getlime.security.powerauth.app.tppengine.model.request.GiveConsentRequest; +import io.getlime.security.powerauth.app.tppengine.model.request.RemoveConsentRequest; +import io.getlime.security.powerauth.app.tppengine.model.response.ConsentHistoryListResponse; +import io.getlime.security.powerauth.app.tppengine.model.response.ConsentListResponse; +import io.getlime.security.powerauth.app.tppengine.model.response.GiveConsentResponse; +import io.getlime.security.powerauth.app.tppengine.model.response.UserConsentDetailResponse; +import io.getlime.security.powerauth.app.tppengine.repository.ConsentRepository; +import io.getlime.security.powerauth.app.tppengine.repository.UserConsentHistoryRepository; +import io.getlime.security.powerauth.app.tppengine.repository.UserConsentRepository; +import io.getlime.security.powerauth.app.tppengine.repository.model.entity.ConsentEntity; +import io.getlime.security.powerauth.app.tppengine.repository.model.entity.UserConsentEntity; +import io.getlime.security.powerauth.app.tppengine.repository.model.entity.UserConsentHistoryEntity; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.transaction.Transactional; +import java.util.*; + +/** + * Service responsible for managing consent that users gave to the TPP apps. + * + * @author Petr Dvorak, petr@wultra.com + */ +@Service +public class UserConsentService { + + private final ConsentRepository consentRepository; + private final UserConsentRepository userConsentRepository; + private final UserConsentHistoryRepository userConsentHistoryRepository; + + @Autowired + public UserConsentService(ConsentRepository consentRepository, UserConsentRepository userConsentRepository, UserConsentHistoryRepository userConsentHistoryRepository) { + this.consentRepository = consentRepository; + this.userConsentRepository = userConsentRepository; + this.userConsentHistoryRepository = userConsentHistoryRepository; + } + + /** + * Provide a list of all consents for given user, for a given TPP app. + * + * @param userId User ID. + * @param clientId Client ID (TPP app ID). + * @return List of all current consents for given TPP app. + * @throws ConsentNotFoundException In case some approved consent is not found due to database inconsistency. + */ + @Transactional + public ConsentListResponse consentListForUser(String userId, String clientId) throws ConsentNotFoundException { + + // Get the consents + final List consentEntities; + if (clientId != null) { + consentEntities = userConsentRepository.findConsentsGivenByUserToApp(userId, clientId); + } else { + consentEntities = userConsentRepository.findAllConsentsGivenByUser(userId); + } + final List givenConsents = listConsentsByUser(consentEntities); + + // Prepare and return the response object + ConsentListResponse response = new ConsentListResponse(); + response.setUserId(userId); + response.setConsents(givenConsents); + return response; + } + + /** + * Provide a consent status for given user, TPP app and consent type. + * + * @param userId User ID. + * @param consentId Consent ID. + * @param clientId Client ID (TPP app ID). + * @return Information about consent status. + * @throws ConsentNotFoundException In case some approved consent is not found due to database inconsistency. + */ + @Transactional + public UserConsentDetailResponse consentStatus(String userId, String consentId, String clientId) throws ConsentNotFoundException { + + // Check if a consent with given consent ID exists + final Optional consentOptional = consentRepository.findFirstById(consentId); + if (!consentOptional.isPresent()) { + throw new ConsentNotFoundException(consentId); + } + final ConsentEntity consent = consentOptional.get(); + + final Optional consentStatusOptional = userConsentRepository.findConsentStatus(userId, consentId, clientId); + if (consentStatusOptional.isPresent()) { + + final UserConsentEntity consentStatus = consentStatusOptional.get(); + + //TODO: Replace by converter + GivenConsent givenConsent = new GivenConsent(); + givenConsent.setId(consentStatus.getId()); + givenConsent.setClientId(consentStatus.getClientId()); + givenConsent.setConsentId(consentStatus.getConsentId()); + givenConsent.setConsentParameters(consentStatus.getParameters()); + givenConsent.setExternalId(consentStatus.getExternalId()); + givenConsent.setTimestampCreated(consentStatus.getTimestampCreated()); + givenConsent.setTimestampUpdated(consentStatus.getTimestampUpdated()); + givenConsent.setConsentName(consent.getName()); + givenConsent.setConsentText(consent.getText()); + + UserConsentDetailResponse response = new UserConsentDetailResponse(); + response.setUserId(userId); + response.setConsent(givenConsent); + + return response; + } else { + return null; + } + } + + /** + * Create a consent approval for given TPP app by provided user. + * + * @param ro Request object with details of the consent. + * @return Response related to consent approval. + */ + @Transactional + public GiveConsentResponse giveConsent(GiveConsentRequest ro) throws ConsentNotFoundException { + + // Check if a consent with given consent exists + final Optional consentOptional = consentRepository.findFirstById(ro.getConsentId()); + if (!consentOptional.isPresent()) { + throw new ConsentNotFoundException(ro.getConsentId()); + } + final ConsentEntity consent = consentOptional.get(); + + // Find if a user already gave this consent, so that it can be updated on save + final Optional consentStatusOptional = userConsentRepository.findConsentStatus(ro.getUserId(), ro.getConsentId(), ro.getClientId()); + final UserConsentEntity consentStatus; + final Date date = new Date(); + final boolean isApproved; + if (consentStatusOptional.isPresent()) { + consentStatus = consentStatusOptional.get(); + consentStatus.setExternalId(ro.getExternalId()); + consentStatus.setTimestampUpdated(date); + isApproved = true; + } else { + consentStatus = new UserConsentEntity(); + consentStatus.setUserId(ro.getUserId()); + consentStatus.setConsentId(ro.getConsentId()); + consentStatus.setClientId(ro.getClientId()); + consentStatus.setParameters(convertToJsonString(ro.getParameters())); + consentStatus.setExternalId(ro.getExternalId()); + consentStatus.setTimestampCreated(date); + consentStatus.setTimestampUpdated(date); + isApproved = false; + } + final UserConsentEntity savedConsentStatus = userConsentRepository.save(consentStatus); + + // Log a record to the history table + logConsentChange( + savedConsentStatus.getUserId(), + savedConsentStatus.getConsentId(), + savedConsentStatus.getClientId(), + savedConsentStatus.getExternalId(), + savedConsentStatus.getParameters(), + date, + isApproved ? ConsentChange.PROLONG : ConsentChange.APPROVE + ); + + // Return the response with the consent details + GiveConsentResponse response = new GiveConsentResponse(); + response.setId(savedConsentStatus.getId()); + response.setUserId(savedConsentStatus.getUserId()); + response.setConsentId(savedConsentStatus.getConsentId()); + response.setClientId(savedConsentStatus.getClientId()); + response.setConsentParameters(savedConsentStatus.getParameters()); + response.setExternalId(savedConsentStatus.getExternalId()); + response.setConsentName(consent.getName()); + response.setConsentText(consent.getText()); + return response; + } + + /** + * Remove consent a user gave to a TPP app. In case the consent is not given, this method is a no-op. + * + * @param ro Request object with a consent to be removed. + * @throws ConsentNotFoundException In case a consent with given ID is not found. + */ + @Transactional + public void removeConsent(RemoveConsentRequest ro) throws ConsentNotFoundException { + + // Check if a consent with given consent exists + final Optional consentOptional = consentRepository.findFirstById(ro.getConsentId()); + if (!consentOptional.isPresent()) { + throw new ConsentNotFoundException(ro.getConsentId()); + } + + // In case a consent exists, reject it + Optional consentStatusOptional = userConsentRepository.findConsentStatus(ro.getUserId(), ro.getConsentId(), ro.getClientId()); + if (consentStatusOptional.isPresent()) { + final UserConsentEntity consentStatus = consentStatusOptional.get(); + userConsentRepository.deleteById(consentStatus.getId()); + + // Log a record to the history table + logConsentChange( + consentStatus.getUserId(), + consentStatus.getConsentId(), + consentStatus.getClientId(), + ro.getExternalId(), + consentStatus.getParameters(), + new Date(), + ConsentChange.REJECT + ); + } + + } + + /** + * Remove consent a user gave to a TPP app. In case a user consent with given ID does not exist, this + * operation is a no-op. + * + * @param id User consent ID to be removed. + */ + @Transactional + public void removeConsent(Long id) throws ConsentNotFoundException { + + // In case a consent exists, reject it + Optional consentStatusOptional = userConsentRepository.findById(id); + if (consentStatusOptional.isPresent()) { + final UserConsentEntity consentStatus = consentStatusOptional.get(); + + // Check if a consent with given consent exists + final Optional consentOptional = consentRepository.findFirstById(consentStatus.getConsentId()); + if (!consentOptional.isPresent()) { // should happen only in case of data inconsistency. + throw new ConsentNotFoundException(consentStatus.getConsentId()); + } + + // Delete the consent with provided ID + userConsentRepository.deleteById(consentStatus.getId()); + + // Log a record to the history table + logConsentChange( + consentStatus.getUserId(), + consentStatus.getConsentId(), + consentStatus.getClientId(), + null, + consentStatus.getParameters(), + new Date(), + ConsentChange.REJECT + ); + } + + } + + /** + * Get the consent history for a given user. In case a client ID is specified, the results are filtered + * by the TPP application. + * + * @param userId User ID. + * @param clientId (optional) Client ID. + * @return Response with a consent history for given user (and optionally, a given app). + * @throws ConsentNotFoundException In case of inconsistency and deleted consent. + */ + @Transactional + public ConsentHistoryListResponse consentHistoryForUser(String userId, String clientId) throws ConsentNotFoundException { + + // Get the list of consent history items + List userConsentHistoryEntities; + if (clientId == null) { + userConsentHistoryEntities = userConsentHistoryRepository.consentHistoryForUser(userId); + } else { + userConsentHistoryEntities = userConsentHistoryRepository.consentHistoryForUser(userId, clientId); + } + + // Iterate and convert the objects + List givenConsentHistoryList = new ArrayList<>(); + for (UserConsentHistoryEntity uche: userConsentHistoryEntities) { + + // Find the consent template + final Optional consentEntityOptional = consentRepository.findFirstById(uche.getConsentId()); + if (!consentEntityOptional.isPresent()) { + throw new ConsentNotFoundException(uche.getConsentId()); + } + final ConsentEntity consent = consentEntityOptional.get(); + + //TODO: Replace by converter + GivenConsentHistory givenConsentHistory = new GivenConsentHistory(); + givenConsentHistory.setId(uche.getId()); + givenConsentHistory.setConsentId(uche.getConsentId()); + givenConsentHistory.setClientId(uche.getClientId()); + givenConsentHistory.setTimestampCreated(uche.getTimestampCreated()); + givenConsentHistory.setChange(uche.getChange().name()); + givenConsentHistory.setConsentParameters(uche.getParameters()); + givenConsentHistory.setExternalId(uche.getExternalId()); + givenConsentHistory.setConsentName(consent.getName()); + givenConsentHistory.setConsentText(consent.getText()); + + givenConsentHistoryList.add(givenConsentHistory); + } + + // Prepare and return a response + ConsentHistoryListResponse response = new ConsentHistoryListResponse(); + response.setUserId(userId); + response.setHistory(givenConsentHistoryList); + return response; + } + + /** + * Log a consent approval, prolongation or rejection to the history table. + * + * @param userId User ID. + * @param consentId Consent ID. + * @param clientId Client ID. + * @param parameters Consent parameters. + * @param date Timestamp of the change. + */ + private void logConsentChange(String userId, String consentId, String clientId, String externalId, String parameters, Date date, ConsentChange change) { + UserConsentHistoryEntity uche = new UserConsentHistoryEntity(); + uche.setUserId(userId); + uche.setConsentId(consentId); + uche.setClientId(clientId); + uche.setExternalId(externalId); + uche.setParameters(parameters); + uche.setChange(change); + uche.setTimestampCreated(date); + userConsentHistoryRepository.save(uche); + } + + /** + * Get list of all consents based on provided approved consent entities. + * + * @param consentEntities Consent entities approved by a user. + * @return List of given consents. + * @throws ConsentNotFoundException In case some approved consent is not found due to database inconsistency. + */ + private List listConsentsByUser(List consentEntities) throws ConsentNotFoundException { + // Find all given consents by a user + + final List givenConsents = new ArrayList<>(); + for (UserConsentEntity uce: consentEntities) { + + // Find the consent template + final Optional consentEntityOptional = consentRepository.findFirstById(uce.getConsentId()); + if (!consentEntityOptional.isPresent()) { + throw new ConsentNotFoundException(uce.getConsentId()); + } + final ConsentEntity consent = consentEntityOptional.get(); + + // Prepare the consent entity for the response + //TODO: Replace by converter + GivenConsent givenConsent = new GivenConsent(); + givenConsent.setId(uce.getId()); + givenConsent.setClientId(uce.getClientId()); + givenConsent.setConsentId(uce.getConsentId()); + givenConsent.setConsentParameters(uce.getParameters()); + givenConsent.setExternalId(uce.getExternalId()); + givenConsent.setTimestampCreated(uce.getTimestampCreated()); + givenConsent.setTimestampUpdated(uce.getTimestampUpdated()); + givenConsent.setConsentName(consent.getName()); + givenConsent.setConsentText(consent.getText()); + + // Add the consent entity to the list + givenConsents.add(givenConsent); + } + + return givenConsents; + } + + /** + * Convert Map to JSON String. + * @param parameters Map. + * @return JSON String. + */ + private String convertToJsonString(Map parameters) { + try { + return new ObjectMapper().writeValueAsString(parameters); + } catch (JsonProcessingException e) { + return null; + } + } + +} diff --git a/powerauth-tpp-engine/src/main/resources/application.properties b/powerauth-tpp-engine/src/main/resources/application.properties new file mode 100644 index 000000000..91e977acb --- /dev/null +++ b/powerauth-tpp-engine/src/main/resources/application.properties @@ -0,0 +1,38 @@ +# Allow externalization of properties using application-ext.properties +spring.profiles.active=ext + +# Database Configuration - MySQL +spring.datasource.url=jdbc:mysql://localhost:3306/powerauth +spring.datasource.username=powerauth +spring.datasource.password= +spring.datasource.driver-class-name=com.mysql.jdbc.Driver +spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect +spring.jpa.properties.hibernate.connection.characterEncoding=utf8 +spring.jpa.properties.hibernate.connection.useUnicode=true +spring.jpa.hibernate.use-new-id-generator-mappings=false + +# Database Configuration - Oracle +#spring.datasource.url=jdbc:oracle:thin:@//localhost:1521/powerauth +#spring.datasource.username=powerauth +#spring.datasource.password= +#spring.datasource.driver-class-name=oracle.jdbc.OracleDriver +# The following properties speed up Spring Boot startup +#spring.jpa.database-platform=org.hibernate.dialect.Oracle12cDialect +#spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults=false + +# Application Service Configuration +powerauth.nextstep.service.applicationName=powerauth-tpp-engine +powerauth.nextstep.service.applicationDisplayName=PowerAuth Web Flow 3rd Party and Consent Engine +powerauth.nextstep.service.applicationEnvironment= + +# Disable JMX +spring.jmx.enabled=false + +# Set JMX default domain in case JMX is enabled, otherwise the application startup fails due to clash in JMX bean names +spring.jmx.default-domain=powerauth-tpp-engine + +# Set Jackson date format +spring.jackson.date-format=yyyy-MM-dd'T'HH:mm:ssZ + +# Disable open session in view to avoid startup warning of Spring boot +spring.jpa.open-in-view=false \ No newline at end of file diff --git a/powerauth-tpp-engine/src/test/java/io/getlime/security/powerauth/app/tppengine/TppEngineApplicationTests.java b/powerauth-tpp-engine/src/test/java/io/getlime/security/powerauth/app/tppengine/TppEngineApplicationTests.java new file mode 100644 index 000000000..9f10fd649 --- /dev/null +++ b/powerauth-tpp-engine/src/test/java/io/getlime/security/powerauth/app/tppengine/TppEngineApplicationTests.java @@ -0,0 +1,27 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.getlime.security.powerauth.app.tppengine; + +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class TppEngineApplicationTests { + +} From 90b29f6f6b7873d912c0fff09d0b473bd4bf3f02 Mon Sep 17 00:00:00 2001 From: Petr Dvorak Date: Thu, 12 Sep 2019 10:55:00 +0200 Subject: [PATCH 020/197] Fix typo in property name --- .../src/main/resources/application.properties | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/powerauth-tpp-engine/src/main/resources/application.properties b/powerauth-tpp-engine/src/main/resources/application.properties index 91e977acb..160c4278b 100644 --- a/powerauth-tpp-engine/src/main/resources/application.properties +++ b/powerauth-tpp-engine/src/main/resources/application.properties @@ -21,9 +21,9 @@ spring.jpa.hibernate.use-new-id-generator-mappings=false #spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults=false # Application Service Configuration -powerauth.nextstep.service.applicationName=powerauth-tpp-engine -powerauth.nextstep.service.applicationDisplayName=PowerAuth Web Flow 3rd Party and Consent Engine -powerauth.nextstep.service.applicationEnvironment= +powerauth.tppEngine.service.applicationName=powerauth-tpp-engine +powerauth.tppEngine.service.applicationDisplayName=PowerAuth Web Flow 3rd Party and Consent Engine +powerauth.tppEngine.service.applicationEnvironment= # Disable JMX spring.jmx.enabled=false From 8f97790f7abf4ba6823c362c739c7e2a5baff2a6 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Thu, 12 Sep 2019 11:01:28 +0200 Subject: [PATCH 021/197] Reorder columns in DDL --- docs/sql/mysql/create_schema.sql | 4 ++-- docs/sql/oracle/create_schema.sql | 4 ++-- docs/sql/postgresql/create_schema.sql | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/sql/mysql/create_schema.sql b/docs/sql/mysql/create_schema.sql index 2b4b4c08e..04548b61d 100644 --- a/docs/sql/mysql/create_schema.sql +++ b/docs/sql/mysql/create_schema.sql @@ -18,9 +18,9 @@ CREATE TABLE oauth_client_details ( -- Table oauth_client_token stores OAuth2 tokens for retrieval by client applications. -- See: https://docs.spring.io/spring-security/oauth/apidocs/org/springframework/security/oauth2/client/token/JdbcClientTokenServices.html CREATE TABLE oauth_client_token ( + authentication_id VARCHAR(256) PRIMARY KEY, token_id VARCHAR(256), token LONG VARBINARY, - authentication_id VARCHAR(256) PRIMARY KEY, user_name VARCHAR(256), client_id VARCHAR(256) ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; @@ -28,9 +28,9 @@ CREATE TABLE oauth_client_token ( -- Table oauth_access_token stores OAuth2 access tokens. -- See: https://github.com/spring-projects/spring-security-oauth/blob/master/spring-security-oauth2/src/main/java/org/springframework/security/oauth2/provider/token/store/JdbcTokenStore.java CREATE TABLE oauth_access_token ( + authentication_id VARCHAR(256) PRIMARY KEY, token_id VARCHAR(256), token LONG VARBINARY, - authentication_id VARCHAR(256) PRIMARY KEY, user_name VARCHAR(256), client_id VARCHAR(256), authentication LONG VARBINARY, diff --git a/docs/sql/oracle/create_schema.sql b/docs/sql/oracle/create_schema.sql index e32c37efa..871bb45b4 100644 --- a/docs/sql/oracle/create_schema.sql +++ b/docs/sql/oracle/create_schema.sql @@ -18,9 +18,9 @@ CREATE TABLE oauth_client_details ( -- Table oauth_client_token stores OAuth2 tokens for retrieval by client applications. -- See: https://docs.spring.io/spring-security/oauth/apidocs/org/springframework/security/oauth2/client/token/JdbcClientTokenServices.html CREATE TABLE oauth_client_token ( + authentication_id VARCHAR(256) PRIMARY KEY, token_id VARCHAR(256), token BLOB, - authentication_id VARCHAR(256) PRIMARY KEY, user_name VARCHAR(256), client_id VARCHAR(256) ); @@ -28,9 +28,9 @@ CREATE TABLE oauth_client_token ( -- Table oauth_access_token stores OAuth2 access tokens. -- See: https://github.com/spring-projects/spring-security-oauth/blob/master/spring-security-oauth2/src/main/java/org/springframework/security/oauth2/provider/token/store/JdbcTokenStore.java CREATE TABLE oauth_access_token ( + authentication_id VARCHAR(256) PRIMARY KEY, token_id VARCHAR(256), token BLOB, - authentication_id VARCHAR(256) PRIMARY KEY, user_name VARCHAR(256), client_id VARCHAR(256), authentication BLOB, diff --git a/docs/sql/postgresql/create_schema.sql b/docs/sql/postgresql/create_schema.sql index 6ebb38a7d..47bca7bfc 100644 --- a/docs/sql/postgresql/create_schema.sql +++ b/docs/sql/postgresql/create_schema.sql @@ -18,9 +18,9 @@ CREATE TABLE oauth_client_details ( -- Table oauth_client_token stores OAuth2 tokens for retrieval by client applications. -- See: https://docs.spring.io/spring-security/oauth/apidocs/org/springframework/security/oauth2/client/token/JdbcClientTokenServices.html CREATE TABLE oauth_client_token ( + authentication_id VARCHAR(256) PRIMARY KEY, token_id VARCHAR(256), token BYTEA, - authentication_id VARCHAR(256) PRIMARY KEY, user_name VARCHAR(256), client_id VARCHAR(256) ); @@ -28,9 +28,9 @@ CREATE TABLE oauth_client_token ( -- Table oauth_access_token stores OAuth2 access tokens. -- See: https://github.com/spring-projects/spring-security-oauth/BYTEA/master/spring-security-oauth2/src/main/java/org/springframework/security/oauth2/provider/token/store/JdbcTokenStore.java CREATE TABLE oauth_access_token ( + authentication_id VARCHAR(256) PRIMARY KEY, token_id VARCHAR(256), token BYTEA, - authentication_id VARCHAR(256) PRIMARY KEY, user_name VARCHAR(256), client_id VARCHAR(256), authentication BYTEA, From 1e29a6fed2f1d969c4f0a548eb85980f7dec1cf2 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Thu, 12 Sep 2019 11:04:30 +0200 Subject: [PATCH 022/197] Added sql tag --- docs/Web-Flow-0.23.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Web-Flow-0.23.0.md b/docs/Web-Flow-0.23.0.md index b21dcbf5f..c0e08065d 100644 --- a/docs/Web-Flow-0.23.0.md +++ b/docs/Web-Flow-0.23.0.md @@ -10,7 +10,7 @@ Following database changes were introduced in version `0.23.0`: - We added `operation_hash` and `websocket_session_id` columns to table `wf_operation_session` DDL update script for Oracle: -``` +```sql ALTER TABLE ns_operation_config ADD afs_enabled NUMBER(1) DEFAULT 0 NOT NULL; ALTER TABLE wf_operation_session ADD operation_hash VARCHAR(256) DEFAULT 0 NOT NULL; From 101e4fc31db59b8a3906c0ee5ef63e9e2552bd5a Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Thu, 12 Sep 2019 15:17:01 +0200 Subject: [PATCH 023/197] Fix #637: Update version --- pom.xml | 2 +- powerauth-data-adapter-client/pom.xml | 8 +++---- powerauth-data-adapter-model/pom.xml | 6 ++--- powerauth-mtoken-model/pom.xml | 4 ++-- powerauth-nextstep-client/pom.xml | 6 ++--- powerauth-nextstep-model/pom.xml | 4 ++-- powerauth-nextstep/pom.xml | 6 ++--- .../pom.xml | 6 ++--- .../pom.xml | 8 +++---- powerauth-webflow-authentication-form/pom.xml | 6 ++--- powerauth-webflow-authentication-init/pom.xml | 6 ++--- .../pom.xml | 8 +++---- .../pom.xml | 12 +++++----- .../pom.xml | 6 ++--- powerauth-webflow-authentication-sms/pom.xml | 8 +++---- powerauth-webflow-authentication/pom.xml | 14 +++++------ powerauth-webflow-client/pom.xml | 6 ++--- powerauth-webflow-i18n/pom.xml | 4 ++-- powerauth-webflow-resources/pom.xml | 6 ++--- powerauth-webflow/package.json | 2 +- powerauth-webflow/pom.xml | 24 +++++++++---------- 21 files changed, 76 insertions(+), 76 deletions(-) diff --git a/pom.xml b/pom.xml index 5c77123c0..5a5b65fe7 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ io.getlime.security powerauth-webflow-parent - 0.22.0 + 0.23.0_SNAPSHOT pom diff --git a/powerauth-data-adapter-client/pom.xml b/powerauth-data-adapter-client/pom.xml index 794b664b6..91d422652 100644 --- a/powerauth-data-adapter-client/pom.xml +++ b/powerauth-data-adapter-client/pom.xml @@ -8,13 +8,13 @@ powerauth-data-adapter-client powerauth-data-adapter-client io.getlime.security - 0.22.0 + 0.23.0_SNAPSHOT jar powerauth-webflow-parent io.getlime.security - 0.22.0 + 0.23.0_SNAPSHOT ../pom.xml @@ -37,12 +37,12 @@ io.getlime.security powerauth-data-adapter-model - 0.22.0 + 0.23.0_SNAPSHOT io.getlime.security powerauth-nextstep-model - 0.22.0 + 0.23.0_SNAPSHOT diff --git a/powerauth-data-adapter-model/pom.xml b/powerauth-data-adapter-model/pom.xml index 3ab64b4f1..f952ffca7 100644 --- a/powerauth-data-adapter-model/pom.xml +++ b/powerauth-data-adapter-model/pom.xml @@ -8,13 +8,13 @@ powerauth-data-adapter-model powerauth-data-adapter-model io.getlime.security - 0.22.0 + 0.23.0_SNAPSHOT jar powerauth-webflow-parent io.getlime.security - 0.22.0 + 0.23.0_SNAPSHOT ../pom.xml @@ -27,7 +27,7 @@ io.getlime.security powerauth-nextstep-model - 0.22.0 + 0.23.0_SNAPSHOT diff --git a/powerauth-mtoken-model/pom.xml b/powerauth-mtoken-model/pom.xml index 097d7943e..1871fc816 100644 --- a/powerauth-mtoken-model/pom.xml +++ b/powerauth-mtoken-model/pom.xml @@ -6,12 +6,12 @@ 4.0.0 powerauth-mtoken-model io.getlime.security - 0.22.0 + 0.23.0_SNAPSHOT powerauth-webflow-parent io.getlime.security - 0.22.0 + 0.23.0_SNAPSHOT ../pom.xml diff --git a/powerauth-nextstep-client/pom.xml b/powerauth-nextstep-client/pom.xml index f360bc755..c5a1c0286 100644 --- a/powerauth-nextstep-client/pom.xml +++ b/powerauth-nextstep-client/pom.xml @@ -8,14 +8,14 @@ powerauth-webflow-parent io.getlime.security - 0.22.0 + 0.23.0_SNAPSHOT ../pom.xml powerauth-nextstep-client powerauth-nextstep-client io.getlime.security - 0.22.0 + 0.23.0_SNAPSHOT jar @@ -37,7 +37,7 @@ io.getlime.security powerauth-nextstep-model - 0.22.0 + 0.23.0_SNAPSHOT diff --git a/powerauth-nextstep-model/pom.xml b/powerauth-nextstep-model/pom.xml index 349ad3896..e50c585ea 100644 --- a/powerauth-nextstep-model/pom.xml +++ b/powerauth-nextstep-model/pom.xml @@ -8,13 +8,13 @@ powerauth-nextstep-model powerauth-nextstep-model io.getlime.security - 0.22.0 + 0.23.0_SNAPSHOT jar io.getlime.security powerauth-webflow-parent - 0.22.0 + 0.23.0_SNAPSHOT ../pom.xml diff --git a/powerauth-nextstep/pom.xml b/powerauth-nextstep/pom.xml index 3e35d56e6..d1e0c0ba0 100644 --- a/powerauth-nextstep/pom.xml +++ b/powerauth-nextstep/pom.xml @@ -7,13 +7,13 @@ powerauth-nextstep io.getlime.security PowerAuth 2.0 Next Step Server - 0.22.0 + 0.23.0_SNAPSHOT war io.getlime.security powerauth-webflow-parent - 0.22.0 + 0.23.0_SNAPSHOT ../pom.xml @@ -42,7 +42,7 @@ io.getlime.security powerauth-nextstep-model - 0.22.0 + 0.23.0_SNAPSHOT diff --git a/powerauth-webflow-authentication-approval-sca/pom.xml b/powerauth-webflow-authentication-approval-sca/pom.xml index 519211b12..d01a0dbc6 100644 --- a/powerauth-webflow-authentication-approval-sca/pom.xml +++ b/powerauth-webflow-authentication-approval-sca/pom.xml @@ -8,20 +8,20 @@ powerauth-webflow-parent io.getlime.security - 0.22.0 + 0.23.0_SNAPSHOT ../pom.xml powerauth-webflow-authentication-approval-sca powerauth-webflow-authentication-approval-sca io.getlime.security - 0.22.0 + 0.23.0_SNAPSHOT io.getlime.security powerauth-webflow-authentication - 0.22.0 + 0.23.0_SNAPSHOT diff --git a/powerauth-webflow-authentication-consent/pom.xml b/powerauth-webflow-authentication-consent/pom.xml index 0b390fd9f..c3563ea5c 100644 --- a/powerauth-webflow-authentication-consent/pom.xml +++ b/powerauth-webflow-authentication-consent/pom.xml @@ -24,25 +24,25 @@ powerauth-webflow-parent io.getlime.security - 0.22.0 + 0.23.0_SNAPSHOT ../pom.xml powerauth-webflow-authentication-consent powerauth-webflow-authentication-consent io.getlime.security - 0.22.0 + 0.23.0_SNAPSHOT io.getlime.security powerauth-webflow-authentication - 0.22.0 + 0.23.0_SNAPSHOT io.getlime.security powerauth-data-adapter-client - 0.22.0 + 0.23.0_SNAPSHOT com.googlecode.owasp-java-html-sanitizer diff --git a/powerauth-webflow-authentication-form/pom.xml b/powerauth-webflow-authentication-form/pom.xml index f98171cbb..02fbfbe70 100644 --- a/powerauth-webflow-authentication-form/pom.xml +++ b/powerauth-webflow-authentication-form/pom.xml @@ -8,20 +8,20 @@ powerauth-webflow-parent io.getlime.security - 0.22.0 + 0.23.0_SNAPSHOT ../pom.xml powerauth-webflow-authentication-form powerauth-webflow-authentication-form io.getlime.security - 0.22.0 + 0.23.0_SNAPSHOT io.getlime.security powerauth-webflow-authentication - 0.22.0 + 0.23.0_SNAPSHOT org.bouncycastle diff --git a/powerauth-webflow-authentication-init/pom.xml b/powerauth-webflow-authentication-init/pom.xml index 5e3465996..1e7bc4b2d 100644 --- a/powerauth-webflow-authentication-init/pom.xml +++ b/powerauth-webflow-authentication-init/pom.xml @@ -8,20 +8,20 @@ powerauth-webflow-parent io.getlime.security - 0.22.0 + 0.23.0_SNAPSHOT ../pom.xml powerauth-webflow-authentication-init powerauth-webflow-authentication-init io.getlime.security - 0.22.0 + 0.23.0_SNAPSHOT io.getlime.security powerauth-webflow-authentication - 0.22.0 + 0.23.0_SNAPSHOT diff --git a/powerauth-webflow-authentication-login-sca/pom.xml b/powerauth-webflow-authentication-login-sca/pom.xml index 4db800109..69b115452 100644 --- a/powerauth-webflow-authentication-login-sca/pom.xml +++ b/powerauth-webflow-authentication-login-sca/pom.xml @@ -8,25 +8,25 @@ powerauth-webflow-parent io.getlime.security - 0.22.0 + 0.23.0_SNAPSHOT ../pom.xml powerauth-webflow-authentication-login-sca powerauth-webflow-authentication-login-sca io.getlime.security - 0.22.0 + 0.23.0_SNAPSHOT io.getlime.security powerauth-webflow-authentication - 0.22.0 + 0.23.0_SNAPSHOT io.getlime.security powerauth-java-crypto - 0.22.0 + 0.23.0 diff --git a/powerauth-webflow-authentication-mtoken/pom.xml b/powerauth-webflow-authentication-mtoken/pom.xml index 6f52d1251..837c7eb5a 100644 --- a/powerauth-webflow-authentication-mtoken/pom.xml +++ b/powerauth-webflow-authentication-mtoken/pom.xml @@ -24,14 +24,14 @@ powerauth-webflow-parent io.getlime.security - 0.22.0 + 0.23.0_SNAPSHOT ../pom.xml powerauth-webflow-authentication-mtoken powerauth-webflow-authentication-mtoken io.getlime.security - 0.22.0 + 0.23.0_SNAPSHOT @@ -50,22 +50,22 @@ io.getlime.security powerauth-webflow-authentication - 0.22.0 + 0.23.0_SNAPSHOT io.getlime.security powerauth-restful-security-spring - 0.22.0 + 0.23.0 io.getlime.security powerauth-push-client - 0.22.0 + 0.23.0 io.getlime.security powerauth-mtoken-model - 0.22.0 + 0.23.0_SNAPSHOT diff --git a/powerauth-webflow-authentication-operation-review/pom.xml b/powerauth-webflow-authentication-operation-review/pom.xml index 2215d01bd..77228f995 100644 --- a/powerauth-webflow-authentication-operation-review/pom.xml +++ b/powerauth-webflow-authentication-operation-review/pom.xml @@ -24,20 +24,20 @@ powerauth-webflow-parent io.getlime.security - 0.22.0 + 0.23.0_SNAPSHOT ../pom.xml powerauth-webflow-authentication-operation-review powerauth-webflow-authentication-operation-review io.getlime.security - 0.22.0 + 0.23.0_SNAPSHOT io.getlime.security powerauth-webflow-authentication - 0.22.0 + 0.23.0_SNAPSHOT diff --git a/powerauth-webflow-authentication-sms/pom.xml b/powerauth-webflow-authentication-sms/pom.xml index bed0a405a..7ebe7f423 100644 --- a/powerauth-webflow-authentication-sms/pom.xml +++ b/powerauth-webflow-authentication-sms/pom.xml @@ -24,25 +24,25 @@ powerauth-webflow-parent io.getlime.security - 0.22.0 + 0.23.0_SNAPSHOT ../pom.xml powerauth-webflow-authentication-sms powerauth-webflow-authentication-sms io.getlime.security - 0.22.0 + 0.23.0_SNAPSHOT io.getlime.security powerauth-webflow-authentication - 0.22.0 + 0.23.0_SNAPSHOT io.getlime.security powerauth-data-adapter-client - 0.22.0 + 0.23.0_SNAPSHOT diff --git a/powerauth-webflow-authentication/pom.xml b/powerauth-webflow-authentication/pom.xml index f0025bd7a..be591719a 100644 --- a/powerauth-webflow-authentication/pom.xml +++ b/powerauth-webflow-authentication/pom.xml @@ -8,14 +8,14 @@ powerauth-webflow-parent io.getlime.security - 0.22.0 + 0.23.0_SNAPSHOT ../pom.xml io.getlime.security powerauth-webflow-authentication powerauth-webflow-authentication - 0.22.0 + 0.23.0_SNAPSHOT jar @@ -49,27 +49,27 @@ io.getlime.security powerauth-data-adapter-client - 0.22.0 + 0.23.0_SNAPSHOT io.getlime.security powerauth-nextstep-client - 0.22.0 + 0.23.0_SNAPSHOT io.getlime.security powerauth-webflow-i18n - 0.22.0 + 0.23.0_SNAPSHOT io.getlime.security powerauth-java-client-spring - 0.22.0 + 0.23.0 io.getlime.security powerauth-java-crypto - 0.22.0 + 0.23.0 diff --git a/powerauth-webflow-client/pom.xml b/powerauth-webflow-client/pom.xml index f51a80b01..4078cff3e 100644 --- a/powerauth-webflow-client/pom.xml +++ b/powerauth-webflow-client/pom.xml @@ -24,13 +24,13 @@ powerauth-webflow-client io.getlime.security PowerAuth 2.0 Web Flow testing client for OAuth 2.0 dance. - 0.22.0 + 0.23.0_SNAPSHOT war powerauth-webflow-parent io.getlime.security - 0.22.0 + 0.23.0_SNAPSHOT ../pom.xml @@ -85,7 +85,7 @@ io.getlime.security powerauth-nextstep-client - 0.22.0 + 0.23.0_SNAPSHOT diff --git a/powerauth-webflow-i18n/pom.xml b/powerauth-webflow-i18n/pom.xml index 81c2168ad..d2bbb4630 100644 --- a/powerauth-webflow-i18n/pom.xml +++ b/powerauth-webflow-i18n/pom.xml @@ -7,13 +7,13 @@ powerauth-webflow-i18n io.getlime.security PowerAuth 2.0 Next Step Server - 0.22.0 + 0.23.0_SNAPSHOT jar io.getlime.security powerauth-webflow-parent - 0.22.0 + 0.23.0_SNAPSHOT ../pom.xml diff --git a/powerauth-webflow-resources/pom.xml b/powerauth-webflow-resources/pom.xml index c319f3da3..dfd2c5713 100644 --- a/powerauth-webflow-resources/pom.xml +++ b/powerauth-webflow-resources/pom.xml @@ -8,14 +8,14 @@ powerauth-webflow-parent io.getlime.security - 0.22.0 + 0.23.0_SNAPSHOT ../pom.xml io.getlime.security powerauth-webflow-resources powerauth-webflow-resources - 0.22.0 + 0.23.0_SNAPSHOT jar @@ -45,7 +45,7 @@ io.getlime.security powerauth-data-adapter-client - 0.22.0 + 0.23.0_SNAPSHOT diff --git a/powerauth-webflow/package.json b/powerauth-webflow/package.json index 0249c2e47..247f11794 100644 --- a/powerauth-webflow/package.json +++ b/powerauth-webflow/package.json @@ -1,6 +1,6 @@ { "name": "powerauth-webflow", - "version": "0.22.0", + "version": "0.23.0_SNAPSHOT", "description": "Federated Authentication and Authorization Server for Web", "repository": { "type": "git", diff --git a/powerauth-webflow/pom.xml b/powerauth-webflow/pom.xml index 3f3b07690..7ea6b096a 100644 --- a/powerauth-webflow/pom.xml +++ b/powerauth-webflow/pom.xml @@ -7,14 +7,14 @@ io.getlime.security powerauth-webflow-parent - 0.22.0 + 0.23.0_SNAPSHOT ../pom.xml powerauth-webflow powerauth-webflow Federated Authentication and Authorization Server for Web - 0.22.0 + 0.23.0_SNAPSHOT war @@ -95,27 +95,27 @@ io.getlime.security powerauth-webflow-authentication-form - 0.22.0 + 0.23.0_SNAPSHOT io.getlime.security powerauth-webflow-authentication-login-sca - 0.22.0 + 0.23.0_SNAPSHOT io.getlime.security powerauth-webflow-authentication-init - 0.22.0 + 0.23.0_SNAPSHOT io.getlime.security powerauth-webflow-authentication-operation-review - 0.22.0 + 0.23.0_SNAPSHOT io.getlime.security powerauth-webflow-authentication-mtoken - 0.22.0 + 0.23.0_SNAPSHOT bcprov-jdk15on @@ -126,27 +126,27 @@ io.getlime.security powerauth-webflow-authentication-sms - 0.22.0 + 0.23.0_SNAPSHOT io.getlime.security powerauth-webflow-authentication-approval-sca - 0.22.0 + 0.23.0_SNAPSHOT io.getlime.security powerauth-webflow-authentication-consent - 0.22.0 + 0.23.0_SNAPSHOT io.getlime.security powerauth-webflow-resources - 0.22.0 + 0.23.0_SNAPSHOT io.getlime.security powerauth-webflow-i18n - 0.22.0 + 0.23.0_SNAPSHOT From 50dfd19bf960322dedb2eb603ac32219bce711e0 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Thu, 12 Sep 2019 15:37:17 +0200 Subject: [PATCH 024/197] Use 0.23.0-SNAPSHOT version for all backend components --- pom.xml | 2 +- powerauth-data-adapter-client/pom.xml | 8 +++---- powerauth-data-adapter-model/pom.xml | 6 ++--- powerauth-mtoken-model/pom.xml | 4 ++-- powerauth-nextstep-client/pom.xml | 6 ++--- powerauth-nextstep-model/pom.xml | 4 ++-- powerauth-nextstep/pom.xml | 6 ++--- .../pom.xml | 6 ++--- .../pom.xml | 8 +++---- powerauth-webflow-authentication-form/pom.xml | 6 ++--- powerauth-webflow-authentication-init/pom.xml | 6 ++--- .../pom.xml | 8 +++---- .../pom.xml | 12 +++++----- .../pom.xml | 6 ++--- powerauth-webflow-authentication-sms/pom.xml | 8 +++---- powerauth-webflow-authentication/pom.xml | 14 +++++------ powerauth-webflow-client/pom.xml | 6 ++--- powerauth-webflow-i18n/pom.xml | 4 ++-- powerauth-webflow-resources/pom.xml | 6 ++--- powerauth-webflow/pom.xml | 24 +++++++++---------- 20 files changed, 75 insertions(+), 75 deletions(-) diff --git a/pom.xml b/pom.xml index 5a5b65fe7..9855332c7 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ io.getlime.security powerauth-webflow-parent - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT pom diff --git a/powerauth-data-adapter-client/pom.xml b/powerauth-data-adapter-client/pom.xml index 91d422652..1549a76a3 100644 --- a/powerauth-data-adapter-client/pom.xml +++ b/powerauth-data-adapter-client/pom.xml @@ -8,13 +8,13 @@ powerauth-data-adapter-client powerauth-data-adapter-client io.getlime.security - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT jar powerauth-webflow-parent io.getlime.security - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT ../pom.xml @@ -37,12 +37,12 @@ io.getlime.security powerauth-data-adapter-model - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT io.getlime.security powerauth-nextstep-model - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT diff --git a/powerauth-data-adapter-model/pom.xml b/powerauth-data-adapter-model/pom.xml index f952ffca7..c8b020943 100644 --- a/powerauth-data-adapter-model/pom.xml +++ b/powerauth-data-adapter-model/pom.xml @@ -8,13 +8,13 @@ powerauth-data-adapter-model powerauth-data-adapter-model io.getlime.security - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT jar powerauth-webflow-parent io.getlime.security - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT ../pom.xml @@ -27,7 +27,7 @@ io.getlime.security powerauth-nextstep-model - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT diff --git a/powerauth-mtoken-model/pom.xml b/powerauth-mtoken-model/pom.xml index 1871fc816..63005a190 100644 --- a/powerauth-mtoken-model/pom.xml +++ b/powerauth-mtoken-model/pom.xml @@ -6,12 +6,12 @@ 4.0.0 powerauth-mtoken-model io.getlime.security - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT powerauth-webflow-parent io.getlime.security - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT ../pom.xml diff --git a/powerauth-nextstep-client/pom.xml b/powerauth-nextstep-client/pom.xml index c5a1c0286..79d9bc18e 100644 --- a/powerauth-nextstep-client/pom.xml +++ b/powerauth-nextstep-client/pom.xml @@ -8,14 +8,14 @@ powerauth-webflow-parent io.getlime.security - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT ../pom.xml powerauth-nextstep-client powerauth-nextstep-client io.getlime.security - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT jar @@ -37,7 +37,7 @@ io.getlime.security powerauth-nextstep-model - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT diff --git a/powerauth-nextstep-model/pom.xml b/powerauth-nextstep-model/pom.xml index e50c585ea..c3a996a5b 100644 --- a/powerauth-nextstep-model/pom.xml +++ b/powerauth-nextstep-model/pom.xml @@ -8,13 +8,13 @@ powerauth-nextstep-model powerauth-nextstep-model io.getlime.security - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT jar io.getlime.security powerauth-webflow-parent - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT ../pom.xml diff --git a/powerauth-nextstep/pom.xml b/powerauth-nextstep/pom.xml index d1e0c0ba0..6014a419a 100644 --- a/powerauth-nextstep/pom.xml +++ b/powerauth-nextstep/pom.xml @@ -7,13 +7,13 @@ powerauth-nextstep io.getlime.security PowerAuth 2.0 Next Step Server - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT war io.getlime.security powerauth-webflow-parent - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT ../pom.xml @@ -42,7 +42,7 @@ io.getlime.security powerauth-nextstep-model - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT diff --git a/powerauth-webflow-authentication-approval-sca/pom.xml b/powerauth-webflow-authentication-approval-sca/pom.xml index d01a0dbc6..581cb8410 100644 --- a/powerauth-webflow-authentication-approval-sca/pom.xml +++ b/powerauth-webflow-authentication-approval-sca/pom.xml @@ -8,20 +8,20 @@ powerauth-webflow-parent io.getlime.security - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT ../pom.xml powerauth-webflow-authentication-approval-sca powerauth-webflow-authentication-approval-sca io.getlime.security - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT io.getlime.security powerauth-webflow-authentication - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT diff --git a/powerauth-webflow-authentication-consent/pom.xml b/powerauth-webflow-authentication-consent/pom.xml index c3563ea5c..149eb4c85 100644 --- a/powerauth-webflow-authentication-consent/pom.xml +++ b/powerauth-webflow-authentication-consent/pom.xml @@ -24,25 +24,25 @@ powerauth-webflow-parent io.getlime.security - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT ../pom.xml powerauth-webflow-authentication-consent powerauth-webflow-authentication-consent io.getlime.security - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT io.getlime.security powerauth-webflow-authentication - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT io.getlime.security powerauth-data-adapter-client - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT com.googlecode.owasp-java-html-sanitizer diff --git a/powerauth-webflow-authentication-form/pom.xml b/powerauth-webflow-authentication-form/pom.xml index 02fbfbe70..4ba3d2ce8 100644 --- a/powerauth-webflow-authentication-form/pom.xml +++ b/powerauth-webflow-authentication-form/pom.xml @@ -8,20 +8,20 @@ powerauth-webflow-parent io.getlime.security - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT ../pom.xml powerauth-webflow-authentication-form powerauth-webflow-authentication-form io.getlime.security - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT io.getlime.security powerauth-webflow-authentication - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT org.bouncycastle diff --git a/powerauth-webflow-authentication-init/pom.xml b/powerauth-webflow-authentication-init/pom.xml index 1e7bc4b2d..9941493c4 100644 --- a/powerauth-webflow-authentication-init/pom.xml +++ b/powerauth-webflow-authentication-init/pom.xml @@ -8,20 +8,20 @@ powerauth-webflow-parent io.getlime.security - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT ../pom.xml powerauth-webflow-authentication-init powerauth-webflow-authentication-init io.getlime.security - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT io.getlime.security powerauth-webflow-authentication - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT diff --git a/powerauth-webflow-authentication-login-sca/pom.xml b/powerauth-webflow-authentication-login-sca/pom.xml index 69b115452..91ea46c0c 100644 --- a/powerauth-webflow-authentication-login-sca/pom.xml +++ b/powerauth-webflow-authentication-login-sca/pom.xml @@ -8,25 +8,25 @@ powerauth-webflow-parent io.getlime.security - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT ../pom.xml powerauth-webflow-authentication-login-sca powerauth-webflow-authentication-login-sca io.getlime.security - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT io.getlime.security powerauth-webflow-authentication - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT io.getlime.security powerauth-java-crypto - 0.23.0 + 0.23.0-SNAPSHOT diff --git a/powerauth-webflow-authentication-mtoken/pom.xml b/powerauth-webflow-authentication-mtoken/pom.xml index 837c7eb5a..166634886 100644 --- a/powerauth-webflow-authentication-mtoken/pom.xml +++ b/powerauth-webflow-authentication-mtoken/pom.xml @@ -24,14 +24,14 @@ powerauth-webflow-parent io.getlime.security - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT ../pom.xml powerauth-webflow-authentication-mtoken powerauth-webflow-authentication-mtoken io.getlime.security - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT @@ -50,22 +50,22 @@ io.getlime.security powerauth-webflow-authentication - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT io.getlime.security powerauth-restful-security-spring - 0.23.0 + 0.23.0-SNAPSHOT io.getlime.security powerauth-push-client - 0.23.0 + 0.23.0-SNAPSHOT io.getlime.security powerauth-mtoken-model - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT diff --git a/powerauth-webflow-authentication-operation-review/pom.xml b/powerauth-webflow-authentication-operation-review/pom.xml index 77228f995..b268a540f 100644 --- a/powerauth-webflow-authentication-operation-review/pom.xml +++ b/powerauth-webflow-authentication-operation-review/pom.xml @@ -24,20 +24,20 @@ powerauth-webflow-parent io.getlime.security - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT ../pom.xml powerauth-webflow-authentication-operation-review powerauth-webflow-authentication-operation-review io.getlime.security - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT io.getlime.security powerauth-webflow-authentication - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT diff --git a/powerauth-webflow-authentication-sms/pom.xml b/powerauth-webflow-authentication-sms/pom.xml index 7ebe7f423..fa33e2545 100644 --- a/powerauth-webflow-authentication-sms/pom.xml +++ b/powerauth-webflow-authentication-sms/pom.xml @@ -24,25 +24,25 @@ powerauth-webflow-parent io.getlime.security - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT ../pom.xml powerauth-webflow-authentication-sms powerauth-webflow-authentication-sms io.getlime.security - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT io.getlime.security powerauth-webflow-authentication - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT io.getlime.security powerauth-data-adapter-client - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT diff --git a/powerauth-webflow-authentication/pom.xml b/powerauth-webflow-authentication/pom.xml index be591719a..3a924c80f 100644 --- a/powerauth-webflow-authentication/pom.xml +++ b/powerauth-webflow-authentication/pom.xml @@ -8,14 +8,14 @@ powerauth-webflow-parent io.getlime.security - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT ../pom.xml io.getlime.security powerauth-webflow-authentication powerauth-webflow-authentication - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT jar @@ -49,27 +49,27 @@ io.getlime.security powerauth-data-adapter-client - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT io.getlime.security powerauth-nextstep-client - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT io.getlime.security powerauth-webflow-i18n - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT io.getlime.security powerauth-java-client-spring - 0.23.0 + 0.23.0-SNAPSHOT io.getlime.security powerauth-java-crypto - 0.23.0 + 0.23.0-SNAPSHOT/version> diff --git a/powerauth-webflow-client/pom.xml b/powerauth-webflow-client/pom.xml index 4078cff3e..cf1e99ae5 100644 --- a/powerauth-webflow-client/pom.xml +++ b/powerauth-webflow-client/pom.xml @@ -24,13 +24,13 @@ powerauth-webflow-client io.getlime.security PowerAuth 2.0 Web Flow testing client for OAuth 2.0 dance. - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT war powerauth-webflow-parent io.getlime.security - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT ../pom.xml @@ -85,7 +85,7 @@ io.getlime.security powerauth-nextstep-client - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT diff --git a/powerauth-webflow-i18n/pom.xml b/powerauth-webflow-i18n/pom.xml index d2bbb4630..19a4128ff 100644 --- a/powerauth-webflow-i18n/pom.xml +++ b/powerauth-webflow-i18n/pom.xml @@ -7,13 +7,13 @@ powerauth-webflow-i18n io.getlime.security PowerAuth 2.0 Next Step Server - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT jar io.getlime.security powerauth-webflow-parent - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT ../pom.xml diff --git a/powerauth-webflow-resources/pom.xml b/powerauth-webflow-resources/pom.xml index dfd2c5713..51110d207 100644 --- a/powerauth-webflow-resources/pom.xml +++ b/powerauth-webflow-resources/pom.xml @@ -8,14 +8,14 @@ powerauth-webflow-parent io.getlime.security - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT ../pom.xml io.getlime.security powerauth-webflow-resources powerauth-webflow-resources - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT jar @@ -45,7 +45,7 @@ io.getlime.security powerauth-data-adapter-client - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT diff --git a/powerauth-webflow/pom.xml b/powerauth-webflow/pom.xml index 7ea6b096a..a25ee76fc 100644 --- a/powerauth-webflow/pom.xml +++ b/powerauth-webflow/pom.xml @@ -7,14 +7,14 @@ io.getlime.security powerauth-webflow-parent - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT ../pom.xml powerauth-webflow powerauth-webflow Federated Authentication and Authorization Server for Web - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT war @@ -95,27 +95,27 @@ io.getlime.security powerauth-webflow-authentication-form - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT io.getlime.security powerauth-webflow-authentication-login-sca - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT io.getlime.security powerauth-webflow-authentication-init - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT io.getlime.security powerauth-webflow-authentication-operation-review - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT io.getlime.security powerauth-webflow-authentication-mtoken - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT bcprov-jdk15on @@ -126,27 +126,27 @@ io.getlime.security powerauth-webflow-authentication-sms - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT io.getlime.security powerauth-webflow-authentication-approval-sca - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT io.getlime.security powerauth-webflow-authentication-consent - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT io.getlime.security powerauth-webflow-resources - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT io.getlime.security powerauth-webflow-i18n - 0.23.0_SNAPSHOT + 0.23.0-SNAPSHOT From 2e7fb6b3d4c134c8f7c1437e761b146d88000ea6 Mon Sep 17 00:00:00 2001 From: Petr Dvorak Date: Thu, 12 Sep 2019 19:53:03 +0200 Subject: [PATCH 025/197] Fix #640: Implement TPP engine client --- pom.xml | 1 + powerauth-data-adapter-client/pom.xml | 1 - powerauth-tpp-engine-client/pom.xml | 59 ++++ .../tpp/engine/client/TppEngineClient.java | 262 ++++++++++++++++++ .../client/TppEngineClientException.java | 61 ++++ .../model/entity/TppEngineError.java | 54 ++++ .../controller/UserConsentController.java | 6 +- 7 files changed, 440 insertions(+), 4 deletions(-) create mode 100644 powerauth-tpp-engine-client/pom.xml create mode 100644 powerauth-tpp-engine-client/src/main/java/io/getlime/security/powerauth/lib/tpp/engine/client/TppEngineClient.java create mode 100644 powerauth-tpp-engine-client/src/main/java/io/getlime/security/powerauth/lib/tpp/engine/client/TppEngineClientException.java create mode 100644 powerauth-tpp-engine-model/src/main/java/io/getlime/security/powerauth/app/tppengine/model/entity/TppEngineError.java diff --git a/pom.xml b/pom.xml index c9d34917f..3e1b3145a 100644 --- a/pom.xml +++ b/pom.xml @@ -84,6 +84,7 @@ powerauth-mtoken-model powerauth-tpp-engine powerauth-tpp-engine-model + powerauth-tpp-engine-client diff --git a/powerauth-data-adapter-client/pom.xml b/powerauth-data-adapter-client/pom.xml index 794b664b6..e08371705 100644 --- a/powerauth-data-adapter-client/pom.xml +++ b/powerauth-data-adapter-client/pom.xml @@ -7,7 +7,6 @@ powerauth-data-adapter-client powerauth-data-adapter-client - io.getlime.security 0.22.0 jar diff --git a/powerauth-tpp-engine-client/pom.xml b/powerauth-tpp-engine-client/pom.xml new file mode 100644 index 000000000..7a7aaee03 --- /dev/null +++ b/powerauth-tpp-engine-client/pom.xml @@ -0,0 +1,59 @@ + + + + + + 4.0.0 + + + powerauth-webflow-parent + io.getlime.security + 0.22.0 + + + powerauth-tpp-engine-client + powerauth-tpp-engine-client + 0.22.0 + jar + + + + + + org.springframework.boot + spring-boot-starter-web + + + + + org.apache.httpcomponents + httpclient + 4.5.6 + + + + + io.getlime.security + powerauth-tpp-engine-model + 0.22.0 + + + + + \ No newline at end of file diff --git a/powerauth-tpp-engine-client/src/main/java/io/getlime/security/powerauth/lib/tpp/engine/client/TppEngineClient.java b/powerauth-tpp-engine-client/src/main/java/io/getlime/security/powerauth/lib/tpp/engine/client/TppEngineClient.java new file mode 100644 index 000000000..f1b2c2050 --- /dev/null +++ b/powerauth-tpp-engine-client/src/main/java/io/getlime/security/powerauth/lib/tpp/engine/client/TppEngineClient.java @@ -0,0 +1,262 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.getlime.security.powerauth.lib.tpp.engine.client; + +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; +import io.getlime.core.rest.model.base.request.ObjectRequest; +import io.getlime.core.rest.model.base.response.ObjectResponse; +import io.getlime.core.rest.model.base.response.Response; +import io.getlime.security.powerauth.app.tppengine.model.entity.TppEngineError; +import io.getlime.security.powerauth.app.tppengine.model.request.GiveConsentRequest; +import io.getlime.security.powerauth.app.tppengine.model.request.RemoveConsentRequest; +import io.getlime.security.powerauth.app.tppengine.model.response.ConsentDetailResponse; +import io.getlime.security.powerauth.app.tppengine.model.response.GiveConsentResponse; +import io.getlime.security.powerauth.app.tppengine.model.response.UserConsentDetailResponse; +import org.springframework.core.ParameterizedTypeReference; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpMethod; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; +import org.springframework.http.converter.HttpMessageConverter; +import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; +import org.springframework.web.client.HttpStatusCodeException; +import org.springframework.web.client.ResourceAccessException; +import org.springframework.web.client.RestTemplate; + +import java.io.IOException; +import java.util.*; + +/** + * TPP Engine Client provides methods for communication with the TPP registry and consent engine. + * It uses the RestTemplate class to handle REST API calls. Apache HTTP client is used instead of default client + * so that error responses contain full response bodies. + * + * @author Petr Dvorak, petr@wultra.com + */ +public class TppEngineClient { + + private final String serviceUrl; + private final ObjectMapper objectMapper; + private final RestTemplate restTemplate; + + /** + * Create a new client with provided base URL. + * + * @param serviceUrl Base URL. + */ + public TppEngineClient(String serviceUrl) { + this(serviceUrl, null); + } + + /** + * Create a new client with provided base URL and custom object mapper. + * + * @param serviceUrl Base URL. + * @param objectMapper Object mapper. + */ + public TppEngineClient(String serviceUrl, ObjectMapper objectMapper) { + this.serviceUrl = serviceUrl; + if (objectMapper != null) { + this.objectMapper = objectMapper; + } else { + this.objectMapper = objectMapper(); + } + restTemplate = new RestTemplate(); + + // Prepare message converters + MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter(this.objectMapper); + List> converters = new ArrayList<>(); + converters.add(converter); + restTemplate.setMessageConverters(converters); + + restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory()); + } + + /** + * Construct object mapper with default configuration which allows sending empty objects and allows unknown properties. + * + * @return Constructed object mapper. + */ + private ObjectMapper objectMapper() { + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + return mapper; + } + + /** + * Get default instance of REST client. + * + * @return RestTemplate with default configuration. + */ + public RestTemplate getRestTemplate() { + return restTemplate; + } + + + /** + * Lookup consent details (details of a consent template). + * + * @param id Username for user account which is being looked up. + * @return Response with user details. + * @throws TppEngineClientException Thrown when client request fails or user does not exist. + */ + public ObjectResponse consentDetail(String id) throws TppEngineClientException { + try { + // Exchange authentication request with data adapter. + final Map params = new HashMap<>(); + params.put("id", id); + ResponseEntity> response = restTemplate.exchange( + serviceUrl + "/consent", + HttpMethod.GET, + null, + new ParameterizedTypeReference>() {}, + params + ); + return new ObjectResponse<>(Objects.requireNonNull(response.getBody()).getResponseObject()); + } catch (HttpStatusCodeException ex) { + throw httpStatusException(ex); + } catch (ResourceAccessException ex) { // Data Adapter service is down + throw resourceAccessException(ex); + } + } + + /** + * Lookup consent status for given user and app. + * + * @param userId Username for user account which is being looked up. + * @param consentId Identifier of a consent. + * @param clientId Identifier of a TPP app. + * @return Response with details of consent for given user and TPP app. + * @throws TppEngineClientException Thrown when client request fails or user does not exist. + */ + public ObjectResponse consentStatus(String userId, String consentId, String clientId) throws TppEngineClientException { + try { + // Exchange authentication request with data adapter. + final Map params = new HashMap<>(); + params.put("userId", userId); + params.put("consentId", consentId); + params.put("clientId", clientId); + ResponseEntity> response = restTemplate.exchange( + serviceUrl + "/user/consent", + HttpMethod.GET, + null, + new ParameterizedTypeReference>() {}, + params + ); + return new ObjectResponse<>(Objects.requireNonNull(response.getBody()).getResponseObject()); + } catch (HttpStatusCodeException ex) { + throw httpStatusException(ex); + } catch (ResourceAccessException ex) { // Data Adapter service is down + throw resourceAccessException(ex); + } + } + + /** + * Give consent according to request parameters. + * + * @param request Consent information. + * @return Information about newly created consent. + * @throws TppEngineClientException Thrown when client request fails or authentication fails. + */ + public ObjectResponse giveConsent(GiveConsentRequest request) throws TppEngineClientException { + try { + HttpEntity> entity = new HttpEntity<>(new ObjectRequest<>(request)); + ResponseEntity> response = restTemplate.exchange( + serviceUrl + "/user/consent", + HttpMethod.POST, + entity, + new ParameterizedTypeReference>() {}); + return new ObjectResponse<>(Objects.requireNonNull(response.getBody()).getResponseObject()); + } catch (HttpStatusCodeException ex) { + throw httpStatusException(ex); + } catch (ResourceAccessException ex) { // Data Adapter service is down + throw resourceAccessException(ex); + } + } + + /** + * Reject consent according to request parameters. + * + * @param request Consent information. + * @return Static OK response. In case consent didn't exist, this operation is no-op. + * @throws TppEngineClientException Thrown when client request fails or authentication fails. + */ + public Response rejectConsent(RemoveConsentRequest request) throws TppEngineClientException { + try { + HttpEntity> entity = new HttpEntity<>(new ObjectRequest<>(request)); + ResponseEntity response = restTemplate.exchange( + serviceUrl + "/user/consent", + HttpMethod.DELETE, + entity, + new ParameterizedTypeReference() {}); + return new Response(); + } catch (HttpStatusCodeException ex) { + throw httpStatusException(ex); + } catch (ResourceAccessException ex) { // Data Adapter service is down + throw resourceAccessException(ex); + } + } + + /** + * Create new TppEngineClientException from ResourceAccessException. + * + * @param ex Exception used when a resource access error occurs. + * @return Data adapter client exception. + */ + private TppEngineClientException resourceAccessException(ResourceAccessException ex) { + TppEngineError error = new TppEngineError(TppEngineError.Code.COMMUNICATION_ERROR, ex.getMessage()); + return new TppEngineClientException(ex, error); + } + + /** + * Create new {@link TppEngineClientException} from HttpStatusCodeException. + * + * @param ex Exception used when an HTTP error occurs. + * @return Data adapter client exception. + */ + private TppEngineClientException httpStatusException(HttpStatusCodeException ex) { + try { + TypeReference> typeReference = new TypeReference>() { + }; + ObjectResponse errorResponse = objectMapper.readValue(ex.getResponseBodyAsString(), typeReference); + TppEngineError error = errorResponse.getResponseObject(); + if (error == null) { + error = new TppEngineError(); + } + if (error.getCode() == null) { // process malformed errors with undefined error code + error.setCode(TppEngineError.Code.ERROR_GENERIC); + error.setMessage(ex.getMessage()); + } + return new TppEngineClientException(ex, error); + } catch (IOException ex2) { + TppEngineError error; + if (ex.getStatusCode() != HttpStatus.OK) { + error = new TppEngineError(TppEngineError.Code.COMMUNICATION_ERROR, "HTTP error occurred: " + ex.getMessage()); + return new TppEngineClientException(ex, error); + } else { + error = new TppEngineError(TppEngineError.Code.ERROR_GENERIC, "IO error occurred: " + ex2.getMessage()); + return new TppEngineClientException(ex2, error); + } + } + } + +} \ No newline at end of file diff --git a/powerauth-tpp-engine-client/src/main/java/io/getlime/security/powerauth/lib/tpp/engine/client/TppEngineClientException.java b/powerauth-tpp-engine-client/src/main/java/io/getlime/security/powerauth/lib/tpp/engine/client/TppEngineClientException.java new file mode 100644 index 000000000..02334a2b5 --- /dev/null +++ b/powerauth-tpp-engine-client/src/main/java/io/getlime/security/powerauth/lib/tpp/engine/client/TppEngineClientException.java @@ -0,0 +1,61 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.getlime.security.powerauth.lib.tpp.engine.client; + +import io.getlime.security.powerauth.app.tppengine.model.entity.TppEngineError; + +/** + * Exception thrown from the data adapter in case of an error. + * + * @author Petr Dvorak, petr@wultra.com + */ +public class TppEngineClientException extends Exception { + + private TppEngineError error; + + /** + * Default constructor. + */ + public TppEngineClientException() { + } + + /** + * Constructor with cause. + * @param cause Exception cause. + */ + public TppEngineClientException(Throwable cause) { + super(cause); + } + + /** + * Constructor with cause and error. + * @param cause Exception cause. + * @param error Data adapter error. + */ + public TppEngineClientException(Throwable cause, TppEngineError error) { + super(cause); + this.error = error; + } + + /** + * Get data adapter error. + * @return Data adapter error. + */ + public TppEngineError getError() { + return error; + } +} \ No newline at end of file diff --git a/powerauth-tpp-engine-model/src/main/java/io/getlime/security/powerauth/app/tppengine/model/entity/TppEngineError.java b/powerauth-tpp-engine-model/src/main/java/io/getlime/security/powerauth/app/tppengine/model/entity/TppEngineError.java new file mode 100644 index 000000000..cb36f9b9e --- /dev/null +++ b/powerauth-tpp-engine-model/src/main/java/io/getlime/security/powerauth/app/tppengine/model/entity/TppEngineError.java @@ -0,0 +1,54 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.getlime.security.powerauth.app.tppengine.model.entity; + +import io.getlime.core.rest.model.base.entity.Error; + +/** + * + * Error model, used to represent error responses. + * + * @author Petr Dvorak, petr@wultra.com + */ +public class TppEngineError extends Error { + + /** + * Response codes for different authentication failures. + */ + public class Code extends Error.Code { + public static final String REMOTE_ERROR = "REMOTE_ERROR"; + public static final String COMMUNICATION_ERROR = "COMMUNICATION_ERROR"; + } + + /** + * Default constructor. + */ + public TppEngineError() { + super(); + } + + /** + * Constructor accepting code and message. + * + * @param code Error code. + * @param message Error message. + */ + public TppEngineError(String code, String message) { + super(code, message); + } + +} diff --git a/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/controller/UserConsentController.java b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/controller/UserConsentController.java index 3ff7cc779..2d69ea56f 100644 --- a/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/controller/UserConsentController.java +++ b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/controller/UserConsentController.java @@ -120,7 +120,7 @@ public Response removeConsentPost(@RequestParam("cid") Long consentId) throws Co * @return List of consents that are currently active. */ @RequestMapping(value = "consent", method = RequestMethod.GET) - public ObjectResponse listConsent(@RequestParam("userId") String userId, @RequestParam(value = "clientId", required = false) String clientId) throws ConsentNotFoundException { + public ObjectResponse consentList(@RequestParam("userId") String userId, @RequestParam(value = "clientId", required = false) String clientId) throws ConsentNotFoundException { final ConsentListResponse response = userConsentService.consentListForUser(userId, clientId); return new ObjectResponse<>(response); } @@ -134,7 +134,7 @@ public ObjectResponse listConsent(@RequestParam("userId") S * @return Check */ @RequestMapping(value = "consent/status", method = RequestMethod.GET) - public ObjectResponse listConsent(@RequestParam("userId") String userId, @RequestParam("clientId") String clientId, @RequestParam("consentId") String consentId) throws ConsentNotFoundException { + public ObjectResponse consentStatus(@RequestParam("userId") String userId, @RequestParam("clientId") String clientId, @RequestParam("consentId") String consentId) throws ConsentNotFoundException { UserConsentDetailResponse response = userConsentService.consentStatus(userId, consentId, clientId); return new ObjectResponse<>(response); } @@ -148,7 +148,7 @@ public ObjectResponse listConsent(@RequestParam("user * @return List of history items. */ @RequestMapping(value = "consent/history", method = RequestMethod.GET) - public ObjectResponse historyConsent(@RequestParam("userId") String userId, @RequestParam(value = "clientId", required = false) String clientId) throws ConsentNotFoundException { + public ObjectResponse consentHistory(@RequestParam("userId") String userId, @RequestParam(value = "clientId", required = false) String clientId) throws ConsentNotFoundException { ConsentHistoryListResponse response = userConsentService.consentHistoryForUser(userId, clientId); return new ObjectResponse<>(response); } From 3218808fb82445afd9a99d828f48358008891f16 Mon Sep 17 00:00:00 2001 From: Petr Dvorak Date: Thu, 12 Sep 2019 20:51:02 +0200 Subject: [PATCH 026/197] Fix URL building for GET requests --- .../powerauth/lib/tpp/engine/client/TppEngineClient.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/powerauth-tpp-engine-client/src/main/java/io/getlime/security/powerauth/lib/tpp/engine/client/TppEngineClient.java b/powerauth-tpp-engine-client/src/main/java/io/getlime/security/powerauth/lib/tpp/engine/client/TppEngineClient.java index f1b2c2050..a77cef943 100644 --- a/powerauth-tpp-engine-client/src/main/java/io/getlime/security/powerauth/lib/tpp/engine/client/TppEngineClient.java +++ b/powerauth-tpp-engine-client/src/main/java/io/getlime/security/powerauth/lib/tpp/engine/client/TppEngineClient.java @@ -125,7 +125,7 @@ public ObjectResponse consentDetail(String id) throws Tpp final Map params = new HashMap<>(); params.put("id", id); ResponseEntity> response = restTemplate.exchange( - serviceUrl + "/consent", + serviceUrl + "/consent?id={id}", HttpMethod.GET, null, new ParameterizedTypeReference>() {}, @@ -156,7 +156,7 @@ public ObjectResponse consentStatus(String userId, St params.put("consentId", consentId); params.put("clientId", clientId); ResponseEntity> response = restTemplate.exchange( - serviceUrl + "/user/consent", + serviceUrl + "/user/consent?userId={userId}&consentId={consentId}&clientId={clientId}", HttpMethod.GET, null, new ParameterizedTypeReference>() {}, From 335f98e8e8964a9e4f756b1539f09fb2b5d371a6 Mon Sep 17 00:00:00 2001 From: Petr Dvorak Date: Thu, 12 Sep 2019 21:00:21 +0200 Subject: [PATCH 027/197] Add throws clause to JavaDoc --- .../tppengine/controller/UserConsentController.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/controller/UserConsentController.java b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/controller/UserConsentController.java index 2d69ea56f..ccf74b82d 100644 --- a/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/controller/UserConsentController.java +++ b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/controller/UserConsentController.java @@ -51,6 +51,7 @@ public UserConsentController(UserConsentService userConsentService) { * * @param request Information about the consent to create. * @return Response with consent created. + * @throws ConsentNotFoundException In case the consent with given ID is not found. */ @RequestMapping(value = "consent", method = RequestMethod.POST) public ObjectResponse giveConsent(@RequestBody ObjectRequest request) throws ConsentNotFoundException { @@ -65,6 +66,7 @@ public ObjectResponse giveConsent(@RequestBody ObjectReques * * @param request Information about consent to remove. * @return Information about success or failure. + * @throws ConsentNotFoundException In case the consent with given ID is not found. */ @RequestMapping(value = "consent", method = RequestMethod.DELETE) public Response removeConsent(@RequestBody ObjectRequest request) throws ConsentNotFoundException { @@ -79,6 +81,7 @@ public Response removeConsent(@RequestBody ObjectRequest r * * @param request Information about consent to remove. * @return Information about success or failure. + * @throws ConsentNotFoundException In case the consent with given ID is not found. */ @RequestMapping(value = "consent/delete", method = RequestMethod.POST) public Response removeConsentPost(@RequestBody ObjectRequest request) throws ConsentNotFoundException { @@ -93,6 +96,7 @@ public Response removeConsentPost(@RequestBody ObjectRequest consentList(@RequestParam("userId") String userId, @RequestParam(value = "clientId", required = false) String clientId) throws ConsentNotFoundException { @@ -131,7 +137,8 @@ public ObjectResponse consentList(@RequestParam("userId") S * @param userId User ID. * @param clientId TPP App Client ID. * @param consentId Consent ID. - * @return Check + * @return Check the consent status + * @throws ConsentNotFoundException In case the consent with given ID is not found. */ @RequestMapping(value = "consent/status", method = RequestMethod.GET) public ObjectResponse consentStatus(@RequestParam("userId") String userId, @RequestParam("clientId") String clientId, @RequestParam("consentId") String consentId) throws ConsentNotFoundException { @@ -146,6 +153,7 @@ public ObjectResponse consentStatus(@RequestParam("us * @param userId User ID. * @param clientId (optional) TPP App Client ID. * @return List of history items. + * @throws ConsentNotFoundException In case the consent with given ID is not found. */ @RequestMapping(value = "consent/history", method = RequestMethod.GET) public ObjectResponse consentHistory(@RequestParam("userId") String userId, @RequestParam(value = "clientId", required = false) String clientId) throws ConsentNotFoundException { From 623d7f27fa58b5396ad9421c3ceecacff165bd51 Mon Sep 17 00:00:00 2001 From: Petr Dvorak Date: Thu, 12 Sep 2019 21:59:15 +0200 Subject: [PATCH 028/197] Fix missing throws clause in JavaDoc --- .../powerauth/app/tppengine/service/UserConsentService.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/service/UserConsentService.java b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/service/UserConsentService.java index 09ee73a34..9c8f89faf 100644 --- a/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/service/UserConsentService.java +++ b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/service/UserConsentService.java @@ -137,6 +137,7 @@ public UserConsentDetailResponse consentStatus(String userId, String consentId, * * @param ro Request object with details of the consent. * @return Response related to consent approval. + * @throws ConsentNotFoundException In case some approved consent is not found due to database inconsistency. */ @Transactional public GiveConsentResponse giveConsent(GiveConsentRequest ro) throws ConsentNotFoundException { @@ -235,6 +236,7 @@ public void removeConsent(RemoveConsentRequest ro) throws ConsentNotFoundExcepti * operation is a no-op. * * @param id User consent ID to be removed. + * @throws ConsentNotFoundException In case some approved consent is not found due to database inconsistency. */ @Transactional public void removeConsent(Long id) throws ConsentNotFoundException { From aab25698dd8713dd1cd7998b6d99ba3951a224ee Mon Sep 17 00:00:00 2001 From: Petr Dvorak Date: Thu, 12 Sep 2019 22:39:27 +0200 Subject: [PATCH 029/197] Fix #642: Missing assignment in consent validation request constructor --- .../dataadapter/model/request/ValidateConsentFormRequest.java | 1 + 1 file changed, 1 insertion(+) diff --git a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/ValidateConsentFormRequest.java b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/ValidateConsentFormRequest.java index 32dfa0907..5272df519 100644 --- a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/ValidateConsentFormRequest.java +++ b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/ValidateConsentFormRequest.java @@ -70,6 +70,7 @@ public ValidateConsentFormRequest() { */ public ValidateConsentFormRequest(String userId, String organizationId, OperationContext operationContext, String lang, List options) { this.userId = userId; + this.organizationId = organizationId; this.operationContext = operationContext; this.lang = lang; this.options = options; From c1bd1cacd8e23d239c6dcab20c64eb129c7e3e71 Mon Sep 17 00:00:00 2001 From: Petr Dvorak Date: Thu, 12 Sep 2019 22:53:17 +0200 Subject: [PATCH 030/197] Fix mapping of client URL for consent status check --- .../powerauth/lib/tpp/engine/client/TppEngineClient.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/powerauth-tpp-engine-client/src/main/java/io/getlime/security/powerauth/lib/tpp/engine/client/TppEngineClient.java b/powerauth-tpp-engine-client/src/main/java/io/getlime/security/powerauth/lib/tpp/engine/client/TppEngineClient.java index a77cef943..4385c4e6e 100644 --- a/powerauth-tpp-engine-client/src/main/java/io/getlime/security/powerauth/lib/tpp/engine/client/TppEngineClient.java +++ b/powerauth-tpp-engine-client/src/main/java/io/getlime/security/powerauth/lib/tpp/engine/client/TppEngineClient.java @@ -156,7 +156,7 @@ public ObjectResponse consentStatus(String userId, St params.put("consentId", consentId); params.put("clientId", clientId); ResponseEntity> response = restTemplate.exchange( - serviceUrl + "/user/consent?userId={userId}&consentId={consentId}&clientId={clientId}", + serviceUrl + "/user/consent/status?userId={userId}&consentId={consentId}&clientId={clientId}", HttpMethod.GET, null, new ParameterizedTypeReference>() {}, From cc410a7fc2eb847066ffe0fe48f4fc787d90db09 Mon Sep 17 00:00:00 2001 From: Petr Dvorak Date: Thu, 12 Sep 2019 23:15:14 +0200 Subject: [PATCH 031/197] Fix minor pom.xml issues --- powerauth-tpp-engine-model/pom.xml | 6 +++++- powerauth-tpp-engine/pom.xml | 5 +++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/powerauth-tpp-engine-model/pom.xml b/powerauth-tpp-engine-model/pom.xml index f05dc7391..5dda381ad 100644 --- a/powerauth-tpp-engine-model/pom.xml +++ b/powerauth-tpp-engine-model/pom.xml @@ -19,7 +19,6 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - powerauth-tpp-engine-model powerauth-webflow-parent @@ -27,6 +26,11 @@ 0.22.0 + powerauth-tpp-engine-model + powerauth-tpp-engine-model + 0.22.0 + jar + diff --git a/powerauth-tpp-engine/pom.xml b/powerauth-tpp-engine/pom.xml index 93ca51aa3..22fa77f1c 100644 --- a/powerauth-tpp-engine/pom.xml +++ b/powerauth-tpp-engine/pom.xml @@ -49,6 +49,11 @@ jackson-datatype-joda 2.10.0.pr1 + + javax.interceptor + javax.interceptor-api + 1.2.2 + From f6cc60ea482b2d2286273a47264fa50364b15831 Mon Sep 17 00:00:00 2001 From: Petr Dvorak Date: Fri, 13 Sep 2019 00:15:06 +0200 Subject: [PATCH 032/197] Return better response for empty consent --- .../powerauth/app/tppengine/service/UserConsentService.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/service/UserConsentService.java b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/service/UserConsentService.java index 09ee73a34..b352206fd 100644 --- a/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/service/UserConsentService.java +++ b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/service/UserConsentService.java @@ -128,7 +128,10 @@ public UserConsentDetailResponse consentStatus(String userId, String consentId, return response; } else { - return null; + UserConsentDetailResponse response = new UserConsentDetailResponse(); + response.setUserId(userId); + response.setConsent(null); // no consent given + return response; } } From 196489db6489c54bb1d208da2c2e3012a59d9cae Mon Sep 17 00:00:00 2001 From: snyk-bot Date: Fri, 13 Sep 2019 03:45:59 +0000 Subject: [PATCH 033/197] fix: powerauth-webflow-resources/pom.xml to reduce vulnerabilities The following vulnerabilities are fixed with an upgrade: - https://snyk.io/vuln/SNYK-JAVA-COMFASTERXMLJACKSONCORE-450207 - https://snyk.io/vuln/SNYK-JAVA-COMFASTERXMLJACKSONCORE-450917 - https://snyk.io/vuln/SNYK-JAVA-COMFASTERXMLJACKSONCORE-455617 --- powerauth-webflow-resources/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/powerauth-webflow-resources/pom.xml b/powerauth-webflow-resources/pom.xml index c319f3da3..772df745e 100644 --- a/powerauth-webflow-resources/pom.xml +++ b/powerauth-webflow-resources/pom.xml @@ -34,7 +34,7 @@ org.springframework.security.oauth.boot spring-security-oauth2-autoconfigure - 2.1.5.RELEASE + 2.1.8.RELEASE org.springframework.boot From 6fc666159482a8314a7dd788318e3b0c7bf7223a Mon Sep 17 00:00:00 2001 From: snyk-bot Date: Fri, 13 Sep 2019 04:14:05 +0000 Subject: [PATCH 034/197] fix: powerauth-webflow/pom.xml to reduce vulnerabilities The following vulnerabilities are fixed with an upgrade: - https://snyk.io/vuln/SNYK-JAVA-COMFASTERXMLJACKSONCORE-450207 - https://snyk.io/vuln/SNYK-JAVA-COMFASTERXMLJACKSONCORE-450917 - https://snyk.io/vuln/SNYK-JAVA-COMFASTERXMLJACKSONCORE-455617 --- powerauth-webflow/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/powerauth-webflow/pom.xml b/powerauth-webflow/pom.xml index 3f3b07690..fd1b0ae67 100644 --- a/powerauth-webflow/pom.xml +++ b/powerauth-webflow/pom.xml @@ -40,7 +40,7 @@ org.springframework.security.oauth.boot spring-security-oauth2-autoconfigure - 2.0.0.RELEASE + 2.1.8.RELEASE bcpkix-jdk15on From 80928735a25068f9f2d0dbbb65e0df75808e3391 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Fri, 13 Sep 2019 16:39:52 +0200 Subject: [PATCH 035/197] Fix version String --- powerauth-webflow-authentication/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/powerauth-webflow-authentication/pom.xml b/powerauth-webflow-authentication/pom.xml index 3a924c80f..3dbb43b8b 100644 --- a/powerauth-webflow-authentication/pom.xml +++ b/powerauth-webflow-authentication/pom.xml @@ -69,7 +69,7 @@ io.getlime.security powerauth-java-crypto - 0.23.0-SNAPSHOT/version> + 0.23.0-SNAPSHOT From 5aaeb2a11d11f0bf5dec25d3f80b475c2509a9e8 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Fri, 13 Sep 2019 17:09:38 +0200 Subject: [PATCH 036/197] Fix #641: Invalid default NS step definition --- docs/sql/mysql/initial_data.sql | 4 ++-- docs/sql/oracle/initial_data.sql | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/sql/mysql/initial_data.sql b/docs/sql/mysql/initial_data.sql index 723690f4f..d1e7eac33 100644 --- a/docs/sql/mysql/initial_data.sql +++ b/docs/sql/mysql/initial_data.sql @@ -196,7 +196,7 @@ VALUES (48, 'login_sca', 'UPDATE', 'CONSENT', 'AUTH_METHOD_FAILED', 1, NULL, 'FA -- login_sca - update operation (consent) - AUTH_FAILED -> CONTINUE INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) -VALUES (49, 'login_sca', 'UPDATE', 'CONSENT', 'AUTH_FAILED', 1, 'LOGIN_SCA', 'CONTINUE'); +VALUES (49, 'login_sca', 'UPDATE', 'CONSENT', 'AUTH_FAILED', 1, 'CONSENT', 'CONTINUE'); -- authorize_payment_sca - init operation -> CONTINUE INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) @@ -248,4 +248,4 @@ VALUES (61, 'authorize_payment_sca', 'UPDATE', 'CONSENT', 'AUTH_METHOD_FAILED', -- authorize_payment_sca - update operation (consent) - AUTH_FAILED -> CONTINUE INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) -VALUES (62, 'authorize_payment_sca', 'UPDATE', 'CONSENT', 'AUTH_FAILED', 1, 'APPROVAL_SCA', 'CONTINUE'); +VALUES (62, 'authorize_payment_sca', 'UPDATE', 'CONSENT', 'AUTH_FAILED', 1, 'CONSENT', 'CONTINUE'); diff --git a/docs/sql/oracle/initial_data.sql b/docs/sql/oracle/initial_data.sql index 417b39969..1ba35a14c 100644 --- a/docs/sql/oracle/initial_data.sql +++ b/docs/sql/oracle/initial_data.sql @@ -196,7 +196,7 @@ VALUES (48, 'login_sca', 'UPDATE', 'CONSENT', 'AUTH_METHOD_FAILED', 1, NULL, 'FA -- login_sca - update operation (consent) - AUTH_FAILED -> CONTINUE INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) -VALUES (49, 'login_sca', 'UPDATE', 'CONSENT', 'AUTH_FAILED', 1, 'LOGIN_SCA', 'CONTINUE'); +VALUES (49, 'login_sca', 'UPDATE', 'CONSENT', 'AUTH_FAILED', 1, 'CONSENT', 'CONTINUE'); -- authorize_payment_sca - init operation -> CONTINUE INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) @@ -248,4 +248,4 @@ VALUES (61, 'authorize_payment_sca', 'UPDATE', 'CONSENT', 'AUTH_METHOD_FAILED', -- authorize_payment_sca - update operation (consent) - AUTH_FAILED -> CONTINUE INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) -VALUES (62, 'authorize_payment_sca', 'UPDATE', 'CONSENT', 'AUTH_FAILED', 1, 'APPROVAL_SCA', 'CONTINUE'); +VALUES (62, 'authorize_payment_sca', 'UPDATE', 'CONSENT', 'AUTH_FAILED', 1, 'CONSENT', 'CONTINUE'); From a6474e3f0277cf5ea9e934052d6764d0b6c36542 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Fri, 13 Sep 2019 18:56:20 +0200 Subject: [PATCH 037/197] Update version --- powerauth-webflow/package-lock.json | 2 +- powerauth-webflow/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/powerauth-webflow/package-lock.json b/powerauth-webflow/package-lock.json index bc25fe3dd..fa72c21a0 100644 --- a/powerauth-webflow/package-lock.json +++ b/powerauth-webflow/package-lock.json @@ -1,6 +1,6 @@ { "name": "powerauth-webflow", - "version": "0.22.0", + "version": "0.23.0-SNAPSHOT", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/powerauth-webflow/package.json b/powerauth-webflow/package.json index 247f11794..74dfeb13b 100644 --- a/powerauth-webflow/package.json +++ b/powerauth-webflow/package.json @@ -1,6 +1,6 @@ { "name": "powerauth-webflow", - "version": "0.23.0_SNAPSHOT", + "version": "0.23.0-SNAPSHOT", "description": "Federated Authentication and Authorization Server for Web", "repository": { "type": "git", From edf8de7eb1ec492992760159c3864d9689a07591 Mon Sep 17 00:00:00 2001 From: Petr Dvorak Date: Fri, 13 Sep 2019 19:42:58 +0200 Subject: [PATCH 038/197] Fixed issues found on code review --- docs/sql/mysql/create_schema.sql | 78 +++++++++++------------------ docs/sql/oracle/create_schema.sql | 28 ++--------- powerauth-tpp-engine-client/pom.xml | 4 +- powerauth-tpp-engine-model/pom.xml | 2 +- powerauth-tpp-engine/pom.xml | 4 +- 5 files changed, 36 insertions(+), 80 deletions(-) diff --git a/docs/sql/mysql/create_schema.sql b/docs/sql/mysql/create_schema.sql index 830b5a23c..eb7e0588a 100644 --- a/docs/sql/mysql/create_schema.sql +++ b/docs/sql/mysql/create_schema.sql @@ -183,56 +183,34 @@ CREATE TABLE da_sms_authorization ( timestamp_expires TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -CREATE TABLE tpp_consent -( - `consent_id` VARCHAR(64) PRIMARY KEY NOT NULL, - `consent_name` VARCHAR(128) NOT NULL, - `consent_text` TEXT NOT NULL, - `version` INT NOT NULL -) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; - -CREATE TABLE tpp_user_consent -( - `id` INTEGER PRIMARY KEY NOT NULL AUTO_INCREMENT, - `user_id` VARCHAR(256) NOT NULL, - `client_id` VARCHAR(256) NOT NULL, - `consent_id` VARCHAR(64) NOT NULL, - `external_id` VARCHAR(256) NOT NULL, - `consent_parameters` TEXT NOT NULL, - `timestamp_created` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - `timestamp_updated` TIMESTAMP DEFAULT CURRENT_TIMESTAMP -) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; - -CREATE TABLE tpp_user_consent_history -( - `id` INTEGER PRIMARY KEY NOT NULL AUTO_INCREMENT, - `user_id` VARCHAR(256) NOT NULL, - `client_id` VARCHAR(256) NOT NULL, - `consent_id` VARCHAR(64) NOT NULL, - `consent_change` VARCHAR(16) NOT NULL, - `external_id` VARCHAR(256) NOT NULL, - `consent_parameters` TEXT NOT NULL, - `timestamp_created` TIMESTAMP DEFAULT CURRENT_TIMESTAMP -) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; - --- Table UserConnection is required only for the demo client application which is based on Spring Social. --- See: https://github.com/spring-projects/spring-social -/* -CREATE TABLE UserConnection ( - userId VARCHAR(255) NOT NULL, - providerId VARCHAR(255) NOT NULL, - providerUserId VARCHAR(255), - rank INTEGER NOT NULL, - displayName VARCHAR(255), - profileUrl VARCHAR(512), - imageUrl VARCHAR(512), - accessToken VARCHAR(512) NOT NULL, - secret VARCHAR(512), - refreshToken VARCHAR(512), - expireTime BIGINT, -PRIMARY KEY (userId, providerId, providerUserId)); -CREATE UNIQUE INDEX UserConnectionRank on UserConnection(userId, providerId, rank); -*/ +CREATE TABLE tpp_consent ( + consent_id VARCHAR(64) PRIMARY KEY NOT NULL, + consent_name VARCHAR(128) NOT NULL, + consent_text TEXT NOT NULL, + version INT NOT NULL +) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + +CREATE TABLE tpp_user_consent ( + id INTEGER PRIMARY KEY NOT NULL AUTO_INCREMENT, + user_id VARCHAR(256) NOT NULL, + client_id VARCHAR(256) NOT NULL, + consent_id VARCHAR(64) NOT NULL, + external_id VARCHAR(256) NOT NULL, + consent_parameters TEXT NOT NULL, + timestamp_created TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + timestamp_updated TIMESTAMP DEFAULT CURRENT_TIMESTAMP +) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + +CREATE TABLE tpp_user_consent_history ( + id INTEGER PRIMARY KEY NOT NULL AUTO_INCREMENT, + user_id VARCHAR(256) NOT NULL, + client_id VARCHAR(256) NOT NULL, + consent_id VARCHAR(64) NOT NULL, + consent_change VARCHAR(16) NOT NULL, + external_id VARCHAR(256) NOT NULL, + consent_parameters TEXT NOT NULL, + timestamp_created TIMESTAMP DEFAULT CURRENT_TIMESTAMP +) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE INDEX wf_operation_hash ON wf_operation_session (operation_hash); CREATE INDEX wf_websocket_session ON wf_operation_session (websocket_session_id); diff --git a/docs/sql/oracle/create_schema.sql b/docs/sql/oracle/create_schema.sql index 33dafd8fd..344d5e36b 100644 --- a/docs/sql/oracle/create_schema.sql +++ b/docs/sql/oracle/create_schema.sql @@ -190,16 +190,14 @@ CREATE TABLE da_sms_authorization ( timestamp_expires TIMESTAMP ); -CREATE TABLE tpp_consent -( +CREATE TABLE tpp_consent ( consent_id VARCHAR(64) PRIMARY KEY NOT NULL, consent_name VARCHAR(128) NOT NULL, consent_text CLOB NOT NULL, version INT NOT NULL ); -CREATE TABLE tpp_user_consent -( +CREATE TABLE tpp_user_consent ( id INTEGER PRIMARY KEY NOT NULL, user_id VARCHAR(256) NOT NULL, client_id VARCHAR(256) NOT NULL, @@ -210,8 +208,7 @@ CREATE TABLE tpp_user_consent timestamp_updated TIMESTAMP ); -CREATE TABLE tpp_user_consent_history -( +CREATE TABLE tpp_user_consent_history ( id INTEGER PRIMARY KEY NOT NULL, user_id VARCHAR(256) NOT NULL, client_id VARCHAR(256) NOT NULL, @@ -222,24 +219,5 @@ CREATE TABLE tpp_user_consent_history timestamp_created TIMESTAMP ); --- Table UserConnection is required only for the demo client application which is based on Spring Social. --- See: https://github.com/spring-projects/spring-social -/* -CREATE TABLE UserConnection ( - userId VARCHAR(255) NOT NULL, - providerId VARCHAR(255) NOT NULL, - providerUserId VARCHAR(255), - rank INTEGER NOT NULL, - displayName VARCHAR(255), - profileUrl VARCHAR(512), - imageUrl VARCHAR(512), - accessToken VARCHAR(512) NOT NULL, - secret VARCHAR(512), - refreshToken VARCHAR(512), - expireTime NUMBER(19), -PRIMARY KEY (userId, providerId, providerUserId)); -CREATE UNIQUE INDEX UserConnectionRank on UserConnection(userId, providerId, rank); -*/ - CREATE INDEX wf_operation_hash ON wf_operation_session (operation_hash); CREATE INDEX wf_websocket_session ON wf_operation_session (websocket_session_id); diff --git a/powerauth-tpp-engine-client/pom.xml b/powerauth-tpp-engine-client/pom.xml index 7a7aaee03..34a5fea2e 100644 --- a/powerauth-tpp-engine-client/pom.xml +++ b/powerauth-tpp-engine-client/pom.xml @@ -29,7 +29,7 @@ powerauth-tpp-engine-client powerauth-tpp-engine-client - 0.22.0 + 0.23.0-SNAPSHOT jar @@ -51,7 +51,7 @@ io.getlime.security powerauth-tpp-engine-model - 0.22.0 + 0.23.0-SNAPSHOT diff --git a/powerauth-tpp-engine-model/pom.xml b/powerauth-tpp-engine-model/pom.xml index 5dda381ad..4abd6ccd3 100644 --- a/powerauth-tpp-engine-model/pom.xml +++ b/powerauth-tpp-engine-model/pom.xml @@ -28,7 +28,7 @@ powerauth-tpp-engine-model powerauth-tpp-engine-model - 0.22.0 + 0.23.0-SNAPSHOT jar diff --git a/powerauth-tpp-engine/pom.xml b/powerauth-tpp-engine/pom.xml index 22fa77f1c..c34b90400 100644 --- a/powerauth-tpp-engine/pom.xml +++ b/powerauth-tpp-engine/pom.xml @@ -6,7 +6,7 @@ powerauth-tpp-engine powerauth-tpp-engine Default TPP registry and consent engine implementation - 0.22.0 + 0.23.0-SNAPSHOT war @@ -40,7 +40,7 @@ io.getlime.security powerauth-tpp-engine-model - 0.22.0 + 0.23.0-SNAPSHOT From d4fc6d430bbe3215bf3ef6104c6b381c0a1d98c6 Mon Sep 17 00:00:00 2001 From: Petr Dvorak Date: Fri, 13 Sep 2019 20:30:32 +0200 Subject: [PATCH 039/197] Fixed minor style issues --- .../exception/ConsentNotFoundException.java | 3 ++- .../tppengine/service/UserConsentService.java | 5 ++++ .../src/main/resources/application.properties | 4 ++- .../tppengine/TppEngineApplicationTests.java | 27 ------------------- 4 files changed, 10 insertions(+), 29 deletions(-) delete mode 100644 powerauth-tpp-engine/src/test/java/io/getlime/security/powerauth/app/tppengine/TppEngineApplicationTests.java diff --git a/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/exception/ConsentNotFoundException.java b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/exception/ConsentNotFoundException.java index ede0dfc83..b8939e180 100644 --- a/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/exception/ConsentNotFoundException.java +++ b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/exception/ConsentNotFoundException.java @@ -24,9 +24,10 @@ public class ConsentNotFoundException extends Exception { private final String id; + private static final String DEFAULT_MESSAGE = "Consent with given ID not found."; public ConsentNotFoundException(String id) { - super(); + super(DEFAULT_MESSAGE); this.id = id; } diff --git a/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/service/UserConsentService.java b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/service/UserConsentService.java index da0e63478..72885ac50 100644 --- a/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/service/UserConsentService.java +++ b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/service/UserConsentService.java @@ -34,6 +34,8 @@ import io.getlime.security.powerauth.app.tppengine.repository.model.entity.ConsentEntity; import io.getlime.security.powerauth.app.tppengine.repository.model.entity.UserConsentEntity; import io.getlime.security.powerauth.app.tppengine.repository.model.entity.UserConsentHistoryEntity; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -52,6 +54,8 @@ public class UserConsentService { private final UserConsentRepository userConsentRepository; private final UserConsentHistoryRepository userConsentHistoryRepository; + private final static Logger logger = LoggerFactory.getLogger(UserConsentService.class); + @Autowired public UserConsentService(ConsentRepository consentRepository, UserConsentRepository userConsentRepository, UserConsentHistoryRepository userConsentHistoryRepository) { this.consentRepository = consentRepository; @@ -395,6 +399,7 @@ private String convertToJsonString(Map parameters) { try { return new ObjectMapper().writeValueAsString(parameters); } catch (JsonProcessingException e) { + logger.warn("Unable to serialize JSON string from object.", e); return null; } } diff --git a/powerauth-tpp-engine/src/main/resources/application.properties b/powerauth-tpp-engine/src/main/resources/application.properties index 160c4278b..a29674144 100644 --- a/powerauth-tpp-engine/src/main/resources/application.properties +++ b/powerauth-tpp-engine/src/main/resources/application.properties @@ -9,7 +9,6 @@ spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect spring.jpa.properties.hibernate.connection.characterEncoding=utf8 spring.jpa.properties.hibernate.connection.useUnicode=true -spring.jpa.hibernate.use-new-id-generator-mappings=false # Database Configuration - Oracle #spring.datasource.url=jdbc:oracle:thin:@//localhost:1521/powerauth @@ -25,6 +24,9 @@ powerauth.tppEngine.service.applicationName=powerauth-tpp-engine powerauth.tppEngine.service.applicationDisplayName=PowerAuth Web Flow 3rd Party and Consent Engine powerauth.tppEngine.service.applicationEnvironment= +# Disable new Hibernate ID generators +spring.jpa.hibernate.use-new-id-generator-mappings=false + # Disable JMX spring.jmx.enabled=false diff --git a/powerauth-tpp-engine/src/test/java/io/getlime/security/powerauth/app/tppengine/TppEngineApplicationTests.java b/powerauth-tpp-engine/src/test/java/io/getlime/security/powerauth/app/tppengine/TppEngineApplicationTests.java deleted file mode 100644 index 9f10fd649..000000000 --- a/powerauth-tpp-engine/src/test/java/io/getlime/security/powerauth/app/tppengine/TppEngineApplicationTests.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright 2019 Wultra s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package io.getlime.security.powerauth.app.tppengine; - -import org.junit.runner.RunWith; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringRunner; - -@RunWith(SpringRunner.class) -@SpringBootTest -public class TppEngineApplicationTests { - -} From 31012373a25418e7bcff2555968dda72e7353c2d Mon Sep 17 00:00:00 2001 From: Petr Dvorak Date: Sun, 15 Sep 2019 20:58:54 +0200 Subject: [PATCH 040/197] Fix #650: Prepare schema for user database in Data Adapter --- docs/sql/mysql/create_schema.sql | 50 +++++++++++++++----------- docs/sql/oracle/create_schema.sql | 51 ++++++++++++++++----------- docs/sql/postgresql/create_schema.sql | 46 ++++++++++++++++++++++++ 3 files changed, 107 insertions(+), 40 deletions(-) diff --git a/docs/sql/mysql/create_schema.sql b/docs/sql/mysql/create_schema.sql index eb7e0588a..5e56457e0 100644 --- a/docs/sql/mysql/create_schema.sql +++ b/docs/sql/mysql/create_schema.sql @@ -183,33 +183,43 @@ CREATE TABLE da_sms_authorization ( timestamp_expires TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; +-- Table da_user_credentials stores built-in users for the data adapter +CREATE TABLE da_user_credentials ( + user_id VARCHAR(128) PRIMARY KEY NOT NULL, + username VARCHAR(255) NOT NULL, + password_hash VARCHAR(255) NOT NULL, + phone_number VARCHAR(255) NOT NULL +) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + +-- Table for the list of consent currently given by a user CREATE TABLE tpp_consent ( - consent_id VARCHAR(64) PRIMARY KEY NOT NULL, - consent_name VARCHAR(128) NOT NULL, - consent_text TEXT NOT NULL, - version INT NOT NULL + consent_id VARCHAR(64) PRIMARY KEY NOT NULL, + consent_name VARCHAR(128) NOT NULL, + consent_text TEXT NOT NULL, + version INT NOT NULL ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; +-- Table for the list of changes in consent history by given user CREATE TABLE tpp_user_consent ( - id INTEGER PRIMARY KEY NOT NULL AUTO_INCREMENT, - user_id VARCHAR(256) NOT NULL, - client_id VARCHAR(256) NOT NULL, - consent_id VARCHAR(64) NOT NULL, - external_id VARCHAR(256) NOT NULL, - consent_parameters TEXT NOT NULL, - timestamp_created TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - timestamp_updated TIMESTAMP DEFAULT CURRENT_TIMESTAMP + id INTEGER PRIMARY KEY NOT NULL AUTO_INCREMENT, + user_id VARCHAR(256) NOT NULL, + client_id VARCHAR(256) NOT NULL, + consent_id VARCHAR(64) NOT NULL, + external_id VARCHAR(256) NOT NULL, + consent_parameters TEXT NOT NULL, + timestamp_created TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + timestamp_updated TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE TABLE tpp_user_consent_history ( - id INTEGER PRIMARY KEY NOT NULL AUTO_INCREMENT, - user_id VARCHAR(256) NOT NULL, - client_id VARCHAR(256) NOT NULL, - consent_id VARCHAR(64) NOT NULL, - consent_change VARCHAR(16) NOT NULL, - external_id VARCHAR(256) NOT NULL, - consent_parameters TEXT NOT NULL, - timestamp_created TIMESTAMP DEFAULT CURRENT_TIMESTAMP + id INTEGER PRIMARY KEY NOT NULL AUTO_INCREMENT, + user_id VARCHAR(256) NOT NULL, + client_id VARCHAR(256) NOT NULL, + consent_id VARCHAR(64) NOT NULL, + consent_change VARCHAR(16) NOT NULL, + external_id VARCHAR(256) NOT NULL, + consent_parameters TEXT NOT NULL, + timestamp_created TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE INDEX wf_operation_hash ON wf_operation_session (operation_hash); diff --git a/docs/sql/oracle/create_schema.sql b/docs/sql/oracle/create_schema.sql index 344d5e36b..df6319a3b 100644 --- a/docs/sql/oracle/create_schema.sql +++ b/docs/sql/oracle/create_schema.sql @@ -190,33 +190,44 @@ CREATE TABLE da_sms_authorization ( timestamp_expires TIMESTAMP ); +-- Table da_user_credentials stores built-in users for the data adapter +CREATE TABLE da_user_credentials ( + user_id VARCHAR(128) PRIMARY KEY NOT NULL, + username VARCHAR(255) NOT NULL, + password_hash VARCHAR(255) NOT NULL, + phone_number VARCHAR(255) NOT NULL +); + +-- Table for the list of consent templates CREATE TABLE tpp_consent ( - consent_id VARCHAR(64) PRIMARY KEY NOT NULL, - consent_name VARCHAR(128) NOT NULL, - consent_text CLOB NOT NULL, - version INT NOT NULL + consent_id VARCHAR(64) PRIMARY KEY NOT NULL, + consent_name VARCHAR(128) NOT NULL, + consent_text CLOB NOT NULL, + version INT NOT NULL ); +-- Table for the list of consent currently given by a user CREATE TABLE tpp_user_consent ( - id INTEGER PRIMARY KEY NOT NULL, - user_id VARCHAR(256) NOT NULL, - client_id VARCHAR(256) NOT NULL, - consent_id VARCHAR(64) NOT NULL, - external_id VARCHAR(256) NOT NULL, - consent_parameters CLOB NOT NULL, - timestamp_created TIMESTAMP, - timestamp_updated TIMESTAMP + id INTEGER PRIMARY KEY NOT NULL, + user_id VARCHAR(256) NOT NULL, + client_id VARCHAR(256) NOT NULL, + consent_id VARCHAR(64) NOT NULL, + external_id VARCHAR(256) NOT NULL, + consent_parameters CLOB NOT NULL, + timestamp_created TIMESTAMP, + timestamp_updated TIMESTAMP ); +-- Table for the list of changes in consent history by given user CREATE TABLE tpp_user_consent_history ( - id INTEGER PRIMARY KEY NOT NULL, - user_id VARCHAR(256) NOT NULL, - client_id VARCHAR(256) NOT NULL, - consent_id VARCHAR(64) NOT NULL, - consent_change VARCHAR(16) NOT NULL, - external_id VARCHAR(256) NOT NULL, - consent_parameters CLOB NOT NULL, - timestamp_created TIMESTAMP + id INTEGER PRIMARY KEY NOT NULL, + user_id VARCHAR(256) NOT NULL, + client_id VARCHAR(256) NOT NULL, + consent_id VARCHAR(64) NOT NULL, + consent_change VARCHAR(16) NOT NULL, + external_id VARCHAR(256) NOT NULL, + consent_parameters CLOB NOT NULL, + timestamp_created TIMESTAMP ); CREATE INDEX wf_operation_hash ON wf_operation_session (operation_hash); diff --git a/docs/sql/postgresql/create_schema.sql b/docs/sql/postgresql/create_schema.sql index 47bca7bfc..681c244a4 100644 --- a/docs/sql/postgresql/create_schema.sql +++ b/docs/sql/postgresql/create_schema.sql @@ -1,3 +1,9 @@ +-- +-- Create sequences. +-- +CREATE SEQUENCE "tpp_user_consent_seq" MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20; +CREATE SEQUENCE "tpp_user_consent_history_seq" MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20; + -- Table oauth_client_details stores details about OAuth2 client applications. -- Every Web Flow client application should have a record in this table. -- See: https://github.com/spring-projects/spring-security-oauth/BYTEA/master/spring-security-oauth2/src/main/java/org/springframework/security/oauth2/provider/client/JdbcClientDetailsService.java @@ -181,3 +187,43 @@ CREATE TABLE da_sms_authorization ( timestamp_verified TIMESTAMP, timestamp_expires TIMESTAMP ); + +-- Table da_user_credentials stores built-in users for the data adapter +CREATE TABLE da_user_credentials ( + user_id VARCHAR(128) PRIMARY KEY NOT NULL, + username VARCHAR(255) NOT NULL, + password_hash VARCHAR(255) NOT NULL, + phone_number VARCHAR(255) NOT NULL +); + +-- Table for the list of consent templates +CREATE TABLE tpp_consent ( + consent_id VARCHAR(64) PRIMARY KEY NOT NULL, + consent_name VARCHAR(128) NOT NULL, + consent_text TEXT NOT NULL, + version INT NOT NULL +); + +-- Table for the list of consent currently given by a user +CREATE TABLE tpp_user_consent ( + id INTEGER PRIMARY KEY NOT NULL, + user_id VARCHAR(256) NOT NULL, + client_id VARCHAR(256) NOT NULL, + consent_id VARCHAR(64) NOT NULL, + external_id VARCHAR(256) NOT NULL, + consent_parameters TEXT NOT NULL, + timestamp_created TIMESTAMP, + timestamp_updated TIMESTAMP +); + +-- Table for the list of changes in consent history by given user +CREATE TABLE tpp_user_consent_history ( + id INTEGER PRIMARY KEY NOT NULL, + user_id VARCHAR(256) NOT NULL, + client_id VARCHAR(256) NOT NULL, + consent_id VARCHAR(64) NOT NULL, + consent_change VARCHAR(16) NOT NULL, + external_id VARCHAR(256) NOT NULL, + consent_parameters TEXT NOT NULL, + timestamp_created TIMESTAMP +); From a3f31aec586c7eca92acd3197ded66c758d48321 Mon Sep 17 00:00:00 2001 From: Petr Dvorak Date: Sun, 15 Sep 2019 21:28:40 +0200 Subject: [PATCH 041/197] Add additional user attributes --- docs/sql/mysql/create_schema.sql | 3 +++ docs/sql/oracle/create_schema.sql | 3 +++ docs/sql/postgresql/create_schema.sql | 3 +++ 3 files changed, 9 insertions(+) diff --git a/docs/sql/mysql/create_schema.sql b/docs/sql/mysql/create_schema.sql index 5e56457e0..fed53ece4 100644 --- a/docs/sql/mysql/create_schema.sql +++ b/docs/sql/mysql/create_schema.sql @@ -188,6 +188,9 @@ CREATE TABLE da_user_credentials ( user_id VARCHAR(128) PRIMARY KEY NOT NULL, username VARCHAR(255) NOT NULL, password_hash VARCHAR(255) NOT NULL, + family_name VARCHAR(255) NOT NULL, + given_name VARCHAR(255) NOT NULL, + organization_id VARCHAR(64) NOT NULL, phone_number VARCHAR(255) NOT NULL ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; diff --git a/docs/sql/oracle/create_schema.sql b/docs/sql/oracle/create_schema.sql index df6319a3b..0e79dd807 100644 --- a/docs/sql/oracle/create_schema.sql +++ b/docs/sql/oracle/create_schema.sql @@ -195,6 +195,9 @@ CREATE TABLE da_user_credentials ( user_id VARCHAR(128) PRIMARY KEY NOT NULL, username VARCHAR(255) NOT NULL, password_hash VARCHAR(255) NOT NULL, + family_name VARCHAR(255) NOT NULL, + given_name VARCHAR(255) NOT NULL, + organization_id VARCHAR(64) NOT NULL, phone_number VARCHAR(255) NOT NULL ); diff --git a/docs/sql/postgresql/create_schema.sql b/docs/sql/postgresql/create_schema.sql index 681c244a4..dda1aa588 100644 --- a/docs/sql/postgresql/create_schema.sql +++ b/docs/sql/postgresql/create_schema.sql @@ -193,6 +193,9 @@ CREATE TABLE da_user_credentials ( user_id VARCHAR(128) PRIMARY KEY NOT NULL, username VARCHAR(255) NOT NULL, password_hash VARCHAR(255) NOT NULL, + family_name VARCHAR(255) NOT NULL, + given_name VARCHAR(255) NOT NULL, + organization_id VARCHAR(64) NOT NULL, phone_number VARCHAR(255) NOT NULL ); From f140cae40b7101c2e65232ab148dc97793e8979e Mon Sep 17 00:00:00 2001 From: Petr Dvorak Date: Mon, 16 Sep 2019 00:18:24 +0200 Subject: [PATCH 042/197] Fix #634: Implement TPP registry --- docs/sql/mysql/create_schema.sql | 21 +++ .../app/tppengine/model/entity/TppInfo.java | 103 +++++++++++++ .../model/response/TppAppDetailResponse.java | 79 ++++++++++ .../controller/ConsentInfoController.java | 2 +- .../controller/TppRegistryController.java | 55 +++++++ .../controller/UserConsentController.java | 2 +- .../tppengine/converter/TppAppConverter.java | 68 +++++++++ .../DefaultExceptionResolver.java | 18 ++- .../error}/ConsentError.java | 2 +- .../errorhandling/error/TppAppError.java | 38 +++++ .../exception/ConsentNotFoundException.java | 4 +- .../exception/TppAppNotFoundException.java | 42 ++++++ .../repository/TppAppDetailRepository.java | 38 +++++ .../model/entity/TppAppDetailEntity.java | 121 +++++++++++++++ .../repository/model/entity/TppEntity.java | 138 ++++++++++++++++++ .../app/tppengine/service/TppService.java | 56 +++++++ .../tppengine/service/UserConsentService.java | 2 +- 17 files changed, 782 insertions(+), 7 deletions(-) create mode 100644 powerauth-tpp-engine-model/src/main/java/io/getlime/security/powerauth/app/tppengine/model/entity/TppInfo.java create mode 100644 powerauth-tpp-engine-model/src/main/java/io/getlime/security/powerauth/app/tppengine/model/response/TppAppDetailResponse.java create mode 100644 powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/controller/TppRegistryController.java create mode 100644 powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/converter/TppAppConverter.java rename powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/{exception => errorhandling}/DefaultExceptionResolver.java (71%) rename powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/{exception => errorhandling/error}/ConsentError.java (93%) create mode 100644 powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/errorhandling/error/TppAppError.java rename powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/{ => errorhandling}/exception/ConsentNotFoundException.java (91%) create mode 100644 powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/errorhandling/exception/TppAppNotFoundException.java create mode 100644 powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/repository/TppAppDetailRepository.java create mode 100644 powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/repository/model/entity/TppAppDetailEntity.java create mode 100644 powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/repository/model/entity/TppEntity.java create mode 100644 powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/service/TppService.java diff --git a/docs/sql/mysql/create_schema.sql b/docs/sql/mysql/create_schema.sql index fed53ece4..15d9dba48 100644 --- a/docs/sql/mysql/create_schema.sql +++ b/docs/sql/mysql/create_schema.sql @@ -225,5 +225,26 @@ CREATE TABLE tpp_user_consent_history ( timestamp_created TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; +CREATE TABLE tpp_detail ( + tpp_id INTEGER PRIMARY KEY NOT NULL AUTO_INCREMENT, + tpp_name VARCHAR(256) NOT NULL, + tpp_info TEXT NULL, + tpp_address TEXT NULL, + tpp_website TEXT NULL, + tpp_phone VARCHAR(256) NULL, + tpp_email VARCHAR(256) NULL, + tpp_logo BLOB NULL +) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + +CREATE TABLE tpp_app_detail ( + tpp_id INTEGER NOT NULL, + app_client_id VARCHAR(256) NOT NULL, + app_name VARCHAR(256) NOT NULL, + app_info TEXT NULL, + PRIMARY KEY (tpp_id, app_client_id), + FOREIGN KEY tpp_detail_fk (tpp_id) REFERENCES tpp_detail (tpp_id), + FOREIGN KEY tpp_client_secret_fk (app_client_id) REFERENCES oauth_client_details (client_id) +) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + CREATE INDEX wf_operation_hash ON wf_operation_session (operation_hash); CREATE INDEX wf_websocket_session ON wf_operation_session (websocket_session_id); diff --git a/powerauth-tpp-engine-model/src/main/java/io/getlime/security/powerauth/app/tppengine/model/entity/TppInfo.java b/powerauth-tpp-engine-model/src/main/java/io/getlime/security/powerauth/app/tppengine/model/entity/TppInfo.java new file mode 100644 index 000000000..18c8ae7d7 --- /dev/null +++ b/powerauth-tpp-engine-model/src/main/java/io/getlime/security/powerauth/app/tppengine/model/entity/TppInfo.java @@ -0,0 +1,103 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.getlime.security.powerauth.app.tppengine.model.entity; + +/** + * Entity representing TPP details. + * + * @author Petr Dvorak, petr@wultra.com + */ +public class TppInfo { + + /** + * TPP name (company name). + */ + private String name; + + /** + * TPP information (about company). + */ + private String info; + + /** + * TPP address. + */ + private String address; + + /** + * TPP website. + */ + private String website; + + /** + * TPP email. + */ + private String email; + + /** + * TPP phone. + */ + private String phone; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getInfo() { + return info; + } + + public void setInfo(String info) { + this.info = info; + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public String getWebsite() { + return website; + } + + public void setWebsite(String website) { + this.website = website; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } +} diff --git a/powerauth-tpp-engine-model/src/main/java/io/getlime/security/powerauth/app/tppengine/model/response/TppAppDetailResponse.java b/powerauth-tpp-engine-model/src/main/java/io/getlime/security/powerauth/app/tppengine/model/response/TppAppDetailResponse.java new file mode 100644 index 000000000..69186cc78 --- /dev/null +++ b/powerauth-tpp-engine-model/src/main/java/io/getlime/security/powerauth/app/tppengine/model/response/TppAppDetailResponse.java @@ -0,0 +1,79 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.getlime.security.powerauth.app.tppengine.model.response; + +import io.getlime.security.powerauth.app.tppengine.model.entity.TppInfo; + +/** + * Response object representing TPP app details. + * + * @author Petr Dvorak, petr@wultra.com + */ +public class TppAppDetailResponse { + + /** + * App Identifier, OAuth 2.0 Client ID. + */ + private String clientId; + + /** + * App Name. + */ + private String name; + + /** + * App Description + */ + private String description; + + /** + * TPP information. + */ + private TppInfo tpp; + + public String getClientId() { + return clientId; + } + + public void setClientId(String clientId) { + this.clientId = clientId; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public TppInfo getTpp() { + return tpp; + } + + public void setTpp(TppInfo tpp) { + this.tpp = tpp; + } +} diff --git a/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/controller/ConsentInfoController.java b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/controller/ConsentInfoController.java index 6d71e42da..682f49080 100644 --- a/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/controller/ConsentInfoController.java +++ b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/controller/ConsentInfoController.java @@ -17,7 +17,7 @@ package io.getlime.security.powerauth.app.tppengine.controller; import io.getlime.core.rest.model.base.response.ObjectResponse; -import io.getlime.security.powerauth.app.tppengine.exception.ConsentNotFoundException; +import io.getlime.security.powerauth.app.tppengine.errorhandling.exception.ConsentNotFoundException; import io.getlime.security.powerauth.app.tppengine.model.response.ConsentDetailResponse; import io.getlime.security.powerauth.app.tppengine.service.ConsentService; import org.springframework.beans.factory.annotation.Autowired; diff --git a/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/controller/TppRegistryController.java b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/controller/TppRegistryController.java new file mode 100644 index 000000000..b2a286c2b --- /dev/null +++ b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/controller/TppRegistryController.java @@ -0,0 +1,55 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.getlime.security.powerauth.app.tppengine.controller; + +import io.getlime.core.rest.model.base.response.ObjectResponse; +import io.getlime.security.powerauth.app.tppengine.errorhandling.exception.TppAppNotFoundException; +import io.getlime.security.powerauth.app.tppengine.model.response.TppAppDetailResponse; +import io.getlime.security.powerauth.app.tppengine.service.TppService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +/** + * Controller for lookup and registration of TPP service providers + * + * @author Petr Dvorak, petr@wultra.com + */ +@RestController +@RequestMapping("tpp") +public class TppRegistryController { + + private final TppService tppService; + + @Autowired + public TppRegistryController(TppService tppService) { + this.tppService = tppService; + } + + @RequestMapping(value = "app", method = RequestMethod.GET) + public ObjectResponse fetchAppInfoFromClientId(@RequestParam("clientId") String clientId) throws TppAppNotFoundException { + final TppAppDetailResponse response = tppService.fetchAppDetailByClientId(clientId); + if (response != null) { + return new ObjectResponse<>(response); + } else { + throw new TppAppNotFoundException(clientId); + } + } + +} diff --git a/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/controller/UserConsentController.java b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/controller/UserConsentController.java index ccf74b82d..7daa5b14e 100644 --- a/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/controller/UserConsentController.java +++ b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/controller/UserConsentController.java @@ -19,7 +19,7 @@ import io.getlime.core.rest.model.base.request.ObjectRequest; import io.getlime.core.rest.model.base.response.ObjectResponse; import io.getlime.core.rest.model.base.response.Response; -import io.getlime.security.powerauth.app.tppengine.exception.ConsentNotFoundException; +import io.getlime.security.powerauth.app.tppengine.errorhandling.exception.ConsentNotFoundException; import io.getlime.security.powerauth.app.tppengine.model.request.GiveConsentRequest; import io.getlime.security.powerauth.app.tppengine.model.request.RemoveConsentRequest; import io.getlime.security.powerauth.app.tppengine.model.response.ConsentHistoryListResponse; diff --git a/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/converter/TppAppConverter.java b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/converter/TppAppConverter.java new file mode 100644 index 000000000..d20f1daa5 --- /dev/null +++ b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/converter/TppAppConverter.java @@ -0,0 +1,68 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.getlime.security.powerauth.app.tppengine.converter; + +import io.getlime.security.powerauth.app.tppengine.model.entity.TppInfo; +import io.getlime.security.powerauth.app.tppengine.model.response.TppAppDetailResponse; +import io.getlime.security.powerauth.app.tppengine.repository.model.entity.TppAppDetailEntity; +import io.getlime.security.powerauth.app.tppengine.repository.model.entity.TppEntity; + +/** + * Converter class for TPP and TPP app entity conversion. + * + * @author Petr Dvorak, petr@wultra.com + */ +public class TppAppConverter { + + /** + * Convert TppInfo response entity from database TppEntity entity in database. + * + * @param tppEntity DB entity to be converted. + * @return Response entity with TPP info. + */ + public static TppInfo fromTppEntity(TppEntity tppEntity) { + if (tppEntity == null) { + return null; + } + TppInfo tpp = new TppInfo(); + tpp.setName(tppEntity.getTppName()); + tpp.setInfo(tppEntity.getTppInfo()); + tpp.setAddress(tppEntity.getTppAddress()); + tpp.setWebsite(tppEntity.getTppWebsite()); + tpp.setEmail(tppEntity.getTppEmail()); + tpp.setPhone(tppEntity.getTppPhone()); + return tpp; + } + + /** + * Convert TppAppDetailResponse response entity from TppAppDetail entity in database. + * @param tppAppDetailEntity DB entity to be converted. + * @return Response entity with TPP app details. + */ + public static TppAppDetailResponse fromTppAppEntity(TppAppDetailEntity tppAppDetailEntity) { + if (tppAppDetailEntity == null) { + return null; + } + TppAppDetailResponse result = new TppAppDetailResponse(); + result.setClientId(tppAppDetailEntity.getPrimaryKey().getAppClientId()); + result.setName(tppAppDetailEntity.getAppName()); + result.setDescription(tppAppDetailEntity.getAppInfo()); + result.setTpp(fromTppEntity(tppAppDetailEntity.getTpp())); + return result; + } + +} diff --git a/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/exception/DefaultExceptionResolver.java b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/errorhandling/DefaultExceptionResolver.java similarity index 71% rename from powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/exception/DefaultExceptionResolver.java rename to powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/errorhandling/DefaultExceptionResolver.java index a769c8c50..2ba0134fb 100644 --- a/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/exception/DefaultExceptionResolver.java +++ b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/errorhandling/DefaultExceptionResolver.java @@ -14,10 +14,14 @@ * limitations under the License. */ -package io.getlime.security.powerauth.app.tppengine.exception; +package io.getlime.security.powerauth.app.tppengine.errorhandling; import io.getlime.core.rest.model.base.entity.Error; import io.getlime.core.rest.model.base.response.ErrorResponse; +import io.getlime.security.powerauth.app.tppengine.errorhandling.error.ConsentError; +import io.getlime.security.powerauth.app.tppengine.errorhandling.error.TppAppError; +import io.getlime.security.powerauth.app.tppengine.errorhandling.exception.ConsentNotFoundException; +import io.getlime.security.powerauth.app.tppengine.errorhandling.exception.TppAppNotFoundException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.http.HttpStatus; @@ -61,4 +65,16 @@ public class DefaultExceptionResolver { return new ErrorResponse(new ConsentError("consent.missing")); } + /** + * Exception thrown in case TPP app was not found. + * @param t Exception thrown when TPP app is not found. + * @return Response with error details. + */ + @ExceptionHandler(TppAppNotFoundException.class) + @ResponseStatus(HttpStatus.NOT_FOUND) + public @ResponseBody ErrorResponse handleTppAppNotFoundException(TppAppNotFoundException t) { + logger.error("App with client ID {} was not found", t.getId(), t); + return new ErrorResponse(new TppAppError("tpp.app.notFound")); + } + } \ No newline at end of file diff --git a/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/exception/ConsentError.java b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/errorhandling/error/ConsentError.java similarity index 93% rename from powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/exception/ConsentError.java rename to powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/errorhandling/error/ConsentError.java index 7453f21da..dc62509ed 100644 --- a/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/exception/ConsentError.java +++ b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/errorhandling/error/ConsentError.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.getlime.security.powerauth.app.tppengine.exception; +package io.getlime.security.powerauth.app.tppengine.errorhandling.error; import io.getlime.core.rest.model.base.entity.Error; diff --git a/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/errorhandling/error/TppAppError.java b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/errorhandling/error/TppAppError.java new file mode 100644 index 000000000..5c82babf3 --- /dev/null +++ b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/errorhandling/error/TppAppError.java @@ -0,0 +1,38 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.getlime.security.powerauth.app.tppengine.errorhandling.error; + +import io.getlime.core.rest.model.base.entity.Error; + +/** + * Error related to consent. + * + * @author Petr Dvorak, petr@wultra.com + */ +public class TppAppError extends Error { + + private static final String code = "TPP_APP_ERROR"; + + public TppAppError() { + super(); + this.setCode(code); + } + + public TppAppError(String message) { + super(code, message); + } +} diff --git a/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/exception/ConsentNotFoundException.java b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/errorhandling/exception/ConsentNotFoundException.java similarity index 91% rename from powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/exception/ConsentNotFoundException.java rename to powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/errorhandling/exception/ConsentNotFoundException.java index b8939e180..88d8ef3b2 100644 --- a/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/exception/ConsentNotFoundException.java +++ b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/errorhandling/exception/ConsentNotFoundException.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.getlime.security.powerauth.app.tppengine.exception; +package io.getlime.security.powerauth.app.tppengine.errorhandling.exception; /** * Exception thrown on missing consent. @@ -24,7 +24,7 @@ public class ConsentNotFoundException extends Exception { private final String id; - private static final String DEFAULT_MESSAGE = "Consent with given ID not found."; + private static final String DEFAULT_MESSAGE = "Consent with given ID was not found."; public ConsentNotFoundException(String id) { super(DEFAULT_MESSAGE); diff --git a/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/errorhandling/exception/TppAppNotFoundException.java b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/errorhandling/exception/TppAppNotFoundException.java new file mode 100644 index 000000000..ed0817c33 --- /dev/null +++ b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/errorhandling/exception/TppAppNotFoundException.java @@ -0,0 +1,42 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.getlime.security.powerauth.app.tppengine.errorhandling.exception; + +/** + * Exception thrown on non-existing TPP app. + * + * @author Petr Dvorak, petr@wultra.com + */ +public class TppAppNotFoundException extends Exception { + + private final String id; + private static final String DEFAULT_MESSAGE = "Application with given ID was not found."; + + public TppAppNotFoundException(String id) { + super(DEFAULT_MESSAGE); + this.id = id; + } + + /** + * Get ID of the consent that was not found. + * @return ID of the consent that was not found. + */ + public String getId() { + return id; + } + +} diff --git a/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/repository/TppAppDetailRepository.java b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/repository/TppAppDetailRepository.java new file mode 100644 index 000000000..a85135021 --- /dev/null +++ b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/repository/TppAppDetailRepository.java @@ -0,0 +1,38 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.getlime.security.powerauth.app.tppengine.repository; + +import io.getlime.security.powerauth.app.tppengine.repository.model.entity.TppAppDetailEntity; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.CrudRepository; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import java.util.Optional; + +/** + * Repository for fetching details about TPP providers. + * + * @author Petr Dvorak, petr@wultra.com + */ +@Repository +public interface TppAppDetailRepository extends CrudRepository { + + @Query("SELECT app FROM TppAppDetailEntity app WHERE app.primaryKey.appClientId=:clientId") + Optional findByClientId(@Param("clientId") String clientId); + +} diff --git a/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/repository/model/entity/TppAppDetailEntity.java b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/repository/model/entity/TppAppDetailEntity.java new file mode 100644 index 000000000..71f533516 --- /dev/null +++ b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/repository/model/entity/TppAppDetailEntity.java @@ -0,0 +1,121 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.getlime.security.powerauth.app.tppengine.repository.model.entity; + +import javax.persistence.*; +import java.io.Serializable; + +/** + * Entity representing a TPP application details. This entity is connected to TPP via tpp_id on one end, + * and to OAuth 2.0 client details via client_id on the other hand. As a result, this table does not contain + * association with the OAuth 2.0 credentials. It only stores connection between TPP and the credentials and + * also some basic metadata info related to the app. + * + * @author Petr Dvorak, petr@wultra.com + */ +@Entity +@Table(name = "tpp_app_detail") +public class TppAppDetailEntity implements Serializable { + + @EmbeddedId + private TppAppDetailKey primaryKey; + + @Column(name = "app_name") + private String appName; + + @Column(name = "app_info") + private String appInfo; + + @ManyToOne + @JoinColumn(name = "tpp_id", referencedColumnName = "tpp_id", insertable = false, updatable = false) + private TppEntity tpp; + + public TppAppDetailEntity() { + } + + public TppAppDetailEntity(String clientId, Long tppId) { + this.primaryKey = new TppAppDetailKey(clientId, tppId); + } + + public TppAppDetailKey getPrimaryKey() { + return primaryKey; + } + + public void setPrimaryKey(TppAppDetailKey primaryKey) { + this.primaryKey = primaryKey; + } + + public String getAppName() { + return appName; + } + + public void setAppName(String appName) { + this.appName = appName; + } + + public String getAppInfo() { + return appInfo; + } + + public void setAppInfo(String appInfo) { + this.appInfo = appInfo; + } + + public TppEntity getTpp() { + return tpp; + } + + public void setTpp(TppEntity tpp) { + this.tpp = tpp; + } + + @Embeddable + public static class TppAppDetailKey implements Serializable { + + @Column(name = "app_client_id") + private String appClientId; + + @Column(name = "tpp_id") + private Long tppId; + + public TppAppDetailKey() { + } + + public TppAppDetailKey(String appClientId, Long tppId) { + this.appClientId = appClientId; + this.tppId = tppId; + } + + public String getAppClientId() { + return appClientId; + } + + public void setAppClientId(String appClientId) { + this.appClientId = appClientId; + } + + public Long getTppId() { + return tppId; + } + + public void setTppId(Long tppId) { + this.tppId = tppId; + } + + } + +} diff --git a/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/repository/model/entity/TppEntity.java b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/repository/model/entity/TppEntity.java new file mode 100644 index 000000000..bfbfe47a0 --- /dev/null +++ b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/repository/model/entity/TppEntity.java @@ -0,0 +1,138 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.getlime.security.powerauth.app.tppengine.repository.model.entity; + +import javax.persistence.*; +import java.io.Serializable; +import java.util.List; + +/** + * Database entity representing a TPP details. + * + * @author Petr Dvorak, petr@wultra.com + */ +@Entity +@Table(name = "tpp_detail") +public class TppEntity implements Serializable { + + @Id + @SequenceGenerator(name = "tpp_detail", sequenceName = "tpp_detail_seq") + @GeneratedValue(strategy = GenerationType.AUTO, generator = "tpp_detail") + @Column(name = "tpp_id") + private Long tppId; + + @Column(name = "tpp_name") + private String tppName; + + @Column(name = "tpp_info") + private String tppInfo; + + @Column(name = "tpp_address") + private String tppAddress; + + @Column(name = "tpp_website") + private String tppWebsite; + + @Column(name = "tpp_phone") + private String tppPhone; + + @Column(name = "tpp_email") + private String tppEmail; + + @Lob + @Column(name = "tpp_logo") + private byte[] tppLogo; + + @OneToMany(fetch = FetchType.EAGER, mappedBy = "tpp") + @OrderBy("app_name") + private List applications; + + public TppEntity() { + } + + public Long getTppId() { + return tppId; + } + + public void setTppId(Long tppId) { + this.tppId = tppId; + } + + public String getTppName() { + return tppName; + } + + public void setTppName(String tppName) { + this.tppName = tppName; + } + + public String getTppInfo() { + return tppInfo; + } + + public void setTppInfo(String tppInfo) { + this.tppInfo = tppInfo; + } + + public String getTppAddress() { + return tppAddress; + } + + public void setTppAddress(String tppAddress) { + this.tppAddress = tppAddress; + } + + public String getTppWebsite() { + return tppWebsite; + } + + public void setTppWebsite(String tppWebsite) { + this.tppWebsite = tppWebsite; + } + + public String getTppPhone() { + return tppPhone; + } + + public void setTppPhone(String tppPhone) { + this.tppPhone = tppPhone; + } + + public String getTppEmail() { + return tppEmail; + } + + public void setTppEmail(String tppEmail) { + this.tppEmail = tppEmail; + } + + public byte[] getTppLogo() { + return tppLogo; + } + + public void setTppLogo(byte[] tppLogo) { + this.tppLogo = tppLogo; + } + + public List getApplications() { + return applications; + } + + public void setApplications(List applications) { + this.applications = applications; + } +} diff --git a/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/service/TppService.java b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/service/TppService.java new file mode 100644 index 000000000..20c81c35f --- /dev/null +++ b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/service/TppService.java @@ -0,0 +1,56 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.getlime.security.powerauth.app.tppengine.service; + +import io.getlime.security.powerauth.app.tppengine.converter.TppAppConverter; +import io.getlime.security.powerauth.app.tppengine.model.response.TppAppDetailResponse; +import io.getlime.security.powerauth.app.tppengine.repository.TppAppDetailRepository; +import io.getlime.security.powerauth.app.tppengine.repository.model.entity.TppAppDetailEntity; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Optional; + +/** + * Service from handling information about TPP and TPP apps. + * + * @author Petr Dvorak, petr@wultra.com + */ +@Service +public class TppService { + + private final TppAppDetailRepository appDetailRepository; + + @Autowired + public TppService(TppAppDetailRepository appDetailRepository) { + this.appDetailRepository = appDetailRepository; + } + + /** + * Fetch application details by provided client ID (OAuth 2.0 identification). + * + * @param clientId Client ID. + * @return Application details for app with given client ID, or null + * if no app for given client ID exists. + */ + public TppAppDetailResponse fetchAppDetailByClientId(String clientId) { + final Optional tppAppEntityOptional = appDetailRepository.findByClientId(clientId); + return tppAppEntityOptional + .map(TppAppConverter::fromTppAppEntity) + .orElse(null); + } +} diff --git a/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/service/UserConsentService.java b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/service/UserConsentService.java index 72885ac50..a9d003e56 100644 --- a/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/service/UserConsentService.java +++ b/powerauth-tpp-engine/src/main/java/io/getlime/security/powerauth/app/tppengine/service/UserConsentService.java @@ -18,7 +18,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; -import io.getlime.security.powerauth.app.tppengine.exception.ConsentNotFoundException; +import io.getlime.security.powerauth.app.tppengine.errorhandling.exception.ConsentNotFoundException; import io.getlime.security.powerauth.app.tppengine.model.entity.GivenConsent; import io.getlime.security.powerauth.app.tppengine.model.entity.GivenConsentHistory; import io.getlime.security.powerauth.app.tppengine.model.enumeration.ConsentChange; From 9524238072d9e39d235bbaabccf44c3b413ec069 Mon Sep 17 00:00:00 2001 From: Petr Dvorak Date: Mon, 16 Sep 2019 11:56:54 +0200 Subject: [PATCH 043/197] Add TPP engine client method --- .../tpp/engine/client/TppEngineClient.java | 29 +++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/powerauth-tpp-engine-client/src/main/java/io/getlime/security/powerauth/lib/tpp/engine/client/TppEngineClient.java b/powerauth-tpp-engine-client/src/main/java/io/getlime/security/powerauth/lib/tpp/engine/client/TppEngineClient.java index 4385c4e6e..b4a1dd9be 100644 --- a/powerauth-tpp-engine-client/src/main/java/io/getlime/security/powerauth/lib/tpp/engine/client/TppEngineClient.java +++ b/powerauth-tpp-engine-client/src/main/java/io/getlime/security/powerauth/lib/tpp/engine/client/TppEngineClient.java @@ -28,6 +28,7 @@ import io.getlime.security.powerauth.app.tppengine.model.request.RemoveConsentRequest; import io.getlime.security.powerauth.app.tppengine.model.response.ConsentDetailResponse; import io.getlime.security.powerauth.app.tppengine.model.response.GiveConsentResponse; +import io.getlime.security.powerauth.app.tppengine.model.response.TppAppDetailResponse; import io.getlime.security.powerauth.app.tppengine.model.response.UserConsentDetailResponse; import org.springframework.core.ParameterizedTypeReference; import org.springframework.http.HttpEntity; @@ -121,7 +122,6 @@ public RestTemplate getRestTemplate() { */ public ObjectResponse consentDetail(String id) throws TppEngineClientException { try { - // Exchange authentication request with data adapter. final Map params = new HashMap<>(); params.put("id", id); ResponseEntity> response = restTemplate.exchange( @@ -150,7 +150,6 @@ public ObjectResponse consentDetail(String id) throws Tpp */ public ObjectResponse consentStatus(String userId, String consentId, String clientId) throws TppEngineClientException { try { - // Exchange authentication request with data adapter. final Map params = new HashMap<>(); params.put("userId", userId); params.put("consentId", consentId); @@ -216,6 +215,32 @@ public Response rejectConsent(RemoveConsentRequest request) throws TppEngineClie } } + /** + * Lookup information about a provided app. + * + * @param clientId Identifier of a TPP app. + * @return Response with details TPP app with given client ID. + * @throws TppEngineClientException Thrown when client request fails or app does not exist. + */ + public ObjectResponse fetchAppInfo(String clientId) throws TppEngineClientException { + try { + final Map params = new HashMap<>(); + params.put("clientId", clientId); + ResponseEntity> response = restTemplate.exchange( + serviceUrl + "/tpp/app?clientId={clientId}", + HttpMethod.GET, + null, + new ParameterizedTypeReference>() {}, + params + ); + return new ObjectResponse<>(Objects.requireNonNull(response.getBody()).getResponseObject()); + } catch (HttpStatusCodeException ex) { + throw httpStatusException(ex); + } catch (ResourceAccessException ex) { // Data Adapter service is down + throw resourceAccessException(ex); + } + } + /** * Create new TppEngineClientException from ResourceAccessException. * From b2b0d0cd300cc71a9f6b20cee219845011efef75 Mon Sep 17 00:00:00 2001 From: Petr Dvorak Date: Mon, 16 Sep 2019 11:59:13 +0200 Subject: [PATCH 044/197] Improve SQL formatting --- docs/sql/oracle/create_schema.sql | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/sql/oracle/create_schema.sql b/docs/sql/oracle/create_schema.sql index 0e79dd807..616e36387 100644 --- a/docs/sql/oracle/create_schema.sql +++ b/docs/sql/oracle/create_schema.sql @@ -192,21 +192,21 @@ CREATE TABLE da_sms_authorization ( -- Table da_user_credentials stores built-in users for the data adapter CREATE TABLE da_user_credentials ( - user_id VARCHAR(128) PRIMARY KEY NOT NULL, - username VARCHAR(255) NOT NULL, - password_hash VARCHAR(255) NOT NULL, - family_name VARCHAR(255) NOT NULL, - given_name VARCHAR(255) NOT NULL, - organization_id VARCHAR(64) NOT NULL, - phone_number VARCHAR(255) NOT NULL + user_id VARCHAR(128) PRIMARY KEY NOT NULL, + username VARCHAR(255) NOT NULL, + password_hash VARCHAR(255) NOT NULL, + family_name VARCHAR(255) NOT NULL, + given_name VARCHAR(255) NOT NULL, + organization_id VARCHAR(64) NOT NULL, + phone_number VARCHAR(255) NOT NULL ); -- Table for the list of consent templates CREATE TABLE tpp_consent ( - consent_id VARCHAR(64) PRIMARY KEY NOT NULL, - consent_name VARCHAR(128) NOT NULL, - consent_text CLOB NOT NULL, - version INT NOT NULL + consent_id VARCHAR(64) PRIMARY KEY NOT NULL, + consent_name VARCHAR(128) NOT NULL, + consent_text CLOB NOT NULL, + version INT NOT NULL ); -- Table for the list of consent currently given by a user From f3bd643a632c4752e12858a77a889c38db94b7c3 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Mon, 16 Sep 2019 15:24:54 +0200 Subject: [PATCH 045/197] Fix initial data for PostgreSQL --- docs/sql/postgresql/initial_data.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/sql/postgresql/initial_data.sql b/docs/sql/postgresql/initial_data.sql index 723690f4f..d1e7eac33 100644 --- a/docs/sql/postgresql/initial_data.sql +++ b/docs/sql/postgresql/initial_data.sql @@ -196,7 +196,7 @@ VALUES (48, 'login_sca', 'UPDATE', 'CONSENT', 'AUTH_METHOD_FAILED', 1, NULL, 'FA -- login_sca - update operation (consent) - AUTH_FAILED -> CONTINUE INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) -VALUES (49, 'login_sca', 'UPDATE', 'CONSENT', 'AUTH_FAILED', 1, 'LOGIN_SCA', 'CONTINUE'); +VALUES (49, 'login_sca', 'UPDATE', 'CONSENT', 'AUTH_FAILED', 1, 'CONSENT', 'CONTINUE'); -- authorize_payment_sca - init operation -> CONTINUE INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) @@ -248,4 +248,4 @@ VALUES (61, 'authorize_payment_sca', 'UPDATE', 'CONSENT', 'AUTH_METHOD_FAILED', -- authorize_payment_sca - update operation (consent) - AUTH_FAILED -> CONTINUE INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) -VALUES (62, 'authorize_payment_sca', 'UPDATE', 'CONSENT', 'AUTH_FAILED', 1, 'APPROVAL_SCA', 'CONTINUE'); +VALUES (62, 'authorize_payment_sca', 'UPDATE', 'CONSENT', 'AUTH_FAILED', 1, 'CONSENT', 'CONTINUE'); From e31e737bd9fbe8eaf419514739020683f9afe28c Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Mon, 16 Sep 2019 15:59:54 +0200 Subject: [PATCH 046/197] Update cancellation logic, operations can now be canceled by closed Web Socket --- .../service/StepResolutionService.java | 43 +++++++++---------- 1 file changed, 21 insertions(+), 22 deletions(-) diff --git a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/service/StepResolutionService.java b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/service/StepResolutionService.java index c6a8d7dce..8d8326d6f 100644 --- a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/service/StepResolutionService.java +++ b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/service/StepResolutionService.java @@ -412,32 +412,31 @@ private void checkLegitimityOfUpdate(OperationEntity operationEntity, UpdateOper throw new IllegalStateException("Operation update failed, because INIT step for this operation is invalid (operationId: " + request.getOperationId() + ")."); } OperationHistoryEntity currentOperationHistory = operationEntity.getCurrentOperationHistoryEntity(); - if (currentOperationHistory != null && currentOperationHistory.getResponseResult() == AuthResult.CONTINUE) { - // do not check operation continuity for cancellation requests from INIT authentication method (done when new operation superseeds previous one) - if (!(request.getAuthMethod() == AuthMethod.INIT && request.getAuthStepResult() == AuthStepResult.CANCELED)) { - boolean stepAuthMethodValid = false; - // check whether request AuthMethod is available in response AuthSteps - this verifies operation continuity - if (request.getAuthMethod() == AuthMethod.SHOW_OPERATION_DETAIL) { - // special handling for SHOW_OPERATION_DETAIL - either SMS_KEY or POWERAUTH_TOKEN are present in next steps - for (AuthStep step : operationPersistenceService.getResponseAuthSteps(operationEntity)) { - if (step.getAuthMethod() == AuthMethod.SMS_KEY || step.getAuthMethod() == AuthMethod.POWERAUTH_TOKEN) { - stepAuthMethodValid = true; - break; - } - } - } else { - // verification of operation continuity for all other authentication methods - for (AuthStep step : operationPersistenceService.getResponseAuthSteps(operationEntity)) { - if (step.getAuthMethod() == request.getAuthMethod()) { - stepAuthMethodValid = true; - break; - } + // operation can be canceled anytime (e.g. by closed Web Socket) - do not check for step continuation + if (currentOperationHistory != null && currentOperationHistory.getResponseResult() == AuthResult.CONTINUE + && request.getAuthStepResult() != AuthStepResult.CANCELED ) { + boolean stepAuthMethodValid = false; + // check whether request AuthMethod is available in response AuthSteps - this verifies operation continuity + if (request.getAuthMethod() == AuthMethod.SHOW_OPERATION_DETAIL) { + // special handling for SHOW_OPERATION_DETAIL - either SMS_KEY or POWERAUTH_TOKEN are present in next steps + for (AuthStep step : operationPersistenceService.getResponseAuthSteps(operationEntity)) { + if (step.getAuthMethod() == AuthMethod.SMS_KEY || step.getAuthMethod() == AuthMethod.POWERAUTH_TOKEN) { + stepAuthMethodValid = true; + break; } } - if (!stepAuthMethodValid) { - throw new IllegalStateException("Operation update failed, because authentication method is invalid (operationId: " + request.getOperationId() + ")."); + } else { + // verification of operation continuity for all other authentication methods + for (AuthStep step : operationPersistenceService.getResponseAuthSteps(operationEntity)) { + if (step.getAuthMethod() == request.getAuthMethod()) { + stepAuthMethodValid = true; + break; + } } } + if (!stepAuthMethodValid) { + throw new IllegalStateException("Operation update failed, because authentication method is invalid (operationId: " + request.getOperationId() + ")."); + } } for (OperationHistoryEntity historyItem : operationHistory) { if (historyItem.getResponseResult() == AuthResult.DONE) { From de71f417df12c0f2d8d117675adeacec6b1df66b Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Mon, 16 Sep 2019 16:06:09 +0200 Subject: [PATCH 047/197] Fix #653: At least one redirect_uri must be registered with the client --- docs/sql/mysql/initial_data.sql | 4 ++-- docs/sql/oracle/initial_data.sql | 4 ++-- docs/sql/postgresql/initial_data.sql | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/sql/mysql/initial_data.sql b/docs/sql/mysql/initial_data.sql index d1e7eac33..2d383c93b 100644 --- a/docs/sql/mysql/initial_data.sql +++ b/docs/sql/mysql/initial_data.sql @@ -1,7 +1,7 @@ -- default oauth 2.0 client -- Note: bcrypt('changeme', 12) => '$2a$12$MkYsT5igDXSDgRwyDVz1B.93h8F81E4GZJd/spy/1vhjM4CJgeed.' -INSERT INTO oauth_client_details (client_id, client_secret, scope, authorized_grant_types, additional_information, autoapprove) -VALUES ('democlient', '$2a$12$MkYsT5igDXSDgRwyDVz1B.93h8F81E4GZJd/spy/1vhjM4CJgeed.', 'profile', 'authorization_code', '{}', 'true'); +INSERT INTO oauth_client_details (client_id, client_secret, scope, authorized_grant_types, web_server_redirect_uri, additional_information, autoapprove) +VALUES ('democlient', '$2a$12$MkYsT5igDXSDgRwyDVz1B.93h8F81E4GZJd/spy/1vhjM4CJgeed.', 'profile', 'authorization_code', 'http://localhost:8080/powerauth-webflow-client/connect/demo', '{}', 'true'); -- authentication methods INSERT INTO ns_auth_method (auth_method, order_number, check_user_prefs, user_prefs_column, user_prefs_default, check_auth_fails, max_auth_fails, has_user_interface, has_mobile_token, display_name_key) diff --git a/docs/sql/oracle/initial_data.sql b/docs/sql/oracle/initial_data.sql index 1ba35a14c..df4962b37 100644 --- a/docs/sql/oracle/initial_data.sql +++ b/docs/sql/oracle/initial_data.sql @@ -1,7 +1,7 @@ -- default oauth 2.0 client -- Note: bcrypt('changeme', 12) => '$2a$12$MkYsT5igDXSDgRwyDVz1B.93h8F81E4GZJd/spy/1vhjM4CJgeed.' -INSERT INTO oauth_client_details (client_id, client_secret, scope, authorized_grant_types, additional_information, autoapprove) -VALUES ('democlient', '$2a$12$MkYsT5igDXSDgRwyDVz1B.93h8F81E4GZJd/spy/1vhjM4CJgeed.', 'profile', 'authorization_code', '{}', 'true'); +INSERT INTO oauth_client_details (client_id, client_secret, scope, authorized_grant_types, web_server_redirect_uri, additional_information, autoapprove) +VALUES ('democlient', '$2a$12$MkYsT5igDXSDgRwyDVz1B.93h8F81E4GZJd/spy/1vhjM4CJgeed.', 'profile', 'authorization_code', 'http://localhost:8080/powerauth-webflow-client/connect/demo', '{}', 'true'); -- authentication methods INSERT INTO ns_auth_method (auth_method, order_number, check_user_prefs, user_prefs_column, user_prefs_default, check_auth_fails, max_auth_fails, has_user_interface, has_mobile_token, display_name_key) diff --git a/docs/sql/postgresql/initial_data.sql b/docs/sql/postgresql/initial_data.sql index d1e7eac33..2d383c93b 100644 --- a/docs/sql/postgresql/initial_data.sql +++ b/docs/sql/postgresql/initial_data.sql @@ -1,7 +1,7 @@ -- default oauth 2.0 client -- Note: bcrypt('changeme', 12) => '$2a$12$MkYsT5igDXSDgRwyDVz1B.93h8F81E4GZJd/spy/1vhjM4CJgeed.' -INSERT INTO oauth_client_details (client_id, client_secret, scope, authorized_grant_types, additional_information, autoapprove) -VALUES ('democlient', '$2a$12$MkYsT5igDXSDgRwyDVz1B.93h8F81E4GZJd/spy/1vhjM4CJgeed.', 'profile', 'authorization_code', '{}', 'true'); +INSERT INTO oauth_client_details (client_id, client_secret, scope, authorized_grant_types, web_server_redirect_uri, additional_information, autoapprove) +VALUES ('democlient', '$2a$12$MkYsT5igDXSDgRwyDVz1B.93h8F81E4GZJd/spy/1vhjM4CJgeed.', 'profile', 'authorization_code', 'http://localhost:8080/powerauth-webflow-client/connect/demo', '{}', 'true'); -- authentication methods INSERT INTO ns_auth_method (auth_method, order_number, check_user_prefs, user_prefs_column, user_prefs_default, check_auth_fails, max_auth_fails, has_user_interface, has_mobile_token, display_name_key) From 5f3b8a8e8b7c5d53b46c671181d6d973ab8a77b2 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Mon, 16 Sep 2019 17:29:13 +0200 Subject: [PATCH 048/197] Fix #655: AFS: Detect client IP address --- docs/Web-Flow-0.23.0.md | 7 ++-- docs/sql/mysql/create_schema.sql | 1 + docs/sql/oracle/create_schema.sql | 1 + docs/sql/postgresql/create_schema.sql | 3 ++ .../mtoken/controller/MessageController.java | 3 +- .../WebSocketHandshakeInterceptor.java | 40 +++++++++++++++++++ .../model/entity/OperationSessionEntity.java | 11 +++++ .../service/OperationSessionService.java | 4 +- .../service/WebSocketMessageService.java | 5 ++- .../configuration/WebSocketConfiguration.java | 3 +- 10 files changed, 70 insertions(+), 8 deletions(-) create mode 100644 powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/interceptor/WebSocketHandshakeInterceptor.java diff --git a/docs/Web-Flow-0.23.0.md b/docs/Web-Flow-0.23.0.md index c0e08065d..bc3e641f6 100644 --- a/docs/Web-Flow-0.23.0.md +++ b/docs/Web-Flow-0.23.0.md @@ -13,8 +13,9 @@ DDL update script for Oracle: ```sql ALTER TABLE ns_operation_config ADD afs_enabled NUMBER(1) DEFAULT 0 NOT NULL; -ALTER TABLE wf_operation_session ADD operation_hash VARCHAR(256) DEFAULT 0 NOT NULL; -ALTER TABLE wf_operation_session ADD websocket_session_id VARCHAR(32) DEFAULT 0 NOT NULL; +ALTER TABLE wf_operation_session ADD operation_hash VARCHAR(256); +ALTER TABLE wf_operation_session ADD websocket_session_id VARCHAR(32); +ALTER TABLE wf_operation_session ADD client_ip VARCHAR(32); CREATE INDEX wf_operation_hash ON wf_operation_session (operation_hash); CREATE INDEX wf_websocket_session ON wf_operation_session (websocket_session_id); @@ -26,8 +27,8 @@ ALTER TABLE `ns_operation_config` ADD `afs_enabled` BOOLEAN NOT NULL DEFAULT FAL ALTER TABLE `wf_operation_session` ADD `operation_hash` VARCHAR(256), ALTER TABLE `wf_operation_session` ADD `websocket_session_id` VARCHAR(32), +ALTER TABLE `wf_operation_session` ADD `client_ip` VARCHAR(32), CREATE INDEX wf_operation_hash ON wf_operation_session (operation_hash); CREATE INDEX wf_websocket_session ON wf_operation_session (websocket_session_id); ``` - diff --git a/docs/sql/mysql/create_schema.sql b/docs/sql/mysql/create_schema.sql index 15d9dba48..e9ec96c61 100644 --- a/docs/sql/mysql/create_schema.sql +++ b/docs/sql/mysql/create_schema.sql @@ -162,6 +162,7 @@ CREATE TABLE wf_operation_session ( http_session_id VARCHAR(256) NOT NULL, operation_hash VARCHAR(256), websocket_session_id VARCHAR(32), + client_ip VARCHAR(32), result VARCHAR(32) NOT NULL, timestamp_created TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; diff --git a/docs/sql/oracle/create_schema.sql b/docs/sql/oracle/create_schema.sql index 616e36387..535cd46e9 100644 --- a/docs/sql/oracle/create_schema.sql +++ b/docs/sql/oracle/create_schema.sql @@ -169,6 +169,7 @@ CREATE TABLE wf_operation_session ( http_session_id VARCHAR(256) NOT NULL, operation_hash VARCHAR(256), websocket_session_id VARCHAR(32), + client_ip VARCHAR(32), result VARCHAR(32) NOT NULL, timestamp_created TIMESTAMP ); diff --git a/docs/sql/postgresql/create_schema.sql b/docs/sql/postgresql/create_schema.sql index dda1aa588..cf857b947 100644 --- a/docs/sql/postgresql/create_schema.sql +++ b/docs/sql/postgresql/create_schema.sql @@ -167,6 +167,9 @@ CREATE TABLE ns_step_definition ( CREATE TABLE wf_operation_session ( operation_id VARCHAR(256) PRIMARY KEY NOT NULL, http_session_id VARCHAR(256) NOT NULL, + operation_hash VARCHAR(256), + websocket_session_id VARCHAR(32), + client_ip VARCHAR(32), result VARCHAR(32) NOT NULL, timestamp_created TIMESTAMP ); diff --git a/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/controller/MessageController.java b/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/controller/MessageController.java index f031a05ac..f74558ff3 100644 --- a/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/controller/MessageController.java +++ b/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/controller/MessageController.java @@ -49,7 +49,8 @@ public MessageController(WebSocketMessageService webSocketMessageService) { public void register(SimpMessageHeaderAccessor headerAccessor, WebSocketRegistrationRequest registrationRequest) { String sessionId = headerAccessor.getSessionId(); String webSocketId = registrationRequest.getWebSocketId(); - webSocketMessageService.storeWebSocketSession(webSocketId, sessionId); + String clientIp = (String) headerAccessor.getSessionAttributes().get("client_ip"); + webSocketMessageService.storeWebSocketSession(webSocketId, sessionId, clientIp); webSocketMessageService.sendRegistrationMessage(webSocketId, sessionId); } diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/interceptor/WebSocketHandshakeInterceptor.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/interceptor/WebSocketHandshakeInterceptor.java new file mode 100644 index 000000000..77223be40 --- /dev/null +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/interceptor/WebSocketHandshakeInterceptor.java @@ -0,0 +1,40 @@ +package io.getlime.security.powerauth.lib.webflow.authentication.interceptor; + +import org.springframework.http.server.ServerHttpRequest; +import org.springframework.http.server.ServerHttpResponse; +import org.springframework.http.server.ServletServerHttpRequest; +import org.springframework.lang.NonNull; +import org.springframework.web.socket.WebSocketHandler; +import org.springframework.web.socket.server.HandshakeInterceptor; + +import java.util.Map; + +/** + * Web Socket handshake interceptor resolves the client IP address during Web Socket handshake and stores it into + * message header attributes. + * + * @author Roman Strobl, roman.strobl@wultra.com + */ +public class WebSocketHandshakeInterceptor implements HandshakeInterceptor { + + @Override + public boolean beforeHandshake(@NonNull ServerHttpRequest request, @NonNull ServerHttpResponse response, + @NonNull WebSocketHandler wsHandler, @NonNull Map attributes) { + // Set client_ip attribute in WebSocket session, either from the X-FORWARDED-FOR HTTP header, if it is not + // available, use servlet request remote IP address. + if (request instanceof ServletServerHttpRequest) { + ServletServerHttpRequest servletRequest = (ServletServerHttpRequest) request; + String ipAddress = servletRequest.getServletRequest().getHeader("X-FORWARDED-FOR"); + if (ipAddress == null) { + ipAddress = servletRequest.getServletRequest().getRemoteAddr(); + } + attributes.put("client_ip", ipAddress); + } + return true; + } + + @Override + public void afterHandshake(@NonNull ServerHttpRequest request, @NonNull ServerHttpResponse response, + @NonNull WebSocketHandler wsHandler, Exception exception) { + } +} diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/repository/model/entity/OperationSessionEntity.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/repository/model/entity/OperationSessionEntity.java index aa9d8636d..9664ade69 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/repository/model/entity/OperationSessionEntity.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/repository/model/entity/OperationSessionEntity.java @@ -46,6 +46,9 @@ public class OperationSessionEntity implements Serializable { @Column(name = "websocket_session_id") private String webSocketSessionId; + @Column(name = "client_ip") + private String clientIp; + @Column(name = "result") @Enumerated(EnumType.STRING) private AuthResult result; @@ -96,6 +99,14 @@ public void setWebSocketSessionId(String webSocketSessionId) { this.webSocketSessionId = webSocketSessionId; } + public String getClientIp() { + return clientIp; + } + + public void setClientIp(String clientIp) { + this.clientIp = clientIp; + } + public AuthResult getResult() { return result; } diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/OperationSessionService.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/OperationSessionService.java index 352068266..9cc7c0cc3 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/OperationSessionService.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/OperationSessionService.java @@ -142,11 +142,13 @@ public String lookupOperationIdByWebSocketSessionId(String webSocketSessionId) { * Lookup an operation by operation hash and store Web Socket session ID. * @param operationHash Operation hash. * @param webSocketSessionId Web Socket session ID. + * @param clientIp Remote client IP address. */ - public void storeWebSocketSessionId(String operationHash, String webSocketSessionId) { + public void storeWebSocketSessionId(String operationHash, String webSocketSessionId, String clientIp) { OperationSessionEntity operationSessionEntity = operationSessionRepository.findByOperationHash(operationHash); if (operationSessionEntity != null) { operationSessionEntity.setWebSocketSessionId(webSocketSessionId); + operationSessionEntity.setClientIp(clientIp); operationSessionRepository.save(operationSessionEntity); } } diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/WebSocketMessageService.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/WebSocketMessageService.java index c6a0071c4..efc2867ae 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/WebSocketMessageService.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/WebSocketMessageService.java @@ -90,9 +90,10 @@ public String lookupWebSocketSessionId(String operationHash) { * * @param operationHash Operation hash. * @param webSocketSessionId Web Socket Session ID. + * @param clientIp Remote client IP address. */ - public void storeWebSocketSession(String operationHash, String webSocketSessionId) { - operationSessionService.storeWebSocketSessionId(operationHash, webSocketSessionId); + public void storeWebSocketSession(String operationHash, String webSocketSessionId, String clientIp) { + operationSessionService.storeWebSocketSessionId(operationHash, webSocketSessionId, clientIp); } } diff --git a/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/configuration/WebSocketConfiguration.java b/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/configuration/WebSocketConfiguration.java index bd9806b66..345209172 100644 --- a/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/configuration/WebSocketConfiguration.java +++ b/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/configuration/WebSocketConfiguration.java @@ -15,6 +15,7 @@ */ package io.getlime.security.powerauth.app.webflow.configuration; +import io.getlime.security.powerauth.lib.webflow.authentication.interceptor.WebSocketHandshakeInterceptor; import org.springframework.messaging.simp.config.MessageBrokerRegistry; import org.springframework.stereotype.Component; import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker; @@ -38,7 +39,7 @@ public class WebSocketConfiguration implements WebSocketMessageBrokerConfigurer */ @Override public void registerStompEndpoints(StompEndpointRegistry registry) { - registry.addEndpoint("/websocket").setAllowedOrigins("*").withSockJS(); + registry.addEndpoint("/websocket").addInterceptors(new WebSocketHandshakeInterceptor()).setAllowedOrigins("*").withSockJS(); } /** From 8f5dc1b94b9a5666db739ae0196c01ec2a7daa9f Mon Sep 17 00:00:00 2001 From: Petr Dvorak Date: Tue, 17 Sep 2019 00:21:24 +0200 Subject: [PATCH 049/197] Fix #661: Add requested OAuth 2.0 scopes into a strongly typed attribute --- .../nextstep/model/entity/ApplicationContext.java | 13 +++++++++++++ .../app/webflow/demo/controller/HomeController.java | 7 ++++--- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/entity/ApplicationContext.java b/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/entity/ApplicationContext.java index 0a3ae64fe..99e859d4f 100644 --- a/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/entity/ApplicationContext.java +++ b/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/entity/ApplicationContext.java @@ -15,7 +15,9 @@ */ package io.getlime.security.powerauth.lib.nextstep.model.entity; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; /** @@ -28,6 +30,7 @@ public class ApplicationContext { private String id; private String name; private String description; + private List originalScopes; private Map extras; /** @@ -35,6 +38,7 @@ public class ApplicationContext { */ public ApplicationContext() { extras = new HashMap<>(); + originalScopes = new ArrayList<>(); } /** @@ -48,6 +52,7 @@ public ApplicationContext(String id, String name, String description, Applicatio this.id = id; this.name = name; this.description = description; + this.originalScopes = new ArrayList<>(); this.extras = new HashMap<>(); } @@ -99,6 +104,14 @@ public void setDescription(String description) { this.description = description; } + /** + * Get the list with the original OAuth 2.0 scopes used when requesting the operation. + * @return List of originally requested scopes. + */ + public List getOriginalScopes() { + return originalScopes; + } + /** * Get extra information for OAuth 2.0 consent screen. * @return Extra information for OAuth 2.0 consent screen. diff --git a/powerauth-webflow-client/src/main/java/io/getlime/security/powerauth/app/webflow/demo/controller/HomeController.java b/powerauth-webflow-client/src/main/java/io/getlime/security/powerauth/app/webflow/demo/controller/HomeController.java index 8b1fb62ca..0aed0f7b5 100644 --- a/powerauth-webflow-client/src/main/java/io/getlime/security/powerauth/app/webflow/demo/controller/HomeController.java +++ b/powerauth-webflow-client/src/main/java/io/getlime/security/powerauth/app/webflow/demo/controller/HomeController.java @@ -95,7 +95,7 @@ public String home(Model model) throws NextStepServiceException { loginFormSca = (OperationForm) httpSession.getAttribute("loginFormSca"); if (loginFormSca == null) { loginFormSca = new OperationForm(); - loginFormSca.setAppContext(createApplicationContext(Collections.singletonList("AISP"))); + loginFormSca.setAppContext(createApplicationContext(Collections.singletonList("aisp"))); } else { httpSession.removeAttribute("loginFormSca"); } @@ -273,9 +273,10 @@ private ApplicationContext getApplicationContext(OperationForm form) throws Next private String createApplicationContext(List requestedScopes) throws NextStepServiceException { // Sample specification of ApplicationContext for OAuth 2.0 consent screen ApplicationContext applicationContext = new ApplicationContext(); - applicationContext.setId("DEMO"); + applicationContext.setId("democlient"); applicationContext.setName("Demo application"); applicationContext.setDescription("Web Flow demo application"); + applicationContext.getOriginalScopes().addAll(requestedScopes); applicationContext.getExtras().put("_requestedScopes", requestedScopes); applicationContext.getExtras().put("applicationOwner", "Wultra"); @@ -293,7 +294,7 @@ private PaymentForm createDemoPaymentForm(boolean isSca) throws NextStepServiceE paymentForm.setAccount("238400856/0300"); paymentForm.setNote("Utility Bill Payment - 05/2019"); paymentForm.setDueDate("2019-06-29"); - paymentForm.setAppContext(createApplicationContext(Collections.singletonList(isSca ? "PISP" : "OAUTH"))); + paymentForm.setAppContext(createApplicationContext(Collections.singletonList(isSca ? "pisp" : "oauth"))); return paymentForm; } } \ No newline at end of file From dbb2afbee4feb665403e134a94dd06aca15d3f77 Mon Sep 17 00:00:00 2001 From: Petr Dvorak Date: Tue, 17 Sep 2019 01:21:59 +0200 Subject: [PATCH 050/197] Add the remaining code of the change --- docs/sql/mysql/create_schema.sql | 27 ++++++++++--------- docs/sql/oracle/create_schema.sql | 27 ++++++++++--------- docs/sql/postgresql/create_schema.sql | 27 ++++++++++--------- .../model/entity/ApplicationContext.java | 5 ++-- .../controller/OperationController.java | 14 +++++++--- .../model/entity/OperationEntity.java | 11 ++++++++ .../service/OperationPersistenceService.java | 9 ++++--- 7 files changed, 72 insertions(+), 48 deletions(-) diff --git a/docs/sql/mysql/create_schema.sql b/docs/sql/mysql/create_schema.sql index e9ec96c61..b666b6080 100644 --- a/docs/sql/mysql/create_schema.sql +++ b/docs/sql/mysql/create_schema.sql @@ -106,19 +106,20 @@ CREATE TABLE ns_organization ( -- Table ns_operation stores details of Web Flow operations. -- Only the last status is stored in this table, changes of operations are stored in table ns_operation_history. CREATE TABLE ns_operation ( - operation_id VARCHAR(256) PRIMARY KEY NOT NULL, - operation_name VARCHAR(32) NOT NULL, - operation_data TEXT NOT NULL, - operation_form_data TEXT, - application_id VARCHAR(256), - application_name VARCHAR(256), - application_description VARCHAR(256), - application_extras TEXT, - user_id VARCHAR(256), - organization_id VARCHAR(256), - result VARCHAR(32), - timestamp_created TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - timestamp_expires TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + operation_id VARCHAR(256) PRIMARY KEY NOT NULL, + operation_name VARCHAR(32) NOT NULL, + operation_data TEXT NOT NULL, + operation_form_data TEXT, + application_id VARCHAR(256), + application_name VARCHAR(256), + application_description VARCHAR(256), + application_original_scopes VARCHAR(256), + application_extras TEXT, + user_id VARCHAR(256), + organization_id VARCHAR(256), + result VARCHAR(32), + timestamp_created TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + timestamp_expires TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY organization_fk (organization_id) REFERENCES ns_organization (organization_id) ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; diff --git a/docs/sql/oracle/create_schema.sql b/docs/sql/oracle/create_schema.sql index 535cd46e9..7542270aa 100644 --- a/docs/sql/oracle/create_schema.sql +++ b/docs/sql/oracle/create_schema.sql @@ -112,19 +112,20 @@ CREATE TABLE ns_organization ( -- Table ns_operation stores details of Web Flow operations. -- Only the last status is stored in this table, changes of operations are stored in table ns_operation_history. CREATE TABLE ns_operation ( - operation_id VARCHAR(256) PRIMARY KEY NOT NULL, - operation_name VARCHAR(32) NOT NULL, - operation_data CLOB NOT NULL, - operation_form_data CLOB, - application_id VARCHAR(256), - application_name VARCHAR(256), - application_description VARCHAR(256), - application_extras CLOB, - user_id VARCHAR(256), - organization_id VARCHAR(256), - result VARCHAR(32), - timestamp_created TIMESTAMP, - timestamp_expires TIMESTAMP, + operation_id VARCHAR(256) PRIMARY KEY NOT NULL, + operation_name VARCHAR(32) NOT NULL, + operation_data CLOB NOT NULL, + operation_form_data CLOB, + application_id VARCHAR(256), + application_name VARCHAR(256), + application_description VARCHAR(256), + application_original_scopes VARCHAR(256), + application_extras CLOB, + user_id VARCHAR(256), + organization_id VARCHAR(256), + result VARCHAR(32), + timestamp_created TIMESTAMP, + timestamp_expires TIMESTAMP, CONSTRAINT operation_organization_fk FOREIGN KEY (organization_id) REFERENCES ns_organization (organization_id) ); diff --git a/docs/sql/postgresql/create_schema.sql b/docs/sql/postgresql/create_schema.sql index cf857b947..f20249167 100644 --- a/docs/sql/postgresql/create_schema.sql +++ b/docs/sql/postgresql/create_schema.sql @@ -112,19 +112,20 @@ CREATE TABLE ns_organization ( -- Table ns_operation stores details of Web Flow operations. -- Only the last status is stored in this table, changes of operations are stored in table ns_operation_history. CREATE TABLE ns_operation ( - operation_id VARCHAR(256) PRIMARY KEY NOT NULL, - operation_name VARCHAR(32) NOT NULL, - operation_data TEXT NOT NULL, - operation_form_data TEXT, - application_id VARCHAR(256), - application_name VARCHAR(256), - application_description VARCHAR(256), - application_extras TEXT, - user_id VARCHAR(256), - organization_id VARCHAR(256), - result VARCHAR(32), - timestamp_created TIMESTAMP, - timestamp_expires TIMESTAMP, + operation_id VARCHAR(256) PRIMARY KEY NOT NULL, + operation_name VARCHAR(32) NOT NULL, + operation_data TEXT NOT NULL, + operation_form_data TEXT, + application_id VARCHAR(256), + application_name VARCHAR(256), + application_description VARCHAR(256), + application_original_scopes VARCHAR(256), + application_extras TEXT, + user_id VARCHAR(256), + organization_id VARCHAR(256), + result VARCHAR(32), + timestamp_created TIMESTAMP, + timestamp_expires TIMESTAMP, CONSTRAINT operation_organization_fk FOREIGN KEY (organization_id) REFERENCES ns_organization (organization_id) ); diff --git a/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/entity/ApplicationContext.java b/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/entity/ApplicationContext.java index 99e859d4f..87f408cb0 100644 --- a/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/entity/ApplicationContext.java +++ b/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/entity/ApplicationContext.java @@ -45,10 +45,9 @@ public ApplicationContext() { * Constructor with all details. * @param id Application identifier. * @param name Application name. - * @param description Application description. - * @param extras Extra information for OAuth 2.0 consent screen. + * @param description Application description */ - public ApplicationContext(String id, String name, String description, ApplicationExtras extras) { + public ApplicationContext(String id, String name, String description) { this.id = id; this.name = name; this.description = description; diff --git a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/controller/OperationController.java b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/controller/OperationController.java index 27bfb6209..c02bb25ca 100644 --- a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/controller/OperationController.java +++ b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/controller/OperationController.java @@ -423,14 +423,22 @@ private void assignApplicationContext(GetOperationDetailResponse response, Opera applicationContext.setId(operation.getApplicationId()); applicationContext.setName(operation.getApplicationName()); applicationContext.setDescription(operation.getApplicationDescription()); + if (operation.getApplicationOriginalScopes() != null) { + try { + JavaType listType = objectMapper.getTypeFactory().constructParametricType(List.class, String.class); + List originalScopes = objectMapper.readValue(operation.getApplicationOriginalScopes(), listType); + applicationContext.getOriginalScopes().addAll(originalScopes); + } catch (IOException ex) { + logger.error("Error while deserializing application scopes.", ex); + } + } if (operation.getApplicationExtras() != null) { - Map extras; try { JavaType mapType = objectMapper.getTypeFactory().constructParametricType(Map.class, String.class, Object.class); - extras = objectMapper.readValue(operation.getApplicationExtras(), mapType); + Map extras = objectMapper.readValue(operation.getApplicationExtras(), mapType); applicationContext.getExtras().putAll(extras); } catch (IOException ex) { - logger.error("Error while deserializing application extras", ex); + logger.error("Error while deserializing application extras.", ex); } } response.setApplicationContext(applicationContext); diff --git a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/repository/model/entity/OperationEntity.java b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/repository/model/entity/OperationEntity.java index dbaa063a0..d00d47096 100644 --- a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/repository/model/entity/OperationEntity.java +++ b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/repository/model/entity/OperationEntity.java @@ -61,6 +61,9 @@ public class OperationEntity implements Serializable { @Column(name = "application_description") private String applicationDescription; + @Column(name = "application_original_scopes") + private String applicationOriginalScopes; + @Column(name = "application_extras") private String applicationExtras; @@ -150,6 +153,14 @@ public void setApplicationDescription(String applicationDescription) { this.applicationDescription = applicationDescription; } + public String getApplicationOriginalScopes() { + return applicationOriginalScopes; + } + + public void setApplicationOriginalScopes(String applicationOriginalScopes) { + this.applicationOriginalScopes = applicationOriginalScopes; + } + public String getApplicationExtras() { return applicationExtras; } diff --git a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/service/OperationPersistenceService.java b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/service/OperationPersistenceService.java index 5cbc7026e..8098e6639 100644 --- a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/service/OperationPersistenceService.java +++ b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/service/OperationPersistenceService.java @@ -259,15 +259,17 @@ public void updateApplicationContext(UpdateApplicationContextRequest request) th operation.setApplicationId(null); operation.setApplicationName(null); operation.setApplicationDescription(null); + operation.setApplicationOriginalScopes(null); operation.setApplicationExtras(objectMapper.writeValueAsString(Collections.emptyMap())); } else { operation.setApplicationId(applicationContext.getId()); operation.setApplicationName(applicationContext.getName()); operation.setApplicationDescription(applicationContext.getDescription()); + operation.setApplicationOriginalScopes(objectMapper.writeValueAsString(applicationContext.getOriginalScopes())); operation.setApplicationExtras(objectMapper.writeValueAsString(applicationContext.getExtras())); } } catch (IOException e) { - logger.error("Error occurred while serializing application context for an operation", e); + logger.error("Error occurred while serializing application attributes for an operation", e); } operationRepository.save(operation); } @@ -383,11 +385,12 @@ private void assignApplicationContext(OperationEntity operationEntity, Applicati operationEntity.setApplicationId(applicationContext.getId()); operationEntity.setApplicationName(applicationContext.getName()); operationEntity.setApplicationDescription(applicationContext.getDescription()); - // Extras are saved as JSON + // Extras and original scopes are saved as JSON try { operationEntity.setApplicationExtras(objectMapper.writeValueAsString(applicationContext.getExtras())); + operationEntity.setApplicationOriginalScopes(objectMapper.writeValueAsString(applicationContext.getOriginalScopes())); } catch (JsonProcessingException ex) { - logger.error("Error while serializing application extras", ex); + logger.error("Error while serializing application attributes.", ex); } } From 16f0624e613756f46bc91ffa6094fa4ba437c847 Mon Sep 17 00:00:00 2001 From: Petr Dvorak Date: Tue, 17 Sep 2019 01:45:47 +0200 Subject: [PATCH 051/197] Add the documentation --- docs/Web-Flow-0.23.0.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/Web-Flow-0.23.0.md b/docs/Web-Flow-0.23.0.md index bc3e641f6..4a7b2b835 100644 --- a/docs/Web-Flow-0.23.0.md +++ b/docs/Web-Flow-0.23.0.md @@ -17,6 +17,8 @@ ALTER TABLE wf_operation_session ADD operation_hash VARCHAR(256); ALTER TABLE wf_operation_session ADD websocket_session_id VARCHAR(32); ALTER TABLE wf_operation_session ADD client_ip VARCHAR(32); +ALTER TABLE ns_operation ADD application_original_scopes VARCHAR(256); + CREATE INDEX wf_operation_hash ON wf_operation_session (operation_hash); CREATE INDEX wf_websocket_session ON wf_operation_session (websocket_session_id); ``` @@ -29,6 +31,8 @@ ALTER TABLE `wf_operation_session` ADD `operation_hash` VARCHAR(256), ALTER TABLE `wf_operation_session` ADD `websocket_session_id` VARCHAR(32), ALTER TABLE `wf_operation_session` ADD `client_ip` VARCHAR(32), +ALTER TABLE `ns_operation` ADD `application_original_scopes` VARCHAR(256); + CREATE INDEX wf_operation_hash ON wf_operation_session (operation_hash); CREATE INDEX wf_websocket_session ON wf_operation_session (websocket_session_id); ``` From 9c94bca231456793ca7267116e95a551f23f08a5 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Tue, 17 Sep 2019 13:16:12 +0200 Subject: [PATCH 052/197] Document changes in configuration of OAuth 2.0 Client --- docs/Web-Flow-0.23.0.md | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/docs/Web-Flow-0.23.0.md b/docs/Web-Flow-0.23.0.md index c0e08065d..f886767f7 100644 --- a/docs/Web-Flow-0.23.0.md +++ b/docs/Web-Flow-0.23.0.md @@ -27,7 +27,19 @@ ALTER TABLE `ns_operation_config` ADD `afs_enabled` BOOLEAN NOT NULL DEFAULT FAL ALTER TABLE `wf_operation_session` ADD `operation_hash` VARCHAR(256), ALTER TABLE `wf_operation_session` ADD `websocket_session_id` VARCHAR(32), -CREATE INDEX wf_operation_hash ON wf_operation_session (operation_hash); -CREATE INDEX wf_websocket_session ON wf_operation_session (websocket_session_id); +CREATE INDEX `wf_operation_hash` ON `wf_operation_session` (`operation_hash`); +CREATE INDEX `wf_websocket_session` ON `wf_operation_session` (`websocket_session_id`); +``` + +### Configuration of OAuth 2.0 Client + +Due to changes in Spring OAuth 2.0 configuration, the redirect URI needs to be specified in the client configuration in database. +For demo application, you can use this SQL query: + +```sql +UPDATE oauth_client_details SET web_server_redirect_uri = 'http://localhost:8080/powerauth-webflow-client/connect/demo' WHERE client_id='democlient'; +COMMIT; ``` +Note that the URI needs to be updated for each client in each environment. There is typically a different redirect URI +for development, testing and production environments. From fe9996ac05a92b584a3f440d6b1ecf294591b0ce Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Wed, 18 Sep 2019 12:39:14 +0200 Subject: [PATCH 053/197] Data Adapter model update for AFS --- .../model/enumeration/AfsAction.java | 45 +++ .../model/enumeration/AuthInstrument.java | 45 +++ .../OperationTerminationReason.java | 45 +++ .../dataadapter/model/request/AfsRequest.java | 273 ++++++++++++++++++ 4 files changed, 408 insertions(+) create mode 100644 powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/enumeration/AfsAction.java create mode 100644 powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/enumeration/AuthInstrument.java create mode 100644 powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/enumeration/OperationTerminationReason.java create mode 100644 powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/AfsRequest.java diff --git a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/enumeration/AfsAction.java b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/enumeration/AfsAction.java new file mode 100644 index 000000000..0943be004 --- /dev/null +++ b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/enumeration/AfsAction.java @@ -0,0 +1,45 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.getlime.security.powerauth.lib.dataadapter.model.enumeration; + +/** + * AFS action type. + * + * @author Roman Strobl, roman.strobl@wultra.com + */ +public enum AfsAction { + + /** + * Triggered anytime user performs authentication, both successful and failed. + */ + LOGIN, + + /** + * Triggered when user completes an operation or the operation is terminated for any reason. + */ + LOGOUT, + + /** + * Triggered before an approval form is created. + */ + APPROVAL_CREATE, + + /** + * Triggered anytime the approval form is authenticated. + */ + APPROVAL_SIGN + +} diff --git a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/enumeration/AuthInstrument.java b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/enumeration/AuthInstrument.java new file mode 100644 index 000000000..b47463391 --- /dev/null +++ b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/enumeration/AuthInstrument.java @@ -0,0 +1,45 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.getlime.security.powerauth.lib.dataadapter.model.enumeration; + +/** + * Authentication instruments used for authentication / authorization during authentication steps. + * + * @author Roman Strobl, roman.strobl@wultra.com + */ +public enum AuthInstrument { + + /** + * Password is used for step authentication / authorization. + */ + PASSWORD, + + /** + * SMS authorization code is used for step authentication / authorization. + */ + SMS_KEY, + + /** + * PowerAuth mobile token application is used for step authentication / authorization. + */ + POWERAUTH_TOKEN, + + /** + * Hardware token is used for step authentication / authorization. + */ + HW_TOKEN + +} diff --git a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/enumeration/OperationTerminationReason.java b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/enumeration/OperationTerminationReason.java new file mode 100644 index 000000000..f887a554a --- /dev/null +++ b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/enumeration/OperationTerminationReason.java @@ -0,0 +1,45 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.getlime.security.powerauth.lib.dataadapter.model.enumeration; + +/** + * Reason why the operation was terminated. + * + * @author Roman Strobl, roman.strobl@wultra.com + */ +public enum OperationTerminationReason { + + /** + * Operation was completed successfully. + */ + DONE, + + /** + * Operation failed due to an error. + */ + FAILED, + + /** + * Operation has timed out and failed due to the timeout. + */ + TIMED_OUT, + + /** + * Operation was interrupted e.g. by closing the browser window or by a newer operation. + */ + INTERRUPTED + +} diff --git a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/AfsRequest.java b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/AfsRequest.java new file mode 100644 index 000000000..c754f8ab9 --- /dev/null +++ b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/AfsRequest.java @@ -0,0 +1,273 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.getlime.security.powerauth.lib.dataadapter.model.request; + +import io.getlime.security.powerauth.lib.dataadapter.model.entity.OperationContext; +import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.AfsAction; +import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.AfsType; +import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.AuthInstrument; +import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.OperationTerminationReason; +import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthStepResult; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Request for an anti-fraud system call. + * + * @author Roman Strobl, roman.strobl@wultra.com + */ +public class AfsRequest { + + /** + * AFS product type. + */ + private AfsType afsType; + + /** + * User ID for this request, use null value before user is authenticated. + */ + private String userId; + + /** + * Organization ID for this request. + */ + private String organizationId; + + /** + * Operation context which provides context for creating the consent form. + */ + private OperationContext operationContext; + + /** + * AFS action. + */ + private AfsAction afsAction; + + /** + * Client IP address. + */ + private String clientIp; + + /** + * Index counter for this authentication step. + */ + private int stepIndex; + + /** + * Authentication step result. + */ + private AuthStepResult authStepResult; + + /** + * Reason why operation was terminated. + */ + private OperationTerminationReason operationTerminationReason; + + /** + * Authentication instruments used during this authentication step. + */ + private final List authInstruments = new ArrayList<>(); + + /** + * Extra parameters sent with the request depending on AFS type, e.g. cookies for Threat Mark, logout reason, etc. + */ + private final Map extras = new HashMap<>(); + + /** + * Default constructor. + */ + public AfsRequest() { + } + + /** + * Constructor all details. + * @param afsType AFS product type. + * @param afsAction AFS action. + * @param userId User ID. + * @param organizationId Organization ID. + * @param operationContext Operation context which provides context for creating the consent form. + */ + public AfsRequest(AfsType afsType, AfsAction afsAction, String userId, String organizationId, OperationContext operationContext) { + this.afsType = afsType; + this.afsAction = afsAction; + this.userId = userId; + this.organizationId = organizationId; + this.operationContext = operationContext; + } + + /** + * Get the AFS product type. + * @return AFS product type. + */ + public AfsType getAfsType() { + return afsType; + } + + /** + * Set the AFS product type. + * @param afsType AFS product type. + */ + public void setAfsType(AfsType afsType) { + this.afsType = afsType; + } + + /** + * Get the AFS action. + * @return AFS action. + */ + public AfsAction getAfsAction() { + return afsAction; + } + + /** + * Set the AFS action. + * @param afsAction AFS action. + */ + public void setAfsAction(AfsAction afsAction) { + this.afsAction = afsAction; + } + + /** + * Get user ID. + * @return User ID. + */ + public String getUserId() { + return userId; + } + + /** + * Set user ID. + * @param userId user ID. + */ + public void setUserId(String userId) { + this.userId = userId; + } + + /** + * Get organization ID. + * @return Organization ID. + */ + public String getOrganizationId() { + return organizationId; + } + + /** + * Set organization ID. + * @param organizationId Organization ID. + */ + public void setOrganizationId(String organizationId) { + this.organizationId = organizationId; + } + + /** + * Get operation context which provides context for creating the consent form. + * @return Operation context which provides context for creating the consent form. + */ + public OperationContext getOperationContext() { + return operationContext; + } + + /** + * Set operation context which provides context for creating the consent form. + * @param operationContext Operation context which provides context for creating the consent form. + */ + public void setOperationContext(OperationContext operationContext) { + this.operationContext = operationContext; + } + + /** + * Get client IP address. + * @return Client IP address. + */ + public String getClientIp() { + return clientIp; + } + + /** + * Set client IP address. + * @param clientIp IP address. + */ + public void setClientIp(String clientIp) { + this.clientIp = clientIp; + } + + /** + * Get index counter for this authentication step. + * @return Index counter for this authentication step. + */ + public int getStepIndex() { + return stepIndex; + } + + /** + * Set index counter for this authentication step. + * @param stepIndex Index counter for this authentication step. + */ + public void setStepIndex(int stepIndex) { + this.stepIndex = stepIndex; + } + + /** + * Get authentication step result. + * @return Authentication step result. + */ + public AuthStepResult getAuthStepResult() { + return authStepResult; + } + + /** + * Set authentication step result. + * @param authStepResult Authentication step result. + */ + public void setAuthStepResult(AuthStepResult authStepResult) { + this.authStepResult = authStepResult; + } + + /** + * Get reason why operation was terminated, use null for active operations. + * @return Reason why operation was terminated. + */ + public OperationTerminationReason getOperationTerminationReason() { + return operationTerminationReason; + } + + /** + * Set reason why operation was terminated, use null for active operations. + * @param operationTerminationReason Reason why operation was terminated. + */ + public void setOperationTerminationReason(OperationTerminationReason operationTerminationReason) { + this.operationTerminationReason = operationTerminationReason; + } + + /** + * Get authentication authentication instruments used during this step. + * @return Authentication authentication instruments used during this step. + */ + public List getAuthInstruments() { + return authInstruments; + } + + /** + * Extra parameters sent with the request depending on AFS type, e.g. cookies for Threat Mark. + * @return Get extra parameters for AFS. + */ + public Map getExtras() { + return extras; + } +} From 1535f7bd9768198d587483e79dd1eaa4161a18bb Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Wed, 18 Sep 2019 13:09:12 +0200 Subject: [PATCH 054/197] Fix #675: Filter IPv6 IP addresses when detecting client IP address --- .../WebFlowServicesConfiguration.java | 14 +++++++++ .../WebSocketHandshakeInterceptor.java | 30 ++++++++++++++++++- .../configuration/WebSocketConfiguration.java | 12 +++++++- .../src/main/resources/application.properties | 1 + 4 files changed, 55 insertions(+), 2 deletions(-) diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/configuration/WebFlowServicesConfiguration.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/configuration/WebFlowServicesConfiguration.java index 767eebfd8..4b56572fe 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/configuration/WebFlowServicesConfiguration.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/configuration/WebFlowServicesConfiguration.java @@ -102,6 +102,12 @@ public class WebFlowServicesConfiguration { @Value("${powerauth.webflow.afs.type:THREAT_MARK}") private AfsType afsType; + /** + * Whether anti-fraud system requires IPv4 IP addresses. + */ + @Value("${powerauth.webflow.afs.forceIpv4:true}") + private boolean afsForceIpv4; + @Autowired public WebFlowServicesConfiguration(SSLConfigurationService sslConfigurationService) { this.sslConfigurationService = sslConfigurationService; @@ -216,4 +222,12 @@ public boolean isAfsEnabled() { public AfsType getAfsType() { return afsType; } + + /** + * Get whether anti-fraud system requires IPv4 addresses. + * @return Whether anti-fraud system requires IPv4 addresses. + */ + public boolean getAfsForceIpv4() { + return afsForceIpv4; + } } diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/interceptor/WebSocketHandshakeInterceptor.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/interceptor/WebSocketHandshakeInterceptor.java index 77223be40..bf5d74c95 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/interceptor/WebSocketHandshakeInterceptor.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/interceptor/WebSocketHandshakeInterceptor.java @@ -17,6 +17,12 @@ */ public class WebSocketHandshakeInterceptor implements HandshakeInterceptor { + private final boolean forceIpv4; + + public WebSocketHandshakeInterceptor(boolean forceIpv4) { + this.forceIpv4 = forceIpv4; + } + @Override public boolean beforeHandshake(@NonNull ServerHttpRequest request, @NonNull ServerHttpResponse response, @NonNull WebSocketHandler wsHandler, @NonNull Map attributes) { @@ -25,9 +31,20 @@ public boolean beforeHandshake(@NonNull ServerHttpRequest request, @NonNull Serv if (request instanceof ServletServerHttpRequest) { ServletServerHttpRequest servletRequest = (ServletServerHttpRequest) request; String ipAddress = servletRequest.getServletRequest().getHeader("X-FORWARDED-FOR"); - if (ipAddress == null) { + if (forceIpv4) { + // IPv4 logic + if (ipAddress == null || !isIpv4Address(ipAddress)) { + ipAddress = servletRequest.getServletRequest().getRemoteAddr(); + if (!isIpv4Address(ipAddress)) { + // Fallback to 127.0.0.1 in case IPv4 address could not be determined + ipAddress = "127.0.0.1"; + } + } + } else if (ipAddress == null) { + // IPv4 or IPv6 logic ipAddress = servletRequest.getServletRequest().getRemoteAddr(); } + attributes.put("client_ip", ipAddress); } return true; @@ -37,4 +54,15 @@ public boolean beforeHandshake(@NonNull ServerHttpRequest request, @NonNull Serv public void afterHandshake(@NonNull ServerHttpRequest request, @NonNull ServerHttpResponse response, @NonNull WebSocketHandler wsHandler, Exception exception) { } + + /** + * Determine whether IP address is an IPv4 address. + * @param address IP address as String. + * @return Whether IP address is an IPv4 address. + */ + private boolean isIpv4Address(String address) { + // Source: https://www.oreilly.com/library/view/regular-expressions-cookbook/9781449327453/ch08s16.html + return address.matches("^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}↵\n" + + "(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$"); + } } diff --git a/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/configuration/WebSocketConfiguration.java b/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/configuration/WebSocketConfiguration.java index 345209172..051363f9b 100644 --- a/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/configuration/WebSocketConfiguration.java +++ b/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/configuration/WebSocketConfiguration.java @@ -15,7 +15,9 @@ */ package io.getlime.security.powerauth.app.webflow.configuration; +import io.getlime.security.powerauth.lib.webflow.authentication.configuration.WebFlowServicesConfiguration; import io.getlime.security.powerauth.lib.webflow.authentication.interceptor.WebSocketHandshakeInterceptor; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.simp.config.MessageBrokerRegistry; import org.springframework.stereotype.Component; import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker; @@ -33,13 +35,21 @@ public class WebSocketConfiguration implements WebSocketMessageBrokerConfigurer public static final String MESSAGE_PREFIX = "/topic"; + private final WebFlowServicesConfiguration configuration; + + @Autowired + public WebSocketConfiguration(WebFlowServicesConfiguration configuration) { + this.configuration = configuration; + } + /** * Stomp endpoint registration for Web Sockets. * @param registry Stomp endpoint registry. */ @Override public void registerStompEndpoints(StompEndpointRegistry registry) { - registry.addEndpoint("/websocket").addInterceptors(new WebSocketHandshakeInterceptor()).setAllowedOrigins("*").withSockJS(); + WebSocketHandshakeInterceptor interceptor = new WebSocketHandshakeInterceptor(configuration.getAfsForceIpv4()); + registry.addEndpoint("/websocket").addInterceptors(interceptor).setAllowedOrigins("*").withSockJS(); } /** diff --git a/powerauth-webflow/src/main/resources/application.properties b/powerauth-webflow/src/main/resources/application.properties index 2d7ce3847..9d8a9d5c6 100644 --- a/powerauth-webflow/src/main/resources/application.properties +++ b/powerauth-webflow/src/main/resources/application.properties @@ -73,6 +73,7 @@ powerauth.webflow.timeout.warning.delayMs=60000 # Anti-fraud system configuration powerauth.webflow.afs.enabled=false powerauth.webflow.afs.type=THREAT_MARK +powerauth.webflow.afs.forceIpv4=true # Disable JMX spring.jmx.enabled=false From 91d991c086a25f1fd18585e45467a37a0e56c492 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Wed, 18 Sep 2019 13:27:43 +0200 Subject: [PATCH 055/197] Update JavaDoc --- .../configuration/WebFlowServicesConfiguration.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/configuration/WebFlowServicesConfiguration.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/configuration/WebFlowServicesConfiguration.java index 4b56572fe..22afdf570 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/configuration/WebFlowServicesConfiguration.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/configuration/WebFlowServicesConfiguration.java @@ -103,7 +103,7 @@ public class WebFlowServicesConfiguration { private AfsType afsType; /** - * Whether anti-fraud system requires IPv4 IP addresses. + * Whether anti-fraud system requires IPv4 addresses. */ @Value("${powerauth.webflow.afs.forceIpv4:true}") private boolean afsForceIpv4; From ab43e8b68243695784f7f770c138727b2c3261c9 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Thu, 19 Sep 2019 15:43:53 +0200 Subject: [PATCH 056/197] Update Data Adapter model for AFS --- .../model/enumeration/AfsAction.java | 19 +- .../dataadapter/model/request/AfsRequest.java | 147 ++------------- .../model/request/AfsRequestParameters.java | 173 ++++++++++++++++++ .../model/response/AfsResponse.java | 93 ++++++++++ .../SmsAuthorizationController.java | 5 + 5 files changed, 303 insertions(+), 134 deletions(-) create mode 100644 powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/AfsRequestParameters.java create mode 100644 powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/response/AfsResponse.java diff --git a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/enumeration/AfsAction.java b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/enumeration/AfsAction.java index 0943be004..cd52588db 100644 --- a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/enumeration/AfsAction.java +++ b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/enumeration/AfsAction.java @@ -16,16 +16,21 @@ package io.getlime.security.powerauth.lib.dataadapter.model.enumeration; /** - * AFS action type. + * AFS action type enumeration. * * @author Roman Strobl, roman.strobl@wultra.com */ public enum AfsAction { /** - * Triggered anytime user performs authentication, both successful and failed. + * Triggered before the login form is created. */ - LOGIN, + LOGIN_INIT, + + /** + * Triggered when user performs authentication, both successful and failed. + */ + LOGIN_AUTH, /** * Triggered when user completes an operation or the operation is terminated for any reason. @@ -33,13 +38,13 @@ public enum AfsAction { LOGOUT, /** - * Triggered before an approval form is created. + * Triggered before the approval form is created. */ - APPROVAL_CREATE, + APPROVAL_INIT, /** - * Triggered anytime the approval form is authenticated. + * Triggered when the approval form is authorized. */ - APPROVAL_SIGN + APPROVAL_AUTH } diff --git a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/AfsRequest.java b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/AfsRequest.java index c754f8ab9..a18d1c514 100644 --- a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/AfsRequest.java +++ b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/AfsRequest.java @@ -16,14 +16,10 @@ package io.getlime.security.powerauth.lib.dataadapter.model.request; import io.getlime.security.powerauth.lib.dataadapter.model.entity.OperationContext; -import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.AfsAction; -import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.AfsType; import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.AuthInstrument; -import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.OperationTerminationReason; -import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthStepResult; import java.util.ArrayList; -import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -34,11 +30,6 @@ */ public class AfsRequest { - /** - * AFS product type. - */ - private AfsType afsType; - /** * User ID for this request, use null value before user is authenticated. */ @@ -55,29 +46,9 @@ public class AfsRequest { private OperationContext operationContext; /** - * AFS action. - */ - private AfsAction afsAction; - - /** - * Client IP address. - */ - private String clientIp; - - /** - * Index counter for this authentication step. - */ - private int stepIndex; - - /** - * Authentication step result. - */ - private AuthStepResult authStepResult; - - /** - * Reason why operation was terminated. + * Request parameters for anti-fraud system. */ - private OperationTerminationReason operationTerminationReason; + private AfsRequestParameters afsRequestParameters; /** * Authentication instruments used during this authentication step. @@ -87,7 +58,7 @@ public class AfsRequest { /** * Extra parameters sent with the request depending on AFS type, e.g. cookies for Threat Mark, logout reason, etc. */ - private final Map extras = new HashMap<>(); + private final Map extras = new LinkedHashMap<>(); /** * Default constructor. @@ -96,51 +67,21 @@ public AfsRequest() { } /** - * Constructor all details. - * @param afsType AFS product type. - * @param afsAction AFS action. + * Constructor with all details. * @param userId User ID. * @param organizationId Organization ID. * @param operationContext Operation context which provides context for creating the consent form. + * @param afsRequestParameters Request parameters for AFS. + * @param authInstruments Authentication instruments used during this authentication step. + * @param extras Extra parameters for AFS. */ - public AfsRequest(AfsType afsType, AfsAction afsAction, String userId, String organizationId, OperationContext operationContext) { - this.afsType = afsType; - this.afsAction = afsAction; + public AfsRequest(String userId, String organizationId, OperationContext operationContext, AfsRequestParameters afsRequestParameters, List authInstruments, Map extras) { this.userId = userId; this.organizationId = organizationId; this.operationContext = operationContext; - } - - /** - * Get the AFS product type. - * @return AFS product type. - */ - public AfsType getAfsType() { - return afsType; - } - - /** - * Set the AFS product type. - * @param afsType AFS product type. - */ - public void setAfsType(AfsType afsType) { - this.afsType = afsType; - } - - /** - * Get the AFS action. - * @return AFS action. - */ - public AfsAction getAfsAction() { - return afsAction; - } - - /** - * Set the AFS action. - * @param afsAction AFS action. - */ - public void setAfsAction(AfsAction afsAction) { - this.afsAction = afsAction; + this.afsRequestParameters = afsRequestParameters; + this.authInstruments.addAll(authInstruments); + this.extras.putAll(extras); } /** @@ -192,67 +133,19 @@ public void setOperationContext(OperationContext operationContext) { } /** - * Get client IP address. - * @return Client IP address. - */ - public String getClientIp() { - return clientIp; - } - - /** - * Set client IP address. - * @param clientIp IP address. - */ - public void setClientIp(String clientIp) { - this.clientIp = clientIp; - } - - /** - * Get index counter for this authentication step. - * @return Index counter for this authentication step. - */ - public int getStepIndex() { - return stepIndex; - } - - /** - * Set index counter for this authentication step. - * @param stepIndex Index counter for this authentication step. - */ - public void setStepIndex(int stepIndex) { - this.stepIndex = stepIndex; - } - - /** - * Get authentication step result. - * @return Authentication step result. - */ - public AuthStepResult getAuthStepResult() { - return authStepResult; - } - - /** - * Set authentication step result. - * @param authStepResult Authentication step result. - */ - public void setAuthStepResult(AuthStepResult authStepResult) { - this.authStepResult = authStepResult; - } - - /** - * Get reason why operation was terminated, use null for active operations. - * @return Reason why operation was terminated. + * Get request parameters for anti-fraud system. + * @return Request parameters for anti-fraud system. */ - public OperationTerminationReason getOperationTerminationReason() { - return operationTerminationReason; + public AfsRequestParameters getAfsRequestParameters() { + return afsRequestParameters; } /** - * Set reason why operation was terminated, use null for active operations. - * @param operationTerminationReason Reason why operation was terminated. + * Set request parameters for anti-fraud system. + * @param afsRequestParameters Request parameters for anti-fraud system. */ - public void setOperationTerminationReason(OperationTerminationReason operationTerminationReason) { - this.operationTerminationReason = operationTerminationReason; + public void setAfsRequestParameters(AfsRequestParameters afsRequestParameters) { + this.afsRequestParameters = afsRequestParameters; } /** diff --git a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/AfsRequestParameters.java b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/AfsRequestParameters.java new file mode 100644 index 000000000..e5f25ab3a --- /dev/null +++ b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/AfsRequestParameters.java @@ -0,0 +1,173 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.getlime.security.powerauth.lib.dataadapter.model.request; + +import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.AfsAction; +import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.AfsType; +import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.OperationTerminationReason; +import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthStepResult; + +public class AfsRequestParameters { + + /** + * AFS product type. + */ + private AfsType afsType; + + /** + * AFS action. + */ + private AfsAction afsAction; + + /** + * Client IP address. + */ + private String clientIp; + + /** + * Index counter for this authentication step. + */ + private int stepIndex; + + /** + * Authentication step result. + */ + private AuthStepResult authStepResult; + + /** + * Reason why operation was terminated. + */ + private OperationTerminationReason operationTerminationReason; + + /** + * Default constuctor. + */ + public AfsRequestParameters() { + } + + /** + * Constuctor with all details. + * @param afsType AFS product type. + * @param afsAction AFS action. + * @param clientIp Client IP address. + * @param stepIndex Index counter for this authentication step. + * @param authStepResult Authentication step result. + * @param operationTerminationReason Reason why operation was terminated. + */ + public AfsRequestParameters(AfsType afsType, AfsAction afsAction, String clientIp, int stepIndex, AuthStepResult authStepResult, OperationTerminationReason operationTerminationReason) { + this.afsType = afsType; + this.afsAction = afsAction; + this.clientIp = clientIp; + this.stepIndex = stepIndex; + this.authStepResult = authStepResult; + this.operationTerminationReason = operationTerminationReason; + } + + /** + * Get the AFS product type. + * @return AFS product type. + */ + public AfsType getAfsType() { + return afsType; + } + + /** + * Set the AFS product type. + * @param afsType AFS product type. + */ + public void setAfsType(AfsType afsType) { + this.afsType = afsType; + } + + /** + * Get the AFS action. + * @return AFS action. + */ + public AfsAction getAfsAction() { + return afsAction; + } + + /** + * Set the AFS action. + * @param afsAction AFS action. + */ + public void setAfsAction(AfsAction afsAction) { + this.afsAction = afsAction; + } + /** + * Get client IP address. + * @return Client IP address. + */ + public String getClientIp() { + return clientIp; + } + + /** + * Set client IP address. + * @param clientIp IP address. + */ + public void setClientIp(String clientIp) { + this.clientIp = clientIp; + } + + /** + * Get index counter for this authentication step. + * @return Index counter for this authentication step. + */ + public int getStepIndex() { + return stepIndex; + } + + /** + * Set index counter for this authentication step. + * @param stepIndex Index counter for this authentication step. + */ + public void setStepIndex(int stepIndex) { + this.stepIndex = stepIndex; + } + + /** + * Get authentication step result. + * @return Authentication step result. + */ + public AuthStepResult getAuthStepResult() { + return authStepResult; + } + + /** + * Set authentication step result. + * @param authStepResult Authentication step result. + */ + public void setAuthStepResult(AuthStepResult authStepResult) { + this.authStepResult = authStepResult; + } + + /** + * Get reason why operation was terminated, use null for active operations. + * @return Reason why operation was terminated. + */ + public OperationTerminationReason getOperationTerminationReason() { + return operationTerminationReason; + } + + /** + * Set reason why operation was terminated, use null for active operations. + * @param operationTerminationReason Reason why operation was terminated. + */ + public void setOperationTerminationReason(OperationTerminationReason operationTerminationReason) { + this.operationTerminationReason = operationTerminationReason; + } +} diff --git a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/response/AfsResponse.java b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/response/AfsResponse.java new file mode 100644 index 000000000..87d066153 --- /dev/null +++ b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/response/AfsResponse.java @@ -0,0 +1,93 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.getlime.security.powerauth.lib.dataadapter.model.response; + +import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.AuthInstrument; + +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +/** + * Response for an anti-fraud system call. + * + * @author Roman Strobl, roman.strobl@wultra.com + */ +public class AfsResponse { + + /** + * AFS label specifying factors to be used during this authentication step. + */ + private String afsLabel; + + /** + * Authentication instruments to be used during this authentication step. + */ + private final List authInstruments = new ArrayList<>(); + + /** + * Extra parameters sent with the response which should be persisted together with the operation. + */ + private final Map extras = new LinkedHashMap<>(); + + /** + * Default constructor. + */ + public AfsResponse() { + } + + /** + * Constructor with all details. + */ + public AfsResponse(String afsLabel, List authInstruments, Map extras) { + this.afsLabel = afsLabel; + this.authInstruments.addAll(authInstruments); + this.extras.putAll(extras); + } + + /** + * Get AFS label specifying factors to be used during this authentication step. + * @return AFS label. + */ + public String getAfsLabel() { + return afsLabel; + } + + /** + * Set AFS label specifying factors to be used during this authentication step. + * @param afsLabel AFS label. + */ + public void setAfsLabel(String afsLabel) { + this.afsLabel = afsLabel; + } + + /** + * Get authentication instruments to be used during this authentication step. + * @return Authentication instruments. + */ + public List getAuthInstruments() { + return authInstruments; + } + + /** + * Get extra parameters sent with the response which should be persisted together with the operation. + * @return Extra parameters. + */ + public Map getExtras() { + return extras; + } +} diff --git a/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java b/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java index 9c143b452..d526fc520 100644 --- a/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java +++ b/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java @@ -310,6 +310,11 @@ private void cleanHttpSession() { initResponse.setUsername(username); } if (authMethod == AuthMethod.LOGIN_SCA || authMethod == AuthMethod.APPROVAL_SCA) { + + if (configuration.isAfsEnabled()) { + // TODO + } + // Enable password for LOGIN_SCA method initResponse.setPasswordEnabled(true); } From 05085b51026409d16a88bae5fcd6ad0774cab745 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Thu, 19 Sep 2019 15:45:16 +0200 Subject: [PATCH 057/197] Update fallback for IP address detection --- .../interceptor/WebSocketHandshakeInterceptor.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/interceptor/WebSocketHandshakeInterceptor.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/interceptor/WebSocketHandshakeInterceptor.java index bf5d74c95..853c7d525 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/interceptor/WebSocketHandshakeInterceptor.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/interceptor/WebSocketHandshakeInterceptor.java @@ -36,8 +36,8 @@ public boolean beforeHandshake(@NonNull ServerHttpRequest request, @NonNull Serv if (ipAddress == null || !isIpv4Address(ipAddress)) { ipAddress = servletRequest.getServletRequest().getRemoteAddr(); if (!isIpv4Address(ipAddress)) { - // Fallback to 127.0.0.1 in case IPv4 address could not be determined - ipAddress = "127.0.0.1"; + // IP address is null in case IPv4 address could not be determined, it should not be sent to AFS + ipAddress = null; } } } else if (ipAddress == null) { From a49fc1c0782fc1c82106ba1150c7d18be793a87f Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Mon, 23 Sep 2019 16:38:05 +0200 Subject: [PATCH 058/197] AFS configuration and integration --- docs/Web-Flow-0.23.0.md | 19 ++- docs/sql/mysql/create_schema.sql | 10 +- docs/sql/mysql/drop_schema.sql | 1 + docs/sql/oracle/create_schema.sql | 10 +- docs/sql/oracle/drop_schema.sql | 7 + docs/sql/postgresql/create_schema.sql | 10 +- docs/sql/postgresql/drop_schema.sql | 1 + .../dataadapter/client/DataAdapterClient.java | 30 ++++ .../model/response/AfsResponse.java | 50 ++++-- .../model/response/AuthStepOptions.java | 77 +++++++++ .../GetOperationConfigDetailResponse.java | 17 ++ .../converter/OperationConfigConverter.java | 1 + .../model/entity/OperationConfigEntity.java | 27 ++- .../SmsAuthorizationController.java | 116 +++++++++---- .../InitSmsAuthorizationResponse.java | 17 ++ .../repository/AfsConfigRepository.java | 30 ++++ .../model/entity/AfsConfigEntity.java | 93 ++++++++++ .../service/AfsIntegrationService.java | 160 ++++++++++++++++++ 18 files changed, 627 insertions(+), 49 deletions(-) create mode 100644 powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/response/AuthStepOptions.java create mode 100644 powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/repository/AfsConfigRepository.java create mode 100644 powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/repository/model/entity/AfsConfigEntity.java create mode 100644 powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AfsIntegrationService.java diff --git a/docs/Web-Flow-0.23.0.md b/docs/Web-Flow-0.23.0.md index bc3e641f6..825b5980a 100644 --- a/docs/Web-Flow-0.23.0.md +++ b/docs/Web-Flow-0.23.0.md @@ -6,12 +6,14 @@ Following database changes were introduced in version `0.23.0`: -- We added `afs_enabled` column to table `ns_operation_config` -- We added `operation_hash` and `websocket_session_id` columns to table `wf_operation_session` +- Added `afs_enabled` and `afs_config_id` columns to table `ns_operation_config` +- Added `operation_hash` and `websocket_session_id` columns to table `wf_operation_session` +- New table `wf_afs_config` for configuration of anti-fraud system DDL update script for Oracle: ```sql ALTER TABLE ns_operation_config ADD afs_enabled NUMBER(1) DEFAULT 0 NOT NULL; +ALTER TABLE ns_operation_config ADD afs_config_id VARCHAR(256); ALTER TABLE wf_operation_session ADD operation_hash VARCHAR(256); ALTER TABLE wf_operation_session ADD websocket_session_id VARCHAR(32); @@ -19,11 +21,18 @@ ALTER TABLE wf_operation_session ADD client_ip VARCHAR(32); CREATE INDEX wf_operation_hash ON wf_operation_session (operation_hash); CREATE INDEX wf_websocket_session ON wf_operation_session (websocket_session_id); + +CREATE TABLE wf_afs_config ( + config_id VARCHAR(256) PRIMARY KEY NOT NULL, + js_snippet VARCHAR(256) NOT NULL, + parameters CLOB +); ``` DDL update script for MySQL: ```sql ALTER TABLE `ns_operation_config` ADD `afs_enabled` BOOLEAN NOT NULL DEFAULT FALSE; +ALTER TABLE `ns_operation_config` ADD `afs_config_id` VARCHAR(256); ALTER TABLE `wf_operation_session` ADD `operation_hash` VARCHAR(256), ALTER TABLE `wf_operation_session` ADD `websocket_session_id` VARCHAR(32), @@ -31,4 +40,10 @@ ALTER TABLE `wf_operation_session` ADD `client_ip` VARCHAR(32), CREATE INDEX wf_operation_hash ON wf_operation_session (operation_hash); CREATE INDEX wf_websocket_session ON wf_operation_session (websocket_session_id); + +CREATE TABLE wf_afs_config ( + config_id VARCHAR(256) PRIMARY KEY NOT NULL, + js_snippet VARCHAR(256) NOT NULL, + parameters TEXT +) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` diff --git a/docs/sql/mysql/create_schema.sql b/docs/sql/mysql/create_schema.sql index e9ec96c61..cccbd4c10 100644 --- a/docs/sql/mysql/create_schema.sql +++ b/docs/sql/mysql/create_schema.sql @@ -90,7 +90,8 @@ CREATE TABLE ns_operation_config ( template_version CHAR NOT NULL, template_id INTEGER NOT NULL, mobile_token_mode VARCHAR(256) NOT NULL, - afs_enabled BOOLEAN NOT NULL DEFAULT FALSE + afs_enabled BOOLEAN NOT NULL DEFAULT FALSE, + afs_config_id VARCHAR(256) ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- Table ns_organization stores definitions of organizations related to the operations. @@ -167,6 +168,13 @@ CREATE TABLE wf_operation_session ( timestamp_created TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; +-- Table wf_afs_config is used to configure anti-fraud system parameters. +CREATE TABLE wf_afs_config ( + config_id VARCHAR(256) PRIMARY KEY NOT NULL, + js_snippet VARCHAR(256) NOT NULL, + parameters TEXT +) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + -- Table da_sms_authorization stores data for SMS OTP authorization. CREATE TABLE da_sms_authorization ( message_id VARCHAR(256) PRIMARY KEY NOT NULL, diff --git a/docs/sql/mysql/drop_schema.sql b/docs/sql/mysql/drop_schema.sql index db38be86b..fce990a93 100644 --- a/docs/sql/mysql/drop_schema.sql +++ b/docs/sql/mysql/drop_schema.sql @@ -1,4 +1,5 @@ DROP TABLE IF EXISTS da_sms_authorization; +DROP TABLE IF EXISTS wf_afs_config; DROP TABLE IF EXISTS wf_operation_session; DROP TABLE IF EXISTS ns_step_definition; DROP TABLE IF EXISTS ns_operation_history; diff --git a/docs/sql/oracle/create_schema.sql b/docs/sql/oracle/create_schema.sql index 535cd46e9..17e937d2f 100644 --- a/docs/sql/oracle/create_schema.sql +++ b/docs/sql/oracle/create_schema.sql @@ -96,7 +96,8 @@ CREATE TABLE ns_operation_config ( template_version VARCHAR(1) NOT NULL, template_id INTEGER NOT NULL, mobile_token_mode VARCHAR(256) NOT NULL, - afs_enabled NUMBER(1) DEFAULT 0 NOT NULL + afs_enabled NUMBER(1) DEFAULT 0 NOT NULL, + afs_config_id VARCHAR(256) ); -- Table ns_organization stores definitions of organizations related to the operations. @@ -174,6 +175,13 @@ CREATE TABLE wf_operation_session ( timestamp_created TIMESTAMP ); +-- Table wf_afs_config is used to configure anti-fraud system parameters. +CREATE TABLE wf_afs_config ( + config_id VARCHAR(256) PRIMARY KEY NOT NULL, + js_snippet VARCHAR(256) NOT NULL, + parameters CLOB +); + -- Table da_sms_authorization stores data for SMS OTP authorization. CREATE TABLE da_sms_authorization ( message_id VARCHAR(256) PRIMARY KEY NOT NULL, diff --git a/docs/sql/oracle/drop_schema.sql b/docs/sql/oracle/drop_schema.sql index dc6b1c926..a92336212 100644 --- a/docs/sql/oracle/drop_schema.sql +++ b/docs/sql/oracle/drop_schema.sql @@ -5,6 +5,13 @@ EXCEPTION END; / +BEGIN +EXECUTE IMMEDIATE 'DROP TABLE wf_afs_config'; +EXCEPTION +WHEN OTHERS THEN NULL; +END; +/ + BEGIN EXECUTE IMMEDIATE 'DROP TABLE wf_operation_session'; EXCEPTION diff --git a/docs/sql/postgresql/create_schema.sql b/docs/sql/postgresql/create_schema.sql index cf857b947..2ee43308b 100644 --- a/docs/sql/postgresql/create_schema.sql +++ b/docs/sql/postgresql/create_schema.sql @@ -96,7 +96,8 @@ CREATE TABLE ns_operation_config ( template_version VARCHAR(1) NOT NULL, template_id INTEGER NOT NULL, mobile_token_mode VARCHAR(256) NOT NULL, - afs_enabled BOOLEAN DEFAULT FALSE NOT NULL + afs_enabled BOOLEAN DEFAULT FALSE NOT NULL, + afs_config_id VARCHAR(256) ); -- Table ns_organization stores definitions of organizations related to the operations. @@ -174,6 +175,13 @@ CREATE TABLE wf_operation_session ( timestamp_created TIMESTAMP ); +-- Table wf_afs_config is used to configure anti-fraud system parameters. +CREATE TABLE wf_afs_config ( + config_id VARCHAR(256) PRIMARY KEY NOT NULL, + js_snippet VARCHAR(256) NOT NULL, + parameters TEXT +) + -- Table da_sms_authorization stores data for SMS OTP authorization. CREATE TABLE da_sms_authorization ( message_id VARCHAR(256) PRIMARY KEY NOT NULL, diff --git a/docs/sql/postgresql/drop_schema.sql b/docs/sql/postgresql/drop_schema.sql index c9a3793ef..c7d4426c4 100644 --- a/docs/sql/postgresql/drop_schema.sql +++ b/docs/sql/postgresql/drop_schema.sql @@ -1,5 +1,6 @@ DROP TABLE IF EXISTS da_sms_authorization; DROP TABLE IF EXISTS wf_operation_session; +DROP TABLE IF EXISTS wf_afs_config; DROP TABLE IF EXISTS ns_step_definition; DROP TABLE IF EXISTS ns_operation_history; DROP TABLE IF EXISTS ns_operation; diff --git a/powerauth-data-adapter-client/src/main/java/io/getlime/security/powerauth/lib/dataadapter/client/DataAdapterClient.java b/powerauth-data-adapter-client/src/main/java/io/getlime/security/powerauth/lib/dataadapter/client/DataAdapterClient.java index 82912d733..f4c84d35d 100644 --- a/powerauth-data-adapter-client/src/main/java/io/getlime/security/powerauth/lib/dataadapter/client/DataAdapterClient.java +++ b/powerauth-data-adapter-client/src/main/java/io/getlime/security/powerauth/lib/dataadapter/client/DataAdapterClient.java @@ -23,6 +23,7 @@ import io.getlime.core.rest.model.base.request.ObjectRequest; import io.getlime.core.rest.model.base.response.ObjectResponse; import io.getlime.security.powerauth.lib.dataadapter.model.entity.*; +import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.AuthInstrument; import io.getlime.security.powerauth.lib.dataadapter.model.request.*; import io.getlime.security.powerauth.lib.dataadapter.model.response.*; import org.springframework.core.ParameterizedTypeReference; @@ -40,6 +41,7 @@ import java.io.IOException; import java.util.ArrayList; import java.util.List; +import java.util.Map; /** * Data Adapter Client provides methods for communication with the Data Adapter. @@ -439,6 +441,34 @@ public ObjectResponse saveConsentForm(String userId, St } } + /** + * Execute an anti-fraud system action with information about current step and retrieve response which can override + * authentication instruments used in current authentication step. + * @param userId User ID. + * @param organizationId Organization ID. + * @param operationContext Operation context. + * @param afsRequestParameters Request parameters for AFS. + * @param authInstruments Authentication instruments used during this authentication step. + * @param extras Extra parameters for AFS. + * @return Response with indication whether consent form was successfully saved. + * @throws DataAdapterClientErrorException Thrown when client request fails. + */ + public ObjectResponse executeAfsAction(String userId, String organizationId, OperationContext operationContext, AfsRequestParameters afsRequestParameters, List authInstruments, Map extras) throws DataAdapterClientErrorException { + try { + AfsRequest request = new AfsRequest(userId, organizationId, operationContext, afsRequestParameters, authInstruments, extras); + HttpEntity> entity = new HttpEntity<>(new ObjectRequest<>(request)); + ResponseEntity> response = restTemplate.exchange( + serviceUrl + "/api/afs/action", HttpMethod.POST, entity, + new ParameterizedTypeReference>() { + }); + return new ObjectResponse<>(response.getBody().getResponseObject()); + } catch (HttpStatusCodeException ex) { + throw httpStatusException(ex); + } catch (ResourceAccessException ex) { // Data Adapter service is down + throw resourceAccessException(ex); + } + } + /** * Create new DataAdapterClientErrorException from ResourceAccessException. * @param ex Exception used when a resource access error occurs. diff --git a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/response/AfsResponse.java b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/response/AfsResponse.java index 87d066153..4404a2dee 100644 --- a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/response/AfsResponse.java +++ b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/response/AfsResponse.java @@ -15,11 +15,7 @@ */ package io.getlime.security.powerauth.lib.dataadapter.model.response; -import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.AuthInstrument; - -import java.util.ArrayList; import java.util.LinkedHashMap; -import java.util.List; import java.util.Map; /** @@ -29,15 +25,20 @@ */ public class AfsResponse { + /** + * Whether AFS response should be applied in current authentication step. + */ + private boolean applyAfsResponse = false; + /** * AFS label specifying factors to be used during this authentication step. */ private String afsLabel; /** - * Authentication instruments to be used during this authentication step. + * Configuration of authentication options available for the user. */ - private final List authInstruments = new ArrayList<>(); + private AuthStepOptions authStepOptions; /** * Extra parameters sent with the response which should be persisted together with the operation. @@ -53,12 +54,29 @@ public AfsResponse() { /** * Constructor with all details. */ - public AfsResponse(String afsLabel, List authInstruments, Map extras) { + public AfsResponse(boolean applyAfsLabel, String afsLabel, AuthStepOptions authStepOptions, Map extras) { + this.applyAfsResponse = applyAfsLabel; this.afsLabel = afsLabel; - this.authInstruments.addAll(authInstruments); + this.authStepOptions = authStepOptions; this.extras.putAll(extras); } + /** + * Get whether AFS response should be applied in current authentication step. + * @return Whether AFS response should be applied in current authentication step. + */ + public boolean getApplyAfsResponse() { + return applyAfsResponse; + } + + /** + * Set whether AFS response should be applied in current authentication step. + * @param applyAfsResponse Whether AFS response should be applied in current authentication step. + */ + public void setApplyAfsResponse(boolean applyAfsResponse) { + this.applyAfsResponse = applyAfsResponse; + } + /** * Get AFS label specifying factors to be used during this authentication step. * @return AFS label. @@ -76,11 +94,19 @@ public void setAfsLabel(String afsLabel) { } /** - * Get authentication instruments to be used during this authentication step. - * @return Authentication instruments. + * Get authentication step options available for the user. + * @return Authentication step options available for the user. + */ + public AuthStepOptions getAuthStepOptions() { + return authStepOptions; + } + + /** + * Set authentication step options available for the user. + * @param authStepOptions Authentication step options available for the user. */ - public List getAuthInstruments() { - return authInstruments; + public void setAuthStepOptions(AuthStepOptions authStepOptions) { + this.authStepOptions = authStepOptions; } /** diff --git a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/response/AuthStepOptions.java b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/response/AuthStepOptions.java new file mode 100644 index 000000000..a3d1d637a --- /dev/null +++ b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/response/AuthStepOptions.java @@ -0,0 +1,77 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.getlime.security.powerauth.lib.dataadapter.model.response; + +/** + * Configuration of authentication options available for the user. The class can currently configure SMS authentication + * with optional password. In future an extension of this class with Mobile Token configuration is planned. + * + * @author Roman Strobl, roman.strobl@wultra.com + */ +public class AuthStepOptions { + + // By default require 2FA for SMS authentication method + private boolean smsOtpRequired = true; + private boolean passwordRequired = true; + + /** + * Default constructor. + */ + public AuthStepOptions() { + } + + /** + * Constructor with configuration options. + * @param smsOtpRequired Whether SMS authorization is required. + * @param passwordRequired Whether password authentication is required. + */ + public AuthStepOptions(boolean smsOtpRequired, boolean passwordRequired) { + this.smsOtpRequired = smsOtpRequired; + this.passwordRequired = passwordRequired; + } + + /** + * Get whether SMS authorization is required. + * @return Whether SMS authorization is required. + */ + public boolean isSmsOtpRequired() { + return smsOtpRequired; + } + + /** + * Set whether SMS authorization is required. + * @param smsOtpRequired Whether SMS authorization is required. + */ + public void setSmsOtpRequired(boolean smsOtpRequired) { + this.smsOtpRequired = smsOtpRequired; + } + + /** + * Get whether password authentication is required. + * @return Whether password authentication is required. + */ + public boolean isPasswordRequired() { + return passwordRequired; + } + + /** + * Set whether password authentication is required. + * @param passwordRequired Whether password authentication is required. + */ + public void setPasswordRequired(boolean passwordRequired) { + this.passwordRequired = passwordRequired; + } +} diff --git a/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/response/GetOperationConfigDetailResponse.java b/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/response/GetOperationConfigDetailResponse.java index f27a821fe..be9e127ca 100644 --- a/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/response/GetOperationConfigDetailResponse.java +++ b/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/response/GetOperationConfigDetailResponse.java @@ -27,6 +27,7 @@ public class GetOperationConfigDetailResponse { private Integer templateId; private String mobileTokenMode; private boolean afsEnabled; + private String afsConfigId; /** * Get operation name. @@ -107,4 +108,20 @@ public boolean isAfsEnabled() { public void setAfsEnabled(boolean afsEnabled) { this.afsEnabled = afsEnabled; } + + /** + * Get AFS configuration ID. + * @return AFS configuration ID. + */ + public String getAfsConfigId() { + return afsConfigId; + } + + /** + * Set AFS configuration ID. + * @param afsConfigId AFS configuration ID. + */ + public void setAfsConfigId(String afsConfigId) { + this.afsConfigId = afsConfigId; + } } diff --git a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/converter/OperationConfigConverter.java b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/converter/OperationConfigConverter.java index da0b2ffe3..bbc608aac 100644 --- a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/converter/OperationConfigConverter.java +++ b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/converter/OperationConfigConverter.java @@ -37,6 +37,7 @@ public GetOperationConfigDetailResponse fromOperationConfigEntity(OperationConfi response.setTemplateId(operationConfig.getTemplateId()); response.setMobileTokenMode(operationConfig.getMobileTokenMode()); response.setAfsEnabled(operationConfig.isAfsEnabled()); + response.setAfsConfigId(operationConfig.getAfsConfigId()); return response; } } diff --git a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/repository/model/entity/OperationConfigEntity.java b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/repository/model/entity/OperationConfigEntity.java index 427144795..e7d457b98 100644 --- a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/repository/model/entity/OperationConfigEntity.java +++ b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/repository/model/entity/OperationConfigEntity.java @@ -49,6 +49,9 @@ public class OperationConfigEntity implements Serializable { @Column(name = "afs_enabled") private boolean afsEnabled; + @Column(name = "afs_config_id") + private String afsConfigId; + /** * Get operation name. * @return Operation name. @@ -129,19 +132,37 @@ public void setAfsEnabled(boolean afsEnabled) { this.afsEnabled = afsEnabled; } + /** + * Get AFS configuration ID. + * @return AFS configuration ID. + */ + public String getAfsConfigId() { + return afsConfigId; + } + + /** + * Set AFS configuration ID. + * @param afsConfigId AFS configuration ID. + */ + public void setAfsConfigId(String afsConfigId) { + this.afsConfigId = afsConfigId; + } + @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; OperationConfigEntity that = (OperationConfigEntity) o; - return Objects.equals(operationName, that.operationName) && + return afsEnabled == that.afsEnabled && + operationName.equals(that.operationName) && Objects.equals(templateVersion, that.templateVersion) && Objects.equals(templateId, that.templateId) && - Objects.equals(mobileTokenMode, that.mobileTokenMode); + Objects.equals(mobileTokenMode, that.mobileTokenMode) && + Objects.equals(afsConfigId, that.afsConfigId); } @Override public int hashCode() { - return Objects.hash(operationName, templateVersion, templateId, mobileTokenMode); + return Objects.hash(operationName, templateVersion, templateId, mobileTokenMode, afsEnabled, afsConfigId); } } diff --git a/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java b/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java index d526fc520..66d1e1d96 100644 --- a/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java +++ b/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java @@ -21,10 +21,8 @@ import io.getlime.security.powerauth.lib.dataadapter.model.entity.AuthenticationContext; import io.getlime.security.powerauth.lib.dataadapter.model.entity.FormData; import io.getlime.security.powerauth.lib.dataadapter.model.entity.OperationContext; -import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.PasswordProtectionType; -import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.SmsAuthorizationResult; -import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.SmsDeliveryResult; -import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.UserAuthenticationResult; +import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.*; +import io.getlime.security.powerauth.lib.dataadapter.model.response.AfsResponse; import io.getlime.security.powerauth.lib.dataadapter.model.response.CreateSmsAuthorizationResponse; import io.getlime.security.powerauth.lib.dataadapter.model.response.VerifySmsAndPasswordResponse; import io.getlime.security.powerauth.lib.dataadapter.model.response.VerifySmsAuthorizationResponse; @@ -47,6 +45,7 @@ import io.getlime.security.powerauth.lib.webflow.authentication.model.AuthenticationResult; import io.getlime.security.powerauth.lib.webflow.authentication.model.HttpSessionAttributeNames; import io.getlime.security.powerauth.lib.webflow.authentication.model.converter.FormDataConverter; +import io.getlime.security.powerauth.lib.webflow.authentication.service.AfsIntegrationService; import io.getlime.security.powerauth.lib.webflow.authentication.sms.model.request.SmsAuthorizationRequest; import io.getlime.security.powerauth.lib.webflow.authentication.sms.model.response.InitSmsAuthorizationResponse; import io.getlime.security.powerauth.lib.webflow.authentication.sms.model.response.ResendSmsAuthorizationResponse; @@ -62,6 +61,7 @@ import org.springframework.web.bind.annotation.ResponseBody; import javax.servlet.http.HttpSession; +import java.util.ArrayList; import java.util.List; /** @@ -77,18 +77,21 @@ public class SmsAuthorizationController extends AuthMethodController authInstruments = new ArrayList<>(); + if (authMethod == AuthMethod.LOGIN_SCA || authMethod == AuthMethod.APPROVAL_SCA) { + if (authMethod == AuthMethod.LOGIN_SCA) { + afsAction = AfsAction.LOGIN_AUTH; + } else { + afsAction = AfsAction.APPROVAL_AUTH; + } + if (request.getPassword() != null) { + authInstruments.add(AuthInstrument.PASSWORD); + } + if (request.getAuthCode() != null) { + authInstruments.add(AuthInstrument.SMS_KEY); + } + } else { + afsAction = null; + } + try { return buildAuthorizationResponse(request, new AuthResponseProvider() { @Override public SmsAuthorizationResponse doneAuthentication(String userId) { + if (afsAction != null) { + afsIntegrationService.executeAuthAction(operation, afsAction, authInstruments, 1, AuthStepResult.CONFIRMED); + } authenticateCurrentBrowserSession(); final SmsAuthorizationResponse response = new SmsAuthorizationResponse(); response.setResult(AuthStepResult.CONFIRMED); @@ -414,6 +466,9 @@ public SmsAuthorizationResponse doneAuthentication(String userId) { @Override public SmsAuthorizationResponse failedAuthentication(String userId, String failedReason) { + if (afsAction != null) { + afsIntegrationService.executeAuthAction(operation, afsAction, authInstruments, 1, AuthStepResult.AUTH_FAILED); + } clearCurrentBrowserSession(); final SmsAuthorizationResponse response = new SmsAuthorizationResponse(); response.setResult(AuthStepResult.AUTH_FAILED); @@ -424,6 +479,9 @@ public SmsAuthorizationResponse failedAuthentication(String userId, String faile @Override public SmsAuthorizationResponse continueAuthentication(String operationId, String userId, List steps) { + if (afsAction != null) { + afsIntegrationService.executeAuthAction(operation, afsAction, authInstruments, 1, AuthStepResult.CONFIRMED); + } final SmsAuthorizationResponse response = new SmsAuthorizationResponse(); response.setResult(AuthStepResult.CONFIRMED); response.setMessage("authentication.success"); diff --git a/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/model/response/InitSmsAuthorizationResponse.java b/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/model/response/InitSmsAuthorizationResponse.java index 9384b2e98..858103676 100644 --- a/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/model/response/InitSmsAuthorizationResponse.java +++ b/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/model/response/InitSmsAuthorizationResponse.java @@ -26,6 +26,7 @@ public class InitSmsAuthorizationResponse extends AuthStepResponse { private String username; private boolean passwordEnabled; + private boolean smsOtpEnabled; private int resendDelay; /** @@ -60,6 +61,22 @@ public void setPasswordEnabled(boolean passwordEnabled) { this.passwordEnabled = passwordEnabled; } + /** + * Get whether authorization using SMS code is enabled. + * @return Whether authorization using SMS code is enabled. + */ + public boolean isSmsOtpEnabled() { + return smsOtpEnabled; + } + + /** + * Set whether authorization using SMS code is enabled. + * @param smsOtpEnabled Whether authorization using SMS code is enabled. + */ + public void setSmsOtpEnabled(boolean smsOtpEnabled) { + this.smsOtpEnabled = smsOtpEnabled; + } + /** * Get delay for resending SMS in milliseconds. * @return Delay for resending SMS in milliseconds. diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/repository/AfsConfigRepository.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/repository/AfsConfigRepository.java new file mode 100644 index 000000000..8c60c0527 --- /dev/null +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/repository/AfsConfigRepository.java @@ -0,0 +1,30 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.getlime.security.powerauth.lib.webflow.authentication.repository; + +import io.getlime.security.powerauth.lib.webflow.authentication.repository.model.entity.AfsConfigEntity; +import org.springframework.data.repository.CrudRepository; +import org.springframework.stereotype.Component; + +/** + * Crud repository for anti-fraud system configuration. + * + * @author Roman Strobl, roman.strobl@wultra.com + */ +@Component +public interface AfsConfigRepository extends CrudRepository { + +} diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/repository/model/entity/AfsConfigEntity.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/repository/model/entity/AfsConfigEntity.java new file mode 100644 index 000000000..e1dba2d54 --- /dev/null +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/repository/model/entity/AfsConfigEntity.java @@ -0,0 +1,93 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.getlime.security.powerauth.lib.webflow.authentication.repository.model.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; +import java.io.Serializable; +import java.util.Objects; + +/** + * Entity which stores configuration of anti-fraud system. + * + * @author Roman Strobl, roman.strobl@wultra.com + */ +@Entity +@Table(name = "wf_afs_config") +public class AfsConfigEntity implements Serializable { + + private static final long serialVersionUID = -3077689235187445743L; + + @Id + @Column(name = "afs_config_id") + private String afsConfigId; + + @Column(name = "js_snippet") + private String jsSnippet; + + @Column(name = "parameters") + private String parameters; + + public AfsConfigEntity() { + } + + public AfsConfigEntity(String afsConfigId, String jsSnippet, String parameters) { + this.afsConfigId = afsConfigId; + this.jsSnippet = jsSnippet; + this.parameters = parameters; + } + + public String getAfsConfigId() { + return afsConfigId; + } + + public void setAfsConfigId(String afsConfigId) { + this.afsConfigId = afsConfigId; + } + + public String getJsSnippet() { + return jsSnippet; + } + + public void setJsSnippet(String jsSnippet) { + this.jsSnippet = jsSnippet; + } + + public String getParameters() { + return parameters; + } + + public void setParameters(String parameters) { + this.parameters = parameters; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + AfsConfigEntity that = (AfsConfigEntity) o; + return afsConfigId.equals(that.afsConfigId) && + jsSnippet.equals(that.jsSnippet) && + Objects.equals(parameters, that.parameters); + } + + @Override + public int hashCode() { + return Objects.hash(afsConfigId, jsSnippet, parameters); + } +} diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AfsIntegrationService.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AfsIntegrationService.java new file mode 100644 index 000000000..20a0c3d37 --- /dev/null +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AfsIntegrationService.java @@ -0,0 +1,160 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.getlime.security.powerauth.lib.webflow.authentication.service; + +import io.getlime.core.rest.model.base.response.ObjectResponse; +import io.getlime.security.powerauth.lib.dataadapter.client.DataAdapterClient; +import io.getlime.security.powerauth.lib.dataadapter.client.DataAdapterClientErrorException; +import io.getlime.security.powerauth.lib.dataadapter.model.entity.FormData; +import io.getlime.security.powerauth.lib.dataadapter.model.entity.OperationContext; +import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.AfsAction; +import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.AfsType; +import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.AuthInstrument; +import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.OperationTerminationReason; +import io.getlime.security.powerauth.lib.dataadapter.model.request.AfsRequestParameters; +import io.getlime.security.powerauth.lib.dataadapter.model.response.AfsResponse; +import io.getlime.security.powerauth.lib.nextstep.client.NextStepClient; +import io.getlime.security.powerauth.lib.nextstep.model.entity.ApplicationContext; +import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthStepResult; +import io.getlime.security.powerauth.lib.nextstep.model.exception.NextStepServiceException; +import io.getlime.security.powerauth.lib.nextstep.model.response.GetOperationConfigDetailResponse; +import io.getlime.security.powerauth.lib.nextstep.model.response.GetOperationDetailResponse; +import io.getlime.security.powerauth.lib.webflow.authentication.configuration.WebFlowServicesConfiguration; +import io.getlime.security.powerauth.lib.webflow.authentication.model.converter.FormDataConverter; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +/** + * Service for integration of anti-fraud system. + * + * @author Roman Strobl, roman.strobl@wultra.com + */ +@Service +public class AfsIntegrationService { + + private static final Logger logger = LoggerFactory.getLogger(AfsIntegrationService.class); + + private final WebFlowServicesConfiguration configuration; + private final NextStepClient nextStepClient; + private final DataAdapterClient dataAdapterClient; + private final OperationSessionService operationSessionService; + + /** + * Service constructor. + * @param configuration Web Flow configuration. + * @param nextStepClient Next Step client. + * @param dataAdapterClient Data Adapter client. + * @param operationSessionService Operation session service. + */ + @Autowired + public AfsIntegrationService(WebFlowServicesConfiguration configuration, NextStepClient nextStepClient, DataAdapterClient dataAdapterClient, OperationSessionService operationSessionService) { + this.configuration = configuration; + this.nextStepClient = nextStepClient; + this.dataAdapterClient = dataAdapterClient; + this.operationSessionService = operationSessionService; + } + + + /** + * Execute an anti-fraud system action. This method variant is used during step initialization. + * The response from AFS is applied in Web Flow. + * + * @param operation Current operation. + * @param afsAction AFS action to be executed. + * @return Response from anti-fraud system. + */ + public AfsResponse executeInitAction(GetOperationDetailResponse operation, AfsAction afsAction) { + return executeAfsAction(operation, afsAction, Collections.emptyList(), 1, null, null); + } + + /** + * Execute an anti-fraud system action. This method variant is used during step authentication. + * The response from AFS has no impact on Web Flow. + * + * @param operation Current operation. + * @param afsAction AFS action to be executed. + * @param authInstruments Authentication instruments used in this step. + * @param stepIndex Index in current authentication step. + * @param authStepResult Authentication step result. + */ + public void executeAuthAction(GetOperationDetailResponse operation, AfsAction afsAction, List authInstruments, int stepIndex, AuthStepResult authStepResult) { + executeAfsAction(operation, afsAction, authInstruments, stepIndex, authStepResult, null); + } + + /** + * Execute an anti-fraud system action. This method variant is used during logout. + * The response from AFS has no impact on Web Flow. + * + * @param operation Current operation. + * @param operationTerminationReason Reason why operation was terminated. + */ + public void executeLogoutAction(GetOperationDetailResponse operation, OperationTerminationReason operationTerminationReason) { + executeAfsAction(operation, AfsAction.LOGOUT, Collections.emptyList(), 1, null, operationTerminationReason); + } + + /** + * Execute a generic anti-fraud system action and return response. + * + * @param operation Current operation. + * @param afsAction AFS action to be executed. + * @param authInstruments Authentication instruments used in this step. + * @param stepIndex Index in current authentication step. + * @param authStepResult Authentication step result. + * @param operationTerminationReason Reason why operation was terminated. + * @return Response from anti-fraud system. + */ + private AfsResponse executeAfsAction(GetOperationDetailResponse operation, AfsAction afsAction, List authInstruments, int stepIndex, AuthStepResult authStepResult, OperationTerminationReason operationTerminationReason) { + if (configuration.isAfsEnabled()) { + try { + ObjectResponse objectResponse = nextStepClient.getOperationConfigDetail(operation.getOperationName()); + GetOperationConfigDetailResponse config = objectResponse.getResponseObject(); + if (config.isAfsEnabled()) { + // Prepare all AFS request parameters + String userId = operation.getUserId(); + String organizationId = operation.getOrganizationId(); + FormData formData = new FormDataConverter().fromOperationFormData(operation.getFormData()); + ApplicationContext applicationContext = operation.getApplicationContext(); + OperationContext operationContext = new OperationContext(operation.getOperationId(), operation.getOperationName(), operation.getOperationData(), formData, applicationContext); + AfsType afsType = configuration.getAfsType(); + String clientIp = operationSessionService.getOperationToSessionMapping(operation.getOperationId()).getClientIp(); + // TODO - extract TM cookies and send their values + Map extras = new LinkedHashMap<>(); + // AuthStepResult is null due to init action + AfsRequestParameters afsRequestParameters = new AfsRequestParameters(afsType, afsAction, clientIp, stepIndex, authStepResult, operationTerminationReason); + ObjectResponse afsObjectResponse = dataAdapterClient.executeAfsAction(userId, organizationId, operationContext, afsRequestParameters, Collections.emptyList(), extras); + // TODO - save AFS response in Next Step + return afsObjectResponse.getResponseObject(); + } + + // AFS errors are not critical, Web Flow falls back to 2FA + } catch (NextStepServiceException e) { + // Next step errors are critical + logger.error("Error when obtaining operation configuration.", e); + } catch (DataAdapterClientErrorException e) { + logger.error("Error when calling anti-fraud service.", e); + } + } + return new AfsResponse(); + } + +} From 0d4e1e836633e23f4005ffda89cf450aed218d79 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Mon, 23 Sep 2019 16:50:56 +0200 Subject: [PATCH 059/197] Update logic for IP address detection --- .../WebSocketHandshakeInterceptor.java | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/interceptor/WebSocketHandshakeInterceptor.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/interceptor/WebSocketHandshakeInterceptor.java index 853c7d525..f30f2ccdc 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/interceptor/WebSocketHandshakeInterceptor.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/interceptor/WebSocketHandshakeInterceptor.java @@ -1,5 +1,8 @@ package io.getlime.security.powerauth.lib.webflow.authentication.interceptor; +import com.google.common.net.InetAddresses; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.http.server.ServerHttpRequest; import org.springframework.http.server.ServerHttpResponse; import org.springframework.http.server.ServletServerHttpRequest; @@ -7,6 +10,8 @@ import org.springframework.web.socket.WebSocketHandler; import org.springframework.web.socket.server.HandshakeInterceptor; +import javax.servlet.http.HttpServletRequest; +import java.net.Inet4Address; import java.util.Map; /** @@ -17,6 +22,7 @@ */ public class WebSocketHandshakeInterceptor implements HandshakeInterceptor { + private static final Logger logger = LoggerFactory.getLogger(WebSocketHandshakeInterceptor.class); private final boolean forceIpv4; public WebSocketHandshakeInterceptor(boolean forceIpv4) { @@ -29,20 +35,21 @@ public boolean beforeHandshake(@NonNull ServerHttpRequest request, @NonNull Serv // Set client_ip attribute in WebSocket session, either from the X-FORWARDED-FOR HTTP header, if it is not // available, use servlet request remote IP address. if (request instanceof ServletServerHttpRequest) { - ServletServerHttpRequest servletRequest = (ServletServerHttpRequest) request; - String ipAddress = servletRequest.getServletRequest().getHeader("X-FORWARDED-FOR"); + HttpServletRequest servletRequest = ((ServletServerHttpRequest) request).getServletRequest(); + String ipAddress = servletRequest.getHeader("X-FORWARDED-FOR"); if (forceIpv4) { // IPv4 logic if (ipAddress == null || !isIpv4Address(ipAddress)) { - ipAddress = servletRequest.getServletRequest().getRemoteAddr(); + ipAddress = servletRequest.getRemoteAddr(); if (!isIpv4Address(ipAddress)) { // IP address is null in case IPv4 address could not be determined, it should not be sent to AFS + logger.warn("IPv4 address could not be detected."); ipAddress = null; } } } else if (ipAddress == null) { // IPv4 or IPv6 logic - ipAddress = servletRequest.getServletRequest().getRemoteAddr(); + ipAddress = servletRequest.getRemoteAddr(); } attributes.put("client_ip", ipAddress); @@ -61,8 +68,10 @@ public void afterHandshake(@NonNull ServerHttpRequest request, @NonNull ServerHt * @return Whether IP address is an IPv4 address. */ private boolean isIpv4Address(String address) { - // Source: https://www.oreilly.com/library/view/regular-expressions-cookbook/9781449327453/ch08s16.html - return address.matches("^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}↵\n" + - "(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$"); + try { + return InetAddresses.forString(address) instanceof Inet4Address; + } catch (Exception e) { + return false; + } } } From 06e6e88d1c11cada257297e81e097f4446cb03be Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Tue, 24 Sep 2019 12:13:14 +0200 Subject: [PATCH 060/197] Integrate JavaScript snippet for AFS --- docs/Web-Flow-0.23.0.md | 4 +- docs/sql/mysql/create_schema.sql | 2 +- docs/sql/oracle/create_schema.sql | 2 +- docs/sql/postgresql/create_schema.sql | 2 +- .../dataadapter/client/DataAdapterClient.java | 2 +- .../dataadapter/model/request/AfsRequest.java | 6 +- .../model/response/AfsResponse.java | 8 +- .../SmsAuthorizationController.java | 42 +++++++---- .../WebSocketHandshakeInterceptor.java | 25 +++++-- .../model/entity/AfsConfigEntity.java | 31 +++++--- .../service/AfsIntegrationService.java | 75 ++++++++++++++----- .../configuration/SecurityConfiguration.java | 2 +- .../WebFlowServerConfiguration.java | 14 ++++ .../webflow/controller/HomeController.java | 34 ++++++++- .../src/main/resources/templates/index.html | 4 + 15 files changed, 185 insertions(+), 68 deletions(-) diff --git a/docs/Web-Flow-0.23.0.md b/docs/Web-Flow-0.23.0.md index 825b5980a..4fe3002f9 100644 --- a/docs/Web-Flow-0.23.0.md +++ b/docs/Web-Flow-0.23.0.md @@ -24,7 +24,7 @@ CREATE INDEX wf_websocket_session ON wf_operation_session (websocket_session_id) CREATE TABLE wf_afs_config ( config_id VARCHAR(256) PRIMARY KEY NOT NULL, - js_snippet VARCHAR(256) NOT NULL, + js_snippet_url VARCHAR(256) NOT NULL, parameters CLOB ); ``` @@ -43,7 +43,7 @@ CREATE INDEX wf_websocket_session ON wf_operation_session (websocket_session_id) CREATE TABLE wf_afs_config ( config_id VARCHAR(256) PRIMARY KEY NOT NULL, - js_snippet VARCHAR(256) NOT NULL, + js_snippet_url VARCHAR(256) NOT NULL, parameters TEXT ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` diff --git a/docs/sql/mysql/create_schema.sql b/docs/sql/mysql/create_schema.sql index cccbd4c10..74eb97968 100644 --- a/docs/sql/mysql/create_schema.sql +++ b/docs/sql/mysql/create_schema.sql @@ -171,7 +171,7 @@ CREATE TABLE wf_operation_session ( -- Table wf_afs_config is used to configure anti-fraud system parameters. CREATE TABLE wf_afs_config ( config_id VARCHAR(256) PRIMARY KEY NOT NULL, - js_snippet VARCHAR(256) NOT NULL, + js_snippet_url VARCHAR(256) NOT NULL, parameters TEXT ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; diff --git a/docs/sql/oracle/create_schema.sql b/docs/sql/oracle/create_schema.sql index 17e937d2f..e408ff9f1 100644 --- a/docs/sql/oracle/create_schema.sql +++ b/docs/sql/oracle/create_schema.sql @@ -178,7 +178,7 @@ CREATE TABLE wf_operation_session ( -- Table wf_afs_config is used to configure anti-fraud system parameters. CREATE TABLE wf_afs_config ( config_id VARCHAR(256) PRIMARY KEY NOT NULL, - js_snippet VARCHAR(256) NOT NULL, + js_snippet_url VARCHAR(256) NOT NULL, parameters CLOB ); diff --git a/docs/sql/postgresql/create_schema.sql b/docs/sql/postgresql/create_schema.sql index 2ee43308b..53f33ea46 100644 --- a/docs/sql/postgresql/create_schema.sql +++ b/docs/sql/postgresql/create_schema.sql @@ -178,7 +178,7 @@ CREATE TABLE wf_operation_session ( -- Table wf_afs_config is used to configure anti-fraud system parameters. CREATE TABLE wf_afs_config ( config_id VARCHAR(256) PRIMARY KEY NOT NULL, - js_snippet VARCHAR(256) NOT NULL, + js_snippet_url VARCHAR(256) NOT NULL, parameters TEXT ) diff --git a/powerauth-data-adapter-client/src/main/java/io/getlime/security/powerauth/lib/dataadapter/client/DataAdapterClient.java b/powerauth-data-adapter-client/src/main/java/io/getlime/security/powerauth/lib/dataadapter/client/DataAdapterClient.java index f4c84d35d..3b40313eb 100644 --- a/powerauth-data-adapter-client/src/main/java/io/getlime/security/powerauth/lib/dataadapter/client/DataAdapterClient.java +++ b/powerauth-data-adapter-client/src/main/java/io/getlime/security/powerauth/lib/dataadapter/client/DataAdapterClient.java @@ -453,7 +453,7 @@ public ObjectResponse saveConsentForm(String userId, St * @return Response with indication whether consent form was successfully saved. * @throws DataAdapterClientErrorException Thrown when client request fails. */ - public ObjectResponse executeAfsAction(String userId, String organizationId, OperationContext operationContext, AfsRequestParameters afsRequestParameters, List authInstruments, Map extras) throws DataAdapterClientErrorException { + public ObjectResponse executeAfsAction(String userId, String organizationId, OperationContext operationContext, AfsRequestParameters afsRequestParameters, List authInstruments, Map extras) throws DataAdapterClientErrorException { try { AfsRequest request = new AfsRequest(userId, organizationId, operationContext, afsRequestParameters, authInstruments, extras); HttpEntity> entity = new HttpEntity<>(new ObjectRequest<>(request)); diff --git a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/AfsRequest.java b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/AfsRequest.java index a18d1c514..2b982424c 100644 --- a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/AfsRequest.java +++ b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/AfsRequest.java @@ -58,7 +58,7 @@ public class AfsRequest { /** * Extra parameters sent with the request depending on AFS type, e.g. cookies for Threat Mark, logout reason, etc. */ - private final Map extras = new LinkedHashMap<>(); + private final Map extras = new LinkedHashMap<>(); /** * Default constructor. @@ -75,7 +75,7 @@ public AfsRequest() { * @param authInstruments Authentication instruments used during this authentication step. * @param extras Extra parameters for AFS. */ - public AfsRequest(String userId, String organizationId, OperationContext operationContext, AfsRequestParameters afsRequestParameters, List authInstruments, Map extras) { + public AfsRequest(String userId, String organizationId, OperationContext operationContext, AfsRequestParameters afsRequestParameters, List authInstruments, Map extras) { this.userId = userId; this.organizationId = organizationId; this.operationContext = operationContext; @@ -160,7 +160,7 @@ public List getAuthInstruments() { * Extra parameters sent with the request depending on AFS type, e.g. cookies for Threat Mark. * @return Get extra parameters for AFS. */ - public Map getExtras() { + public Map getExtras() { return extras; } } diff --git a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/response/AfsResponse.java b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/response/AfsResponse.java index 4404a2dee..10b146e44 100644 --- a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/response/AfsResponse.java +++ b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/response/AfsResponse.java @@ -38,12 +38,12 @@ public class AfsResponse { /** * Configuration of authentication options available for the user. */ - private AuthStepOptions authStepOptions; + private AuthStepOptions authStepOptions = new AuthStepOptions(); /** * Extra parameters sent with the response which should be persisted together with the operation. */ - private final Map extras = new LinkedHashMap<>(); + private final Map extras = new LinkedHashMap<>(); /** * Default constructor. @@ -54,7 +54,7 @@ public AfsResponse() { /** * Constructor with all details. */ - public AfsResponse(boolean applyAfsLabel, String afsLabel, AuthStepOptions authStepOptions, Map extras) { + public AfsResponse(boolean applyAfsLabel, String afsLabel, AuthStepOptions authStepOptions, Map extras) { this.applyAfsResponse = applyAfsLabel; this.afsLabel = afsLabel; this.authStepOptions = authStepOptions; @@ -113,7 +113,7 @@ public void setAuthStepOptions(AuthStepOptions authStepOptions) { * Get extra parameters sent with the response which should be persisted together with the operation. * @return Extra parameters. */ - public Map getExtras() { + public Map getExtras() { return extras; } } diff --git a/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java b/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java index 66d1e1d96..496384e69 100644 --- a/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java +++ b/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java @@ -316,7 +316,8 @@ private void cleanHttpSession() { initResponse.setUsername(username); } - if (authMethod == AuthMethod.LOGIN_SCA || authMethod == AuthMethod.APPROVAL_SCA) { + if (configuration.isAfsEnabled() + && (authMethod == AuthMethod.LOGIN_SCA || authMethod == AuthMethod.APPROVAL_SCA)) { // Choose current AFS action AfsAction afsAction; @@ -327,7 +328,9 @@ private void cleanHttpSession() { } // Execute an AFS action - AfsResponse afsResponse = afsIntegrationService.executeInitAction(operation, afsAction); + AfsResponse afsResponse = afsIntegrationService.executeInitAction(operation.getOperationId(), afsAction); + + // TODO - save AFS response into HTTP session and use it during authentication to switch to 1FA or NO_FA // Process AFS response if (afsResponse.getApplyAfsResponse()) { @@ -432,29 +435,35 @@ private void cleanHttpSession() { // Choose current AFS action final AfsAction afsAction; final List authInstruments = new ArrayList<>(); - if (authMethod == AuthMethod.LOGIN_SCA || authMethod == AuthMethod.APPROVAL_SCA) { - if (authMethod == AuthMethod.LOGIN_SCA) { - afsAction = AfsAction.LOGIN_AUTH; + if (configuration.isAfsEnabled()) { + if (authMethod == AuthMethod.LOGIN_SCA || authMethod == AuthMethod.APPROVAL_SCA) { + if (authMethod == AuthMethod.LOGIN_SCA) { + afsAction = AfsAction.LOGIN_AUTH; + } else { + afsAction = AfsAction.APPROVAL_AUTH; + } + if (request.getPassword() != null) { + authInstruments.add(AuthInstrument.PASSWORD); + } + if (request.getAuthCode() != null) { + authInstruments.add(AuthInstrument.SMS_KEY); + } } else { - afsAction = AfsAction.APPROVAL_AUTH; - } - if (request.getPassword() != null) { - authInstruments.add(AuthInstrument.PASSWORD); - } - if (request.getAuthCode() != null) { - authInstruments.add(AuthInstrument.SMS_KEY); + afsAction = null; } } else { afsAction = null; } + logger.debug("AFS action: {}", afsAction); + try { return buildAuthorizationResponse(request, new AuthResponseProvider() { @Override public SmsAuthorizationResponse doneAuthentication(String userId) { if (afsAction != null) { - afsIntegrationService.executeAuthAction(operation, afsAction, authInstruments, 1, AuthStepResult.CONFIRMED); + afsIntegrationService.executeAuthAction(operation.getOperationId(), afsAction, authInstruments, 1, AuthStepResult.CONFIRMED); } authenticateCurrentBrowserSession(); final SmsAuthorizationResponse response = new SmsAuthorizationResponse(); @@ -467,7 +476,7 @@ public SmsAuthorizationResponse doneAuthentication(String userId) { @Override public SmsAuthorizationResponse failedAuthentication(String userId, String failedReason) { if (afsAction != null) { - afsIntegrationService.executeAuthAction(operation, afsAction, authInstruments, 1, AuthStepResult.AUTH_FAILED); + afsIntegrationService.executeAuthAction(operation.getOperationId(), afsAction, authInstruments, 1, AuthStepResult.AUTH_FAILED); } clearCurrentBrowserSession(); final SmsAuthorizationResponse response = new SmsAuthorizationResponse(); @@ -480,7 +489,7 @@ public SmsAuthorizationResponse failedAuthentication(String userId, String faile @Override public SmsAuthorizationResponse continueAuthentication(String operationId, String userId, List steps) { if (afsAction != null) { - afsIntegrationService.executeAuthAction(operation, afsAction, authInstruments, 1, AuthStepResult.CONFIRMED); + afsIntegrationService.executeAuthAction(operation.getOperationId(), afsAction, authInstruments, 1, AuthStepResult.CONFIRMED); } final SmsAuthorizationResponse response = new SmsAuthorizationResponse(); response.setResult(AuthStepResult.CONFIRMED); @@ -492,6 +501,9 @@ public SmsAuthorizationResponse continueAuthentication(String operationId, Strin }); } catch (AuthStepException e) { logger.warn("Error occurred while verifying authorization code from SMS message: {}", e.getMessage()); + if (afsAction != null) { + afsIntegrationService.executeAuthAction(operation.getOperationId(), afsAction, authInstruments, 1, AuthStepResult.AUTH_FAILED); + } final SmsAuthorizationResponse response = new SmsAuthorizationResponse(); response.setResult(AuthStepResult.AUTH_FAILED); logger.info("Step result: AUTH_FAILED, authentication method: {}", authMethod.toString()); diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/interceptor/WebSocketHandshakeInterceptor.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/interceptor/WebSocketHandshakeInterceptor.java index 853c7d525..0278d80ca 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/interceptor/WebSocketHandshakeInterceptor.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/interceptor/WebSocketHandshakeInterceptor.java @@ -1,5 +1,8 @@ package io.getlime.security.powerauth.lib.webflow.authentication.interceptor; +import com.google.common.net.InetAddresses; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.http.server.ServerHttpRequest; import org.springframework.http.server.ServerHttpResponse; import org.springframework.http.server.ServletServerHttpRequest; @@ -7,6 +10,8 @@ import org.springframework.web.socket.WebSocketHandler; import org.springframework.web.socket.server.HandshakeInterceptor; +import javax.servlet.http.HttpServletRequest; +import java.net.Inet4Address; import java.util.Map; /** @@ -17,6 +22,7 @@ */ public class WebSocketHandshakeInterceptor implements HandshakeInterceptor { + private static final Logger logger = LoggerFactory.getLogger(WebSocketHandshakeInterceptor.class); private final boolean forceIpv4; public WebSocketHandshakeInterceptor(boolean forceIpv4) { @@ -29,20 +35,21 @@ public boolean beforeHandshake(@NonNull ServerHttpRequest request, @NonNull Serv // Set client_ip attribute in WebSocket session, either from the X-FORWARDED-FOR HTTP header, if it is not // available, use servlet request remote IP address. if (request instanceof ServletServerHttpRequest) { - ServletServerHttpRequest servletRequest = (ServletServerHttpRequest) request; - String ipAddress = servletRequest.getServletRequest().getHeader("X-FORWARDED-FOR"); + HttpServletRequest servletRequest = ((ServletServerHttpRequest) request).getServletRequest(); + String ipAddress = servletRequest.getHeader("X-FORWARDED-FOR"); if (forceIpv4) { // IPv4 logic if (ipAddress == null || !isIpv4Address(ipAddress)) { - ipAddress = servletRequest.getServletRequest().getRemoteAddr(); + ipAddress = servletRequest.getRemoteAddr(); if (!isIpv4Address(ipAddress)) { // IP address is null in case IPv4 address could not be determined, it should not be sent to AFS - ipAddress = null; + logger.warn("IPv4 address could not be detected."); + ipAddress = ""; } } } else if (ipAddress == null) { // IPv4 or IPv6 logic - ipAddress = servletRequest.getServletRequest().getRemoteAddr(); + ipAddress = servletRequest.getRemoteAddr(); } attributes.put("client_ip", ipAddress); @@ -61,8 +68,10 @@ public void afterHandshake(@NonNull ServerHttpRequest request, @NonNull ServerHt * @return Whether IP address is an IPv4 address. */ private boolean isIpv4Address(String address) { - // Source: https://www.oreilly.com/library/view/regular-expressions-cookbook/9781449327453/ch08s16.html - return address.matches("^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}↵\n" + - "(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$"); + try { + return InetAddresses.forString(address) instanceof Inet4Address; + } catch (Exception e) { + return false; + } } } diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/repository/model/entity/AfsConfigEntity.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/repository/model/entity/AfsConfigEntity.java index e1dba2d54..5f8a67296 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/repository/model/entity/AfsConfigEntity.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/repository/model/entity/AfsConfigEntity.java @@ -34,21 +34,30 @@ public class AfsConfigEntity implements Serializable { private static final long serialVersionUID = -3077689235187445743L; @Id - @Column(name = "afs_config_id") + @Column(name = "config_id") private String afsConfigId; - @Column(name = "js_snippet") - private String jsSnippet; + @Column(name = "js_snippet_url") + private String jsSnippetUrl; @Column(name = "parameters") private String parameters; + /** + * Default constructor. + */ public AfsConfigEntity() { } - public AfsConfigEntity(String afsConfigId, String jsSnippet, String parameters) { + /** + * Entity constructor. + * @param afsConfigId AFS configuration ID. + * @param jsSnippetUrl JavaScript snipped for integration of AFS into Web Flow. + * @param parameters Parameters which should be sent together with the AFS request. + */ + public AfsConfigEntity(String afsConfigId, String jsSnippetUrl, String parameters) { this.afsConfigId = afsConfigId; - this.jsSnippet = jsSnippet; + this.jsSnippetUrl = jsSnippetUrl; this.parameters = parameters; } @@ -60,12 +69,12 @@ public void setAfsConfigId(String afsConfigId) { this.afsConfigId = afsConfigId; } - public String getJsSnippet() { - return jsSnippet; + public String getJsSnippetUrl() { + return jsSnippetUrl; } - public void setJsSnippet(String jsSnippet) { - this.jsSnippet = jsSnippet; + public void setJsSnippetUrl(String jsSnippetUrl) { + this.jsSnippetUrl = jsSnippetUrl; } public String getParameters() { @@ -82,12 +91,12 @@ public boolean equals(Object o) { if (o == null || getClass() != o.getClass()) return false; AfsConfigEntity that = (AfsConfigEntity) o; return afsConfigId.equals(that.afsConfigId) && - jsSnippet.equals(that.jsSnippet) && + jsSnippetUrl.equals(that.jsSnippetUrl) && Objects.equals(parameters, that.parameters); } @Override public int hashCode() { - return Objects.hash(afsConfigId, jsSnippet, parameters); + return Objects.hash(afsConfigId, jsSnippetUrl, parameters); } } diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AfsIntegrationService.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AfsIntegrationService.java index 20a0c3d37..833b6ef0d 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AfsIntegrationService.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AfsIntegrationService.java @@ -39,6 +39,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletRequest; import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; @@ -58,6 +60,7 @@ public class AfsIntegrationService { private final NextStepClient nextStepClient; private final DataAdapterClient dataAdapterClient; private final OperationSessionService operationSessionService; + private final HttpServletRequest httpServletRequest; /** * Service constructor. @@ -65,13 +68,15 @@ public class AfsIntegrationService { * @param nextStepClient Next Step client. * @param dataAdapterClient Data Adapter client. * @param operationSessionService Operation session service. + * @param httpServletRequest HTTP servlet request. */ @Autowired - public AfsIntegrationService(WebFlowServicesConfiguration configuration, NextStepClient nextStepClient, DataAdapterClient dataAdapterClient, OperationSessionService operationSessionService) { + public AfsIntegrationService(WebFlowServicesConfiguration configuration, NextStepClient nextStepClient, DataAdapterClient dataAdapterClient, OperationSessionService operationSessionService, HttpServletRequest httpServletRequest) { this.configuration = configuration; this.nextStepClient = nextStepClient; this.dataAdapterClient = dataAdapterClient; this.operationSessionService = operationSessionService; + this.httpServletRequest = httpServletRequest; } @@ -79,43 +84,43 @@ public AfsIntegrationService(WebFlowServicesConfiguration configuration, NextSte * Execute an anti-fraud system action. This method variant is used during step initialization. * The response from AFS is applied in Web Flow. * - * @param operation Current operation. + * @param operationId Operation ID. * @param afsAction AFS action to be executed. * @return Response from anti-fraud system. */ - public AfsResponse executeInitAction(GetOperationDetailResponse operation, AfsAction afsAction) { - return executeAfsAction(operation, afsAction, Collections.emptyList(), 1, null, null); + public AfsResponse executeInitAction(String operationId, AfsAction afsAction) { + return executeAfsAction(operationId, afsAction, Collections.emptyList(), 1, null, null); } /** * Execute an anti-fraud system action. This method variant is used during step authentication. * The response from AFS has no impact on Web Flow. * - * @param operation Current operation. + * @param operationId Operation ID. * @param afsAction AFS action to be executed. * @param authInstruments Authentication instruments used in this step. * @param stepIndex Index in current authentication step. * @param authStepResult Authentication step result. */ - public void executeAuthAction(GetOperationDetailResponse operation, AfsAction afsAction, List authInstruments, int stepIndex, AuthStepResult authStepResult) { - executeAfsAction(operation, afsAction, authInstruments, stepIndex, authStepResult, null); + public void executeAuthAction(String operationId, AfsAction afsAction, List authInstruments, int stepIndex, AuthStepResult authStepResult) { + executeAfsAction(operationId, afsAction, authInstruments, stepIndex, authStepResult, null); } /** * Execute an anti-fraud system action. This method variant is used during logout. * The response from AFS has no impact on Web Flow. * - * @param operation Current operation. + * @param operationId Operation ID. * @param operationTerminationReason Reason why operation was terminated. */ - public void executeLogoutAction(GetOperationDetailResponse operation, OperationTerminationReason operationTerminationReason) { - executeAfsAction(operation, AfsAction.LOGOUT, Collections.emptyList(), 1, null, operationTerminationReason); + public void executeLogoutAction(String operationId, OperationTerminationReason operationTerminationReason) { + executeAfsAction(operationId, AfsAction.LOGOUT, Collections.emptyList(), 1, null, operationTerminationReason); } /** * Execute a generic anti-fraud system action and return response. * - * @param operation Current operation. + * @param operationId Operation ID. * @param afsAction AFS action to be executed. * @param authInstruments Authentication instruments used in this step. * @param stepIndex Index in current authentication step. @@ -123,9 +128,13 @@ public void executeLogoutAction(GetOperationDetailResponse operation, OperationT * @param operationTerminationReason Reason why operation was terminated. * @return Response from anti-fraud system. */ - private AfsResponse executeAfsAction(GetOperationDetailResponse operation, AfsAction afsAction, List authInstruments, int stepIndex, AuthStepResult authStepResult, OperationTerminationReason operationTerminationReason) { + private AfsResponse executeAfsAction(String operationId, AfsAction afsAction, List authInstruments, int stepIndex, AuthStepResult authStepResult, OperationTerminationReason operationTerminationReason) { if (configuration.isAfsEnabled()) { + logger.debug("AFS integration is enabled"); try { + // Retrieve operation + ObjectResponse operationDetail = nextStepClient.getOperationDetail(operationId); + GetOperationDetailResponse operation = operationDetail.getResponseObject(); ObjectResponse objectResponse = nextStepClient.getOperationConfigDetail(operation.getOperationName()); GetOperationConfigDetailResponse config = objectResponse.getResponseObject(); if (config.isAfsEnabled()) { @@ -137,24 +146,54 @@ private AfsResponse executeAfsAction(GetOperationDetailResponse operation, AfsAc OperationContext operationContext = new OperationContext(operation.getOperationId(), operation.getOperationName(), operation.getOperationData(), formData, applicationContext); AfsType afsType = configuration.getAfsType(); String clientIp = operationSessionService.getOperationToSessionMapping(operation.getOperationId()).getClientIp(); - // TODO - extract TM cookies and send their values - Map extras = new LinkedHashMap<>(); + Map extras = prepareExtrasForAfs(); // AuthStepResult is null due to init action AfsRequestParameters afsRequestParameters = new AfsRequestParameters(afsType, afsAction, clientIp, stepIndex, authStepResult, operationTerminationReason); - ObjectResponse afsObjectResponse = dataAdapterClient.executeAfsAction(userId, organizationId, operationContext, afsRequestParameters, Collections.emptyList(), extras); + logger.info("Sending AFS action request, operation ID: {}", operation.getOperationId()); + ObjectResponse afsObjectResponse = dataAdapterClient.executeAfsAction(userId, organizationId, operationContext, afsRequestParameters, authInstruments, extras); + logger.info("AFS response received, operation ID: {}", operation.getOperationId()); // TODO - save AFS response in Next Step return afsObjectResponse.getResponseObject(); + } else { + logger.debug("AFS integration is disabled for operation name: {}", operation.getOperationName()); } // AFS errors are not critical, Web Flow falls back to 2FA } catch (NextStepServiceException e) { - // Next step errors are critical - logger.error("Error when obtaining operation configuration.", e); + logger.error("Error when obtaining operation configuration", e); } catch (DataAdapterClientErrorException e) { - logger.error("Error when calling anti-fraud service.", e); + logger.error("Error when calling anti-fraud service", e); } + } else { + logger.debug("AFS integration is disabled"); } + // The default response is not applied return new AfsResponse(); } + /** + * Prepare extras which are sent with request to AFS. These values are AFS type dependent. + * + * @return AFS extras. + */ + private Map prepareExtrasForAfs() { + Map extras = new LinkedHashMap<>(); + AfsType afsType = configuration.getAfsType(); + if (afsType == AfsType.THREAT_MARK) { + Cookie[] cookies = httpServletRequest.getCookies(); + if (cookies != null) { + for (Cookie cookie: cookies) { + // TODO - use configuration + if (cookie.getName().equals("CoBNX2ZROo")) { + extras.put("tm_device_tag", cookie.getValue()); + } + if (cookie.getName().equals("DV7mCBByG2")) { + extras.put("tm_session_sid", cookie.getValue()); + } + } + } + } + return extras; + } + } diff --git a/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/configuration/SecurityConfiguration.java b/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/configuration/SecurityConfiguration.java index b6d42216a..1c686fef0 100644 --- a/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/configuration/SecurityConfiguration.java +++ b/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/configuration/SecurityConfiguration.java @@ -40,7 +40,7 @@ protected void configure(HttpSecurity http) throws Exception { .httpBasic().disable() .csrf().ignoringAntMatchers("/api/auth/token/app/**", "/api/push/**", "/pa/**").and() .antMatcher("/**").authorizeRequests() - .antMatchers("/", "/authenticate", "/authenticate/**", "/oauth/error", "/api/**", "/pa/**", "/resources/**", "/ext-resources/**", "/websocket/**", "/v2/api-docs", "/swagger-resources/**", "/swagger-ui.html", "/webjars/**").permitAll() + .antMatchers("/", "/authenticate", "/authenticate/**", "/oauth/error", "/api/**", "/pa/**", "/resources/**", "/ext-resources/**", "/websocket/**", "/v2/api-docs", "/swagger-resources/**", "/swagger-ui.html", "/webjars/**", "/FDS/**").permitAll() .anyRequest().authenticated() .and().exceptionHandling() .authenticationEntryPoint(new LoginUrlAuthenticationEntryPoint("/authenticate")); diff --git a/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/configuration/WebFlowServerConfiguration.java b/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/configuration/WebFlowServerConfiguration.java index 07a66db4f..84ed63886 100644 --- a/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/configuration/WebFlowServerConfiguration.java +++ b/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/configuration/WebFlowServerConfiguration.java @@ -74,6 +74,12 @@ public class WebFlowServerConfiguration { @Value("${powerauth.webflow.android.showSecurityWarning}") private boolean showAndroidSecurityWarning; + /** + * Whether anti-fraud system integration is enabled. + */ + @Value("${powerauth.webflow.afs.enabled:false}") + private boolean afsEnabled; + /** * Get custom external stylesheet URL. * @@ -132,4 +138,12 @@ public String getApplicationEnvironment() { public boolean getShowAndroidSecurityWarning() { return showAndroidSecurityWarning; } + + /** + * Get whether anti-fraud system integration is enabled. + * @return Whether anti-fraud system integration is enabled. + */ + public boolean isAfsEnabled() { + return afsEnabled; + } } diff --git a/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/controller/HomeController.java b/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/controller/HomeController.java index 0250e4eb2..ec8f196a0 100644 --- a/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/controller/HomeController.java +++ b/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/controller/HomeController.java @@ -20,8 +20,11 @@ import io.getlime.security.powerauth.app.webflow.i18n.I18NService; import io.getlime.security.powerauth.lib.nextstep.client.NextStepClient; import io.getlime.security.powerauth.lib.nextstep.model.exception.NextStepServiceException; +import io.getlime.security.powerauth.lib.nextstep.model.response.GetOperationConfigDetailResponse; import io.getlime.security.powerauth.lib.nextstep.model.response.GetOperationDetailResponse; import io.getlime.security.powerauth.lib.webflow.authentication.model.HttpSessionAttributeNames; +import io.getlime.security.powerauth.lib.webflow.authentication.repository.AfsConfigRepository; +import io.getlime.security.powerauth.lib.webflow.authentication.repository.model.entity.AfsConfigEntity; import io.getlime.security.powerauth.lib.webflow.authentication.service.AuthenticationManagementService; import io.getlime.security.powerauth.lib.webflow.authentication.service.OperationSessionService; import org.slf4j.Logger; @@ -40,6 +43,7 @@ import javax.servlet.http.HttpSession; import java.util.Locale; import java.util.Map; +import java.util.Optional; /** * Simple controller, redirects to the main HTML page with JavaScript content. @@ -56,24 +60,27 @@ public class HomeController { private final I18NService i18nService; private final OperationSessionService operationSessionService; private final NextStepClient nextStepClient; + private final AfsConfigRepository afsConfigRepository; private final HttpSession httpSession; /** - * Initialization of the HomeController with application webflowServicesConfiguration. + * Initialization of the HomeController with application configuration. * @param authenticationManagementService Authentication management service. * @param webFlowConfig WebFlowServicesConfiguration of the application. * @param i18nService I18n service. * @param operationSessionService Operation to session mapping service. * @param nextStepClient Next step client. + * @param afsConfigRepository Anti-fraud system configuration repository. * @param httpSession HTTP session. */ @Autowired - public HomeController(AuthenticationManagementService authenticationManagementService, WebFlowServerConfiguration webFlowConfig, I18NService i18nService, OperationSessionService operationSessionService, NextStepClient nextStepClient, HttpSession httpSession) { + public HomeController(AuthenticationManagementService authenticationManagementService, WebFlowServerConfiguration webFlowConfig, I18NService i18nService, OperationSessionService operationSessionService, NextStepClient nextStepClient, AfsConfigRepository afsConfigRepository, HttpSession httpSession) { this.webFlowConfig = webFlowConfig; this.authenticationManagementService = authenticationManagementService; this.i18nService = i18nService; this.operationSessionService = operationSessionService; this.nextStepClient = nextStepClient; + this.afsConfigRepository = afsConfigRepository; this.httpSession = httpSession; } @@ -124,6 +131,27 @@ public String authenticate(Map model, HttpServletRequest request try { ObjectResponse objectResponse = nextStepClient.getOperationDetail(operationId); organizationId = objectResponse.getResponseObject().getOrganizationId(); + + // AFS is enabled only for non-default operations which are deprecated + if (webFlowConfig.isAfsEnabled()) { + String operationName = objectResponse.getResponseObject().getOperationName(); + ObjectResponse objectResponseConfig = nextStepClient.getOperationConfigDetail(operationName); + GetOperationConfigDetailResponse config = objectResponseConfig.getResponseObject(); + if (config.isAfsEnabled() && config.getAfsConfigId() != null) { + Optional afsConfig = afsConfigRepository.findById(config.getAfsConfigId()); + if (afsConfig.isPresent()) { + String afsJsSnippet = afsConfig.get().getJsSnippetUrl(); + if (afsJsSnippet != null) { + model.put("afs_js_snippet_url", afsJsSnippet); + } + } else { + logger.error("AFS configuration is not available in Web Flow: {}", config.getAfsConfigId()); + } + } else if (config.getAfsConfigId() == null) { + logger.error("AFS configuration is invalid for operation name: {}", config.getOperationName()); + } + } + } catch (NextStepServiceException e) { logger.error("Error occurred while retrieving operation with ID: " + operationId, e); return "redirect:/oauth/error"; @@ -132,6 +160,8 @@ public String authenticate(Map model, HttpServletRequest request authenticationManagementService.createAuthenticationWithOperationId(operationId, organizationId); } + model.putIfAbsent("afs_js_snippet_url", ""); + model.put("title", webFlowConfig.getPageTitle()); model.put("stylesheet", webFlowConfig.getCustomStyleSheetUrl()); model.put("lang", LocaleContextHolder.getLocale().getLanguage()); diff --git a/powerauth-webflow/src/main/resources/templates/index.html b/powerauth-webflow/src/main/resources/templates/index.html index 9333897f0..37715b783 100644 --- a/powerauth-webflow/src/main/resources/templates/index.html +++ b/powerauth-webflow/src/main/resources/templates/index.html @@ -10,6 +10,10 @@ + + + + From a1f0336fbcf6be0d25af844e82b8ce5157bbebc5 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Tue, 24 Sep 2019 12:25:56 +0200 Subject: [PATCH 061/197] Fix #677: AFS: configuration of IP address detection --- .../WebFlowServicesConfiguration.java | 14 ++++++++++++++ .../interceptor/WebSocketHandshakeInterceptor.java | 12 ++++++++++-- .../configuration/WebSocketConfiguration.java | 2 +- .../src/main/resources/application.properties | 1 + 4 files changed, 26 insertions(+), 3 deletions(-) diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/configuration/WebFlowServicesConfiguration.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/configuration/WebFlowServicesConfiguration.java index 22afdf570..b88cad854 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/configuration/WebFlowServicesConfiguration.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/configuration/WebFlowServicesConfiguration.java @@ -102,6 +102,12 @@ public class WebFlowServicesConfiguration { @Value("${powerauth.webflow.afs.type:THREAT_MARK}") private AfsType afsType; + /** + * Whether client IP address is detected in anti-fraud system integration. + */ + @Value("${powerauth.webflow.afs.detectIpAddress:false}") + private boolean afsDetectIpAddress; + /** * Whether anti-fraud system requires IPv4 addresses. */ @@ -223,6 +229,14 @@ public AfsType getAfsType() { return afsType; } + /** + * Get whether client IP address is detected in anti-fraud system integration. + * @return Whether client IP address is detected in anti-fraud system integration. + */ + public boolean getAfsDetectIpAddress() { + return afsDetectIpAddress; + } + /** * Get whether anti-fraud system requires IPv4 addresses. * @return Whether anti-fraud system requires IPv4 addresses. diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/interceptor/WebSocketHandshakeInterceptor.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/interceptor/WebSocketHandshakeInterceptor.java index f30f2ccdc..c7f89e3e3 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/interceptor/WebSocketHandshakeInterceptor.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/interceptor/WebSocketHandshakeInterceptor.java @@ -23,9 +23,12 @@ public class WebSocketHandshakeInterceptor implements HandshakeInterceptor { private static final Logger logger = LoggerFactory.getLogger(WebSocketHandshakeInterceptor.class); + + private final boolean detectIpAddress; private final boolean forceIpv4; - public WebSocketHandshakeInterceptor(boolean forceIpv4) { + public WebSocketHandshakeInterceptor(boolean detectIpAddress, boolean forceIpv4) { + this.detectIpAddress = detectIpAddress; this.forceIpv4 = forceIpv4; } @@ -35,6 +38,11 @@ public boolean beforeHandshake(@NonNull ServerHttpRequest request, @NonNull Serv // Set client_ip attribute in WebSocket session, either from the X-FORWARDED-FOR HTTP header, if it is not // available, use servlet request remote IP address. if (request instanceof ServletServerHttpRequest) { + if (!detectIpAddress) { + // IP address detection is skipped, use empty String for AFS (null value is not usable in ConcurrentHashMap) + attributes.put("client_ip", ""); + return true; + } HttpServletRequest servletRequest = ((ServletServerHttpRequest) request).getServletRequest(); String ipAddress = servletRequest.getHeader("X-FORWARDED-FOR"); if (forceIpv4) { @@ -44,7 +52,7 @@ public boolean beforeHandshake(@NonNull ServerHttpRequest request, @NonNull Serv if (!isIpv4Address(ipAddress)) { // IP address is null in case IPv4 address could not be determined, it should not be sent to AFS logger.warn("IPv4 address could not be detected."); - ipAddress = null; + ipAddress = ""; } } } else if (ipAddress == null) { diff --git a/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/configuration/WebSocketConfiguration.java b/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/configuration/WebSocketConfiguration.java index 051363f9b..8223d7c7f 100644 --- a/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/configuration/WebSocketConfiguration.java +++ b/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/configuration/WebSocketConfiguration.java @@ -48,7 +48,7 @@ public WebSocketConfiguration(WebFlowServicesConfiguration configuration) { */ @Override public void registerStompEndpoints(StompEndpointRegistry registry) { - WebSocketHandshakeInterceptor interceptor = new WebSocketHandshakeInterceptor(configuration.getAfsForceIpv4()); + WebSocketHandshakeInterceptor interceptor = new WebSocketHandshakeInterceptor(configuration.getAfsDetectIpAddress(), configuration.getAfsForceIpv4()); registry.addEndpoint("/websocket").addInterceptors(interceptor).setAllowedOrigins("*").withSockJS(); } diff --git a/powerauth-webflow/src/main/resources/application.properties b/powerauth-webflow/src/main/resources/application.properties index 9d8a9d5c6..9c00088a3 100644 --- a/powerauth-webflow/src/main/resources/application.properties +++ b/powerauth-webflow/src/main/resources/application.properties @@ -73,6 +73,7 @@ powerauth.webflow.timeout.warning.delayMs=60000 # Anti-fraud system configuration powerauth.webflow.afs.enabled=false powerauth.webflow.afs.type=THREAT_MARK +powerauth.webflow.afs.detectIpAddress=false powerauth.webflow.afs.forceIpv4=true # Disable JMX From 0205acdf59fc72332236067b439af8b6b5ac31dc Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Tue, 24 Sep 2019 13:31:40 +0200 Subject: [PATCH 062/197] Rename fields and getters --- .../configuration/WebFlowServicesConfiguration.java | 12 ++++++------ .../configuration/WebSocketConfiguration.java | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/configuration/WebFlowServicesConfiguration.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/configuration/WebFlowServicesConfiguration.java index b88cad854..757f9ad8f 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/configuration/WebFlowServicesConfiguration.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/configuration/WebFlowServicesConfiguration.java @@ -106,13 +106,13 @@ public class WebFlowServicesConfiguration { * Whether client IP address is detected in anti-fraud system integration. */ @Value("${powerauth.webflow.afs.detectIpAddress:false}") - private boolean afsDetectIpAddress; + private boolean afsIpAddressDetectionEnabled; /** * Whether anti-fraud system requires IPv4 addresses. */ @Value("${powerauth.webflow.afs.forceIpv4:true}") - private boolean afsForceIpv4; + private boolean afsIpv4Forced; @Autowired public WebFlowServicesConfiguration(SSLConfigurationService sslConfigurationService) { @@ -233,15 +233,15 @@ public AfsType getAfsType() { * Get whether client IP address is detected in anti-fraud system integration. * @return Whether client IP address is detected in anti-fraud system integration. */ - public boolean getAfsDetectIpAddress() { - return afsDetectIpAddress; + public boolean isAfsIpAddressDetectionEnabled() { + return afsIpAddressDetectionEnabled; } /** * Get whether anti-fraud system requires IPv4 addresses. * @return Whether anti-fraud system requires IPv4 addresses. */ - public boolean getAfsForceIpv4() { - return afsForceIpv4; + public boolean isAfsIpv4Forced() { + return afsIpv4Forced; } } diff --git a/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/configuration/WebSocketConfiguration.java b/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/configuration/WebSocketConfiguration.java index 8223d7c7f..5af482ba7 100644 --- a/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/configuration/WebSocketConfiguration.java +++ b/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/configuration/WebSocketConfiguration.java @@ -48,7 +48,7 @@ public WebSocketConfiguration(WebFlowServicesConfiguration configuration) { */ @Override public void registerStompEndpoints(StompEndpointRegistry registry) { - WebSocketHandshakeInterceptor interceptor = new WebSocketHandshakeInterceptor(configuration.getAfsDetectIpAddress(), configuration.getAfsForceIpv4()); + WebSocketHandshakeInterceptor interceptor = new WebSocketHandshakeInterceptor(configuration.isAfsIpAddressDetectionEnabled(), configuration.isAfsIpv4Forced()); registry.addEndpoint("/websocket").addInterceptors(interceptor).setAllowedOrigins("*").withSockJS(); } From e0130faf7aa30fbd159cd69fc7bea24049fbcdc4 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Tue, 24 Sep 2019 15:13:40 +0200 Subject: [PATCH 063/197] AFS: implement adaptive authentication Update Jackson Databind dependency --- .../SmsAuthorizationController.java | 72 +++++++++++++++---- .../model/HttpSessionAttributeNames.java | 1 + powerauth-webflow-i18n/pom.xml | 2 +- .../webflow/controller/HomeController.java | 1 + .../src/main/js/actions/smsAuthActions.js | 2 + .../src/main/js/components/smsAuth.js | 7 +- .../src/main/js/components/smsComponent.js | 44 +++++++----- .../src/main/js/components/tokenAuthSms.js | 7 +- 8 files changed, 99 insertions(+), 37 deletions(-) diff --git a/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java b/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java index 496384e69..276ed0f27 100644 --- a/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java +++ b/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java @@ -22,10 +22,7 @@ import io.getlime.security.powerauth.lib.dataadapter.model.entity.FormData; import io.getlime.security.powerauth.lib.dataadapter.model.entity.OperationContext; import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.*; -import io.getlime.security.powerauth.lib.dataadapter.model.response.AfsResponse; -import io.getlime.security.powerauth.lib.dataadapter.model.response.CreateSmsAuthorizationResponse; -import io.getlime.security.powerauth.lib.dataadapter.model.response.VerifySmsAndPasswordResponse; -import io.getlime.security.powerauth.lib.dataadapter.model.response.VerifySmsAuthorizationResponse; +import io.getlime.security.powerauth.lib.dataadapter.model.response.*; import io.getlime.security.powerauth.lib.nextstep.model.entity.ApplicationContext; import io.getlime.security.powerauth.lib.nextstep.model.entity.AuthStep; import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthMethod; @@ -140,6 +137,35 @@ protected AuthenticationResult authenticate(SmsAuthorizationRequest request) thr case LOGIN_SCA: case APPROVAL_SCA: { + + String authCode = request.getAuthCode(); + AuthStepOptions authStepOptions = getAuthStepOptionsFromHttpSession(); + if (authStepOptions != null) { + // Authentication step options have been derived from AFS response + + if (!authStepOptions.isSmsOtpRequired() && !authStepOptions.isPasswordRequired()) { + // No authentication is required, approve step + cleanHttpSession(); + logger.info("Step authentication succeeded (NO_FA), operation ID: {}, authentication method: {}", operation.getOperationId(), authMethod.toString()); + return new AuthenticationResult(operation.getUserId(), operation.getOrganizationId()); + } else if (!authStepOptions.isPasswordRequired()) { + // Only SMS authorization is required, skip password veriication + ObjectResponse objectResponse = dataAdapterClient.verifyAuthorizationSms(messageId, authCode, userId, organizationId, operationContext); + VerifySmsAuthorizationResponse smsResponse = objectResponse.getResponseObject(); + smsAuthorizationResult = smsResponse.getSmsAuthorizationResult(); + if (smsAuthorizationResult == SmsAuthorizationResult.VERIFIED_SUCCEEDED) { + cleanHttpSession(); + logger.info("Step authentication succeeded (1FA), operation ID: {}, authentication method: {}", operation.getOperationId(), authMethod.toString()); + return new AuthenticationResult(operation.getUserId(), operation.getOrganizationId()); + } + remainingAttemptsDA = smsResponse.getRemainingAttempts(); + showRemainingAttempts = smsResponse.getShowRemainingAttempts(); + errorMessage = smsResponse.getErrorMessage(); + break; + + } + // Otherwise 2FA authentication is performed + } PasswordProtectionType passwordProtectionType = configuration.getPasswordProtection(); String cipherTransformation = configuration.getCipherTransformation(); io.getlime.security.powerauth.lib.webflow.authentication.encryption.PasswordProtection passwordProtection; @@ -162,19 +188,18 @@ protected AuthenticationResult authenticate(SmsAuthorizationRequest request) thr } String protectedPassword = passwordProtection.protect(request.getPassword()); - String authCode = request.getAuthCode(); AuthenticationContext authenticationContext = new AuthenticationContext(passwordProtectionType, cipherTransformation); ObjectResponse objectResponse = dataAdapterClient.verifyAuthorizationSmsAndPassword(messageId, authCode, userId, organizationId, protectedPassword, authenticationContext, operationContext); - VerifySmsAndPasswordResponse smsResponse = objectResponse.getResponseObject(); - smsAuthorizationResult = smsResponse.getSmsAuthorizationResult(); - if (smsAuthorizationResult == SmsAuthorizationResult.VERIFIED_SUCCEEDED && smsResponse.getUserAuthenticationResult() == UserAuthenticationResult.VERIFIED_SUCCEEDED) { + VerifySmsAndPasswordResponse smsAndPasswordResponse = objectResponse.getResponseObject(); + smsAuthorizationResult = smsAndPasswordResponse.getSmsAuthorizationResult(); + if (smsAuthorizationResult == SmsAuthorizationResult.VERIFIED_SUCCEEDED && smsAndPasswordResponse.getUserAuthenticationResult() == UserAuthenticationResult.VERIFIED_SUCCEEDED) { cleanHttpSession(); - logger.info("Step authentication succeeded, operation ID: {}, authentication method: {}", operation.getOperationId(), authMethod.toString()); + logger.info("Step authentication succeeded (2FA), operation ID: {}, authentication method: {}", operation.getOperationId(), authMethod.toString()); return new AuthenticationResult(operation.getUserId(), operation.getOrganizationId()); } - remainingAttemptsDA = smsResponse.getRemainingAttempts(); - showRemainingAttempts = smsResponse.getShowRemainingAttempts(); - errorMessage = smsResponse.getErrorMessage(); + remainingAttemptsDA = smsAndPasswordResponse.getRemainingAttempts(); + showRemainingAttempts = smsAndPasswordResponse.getShowRemainingAttempts(); + errorMessage = smsAndPasswordResponse.getErrorMessage(); break; } @@ -245,6 +270,15 @@ private void updateInitialMessageSentInHttpSession(Boolean initialMessageSent) { } } + /** + * Set authentication step options in HTTP session. + */ + private void updateAuthStepOptionsInHttpSession(AuthStepOptions authStepOptions) { + synchronized (httpSession.getServletContext()) { + httpSession.setAttribute(HttpSessionAttributeNames.AUTH_STEP_OPTIONS, authStepOptions); + } + } + /** * Get message ID from HTTP session. */ @@ -280,6 +314,16 @@ private Boolean getInitialMessageSentFromHttpSession() { return (Boolean) httpSession.getAttribute(HttpSessionAttributeNames.INITIAL_MESSAGE_SENT); } } + + /** + * Get authentication step options from HTTP session. + */ + private AuthStepOptions getAuthStepOptionsFromHttpSession() { + synchronized (httpSession.getServletContext()) { + return (AuthStepOptions) httpSession.getAttribute(HttpSessionAttributeNames.AUTH_STEP_OPTIONS); + } + } + /** * Clean HTTP session. */ @@ -288,6 +332,7 @@ private void cleanHttpSession() { httpSession.removeAttribute(HttpSessionAttributeNames.MESSAGE_ID); httpSession.removeAttribute(HttpSessionAttributeNames.LAST_MESSAGE_TIMESTAMP); httpSession.removeAttribute(HttpSessionAttributeNames.INITIAL_MESSAGE_SENT); + httpSession.removeAttribute(HttpSessionAttributeNames.AUTH_STEP_OPTIONS); httpSession.removeAttribute(HttpSessionAttributeNames.USERNAME); } } @@ -330,7 +375,8 @@ private void cleanHttpSession() { // Execute an AFS action AfsResponse afsResponse = afsIntegrationService.executeInitAction(operation.getOperationId(), afsAction); - // TODO - save AFS response into HTTP session and use it during authentication to switch to 1FA or NO_FA + // Save authentication step options derived from AFS response for authenticate step + updateAuthStepOptionsInHttpSession(afsResponse.getAuthStepOptions()); // Process AFS response if (afsResponse.getApplyAfsResponse()) { diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/model/HttpSessionAttributeNames.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/model/HttpSessionAttributeNames.java index 07e607ccd..b942507cc 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/model/HttpSessionAttributeNames.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/model/HttpSessionAttributeNames.java @@ -23,6 +23,7 @@ public class HttpSessionAttributeNames { public static final String MESSAGE_ID = "MESSAGE_ID"; public static final String LAST_MESSAGE_TIMESTAMP = "LAST_MESSAGE_TIMESTAMP"; public static final String INITIAL_MESSAGE_SENT = "INITIAL_MESSAGE_SENT"; + public static final String AUTH_STEP_OPTIONS = "AUTH_STEP_OPTIONS"; public static final String PENDING_AUTH_OBJECT = "PENDING_AUTH_OBJECT"; public static final String CONSENT_SKIPPED = "CONSENT_SKIPPED"; public static final String USERNAME = "USERNAME"; diff --git a/powerauth-webflow-i18n/pom.xml b/powerauth-webflow-i18n/pom.xml index 19a4128ff..c3cc87255 100644 --- a/powerauth-webflow-i18n/pom.xml +++ b/powerauth-webflow-i18n/pom.xml @@ -21,7 +21,7 @@ com.fasterxml.jackson.core jackson-databind - 2.9.9.3 + 2.9.10 org.springframework diff --git a/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/controller/HomeController.java b/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/controller/HomeController.java index ec8f196a0..3d0c876cf 100644 --- a/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/controller/HomeController.java +++ b/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/controller/HomeController.java @@ -281,6 +281,7 @@ private void cleanHttpSession() { httpSession.removeAttribute(HttpSessionAttributeNames.MESSAGE_ID); httpSession.removeAttribute(HttpSessionAttributeNames.LAST_MESSAGE_TIMESTAMP); httpSession.removeAttribute(HttpSessionAttributeNames.INITIAL_MESSAGE_SENT); + httpSession.removeAttribute(HttpSessionAttributeNames.AUTH_STEP_OPTIONS); httpSession.removeAttribute(HttpSessionAttributeNames.CONSENT_SKIPPED); httpSession.removeAttribute(HttpSessionAttributeNames.USERNAME); } diff --git a/powerauth-webflow/src/main/js/actions/smsAuthActions.js b/powerauth-webflow/src/main/js/actions/smsAuthActions.js index 2572ffc7a..5b27224fa 100644 --- a/powerauth-webflow/src/main/js/actions/smsAuthActions.js +++ b/powerauth-webflow/src/main/js/actions/smsAuthActions.js @@ -62,6 +62,7 @@ export function init(component) { init: true, message: response.data.message, passwordEnabled: response.data.passwordEnabled, + smsOtpEnabled: response.data.smsOtpEnabled, username: response.data.username, resendDelay: response.data.resendDelay } @@ -76,6 +77,7 @@ export function init(component) { init: true, message: response.data.message, passwordEnabled: response.data.passwordEnabled, + smsOtpEnabled: response.data.smsOtpEnabled, username: response.data.username, resendDelay: response.data.resendDelay } diff --git a/powerauth-webflow/src/main/js/components/smsAuth.js b/powerauth-webflow/src/main/js/components/smsAuth.js index d27bb903f..413ceeaa4 100644 --- a/powerauth-webflow/src/main/js/components/smsAuth.js +++ b/powerauth-webflow/src/main/js/components/smsAuth.js @@ -42,7 +42,7 @@ export default class SmsAuthorization extends React.Component { this.storeRemainingAttempts = this.storeRemainingAttempts.bind(this); this.handleSmsResend = this.handleSmsResend.bind(this); this.handleCancel = this.handleCancel.bind(this); - this.state = {passwordEnabled: null, username: null, resendEnabled: false, initialized: false, error: null, message: null, remainingAttempts: null}; + this.state = {passwordEnabled: null, smsOtpEnabled: null, username: null, resendEnabled: false, initialized: false, error: null, message: null, remainingAttempts: null}; } componentWillMount() { @@ -53,6 +53,8 @@ export default class SmsAuthorization extends React.Component { if (props.context.init) { // Store information whether password is enabled this.setState({passwordEnabled: props.context.passwordEnabled}); + // Store information whether SMS authorization is enabled + this.setState({smsOtpEnabled: props.context.smsOtpEnabled}); // Store username for LOGIN_SCA step this.setState({username: props.context.username}); // Set the component to initialized state @@ -112,7 +114,8 @@ export default class SmsAuthorization extends React.Component { - diff --git a/powerauth-webflow/src/main/js/components/smsComponent.js b/powerauth-webflow/src/main/js/components/smsComponent.js index 008493862..22453ccbc 100644 --- a/powerauth-webflow/src/main/js/components/smsComponent.js +++ b/powerauth-webflow/src/main/js/components/smsComponent.js @@ -103,27 +103,33 @@ export default class SmsComponent extends React.Component { ) : ( undefined )} -
-
- -
-
-
-
- -
-
-
- {(this.props.resendEnabled) ? ( -
- + {(this.props.smsOtpEnabled) ? ( +
+
+
+ +
- ) : ( -
- +
+
+ +
- )} -
+
+ {(this.props.resendEnabled) ? ( +
+ +
+ ) : ( +
+ +
+ )} +
+
+ ) : ( + undefined + )}
diff --git a/powerauth-webflow/src/main/js/components/tokenAuthSms.js b/powerauth-webflow/src/main/js/components/tokenAuthSms.js index 94a443079..d19222ad7 100644 --- a/powerauth-webflow/src/main/js/components/tokenAuthSms.js +++ b/powerauth-webflow/src/main/js/components/tokenAuthSms.js @@ -37,7 +37,7 @@ export default class TokenAuthSms extends React.Component { this.storeRemainingAttempts = this.storeRemainingAttempts.bind(this); this.handleCancel = this.handleCancel.bind(this); this.handleSmsResend = this.handleSmsResend.bind(this); - this.state = {username: null, error: null, message: null, remainingAttempts: null, resendEnabled: false, initialized: false}; + this.state = {passwordEnabled: null, smsOtpEnabled: null, username: null, error: null, message: null, remainingAttempts: null, resendEnabled: false, initialized: false}; } componentWillMount() { @@ -48,6 +48,8 @@ export default class TokenAuthSms extends React.Component { if (props.context.init) { // Store information whether password is enabled this.setState({passwordEnabled: props.context.passwordEnabled}); + // Store information whether SMS authorization is enabled + this.setState({smsOtpEnabled: props.context.smsOtpEnabled}); // Store username for LOGIN_SCA step this.setState({username: props.context.username}); // Set the component to initialized state @@ -102,7 +104,8 @@ export default class TokenAuthSms extends React.Component { render() { return ( - From 475a000eab212e10089679d8a95fb69d60a5a805 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Tue, 24 Sep 2019 17:22:51 +0200 Subject: [PATCH 064/197] Implement AFS logout action Update steps to allow cancellation in INIT step --- docs/sql/mysql/initial_data.sql | 12 ++++--- docs/sql/oracle/initial_data.sql | 12 ++++--- docs/sql/postgresql/initial_data.sql | 12 ++++--- .../dataadapter/model/request/AfsRequest.java | 2 +- .../model/request/AfsRequestParameters.java | 18 +++++----- .../model/response/AfsResponse.java | 8 +++-- .../enumeration/OperationCancelReason.java | 7 +++- .../SmsAuthorizationController.java | 4 +-- .../controller/AuthMethodController.java | 24 +++++++++++++- .../listener/WebSocketDisconnectListener.java | 9 ++++- .../service/AfsIntegrationService.java | 33 +++++++++++-------- 11 files changed, 97 insertions(+), 44 deletions(-) diff --git a/docs/sql/mysql/initial_data.sql b/docs/sql/mysql/initial_data.sql index d1e7eac33..8932f8ab1 100644 --- a/docs/sql/mysql/initial_data.sql +++ b/docs/sql/mysql/initial_data.sql @@ -39,17 +39,21 @@ VALUES (1, 'login', 'CREATE', NULL, NULL, 1, 'USER_ID_ASSIGN', 'CONTINUE'); INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) VALUES (2, 'login', 'CREATE', NULL, NULL, 2, 'USERNAME_PASSWORD_AUTH', 'CONTINUE'); +-- login - update operation - CANCELED -> FAILED +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (3, 'login', 'UPDATE', 'INIT', 'CANCELED', 1, 'INIT', 'FAILED'); + -- login - update operation - CONFIRMED -> CONTINUE INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) -VALUES (3, 'login', 'UPDATE', 'USER_ID_ASSIGN', 'CONFIRMED', 1, 'CONSENT', 'CONTINUE'); +VALUES (4, 'login', 'UPDATE', 'USER_ID_ASSIGN', 'CONFIRMED', 1, 'CONSENT', 'CONTINUE'); INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) -VALUES (4, 'login', 'UPDATE', 'USERNAME_PASSWORD_AUTH', 'CONFIRMED', 1, 'CONSENT', 'CONTINUE'); +VALUES (5, 'login', 'UPDATE', 'USERNAME_PASSWORD_AUTH', 'CONFIRMED', 1, 'CONSENT', 'CONTINUE'); -- login - update operation - CANCELED -> FAILED INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) -VALUES (5, 'login', 'UPDATE', 'USER_ID_ASSIGN', 'CANCELED', 1, NULL, 'FAILED'); +VALUES (6, 'login', 'UPDATE', 'USER_ID_ASSIGN', 'CANCELED', 1, NULL, 'FAILED'); INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) -VALUES (6, 'login', 'UPDATE', 'USERNAME_PASSWORD_AUTH', 'CANCELED', 1, NULL, 'FAILED'); +VALUES (7, 'login', 'UPDATE', 'USERNAME_PASSWORD_AUTH', 'CANCELED', 1, NULL, 'FAILED'); -- login - update operation - AUTH_METHOD_FAILED -> FAILED INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) diff --git a/docs/sql/oracle/initial_data.sql b/docs/sql/oracle/initial_data.sql index 1ba35a14c..a7f5b6f83 100644 --- a/docs/sql/oracle/initial_data.sql +++ b/docs/sql/oracle/initial_data.sql @@ -39,17 +39,21 @@ VALUES (1, 'login', 'CREATE', NULL, NULL, 1, 'USER_ID_ASSIGN', 'CONTINUE'); INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) VALUES (2, 'login', 'CREATE', NULL, NULL, 2, 'USERNAME_PASSWORD_AUTH', 'CONTINUE'); +-- login - update operation - CANCELED -> FAILED +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (3, 'login', 'UPDATE', 'INIT', 'CANCELED', 1, 'INIT', 'FAILED'); + -- login - update operation - CONFIRMED -> CONTINUE INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) -VALUES (3, 'login', 'UPDATE', 'USER_ID_ASSIGN', 'CONFIRMED', 1, 'CONSENT', 'CONTINUE'); +VALUES (4, 'login', 'UPDATE', 'USER_ID_ASSIGN', 'CONFIRMED', 1, 'CONSENT', 'CONTINUE'); INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) -VALUES (4, 'login', 'UPDATE', 'USERNAME_PASSWORD_AUTH', 'CONFIRMED', 1, 'CONSENT', 'CONTINUE'); +VALUES (5, 'login', 'UPDATE', 'USERNAME_PASSWORD_AUTH', 'CONFIRMED', 1, 'CONSENT', 'CONTINUE'); -- login - update operation - CANCELED -> FAILED INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) -VALUES (5, 'login', 'UPDATE', 'USER_ID_ASSIGN', 'CANCELED', 1, NULL, 'FAILED'); +VALUES (6, 'login', 'UPDATE', 'USER_ID_ASSIGN', 'CANCELED', 1, NULL, 'FAILED'); INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) -VALUES (6, 'login', 'UPDATE', 'USERNAME_PASSWORD_AUTH', 'CANCELED', 1, NULL, 'FAILED'); +VALUES (7, 'login', 'UPDATE', 'USERNAME_PASSWORD_AUTH', 'CANCELED', 1, NULL, 'FAILED'); -- login - update operation - AUTH_METHOD_FAILED -> FAILED INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) diff --git a/docs/sql/postgresql/initial_data.sql b/docs/sql/postgresql/initial_data.sql index d1e7eac33..8932f8ab1 100644 --- a/docs/sql/postgresql/initial_data.sql +++ b/docs/sql/postgresql/initial_data.sql @@ -39,17 +39,21 @@ VALUES (1, 'login', 'CREATE', NULL, NULL, 1, 'USER_ID_ASSIGN', 'CONTINUE'); INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) VALUES (2, 'login', 'CREATE', NULL, NULL, 2, 'USERNAME_PASSWORD_AUTH', 'CONTINUE'); +-- login - update operation - CANCELED -> FAILED +INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) +VALUES (3, 'login', 'UPDATE', 'INIT', 'CANCELED', 1, 'INIT', 'FAILED'); + -- login - update operation - CONFIRMED -> CONTINUE INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) -VALUES (3, 'login', 'UPDATE', 'USER_ID_ASSIGN', 'CONFIRMED', 1, 'CONSENT', 'CONTINUE'); +VALUES (4, 'login', 'UPDATE', 'USER_ID_ASSIGN', 'CONFIRMED', 1, 'CONSENT', 'CONTINUE'); INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) -VALUES (4, 'login', 'UPDATE', 'USERNAME_PASSWORD_AUTH', 'CONFIRMED', 1, 'CONSENT', 'CONTINUE'); +VALUES (5, 'login', 'UPDATE', 'USERNAME_PASSWORD_AUTH', 'CONFIRMED', 1, 'CONSENT', 'CONTINUE'); -- login - update operation - CANCELED -> FAILED INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) -VALUES (5, 'login', 'UPDATE', 'USER_ID_ASSIGN', 'CANCELED', 1, NULL, 'FAILED'); +VALUES (6, 'login', 'UPDATE', 'USER_ID_ASSIGN', 'CANCELED', 1, NULL, 'FAILED'); INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) -VALUES (6, 'login', 'UPDATE', 'USERNAME_PASSWORD_AUTH', 'CANCELED', 1, NULL, 'FAILED'); +VALUES (7, 'login', 'UPDATE', 'USERNAME_PASSWORD_AUTH', 'CANCELED', 1, NULL, 'FAILED'); -- login - update operation - AUTH_METHOD_FAILED -> FAILED INSERT INTO ns_step_definition (step_definition_id, operation_name, operation_type, request_auth_method, request_auth_step_result, response_priority, response_auth_method, response_result) diff --git a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/AfsRequest.java b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/AfsRequest.java index 2b982424c..9136d8fc7 100644 --- a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/AfsRequest.java +++ b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/AfsRequest.java @@ -56,7 +56,7 @@ public class AfsRequest { private final List authInstruments = new ArrayList<>(); /** - * Extra parameters sent with the request depending on AFS type, e.g. cookies for Threat Mark, logout reason, etc. + * Extra parameters sent with the request depending on AFS type, e.g. cookies for Threat Mark. */ private final Map extras = new LinkedHashMap<>(); diff --git a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/AfsRequestParameters.java b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/AfsRequestParameters.java index e5f25ab3a..8824fa507 100644 --- a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/AfsRequestParameters.java +++ b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/AfsRequestParameters.java @@ -35,7 +35,7 @@ public class AfsRequestParameters { /** * Client IP address. */ - private String clientIp; + private String clientIpAddress; /** * Index counter for this authentication step. @@ -62,15 +62,15 @@ public AfsRequestParameters() { * Constuctor with all details. * @param afsType AFS product type. * @param afsAction AFS action. - * @param clientIp Client IP address. + * @param clientIpAddress Client IP address. * @param stepIndex Index counter for this authentication step. * @param authStepResult Authentication step result. * @param operationTerminationReason Reason why operation was terminated. */ - public AfsRequestParameters(AfsType afsType, AfsAction afsAction, String clientIp, int stepIndex, AuthStepResult authStepResult, OperationTerminationReason operationTerminationReason) { + public AfsRequestParameters(AfsType afsType, AfsAction afsAction, String clientIpAddress, int stepIndex, AuthStepResult authStepResult, OperationTerminationReason operationTerminationReason) { this.afsType = afsType; this.afsAction = afsAction; - this.clientIp = clientIp; + this.clientIpAddress = clientIpAddress; this.stepIndex = stepIndex; this.authStepResult = authStepResult; this.operationTerminationReason = operationTerminationReason; @@ -111,16 +111,16 @@ public void setAfsAction(AfsAction afsAction) { * Get client IP address. * @return Client IP address. */ - public String getClientIp() { - return clientIp; + public String getClientIpAddress() { + return clientIpAddress; } /** * Set client IP address. - * @param clientIp IP address. + * @param clientIpAddress IP address. */ - public void setClientIp(String clientIp) { - this.clientIp = clientIp; + public void setClientIpAddress(String clientIpAddress) { + this.clientIpAddress = clientIpAddress; } /** diff --git a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/response/AfsResponse.java b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/response/AfsResponse.java index 10b146e44..45af2db70 100644 --- a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/response/AfsResponse.java +++ b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/response/AfsResponse.java @@ -53,9 +53,13 @@ public AfsResponse() { /** * Constructor with all details. + * @param applyAfsResponse Whether AFS response should be applied in Web Flow. + * @param afsLabel AFS label to be stored with the operation. + * @param authStepOptions Authentication step options for current step. Use null value case applyAfsResponse = false. + * @param extras AFS extras. */ - public AfsResponse(boolean applyAfsLabel, String afsLabel, AuthStepOptions authStepOptions, Map extras) { - this.applyAfsResponse = applyAfsLabel; + public AfsResponse(boolean applyAfsResponse, String afsLabel, AuthStepOptions authStepOptions, Map extras) { + this.applyAfsResponse = applyAfsResponse; this.afsLabel = afsLabel; this.authStepOptions = authStepOptions; this.extras.putAll(extras); diff --git a/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/enumeration/OperationCancelReason.java b/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/enumeration/OperationCancelReason.java index 038f30885..a176cb7d3 100644 --- a/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/enumeration/OperationCancelReason.java +++ b/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/enumeration/OperationCancelReason.java @@ -45,7 +45,12 @@ public enum OperationCancelReason { /** * Operation has been interrupted by another new operation. */ - INTERRUPTED_OPERATION; + INTERRUPTED_OPERATION, + + /** + * Operation has timed out. + */ + OPERATION_TIMED_OUT; /** * Convert String value to OperationCancelReason enum value. diff --git a/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java b/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java index 276ed0f27..ca6a6d1e9 100644 --- a/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java +++ b/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java @@ -149,7 +149,7 @@ protected AuthenticationResult authenticate(SmsAuthorizationRequest request) thr logger.info("Step authentication succeeded (NO_FA), operation ID: {}, authentication method: {}", operation.getOperationId(), authMethod.toString()); return new AuthenticationResult(operation.getUserId(), operation.getOrganizationId()); } else if (!authStepOptions.isPasswordRequired()) { - // Only SMS authorization is required, skip password veriication + // Only SMS authorization is required, skip password verification ObjectResponse objectResponse = dataAdapterClient.verifyAuthorizationSms(messageId, authCode, userId, organizationId, operationContext); VerifySmsAuthorizationResponse smsResponse = objectResponse.getResponseObject(); smsAuthorizationResult = smsResponse.getSmsAuthorizationResult(); @@ -501,8 +501,6 @@ private void cleanHttpSession() { afsAction = null; } - logger.debug("AFS action: {}", afsAction); - try { return buildAuthorizationResponse(request, new AuthResponseProvider() { diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/controller/AuthMethodController.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/controller/AuthMethodController.java index 120929e0e..225d0a6dc 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/controller/AuthMethodController.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/controller/AuthMethodController.java @@ -22,6 +22,7 @@ import io.getlime.security.powerauth.lib.dataadapter.model.entity.FormData; import io.getlime.security.powerauth.lib.dataadapter.model.entity.OperationChange; import io.getlime.security.powerauth.lib.dataadapter.model.entity.OperationContext; +import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.OperationTerminationReason; import io.getlime.security.powerauth.lib.nextstep.client.NextStepClient; import io.getlime.security.powerauth.lib.nextstep.model.entity.*; import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthMethod; @@ -88,6 +89,9 @@ public abstract class AuthMethodController response = nextStepClient.updateOperation(operationId, userId, operation.getOrganizationId(), authMethod, AuthStepResult.CANCELED, cancelReason.toString(), params, applicationContext); // notify Data Adapter in case operation is in FAILED state now - if (response.getResponseObject().getResult()==AuthResult.FAILED) { + if (response.getResponseObject().getResult() == AuthResult.FAILED) { try { FormData formData = new FormDataConverter().fromOperationFormData(operation.getFormData()); OperationContext operationContext = new OperationContext(operation.getOperationId(), operation.getOperationName(), operation.getOperationData(), formData, applicationContext); dataAdapterClient.operationChangedNotification(OperationChange.CANCELED, userId, operation.getOrganizationId(), operationContext); + // notify AFS about logout + if (cancelReason == OperationCancelReason.OPERATION_TIMED_OUT) { + afsIntegrationService.executeLogoutAction(operationId, OperationTerminationReason.TIMED_OUT); + } else { + afsIntegrationService.executeLogoutAction(operationId, OperationTerminationReason.FAILED); + } } catch (DataAdapterClientErrorException ex) { logger.error("Error while notifying Data Adapter", ex); } } + // update operation result in operation to HTTP session mapping operationSessionService.updateOperationResult(operationId, response.getResponseObject().getResult()); filterStepsBasedOnActiveAuthMethods(response.getResponseObject().getSteps(), userId, operationId); @@ -435,6 +455,8 @@ private void cancelOperationsInHttpSession(String httpSessionId) { FormData formData = new FormDataConverter().fromOperationFormData(operation.getResponseObject().getFormData()); OperationContext operationContext = new OperationContext(operationDetail.getOperationId(), operationDetail.getOperationName(), operationDetail.getOperationData(), formData, applicationContext); dataAdapterClient.operationChangedNotification(OperationChange.CANCELED, operationDetail.getUserId(), operationDetail.getOrganizationId(), operationContext); + // notify AFS about logout + afsIntegrationService.executeLogoutAction(operationDetail.getOperationId(), OperationTerminationReason.INTERRUPTED); } catch (NextStepServiceException | DataAdapterClientErrorException e) { // errors occurring when canceling previous operations are not critical logger.error("Error while canceling previous operation", e); diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/listener/WebSocketDisconnectListener.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/listener/WebSocketDisconnectListener.java index ce64c48c6..a843213c3 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/listener/WebSocketDisconnectListener.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/listener/WebSocketDisconnectListener.java @@ -21,6 +21,7 @@ import io.getlime.security.powerauth.lib.dataadapter.model.entity.FormData; import io.getlime.security.powerauth.lib.dataadapter.model.entity.OperationChange; import io.getlime.security.powerauth.lib.dataadapter.model.entity.OperationContext; +import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.OperationTerminationReason; import io.getlime.security.powerauth.lib.nextstep.client.NextStepClient; import io.getlime.security.powerauth.lib.nextstep.model.entity.OperationHistory; import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthMethod; @@ -30,6 +31,7 @@ import io.getlime.security.powerauth.lib.nextstep.model.exception.NextStepServiceException; import io.getlime.security.powerauth.lib.nextstep.model.response.GetOperationDetailResponse; import io.getlime.security.powerauth.lib.webflow.authentication.model.converter.FormDataConverter; +import io.getlime.security.powerauth.lib.webflow.authentication.service.AfsIntegrationService; import io.getlime.security.powerauth.lib.webflow.authentication.service.AuthMethodResolutionService; import io.getlime.security.powerauth.lib.webflow.authentication.service.OperationSessionService; import org.slf4j.Logger; @@ -53,6 +55,7 @@ public class WebSocketDisconnectListener implements ApplicationListener extras = prepareExtrasForAfs(); // AuthStepResult is null due to init action AfsRequestParameters afsRequestParameters = new AfsRequestParameters(afsType, afsAction, clientIp, stepIndex, authStepResult, operationTerminationReason); - logger.info("Sending AFS action request, operation ID: {}", operation.getOperationId()); + logger.info("AFS action: {}, user ID: {}, operation ID: {}", afsAction, operation.getUserId(), operation.getOperationId()); ObjectResponse afsObjectResponse = dataAdapterClient.executeAfsAction(userId, organizationId, operationContext, afsRequestParameters, authInstruments, extras); - logger.info("AFS response received, operation ID: {}", operation.getOperationId()); // TODO - save AFS response in Next Step return afsObjectResponse.getResponseObject(); } else { @@ -180,15 +179,21 @@ private Map prepareExtrasForAfs() { Map extras = new LinkedHashMap<>(); AfsType afsType = configuration.getAfsType(); if (afsType == AfsType.THREAT_MARK) { - Cookie[] cookies = httpServletRequest.getCookies(); - if (cookies != null) { - for (Cookie cookie: cookies) { - // TODO - use configuration - if (cookie.getName().equals("CoBNX2ZROo")) { - extras.put("tm_device_tag", cookie.getValue()); - } - if (cookie.getName().equals("DV7mCBByG2")) { - extras.put("tm_session_sid", cookie.getValue()); + // RequestContextHolder is used instead of autowiring because of WebSocketDisconnectListener code which + // runs outside of DispatcherServlet. + RequestAttributes attr = RequestContextHolder.getRequestAttributes(); + if (attr instanceof NativeWebRequest) { + HttpServletRequest request = (HttpServletRequest) ((NativeWebRequest) attr).getNativeRequest(); + Cookie[] cookies = request.getCookies(); + if (cookies != null) { + for (Cookie cookie: cookies) { + // TODO - use configuration + if (cookie.getName().equals("CoBNX2ZROo")) { + extras.put("tm_device_tag", cookie.getValue()); + } + if (cookie.getName().equals("DV7mCBByG2")) { + extras.put("tm_session_sid", cookie.getValue()); + } } } } From 19b36bd6852f7f071725a23d76c4027c46fe3411 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Wed, 25 Sep 2019 18:37:24 +0200 Subject: [PATCH 065/197] AFS Next Step integration Step index derivation Reuse of AFS extras for logout, verification that logout action is meaningful --- docs/sql/mysql/create_schema.sql | 16 ++ docs/sql/oracle/create_schema.sql | 17 ++ docs/sql/postgresql/create_schema.sql | 19 +++ .../model/response/AfsResponse.java | 20 +-- .../lib/nextstep/client/NextStepClient.java | 36 ++++ .../model/entity/AfsActionDetail.java | 81 +++++++++ .../model/request/CreateAfsActionRequest.java | 126 ++++++++++++++ .../response/GetOperationDetailResponse.java | 15 +- .../controller/OperationController.java | 55 +++++- .../OperationAfsActionRepository.java | 30 ++++ .../entity/OperationAfsActionEntity.java | 157 ++++++++++++++++++ .../model/entity/OperationEntity.java | 17 +- .../service/OperationPersistenceService.java | 38 ++++- .../SmsAuthorizationController.java | 2 +- .../service/AfsIntegrationService.java | 94 ++++++++--- 15 files changed, 679 insertions(+), 44 deletions(-) create mode 100644 powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/entity/AfsActionDetail.java create mode 100644 powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/request/CreateAfsActionRequest.java create mode 100644 powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/repository/OperationAfsActionRepository.java create mode 100644 powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/repository/model/entity/OperationAfsActionEntity.java diff --git a/docs/sql/mysql/create_schema.sql b/docs/sql/mysql/create_schema.sql index 74eb97968..1961697b9 100644 --- a/docs/sql/mysql/create_schema.sql +++ b/docs/sql/mysql/create_schema.sql @@ -118,6 +118,7 @@ CREATE TABLE ns_operation ( user_id VARCHAR(256), organization_id VARCHAR(256), result VARCHAR(32), + afs_enabled BOOLEAN NOT NULL DEFAULT FALSE, timestamp_created TIMESTAMP DEFAULT CURRENT_TIMESTAMP, timestamp_expires TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY organization_fk (organization_id) REFERENCES ns_organization (organization_id) @@ -141,6 +142,20 @@ CREATE TABLE ns_operation_history ( FOREIGN KEY auth_method_fk (request_auth_method) REFERENCES ns_auth_method (auth_method) ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; +-- Table ns_operation_afs stores AFS requests and responses. +CREATE TABLE ns_operation_afs ( + afs_action_id INTEGER PRIMARY KEY NOT NULL AUTO_INCREMENT, + operation_id VARCHAR(256) NOT NULL, + request_afs_action VARCHAR(256) NOT NULL, + request_step_index INTEGER NOT NULL, + request_afs_extras VARCHAR(256), + response_afs_apply BOOLEAN NOT NULL DEFAULT FALSE, + response_afs_label VARCHAR(256), + response_afs_extras VARCHAR(256), + timestamp_created TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + FOREIGN KEY operation_afs_fk (operation_id) REFERENCES ns_operation (operation_id) +) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + -- Table ns_step_definition stores definitions of authentication/authorization steps. -- Data in this table needs to be loaded before Web Flow is started. CREATE TABLE ns_step_definition ( @@ -257,3 +272,4 @@ CREATE TABLE tpp_app_detail ( CREATE INDEX wf_operation_hash ON wf_operation_session (operation_hash); CREATE INDEX wf_websocket_session ON wf_operation_session (websocket_session_id); +CREATE UNIQUE INDEX ns_operation_afs_unique on ns_operation_afs (operation_id, request_afs_action, request_step_index); diff --git a/docs/sql/oracle/create_schema.sql b/docs/sql/oracle/create_schema.sql index e408ff9f1..84a32128d 100644 --- a/docs/sql/oracle/create_schema.sql +++ b/docs/sql/oracle/create_schema.sql @@ -3,6 +3,7 @@ -- CREATE SEQUENCE "TPP_USER_CONSENT_SEQ" MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER NOCYCLE; CREATE SEQUENCE "TPP_USER_CONSENT_HISTORY_SEQ" MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER NOCYCLE; +CREATE SEQUENCE "NS_OPERATION_AFS_SEQ" MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER NOCYCLE; -- Table oauth_client_details stores details about OAuth2 client applications. -- Every Web Flow client application should have a record in this table. @@ -148,6 +149,20 @@ CREATE TABLE ns_operation_history ( CONSTRAINT history_auth_method_fk FOREIGN KEY (request_auth_method) REFERENCES ns_auth_method (auth_method) ); +-- Table ns_operation_afs stores AFS requests and responses. +CREATE TABLE ns_operation_afs ( + afs_action_id INTEGER PRIMARY KEY NOT NULL, + operation_id VARCHAR(256) NOT NULL, + request_afs_action VARCHAR(256) NOT NULL, + request_step_index INTEGER NOT NULL, + request_afs_extras VARCHAR(256), + response_afs_apply NUMBER(1) DEFAULT 0 NOT NULL, + response_afs_label VARCHAR(256), + response_afs_extras VARCHAR(256), + timestamp_created TIMESTAMP, + FOREIGN KEY operation_afs_fk (operation_id) REFERENCES ns_operation (operation_id) +) + -- Table ns_step_definition stores definitions of authentication/authorization steps. -- Data in this table needs to be loaded before Web Flow is started. CREATE TABLE ns_step_definition ( @@ -244,3 +259,5 @@ CREATE TABLE tpp_user_consent_history ( CREATE INDEX wf_operation_hash ON wf_operation_session (operation_hash); CREATE INDEX wf_websocket_session ON wf_operation_session (websocket_session_id); +CREATE UNIQUE INDEX ns_operation_afs_unique on ns_operation_afs (operation_id, request_afs_action, request_step_index); + diff --git a/docs/sql/postgresql/create_schema.sql b/docs/sql/postgresql/create_schema.sql index 53f33ea46..2609f4cd2 100644 --- a/docs/sql/postgresql/create_schema.sql +++ b/docs/sql/postgresql/create_schema.sql @@ -3,6 +3,7 @@ -- CREATE SEQUENCE "tpp_user_consent_seq" MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20; CREATE SEQUENCE "tpp_user_consent_history_seq" MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20; +CREATE SEQUENCE "ns_operation_afs_seq" MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20; -- Table oauth_client_details stores details about OAuth2 client applications. -- Every Web Flow client application should have a record in this table. @@ -148,6 +149,20 @@ CREATE TABLE ns_operation_history ( CONSTRAINT history_auth_method_fk FOREIGN KEY (request_auth_method) REFERENCES ns_auth_method (auth_method) ); +-- Table ns_operation_afs stores AFS requests and responses. +CREATE TABLE ns_operation_afs ( + afs_action_id INTEGER PRIMARY KEY NOT NULL, + operation_id VARCHAR(256) NOT NULL, + request_afs_action VARCHAR(256) NOT NULL, + request_step_index INTEGER NOT NULL, + request_afs_extras VARCHAR(256), + response_afs_apply BOOLEAN NOT NULL DEFAULT FALSE, + response_afs_label VARCHAR(256), + response_afs_extras VARCHAR(256), + timestamp_created TIMESTAMP, + FOREIGN KEY operation_afs_fk (operation_id) REFERENCES ns_operation (operation_id) +) + -- Table ns_step_definition stores definitions of authentication/authorization steps. -- Data in this table needs to be loaded before Web Flow is started. CREATE TABLE ns_step_definition ( @@ -241,3 +256,7 @@ CREATE TABLE tpp_user_consent_history ( consent_parameters TEXT NOT NULL, timestamp_created TIMESTAMP ); + +CREATE INDEX wf_operation_hash ON wf_operation_session (operation_hash); +CREATE INDEX wf_websocket_session ON wf_operation_session (websocket_session_id); +CREATE UNIQUE INDEX ns_operation_afs_unique on ns_operation_afs (operation_id, request_afs_action, request_step_index); diff --git a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/response/AfsResponse.java b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/response/AfsResponse.java index 45af2db70..a56a0cbae 100644 --- a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/response/AfsResponse.java +++ b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/response/AfsResponse.java @@ -28,7 +28,7 @@ public class AfsResponse { /** * Whether AFS response should be applied in current authentication step. */ - private boolean applyAfsResponse = false; + private boolean afsResponseApplied = false; /** * AFS label specifying factors to be used during this authentication step. @@ -53,13 +53,13 @@ public AfsResponse() { /** * Constructor with all details. - * @param applyAfsResponse Whether AFS response should be applied in Web Flow. + * @param afsResponseApplied Whether AFS response should be applied in Web Flow. * @param afsLabel AFS label to be stored with the operation. - * @param authStepOptions Authentication step options for current step. Use null value case applyAfsResponse = false. + * @param authStepOptions Authentication step options for current step. Use null value case afsResponseApplied = false. * @param extras AFS extras. */ - public AfsResponse(boolean applyAfsResponse, String afsLabel, AuthStepOptions authStepOptions, Map extras) { - this.applyAfsResponse = applyAfsResponse; + public AfsResponse(boolean afsResponseApplied, String afsLabel, AuthStepOptions authStepOptions, Map extras) { + this.afsResponseApplied = afsResponseApplied; this.afsLabel = afsLabel; this.authStepOptions = authStepOptions; this.extras.putAll(extras); @@ -69,16 +69,16 @@ public AfsResponse(boolean applyAfsResponse, String afsLabel, AuthStepOptions au * Get whether AFS response should be applied in current authentication step. * @return Whether AFS response should be applied in current authentication step. */ - public boolean getApplyAfsResponse() { - return applyAfsResponse; + public boolean isAfsResponseApplied() { + return afsResponseApplied; } /** * Set whether AFS response should be applied in current authentication step. - * @param applyAfsResponse Whether AFS response should be applied in current authentication step. + * @param afsResponseApplied Whether AFS response should be applied in current authentication step. */ - public void setApplyAfsResponse(boolean applyAfsResponse) { - this.applyAfsResponse = applyAfsResponse; + public void setAfsResponseApplied(boolean afsResponseApplied) { + this.afsResponseApplied = afsResponseApplied; } /** diff --git a/powerauth-nextstep-client/src/main/java/io/getlime/security/powerauth/lib/nextstep/client/NextStepClient.java b/powerauth-nextstep-client/src/main/java/io/getlime/security/powerauth/lib/nextstep/client/NextStepClient.java index 1e4fb5b70..10c9de6ab 100644 --- a/powerauth-nextstep-client/src/main/java/io/getlime/security/powerauth/lib/nextstep/client/NextStepClient.java +++ b/powerauth-nextstep-client/src/main/java/io/getlime/security/powerauth/lib/nextstep/client/NextStepClient.java @@ -47,6 +47,7 @@ import java.io.IOException; import java.util.ArrayList; +import java.util.Date; import java.util.List; import java.util.Map; @@ -689,6 +690,41 @@ public ObjectResponse disableAuthMethodForUserPost(Strin } } + /** + * Create an AFS action in Next Step and log its request and response parameters. + * @param operationId Operation ID. + * @param afsAction AFS action. + * @param stepIndex Step index. + * @param requestAfsExtras AFS request extras. + * @param afsLabel AFS label. + * @param afsResponseApplied Whether AFS response was applied. + * @param responseAfsExtras AFS response extras. + * @return + * @throws NextStepServiceException + */ + public Response createAfsAction(String operationId, String afsAction, int stepIndex, String requestAfsExtras, String afsLabel, + boolean afsResponseApplied, String responseAfsExtras) throws NextStepServiceException { + try { + CreateAfsActionRequest request = new CreateAfsActionRequest(); + request.setOperationId(operationId); + request.setAfsAction(afsAction); + request.setStepIndex(stepIndex); + request.setRequestAfsExtras(requestAfsExtras); + request.setAfsLabel(afsLabel); + request.setAfsResponseApplied(afsResponseApplied); + request.setResponseAfsExtras(responseAfsExtras); + request.setTimestampCreated(new Date()); + HttpEntity> entity = new HttpEntity<>(new ObjectRequest<>(request)); + // Exchange next step request with NextStep server. + ResponseEntity response = restTemplate.exchange(serviceUrl + "/operation/afs", HttpMethod.POST, entity, Response.class); + return response.getBody(); + } catch (HttpStatusCodeException ex) { + throw handleHttpError(ex); + } catch (ResourceAccessException ex) { + throw handleResourceAccessError(ex); + } + } + /** * Handle resource access error (i.e. server not available). * @param ex Exception to handle. diff --git a/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/entity/AfsActionDetail.java b/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/entity/AfsActionDetail.java new file mode 100644 index 000000000..36012ba6f --- /dev/null +++ b/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/entity/AfsActionDetail.java @@ -0,0 +1,81 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.getlime.security.powerauth.lib.nextstep.model.entity; + +import java.util.Map; + +/** + * Class representing AFS action entities. + * + * @author Roman Strobl, roman.strobl@wultra.com + */ +public class AfsActionDetail { + + private String name; + private int stepIndex; + private String afsLabel; + private boolean afsResponseApplied; + private Map requestExtras; + private Map responseExtras; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getStepIndex() { + return stepIndex; + } + + public void setStepIndex(int stepIndex) { + this.stepIndex = stepIndex; + } + + public String getAfsLabel() { + return afsLabel; + } + + public void setAfsLabel(String afsLabel) { + this.afsLabel = afsLabel; + } + + public boolean isAfsResponseApplied() { + return afsResponseApplied; + } + + public void setAfsResponseApplied(boolean afsResponseApplied) { + this.afsResponseApplied = afsResponseApplied; + } + + public Map getRequestExtras() { + return requestExtras; + } + + public void setRequestExtras(Map requestExtras) { + this.requestExtras = requestExtras; + } + + public Map getResponseExtras() { + return responseExtras; + } + + public void setResponseExtras(Map responseExtras) { + this.responseExtras = responseExtras; + } +} diff --git a/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/request/CreateAfsActionRequest.java b/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/request/CreateAfsActionRequest.java new file mode 100644 index 000000000..1ad14fecb --- /dev/null +++ b/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/request/CreateAfsActionRequest.java @@ -0,0 +1,126 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.getlime.security.powerauth.lib.nextstep.model.request; + +import java.util.Date; + +/** + * Request object used for creating an anti-fraud system action in Next Step. + * + * @author Roman Strobl, roman.strobl@wultra.com + */ +public class CreateAfsActionRequest { + + private String operationId; + private String afsAction; + private int stepIndex; + private String requestAfsExtras; + private boolean afsResponseApplied; + private String afsLabel; + private String responseAfsExtras; + private Date timestampCreated; + + /** + * Default constructor. + */ + public CreateAfsActionRequest() { + } + + /** + * Constructor with all AFS action details. + * @param operationId Operation ID. + * @param afsAction Action in AFS request. + * @param stepIndex Step index for current action. + * @param requestAfsExtras AFS request extras. + * @param afsResponseApplied Whether AFS response is applied. + * @param afsLabel AFS label from response. + * @param responseAfsExtras AFS response extras. + */ + public CreateAfsActionRequest(String operationId, String afsAction, int stepIndex, String requestAfsExtras, boolean afsResponseApplied, String afsLabel, String responseAfsExtras) { + this.operationId = operationId; + this.afsAction = afsAction; + this.stepIndex = stepIndex; + this.requestAfsExtras = requestAfsExtras; + this.afsResponseApplied = afsResponseApplied; + this.afsLabel = afsLabel; + this.responseAfsExtras = responseAfsExtras; + this.timestampCreated = new Date(); + } + + public String getOperationId() { + return operationId; + } + + public void setOperationId(String operationId) { + this.operationId = operationId; + } + + public String getAfsAction() { + return afsAction; + } + + public void setAfsAction(String afsAction) { + this.afsAction = afsAction; + } + + public int getStepIndex() { + return stepIndex; + } + + public void setStepIndex(int stepIndex) { + this.stepIndex = stepIndex; + } + + public String getRequestAfsExtras() { + return requestAfsExtras; + } + + public void setRequestAfsExtras(String requestAfsExtras) { + this.requestAfsExtras = requestAfsExtras; + } + + public boolean isAfsResponseApplied() { + return afsResponseApplied; + } + + public void setAfsResponseApplied(boolean afsResponseApplied) { + this.afsResponseApplied = afsResponseApplied; + } + + public String getAfsLabel() { + return afsLabel; + } + + public void setAfsLabel(String afsLabel) { + this.afsLabel = afsLabel; + } + + public String getResponseAfsExtras() { + return responseAfsExtras; + } + + public void setResponseAfsExtras(String responseAfsExtras) { + this.responseAfsExtras = responseAfsExtras; + } + + public Date getTimestampCreated() { + return timestampCreated; + } + + public void setTimestampCreated(Date timestampCreated) { + this.timestampCreated = timestampCreated; + } +} diff --git a/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/response/GetOperationDetailResponse.java b/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/response/GetOperationDetailResponse.java index e93bf4be2..694a1c86d 100644 --- a/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/response/GetOperationDetailResponse.java +++ b/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/response/GetOperationDetailResponse.java @@ -15,10 +15,7 @@ */ package io.getlime.security.powerauth.lib.nextstep.model.response; -import io.getlime.security.powerauth.lib.nextstep.model.entity.ApplicationContext; -import io.getlime.security.powerauth.lib.nextstep.model.entity.AuthStep; -import io.getlime.security.powerauth.lib.nextstep.model.entity.OperationFormData; -import io.getlime.security.powerauth.lib.nextstep.model.entity.OperationHistory; +import io.getlime.security.powerauth.lib.nextstep.model.entity.*; import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthMethod; import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthResult; @@ -43,6 +40,7 @@ public class GetOperationDetailResponse { private String operationData; private List steps; private List history; + private List afsActions; private OperationFormData formData; private AuthMethod chosenAuthMethod; private Integer remainingAttempts; @@ -54,6 +52,7 @@ public class GetOperationDetailResponse { public GetOperationDetailResponse() { steps = new ArrayList<>(); history = new ArrayList<>(); + afsActions = new ArrayList<>(); } /** @@ -209,6 +208,14 @@ public List getHistory() { return history; } + /** + * Get the list with AFS action records. + * @return List with AFS action records. + */ + public List getAfsActions() { + return afsActions; + } + /** * Get form data (title, message, other visual attributes, ...) of the operation. * @return Form data. diff --git a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/controller/OperationController.java b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/controller/OperationController.java index 27bfb6209..a16ff9361 100644 --- a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/controller/OperationController.java +++ b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/controller/OperationController.java @@ -16,20 +16,19 @@ package io.getlime.security.powerauth.app.nextstep.controller; +import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.JavaType; import com.fasterxml.jackson.databind.ObjectMapper; import io.getlime.core.rest.model.base.request.ObjectRequest; import io.getlime.core.rest.model.base.response.ObjectResponse; import io.getlime.core.rest.model.base.response.Response; +import io.getlime.security.powerauth.app.nextstep.repository.model.entity.OperationAfsActionEntity; import io.getlime.security.powerauth.app.nextstep.repository.model.entity.OperationEntity; import io.getlime.security.powerauth.app.nextstep.repository.model.entity.OperationHistoryEntity; import io.getlime.security.powerauth.app.nextstep.service.OperationConfigurationService; import io.getlime.security.powerauth.app.nextstep.service.OperationPersistenceService; import io.getlime.security.powerauth.app.nextstep.service.StepResolutionService; -import io.getlime.security.powerauth.lib.nextstep.model.entity.ApplicationContext; -import io.getlime.security.powerauth.lib.nextstep.model.entity.AuthStep; -import io.getlime.security.powerauth.lib.nextstep.model.entity.OperationFormData; -import io.getlime.security.powerauth.lib.nextstep.model.entity.OperationHistory; +import io.getlime.security.powerauth.lib.nextstep.model.entity.*; import io.getlime.security.powerauth.lib.nextstep.model.exception.NextStepServiceException; import io.getlime.security.powerauth.lib.nextstep.model.exception.OperationAlreadyExistsException; import io.getlime.security.powerauth.lib.nextstep.model.exception.OperationNotConfiguredException; @@ -207,6 +206,7 @@ private Response updateOperationUserImpl(ObjectRequest request) throws OperationNotFoundException { + CreateAfsActionRequest afsRequest = request.getRequestObject(); + logger.info("Received createAfsAction request, operation ID: {}, AFS action: {}", afsRequest.getOperationId(), afsRequest.getAfsAction()); + // persist AFS action for operation + operationPersistenceService.createAfsAction(afsRequest); + logger.debug("The createAfsAction request succeeded"); + return new Response(); + + } + private Response updateApplicationContextImpl(ObjectRequest request) throws OperationNotFoundException { logger.info("Received updateApplicationContext request, operation ID: {}", request.getRequestObject().getOperationId()); // persist application context update @@ -457,4 +468,40 @@ private void assignOperationHistory(GetOperationDetailResponse response, Operati response.setChosenAuthMethod(currentHistory.getChosenAuthMethod()); } } + + + /** + * Assign AFS actions to operation. + * @param response Response to be enriched by AFS actions. + * @param operation Database entity representing operation. + */ + private void assignAfsActions(GetOperationDetailResponse response, OperationEntity operation) { + // add AFS actions + for (OperationAfsActionEntity afsAction: operation.getAfsActions()) { + AfsActionDetail action = new AfsActionDetail(); + action.setName(afsAction.getAfsAction()); + action.setStepIndex(afsAction.getStepIndex()); + action.setRequestExtras(convertExtrasToMap(afsAction.getRequestAfsExtras())); + action.setAfsResponseApplied(afsAction.isAfsResponseApplied()); + action.setAfsLabel(afsAction.getAfsLabel()); + action.setResponseExtras(convertExtrasToMap(afsAction.getResponseAfsExtras())); + response.getAfsActions().add(action); + } + } + + /** + * Convert extras String to map. + * @param extras String with extras. + * @return Extras map. + */ + private Map convertExtrasToMap(String extras) { + try { + TypeReference> typeRef + = new TypeReference>() {}; + return objectMapper.readValue(extras, typeRef); + } catch (IOException e) { + logger.error("Error occurred while deserializing data", e); + return null; + } + } } diff --git a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/repository/OperationAfsActionRepository.java b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/repository/OperationAfsActionRepository.java new file mode 100644 index 000000000..af4c6e872 --- /dev/null +++ b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/repository/OperationAfsActionRepository.java @@ -0,0 +1,30 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.getlime.security.powerauth.app.nextstep.repository; + +import io.getlime.security.powerauth.app.nextstep.repository.model.entity.OperationAfsActionEntity; +import org.springframework.data.repository.CrudRepository; +import org.springframework.stereotype.Component; + +/** + * Crud repository for persistence of AFS actions for operations. + * + * @author Roman Strobl, roman.strobl@wultra.com + */ +@Component +public interface OperationAfsActionRepository extends CrudRepository { + +} diff --git a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/repository/model/entity/OperationAfsActionEntity.java b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/repository/model/entity/OperationAfsActionEntity.java new file mode 100644 index 000000000..633bffbcd --- /dev/null +++ b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/repository/model/entity/OperationAfsActionEntity.java @@ -0,0 +1,157 @@ +/* + * Copyright 2017 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.getlime.security.powerauth.app.nextstep.repository.model.entity; + +import javax.persistence.*; +import java.io.Serializable; +import java.util.Date; +import java.util.Objects; + +/** + * Entity which stores AFS requests and responses. + * + * @author Roman Strobl, roman.strobl@wultra.com + */ +@Entity +@Table(name = "ns_operation_afs") +public class OperationAfsActionEntity implements Serializable { + + private static final long serialVersionUID = 744614077188309148L; + + @Id + @SequenceGenerator(name = "ns_operation_afs", sequenceName = "ns_operation_afs_seq") + @GeneratedValue(strategy = GenerationType.AUTO, generator = "ns_operation_afs") + @Column(name = "afs_action_id", nullable = false) + private Long afsActionId; + + @Column(name = "request_afs_action", nullable = false) + private String afsAction; + + @Column(name = "request_step_index", nullable = false) + private int stepIndex; + + @Column(name = "request_afs_extras") + private String requestAfsExtras; + + @Column(name = "response_afs_apply", nullable = false) + private boolean afsResponseApplied; + + @Column(name = "response_afs_label") + private String afsLabel; + + @Column(name = "response_afs_extras") + private String responseAfsExtras; + + @Column(name = "timestamp_created") + private Date timestampCreated; + + @ManyToOne + @JoinColumn(name = "operation_id", referencedColumnName = "operation_id", updatable = false) + private OperationEntity operation; + + public Long getAfsActionId() { + return afsActionId; + } + + public void setAfsActionId(Long afsActionId) { + this.afsActionId = afsActionId; + } + + public OperationEntity getOperation() { + return operation; + } + + public void setOperation(OperationEntity operation) { + this.operation = operation; + } + + public String getAfsAction() { + return afsAction; + } + + public void setAfsAction(String afsAction) { + this.afsAction = afsAction; + } + + public int getStepIndex() { + return stepIndex; + } + + public void setStepIndex(int stepIndex) { + this.stepIndex = stepIndex; + } + + public String getRequestAfsExtras() { + return requestAfsExtras; + } + + public void setRequestAfsExtras(String requestAfsExtras) { + this.requestAfsExtras = requestAfsExtras; + } + + public boolean isAfsResponseApplied() { + return afsResponseApplied; + } + + public void setAfsResponseApplied(boolean afsResponseApplied) { + this.afsResponseApplied = afsResponseApplied; + } + + public String getAfsLabel() { + return afsLabel; + } + + public void setAfsLabel(String afsLabel) { + this.afsLabel = afsLabel; + } + + public String getResponseAfsExtras() { + return responseAfsExtras; + } + + public void setResponseAfsExtras(String responseAfsExtras) { + this.responseAfsExtras = responseAfsExtras; + } + + public Date getTimestampCreated() { + return timestampCreated; + } + + public void setTimestampCreated(Date timestampCreated) { + this.timestampCreated = timestampCreated; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + OperationAfsActionEntity that = (OperationAfsActionEntity) o; + return stepIndex == that.stepIndex && + afsResponseApplied == that.afsResponseApplied && + afsActionId.equals(that.afsActionId) && + afsAction.equals(that.afsAction) && + Objects.equals(requestAfsExtras, that.requestAfsExtras) && + Objects.equals(afsLabel, that.afsLabel) && + Objects.equals(responseAfsExtras, that.responseAfsExtras) && + Objects.equals(timestampCreated, that.timestampCreated) && + operation.equals(that.operation); + } + + @Override + public int hashCode() { + return Objects.hash(afsActionId, afsAction, stepIndex, requestAfsExtras, afsResponseApplied, afsLabel, responseAfsExtras, timestampCreated, operation); + } +} diff --git a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/repository/model/entity/OperationEntity.java b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/repository/model/entity/OperationEntity.java index dbaa063a0..625c08d42 100644 --- a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/repository/model/entity/OperationEntity.java +++ b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/repository/model/entity/OperationEntity.java @@ -16,6 +16,8 @@ package io.getlime.security.powerauth.app.nextstep.repository.model.entity; import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthResult; +import org.hibernate.annotations.Fetch; +import org.hibernate.annotations.FetchMode; import javax.persistence.*; import java.io.Serializable; @@ -74,10 +76,15 @@ public class OperationEntity implements Serializable { @Column(name = "timestamp_expires") private Date timestampExpires; - @OneToMany(fetch = FetchType.EAGER, mappedBy = "operation") + @OneToMany(fetch = FetchType.EAGER, mappedBy = "operation", cascade = CascadeType.ALL) @OrderBy("result_id") private List operationHistory; + @OneToMany(fetch = FetchType.EAGER, mappedBy = "operation", cascade = CascadeType.ALL) + @OrderBy("timestamp_created") + @Fetch(value = FetchMode.SUBSELECT) + private List afsActions; + public String getOperationId() { return operationId; } @@ -199,6 +206,14 @@ public void setOperationHistory(List operationHistory) { this.operationHistory = operationHistory; } + public List getAfsActions() { + return afsActions; + } + + public void setAfsActions(List afsActions) { + this.afsActions = afsActions; + } + /** * Returns current OperationHistoryEntity. Null value is return in case there is no history for this operation. * diff --git a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/service/OperationPersistenceService.java b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/service/OperationPersistenceService.java index 5cbc7026e..c8b705b4c 100644 --- a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/service/OperationPersistenceService.java +++ b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/service/OperationPersistenceService.java @@ -19,9 +19,11 @@ import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import io.getlime.security.powerauth.app.nextstep.repository.AuthMethodRepository; +import io.getlime.security.powerauth.app.nextstep.repository.OperationAfsActionRepository; import io.getlime.security.powerauth.app.nextstep.repository.OperationHistoryRepository; import io.getlime.security.powerauth.app.nextstep.repository.OperationRepository; import io.getlime.security.powerauth.app.nextstep.repository.model.entity.AuthMethodEntity; +import io.getlime.security.powerauth.app.nextstep.repository.model.entity.OperationAfsActionEntity; import io.getlime.security.powerauth.app.nextstep.repository.model.entity.OperationEntity; import io.getlime.security.powerauth.app.nextstep.repository.model.entity.OperationHistoryEntity; import io.getlime.security.powerauth.lib.nextstep.model.entity.ApplicationContext; @@ -57,18 +59,21 @@ public class OperationPersistenceService { private final IdGeneratorService idGeneratorService; private final OperationRepository operationRepository; private final OperationHistoryRepository operationHistoryRepository; + private final OperationAfsActionRepository operationAfsActionRepository; private final AuthMethodRepository authMethodRepository; /** * Service constructor. - * @param idGeneratorService ID generator service. - * @param operationRepository Operation repository. - * @param operationHistoryRepository Operation history repository. - * @param authMethodRepository Authentication method repository. + * @param idGeneratorService ID generator service. + * @param operationRepository Operation repository. + * @param operationHistoryRepository Operation history repository. + * @param operationAfsActionRepository Operation AFS action repository. + * @param authMethodRepository Authentication method repository. */ @Autowired public OperationPersistenceService(IdGeneratorService idGeneratorService, OperationRepository operationRepository, - OperationHistoryRepository operationHistoryRepository, AuthMethodRepository authMethodRepository) { + OperationHistoryRepository operationHistoryRepository, OperationAfsActionRepository operationAfsActionRepository, AuthMethodRepository authMethodRepository) { + this.operationAfsActionRepository = operationAfsActionRepository; this.authMethodRepository = authMethodRepository; this.objectMapper = new ObjectMapper(); this.idGeneratorService = idGeneratorService; @@ -373,6 +378,29 @@ public List getResponseAuthSteps(OperationEntity operation) { return steps; } + /** + * Create an AFS action. + * @param request Request to crete an AFS action. + */ + public void createAfsAction(CreateAfsActionRequest request) { + try { + OperationAfsActionEntity afsEntity = new OperationAfsActionEntity(); + OperationEntity operation = getOperation(request.getOperationId()); + afsEntity.setOperation(operation); + afsEntity.setAfsAction(request.getAfsAction()); + afsEntity.setStepIndex(request.getStepIndex()); + afsEntity.setRequestAfsExtras(request.getRequestAfsExtras()); + afsEntity.setAfsLabel(request.getAfsLabel()); + afsEntity.setAfsResponseApplied(request.isAfsResponseApplied()); + afsEntity.setResponseAfsExtras(request.getResponseAfsExtras()); + afsEntity.setTimestampCreated(request.getTimestampCreated()); + operation.getAfsActions().add(afsEntity); + operationRepository.save(operation); + } catch (OperationNotFoundException e) { + logger.error("AFS action could not be saved because operation does not exist: {}", request.getOperationId()); + } + } + /** * Assign application context to an operation entity. * diff --git a/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java b/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java index ca6a6d1e9..3c957b57f 100644 --- a/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java +++ b/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java @@ -379,7 +379,7 @@ private void cleanHttpSession() { updateAuthStepOptionsInHttpSession(afsResponse.getAuthStepOptions()); // Process AFS response - if (afsResponse.getApplyAfsResponse()) { + if (afsResponse.isAfsResponseApplied()) { if (afsResponse.getAuthStepOptions() != null) { if (!afsResponse.getAuthStepOptions().isPasswordRequired()) { logger.debug("Disabling password verification based on AFS response in INIT step of authentication method: {}, operation ID: {}", authMethod, operation.getOperationId()); diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AfsIntegrationService.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AfsIntegrationService.java index 84ba6a0c7..34d278117 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AfsIntegrationService.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AfsIntegrationService.java @@ -15,6 +15,8 @@ */ package io.getlime.security.powerauth.lib.webflow.authentication.service; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; import io.getlime.core.rest.model.base.response.ObjectResponse; import io.getlime.security.powerauth.lib.dataadapter.client.DataAdapterClient; import io.getlime.security.powerauth.lib.dataadapter.client.DataAdapterClientErrorException; @@ -27,6 +29,7 @@ import io.getlime.security.powerauth.lib.dataadapter.model.request.AfsRequestParameters; import io.getlime.security.powerauth.lib.dataadapter.model.response.AfsResponse; import io.getlime.security.powerauth.lib.nextstep.client.NextStepClient; +import io.getlime.security.powerauth.lib.nextstep.model.entity.AfsActionDetail; import io.getlime.security.powerauth.lib.nextstep.model.entity.ApplicationContext; import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthStepResult; import io.getlime.security.powerauth.lib.nextstep.model.exception.NextStepServiceException; @@ -38,9 +41,9 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import org.springframework.web.context.request.NativeWebRequest; import org.springframework.web.context.request.RequestAttributes; import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; @@ -64,6 +67,8 @@ public class AfsIntegrationService { private final DataAdapterClient dataAdapterClient; private final OperationSessionService operationSessionService; + private final ObjectMapper objectMapper = new ObjectMapper(); + /** * Service constructor. * @param configuration Web Flow configuration. @@ -89,7 +94,7 @@ public AfsIntegrationService(WebFlowServicesConfiguration configuration, NextSte * @return Response from anti-fraud system. */ public AfsResponse executeInitAction(String operationId, AfsAction afsAction) { - return executeAfsAction(operationId, afsAction, Collections.emptyList(), 1, null, null); + return executeAfsAction(operationId, afsAction, Collections.emptyList(), null, null); } /** @@ -103,7 +108,7 @@ public AfsResponse executeInitAction(String operationId, AfsAction afsAction) { * @param authStepResult Authentication step result. */ public void executeAuthAction(String operationId, AfsAction afsAction, List authInstruments, int stepIndex, AuthStepResult authStepResult) { - executeAfsAction(operationId, afsAction, authInstruments, stepIndex, authStepResult, null); + executeAfsAction(operationId, afsAction, authInstruments, authStepResult, null); } /** @@ -114,7 +119,7 @@ public void executeAuthAction(String operationId, AfsAction afsAction, List authInstruments, int stepIndex, AuthStepResult authStepResult, OperationTerminationReason operationTerminationReason) { + private AfsResponse executeAfsAction(String operationId, AfsAction afsAction, List authInstruments, AuthStepResult authStepResult, OperationTerminationReason operationTerminationReason) { if (configuration.isAfsEnabled()) { logger.debug("AFS integration is enabled"); try { @@ -138,6 +142,12 @@ private AfsResponse executeAfsAction(String operationId, AfsAction afsAction, Li ObjectResponse objectResponse = nextStepClient.getOperationConfigDetail(operation.getOperationName()); GetOperationConfigDetailResponse config = objectResponse.getResponseObject(); if (config.isAfsEnabled()) { + logger.debug("AFS integration is enabled for operation name: {}", operation.getOperationName()); + // Check that at least one previous AFS operation was triggered before executing LOGOUT action + if (afsAction == AfsAction.LOGOUT && operation.getAfsActions().isEmpty()) { + logger.info("AFS action for logout event is not executed because no previous action is available for operation: {}", operationId); + return new AfsResponse(); + } // Prepare all AFS request parameters String userId = operation.getUserId(); String organizationId = operation.getOrganizationId(); @@ -146,13 +156,19 @@ private AfsResponse executeAfsAction(String operationId, AfsAction afsAction, Li OperationContext operationContext = new OperationContext(operation.getOperationId(), operation.getOperationName(), operation.getOperationData(), formData, applicationContext); AfsType afsType = configuration.getAfsType(); String clientIp = operationSessionService.getOperationToSessionMapping(operation.getOperationId()).getClientIp(); - Map extras = prepareExtrasForAfs(); + int stepIndex = deriveStepIndex(operation, afsAction); + Map requestAfsExtras = prepareExtrasForAfs(operation); // AuthStepResult is null due to init action AfsRequestParameters afsRequestParameters = new AfsRequestParameters(afsType, afsAction, clientIp, stepIndex, authStepResult, operationTerminationReason); - logger.info("AFS action: {}, user ID: {}, operation ID: {}", afsAction, operation.getUserId(), operation.getOperationId()); - ObjectResponse afsObjectResponse = dataAdapterClient.executeAfsAction(userId, organizationId, operationContext, afsRequestParameters, authInstruments, extras); - // TODO - save AFS response in Next Step - return afsObjectResponse.getResponseObject(); + logger.info("Executing AFS action: {}, user ID: {}, operation ID: {}", afsAction, operation.getUserId(), operation.getOperationId()); + ObjectResponse afsObjectResponse = dataAdapterClient.executeAfsAction(userId, organizationId, operationContext, afsRequestParameters, authInstruments, requestAfsExtras); + AfsResponse response = afsObjectResponse.getResponseObject(); + // Save ASF request and response in Next Step + String requestExtras = convertExtrasToString(requestAfsExtras); + String responseExtras = convertExtrasToString(response.getExtras()); + nextStepClient.createAfsAction(operationId, afsAction.toString(), stepIndex, requestExtras, response.getAfsLabel(), response.isAfsResponseApplied(), responseExtras); + logger.debug("AFS action succeeded: {}, user ID: {}, operation ID: {}", afsAction, operation.getUserId(), operation.getOperationId()); + return response; } else { logger.debug("AFS integration is disabled for operation name: {}", operation.getOperationName()); } @@ -170,23 +186,49 @@ private AfsResponse executeAfsAction(String operationId, AfsAction afsAction, Li return new AfsResponse(); } + /** + * Derive step index for current AFS action. + * @param operation Operation. + * @param afsAction AFS action. + * @return Step index of this AFS action. + */ + private int deriveStepIndex(GetOperationDetailResponse operation, AfsAction afsAction) { + int stepIndex = 1; + if (operation.getAfsActions().isEmpty()) { + return stepIndex; + } + for (AfsActionDetail action: operation.getAfsActions()) { + if (afsAction.toString().equals(action.getName())) { + stepIndex++; + } + } + return stepIndex; + } + /** * Prepare extras which are sent with request to AFS. These values are AFS type dependent. * * @return AFS extras. */ - private Map prepareExtrasForAfs() { + private Map prepareExtrasForAfs(GetOperationDetailResponse operation) { Map extras = new LinkedHashMap<>(); AfsType afsType = configuration.getAfsType(); if (afsType == AfsType.THREAT_MARK) { - // RequestContextHolder is used instead of autowiring because of WebSocketDisconnectListener code which - // runs outside of DispatcherServlet. - RequestAttributes attr = RequestContextHolder.getRequestAttributes(); - if (attr instanceof NativeWebRequest) { - HttpServletRequest request = (HttpServletRequest) ((NativeWebRequest) attr).getNativeRequest(); - Cookie[] cookies = request.getCookies(); + RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes(); + if (!(requestAttributes instanceof ServletRequestAttributes)) { + // The action is not dispatched using DispatcherServlet. This occurs in case of processing of the Web + // Socket close session event. Obtain AFS parameters from last regular request and reuse them. + List afsActions = operation.getAfsActions(); + if (!afsActions.isEmpty()) { + AfsActionDetail lastAction = afsActions.get(afsActions.size() - 1); + // Reuse extras from previous request + return lastAction.getRequestExtras(); + } + } else { + HttpServletRequest servletRequest = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + Cookie[] cookies = servletRequest.getCookies(); if (cookies != null) { - for (Cookie cookie: cookies) { + for (Cookie cookie : cookies) { // TODO - use configuration if (cookie.getName().equals("CoBNX2ZROo")) { extras.put("tm_device_tag", cookie.getValue()); @@ -201,4 +243,18 @@ private Map prepareExtrasForAfs() { return extras; } + /** + * Convert extras map to String. + * @param extras Extras map. + * @return String value of extras. + */ + private String convertExtrasToString(Map extras) { + try { + return objectMapper.writeValueAsString(extras); + } catch (JsonProcessingException e) { + logger.error("Error occurred while serializing data", e); + return null; + } + } + } From c321b217b0aa236918c670fffec88448a4c4a92b Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Wed, 25 Sep 2019 18:52:08 +0200 Subject: [PATCH 066/197] Next step ID generator configuration Threat Mark cookie configuration --- .../src/main/resources/application.properties | 3 ++ .../WebFlowServicesConfiguration.java | 29 +++++++++++++++++++ .../service/AfsIntegrationService.java | 9 +++--- .../src/main/resources/application.properties | 2 ++ 4 files changed, 39 insertions(+), 4 deletions(-) diff --git a/powerauth-nextstep/src/main/resources/application.properties b/powerauth-nextstep/src/main/resources/application.properties index 89cd51479..9d1b2e684 100644 --- a/powerauth-nextstep/src/main/resources/application.properties +++ b/powerauth-nextstep/src/main/resources/application.properties @@ -35,6 +35,9 @@ powerauth.nextstep.service.applicationName=powerauth-nextstep powerauth.nextstep.service.applicationDisplayName=PowerAuth 2.0 Next Step Server powerauth.nextstep.service.applicationEnvironment= +# Disable new Hibernate ID generators +spring.jpa.hibernate.use-new-id-generator-mappings=false + # Disable JMX spring.jmx.enabled=false diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/configuration/WebFlowServicesConfiguration.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/configuration/WebFlowServicesConfiguration.java index 757f9ad8f..8fe4a0a9d 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/configuration/WebFlowServicesConfiguration.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/configuration/WebFlowServicesConfiguration.java @@ -114,6 +114,18 @@ public class WebFlowServicesConfiguration { @Value("${powerauth.webflow.afs.forceIpv4:true}") private boolean afsIpv4Forced; + /** + * Configuration of tm_device_tag cookie for Threat Mark AFS integration. + */ + @Value("${powerauth.webflow.afs.tm.cookies.deviceTag}") + private String tmDeviceTagCookie; + + /** + * Configuration of tm_session_sid cookie for Threat Mark AFS integration. + */ + @Value("${powerauth.webflow.afs.tm.cookies.sessionSid}") + private String tmSessionSidCookie; + @Autowired public WebFlowServicesConfiguration(SSLConfigurationService sslConfigurationService) { this.sslConfigurationService = sslConfigurationService; @@ -244,4 +256,21 @@ public boolean isAfsIpAddressDetectionEnabled() { public boolean isAfsIpv4Forced() { return afsIpv4Forced; } + + /** + * Get name of tm_device_tag cookie for Threat Mark AFS integration. + * @return Name of tm_device_tag cookie for Threat Mark AFS integration. + */ + public String getTmDeviceTagCookie() { + return tmDeviceTagCookie; + } + + /** + * Get name of tm_session_sid cookie for Threat Mark AFS integration. + * @return Name of tm_session_sid cookie for Threat Mark AFS integration. + */ + public String getTmSessionSidCookie() { + return tmSessionSidCookie; + } + } diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AfsIntegrationService.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AfsIntegrationService.java index 34d278117..56afe291b 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AfsIntegrationService.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AfsIntegrationService.java @@ -227,13 +227,14 @@ private Map prepareExtrasForAfs(GetOperationDetailResponse opera } else { HttpServletRequest servletRequest = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); Cookie[] cookies = servletRequest.getCookies(); - if (cookies != null) { + String deviceTagCookie = configuration.getTmDeviceTagCookie(); + String sessionSidCookie = configuration.getTmSessionSidCookie(); + if (cookies != null && deviceTagCookie != null && sessionSidCookie != null) { for (Cookie cookie : cookies) { - // TODO - use configuration - if (cookie.getName().equals("CoBNX2ZROo")) { + if (cookie.getName().equals(deviceTagCookie)) { extras.put("tm_device_tag", cookie.getValue()); } - if (cookie.getName().equals("DV7mCBByG2")) { + if (cookie.getName().equals(sessionSidCookie)) { extras.put("tm_session_sid", cookie.getValue()); } } diff --git a/powerauth-webflow/src/main/resources/application.properties b/powerauth-webflow/src/main/resources/application.properties index 9c00088a3..2a0e592d8 100644 --- a/powerauth-webflow/src/main/resources/application.properties +++ b/powerauth-webflow/src/main/resources/application.properties @@ -75,6 +75,8 @@ powerauth.webflow.afs.enabled=false powerauth.webflow.afs.type=THREAT_MARK powerauth.webflow.afs.detectIpAddress=false powerauth.webflow.afs.forceIpv4=true +powerauth.webflow.afs.tm.cookies.deviceTag= +powerauth.webflow.afs.tm.cookies.sessionSid= # Disable JMX spring.jmx.enabled=false From e6bd5dcfef22f32d8716aaacf3dc1a137bf20bee Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Wed, 25 Sep 2019 19:03:38 +0200 Subject: [PATCH 067/197] DDL update, migration guide --- docs/Web-Flow-0.23.0.md | 38 +++++++++++++++++++++++++++++-- docs/sql/mysql/create_schema.sql | 1 - docs/sql/oracle/create_schema.sql | 2 +- 3 files changed, 37 insertions(+), 4 deletions(-) diff --git a/docs/Web-Flow-0.23.0.md b/docs/Web-Flow-0.23.0.md index b44f10e62..53d1629e5 100644 --- a/docs/Web-Flow-0.23.0.md +++ b/docs/Web-Flow-0.23.0.md @@ -7,11 +7,14 @@ Following database changes were introduced in version `0.23.0`: - Added `afs_enabled` and `afs_config_id` columns to table `ns_operation_config` -- Added `operation_hash` and `websocket_session_id` columns to table `wf_operation_session` -- New table `wf_afs_config` for configuration of anti-fraud system +- Added `operation_hash`, `websocket_session_id` and `client_ip` columns to table `wf_operation_session` +- New tables `ns_operation_afs` and `wf_afs_config` for integration of anti-fraud system +- Updated indexes and sequences DDL update script for Oracle: ```sql +CREATE SEQUENCE "NS_OPERATION_AFS_SEQ" MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER NOCYCLE; + ALTER TABLE ns_operation_config ADD afs_enabled NUMBER(1) DEFAULT 0 NOT NULL; ALTER TABLE ns_operation_config ADD afs_config_id VARCHAR(256); @@ -22,11 +25,26 @@ ALTER TABLE wf_operation_session ADD client_ip VARCHAR(32); CREATE INDEX wf_operation_hash ON wf_operation_session (operation_hash); CREATE INDEX wf_websocket_session ON wf_operation_session (websocket_session_id); +CREATE TABLE ns_operation_afs ( + afs_action_id INTEGER PRIMARY KEY NOT NULL, + operation_id VARCHAR(256) NOT NULL, + request_afs_action VARCHAR(256) NOT NULL, + request_step_index INTEGER NOT NULL, + request_afs_extras VARCHAR(256), + response_afs_apply NUMBER(1) DEFAULT 0 NOT NULL, + response_afs_label VARCHAR(256), + response_afs_extras VARCHAR(256), + timestamp_created TIMESTAMP, + FOREIGN KEY operation_afs_fk (operation_id) REFERENCES ns_operation (operation_id) +); + CREATE TABLE wf_afs_config ( config_id VARCHAR(256) PRIMARY KEY NOT NULL, js_snippet_url VARCHAR(256) NOT NULL, parameters CLOB ); + +CREATE UNIQUE INDEX ns_operation_afs_unique on ns_operation_afs (operation_id, request_afs_action, request_step_index); ``` DDL update script for MySQL: @@ -41,11 +59,27 @@ ALTER TABLE `wf_operation_session` ADD `client_ip` VARCHAR(32), CREATE INDEX `wf_operation_hash` ON `wf_operation_session` (`operation_hash`); CREATE INDEX `wf_websocket_session` ON `wf_operation_session` (`websocket_session_id`); +CREATE TABLE ns_operation_afs ( + afs_action_id INTEGER PRIMARY KEY NOT NULL AUTO_INCREMENT, + operation_id VARCHAR(256) NOT NULL, + request_afs_action VARCHAR(256) NOT NULL, + request_step_index INTEGER NOT NULL, + request_afs_extras VARCHAR(256), + response_afs_apply BOOLEAN NOT NULL DEFAULT FALSE, + response_afs_label VARCHAR(256), + response_afs_extras VARCHAR(256), + timestamp_created TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + FOREIGN KEY operation_afs_fk (operation_id) REFERENCES ns_operation (operation_id) +) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + + CREATE TABLE wf_afs_config ( config_id VARCHAR(256) PRIMARY KEY NOT NULL, js_snippet_url VARCHAR(256) NOT NULL, parameters TEXT ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + +CREATE UNIQUE INDEX `ns_operation_afs_unique` on `ns_operation_afs` (`operation_id`, `request_afs_action`, `request_step_index`); ``` ### Configuration of OAuth 2.0 Client diff --git a/docs/sql/mysql/create_schema.sql b/docs/sql/mysql/create_schema.sql index 1961697b9..31d78e03f 100644 --- a/docs/sql/mysql/create_schema.sql +++ b/docs/sql/mysql/create_schema.sql @@ -118,7 +118,6 @@ CREATE TABLE ns_operation ( user_id VARCHAR(256), organization_id VARCHAR(256), result VARCHAR(32), - afs_enabled BOOLEAN NOT NULL DEFAULT FALSE, timestamp_created TIMESTAMP DEFAULT CURRENT_TIMESTAMP, timestamp_expires TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY organization_fk (organization_id) REFERENCES ns_organization (organization_id) diff --git a/docs/sql/oracle/create_schema.sql b/docs/sql/oracle/create_schema.sql index 84a32128d..a1eb33545 100644 --- a/docs/sql/oracle/create_schema.sql +++ b/docs/sql/oracle/create_schema.sql @@ -161,7 +161,7 @@ CREATE TABLE ns_operation_afs ( response_afs_extras VARCHAR(256), timestamp_created TIMESTAMP, FOREIGN KEY operation_afs_fk (operation_id) REFERENCES ns_operation (operation_id) -) +); -- Table ns_step_definition stores definitions of authentication/authorization steps. -- Data in this table needs to be loaded before Web Flow is started. From 8a6ba97c18be13d4430ada3ce24383495f9554e6 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Wed, 25 Sep 2019 19:08:09 +0200 Subject: [PATCH 068/197] Drop schema script updates --- docs/sql/mysql/drop_schema.sql | 1 + docs/sql/oracle/drop_schema.sql | 7 +++++++ docs/sql/postgresql/drop_schema.sql | 1 + 3 files changed, 9 insertions(+) diff --git a/docs/sql/mysql/drop_schema.sql b/docs/sql/mysql/drop_schema.sql index fce990a93..65a7df858 100644 --- a/docs/sql/mysql/drop_schema.sql +++ b/docs/sql/mysql/drop_schema.sql @@ -2,6 +2,7 @@ DROP TABLE IF EXISTS da_sms_authorization; DROP TABLE IF EXISTS wf_afs_config; DROP TABLE IF EXISTS wf_operation_session; DROP TABLE IF EXISTS ns_step_definition; +DROP TABLE IF EXISTS ns_operation_afs; DROP TABLE IF EXISTS ns_operation_history; DROP TABLE IF EXISTS ns_operation; DROP TABLE IF EXISTS ns_operation_config; diff --git a/docs/sql/oracle/drop_schema.sql b/docs/sql/oracle/drop_schema.sql index a92336212..c04e26068 100644 --- a/docs/sql/oracle/drop_schema.sql +++ b/docs/sql/oracle/drop_schema.sql @@ -12,6 +12,13 @@ WHEN OTHERS THEN NULL; END; / +BEGIN +EXECUTE IMMEDIATE 'DROP TABLE wf_operation_afs'; +EXCEPTION +WHEN OTHERS THEN NULL; +END; +/ + BEGIN EXECUTE IMMEDIATE 'DROP TABLE wf_operation_session'; EXCEPTION diff --git a/docs/sql/postgresql/drop_schema.sql b/docs/sql/postgresql/drop_schema.sql index c7d4426c4..401ab1906 100644 --- a/docs/sql/postgresql/drop_schema.sql +++ b/docs/sql/postgresql/drop_schema.sql @@ -2,6 +2,7 @@ DROP TABLE IF EXISTS da_sms_authorization; DROP TABLE IF EXISTS wf_operation_session; DROP TABLE IF EXISTS wf_afs_config; DROP TABLE IF EXISTS ns_step_definition; +DROP TABLE IF EXISTS ns_operation_afs; DROP TABLE IF EXISTS ns_operation_history; DROP TABLE IF EXISTS ns_operation; DROP TABLE IF EXISTS ns_operation_config; From db0a4a085fb38124c5c7822a55ccd251ad3a1282 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Wed, 25 Sep 2019 19:12:33 +0200 Subject: [PATCH 069/197] Remove sample AFS configuration --- .../app/webflow/configuration/SecurityConfiguration.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/configuration/SecurityConfiguration.java b/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/configuration/SecurityConfiguration.java index 1c686fef0..abc703679 100644 --- a/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/configuration/SecurityConfiguration.java +++ b/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/configuration/SecurityConfiguration.java @@ -30,7 +30,7 @@ public class SecurityConfiguration extends WebSecurityConfigurerAdapter { /** - * Configurate http security for OAuth 2.0 authentication, URL exceptions, CSRF tokens, etc. + * Configure http security for OAuth 2.0 authentication, URL exceptions, CSRF tokens, etc. * @param http HTTP security. * @throws Exception Thrown when configuration fails. */ @@ -40,7 +40,7 @@ protected void configure(HttpSecurity http) throws Exception { .httpBasic().disable() .csrf().ignoringAntMatchers("/api/auth/token/app/**", "/api/push/**", "/pa/**").and() .antMatcher("/**").authorizeRequests() - .antMatchers("/", "/authenticate", "/authenticate/**", "/oauth/error", "/api/**", "/pa/**", "/resources/**", "/ext-resources/**", "/websocket/**", "/v2/api-docs", "/swagger-resources/**", "/swagger-ui.html", "/webjars/**", "/FDS/**").permitAll() + .antMatchers("/", "/authenticate", "/authenticate/**", "/oauth/error", "/api/**", "/pa/**", "/resources/**", "/ext-resources/**", "/websocket/**", "/v2/api-docs", "/swagger-resources/**", "/swagger-ui.html", "/webjars/**").permitAll() .anyRequest().authenticated() .and().exceptionHandling() .authenticationEntryPoint(new LoginUrlAuthenticationEntryPoint("/authenticate")); From 2ff81e18ffffa52c03aafa349cf9c2cbf6e95095 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Wed, 25 Sep 2019 19:56:29 +0200 Subject: [PATCH 070/197] Unify model parameter names --- .../lib/nextstep/model/entity/AfsActionDetail.java | 10 +++++----- .../app/nextstep/controller/OperationController.java | 2 +- .../authentication/service/AfsIntegrationService.java | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/entity/AfsActionDetail.java b/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/entity/AfsActionDetail.java index 36012ba6f..9415d4d84 100644 --- a/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/entity/AfsActionDetail.java +++ b/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/entity/AfsActionDetail.java @@ -24,19 +24,19 @@ */ public class AfsActionDetail { - private String name; + private String action; private int stepIndex; private String afsLabel; private boolean afsResponseApplied; private Map requestExtras; private Map responseExtras; - public String getName() { - return name; + public String getAction() { + return action; } - public void setName(String name) { - this.name = name; + public void setAction(String action) { + this.action = action; } public int getStepIndex() { diff --git a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/controller/OperationController.java b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/controller/OperationController.java index a16ff9361..871f05df1 100644 --- a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/controller/OperationController.java +++ b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/controller/OperationController.java @@ -479,7 +479,7 @@ private void assignAfsActions(GetOperationDetailResponse response, OperationEnti // add AFS actions for (OperationAfsActionEntity afsAction: operation.getAfsActions()) { AfsActionDetail action = new AfsActionDetail(); - action.setName(afsAction.getAfsAction()); + action.setAction(afsAction.getAfsAction()); action.setStepIndex(afsAction.getStepIndex()); action.setRequestExtras(convertExtrasToMap(afsAction.getRequestAfsExtras())); action.setAfsResponseApplied(afsAction.isAfsResponseApplied()); diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AfsIntegrationService.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AfsIntegrationService.java index 56afe291b..9b56139cf 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AfsIntegrationService.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AfsIntegrationService.java @@ -197,8 +197,8 @@ private int deriveStepIndex(GetOperationDetailResponse operation, AfsAction afsA if (operation.getAfsActions().isEmpty()) { return stepIndex; } - for (AfsActionDetail action: operation.getAfsActions()) { - if (afsAction.toString().equals(action.getName())) { + for (AfsActionDetail detail: operation.getAfsActions()) { + if (afsAction.toString().equals(detail.getAction())) { stepIndex++; } } From a50a70f68e6779966dd4e4293d7667d9c3423b43 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Wed, 25 Sep 2019 20:12:01 +0200 Subject: [PATCH 071/197] Fix copy-and-paste errors. --- .../lib/dataadapter/model/request/AfsRequest.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/AfsRequest.java b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/AfsRequest.java index 9136d8fc7..6abd763d8 100644 --- a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/AfsRequest.java +++ b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/AfsRequest.java @@ -41,7 +41,7 @@ public class AfsRequest { private String organizationId; /** - * Operation context which provides context for creating the consent form. + * Operation context. */ private OperationContext operationContext; @@ -70,7 +70,7 @@ public AfsRequest() { * Constructor with all details. * @param userId User ID. * @param organizationId Organization ID. - * @param operationContext Operation context which provides context for creating the consent form. + * @param operationContext Operation context. * @param afsRequestParameters Request parameters for AFS. * @param authInstruments Authentication instruments used during this authentication step. * @param extras Extra parameters for AFS. @@ -117,16 +117,16 @@ public void setOrganizationId(String organizationId) { } /** - * Get operation context which provides context for creating the consent form. - * @return Operation context which provides context for creating the consent form. + * Get operation context. + * @return Operation context. */ public OperationContext getOperationContext() { return operationContext; } /** - * Set operation context which provides context for creating the consent form. - * @param operationContext Operation context which provides context for creating the consent form. + * Set operation context. + * @param operationContext Operation context. */ public void setOperationContext(OperationContext operationContext) { this.operationContext = operationContext; From 7fcac02f3b717615a6118249ed60b0b5c6a48271 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Wed, 25 Sep 2019 21:02:33 +0200 Subject: [PATCH 072/197] Update IP address parameter name --- docs/Web-Flow-0.23.0.md | 6 +++--- docs/sql/mysql/create_schema.sql | 2 +- docs/sql/oracle/create_schema.sql | 2 +- docs/sql/postgresql/create_schema.sql | 2 +- .../mtoken/controller/MessageController.java | 4 ++-- .../interceptor/WebSocketHandshakeInterceptor.java | 6 +++--- .../model/entity/OperationSessionEntity.java | 10 +++++----- .../authentication/service/AfsIntegrationService.java | 4 ++-- .../service/OperationSessionService.java | 6 +++--- .../service/WebSocketMessageService.java | 6 +++--- 10 files changed, 24 insertions(+), 24 deletions(-) diff --git a/docs/Web-Flow-0.23.0.md b/docs/Web-Flow-0.23.0.md index 53d1629e5..52129651d 100644 --- a/docs/Web-Flow-0.23.0.md +++ b/docs/Web-Flow-0.23.0.md @@ -7,7 +7,7 @@ Following database changes were introduced in version `0.23.0`: - Added `afs_enabled` and `afs_config_id` columns to table `ns_operation_config` -- Added `operation_hash`, `websocket_session_id` and `client_ip` columns to table `wf_operation_session` +- Added `operation_hash`, `websocket_session_id` and `client_ip_address` columns to table `wf_operation_session` - New tables `ns_operation_afs` and `wf_afs_config` for integration of anti-fraud system - Updated indexes and sequences @@ -20,7 +20,7 @@ ALTER TABLE ns_operation_config ADD afs_config_id VARCHAR(256); ALTER TABLE wf_operation_session ADD operation_hash VARCHAR(256); ALTER TABLE wf_operation_session ADD websocket_session_id VARCHAR(32); -ALTER TABLE wf_operation_session ADD client_ip VARCHAR(32); +ALTER TABLE wf_operation_session ADD client_ip_address VARCHAR(32); CREATE INDEX wf_operation_hash ON wf_operation_session (operation_hash); CREATE INDEX wf_websocket_session ON wf_operation_session (websocket_session_id); @@ -54,7 +54,7 @@ ALTER TABLE `ns_operation_config` ADD `afs_config_id` VARCHAR(256); ALTER TABLE `wf_operation_session` ADD `operation_hash` VARCHAR(256), ALTER TABLE `wf_operation_session` ADD `websocket_session_id` VARCHAR(32), -ALTER TABLE `wf_operation_session` ADD `client_ip` VARCHAR(32), +ALTER TABLE `wf_operation_session` ADD `client_ip_address` VARCHAR(32), CREATE INDEX `wf_operation_hash` ON `wf_operation_session` (`operation_hash`); CREATE INDEX `wf_websocket_session` ON `wf_operation_session` (`websocket_session_id`); diff --git a/docs/sql/mysql/create_schema.sql b/docs/sql/mysql/create_schema.sql index 31d78e03f..e088e0ad3 100644 --- a/docs/sql/mysql/create_schema.sql +++ b/docs/sql/mysql/create_schema.sql @@ -177,7 +177,7 @@ CREATE TABLE wf_operation_session ( http_session_id VARCHAR(256) NOT NULL, operation_hash VARCHAR(256), websocket_session_id VARCHAR(32), - client_ip VARCHAR(32), + client_ip_address VARCHAR(32), result VARCHAR(32) NOT NULL, timestamp_created TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; diff --git a/docs/sql/oracle/create_schema.sql b/docs/sql/oracle/create_schema.sql index a1eb33545..8f0bddec9 100644 --- a/docs/sql/oracle/create_schema.sql +++ b/docs/sql/oracle/create_schema.sql @@ -185,7 +185,7 @@ CREATE TABLE wf_operation_session ( http_session_id VARCHAR(256) NOT NULL, operation_hash VARCHAR(256), websocket_session_id VARCHAR(32), - client_ip VARCHAR(32), + client_ip_address VARCHAR(32), result VARCHAR(32) NOT NULL, timestamp_created TIMESTAMP ); diff --git a/docs/sql/postgresql/create_schema.sql b/docs/sql/postgresql/create_schema.sql index 2609f4cd2..458ed3737 100644 --- a/docs/sql/postgresql/create_schema.sql +++ b/docs/sql/postgresql/create_schema.sql @@ -185,7 +185,7 @@ CREATE TABLE wf_operation_session ( http_session_id VARCHAR(256) NOT NULL, operation_hash VARCHAR(256), websocket_session_id VARCHAR(32), - client_ip VARCHAR(32), + client_ip_address VARCHAR(32), result VARCHAR(32) NOT NULL, timestamp_created TIMESTAMP ); diff --git a/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/controller/MessageController.java b/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/controller/MessageController.java index f74558ff3..4b509526a 100644 --- a/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/controller/MessageController.java +++ b/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/controller/MessageController.java @@ -49,8 +49,8 @@ public MessageController(WebSocketMessageService webSocketMessageService) { public void register(SimpMessageHeaderAccessor headerAccessor, WebSocketRegistrationRequest registrationRequest) { String sessionId = headerAccessor.getSessionId(); String webSocketId = registrationRequest.getWebSocketId(); - String clientIp = (String) headerAccessor.getSessionAttributes().get("client_ip"); - webSocketMessageService.storeWebSocketSession(webSocketId, sessionId, clientIp); + String clientIpAddress = (String) headerAccessor.getSessionAttributes().get("client_ip_address"); + webSocketMessageService.storeWebSocketSession(webSocketId, sessionId, clientIpAddress); webSocketMessageService.sendRegistrationMessage(webSocketId, sessionId); } diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/interceptor/WebSocketHandshakeInterceptor.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/interceptor/WebSocketHandshakeInterceptor.java index c7f89e3e3..c85bc6bcc 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/interceptor/WebSocketHandshakeInterceptor.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/interceptor/WebSocketHandshakeInterceptor.java @@ -35,12 +35,12 @@ public WebSocketHandshakeInterceptor(boolean detectIpAddress, boolean forceIpv4) @Override public boolean beforeHandshake(@NonNull ServerHttpRequest request, @NonNull ServerHttpResponse response, @NonNull WebSocketHandler wsHandler, @NonNull Map attributes) { - // Set client_ip attribute in WebSocket session, either from the X-FORWARDED-FOR HTTP header, if it is not + // Set client_ip_address attribute in WebSocket session, either from the X-FORWARDED-FOR HTTP header, if it is not // available, use servlet request remote IP address. if (request instanceof ServletServerHttpRequest) { if (!detectIpAddress) { // IP address detection is skipped, use empty String for AFS (null value is not usable in ConcurrentHashMap) - attributes.put("client_ip", ""); + attributes.put("client_ip_address", ""); return true; } HttpServletRequest servletRequest = ((ServletServerHttpRequest) request).getServletRequest(); @@ -60,7 +60,7 @@ public boolean beforeHandshake(@NonNull ServerHttpRequest request, @NonNull Serv ipAddress = servletRequest.getRemoteAddr(); } - attributes.put("client_ip", ipAddress); + attributes.put("client_ip_address", ipAddress); } return true; } diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/repository/model/entity/OperationSessionEntity.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/repository/model/entity/OperationSessionEntity.java index 9664ade69..6d0f52f8c 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/repository/model/entity/OperationSessionEntity.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/repository/model/entity/OperationSessionEntity.java @@ -46,8 +46,8 @@ public class OperationSessionEntity implements Serializable { @Column(name = "websocket_session_id") private String webSocketSessionId; - @Column(name = "client_ip") - private String clientIp; + @Column(name = "client_ip_address") + private String clientIpAddress; @Column(name = "result") @Enumerated(EnumType.STRING) @@ -100,11 +100,11 @@ public void setWebSocketSessionId(String webSocketSessionId) { } public String getClientIp() { - return clientIp; + return clientIpAddress; } - public void setClientIp(String clientIp) { - this.clientIp = clientIp; + public void setClientIp(String clientIpAddress) { + this.clientIpAddress = clientIpAddress; } public AuthResult getResult() { diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AfsIntegrationService.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AfsIntegrationService.java index 9b56139cf..09710e051 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AfsIntegrationService.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AfsIntegrationService.java @@ -155,11 +155,11 @@ private AfsResponse executeAfsAction(String operationId, AfsAction afsAction, Li ApplicationContext applicationContext = operation.getApplicationContext(); OperationContext operationContext = new OperationContext(operation.getOperationId(), operation.getOperationName(), operation.getOperationData(), formData, applicationContext); AfsType afsType = configuration.getAfsType(); - String clientIp = operationSessionService.getOperationToSessionMapping(operation.getOperationId()).getClientIp(); + String clientIpAddress = operationSessionService.getOperationToSessionMapping(operation.getOperationId()).getClientIp(); int stepIndex = deriveStepIndex(operation, afsAction); Map requestAfsExtras = prepareExtrasForAfs(operation); // AuthStepResult is null due to init action - AfsRequestParameters afsRequestParameters = new AfsRequestParameters(afsType, afsAction, clientIp, stepIndex, authStepResult, operationTerminationReason); + AfsRequestParameters afsRequestParameters = new AfsRequestParameters(afsType, afsAction, clientIpAddress, stepIndex, authStepResult, operationTerminationReason); logger.info("Executing AFS action: {}, user ID: {}, operation ID: {}", afsAction, operation.getUserId(), operation.getOperationId()); ObjectResponse afsObjectResponse = dataAdapterClient.executeAfsAction(userId, organizationId, operationContext, afsRequestParameters, authInstruments, requestAfsExtras); AfsResponse response = afsObjectResponse.getResponseObject(); diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/OperationSessionService.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/OperationSessionService.java index 9cc7c0cc3..419de749f 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/OperationSessionService.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/OperationSessionService.java @@ -142,13 +142,13 @@ public String lookupOperationIdByWebSocketSessionId(String webSocketSessionId) { * Lookup an operation by operation hash and store Web Socket session ID. * @param operationHash Operation hash. * @param webSocketSessionId Web Socket session ID. - * @param clientIp Remote client IP address. + * @param clientIpAddress Remote client IP address. */ - public void storeWebSocketSessionId(String operationHash, String webSocketSessionId, String clientIp) { + public void storeWebSocketSessionId(String operationHash, String webSocketSessionId, String clientIpAddress) { OperationSessionEntity operationSessionEntity = operationSessionRepository.findByOperationHash(operationHash); if (operationSessionEntity != null) { operationSessionEntity.setWebSocketSessionId(webSocketSessionId); - operationSessionEntity.setClientIp(clientIp); + operationSessionEntity.setClientIp(clientIpAddress); operationSessionRepository.save(operationSessionEntity); } } diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/WebSocketMessageService.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/WebSocketMessageService.java index efc2867ae..895500b1a 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/WebSocketMessageService.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/WebSocketMessageService.java @@ -90,10 +90,10 @@ public String lookupWebSocketSessionId(String operationHash) { * * @param operationHash Operation hash. * @param webSocketSessionId Web Socket Session ID. - * @param clientIp Remote client IP address. + * @param clientIpAddress Remote client IP address. */ - public void storeWebSocketSession(String operationHash, String webSocketSessionId, String clientIp) { - operationSessionService.storeWebSocketSessionId(operationHash, webSocketSessionId, clientIp); + public void storeWebSocketSession(String operationHash, String webSocketSessionId, String clientIpAddress) { + operationSessionService.storeWebSocketSessionId(operationHash, webSocketSessionId, clientIpAddress); } } From b1ea13500351d731c38e901acfe76f30b136dddf Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Thu, 26 Sep 2019 16:34:30 +0200 Subject: [PATCH 073/197] Fix error logging logic --- .../webflow/controller/HomeController.java | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/controller/HomeController.java b/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/controller/HomeController.java index 3d0c876cf..f4592c00e 100644 --- a/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/controller/HomeController.java +++ b/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/controller/HomeController.java @@ -137,18 +137,20 @@ public String authenticate(Map model, HttpServletRequest request String operationName = objectResponse.getResponseObject().getOperationName(); ObjectResponse objectResponseConfig = nextStepClient.getOperationConfigDetail(operationName); GetOperationConfigDetailResponse config = objectResponseConfig.getResponseObject(); - if (config.isAfsEnabled() && config.getAfsConfigId() != null) { - Optional afsConfig = afsConfigRepository.findById(config.getAfsConfigId()); - if (afsConfig.isPresent()) { - String afsJsSnippet = afsConfig.get().getJsSnippetUrl(); - if (afsJsSnippet != null) { - model.put("afs_js_snippet_url", afsJsSnippet); + if (config.isAfsEnabled()) { + if (config.getAfsConfigId() != null) { + Optional afsConfig = afsConfigRepository.findById(config.getAfsConfigId()); + if (afsConfig.isPresent()) { + String afsJsSnippet = afsConfig.get().getJsSnippetUrl(); + if (afsJsSnippet != null) { + model.put("afs_js_snippet_url", afsJsSnippet); + } + } else { + logger.error("AFS configuration is not available in Web Flow: {}", config.getAfsConfigId()); } } else { - logger.error("AFS configuration is not available in Web Flow: {}", config.getAfsConfigId()); + logger.error("AFS configuration is invalid for operation name: {}", config.getOperationName()); } - } else if (config.getAfsConfigId() == null) { - logger.error("AFS configuration is invalid for operation name: {}", config.getOperationName()); } } From 9f350e92fe6057f3f807f461c6f59344a32b1f2d Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Thu, 26 Sep 2019 16:41:37 +0200 Subject: [PATCH 074/197] Improve conditional logic for LOGOUT AFS action --- .../service/AfsIntegrationService.java | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AfsIntegrationService.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AfsIntegrationService.java index 09710e051..f9ca0ded6 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AfsIntegrationService.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AfsIntegrationService.java @@ -144,8 +144,8 @@ private AfsResponse executeAfsAction(String operationId, AfsAction afsAction, Li if (config.isAfsEnabled()) { logger.debug("AFS integration is enabled for operation name: {}", operation.getOperationName()); // Check that at least one previous AFS operation was triggered before executing LOGOUT action - if (afsAction == AfsAction.LOGOUT && operation.getAfsActions().isEmpty()) { - logger.info("AFS action for logout event is not executed because no previous action is available for operation: {}", operationId); + if (afsAction == AfsAction.LOGOUT && !canExecuteLogout(operation)) { + logger.debug("AFS action for LOGOUT event is not executed because previous LOGIN_AUTH action is not available for operation: {}", operationId); return new AfsResponse(); } // Prepare all AFS request parameters @@ -186,6 +186,23 @@ private AfsResponse executeAfsAction(String operationId, AfsAction afsAction, Li return new AfsResponse(); } + /** + * Determine whether LOGOUT AFS action is meaningful, a LOGIN_AUTH AFS action within same operation must be already present. + * @param operation Operation. + * @return Whether LOGOUT AFS action can be executed. + */ + private boolean canExecuteLogout(GetOperationDetailResponse operation) { + if (operation.getAfsActions().isEmpty()) { + return false; + } + for (AfsActionDetail detail: operation.getAfsActions()) { + if (AfsAction.LOGIN_AUTH.toString().equals(detail.getAction())) { + return true; + } + } + return false; + } + /** * Derive step index for current AFS action. * @param operation Operation. From 48da4ebc7c2235d737ceddca5d962ef152203825 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Thu, 26 Sep 2019 17:39:37 +0200 Subject: [PATCH 075/197] Use less arguments in Data Adapter call for AFS --- .../dataadapter/client/DataAdapterClient.java | 6 ++---- .../dataadapter/model/request/AfsRequest.java | 20 +----------------- .../model/request/AfsRequestParameters.java | 21 ++++++++++++++++++- .../service/AfsIntegrationService.java | 4 ++-- 4 files changed, 25 insertions(+), 26 deletions(-) diff --git a/powerauth-data-adapter-client/src/main/java/io/getlime/security/powerauth/lib/dataadapter/client/DataAdapterClient.java b/powerauth-data-adapter-client/src/main/java/io/getlime/security/powerauth/lib/dataadapter/client/DataAdapterClient.java index 3b40313eb..bcc09f92f 100644 --- a/powerauth-data-adapter-client/src/main/java/io/getlime/security/powerauth/lib/dataadapter/client/DataAdapterClient.java +++ b/powerauth-data-adapter-client/src/main/java/io/getlime/security/powerauth/lib/dataadapter/client/DataAdapterClient.java @@ -23,7 +23,6 @@ import io.getlime.core.rest.model.base.request.ObjectRequest; import io.getlime.core.rest.model.base.response.ObjectResponse; import io.getlime.security.powerauth.lib.dataadapter.model.entity.*; -import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.AuthInstrument; import io.getlime.security.powerauth.lib.dataadapter.model.request.*; import io.getlime.security.powerauth.lib.dataadapter.model.response.*; import org.springframework.core.ParameterizedTypeReference; @@ -448,14 +447,13 @@ public ObjectResponse saveConsentForm(String userId, St * @param organizationId Organization ID. * @param operationContext Operation context. * @param afsRequestParameters Request parameters for AFS. - * @param authInstruments Authentication instruments used during this authentication step. * @param extras Extra parameters for AFS. * @return Response with indication whether consent form was successfully saved. * @throws DataAdapterClientErrorException Thrown when client request fails. */ - public ObjectResponse executeAfsAction(String userId, String organizationId, OperationContext operationContext, AfsRequestParameters afsRequestParameters, List authInstruments, Map extras) throws DataAdapterClientErrorException { + public ObjectResponse executeAfsAction(String userId, String organizationId, OperationContext operationContext, AfsRequestParameters afsRequestParameters, Map extras) throws DataAdapterClientErrorException { try { - AfsRequest request = new AfsRequest(userId, organizationId, operationContext, afsRequestParameters, authInstruments, extras); + AfsRequest request = new AfsRequest(userId, organizationId, operationContext, afsRequestParameters, extras); HttpEntity> entity = new HttpEntity<>(new ObjectRequest<>(request)); ResponseEntity> response = restTemplate.exchange( serviceUrl + "/api/afs/action", HttpMethod.POST, entity, diff --git a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/AfsRequest.java b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/AfsRequest.java index 6abd763d8..fe948454f 100644 --- a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/AfsRequest.java +++ b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/AfsRequest.java @@ -16,11 +16,8 @@ package io.getlime.security.powerauth.lib.dataadapter.model.request; import io.getlime.security.powerauth.lib.dataadapter.model.entity.OperationContext; -import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.AuthInstrument; -import java.util.ArrayList; import java.util.LinkedHashMap; -import java.util.List; import java.util.Map; /** @@ -50,11 +47,6 @@ public class AfsRequest { */ private AfsRequestParameters afsRequestParameters; - /** - * Authentication instruments used during this authentication step. - */ - private final List authInstruments = new ArrayList<>(); - /** * Extra parameters sent with the request depending on AFS type, e.g. cookies for Threat Mark. */ @@ -72,15 +64,13 @@ public AfsRequest() { * @param organizationId Organization ID. * @param operationContext Operation context. * @param afsRequestParameters Request parameters for AFS. - * @param authInstruments Authentication instruments used during this authentication step. * @param extras Extra parameters for AFS. */ - public AfsRequest(String userId, String organizationId, OperationContext operationContext, AfsRequestParameters afsRequestParameters, List authInstruments, Map extras) { + public AfsRequest(String userId, String organizationId, OperationContext operationContext, AfsRequestParameters afsRequestParameters, Map extras) { this.userId = userId; this.organizationId = organizationId; this.operationContext = operationContext; this.afsRequestParameters = afsRequestParameters; - this.authInstruments.addAll(authInstruments); this.extras.putAll(extras); } @@ -148,14 +138,6 @@ public void setAfsRequestParameters(AfsRequestParameters afsRequestParameters) { this.afsRequestParameters = afsRequestParameters; } - /** - * Get authentication authentication instruments used during this step. - * @return Authentication authentication instruments used during this step. - */ - public List getAuthInstruments() { - return authInstruments; - } - /** * Extra parameters sent with the request depending on AFS type, e.g. cookies for Threat Mark. * @return Get extra parameters for AFS. diff --git a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/AfsRequestParameters.java b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/AfsRequestParameters.java index 8824fa507..1a7e1ba03 100644 --- a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/AfsRequestParameters.java +++ b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/AfsRequestParameters.java @@ -17,9 +17,13 @@ import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.AfsAction; import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.AfsType; +import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.AuthInstrument; import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.OperationTerminationReason; import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthStepResult; +import java.util.ArrayList; +import java.util.List; + public class AfsRequestParameters { /** @@ -42,6 +46,11 @@ public class AfsRequestParameters { */ private int stepIndex; + /** + * Authentication instruments used during this authentication step. + */ + private final List authInstruments = new ArrayList<>(); + /** * Authentication step result. */ @@ -64,14 +73,16 @@ public AfsRequestParameters() { * @param afsAction AFS action. * @param clientIpAddress Client IP address. * @param stepIndex Index counter for this authentication step. + * @param authInstruments Authentication instruments used during this authentication step. * @param authStepResult Authentication step result. * @param operationTerminationReason Reason why operation was terminated. */ - public AfsRequestParameters(AfsType afsType, AfsAction afsAction, String clientIpAddress, int stepIndex, AuthStepResult authStepResult, OperationTerminationReason operationTerminationReason) { + public AfsRequestParameters(AfsType afsType, AfsAction afsAction, String clientIpAddress, int stepIndex, List authInstruments, AuthStepResult authStepResult, OperationTerminationReason operationTerminationReason) { this.afsType = afsType; this.afsAction = afsAction; this.clientIpAddress = clientIpAddress; this.stepIndex = stepIndex; + this.authInstruments.addAll(authInstruments); this.authStepResult = authStepResult; this.operationTerminationReason = operationTerminationReason; } @@ -139,6 +150,14 @@ public void setStepIndex(int stepIndex) { this.stepIndex = stepIndex; } + /** + * Get authentication authentication instruments used during this step. + * @return Authentication authentication instruments used during this step. + */ + public List getAuthInstruments() { + return authInstruments; + } + /** * Get authentication step result. * @return Authentication step result. diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AfsIntegrationService.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AfsIntegrationService.java index f9ca0ded6..f12d58c10 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AfsIntegrationService.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AfsIntegrationService.java @@ -159,9 +159,9 @@ private AfsResponse executeAfsAction(String operationId, AfsAction afsAction, Li int stepIndex = deriveStepIndex(operation, afsAction); Map requestAfsExtras = prepareExtrasForAfs(operation); // AuthStepResult is null due to init action - AfsRequestParameters afsRequestParameters = new AfsRequestParameters(afsType, afsAction, clientIpAddress, stepIndex, authStepResult, operationTerminationReason); + AfsRequestParameters afsRequestParameters = new AfsRequestParameters(afsType, afsAction, clientIpAddress, stepIndex,authInstruments, authStepResult, operationTerminationReason); logger.info("Executing AFS action: {}, user ID: {}, operation ID: {}", afsAction, operation.getUserId(), operation.getOperationId()); - ObjectResponse afsObjectResponse = dataAdapterClient.executeAfsAction(userId, organizationId, operationContext, afsRequestParameters, authInstruments, requestAfsExtras); + ObjectResponse afsObjectResponse = dataAdapterClient.executeAfsAction(userId, organizationId, operationContext, afsRequestParameters, requestAfsExtras); AfsResponse response = afsObjectResponse.getResponseObject(); // Save ASF request and response in Next Step String requestExtras = convertExtrasToString(requestAfsExtras); From f2b822050f7053d040350b6a53f6713ff618bb6f Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Fri, 27 Sep 2019 09:40:24 +0200 Subject: [PATCH 076/197] Unify naming conventions --- .../lib/nextstep/model/enumeration/OperationCancelReason.java | 2 +- .../authentication/controller/AuthMethodController.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/enumeration/OperationCancelReason.java b/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/enumeration/OperationCancelReason.java index a176cb7d3..0c5dd4752 100644 --- a/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/enumeration/OperationCancelReason.java +++ b/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/enumeration/OperationCancelReason.java @@ -50,7 +50,7 @@ public enum OperationCancelReason { /** * Operation has timed out. */ - OPERATION_TIMED_OUT; + TIMED_OUT_OPERATION; /** * Convert String value to OperationCancelReason enum value. diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/controller/AuthMethodController.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/controller/AuthMethodController.java index 225d0a6dc..9815087c1 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/controller/AuthMethodController.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/controller/AuthMethodController.java @@ -146,7 +146,7 @@ protected void checkOperationExpiration(GetOperationDetailResponse operation) th if (operation.isExpired()) { logger.warn("Operation has timed out, operation ID: {}", operation.getOperationId()); try { - cancelAuthorization(operation.getOperationId(), operation.getUserId(), OperationCancelReason.OPERATION_TIMED_OUT, null); + cancelAuthorization(operation.getOperationId(), operation.getUserId(), OperationCancelReason.TIMED_OUT_OPERATION, null); } catch (Exception e) { logger.error(e.getMessage(), e); } @@ -336,7 +336,7 @@ protected UpdateOperationResponse cancelAuthorization(String operationId, String OperationContext operationContext = new OperationContext(operation.getOperationId(), operation.getOperationName(), operation.getOperationData(), formData, applicationContext); dataAdapterClient.operationChangedNotification(OperationChange.CANCELED, userId, operation.getOrganizationId(), operationContext); // notify AFS about logout - if (cancelReason == OperationCancelReason.OPERATION_TIMED_OUT) { + if (cancelReason == OperationCancelReason.TIMED_OUT_OPERATION) { afsIntegrationService.executeLogoutAction(operationId, OperationTerminationReason.TIMED_OUT); } else { afsIntegrationService.executeLogoutAction(operationId, OperationTerminationReason.FAILED); From a29c92b91072cc8c7c9d12c2e916e818155082c9 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Fri, 27 Sep 2019 15:55:58 +0200 Subject: [PATCH 077/197] Add username field which is used by AFS before user is authenticated --- .../model/request/AfsRequestParameters.java | 13 +++++++++--- .../SmsAuthorizationController.java | 21 +++++++++++++------ .../service/AfsIntegrationService.java | 16 +++++++------- 3 files changed, 34 insertions(+), 16 deletions(-) diff --git a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/AfsRequestParameters.java b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/AfsRequestParameters.java index 1a7e1ba03..e89243c26 100644 --- a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/AfsRequestParameters.java +++ b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/AfsRequestParameters.java @@ -46,6 +46,11 @@ public class AfsRequestParameters { */ private int stepIndex; + /** + * Username filled in by the user. This value is used for user identification before user is authenticated. + */ + private String username; + /** * Authentication instruments used during this authentication step. */ @@ -62,26 +67,28 @@ public class AfsRequestParameters { private OperationTerminationReason operationTerminationReason; /** - * Default constuctor. + * Default constructor. */ public AfsRequestParameters() { } /** - * Constuctor with all details. + * Constructor with all details. * @param afsType AFS product type. * @param afsAction AFS action. * @param clientIpAddress Client IP address. * @param stepIndex Index counter for this authentication step. + * @param username Username filled in by the user, which is used before user is authenticated. * @param authInstruments Authentication instruments used during this authentication step. * @param authStepResult Authentication step result. * @param operationTerminationReason Reason why operation was terminated. */ - public AfsRequestParameters(AfsType afsType, AfsAction afsAction, String clientIpAddress, int stepIndex, List authInstruments, AuthStepResult authStepResult, OperationTerminationReason operationTerminationReason) { + public AfsRequestParameters(AfsType afsType, AfsAction afsAction, String clientIpAddress, int stepIndex, String username, List authInstruments, AuthStepResult authStepResult, OperationTerminationReason operationTerminationReason) { this.afsType = afsType; this.afsAction = afsAction; this.clientIpAddress = clientIpAddress; this.stepIndex = stepIndex; + this.username = username; this.authInstruments.addAll(authInstruments); this.authStepResult = authStepResult; this.operationTerminationReason = operationTerminationReason; diff --git a/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java b/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java index 3c957b57f..793d11463 100644 --- a/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java +++ b/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java @@ -355,9 +355,10 @@ private void cleanHttpSession() { initResponse.setSmsOtpEnabled(true); initResponse.setPasswordEnabled(true); + String username = null; if (authMethod == AuthMethod.LOGIN_SCA) { // Add username for LOGIN_SCA method - String username = getUsernameFromHttpSession(); + username = getUsernameFromHttpSession(); initResponse.setUsername(username); } @@ -373,7 +374,7 @@ private void cleanHttpSession() { } // Execute an AFS action - AfsResponse afsResponse = afsIntegrationService.executeInitAction(operation.getOperationId(), afsAction); + AfsResponse afsResponse = afsIntegrationService.executeInitAction(operation.getOperationId(), username, afsAction); // Save authentication step options derived from AFS response for authenticate step updateAuthStepOptionsInHttpSession(afsResponse.getAuthStepOptions()); @@ -478,6 +479,14 @@ private void cleanHttpSession() { public @ResponseBody SmsAuthorizationResponse authenticateHandler(@RequestBody SmsAuthorizationRequest request) throws AuthStepException { final GetOperationDetailResponse operation = getOperation(); final AuthMethod authMethod = getAuthMethodName(operation); + // Extract username for LOGIN_SCA + final String username; + if (authMethod == AuthMethod.LOGIN_SCA) { + username = getUsernameFromHttpSession(); + } else { + // In other methods user ID is already available + username = null; + } // Choose current AFS action final AfsAction afsAction; final List authInstruments = new ArrayList<>(); @@ -507,7 +516,7 @@ private void cleanHttpSession() { @Override public SmsAuthorizationResponse doneAuthentication(String userId) { if (afsAction != null) { - afsIntegrationService.executeAuthAction(operation.getOperationId(), afsAction, authInstruments, 1, AuthStepResult.CONFIRMED); + afsIntegrationService.executeAuthAction(operation.getOperationId(), afsAction, username, authInstruments, 1, AuthStepResult.CONFIRMED); } authenticateCurrentBrowserSession(); final SmsAuthorizationResponse response = new SmsAuthorizationResponse(); @@ -520,7 +529,7 @@ public SmsAuthorizationResponse doneAuthentication(String userId) { @Override public SmsAuthorizationResponse failedAuthentication(String userId, String failedReason) { if (afsAction != null) { - afsIntegrationService.executeAuthAction(operation.getOperationId(), afsAction, authInstruments, 1, AuthStepResult.AUTH_FAILED); + afsIntegrationService.executeAuthAction(operation.getOperationId(), afsAction, username, authInstruments, 1, AuthStepResult.AUTH_FAILED); } clearCurrentBrowserSession(); final SmsAuthorizationResponse response = new SmsAuthorizationResponse(); @@ -533,7 +542,7 @@ public SmsAuthorizationResponse failedAuthentication(String userId, String faile @Override public SmsAuthorizationResponse continueAuthentication(String operationId, String userId, List steps) { if (afsAction != null) { - afsIntegrationService.executeAuthAction(operation.getOperationId(), afsAction, authInstruments, 1, AuthStepResult.CONFIRMED); + afsIntegrationService.executeAuthAction(operation.getOperationId(), afsAction, username, authInstruments, 1, AuthStepResult.CONFIRMED); } final SmsAuthorizationResponse response = new SmsAuthorizationResponse(); response.setResult(AuthStepResult.CONFIRMED); @@ -546,7 +555,7 @@ public SmsAuthorizationResponse continueAuthentication(String operationId, Strin } catch (AuthStepException e) { logger.warn("Error occurred while verifying authorization code from SMS message: {}", e.getMessage()); if (afsAction != null) { - afsIntegrationService.executeAuthAction(operation.getOperationId(), afsAction, authInstruments, 1, AuthStepResult.AUTH_FAILED); + afsIntegrationService.executeAuthAction(operation.getOperationId(), afsAction, username, authInstruments, 1, AuthStepResult.AUTH_FAILED); } final SmsAuthorizationResponse response = new SmsAuthorizationResponse(); response.setResult(AuthStepResult.AUTH_FAILED); diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AfsIntegrationService.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AfsIntegrationService.java index f12d58c10..f3c4f10d4 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AfsIntegrationService.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AfsIntegrationService.java @@ -90,11 +90,12 @@ public AfsIntegrationService(WebFlowServicesConfiguration configuration, NextSte * The response from AFS is applied in Web Flow. * * @param operationId Operation ID. + * @param username Username filled in by the user. Use null in case user is already authenticated. * @param afsAction AFS action to be executed. * @return Response from anti-fraud system. */ - public AfsResponse executeInitAction(String operationId, AfsAction afsAction) { - return executeAfsAction(operationId, afsAction, Collections.emptyList(), null, null); + public AfsResponse executeInitAction(String operationId, String username, AfsAction afsAction) { + return executeAfsAction(operationId, afsAction, Collections.emptyList(), null, username, null); } /** @@ -103,12 +104,13 @@ public AfsResponse executeInitAction(String operationId, AfsAction afsAction) { * * @param operationId Operation ID. * @param afsAction AFS action to be executed. + * @param username Username filled in by the user. Use null in case user is already authenticated. * @param authInstruments Authentication instruments used in this step. * @param stepIndex Index in current authentication step. * @param authStepResult Authentication step result. */ - public void executeAuthAction(String operationId, AfsAction afsAction, List authInstruments, int stepIndex, AuthStepResult authStepResult) { - executeAfsAction(operationId, afsAction, authInstruments, authStepResult, null); + public void executeAuthAction(String operationId, AfsAction afsAction, String username, List authInstruments, int stepIndex, AuthStepResult authStepResult) { + executeAfsAction(operationId, afsAction, authInstruments, authStepResult, username, null); } /** @@ -119,7 +121,7 @@ public void executeAuthAction(String operationId, AfsAction afsAction, List authInstruments, AuthStepResult authStepResult, OperationTerminationReason operationTerminationReason) { + private AfsResponse executeAfsAction(String operationId, AfsAction afsAction, List authInstruments, AuthStepResult authStepResult, String username, OperationTerminationReason operationTerminationReason) { if (configuration.isAfsEnabled()) { logger.debug("AFS integration is enabled"); try { @@ -159,7 +161,7 @@ private AfsResponse executeAfsAction(String operationId, AfsAction afsAction, Li int stepIndex = deriveStepIndex(operation, afsAction); Map requestAfsExtras = prepareExtrasForAfs(operation); // AuthStepResult is null due to init action - AfsRequestParameters afsRequestParameters = new AfsRequestParameters(afsType, afsAction, clientIpAddress, stepIndex,authInstruments, authStepResult, operationTerminationReason); + AfsRequestParameters afsRequestParameters = new AfsRequestParameters(afsType, afsAction, clientIpAddress, stepIndex, username, authInstruments, authStepResult, operationTerminationReason); logger.info("Executing AFS action: {}, user ID: {}, operation ID: {}", afsAction, operation.getUserId(), operation.getOperationId()); ObjectResponse afsObjectResponse = dataAdapterClient.executeAfsAction(userId, organizationId, operationContext, afsRequestParameters, requestAfsExtras); AfsResponse response = afsObjectResponse.getResponseObject(); From efe3ce00733d4665d06286c9ce6a932ba79a1fd5 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Sun, 29 Sep 2019 20:54:43 +0200 Subject: [PATCH 078/197] Removed obsolete stepIndex parameters, JavaDoc updates --- .../powerauth/lib/nextstep/client/NextStepClient.java | 4 ++-- .../sms/controller/SmsAuthorizationController.java | 8 ++++---- .../authentication/service/AfsIntegrationService.java | 5 ++--- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/powerauth-nextstep-client/src/main/java/io/getlime/security/powerauth/lib/nextstep/client/NextStepClient.java b/powerauth-nextstep-client/src/main/java/io/getlime/security/powerauth/lib/nextstep/client/NextStepClient.java index 10c9de6ab..9327efcb2 100644 --- a/powerauth-nextstep-client/src/main/java/io/getlime/security/powerauth/lib/nextstep/client/NextStepClient.java +++ b/powerauth-nextstep-client/src/main/java/io/getlime/security/powerauth/lib/nextstep/client/NextStepClient.java @@ -699,8 +699,8 @@ public ObjectResponse disableAuthMethodForUserPost(Strin * @param afsLabel AFS label. * @param afsResponseApplied Whether AFS response was applied. * @param responseAfsExtras AFS response extras. - * @return - * @throws NextStepServiceException + * @return Response. + * @throws NextStepServiceException In case communication with Next Step fails. */ public Response createAfsAction(String operationId, String afsAction, int stepIndex, String requestAfsExtras, String afsLabel, boolean afsResponseApplied, String responseAfsExtras) throws NextStepServiceException { diff --git a/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java b/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java index 793d11463..c375d5dfa 100644 --- a/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java +++ b/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java @@ -516,7 +516,7 @@ private void cleanHttpSession() { @Override public SmsAuthorizationResponse doneAuthentication(String userId) { if (afsAction != null) { - afsIntegrationService.executeAuthAction(operation.getOperationId(), afsAction, username, authInstruments, 1, AuthStepResult.CONFIRMED); + afsIntegrationService.executeAuthAction(operation.getOperationId(), afsAction, username, authInstruments, AuthStepResult.CONFIRMED); } authenticateCurrentBrowserSession(); final SmsAuthorizationResponse response = new SmsAuthorizationResponse(); @@ -529,7 +529,7 @@ public SmsAuthorizationResponse doneAuthentication(String userId) { @Override public SmsAuthorizationResponse failedAuthentication(String userId, String failedReason) { if (afsAction != null) { - afsIntegrationService.executeAuthAction(operation.getOperationId(), afsAction, username, authInstruments, 1, AuthStepResult.AUTH_FAILED); + afsIntegrationService.executeAuthAction(operation.getOperationId(), afsAction, username, authInstruments, AuthStepResult.AUTH_FAILED); } clearCurrentBrowserSession(); final SmsAuthorizationResponse response = new SmsAuthorizationResponse(); @@ -542,7 +542,7 @@ public SmsAuthorizationResponse failedAuthentication(String userId, String faile @Override public SmsAuthorizationResponse continueAuthentication(String operationId, String userId, List steps) { if (afsAction != null) { - afsIntegrationService.executeAuthAction(operation.getOperationId(), afsAction, username, authInstruments, 1, AuthStepResult.CONFIRMED); + afsIntegrationService.executeAuthAction(operation.getOperationId(), afsAction, username, authInstruments, AuthStepResult.CONFIRMED); } final SmsAuthorizationResponse response = new SmsAuthorizationResponse(); response.setResult(AuthStepResult.CONFIRMED); @@ -555,7 +555,7 @@ public SmsAuthorizationResponse continueAuthentication(String operationId, Strin } catch (AuthStepException e) { logger.warn("Error occurred while verifying authorization code from SMS message: {}", e.getMessage()); if (afsAction != null) { - afsIntegrationService.executeAuthAction(operation.getOperationId(), afsAction, username, authInstruments, 1, AuthStepResult.AUTH_FAILED); + afsIntegrationService.executeAuthAction(operation.getOperationId(), afsAction, username, authInstruments, AuthStepResult.AUTH_FAILED); } final SmsAuthorizationResponse response = new SmsAuthorizationResponse(); response.setResult(AuthStepResult.AUTH_FAILED); diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AfsIntegrationService.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AfsIntegrationService.java index f3c4f10d4..5e3a9349d 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AfsIntegrationService.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AfsIntegrationService.java @@ -77,7 +77,7 @@ public class AfsIntegrationService { * @param operationSessionService Operation session service. */ @Autowired - public AfsIntegrationService(WebFlowServicesConfiguration configuration, NextStepClient nextStepClient, DataAdapterClient dataAdapterClient, OperationSessionService operationSessionService, HttpServletRequest httpServletRequest) { + public AfsIntegrationService(WebFlowServicesConfiguration configuration, NextStepClient nextStepClient, DataAdapterClient dataAdapterClient, OperationSessionService operationSessionService) { this.configuration = configuration; this.nextStepClient = nextStepClient; this.dataAdapterClient = dataAdapterClient; @@ -106,10 +106,9 @@ public AfsResponse executeInitAction(String operationId, String username, AfsAct * @param afsAction AFS action to be executed. * @param username Username filled in by the user. Use null in case user is already authenticated. * @param authInstruments Authentication instruments used in this step. - * @param stepIndex Index in current authentication step. * @param authStepResult Authentication step result. */ - public void executeAuthAction(String operationId, AfsAction afsAction, String username, List authInstruments, int stepIndex, AuthStepResult authStepResult) { + public void executeAuthAction(String operationId, AfsAction afsAction, String username, List authInstruments, AuthStepResult authStepResult) { executeAfsAction(operationId, afsAction, authInstruments, authStepResult, username, null); } From dea26704fcff134f98c8a25156adc8fbc79fa1d9 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Wed, 2 Oct 2019 19:59:45 +0200 Subject: [PATCH 079/197] Fix #682: Allow configuration of mobile token availability per operation --- docs/Web-Flow-0.22.0.md | 5 ++ docs/sql/mysql/create_schema.sql | 1 + docs/sql/oracle/create_schema.sql | 1 + .../GetOperationConfigDetailResponse.java | 17 +++++ .../converter/OperationConfigConverter.java | 1 + .../model/entity/OperationConfigEntity.java | 19 +++++ .../service/OperationPersistenceService.java | 71 +++++++++++++------ .../controller/ApprovalScaInitController.java | 2 +- .../controller/LoginScaInitController.java | 4 +- .../service/AuthMethodQueryService.java | 38 +++++++--- 10 files changed, 127 insertions(+), 32 deletions(-) diff --git a/docs/Web-Flow-0.22.0.md b/docs/Web-Flow-0.22.0.md index 979f6a7e7..98a9e3fdf 100644 --- a/docs/Web-Flow-0.22.0.md +++ b/docs/Web-Flow-0.22.0.md @@ -79,6 +79,8 @@ ALTER TABLE ns_auth_method ADD has_mobile_token NUMBER(1) DEFAULT 0; UPDATE ns_auth_method SET has_mobile_token = 1 WHERE auth_method = 'POWERAUTH_TOKEN'; +ALTER TABLE ns_operation_config ADD mobile_token_enabled NUMBER(1) DEFAULT 0 NOT NULL; + COMMIT; ``` @@ -193,6 +195,9 @@ UPDATE `da_sms_authorization` SET `verified` = FALSE WHERE `verified` IS NULL; ALTER TABLE `da_sms_authorization` ADD `has_mobile_token` BOOLEAN DEFAULT FALSE; UPDATE `ns_auth_method` SET `has_mobile_token` = TRUE WHERE `auth_method` = 'POWERAUTH_TOKEN'; + +ALTER TABLE `ns_operation_config` ADD `mobile_token_enabled` BOOLEAN DEFAULT FALSE NOT NULL; + ``` As the next step, please add new authentication methods `CONSENT`, `LOGIN_SCA` and `APPROVAL_SCA`. The `order_number` parameter should be updated to exceed maximum `order_number` in table `ns_auth_method` by 1 for `CONSENT`, by 2 for `LOGIN_SCA` and by 3 for `APPROVAL_SCA`. diff --git a/docs/sql/mysql/create_schema.sql b/docs/sql/mysql/create_schema.sql index 257051e46..8f1698cf7 100644 --- a/docs/sql/mysql/create_schema.sql +++ b/docs/sql/mysql/create_schema.sql @@ -89,6 +89,7 @@ CREATE TABLE ns_operation_config ( operation_name VARCHAR(32) PRIMARY KEY NOT NULL, template_version CHAR NOT NULL, template_id INTEGER NOT NULL, + mobile_token_enabled BOOLEAN DEFAULT FALSE NOT NULL, mobile_token_mode VARCHAR(256) NOT NULL ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; diff --git a/docs/sql/oracle/create_schema.sql b/docs/sql/oracle/create_schema.sql index 15da7403c..62974ea06 100644 --- a/docs/sql/oracle/create_schema.sql +++ b/docs/sql/oracle/create_schema.sql @@ -89,6 +89,7 @@ CREATE TABLE ns_operation_config ( operation_name VARCHAR(32) PRIMARY KEY NOT NULL, template_version VARCHAR(1) NOT NULL, template_id INTEGER NOT NULL, + mobile_token_enabled NUMBER(1) DEFAULT 0 NOT NULL, mobile_token_mode VARCHAR(256) NOT NULL ); diff --git a/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/response/GetOperationConfigDetailResponse.java b/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/response/GetOperationConfigDetailResponse.java index 025512c13..739e323bb 100644 --- a/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/response/GetOperationConfigDetailResponse.java +++ b/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/response/GetOperationConfigDetailResponse.java @@ -25,6 +25,7 @@ public class GetOperationConfigDetailResponse { private String operationName; private String templateVersion; private Integer templateId; + private boolean mobileTokenEnabled; private String mobileTokenMode; /** @@ -75,6 +76,22 @@ public void setTemplateId(Integer templateId) { this.templateId = templateId; } + /** + * Get whether mobile token is enabled for this operation. + * @return Whether mobile token is enabled. + */ + public boolean isMobileTokenEnabled() { + return mobileTokenEnabled; + } + + /** + * Set whether mobile token is enabled for this operation. + * @param mobileTokenEnabled Whether mobile token is enabled. + */ + public void setMobileTokenEnabled(boolean mobileTokenEnabled) { + this.mobileTokenEnabled = mobileTokenEnabled; + } + /** * Get mobile token mode - JSON configuration of mobile token signatures. * @return Mobile token mode. diff --git a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/converter/OperationConfigConverter.java b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/converter/OperationConfigConverter.java index 0860a9506..ae7fd4568 100644 --- a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/converter/OperationConfigConverter.java +++ b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/converter/OperationConfigConverter.java @@ -35,6 +35,7 @@ public GetOperationConfigDetailResponse fromOperationConfigEntity(OperationConfi response.setOperationName(operationConfig.getOperationName()); response.setTemplateVersion(operationConfig.getTemplateVersion()); response.setTemplateId(operationConfig.getTemplateId()); + response.setMobileTokenEnabled(operationConfig.isMobileTokenEnabled()); response.setMobileTokenMode(operationConfig.getMobileTokenMode()); return response; } diff --git a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/repository/model/entity/OperationConfigEntity.java b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/repository/model/entity/OperationConfigEntity.java index 4d3b32b3a..b5be0b6d3 100644 --- a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/repository/model/entity/OperationConfigEntity.java +++ b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/repository/model/entity/OperationConfigEntity.java @@ -43,6 +43,9 @@ public class OperationConfigEntity implements Serializable { @Column(name = "template_id") private Integer templateId; + @Column(name = "mobile_token_enabled") + private boolean mobileTokenEnabled; + @Column(name = "mobile_token_mode") private String mobileTokenMode; @@ -94,6 +97,22 @@ public void setTemplateId(Integer templateId) { this.templateId = templateId; } + /** + * Get whether mobile token is enabled for this operation. + * @return Whether mobile token is enabled. + */ + public boolean isMobileTokenEnabled() { + return mobileTokenEnabled; + } + + /** + * Set whether mobile token is enabled for this operation. + * @param mobileTokenEnabled Whether mobile token is enabled. + */ + public void setMobileTokenEnabled(boolean mobileTokenEnabled) { + this.mobileTokenEnabled = mobileTokenEnabled; + } + /** * Get mobile token mode configuration. * @return Mobile token mode configuration. diff --git a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/service/OperationPersistenceService.java b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/service/OperationPersistenceService.java index 5cbc7026e..764481fe0 100644 --- a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/service/OperationPersistenceService.java +++ b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/service/OperationPersistenceService.java @@ -18,21 +18,22 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; -import io.getlime.security.powerauth.app.nextstep.repository.AuthMethodRepository; import io.getlime.security.powerauth.app.nextstep.repository.OperationHistoryRepository; import io.getlime.security.powerauth.app.nextstep.repository.OperationRepository; -import io.getlime.security.powerauth.app.nextstep.repository.model.entity.AuthMethodEntity; import io.getlime.security.powerauth.app.nextstep.repository.model.entity.OperationEntity; import io.getlime.security.powerauth.app.nextstep.repository.model.entity.OperationHistoryEntity; import io.getlime.security.powerauth.lib.nextstep.model.entity.ApplicationContext; import io.getlime.security.powerauth.lib.nextstep.model.entity.AuthStep; import io.getlime.security.powerauth.lib.nextstep.model.entity.OperationFormData; +import io.getlime.security.powerauth.lib.nextstep.model.entity.UserAuthMethodDetail; import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthMethod; import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthResult; import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthStepResult; +import io.getlime.security.powerauth.lib.nextstep.model.exception.OperationNotConfiguredException; import io.getlime.security.powerauth.lib.nextstep.model.exception.OperationNotFoundException; import io.getlime.security.powerauth.lib.nextstep.model.request.*; import io.getlime.security.powerauth.lib.nextstep.model.response.CreateOperationResponse; +import io.getlime.security.powerauth.lib.nextstep.model.response.GetOperationConfigDetailResponse; import io.getlime.security.powerauth.lib.nextstep.model.response.UpdateOperationResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -57,19 +58,22 @@ public class OperationPersistenceService { private final IdGeneratorService idGeneratorService; private final OperationRepository operationRepository; private final OperationHistoryRepository operationHistoryRepository; - private final AuthMethodRepository authMethodRepository; + private final OperationConfigurationService operationConfigurationService; + private final AuthMethodService authMethodService; /** * Service constructor. - * @param idGeneratorService ID generator service. - * @param operationRepository Operation repository. - * @param operationHistoryRepository Operation history repository. - * @param authMethodRepository Authentication method repository. + * @param idGeneratorService ID generator service. + * @param operationRepository Operation repository. + * @param operationHistoryRepository Operation history repository. + * @param operationConfigurationService Operation configuration service. + * @param authMethodService Authentication method service. */ @Autowired public OperationPersistenceService(IdGeneratorService idGeneratorService, OperationRepository operationRepository, - OperationHistoryRepository operationHistoryRepository, AuthMethodRepository authMethodRepository) { - this.authMethodRepository = authMethodRepository; + OperationHistoryRepository operationHistoryRepository, OperationConfigurationService operationConfigurationService, AuthMethodService authMethodService) { + this.operationConfigurationService = operationConfigurationService; + this.authMethodService = authMethodService; this.objectMapper = new ObjectMapper(); this.idGeneratorService = idGeneratorService; this.operationRepository = operationRepository; @@ -312,26 +316,53 @@ public List getPendingOperations(String userId, boolean mobileT return entities; } List filteredList = new ArrayList<>(); - List authMethodEntities = authMethodRepository.findAllAuthMethods(); for (OperationEntity operation : entities) { - Set authMethodsWithMobileToken = new LinkedHashSet<>(); // Add operations whose last step is CONFIRMED with CONTINUE result and chosen authentication method supports mobile token OperationHistoryEntity currentHistoryEntity = operation.getCurrentOperationHistoryEntity(); if (currentHistoryEntity.getRequestAuthStepResult() == AuthStepResult.CONFIRMED && currentHistoryEntity.getResponseResult() == AuthResult.CONTINUE && currentHistoryEntity.getChosenAuthMethod() != null) { AuthMethod chosenAuthMethod = currentHistoryEntity.getChosenAuthMethod(); - // Check whether chosen authentication method supports mobile token - for (AuthMethodEntity authMethodEntity : authMethodEntities) { - if (authMethodEntity.getAuthMethod() == chosenAuthMethod && authMethodEntity.getHasMobileToken()) { - authMethodsWithMobileToken.add(chosenAuthMethod); - break; + // Check whether mobile token is enabled for operation by operation name + try { + GetOperationConfigDetailResponse config = operationConfigurationService.getOperationConfig(operation.getOperationName()); + if (!config.isMobileTokenEnabled()) { + // Mobile token is not enabled for this operation, skip it + continue; } + } catch (OperationNotConfiguredException e) { + // Operation is not configured, skip it + logger.error(e.getMessage(), e); + continue; } - } - // There is at least one authentication method which supports mobile token, add operation into list of pending operations - if (!authMethodsWithMobileToken.isEmpty()) { - filteredList.add(operation); + // Consider only authentication methods which are enabled for user + List authMethods = authMethodService.listAuthMethodsEnabledForUser(userId); + boolean activationConfiguredForMobileToken = false; + for (UserAuthMethodDetail authMethod : authMethods) { + // Check whether activation ID is configured for mobile token, this configuration is set using + // POWERAUTH_TOKEN authentication method. + if (authMethod.getAuthMethod() == AuthMethod.POWERAUTH_TOKEN) { + Map config = authMethod.getConfig(); + if (config != null) { + String activationId = config.get("activationId"); + if (activationId != null && !activationId.isEmpty()) { + activationConfiguredForMobileToken = true; + } + } + } + } + if (!activationConfiguredForMobileToken) { + // Activation ID is not configured for mobile token, so mobile token cannot be used + continue; + } + + for (UserAuthMethodDetail authMethod : authMethods) { + // In case the chosen auth method is enabled for user and it supports mobile token, + // this operation should be added into pending operation list. + if (authMethod.getAuthMethod() == chosenAuthMethod && authMethod.getHasMobileToken()) { + filteredList.add(operation); + } + } } } diff --git a/powerauth-webflow-authentication-approval-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/approvalsca/controller/ApprovalScaInitController.java b/powerauth-webflow-authentication-approval-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/approvalsca/controller/ApprovalScaInitController.java index 82bcdc351..786323d9a 100644 --- a/powerauth-webflow-authentication-approval-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/approvalsca/controller/ApprovalScaInitController.java +++ b/powerauth-webflow-authentication-approval-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/approvalsca/controller/ApprovalScaInitController.java @@ -85,7 +85,7 @@ protected ApprovalScaInitResponse initScaApproval(@RequestBody ApprovalScaInitRe // Find out whether mobile token is enabled boolean mobileTokenEnabled = false; try { - if (authMethodQueryService.isMobileTokenAuthMethodAvailable(userId, operation.getOperationId())) { + if (authMethodQueryService.isMobileTokenAvailable(userId, operation.getOperationId())) { mobileTokenEnabled = true; } } catch (NextStepServiceException e) { diff --git a/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/controller/LoginScaInitController.java b/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/controller/LoginScaInitController.java index 6973c1aa6..20d49dbf4 100644 --- a/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/controller/LoginScaInitController.java +++ b/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/controller/LoginScaInitController.java @@ -141,7 +141,7 @@ protected LoginScaInitResponse initScaLogin(@RequestBody LoginScaInitRequest req // Find out whether mobile token is enabled boolean mobileTokenEnabled = false; try { - if (authMethodQueryService.isMobileTokenAuthMethodAvailable(userId, operation.getOperationId())) { + if (authMethodQueryService.isMobileTokenAvailable(userId, operation.getOperationId())) { mobileTokenEnabled = true; } } catch (NextStepServiceException e) { @@ -232,7 +232,7 @@ public PrepareLoginFormDataResponse prepareLoginForm(@RequestBody PrepareLoginFo // Find out whether mobile token is enabled boolean mobileTokenEnabled = false; try { - if (authMethodQueryService.isMobileTokenAuthMethodAvailable(operation.getUserId(), operation.getOperationId())) { + if (authMethodQueryService.isMobileTokenAvailable(operation.getUserId(), operation.getOperationId())) { mobileTokenEnabled = true; } } catch (NextStepServiceException e) { diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AuthMethodQueryService.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AuthMethodQueryService.java index 56115d90d..4831e3af4 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AuthMethodQueryService.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AuthMethodQueryService.java @@ -22,6 +22,7 @@ import io.getlime.security.powerauth.lib.nextstep.model.entity.UserAuthMethodDetail; import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthMethod; import io.getlime.security.powerauth.lib.nextstep.model.exception.NextStepServiceException; +import io.getlime.security.powerauth.lib.nextstep.model.response.GetOperationDetailResponse; import io.getlime.security.powerauth.lib.nextstep.model.response.GetUserAuthMethodsResponse; import io.getlime.security.powerauth.soap.spring.client.PowerAuthServiceClient; import org.slf4j.Logger; @@ -78,7 +79,7 @@ public boolean isAuthMethodEnabled(AuthMethod authMethod, String userId, String if (authMethod != AuthMethod.POWERAUTH_TOKEN) { return true; } else { - return isMobileTokenAuthMethodAvailable(userId, operationId); + return isMobileTokenAvailable(userId, operationId); } } } @@ -115,22 +116,41 @@ public String getActivationIdForMobileTokenAuthMethod(String userId) throws Next } /** - * Returns whether Mobile Token authentication method is currently available by querying the PowerAuth backend for ACTIVE activations. + * Get information whether mobile token is available. Following checks are performed: + *
    + *
  • Operation is among pending operations for mobile token.
  • + *
  • Activation ID is configured for POWERAUTH_TOKEN method configuration for given user.
  • + *
  • User has an ACTIVE activation and it matches configured activation ID.
  • + *
+ * * @param userId User ID. * @param operationId Operation ID. - * @return Whether Mobile Token authentication method is available. + * @return Whether Mobile Token authentication method is currently available for given user ID and operation name. * @throws NextStepServiceException Thrown when Next Step request fails. */ - public boolean isMobileTokenAuthMethodAvailable(String userId, String operationId) throws NextStepServiceException { - String configuredActivationId = getActivationIdForMobileTokenAuthMethod(userId); - if (configuredActivationId == null) { + public boolean isMobileTokenAvailable(String userId, String operationId) throws NextStepServiceException { + // Retrieve pending mobile token operations for given user and check that operation with given operation ID is among them + ObjectResponse> objectResponseOperations = nextStepClient.getPendingOperations(userId, true); + List operationsForMobileToken = objectResponseOperations.getResponseObject(); + boolean operationSupportsMobileToken = false; + for (GetOperationDetailResponse operation: operationsForMobileToken) { + if (operation.getOperationId().equals(operationId)) { + operationSupportsMobileToken = true; + break; + } + } + if (!operationSupportsMobileToken) { return false; } - // check whether user has an ACTIVE activation and it matches configured activation + + // Retrieve activation ID configured for mobile token + String configuredActivationId = getActivationIdForMobileTokenAuthMethod(userId); + + // Check whether user has an ACTIVE activation and it matches configured activation List allActivations = powerAuthServiceClient.getActivationListForUser(userId); - for (GetActivationListForUserResponse.Activations activation: allActivations) { + for (GetActivationListForUserResponse.Activations activation : allActivations) { if (activation.getActivationStatus() == ActivationStatus.ACTIVE && activation.getActivationId().equals(configuredActivationId)) { - // user has an active activation and it is the configured activation - method can be used + // User has an active activation and it is the configured activation - method can be used return true; } } From fbf5fc08347309817c587aa1770aa53641b19720 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Wed, 2 Oct 2019 20:14:14 +0200 Subject: [PATCH 080/197] Add support for non-SCA usage in operation review which shows mobile token option before it is actually available in pending operations --- .../service/AuthMethodQueryService.java | 33 ++++++++++++++----- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AuthMethodQueryService.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AuthMethodQueryService.java index 4831e3af4..fd435cf92 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AuthMethodQueryService.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AuthMethodQueryService.java @@ -19,6 +19,7 @@ import io.getlime.powerauth.soap.v3.ActivationStatus; import io.getlime.powerauth.soap.v3.GetActivationListForUserResponse; import io.getlime.security.powerauth.lib.nextstep.client.NextStepClient; +import io.getlime.security.powerauth.lib.nextstep.model.entity.AuthStep; import io.getlime.security.powerauth.lib.nextstep.model.entity.UserAuthMethodDetail; import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthMethod; import io.getlime.security.powerauth.lib.nextstep.model.exception.NextStepServiceException; @@ -129,18 +130,32 @@ public String getActivationIdForMobileTokenAuthMethod(String userId) throws Next * @throws NextStepServiceException Thrown when Next Step request fails. */ public boolean isMobileTokenAvailable(String userId, String operationId) throws NextStepServiceException { - // Retrieve pending mobile token operations for given user and check that operation with given operation ID is among them - ObjectResponse> objectResponseOperations = nextStepClient.getPendingOperations(userId, true); - List operationsForMobileToken = objectResponseOperations.getResponseObject(); - boolean operationSupportsMobileToken = false; - for (GetOperationDetailResponse operation: operationsForMobileToken) { - if (operation.getOperationId().equals(operationId)) { - operationSupportsMobileToken = true; + // Non-SCA usage: check whether POWERAUTH_TOKEN method is available as next step for operation (used in operation review step) + ObjectResponse objectResponseOperation = nextStepClient.getOperationDetail(operationId); + GetOperationDetailResponse operationDetail = objectResponseOperation.getResponseObject(); + boolean mobileTokenAvailableAsNextStep = false; + for (AuthStep step: operationDetail.getSteps()) { + if (step.getAuthMethod() == AuthMethod.POWERAUTH_TOKEN) { + mobileTokenAvailableAsNextStep = true; break; } } - if (!operationSupportsMobileToken) { - return false; + + // SCA usage: check whether an authentication method supporting mobile token is currently available (authentication method is already chosen) + if (!mobileTokenAvailableAsNextStep) { + // Retrieve pending mobile token operations for given user and check that operation with given operation ID is among them + ObjectResponse> objectResponseOperations = nextStepClient.getPendingOperations(userId, true); + List operationsForMobileToken = objectResponseOperations.getResponseObject(); + boolean operationSupportsMobileToken = false; + for (GetOperationDetailResponse operation : operationsForMobileToken) { + if (operation.getOperationId().equals(operationId)) { + operationSupportsMobileToken = true; + break; + } + } + if (!operationSupportsMobileToken) { + return false; + } } // Retrieve activation ID configured for mobile token From b397abbd1caf35f47781bc71c16d76cc0bba04c2 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Wed, 2 Oct 2019 20:14:42 +0200 Subject: [PATCH 081/197] Update JavaDoc --- .../webflow/authentication/service/AuthMethodQueryService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AuthMethodQueryService.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AuthMethodQueryService.java index fd435cf92..cfbbab712 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AuthMethodQueryService.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AuthMethodQueryService.java @@ -126,7 +126,7 @@ public String getActivationIdForMobileTokenAuthMethod(String userId) throws Next * * @param userId User ID. * @param operationId Operation ID. - * @return Whether Mobile Token authentication method is currently available for given user ID and operation name. + * @return Whether Mobile Token authentication method is currently available for given user ID and operation ID. * @throws NextStepServiceException Thrown when Next Step request fails. */ public boolean isMobileTokenAvailable(String userId, String operationId) throws NextStepServiceException { From f13c9e5ec994e0f5f0807fb60023db65594b7699 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Wed, 2 Oct 2019 20:17:11 +0200 Subject: [PATCH 082/197] Update JavaDoc --- .../webflow/authentication/service/AuthMethodQueryService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AuthMethodQueryService.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AuthMethodQueryService.java index cfbbab712..d3135fee5 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AuthMethodQueryService.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AuthMethodQueryService.java @@ -126,7 +126,7 @@ public String getActivationIdForMobileTokenAuthMethod(String userId) throws Next * * @param userId User ID. * @param operationId Operation ID. - * @return Whether Mobile Token authentication method is currently available for given user ID and operation ID. + * @return Whether Mobile Token is currently available for given user ID and operation ID. * @throws NextStepServiceException Thrown when Next Step request fails. */ public boolean isMobileTokenAvailable(String userId, String operationId) throws NextStepServiceException { From 2a4d851fe910f987844719a819dff211684a1968 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Wed, 2 Oct 2019 20:18:17 +0200 Subject: [PATCH 083/197] Update code comments --- .../webflow/authentication/service/AuthMethodQueryService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AuthMethodQueryService.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AuthMethodQueryService.java index d3135fee5..689b6b76c 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AuthMethodQueryService.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AuthMethodQueryService.java @@ -165,7 +165,7 @@ public boolean isMobileTokenAvailable(String userId, String operationId) throws List allActivations = powerAuthServiceClient.getActivationListForUser(userId); for (GetActivationListForUserResponse.Activations activation : allActivations) { if (activation.getActivationStatus() == ActivationStatus.ACTIVE && activation.getActivationId().equals(configuredActivationId)) { - // User has an active activation and it is the configured activation - method can be used + // User has an active activation and it is the configured activation - mobile token is available return true; } } From 0c44539ce0d91e2bceab4015e5b402a79ded6a29 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Thu, 3 Oct 2019 13:31:37 +0200 Subject: [PATCH 084/197] Handle the non-SCA use case, POWERAUTH_TOKEN step needs to be filtered for operation review based on mobile token configuration and availability --- .../MobileTokenConfigurationService.java | 123 ++++++++++++++++++ .../service/OperationPersistenceService.java | 69 ++-------- .../service/StepResolutionService.java | 47 ++++--- 3 files changed, 164 insertions(+), 75 deletions(-) create mode 100644 powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/service/MobileTokenConfigurationService.java diff --git a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/service/MobileTokenConfigurationService.java b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/service/MobileTokenConfigurationService.java new file mode 100644 index 000000000..72b0c1894 --- /dev/null +++ b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/service/MobileTokenConfigurationService.java @@ -0,0 +1,123 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.getlime.security.powerauth.app.nextstep.service; + +import io.getlime.security.powerauth.lib.nextstep.model.entity.UserAuthMethodDetail; +import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthMethod; +import io.getlime.security.powerauth.lib.nextstep.model.exception.OperationNotConfiguredException; +import io.getlime.security.powerauth.lib.nextstep.model.response.GetOperationConfigDetailResponse; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; + +/** + * Service for retrieving mobile token configuration. + * + * @author Roman Strobl, roman.strobl@wultra.com + */ +@Service +public class MobileTokenConfigurationService { + + private static final Logger logger = LoggerFactory.getLogger(MobileTokenConfigurationService.class); + + private final OperationConfigurationService operationConfigurationService; + private final AuthMethodService authMethodService; + + /** + * Service constructor. + * @param operationConfigurationService Operation configuration service. + * @param authMethodService Authentication method service. + */ + public MobileTokenConfigurationService(OperationConfigurationService operationConfigurationService, AuthMethodService authMethodService) { + this.operationConfigurationService = operationConfigurationService; + this.authMethodService = authMethodService; + } + + /** + * Decide whether mobile token is enabled for given user ID, operation name and authentication method. + * @param userId User ID. + * @param operationName Operation name. + * @param authMethod Authentication method. + * @return Whether mobile token is enabled. + */ + public boolean isMobileTokenEnabled(String userId, String operationName, AuthMethod authMethod) { + // Check input parameters + if (userId == null) { + logger.debug("Mobile token is disabled because user is unknown for this authentication step"); + return false; + } + if (operationName == null) { + logger.warn("Invalid call of isMobileTokenEnabled, operation name is null"); + return false; + } + if (authMethod == null) { + logger.warn("Invalid call of isMobileTokenEnabled, authentication method is null"); + return false; + } + + // Check whether mobile token is enabled for operation by operation name + try { + GetOperationConfigDetailResponse config = operationConfigurationService.getOperationConfig(operationName); + if (!config.isMobileTokenEnabled()) { + logger.debug("Mobile token is disabled for operation name: {}", operationName); + // Mobile token is not enabled for this operation, skip it + return false; + } + } catch (OperationNotConfiguredException e) { + // Operation is not configured, skip it + logger.error(e.getMessage(), e); + return false; + } + + // Consider only authentication methods which are enabled for user + List authMethods = authMethodService.listAuthMethodsEnabledForUser(userId); + boolean activationConfiguredForMobileToken = false; + for (UserAuthMethodDetail userAuthMethod : authMethods) { + // Check whether activation ID is configured for mobile token, this configuration is set using + // POWERAUTH_TOKEN authentication method. + if (userAuthMethod.getAuthMethod() == AuthMethod.POWERAUTH_TOKEN) { + Map config = userAuthMethod.getConfig(); + if (config != null) { + String activationId = config.get("activationId"); + if (activationId != null && !activationId.isEmpty()) { + activationConfiguredForMobileToken = true; + } + } + } + } + if (!activationConfiguredForMobileToken) { + // Activation ID is not configured for mobile token, so mobile token cannot be used + logger.debug("Mobile token is disabled because activation is not configured in user preferences for user: {}", userId); + return false; + } + + for (UserAuthMethodDetail userAuthMethod : authMethods) { + // In case the chosen auth method is enabled for user and it supports mobile token, + // this operation should be added into pending operation list. + if (userAuthMethod.getAuthMethod() == authMethod && userAuthMethod.getHasMobileToken()) { + logger.debug("Mobile token is enabled for user ID: {}, operation name: {}, authentication method: {}", userId, operationName, authMethod); + return true; + } + } + + // Mobile token is disabled for this authentication method + logger.debug("Mobile token is disabled because authentication method {} does not support mobile token", authMethod); + return false; + } +} diff --git a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/service/OperationPersistenceService.java b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/service/OperationPersistenceService.java index 764481fe0..2974d7fb0 100644 --- a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/service/OperationPersistenceService.java +++ b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/service/OperationPersistenceService.java @@ -25,15 +25,12 @@ import io.getlime.security.powerauth.lib.nextstep.model.entity.ApplicationContext; import io.getlime.security.powerauth.lib.nextstep.model.entity.AuthStep; import io.getlime.security.powerauth.lib.nextstep.model.entity.OperationFormData; -import io.getlime.security.powerauth.lib.nextstep.model.entity.UserAuthMethodDetail; import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthMethod; import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthResult; import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthStepResult; -import io.getlime.security.powerauth.lib.nextstep.model.exception.OperationNotConfiguredException; import io.getlime.security.powerauth.lib.nextstep.model.exception.OperationNotFoundException; import io.getlime.security.powerauth.lib.nextstep.model.request.*; import io.getlime.security.powerauth.lib.nextstep.model.response.CreateOperationResponse; -import io.getlime.security.powerauth.lib.nextstep.model.response.GetOperationConfigDetailResponse; import io.getlime.security.powerauth.lib.nextstep.model.response.UpdateOperationResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -41,7 +38,10 @@ import org.springframework.stereotype.Service; import java.io.IOException; -import java.util.*; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Optional; /** * This service handles conversion of operation request/response objects into operation entities. @@ -55,29 +55,27 @@ public class OperationPersistenceService { private final Logger logger = LoggerFactory.getLogger(OperationPersistenceService.class); private final ObjectMapper objectMapper; + private final IdGeneratorService idGeneratorService; private final OperationRepository operationRepository; private final OperationHistoryRepository operationHistoryRepository; - private final OperationConfigurationService operationConfigurationService; - private final AuthMethodService authMethodService; + private final MobileTokenConfigurationService mobileTokenConfigurationService; /** * Service constructor. - * @param idGeneratorService ID generator service. - * @param operationRepository Operation repository. - * @param operationHistoryRepository Operation history repository. - * @param operationConfigurationService Operation configuration service. - * @param authMethodService Authentication method service. + * @param idGeneratorService ID generator service. + * @param operationRepository Operation repository. + * @param operationHistoryRepository Operation history repository. + * @param mobileTokenConfigurationService Mobile token configuration service. */ @Autowired public OperationPersistenceService(IdGeneratorService idGeneratorService, OperationRepository operationRepository, - OperationHistoryRepository operationHistoryRepository, OperationConfigurationService operationConfigurationService, AuthMethodService authMethodService) { - this.operationConfigurationService = operationConfigurationService; - this.authMethodService = authMethodService; + OperationHistoryRepository operationHistoryRepository, MobileTokenConfigurationService mobileTokenConfigurationService) { this.objectMapper = new ObjectMapper(); this.idGeneratorService = idGeneratorService; this.operationRepository = operationRepository; this.operationHistoryRepository = operationHistoryRepository; + this.mobileTokenConfigurationService = mobileTokenConfigurationService; } /** @@ -322,49 +320,10 @@ public List getPendingOperations(String userId, boolean mobileT if (currentHistoryEntity.getRequestAuthStepResult() == AuthStepResult.CONFIRMED && currentHistoryEntity.getResponseResult() == AuthResult.CONTINUE && currentHistoryEntity.getChosenAuthMethod() != null) { AuthMethod chosenAuthMethod = currentHistoryEntity.getChosenAuthMethod(); - // Check whether mobile token is enabled for operation by operation name - try { - GetOperationConfigDetailResponse config = operationConfigurationService.getOperationConfig(operation.getOperationName()); - if (!config.isMobileTokenEnabled()) { - // Mobile token is not enabled for this operation, skip it - continue; - } - } catch (OperationNotConfiguredException e) { - // Operation is not configured, skip it - logger.error(e.getMessage(), e); - continue; - } - - // Consider only authentication methods which are enabled for user - List authMethods = authMethodService.listAuthMethodsEnabledForUser(userId); - boolean activationConfiguredForMobileToken = false; - for (UserAuthMethodDetail authMethod : authMethods) { - // Check whether activation ID is configured for mobile token, this configuration is set using - // POWERAUTH_TOKEN authentication method. - if (authMethod.getAuthMethod() == AuthMethod.POWERAUTH_TOKEN) { - Map config = authMethod.getConfig(); - if (config != null) { - String activationId = config.get("activationId"); - if (activationId != null && !activationId.isEmpty()) { - activationConfiguredForMobileToken = true; - } - } - } - } - if (!activationConfiguredForMobileToken) { - // Activation ID is not configured for mobile token, so mobile token cannot be used - continue; - } - - for (UserAuthMethodDetail authMethod : authMethods) { - // In case the chosen auth method is enabled for user and it supports mobile token, - // this operation should be added into pending operation list. - if (authMethod.getAuthMethod() == chosenAuthMethod && authMethod.getHasMobileToken()) { - filteredList.add(operation); - } + if (mobileTokenConfigurationService.isMobileTokenEnabled(userId, operation.getOperationName(), chosenAuthMethod)) { + filteredList.add(operation); } } - } return filteredList; } diff --git a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/service/StepResolutionService.java b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/service/StepResolutionService.java index c6a8d7dce..0d8557478 100644 --- a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/service/StepResolutionService.java +++ b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/service/StepResolutionService.java @@ -52,32 +52,34 @@ @Service public class StepResolutionService { - private IdGeneratorService idGeneratorService; - private OperationPersistenceService operationPersistenceService; - private NextStepServerConfiguration nextStepServerConfiguration; - private AuthMethodService authMethodService; - private AuthMethodRepository authMethodRepository; - private Map> stepDefinitionsPerOperation; + private final IdGeneratorService idGeneratorService; + private final OperationPersistenceService operationPersistenceService; + private final NextStepServerConfiguration nextStepServerConfiguration; + private final AuthMethodService authMethodService; + private final AuthMethodRepository authMethodRepository; + private final MobileTokenConfigurationService mobileTokenConfigurationService; + private final Map> stepDefinitionsPerOperation; /** * Service constructor. - * * @param stepDefinitionRepository Step definition repository. * @param operationPersistenceService Operation persistence service. * @param idGeneratorService ID generator service. * @param nextStepServerConfiguration Next step server configuration. * @param authMethodService Authentication method service. * @param authMethodRepository Authentication method repository. + * @param mobileTokenConfigurationService Mobile token configuration service. */ @Autowired public StepResolutionService(StepDefinitionRepository stepDefinitionRepository, OperationPersistenceService operationPersistenceService, IdGeneratorService idGeneratorService, NextStepServerConfiguration nextStepServerConfiguration, - AuthMethodService authMethodService, AuthMethodRepository authMethodRepository) { + AuthMethodService authMethodService, AuthMethodRepository authMethodRepository, MobileTokenConfigurationService mobileTokenConfigurationService) { this.operationPersistenceService = operationPersistenceService; this.idGeneratorService = idGeneratorService; this.nextStepServerConfiguration = nextStepServerConfiguration; this.authMethodService = authMethodService; this.authMethodRepository = authMethodRepository; + this.mobileTokenConfigurationService = mobileTokenConfigurationService; stepDefinitionsPerOperation = new HashMap<>(); List operationNames = stepDefinitionRepository.findDistinctOperationNames(); for (String operationName : operationNames) { @@ -107,8 +109,8 @@ public CreateOperationResponse resolveNextStepResponse(CreateOperationRequest re response.setOperationName(request.getOperationName()); response.setOrganizationId(request.getOrganizationId()); // AuthStepResult and AuthMethod are not available when creating the operation, null values are used to ignore them - List stepDefinitions = filterSteps(request.getOperationName(), OperationRequestType.CREATE, null, null, null); - response.getSteps().addAll(prepareAuthSteps(stepDefinitions)); + List stepDefinitions = filterStepDefinitions(request.getOperationName(), OperationRequestType.CREATE, null, null, null); + response.getSteps().addAll(filterAuthSteps(stepDefinitions, null, request.getOperationName())); response.setTimestampCreated(new Date()); response.setTimestampExpires(new DateTime().plusSeconds(nextStepServerConfiguration.getOperationExpirationTime()).toDate()); response.setFormData(request.getFormData()); @@ -160,7 +162,7 @@ public UpdateOperationResponse resolveNextStepResponse(UpdateOperationRequest re request.setAuthStepResult(AuthStepResult.AUTH_METHOD_FAILED); } - List stepDefinitions = filterSteps(operation.getOperationName(), OperationRequestType.UPDATE, request.getAuthStepResult(), request.getAuthMethod(), request.getUserId()); + List stepDefinitions = filterStepDefinitions(operation.getOperationName(), OperationRequestType.UPDATE, request.getAuthStepResult(), request.getAuthMethod(), request.getUserId()); sortSteps(stepDefinitions); verifyDuplicatePrioritiesAbsent(stepDefinitions); Set allResults = new HashSet<>(); @@ -169,7 +171,7 @@ public UpdateOperationResponse resolveNextStepResponse(UpdateOperationRequest re } if (allResults.size() == 1) { // Straightforward response - only one AuthResult found. Return all matching steps. - response.getSteps().addAll(prepareAuthSteps(stepDefinitions)); + response.getSteps().addAll(filterAuthSteps(stepDefinitions, response.getUserId(), response.getOperationName())); response.setResult(allResults.iterator().next()); return response; } else if (allResults.size() > 1) { @@ -183,17 +185,17 @@ public UpdateOperationResponse resolveNextStepResponse(UpdateOperationRequest re .collect(Collectors.groupingBy(StepDefinitionEntity::getResponseResult)); if (stepsByAuthResult.containsKey(AuthResult.DONE)) { List doneSteps = stepsByAuthResult.get(AuthResult.DONE); - response.getSteps().addAll(prepareAuthSteps(doneSteps)); + response.getSteps().addAll(filterAuthSteps(doneSteps, response.getUserId(), response.getOperationName())); response.setResult(AuthResult.DONE); return response; } else if (stepsByAuthResult.containsKey(AuthResult.CONTINUE)) { List continueSteps = stepsByAuthResult.get(AuthResult.CONTINUE); - response.getSteps().addAll(prepareAuthSteps(continueSteps)); + response.getSteps().addAll(filterAuthSteps(continueSteps, response.getUserId(), response.getOperationName())); response.setResult(AuthResult.CONTINUE); return response; } else if (stepsByAuthResult.containsKey(AuthResult.FAILED)) { List failedSteps = stepsByAuthResult.get(AuthResult.FAILED); - response.getSteps().addAll(prepareAuthSteps(failedSteps)); + response.getSteps().addAll(filterAuthSteps(failedSteps, response.getUserId(), response.getOperationName())); response.setResult(AuthResult.FAILED); return response; } @@ -222,7 +224,7 @@ public UpdateOperationResponse resolveNextStepResponse(UpdateOperationRequest re * @param userId user ID * @return filtered list of steps */ - private List filterSteps(String operationName, OperationRequestType operationType, AuthStepResult authStepResult, AuthMethod authMethod, String userId) { + private List filterStepDefinitions(String operationName, OperationRequestType operationType, AuthStepResult authStepResult, AuthMethod authMethod, String userId) { List stepDefinitions = stepDefinitionsPerOperation.get(operationName); List authMethodsAvailableForUser = new ArrayList<>(); if (userId != null) { @@ -281,15 +283,20 @@ private void verifyDuplicatePrioritiesAbsent(List stepDefi } /** - * Converts List into a List. + * Converts List into a List and filters out POWERAUTH_TOKEN method in case it is not available. * - * @param stepDefinitions step definitions to convert - * @return converted list of authentication steps + * @param stepDefinitions Step definitions to convert and filter. + * @return Final list of authentication steps. */ - private List prepareAuthSteps(List stepDefinitions) { + private List filterAuthSteps(List stepDefinitions, String userId, String operationName) { List authSteps = new ArrayList<>(); for (StepDefinitionEntity stepDef : stepDefinitions) { if (stepDef.getResponseAuthMethod() != null) { + // filter out POWERAUTH_TOKEN method in case it is not enabled for given operation and authentication method + if (stepDef.getResponseAuthMethod() == AuthMethod.POWERAUTH_TOKEN + && !mobileTokenConfigurationService.isMobileTokenEnabled(userId, operationName, AuthMethod.POWERAUTH_TOKEN)) { + continue; + } AuthStep authStep = new AuthStep(); authStep.setAuthMethod(stepDef.getResponseAuthMethod()); authSteps.add(authStep); From 3fcb6eb56eb5c72d75a917b8275d3ad545d11c94 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Thu, 3 Oct 2019 16:03:10 +0200 Subject: [PATCH 085/197] Document how to enable mobile token --- docs/Mobile-Token-Configuration.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/docs/Mobile-Token-Configuration.md b/docs/Mobile-Token-Configuration.md index 824859675..3f1938003 100644 --- a/docs/Mobile-Token-Configuration.md +++ b/docs/Mobile-Token-Configuration.md @@ -5,3 +5,15 @@ Mobile Token application requires configuration in order to set an active activa Web Flow uses the configured activation when sending push notifications and when authorizing operations using Mobile Token. When activation is not configured for the user, the `POWERAUTH_TOKEN` authentication method is not available and the user needs to use an alternative method for authorization of the operation (e.g. `SMS_KEY`). See the [Next Step REST API documentation](./Next-Step-Server-REST-API-Reference.md#enable-an-authentication-method-for-given-user) which describes this configuration step. + +## Enabling Mobile Token + +The mobile token needs to be enabled using following configuration parameters: + +- Mobile token needs to be enabled in table `ns_operation_config` using the `mobile_token_enabled` column. This parameter configures whether +mobile token is enabled for given operation. +- Mobile token needs to be enabled in table `ns_auth_method` using the `has_mobile_token` column. This parameter configures whether authentication method supports mobile token. +It should not be necessary to change the default settings, but it is possible to change on authentication method level whether mobile token is enabled. +- Mobile token needs to be enabled in table `ns_user_prefs`. The `ns_auth_method.user_prefs_column` parameter specifies using which column is the mobile token enabled. +Furthermore the activation ID for mobile needs to be configured, as explained above. Both enabling mobile token in user preferences and setting the activation +ID is typically done by calling the Next Step REST API. \ No newline at end of file From 1fd9f6ff4a89a0fd59a1233782b9775c2883c222 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Thu, 3 Oct 2019 16:14:16 +0200 Subject: [PATCH 086/197] Update JavaDoc --- .../authentication/service/AuthMethodQueryService.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AuthMethodQueryService.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AuthMethodQueryService.java index 689b6b76c..9ea6ff487 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AuthMethodQueryService.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AuthMethodQueryService.java @@ -119,9 +119,9 @@ public String getActivationIdForMobileTokenAuthMethod(String userId) throws Next /** * Get information whether mobile token is available. Following checks are performed: *
    - *
  • Operation is among pending operations for mobile token.
  • - *
  • Activation ID is configured for POWERAUTH_TOKEN method configuration for given user.
  • - *
  • User has an ACTIVE activation and it matches configured activation ID.
  • + *
  • Non-SCA operations: POWERAUTH_TOKEN method is available as a next step for the operation.
  • + *
  • SCA operations: Operation is among pending operations for mobile token.
  • + *
  • User has an ACTIVE activation in PowerAuth server and it matches configured activation ID in Next Step.
  • *
* * @param userId User ID. From 9b7cd4a35bd45cc5b5cd692a58af119b62b3f340 Mon Sep 17 00:00:00 2001 From: snyk-bot Date: Fri, 4 Oct 2019 00:14:17 +0000 Subject: [PATCH 087/197] fix: powerauth-webflow/package.json, powerauth-webflow/package-lock.json & powerauth-webflow/.snyk to reduce vulnerabilities The following vulnerabilities are fixed with a Snyk patch: - https://snyk.io/vuln/SNYK-JS-HTTPSPROXYAGENT-469131 --- powerauth-webflow/.snyk | 6 + powerauth-webflow/package-lock.json | 629 ++++++++++++++++++++++------ powerauth-webflow/package.json | 2 +- 3 files changed, 499 insertions(+), 138 deletions(-) diff --git a/powerauth-webflow/.snyk b/powerauth-webflow/.snyk index a0205db67..433e6f3a7 100644 --- a/powerauth-webflow/.snyk +++ b/powerauth-webflow/.snyk @@ -2,3 +2,9 @@ version: v1.13.5 ignore: {} # patches apply the minimum changes required to fix a vulnerability +patch: + SNYK-JS-HTTPSPROXYAGENT-469131: + - snyk > proxy-agent > https-proxy-agent: + patched: '2019-10-04T00:13:57.715Z' + - snyk > proxy-agent > pac-proxy-agent > https-proxy-agent: + patched: '2019-10-04T00:13:57.715Z' diff --git a/powerauth-webflow/package-lock.json b/powerauth-webflow/package-lock.json index fa72c21a0..637218c4f 100644 --- a/powerauth-webflow/package-lock.json +++ b/powerauth-webflow/package-lock.json @@ -19,6 +19,49 @@ } } }, + "@snyk/cli-interface": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@snyk/cli-interface/-/cli-interface-2.1.0.tgz", + "integrity": "sha512-b/magC8iNQP9QhSDeV9RQDSaY3sNy57k0UH1Y/sMOSvVLHLsA7dOi/HrPWTiLouyGqcuYzwjkz7bNbu8cwmVDQ==", + "requires": { + "tslib": "^1.9.3" + } + }, + "@snyk/cocoapods-lockfile-parser": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@snyk/cocoapods-lockfile-parser/-/cocoapods-lockfile-parser-2.0.2.tgz", + "integrity": "sha512-DSSlljXGhSECdx7KhK7QlBiGC82fM2dZMzhcWxOsqyUVqzjArRGS9i4CRl/WMK5WDlLgc5bn5Xmpmp/g5Hf9YQ==", + "requires": { + "@snyk/dep-graph": "^1.11.0", + "@snyk/ruby-semver": "^2.0.4", + "@types/js-yaml": "^3.12.1", + "core-js": "^3.2.0", + "js-yaml": "^3.13.1", + "source-map-support": "^0.5.7", + "tslib": "^1.9.3" + }, + "dependencies": { + "core-js": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.2.1.tgz", + "integrity": "sha512-Qa5XSVefSVPRxy2XfUC13WbvqkxhkwB3ve+pgCQveNgYzbM/UxZeu1dcOX/xr4UmfUd+muuvsaxilQzCyUurMw==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + } + } + }, "@snyk/composer-lockfile-parser": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@snyk/composer-lockfile-parser/-/composer-lockfile-parser-1.0.3.tgz", @@ -28,9 +71,9 @@ } }, "@snyk/dep-graph": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@snyk/dep-graph/-/dep-graph-1.10.0.tgz", - "integrity": "sha512-QwQTmmnVb1mjAffGsjKKrwit8ahLWyhlKWQcTVZo9UXFgWAwiuCjTXKAXhijZjGvrXQzNf5KbIBu+SZ1Dq2toQ==", + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/@snyk/dep-graph/-/dep-graph-1.12.0.tgz", + "integrity": "sha512-n7+PlHn3SqznHgsCpeBRfEvU1oiQydoGkXQlnSB2+tfImiKXvY7YZbrg4wlbvYgylYiTbpCi5CpPNkJG14S+UQ==", "requires": { "graphlib": "^2.1.5", "lodash": "^4.7.14", @@ -66,6 +109,68 @@ "resolved": "https://registry.npmjs.org/@snyk/gemfile/-/gemfile-1.2.0.tgz", "integrity": "sha512-nI7ELxukf7pT4/VraL4iabtNNMz8mUo7EXlqCFld8O5z6mIMLX9llps24iPpaIZOwArkY3FWA+4t+ixyvtTSIA==" }, + "@snyk/ruby-semver": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@snyk/ruby-semver/-/ruby-semver-2.0.4.tgz", + "integrity": "sha512-ceMD4CBS3qtAg+O0BUvkKdsheUNCqi+/+Rju243Ul8PsUgZnXmGiqfk/2z7DCprRQnxUTra4+IyeDQT7wAheCQ==", + "requires": { + "lodash": "^4.17.14" + } + }, + "@snyk/snyk-cocoapods-plugin": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@snyk/snyk-cocoapods-plugin/-/snyk-cocoapods-plugin-1.0.2.tgz", + "integrity": "sha512-eb8cawvz2vDLg/DRyzDDgv7+oZhsojNXxF8anX2Iq4ws8GZjd9CrMMMaSU7QehcT4h7jH5ITzbB1HOp+XHm3rw==", + "requires": { + "@snyk/cli-interface": "1.5.0", + "@snyk/cocoapods-lockfile-parser": "2.0.2", + "@snyk/dep-graph": "1.13.0", + "source-map-support": "^0.5.7", + "tslib": "^1.9.3" + }, + "dependencies": { + "@snyk/cli-interface": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@snyk/cli-interface/-/cli-interface-1.5.0.tgz", + "integrity": "sha512-+Qo+IO3YOXWgazlo+CKxOuWFLQQdaNCJ9cSfhFQd687/FuesaIxWdInaAdfpsLScq0c6M1ieZslXgiZELSzxbg==", + "requires": { + "tslib": "^1.9.3" + } + }, + "@snyk/dep-graph": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/@snyk/dep-graph/-/dep-graph-1.13.0.tgz", + "integrity": "sha512-e0XcLH6Kgs/lunf6iDjbxEnm9+JYFEJn6eo/PlEUW+SMWBZ2uEXHBTDNp9oxjJou48PngzWMveEkniBAN+ulOQ==", + "requires": { + "graphlib": "^2.1.5", + "lodash": "^4.7.14", + "object-hash": "^1.3.1", + "semver": "^6.0.0", + "source-map-support": "^0.5.11", + "tslib": "^1.9.3" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + } + } + }, "@types/agent-base": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/@types/agent-base/-/agent-base-4.2.0.tgz", @@ -75,20 +180,56 @@ "@types/node": "*" } }, + "@types/bunyan": { + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/@types/bunyan/-/bunyan-1.8.6.tgz", + "integrity": "sha512-YiozPOOsS6bIuz31ilYqR5SlLif4TBWsousN2aCWLi5233nZSX19tFbcQUPdR7xJ8ypPyxkCGNxg0CIV5n9qxQ==", + "requires": { + "@types/node": "*" + } + }, "@types/debug": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.4.tgz", - "integrity": "sha512-D9MyoQFI7iP5VdpEyPZyjjqIJ8Y8EDNQFIFVLOmeg1rI1xiHOChyUPMPRUVfqFCerxfE+yS3vMyj37F6IdtOoQ==" + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.5.tgz", + "integrity": "sha512-Q1y515GcOdTHgagaVFhHnIFQ38ygs/kmxdNpvpou+raI9UO3YZcHDngBSYKQklcKlvA7iuQlmIKbzvmxcOE9CQ==" }, "@types/events": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==" }, + "@types/js-yaml": { + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-3.12.1.tgz", + "integrity": "sha512-SGGAhXLHDx+PK4YLNcNGa6goPf9XRWQNAUUbffkwVGGXIxmDKWyGGL4inzq2sPmExu431Ekb9aEMn9BkPqEYFA==" + }, "@types/node": { - "version": "12.6.8", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.6.8.tgz", - "integrity": "sha512-aX+gFgA5GHcDi89KG5keey2zf0WfZk/HAQotEamsK2kbey+8yGKcson0hbK8E+v0NArlCJQCqMP161YhV6ZXLg==" + "version": "12.7.11", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.11.tgz", + "integrity": "sha512-Otxmr2rrZLKRYIybtdG/sgeO+tHY20GxeDjcGmUnmmlCWyEnv2a2x1ZXBo3BTec4OiTXMQCiazB8NMBf0iRlFw==" + }, + "@types/restify": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/@types/restify/-/restify-4.3.6.tgz", + "integrity": "sha512-4l4f0EXnleXQttlhRCXtTuJ8UelsKiAKIK2AAEd2epBHu41aEbM0U2z6E5tUrNwlbxz7qaNBISduGMeg+G3PaA==", + "requires": { + "@types/bunyan": "*", + "@types/node": "*" + } + }, + "@types/semver": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-41qEJgBH/TWgo5NFSvBCJ1qkoi3Q6ONSF2avrHq1LVEZfYpdHmj0y9SuTK+u9ZhG1sYQKBL1AWXKyLWP4RaUoQ==" + }, + "@types/xml2js": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@types/xml2js/-/xml2js-0.4.3.tgz", + "integrity": "sha512-Pv2HGRE4gWLs31In7nsyXEH4uVVsd0HNV9i2dyASvtDIlOtSTr1eczPLDpdEuyv5LWH5LT20GIXwPjkshKWI1g==", + "requires": { + "@types/events": "*", + "@types/node": "*" + } }, "@yarnpkg/lockfile": { "version": "1.1.0", @@ -195,12 +336,9 @@ } }, "ansi-escapes": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.2.1.tgz", - "integrity": "sha512-Cg3ymMAdN10wOk/VYfLV7KCQyv7EDirJ64500sU7n9UlmioEtDuU5Gd+hj73hXSU/ex7tHJSssmyftDdkMLO8Q==", - "requires": { - "type-fest": "^0.5.2" - } + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==" }, "ansi-regex": { "version": "2.1.1", @@ -1920,19 +2058,9 @@ "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=" }, "data-uri-to-buffer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-2.0.1.tgz", - "integrity": "sha512-OkVVLrerfAKZlW2ZZ3Ve2y65jgiWqBKsTfUIAFbn8nVbPcCZg6l6gikKlEYv0kXcmzqGm6mFq/Jf2vriuEkv8A==", - "requires": { - "@types/node": "^8.0.7" - }, - "dependencies": { - "@types/node": { - "version": "8.10.51", - "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.51.tgz", - "integrity": "sha512-cArrlJp3Yv6IyFT/DYe+rlO8o3SIHraALbBW/+CcCYW/a9QucpLI+n2p4sRxAvl2O35TiecpX2heSZtJjvEO+Q==" - } - } + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-2.0.2.tgz", + "integrity": "sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==" }, "date-now": { "version": "0.1.4", @@ -1967,6 +2095,14 @@ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "requires": { + "object-keys": "^1.0.12" + } + }, "define-property": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", @@ -2017,6 +2153,13 @@ "ast-types": "0.x.x", "escodegen": "1.x.x", "esprima": "3.x.x" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" + } } }, "depd": { @@ -2113,6 +2256,43 @@ "is-obj": "^1.0.0" } }, + "dotnet-deps-parser": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/dotnet-deps-parser/-/dotnet-deps-parser-4.5.0.tgz", + "integrity": "sha512-t6rBxcWVZSDNhhWdsbq9ozaCzfPXV79FiyES1JLNEoA7nYF+zDC2VZvFZSnH8ilU3bghJXxZPH+EcKYvfw8g/g==", + "requires": { + "@types/xml2js": "0.4.3", + "lodash": "^4.17.11", + "source-map-support": "^0.5.7", + "tslib": "^1.9.3", + "xml2js": "0.4.19" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "xml2js": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", + "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~9.0.1" + } + } + } + }, "duplexer3": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", @@ -2143,6 +2323,11 @@ "resolved": "https://registry.npmjs.org/email-validator/-/email-validator-2.0.4.tgz", "integrity": "sha512-gYCwo7kh5S3IDyZPLZf6hSS0MnZT8QmJFqYvbqlDZSbwdZlY6QZWxJ4i/6UhITOJ4XzyI647Bm2MXKCLqnJ4nQ==" }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, "emojis-list": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", @@ -2157,9 +2342,9 @@ } }, "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "requires": { "once": "^1.4.0" } @@ -2196,6 +2381,33 @@ "is-arrayish": "^0.2.1" } }, + "es-abstract": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.15.0.tgz", + "integrity": "sha512-bhkEqWJ2t2lMeaJDuk7okMkJWI/yqgH/EoGwpcvv0XW9RWQsRspI4wt6xuyuvMvvQE3gg/D9HXppgk21w78GyQ==", + "requires": { + "es-to-primitive": "^1.2.0", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.0", + "is-callable": "^1.1.4", + "is-regex": "^1.0.4", + "object-inspect": "^1.6.0", + "object-keys": "^1.1.1", + "string.prototype.trimleft": "^2.1.0", + "string.prototype.trimright": "^2.1.0" + } + }, + "es-to-primitive": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", + "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, "es6-promise": { "version": "4.2.8", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", @@ -2215,9 +2427,9 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "escodegen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.1.tgz", - "integrity": "sha512-JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw==", + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.12.0.tgz", + "integrity": "sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg==", "requires": { "esprima": "^3.1.3", "estraverse": "^4.2.0", @@ -2226,6 +2438,11 @@ "source-map": "~0.6.1" }, "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -2235,14 +2452,14 @@ } }, "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" }, "esutils": { "version": "2.0.2", @@ -2575,7 +2792,8 @@ }, "ansi-regex": { "version": "2.1.1", - "bundled": true + "bundled": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -2593,11 +2811,13 @@ }, "balanced-match": { "version": "1.0.0", - "bundled": true + "bundled": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2610,15 +2830,18 @@ }, "code-point-at": { "version": "1.1.0", - "bundled": true + "bundled": true, + "optional": true }, "concat-map": { "version": "0.0.1", - "bundled": true + "bundled": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", - "bundled": true + "bundled": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -2721,7 +2944,8 @@ }, "inherits": { "version": "2.0.3", - "bundled": true + "bundled": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -2731,6 +2955,7 @@ "is-fullwidth-code-point": { "version": "1.0.0", "bundled": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -2743,17 +2968,20 @@ "minimatch": { "version": "3.0.4", "bundled": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { "version": "0.0.8", - "bundled": true + "bundled": true, + "optional": true }, "minipass": { "version": "2.3.5", "bundled": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -2770,6 +2998,7 @@ "mkdirp": { "version": "0.5.1", "bundled": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -2842,7 +3071,8 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true + "bundled": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -2852,6 +3082,7 @@ "once": { "version": "1.4.0", "bundled": true, + "optional": true, "requires": { "wrappy": "1" } @@ -2927,7 +3158,8 @@ }, "safe-buffer": { "version": "5.1.2", - "bundled": true + "bundled": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -2957,6 +3189,7 @@ "string-width": { "version": "1.0.2", "bundled": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -2974,6 +3207,7 @@ "strip-ansi": { "version": "3.0.1", "bundled": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -3012,11 +3246,13 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true + "bundled": true, + "optional": true }, "yallist": { "version": "3.0.3", - "bundled": true + "bundled": true, + "optional": true } } }, @@ -3052,6 +3288,11 @@ } } }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, "get-caller-file": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", @@ -3220,6 +3461,14 @@ "write-json-file": "^2.3.0" } }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, "has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", @@ -3234,6 +3483,11 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" }, + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=" + }, "has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", @@ -3389,10 +3643,9 @@ "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" }, - "https-proxy-agent": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.2.tgz", - "integrity": "sha512-c8Ndjc9Bkpfx/vCJueCPy0jlP4ccCCSNDp8xwCZzPjKJUm+B+u9WX2x98Qx4n1PiMNTWo3D7KK5ifNV/yJyRzg==", + "https-proxy-agent-snyk-fork": { + "version": "git://github.com/snyk/node-https-proxy-agent.git#5e86ccb682d0c833c8daa25ee6f91c670161cd66", + "from": "git://github.com/snyk/node-https-proxy-agent.git#fix/https-agent-vuln", "requires": { "agent-base": "^4.3.0", "debug": "^3.1.0" @@ -3451,9 +3704,9 @@ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" }, "inquirer": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.0.tgz", - "integrity": "sha512-scfHejeG/lVZSpvCXpsB4j/wQNPM5JC8kiElOI0OUTwmc1RTpXr4H32/HOlQHcZiYl2z2VElwuCVDRG8vFmbnA==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", + "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", "requires": { "ansi-escapes": "^3.2.0", "chalk": "^2.4.2", @@ -3470,11 +3723,6 @@ "through": "^2.3.6" }, "dependencies": { - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==" - }, "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", @@ -3632,6 +3880,11 @@ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, + "is-callable": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==" + }, "is-ci": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", @@ -3648,6 +3901,11 @@ "kind-of": "^3.0.2" } }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" + }, "is-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", @@ -3758,10 +4016,18 @@ "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=" }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "requires": { + "has": "^1.0.1" + } + }, "is-retry-allowed": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", - "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", + "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==" }, "is-ssh": { "version": "1.3.1", @@ -3776,6 +4042,14 @@ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" }, + "is-symbol": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", + "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "requires": { + "has-symbols": "^1.0.0" + } + }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -3833,13 +4107,6 @@ "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" - }, - "dependencies": { - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - } } }, "jsesc": { @@ -4461,6 +4728,16 @@ "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz", "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==" }, + "object-inspect": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz", + "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==" + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, "object-visit": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", @@ -4469,6 +4746,15 @@ "isobject": "^3.0.0" } }, + "object.getownpropertydescriptors": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", + "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.5.1" + } + }, "object.pick": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", @@ -4592,15 +4878,14 @@ "dev": true }, "pac-proxy-agent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-3.0.0.tgz", - "integrity": "sha512-AOUX9jES/EkQX2zRz0AW7lSx9jD//hQS8wFXBvcnd/J2Py9KaMJMqV/LPqJssj1tgGufotb2mmopGPR15ODv1Q==", + "version": "git://github.com/snyk/node-pac-proxy-agent.git#e962ea0fe8db650a55e349e1b422e3ac99bfe451", + "from": "git://github.com/snyk/node-pac-proxy-agent.git#fix/https-proxy-agent-vuln", "requires": { "agent-base": "^4.2.0", "debug": "^3.1.0", "get-uri": "^2.0.0", "http-proxy-agent": "^2.1.0", - "https-proxy-agent": "^2.2.1", + "https-proxy-agent-snyk-fork": "git://github.com/snyk/node-https-proxy-agent.git#fix/https-agent-vuln", "pac-resolver": "^3.0.0", "raw-body": "^2.2.0", "socks-proxy-agent": "^4.0.1" @@ -4898,16 +5183,15 @@ "integrity": "sha512-Fx65lf9/YDn3hUX08XUc0J8rSux36rEsyiv21ZGUC1mOyeM3lTRpZLcrm8aAolzS4itwVfm7TAPyxC2E5zd6xg==" }, "proxy-agent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-3.1.0.tgz", - "integrity": "sha512-IkbZL4ClW3wwBL/ABFD2zJ8iP84CY0uKMvBPk/OceQe/cEjrxzN1pMHsLwhbzUoRhG9QbSxYC+Z7LBkTiBNvrA==", + "version": "git://github.com/snyk/node-proxy-agent.git#c25ef74cbe593a4d60a71ff3053466e4b3171711", + "from": "git://github.com/snyk/node-proxy-agent.git#fix/https-agent-vuln", "requires": { "agent-base": "^4.2.0", "debug": "^3.1.0", "http-proxy-agent": "^2.1.0", - "https-proxy-agent": "^2.2.1", + "https-proxy-agent-snyk-fork": "git://github.com/snyk/node-https-proxy-agent.git#fix/https-agent-vuln", "lru-cache": "^4.1.2", - "pac-proxy-agent": "^3.0.0", + "pac-proxy-agent": "git://github.com/snyk/node-pac-proxy-agent.git#fix/https-proxy-agent-vuln", "proxy-from-env": "^1.0.0", "socks-proxy-agent": "^4.0.1" } @@ -5408,9 +5692,9 @@ } }, "rxjs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.2.tgz", - "integrity": "sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz", + "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", "requires": { "tslib": "^1.9.0" } @@ -5717,15 +6001,18 @@ } }, "snyk": { - "version": "1.208.0", - "resolved": "https://registry.npmjs.org/snyk/-/snyk-1.208.0.tgz", - "integrity": "sha512-MMOQazfz+5fvoCDEBBJiuYNdcrtE3anemGvL7VJFlWu4uc8YgVZ8gvetEO7OmLmn4FfTmJ/hAthEQgcXYjDjFw==", + "version": "1.230.5", + "resolved": "https://registry.npmjs.org/snyk/-/snyk-1.230.5.tgz", + "integrity": "sha512-kzy6FHMyneVXcezBVO0xRbEDSZSPj9Z/fDH4HFwOm5cpm/HErQ8B86fO6KtfSNIsruWUFcobEzP1q41nOdleAQ==", "requires": { - "@snyk/dep-graph": "1.10.0", + "@snyk/cli-interface": "^2.0.3", + "@snyk/dep-graph": "1.12.0", "@snyk/gemfile": "1.2.0", + "@snyk/snyk-cocoapods-plugin": "1.0.2", "@types/agent-base": "^4.2.0", + "@types/restify": "^4.3.6", "abbrev": "^1.1.1", - "ansi-escapes": "^4.1.0", + "ansi-escapes": "3.2.0", "chalk": "^2.4.2", "configstore": "^3.1.2", "debug": "^3.1.0", @@ -5737,23 +6024,23 @@ "needle": "^2.2.4", "opn": "^5.5.0", "os-name": "^3.0.0", - "proxy-agent": "^3.1.0", + "proxy-agent": "git://github.com/snyk/node-proxy-agent.git#fix/https-agent-vuln", "proxy-from-env": "^1.0.0", "semver": "^6.0.0", "snyk-config": "^2.2.1", - "snyk-docker-plugin": "1.25.1", + "snyk-docker-plugin": "1.29.1", "snyk-go-plugin": "1.11.0", - "snyk-gradle-plugin": "2.12.5", + "snyk-gradle-plugin": "3.1.0", "snyk-module": "1.9.1", - "snyk-mvn-plugin": "2.3.1", + "snyk-mvn-plugin": "2.4.0", "snyk-nodejs-lockfile-parser": "1.16.0", - "snyk-nuget-plugin": "1.11.2", + "snyk-nuget-plugin": "1.12.1", "snyk-php-plugin": "1.6.4", "snyk-policy": "1.13.5", - "snyk-python-plugin": "1.10.2", + "snyk-python-plugin": "^1.13.3", "snyk-resolve": "1.0.1", - "snyk-resolve-deps": "4.0.3", - "snyk-sbt-plugin": "2.6.1", + "snyk-resolve-deps": "4.4.0", + "snyk-sbt-plugin": "2.8.0", "snyk-tree": "^1.0.0", "snyk-try-require": "1.3.1", "source-map-support": "^0.5.11", @@ -5761,7 +6048,8 @@ "tempfile": "^2.0.0", "then-fs": "^2.0.0", "update-notifier": "^2.5.0", - "uuid": "^3.3.2" + "uuid": "^3.3.2", + "wrap-ansi": "^5.1.0" }, "dependencies": { "ansi-regex": { @@ -5792,6 +6080,11 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -5811,6 +6104,16 @@ "source-map": "^0.6.0" } }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, "strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", @@ -5826,23 +6129,33 @@ "requires": { "has-flag": "^3.0.0" } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } } } }, "snyk-config": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/snyk-config/-/snyk-config-2.2.2.tgz", - "integrity": "sha512-ud1UJhU5b3z2achCVbXin6m3eeESvJTn9hBDYjp5BafI+1ajOJt0LnUB9+SAZ3CnQIK90PUb/3nSx0xjtda7sA==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/snyk-config/-/snyk-config-2.2.3.tgz", + "integrity": "sha512-9NjxHVMd1U1LFw66Lya4LXgrsFUiuRiL4opxfTFo0LmMNzUoU5Bk/p0zDdg3FE5Wg61r4fP2D8w+QTl6M8CGiw==", "requires": { "debug": "^3.1.0", - "lodash": "^4.17.14", + "lodash": "^4.17.15", "nconf": "^0.10.0" } }, "snyk-docker-plugin": { - "version": "1.25.1", - "resolved": "https://registry.npmjs.org/snyk-docker-plugin/-/snyk-docker-plugin-1.25.1.tgz", - "integrity": "sha512-n/LfA7VXjPEcSz2ZfZonT/DPSC89Zs1/HD0inPFN4RLQT3WiQnjqJUXct+D0nWwEVfhLWNc+Y7PLcTjpnZ9R3Q==", + "version": "1.29.1", + "resolved": "https://registry.npmjs.org/snyk-docker-plugin/-/snyk-docker-plugin-1.29.1.tgz", + "integrity": "sha512-Mucc1rZ7l0U8Dykr5m6HPjau8b2H8JVtVaXGbKSZD6e/47JDJhudkgrWjsS5Yt/Zdp1weE3+4SguftFiVR971A==", "requires": { "debug": "^4.1.1", "dockerfile-ast": "0.0.16", @@ -5897,10 +6210,11 @@ } }, "snyk-gradle-plugin": { - "version": "2.12.5", - "resolved": "https://registry.npmjs.org/snyk-gradle-plugin/-/snyk-gradle-plugin-2.12.5.tgz", - "integrity": "sha512-AmiQQUL0nlY3SjWUSMSmmbp273ETJzsqvk1E8jf+G/Q3mRl9xZ6BkPMebweD/y5d/smoQmr6rKL57OG+OXoi3w==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/snyk-gradle-plugin/-/snyk-gradle-plugin-3.1.0.tgz", + "integrity": "sha512-789Rqyhv1+WYbfy1Qilgsw0FMccedSaCO5n+54CXXGVUZWMsVvqJj3T8k7+vis+9Eq+Sgbdzti8vDtApz6rWWQ==", "requires": { + "@snyk/cli-interface": "^2.1.0", "@types/debug": "^4.1.4", "chalk": "^2.4.2", "clone-deep": "^0.3.0", @@ -5960,11 +6274,11 @@ } }, "snyk-mvn-plugin": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/snyk-mvn-plugin/-/snyk-mvn-plugin-2.3.1.tgz", - "integrity": "sha512-2RgBnYe3Upc7SL+sL7MmnoCoJV/TZZ7q2L0J1BAbjoD/4cca4q0TCR6QVLzytHf4fSqc6QjSMjTUfmAo0kgsBg==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/snyk-mvn-plugin/-/snyk-mvn-plugin-2.4.0.tgz", + "integrity": "sha512-Fmt6Mjx6zZz+4q6PnBkhuNGhEX++q/pKMI26ls4p3JPkx4KxBz89oncpkmf7P8YCkoaka8oHhtDEv/R4Z9LleQ==", "requires": { - "lodash": "^4.17.13", + "lodash": "^4.17.15", "tslib": "1.9.3" }, "dependencies": { @@ -6005,11 +6319,12 @@ } }, "snyk-nuget-plugin": { - "version": "1.11.2", - "resolved": "https://registry.npmjs.org/snyk-nuget-plugin/-/snyk-nuget-plugin-1.11.2.tgz", - "integrity": "sha512-dNAwwFzrxI0gJh+3Eta7EFlz+jzXeTqXUwThaEASxCNNugV8gKsK/v+k0pQBsRPKvTLFlswB2D2Bt1E7YSOixA==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/snyk-nuget-plugin/-/snyk-nuget-plugin-1.12.1.tgz", + "integrity": "sha512-QuANQxBjTGj3hEf2YpEQ0WuI4Yq/93boqWUs4eoSTfDyBRFgIkUP6fLkzNldrkL8fQbcagqQ2Xz8M9IEKRQtMg==", "requires": { "debug": "^3.1.0", + "dotnet-deps-parser": "4.5.0", "jszip": "^3.1.5", "lodash": "^4.17.14", "snyk-paket-parser": "1.5.0", @@ -6065,10 +6380,11 @@ } }, "snyk-python-plugin": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/snyk-python-plugin/-/snyk-python-plugin-1.10.2.tgz", - "integrity": "sha512-dLswHfVI9Ax8+Ia/onhv1p9S5y+Ie/oELOfpfNApbb0BPTJ5k1c2CQ7WcgQ5/nDRMUOgoKn4VTObaAGmD5or9A==", + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/snyk-python-plugin/-/snyk-python-plugin-1.13.3.tgz", + "integrity": "sha512-Ud7mHmpMG4uCChvYLx5jA8HwOV/FNpT65xTxSt+6wsOjIUTuLiqM86mbvgzgk3pir8vMP9yQEsCi1i0zYLBArw==", "requires": { + "@snyk/cli-interface": "^2.0.3", "tmp": "0.0.33" } }, @@ -6082,10 +6398,12 @@ } }, "snyk-resolve-deps": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/snyk-resolve-deps/-/snyk-resolve-deps-4.0.3.tgz", - "integrity": "sha512-GP3VBrkz1iDDw2q8ftTqppHqzIAxmsUIoXR+FRWDKcipkKHXHJyUmtEo11QVT5fNRV0D0RCsssk2S5CTxTCu6A==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/snyk-resolve-deps/-/snyk-resolve-deps-4.4.0.tgz", + "integrity": "sha512-aFPtN8WLqIk4E1ulMyzvV5reY1Iksz+3oPnUVib1jKdyTHymmOIYF7z8QZ4UUr52UsgmrD9EA/dq7jpytwFoOQ==", "requires": { + "@types/node": "^6.14.4", + "@types/semver": "^5.5.0", "ansicolors": "^0.3.2", "debug": "^3.2.5", "lodash.assign": "^4.2.0", @@ -6101,12 +6419,19 @@ "snyk-tree": "^1.0.0", "snyk-try-require": "^1.1.1", "then-fs": "^2.0.0" + }, + "dependencies": { + "@types/node": { + "version": "6.14.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-6.14.7.tgz", + "integrity": "sha512-YbPXbaynBTe0pVExPhL76TsWnxSPeFAvImIsmylpBWn/yfw+lHy+Q68aawvZHsgskT44ZAoeE67GM5f+Brekew==" + } } }, "snyk-sbt-plugin": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/snyk-sbt-plugin/-/snyk-sbt-plugin-2.6.1.tgz", - "integrity": "sha512-zWU14cm+cpamJ0CJdekTfgmv6ifdgVcapO6d27KTJThqRuR0arCqGPPyZa/Zl+jzhcK0dtRS4Ihk7g+d36SWIg==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/snyk-sbt-plugin/-/snyk-sbt-plugin-2.8.0.tgz", + "integrity": "sha512-ZzyBdND5CsaO0xkv05geZXu8Dd6Llvr/5oTj811U7h7UmrvljrAiABW4RGjRJPrPVuuJaDej2p633sgGtK9UsA==", "requires": { "semver": "^6.1.2", "tmp": "^0.1.0", @@ -6351,6 +6676,24 @@ "strip-ansi": "^3.0.0" } }, + "string.prototype.trimleft": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz", + "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==", + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz", + "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==", + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -6573,11 +6916,6 @@ "prelude-ls": "~1.1.2" } }, - "type-fest": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.5.2.tgz", - "integrity": "sha512-DWkS49EQKVX//Tbupb9TFa19c7+MK1XmzkrZUR8TAktmE/DizXoaoJV6TZ/tSIPXipqNiRI6CyAe7x69Jb6RSw==" - }, "typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", @@ -6826,10 +7164,19 @@ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "requires": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } + }, "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", + "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==" }, "validate-npm-package-license": { "version": "3.0.4", @@ -7098,12 +7445,20 @@ "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=" }, "xml2js": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", - "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", + "version": "0.4.22", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.22.tgz", + "integrity": "sha512-MWTbxAQqclRSTnehWWe5nMKzI3VmJ8ltiJEco8akcC6j3miOhjjfzKum5sId+CWhfxdOs/1xauYr8/ZDBtQiRw==", "requires": { "sax": ">=0.6.0", - "xmlbuilder": "~9.0.1" + "util.promisify": "~1.0.0", + "xmlbuilder": "~11.0.0" + }, + "dependencies": { + "xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==" + } } }, "xmlbuilder": { diff --git a/powerauth-webflow/package.json b/powerauth-webflow/package.json index 74dfeb13b..2f2115b1a 100644 --- a/powerauth-webflow/package.json +++ b/powerauth-webflow/package.json @@ -39,7 +39,7 @@ "bluebird": "^3.5.0", "intl": "^1.2.5", "sanitize-html": "^1.20.1", - "snyk": "^1.208.0", + "snyk": "^1.230.5", "lodash": "^4.17.15" }, "scripts": { From 39deb99c8e672541480eec07b67adfb28bc1b595 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Wed, 9 Oct 2019 10:18:33 +0200 Subject: [PATCH 088/197] Update migration guide --- docs/Web-Flow-0.22.0.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/Web-Flow-0.22.0.md b/docs/Web-Flow-0.22.0.md index 98a9e3fdf..0c9ce160e 100644 --- a/docs/Web-Flow-0.22.0.md +++ b/docs/Web-Flow-0.22.0.md @@ -15,6 +15,9 @@ Following database changes were introduced in version `0.22.0`: - Table `ns_organization` has been added for organization context in Web Flow. - Table `ns_operation` has new column `organization_id` for organization context. - Table `da_sms_authorization` has new column `organization_id` for organization context. + +Additional column has been added in a hotfix in version `0.22.2`: +- Table `ns_operation_config` has new column `mobile_token_enabled` for more granular mobile token configuration. DDL update script for Oracle: ``` From e6ba0048d410f99f4904a301e10aa14c04f468ad Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Thu, 10 Oct 2019 13:08:23 +0200 Subject: [PATCH 089/197] Finalize merge --- .../service/OperationPersistenceService.java | 15 ++---- powerauth-webflow/package-lock.json | 53 ++++++------------- 2 files changed, 21 insertions(+), 47 deletions(-) diff --git a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/service/OperationPersistenceService.java b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/service/OperationPersistenceService.java index 38b493105..45eb3bad5 100644 --- a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/service/OperationPersistenceService.java +++ b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/service/OperationPersistenceService.java @@ -63,26 +63,19 @@ public class OperationPersistenceService { private final IdGeneratorService idGeneratorService; private final OperationRepository operationRepository; private final OperationHistoryRepository operationHistoryRepository; - private final OperationAfsActionRepository operationAfsActionRepository; - private final AuthMethodRepository authMethodRepository; private final MobileTokenConfigurationService mobileTokenConfigurationService; /** * Service constructor. - * @param idGeneratorService ID generator service. - * @param operationRepository Operation repository. - * @param operationHistoryRepository Operation history repository. - * @param operationAfsActionRepository Operation AFS action repository. - * @param authMethodRepository Authentication method repository. * @param idGeneratorService ID generator service. + * @param operationRepository Operation repository. + * @param operationHistoryRepository Operation history repository. * @param mobileTokenConfigurationService Mobile token configuration service. */ @Autowired public OperationPersistenceService(IdGeneratorService idGeneratorService, OperationRepository operationRepository, - OperationHistoryRepository operationHistoryRepository, OperationAfsActionRepository operationAfsActionRepository, AuthMethodRepository authMethodRepository) { - this.operationAfsActionRepository = operationAfsActionRepository; - this.authMethodRepository = authMethodRepository; - OperationHistoryRepository operationHistoryRepository, MobileTokenConfigurationService mobileTokenConfigurationService) { + OperationHistoryRepository operationHistoryRepository, + MobileTokenConfigurationService mobileTokenConfigurationService) { this.objectMapper = new ObjectMapper(); this.idGeneratorService = idGeneratorService; this.operationRepository = operationRepository; diff --git a/powerauth-webflow/package-lock.json b/powerauth-webflow/package-lock.json index 637218c4f..05ca76e5a 100644 --- a/powerauth-webflow/package-lock.json +++ b/powerauth-webflow/package-lock.json @@ -2792,8 +2792,7 @@ }, "ansi-regex": { "version": "2.1.1", - "bundled": true, - "optional": true + "bundled": true }, "aproba": { "version": "1.2.0", @@ -2811,13 +2810,11 @@ }, "balanced-match": { "version": "1.0.0", - "bundled": true, - "optional": true + "bundled": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, - "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2830,18 +2827,15 @@ }, "code-point-at": { "version": "1.1.0", - "bundled": true, - "optional": true + "bundled": true }, "concat-map": { "version": "0.0.1", - "bundled": true, - "optional": true + "bundled": true }, "console-control-strings": { "version": "1.1.0", - "bundled": true, - "optional": true + "bundled": true }, "core-util-is": { "version": "1.0.2", @@ -2944,8 +2938,7 @@ }, "inherits": { "version": "2.0.3", - "bundled": true, - "optional": true + "bundled": true }, "ini": { "version": "1.3.5", @@ -2955,7 +2948,6 @@ "is-fullwidth-code-point": { "version": "1.0.0", "bundled": true, - "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -2968,20 +2960,17 @@ "minimatch": { "version": "3.0.4", "bundled": true, - "optional": true, "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { "version": "0.0.8", - "bundled": true, - "optional": true + "bundled": true }, "minipass": { "version": "2.3.5", "bundled": true, - "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -2998,7 +2987,6 @@ "mkdirp": { "version": "0.5.1", "bundled": true, - "optional": true, "requires": { "minimist": "0.0.8" } @@ -3071,8 +3059,7 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true, - "optional": true + "bundled": true }, "object-assign": { "version": "4.1.1", @@ -3082,7 +3069,6 @@ "once": { "version": "1.4.0", "bundled": true, - "optional": true, "requires": { "wrappy": "1" } @@ -3158,8 +3144,7 @@ }, "safe-buffer": { "version": "5.1.2", - "bundled": true, - "optional": true + "bundled": true }, "safer-buffer": { "version": "2.1.2", @@ -3189,7 +3174,6 @@ "string-width": { "version": "1.0.2", "bundled": true, - "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -3207,7 +3191,6 @@ "strip-ansi": { "version": "3.0.1", "bundled": true, - "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -3246,13 +3229,11 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true, - "optional": true + "bundled": true }, "yallist": { "version": "3.0.3", - "bundled": true, - "optional": true + "bundled": true } } }, @@ -4878,14 +4859,14 @@ "dev": true }, "pac-proxy-agent": { - "version": "git://github.com/snyk/node-pac-proxy-agent.git#e962ea0fe8db650a55e349e1b422e3ac99bfe451", - "from": "git://github.com/snyk/node-pac-proxy-agent.git#fix/https-proxy-agent-vuln", + "version": "3.0.0", + "resolved": "git://github.com/snyk/node-pac-proxy-agent.git#e962ea0fe8db650a55e349e1b422e3ac99bfe451", "requires": { "agent-base": "^4.2.0", "debug": "^3.1.0", "get-uri": "^2.0.0", "http-proxy-agent": "^2.1.0", - "https-proxy-agent-snyk-fork": "git://github.com/snyk/node-https-proxy-agent.git#fix/https-agent-vuln", + "https-proxy-agent-snyk-fork": "git://github.com/snyk/node-https-proxy-agent.git#5e86ccb682d0c833c8daa25ee6f91c670161cd66", "pac-resolver": "^3.0.0", "raw-body": "^2.2.0", "socks-proxy-agent": "^4.0.1" @@ -5189,9 +5170,9 @@ "agent-base": "^4.2.0", "debug": "^3.1.0", "http-proxy-agent": "^2.1.0", - "https-proxy-agent-snyk-fork": "git://github.com/snyk/node-https-proxy-agent.git#fix/https-agent-vuln", + "https-proxy-agent-snyk-fork": "*", "lru-cache": "^4.1.2", - "pac-proxy-agent": "git://github.com/snyk/node-pac-proxy-agent.git#fix/https-proxy-agent-vuln", + "pac-proxy-agent": "*", "proxy-from-env": "^1.0.0", "socks-proxy-agent": "^4.0.1" } @@ -6024,7 +6005,7 @@ "needle": "^2.2.4", "opn": "^5.5.0", "os-name": "^3.0.0", - "proxy-agent": "git://github.com/snyk/node-proxy-agent.git#fix/https-agent-vuln", + "proxy-agent": "git://github.com/snyk/node-proxy-agent.git#c25ef74cbe593a4d60a71ff3053466e4b3171711", "proxy-from-env": "^1.0.0", "semver": "^6.0.0", "snyk-config": "^2.2.1", From 31ec1196e29d01f4522d2bcba83ae3a4ec6019be Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Fri, 11 Oct 2019 18:09:02 +0200 Subject: [PATCH 090/197] Fix #563: Improve handling for blocked accounts in SCA login and user profile Rename organizationId parameter to organization_id for consistency with other OAuth 2.0 fields --- docs/Web-Flow-0.23.0.md | 5 ++ docs/sql/mysql/create_schema.sql | 1 + docs/sql/oracle/create_schema.sql | 1 + docs/sql/postgresql/create_schema.sql | 1 + .../dataadapter/client/DataAdapterClient.java | 6 +- .../model/enumeration/AccountStatus.java | 35 ++++++++++ .../CreateSmsAuthorizationRequest.java | 26 +++++++- .../model/response/UserDetailResponse.java | 19 ++++++ .../lib/nextstep/client/NextStepClient.java | 11 ++-- .../entity/enumeration/UserAccountStatus.java | 35 ++++++++++ .../request/UpdateOperationUserRequest.java | 22 ++++++- .../response/GetOperationDetailResponse.java | 18 +++++ .../controller/OperationController.java | 8 ++- .../model/entity/OperationEntity.java | 13 ++++ .../service/OperationPersistenceService.java | 1 + .../form/controller/FormLoginController.java | 7 ++ .../controller/LoginScaInitController.java | 19 ++++-- .../SmsAuthorizationController.java | 6 +- .../converter/UserAccountStatusConverter.java | 66 +++++++++++++++++++ .../controller/UserProfileController.java | 36 +++++++--- .../webflow/oauth/WebFlowTokenEnhancer.java | 2 +- 21 files changed, 311 insertions(+), 27 deletions(-) create mode 100644 powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/enumeration/AccountStatus.java create mode 100644 powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/entity/enumeration/UserAccountStatus.java create mode 100644 powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/model/converter/UserAccountStatusConverter.java diff --git a/docs/Web-Flow-0.23.0.md b/docs/Web-Flow-0.23.0.md index 52129651d..fa5b14b7e 100644 --- a/docs/Web-Flow-0.23.0.md +++ b/docs/Web-Flow-0.23.0.md @@ -8,6 +8,7 @@ Following database changes were introduced in version `0.23.0`: - Added `afs_enabled` and `afs_config_id` columns to table `ns_operation_config` - Added `operation_hash`, `websocket_session_id` and `client_ip_address` columns to table `wf_operation_session` +- Added `user_account_status` column to table `ns_operation` - New tables `ns_operation_afs` and `wf_afs_config` for integration of anti-fraud system - Updated indexes and sequences @@ -25,6 +26,8 @@ ALTER TABLE wf_operation_session ADD client_ip_address VARCHAR(32); CREATE INDEX wf_operation_hash ON wf_operation_session (operation_hash); CREATE INDEX wf_websocket_session ON wf_operation_session (websocket_session_id); +ALTER TABLE ns_operation ADD user_account_status VARCHAR(32); + CREATE TABLE ns_operation_afs ( afs_action_id INTEGER PRIMARY KEY NOT NULL, operation_id VARCHAR(256) NOT NULL, @@ -59,6 +62,8 @@ ALTER TABLE `wf_operation_session` ADD `client_ip_address` VARCHAR(32), CREATE INDEX `wf_operation_hash` ON `wf_operation_session` (`operation_hash`); CREATE INDEX `wf_websocket_session` ON `wf_operation_session` (`websocket_session_id`); +ALTER TABLE `ns_operation` ADD `user_account_status` VARCHAR(32); + CREATE TABLE ns_operation_afs ( afs_action_id INTEGER PRIMARY KEY NOT NULL AUTO_INCREMENT, operation_id VARCHAR(256) NOT NULL, diff --git a/docs/sql/mysql/create_schema.sql b/docs/sql/mysql/create_schema.sql index 020185d76..b55603bc3 100644 --- a/docs/sql/mysql/create_schema.sql +++ b/docs/sql/mysql/create_schema.sql @@ -120,6 +120,7 @@ CREATE TABLE ns_operation ( application_extras TEXT, user_id VARCHAR(256), organization_id VARCHAR(256), + user_account_status VARCHAR(32), result VARCHAR(32), timestamp_created TIMESTAMP DEFAULT CURRENT_TIMESTAMP, timestamp_expires TIMESTAMP DEFAULT CURRENT_TIMESTAMP, diff --git a/docs/sql/oracle/create_schema.sql b/docs/sql/oracle/create_schema.sql index 7c2d22123..498d247e0 100644 --- a/docs/sql/oracle/create_schema.sql +++ b/docs/sql/oracle/create_schema.sql @@ -126,6 +126,7 @@ CREATE TABLE ns_operation ( application_extras CLOB, user_id VARCHAR(256), organization_id VARCHAR(256), + user_account_status VARCHAR(32), result VARCHAR(32), timestamp_created TIMESTAMP, timestamp_expires TIMESTAMP, diff --git a/docs/sql/postgresql/create_schema.sql b/docs/sql/postgresql/create_schema.sql index 458ed3737..b1021f588 100644 --- a/docs/sql/postgresql/create_schema.sql +++ b/docs/sql/postgresql/create_schema.sql @@ -124,6 +124,7 @@ CREATE TABLE ns_operation ( application_extras TEXT, user_id VARCHAR(256), organization_id VARCHAR(256), + user_account_status VARCHAR(32), result VARCHAR(32), timestamp_created TIMESTAMP, timestamp_expires TIMESTAMP, diff --git a/powerauth-data-adapter-client/src/main/java/io/getlime/security/powerauth/lib/dataadapter/client/DataAdapterClient.java b/powerauth-data-adapter-client/src/main/java/io/getlime/security/powerauth/lib/dataadapter/client/DataAdapterClient.java index bcc09f92f..e0612b517 100644 --- a/powerauth-data-adapter-client/src/main/java/io/getlime/security/powerauth/lib/dataadapter/client/DataAdapterClient.java +++ b/powerauth-data-adapter-client/src/main/java/io/getlime/security/powerauth/lib/dataadapter/client/DataAdapterClient.java @@ -23,6 +23,7 @@ import io.getlime.core.rest.model.base.request.ObjectRequest; import io.getlime.core.rest.model.base.response.ObjectResponse; import io.getlime.security.powerauth.lib.dataadapter.model.entity.*; +import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.AccountStatus; import io.getlime.security.powerauth.lib.dataadapter.model.request.*; import io.getlime.security.powerauth.lib.dataadapter.model.response.*; import org.springframework.core.ParameterizedTypeReference; @@ -184,15 +185,16 @@ public ObjectResponse fetchUserDetail(String userId, String * * @param userId User ID. * @param organizationId Organization ID. + * @param accountStatus User account status. * @param operationContext Operation context. * @param lang Language for i18n. * @param resend Whether SMS is being resent. * @return Response with generated messageId. * @throws DataAdapterClientErrorException Thrown when client request fails or SMS could not be delivered. */ - public ObjectResponse createAuthorizationSms(String userId, String organizationId, OperationContext operationContext, String lang, boolean resend) throws DataAdapterClientErrorException { + public ObjectResponse createAuthorizationSms(String userId, String organizationId, AccountStatus accountStatus, OperationContext operationContext, String lang, boolean resend) throws DataAdapterClientErrorException { try { - CreateSmsAuthorizationRequest request = new CreateSmsAuthorizationRequest(userId, organizationId, lang, operationContext, resend); + CreateSmsAuthorizationRequest request = new CreateSmsAuthorizationRequest(userId, organizationId, accountStatus, lang, operationContext, resend); HttpEntity> entity = new HttpEntity<>(new ObjectRequest<>(request)); ResponseEntity> response = restTemplate.exchange( serviceUrl + "/api/auth/sms/create", HttpMethod.POST, entity, diff --git a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/enumeration/AccountStatus.java b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/enumeration/AccountStatus.java new file mode 100644 index 000000000..b4d37db74 --- /dev/null +++ b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/enumeration/AccountStatus.java @@ -0,0 +1,35 @@ +/* + * Copyright 2017 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.getlime.security.powerauth.lib.dataadapter.model.enumeration; + +/** + * Enumeration representing current user account status. + * + * @author Roman Strobl, roman.strobl@wultra.com + */ +public enum AccountStatus { + + /** + * User account status is active. + */ + ACTIVE, + + /** + * User account is not active (e.g. blocked or suspended for any other reason). + */ + NOT_ACTIVE + +} diff --git a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/CreateSmsAuthorizationRequest.java b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/CreateSmsAuthorizationRequest.java index 5eb37c861..4f5b1f3a5 100644 --- a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/CreateSmsAuthorizationRequest.java +++ b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/CreateSmsAuthorizationRequest.java @@ -16,6 +16,7 @@ package io.getlime.security.powerauth.lib.dataadapter.model.request; import io.getlime.security.powerauth.lib.dataadapter.model.entity.OperationContext; +import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.AccountStatus; /** * Request for creating SMS OTP authorization message. @@ -35,6 +36,11 @@ public class CreateSmsAuthorizationRequest { */ private String organizationId; + /** + * User account status. + */ + private AccountStatus accountStatus; + /** * Operation context. */ @@ -60,13 +66,15 @@ public CreateSmsAuthorizationRequest() { * Constructor with user ID, language and operation context. * @param userId User ID. * @param organizationId Organization ID. + * @param accountStatus User account status. * @param lang SMS language. * @param operationContext Operation context. * @param resend Whether SMS is being resent. */ - public CreateSmsAuthorizationRequest(String userId, String organizationId, String lang, OperationContext operationContext, boolean resend) { + public CreateSmsAuthorizationRequest(String userId, String organizationId, AccountStatus accountStatus, String lang, OperationContext operationContext, boolean resend) { this.userId = userId; this.organizationId = organizationId; + this.accountStatus = accountStatus; this.lang = lang; this.operationContext = operationContext; this.resend = resend; @@ -104,6 +112,22 @@ public void setOrganizationId(String organizationId) { this.organizationId = organizationId; } + /** + * Get current user account status. + * @return User account status. + */ + public AccountStatus getAccountStatus() { + return accountStatus; + } + + /** + * Set current user account status. + * @param accountStatus User account status. + */ + public void setAccountStatus(AccountStatus accountStatus) { + this.accountStatus = accountStatus; + } + /** * Get operation context. * @return Operation context. diff --git a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/response/UserDetailResponse.java b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/response/UserDetailResponse.java index 7d1e27c1b..056797a4c 100644 --- a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/response/UserDetailResponse.java +++ b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/response/UserDetailResponse.java @@ -16,6 +16,8 @@ package io.getlime.security.powerauth.lib.dataadapter.model.response; +import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.AccountStatus; + /** * Response with user details. * @@ -27,6 +29,7 @@ public class UserDetailResponse { private String givenName; private String familyName; private String organizationId; + private AccountStatus accountStatus; /** * Get user ID. @@ -91,4 +94,20 @@ public String getOrganizationId() { public void setOrganizationId(String organizationId) { this.organizationId = organizationId; } + + /** + * Get user account status. + * @return User account status. + */ + public AccountStatus getAccountStatus() { + return accountStatus; + } + + /** + * Set user account status. + * @param accountStatus Status. + */ + public void setAccountStatus(AccountStatus accountStatus) { + this.accountStatus = accountStatus; + } } diff --git a/powerauth-nextstep-client/src/main/java/io/getlime/security/powerauth/lib/nextstep/client/NextStepClient.java b/powerauth-nextstep-client/src/main/java/io/getlime/security/powerauth/lib/nextstep/client/NextStepClient.java index 9327efcb2..8105cdb55 100644 --- a/powerauth-nextstep-client/src/main/java/io/getlime/security/powerauth/lib/nextstep/client/NextStepClient.java +++ b/powerauth-nextstep-client/src/main/java/io/getlime/security/powerauth/lib/nextstep/client/NextStepClient.java @@ -28,6 +28,7 @@ import io.getlime.security.powerauth.lib.nextstep.model.entity.ApplicationContext; import io.getlime.security.powerauth.lib.nextstep.model.entity.KeyValueParameter; import io.getlime.security.powerauth.lib.nextstep.model.entity.OperationFormData; +import io.getlime.security.powerauth.lib.nextstep.model.entity.enumeration.UserAccountStatus; import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthMethod; import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthStepResult; import io.getlime.security.powerauth.lib.nextstep.model.exception.*; @@ -292,13 +293,14 @@ public ObjectResponse updateOperationPost(String operat * @param operationId Operation ID. * @param userId User ID. * @param organizationId Organization ID. + * @param accountStatus User account status. * @return Response. * @throws NextStepServiceException Thrown when communication with Next Step server fails, including {@link Error} with ERROR code. */ - public Response updateOperationUser(String operationId, String userId, String organizationId) throws NextStepServiceException { + public Response updateOperationUser(String operationId, String userId, String organizationId, UserAccountStatus accountStatus) throws NextStepServiceException { try { // Exchange request with NextStep server. - UpdateOperationUserRequest request = new UpdateOperationUserRequest(operationId, userId, organizationId); + UpdateOperationUserRequest request = new UpdateOperationUserRequest(operationId, userId, organizationId, accountStatus); HttpEntity> entity = new HttpEntity<>(new ObjectRequest<>(request)); ResponseEntity nsResponse = restTemplate.exchange(serviceUrl + "/operation/user", HttpMethod.PUT, entity, Response.class); return nsResponse.getBody(); @@ -314,13 +316,14 @@ public Response updateOperationUser(String operationId, String userId, String or * @param operationId Operation ID. * @param userId User ID. * @param organizationId Organization ID. + * @param accountStatus User account status. * @return Response. * @throws NextStepServiceException Thrown when communication with Next Step server fails, including {@link Error} with ERROR code. */ - public Response updateOperationUserPost(String operationId, String userId, String organizationId) throws NextStepServiceException { + public Response updateOperationUserPost(String operationId, String userId, String organizationId, UserAccountStatus accountStatus) throws NextStepServiceException { try { // Exchange request with NextStep server. - UpdateOperationUserRequest request = new UpdateOperationUserRequest(operationId, userId, organizationId); + UpdateOperationUserRequest request = new UpdateOperationUserRequest(operationId, userId, organizationId, accountStatus); HttpEntity> entity = new HttpEntity<>(new ObjectRequest<>(request)); ResponseEntity nsResponse = restTemplate.exchange(serviceUrl + "/operation/user/update", HttpMethod.POST, entity, Response.class); return nsResponse.getBody(); diff --git a/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/entity/enumeration/UserAccountStatus.java b/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/entity/enumeration/UserAccountStatus.java new file mode 100644 index 000000000..8f442342c --- /dev/null +++ b/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/entity/enumeration/UserAccountStatus.java @@ -0,0 +1,35 @@ +/* + * Copyright 2017 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.getlime.security.powerauth.lib.nextstep.model.entity.enumeration; + +/** + * Enumeration representing current user account status. + * + * @author Roman Strobl, roman.strobl@wultra.com + */ +public enum UserAccountStatus { + + /** + * User account status is active. + */ + ACTIVE, + + /** + * User account is not active (e.g. blocked or suspended for any other reason). + */ + NOT_ACTIVE + +} diff --git a/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/request/UpdateOperationUserRequest.java b/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/request/UpdateOperationUserRequest.java index 7ba59652f..5edb73702 100644 --- a/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/request/UpdateOperationUserRequest.java +++ b/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/request/UpdateOperationUserRequest.java @@ -15,6 +15,8 @@ */ package io.getlime.security.powerauth.lib.nextstep.model.request; +import io.getlime.security.powerauth.lib.nextstep.model.entity.enumeration.UserAccountStatus; + /** * Request object used for updating a user of an operation. * @@ -25,6 +27,7 @@ public class UpdateOperationUserRequest { private String operationId; private String userId; private String organizationId; + private UserAccountStatus accountStatus; /** * Default constructor. @@ -37,11 +40,13 @@ public UpdateOperationUserRequest() { * @param operationId Operation ID. * @param userId User ID. * @param organizationId Organization ID. + * @param accountStatus User account status. */ - public UpdateOperationUserRequest(String operationId, String userId, String organizationId) { + public UpdateOperationUserRequest(String operationId, String userId, String organizationId, UserAccountStatus accountStatus) { this.operationId = operationId; this.userId = userId; this.organizationId = organizationId; + this.accountStatus = accountStatus; } /** @@ -92,4 +97,19 @@ public void setOrganizationId(String organizationId) { this.organizationId = organizationId; } + /** + * Get current user account status. + * @return User account status. + */ + public UserAccountStatus getAccountStatus() { + return accountStatus; + } + + /** + * Set current user account status. + * @param accountStatus User account status. + */ + public void setAccountStatus(UserAccountStatus accountStatus) { + this.accountStatus = accountStatus; + } } diff --git a/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/response/GetOperationDetailResponse.java b/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/response/GetOperationDetailResponse.java index 694a1c86d..dbea36a8d 100644 --- a/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/response/GetOperationDetailResponse.java +++ b/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/response/GetOperationDetailResponse.java @@ -16,6 +16,7 @@ package io.getlime.security.powerauth.lib.nextstep.model.response; import io.getlime.security.powerauth.lib.nextstep.model.entity.*; +import io.getlime.security.powerauth.lib.nextstep.model.entity.enumeration.UserAccountStatus; import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthMethod; import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthResult; @@ -34,6 +35,7 @@ public class GetOperationDetailResponse { private String operationName; private String userId; private String organizationId; + private UserAccountStatus accountStatus; private AuthResult result; private Date timestampCreated; private Date timestampExpires; @@ -119,6 +121,22 @@ public void setOrganizationId(String organizationId) { this.organizationId = organizationId; } + /** + * Get current user account status. + * @return User account status. + */ + public UserAccountStatus getAccountStatus() { + return accountStatus; + } + + /** + * Set current user account status. + * @param accountStatus User account status. + */ + public void setAccountStatus(UserAccountStatus accountStatus) { + this.accountStatus = accountStatus; + } + /** * Get the authentication step result. * @return Authentication step result. diff --git a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/controller/OperationController.java b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/controller/OperationController.java index 871f05df1..4b404a870 100644 --- a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/controller/OperationController.java +++ b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/controller/OperationController.java @@ -29,6 +29,7 @@ import io.getlime.security.powerauth.app.nextstep.service.OperationPersistenceService; import io.getlime.security.powerauth.app.nextstep.service.StepResolutionService; import io.getlime.security.powerauth.lib.nextstep.model.entity.*; +import io.getlime.security.powerauth.lib.nextstep.model.entity.enumeration.UserAccountStatus; import io.getlime.security.powerauth.lib.nextstep.model.exception.NextStepServiceException; import io.getlime.security.powerauth.lib.nextstep.model.exception.OperationAlreadyExistsException; import io.getlime.security.powerauth.lib.nextstep.model.exception.OperationNotConfiguredException; @@ -169,12 +170,13 @@ private Response updateOperationUserImpl(ObjectRequest objectResponse = dataAdapterClient.authenticateUser(userId, organizationId, protectedPassword, authenticationContext, operationContext); diff --git a/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/controller/LoginScaInitController.java b/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/controller/LoginScaInitController.java index 20d49dbf4..83c6c494d 100644 --- a/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/controller/LoginScaInitController.java +++ b/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/controller/LoginScaInitController.java @@ -21,6 +21,7 @@ import io.getlime.security.powerauth.lib.dataadapter.client.DataAdapterClientErrorException; import io.getlime.security.powerauth.lib.dataadapter.model.entity.FormData; import io.getlime.security.powerauth.lib.dataadapter.model.entity.OperationContext; +import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.AccountStatus; import io.getlime.security.powerauth.lib.dataadapter.model.response.UserDetailResponse; import io.getlime.security.powerauth.lib.nextstep.client.NextStepClient; import io.getlime.security.powerauth.lib.nextstep.model.entity.ApplicationContext; @@ -43,6 +44,7 @@ import io.getlime.security.powerauth.lib.webflow.authentication.model.OrganizationDetail; import io.getlime.security.powerauth.lib.webflow.authentication.model.converter.FormDataConverter; import io.getlime.security.powerauth.lib.webflow.authentication.model.converter.OrganizationConverter; +import io.getlime.security.powerauth.lib.webflow.authentication.model.converter.UserAccountStatusConverter; import io.getlime.security.powerauth.lib.webflow.authentication.service.AuthMethodQueryService; import io.getlime.security.powerauth.lib.webflow.authentication.service.AuthenticationManagementService; import org.slf4j.Logger; @@ -75,6 +77,7 @@ public class LoginScaInitController extends AuthMethodController daResponse = dataAdapterClient.createAuthorizationSms(userId, organizationId, operationContext, LocaleContextHolder.getLocale().getLanguage(), resend); + ObjectResponse daResponse = dataAdapterClient.createAuthorizationSms(userId, organizationId, accountStatus, operationContext, LocaleContextHolder.getLocale().getLanguage(), resend); updateLastMessageTimestampInHttpSession(System.currentTimeMillis()); return daResponse.getResponseObject(); } diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/model/converter/UserAccountStatusConverter.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/model/converter/UserAccountStatusConverter.java new file mode 100644 index 000000000..ae4146cab --- /dev/null +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/model/converter/UserAccountStatusConverter.java @@ -0,0 +1,66 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.getlime.security.powerauth.lib.webflow.authentication.model.converter; + +import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.AccountStatus; +import io.getlime.security.powerauth.lib.nextstep.model.entity.enumeration.UserAccountStatus; + +/** + * Converter for user account status. + * + * @author Roman Strobl, roman.strobl@wultra.com + */ +public class UserAccountStatusConverter { + + /** + * Convert of user account status. + * @param userAccountStatus User account status in Next Step. + * @return User account status in Data Adapter. + */ + public AccountStatus fromUserAccountStatus(UserAccountStatus userAccountStatus) { + if (userAccountStatus == null) { + return null; + } + + switch (userAccountStatus) { + case ACTIVE: + return AccountStatus.ACTIVE; + + case NOT_ACTIVE: + return AccountStatus.NOT_ACTIVE; + + default: + return null; + } + } + + public UserAccountStatus fromAccountStatus(AccountStatus accountStatus) { + if (accountStatus == null) { + return null; + } + + switch (accountStatus) { + case ACTIVE: + return UserAccountStatus.ACTIVE; + + case NOT_ACTIVE: + return UserAccountStatus.NOT_ACTIVE; + + default: + return null; + } + } +} diff --git a/powerauth-webflow-resources/src/main/java/io/getlime/security/powerauth/lib/webflow/resource/controller/UserProfileController.java b/powerauth-webflow-resources/src/main/java/io/getlime/security/powerauth/lib/webflow/resource/controller/UserProfileController.java index 35ccc54d8..b24be6cd1 100644 --- a/powerauth-webflow-resources/src/main/java/io/getlime/security/powerauth/lib/webflow/resource/controller/UserProfileController.java +++ b/powerauth-webflow-resources/src/main/java/io/getlime/security/powerauth/lib/webflow/resource/controller/UserProfileController.java @@ -19,6 +19,7 @@ import io.getlime.core.rest.model.base.response.ObjectResponse; import io.getlime.security.powerauth.lib.dataadapter.client.DataAdapterClient; import io.getlime.security.powerauth.lib.dataadapter.client.DataAdapterClientErrorException; +import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.AccountStatus; import io.getlime.security.powerauth.lib.dataadapter.model.response.UserDetailResponse; import io.getlime.security.powerauth.lib.webflow.resource.configuration.WebFlowResourcesServerConfiguration; import io.getlime.security.powerauth.lib.webflow.resource.model.UserInfoResponse; @@ -52,7 +53,9 @@ public class UserProfileController { private static final String LANGUAGE = "language"; private static final String SCA = "sca"; - private static final String ORGANIZATION_ID = "organizationId"; + private static final String ORGANIZATION_ID = "organization_id"; + + private static final String ANONYMOUS_USER = "anonymousUser"; private static final Logger logger = LoggerFactory.getLogger(UserProfileController.class); @@ -86,6 +89,11 @@ public UserProfileController(DataAdapterClient client, AuthorizationServerTokenS final ObjectResponse userDetailResponse = client.fetchUserDetail(authentication.getUserAuthentication().getName(), organizationId); + if (userDetailResponse.getResponseObject().getAccountStatus() != AccountStatus.ACTIVE) { + // Return dummy user in case user account is not ACTIVE + return anonymousUser(); + } + UserDetailResponse userDetail = userDetailResponse.getResponseObject(); userResponse.getUser().setId(userDetail.getId()); userResponse.getUser().setGivenName(userDetail.getGivenName()); @@ -100,13 +108,7 @@ public UserProfileController(DataAdapterClient client, AuthorizationServerTokenS } userResponse.getConnection().setOrganizationId(organizationId); } catch (DataAdapterClientErrorException e) { - // Return dummy user - userResponse.getUser().setId("anonymousUser"); - userResponse.getUser().setGivenName(null); - userResponse.getUser().setFamilyName(null); - userResponse.getConnection().setLanguage("en"); - userResponse.getConnection().setSca(false); - userResponse.getConnection().setOrganizationId(null); + return anonymousUser(); } // Save service information userResponse.getService().setApplicationName(webFlowResourcesServerConfiguration.getApplicationName()); @@ -135,6 +137,9 @@ public UserProfileController(DataAdapterClient client, AuthorizationServerTokenS final String organizationId = (String) additionalInfo.get(ORGANIZATION_ID); logger.info("Fetching user details for user with ID: {}, organization ID: {}", usedId, organizationId); final ObjectResponse userDetail = client.fetchUserDetail(usedId, organizationId); + if (userDetail.getResponseObject().getAccountStatus() != AccountStatus.ACTIVE) { + return new UserInfoResponse(ANONYMOUS_USER, null, null, null); + } final UserDetailResponse user = userDetail.getResponseObject(); final String id = user.getId(); final String givenName = user.getGivenName(); @@ -146,4 +151,19 @@ public UserProfileController(DataAdapterClient client, AuthorizationServerTokenS } } + /** + * Create dummy user for case when user does not exist or user account is not active. + * @return Dummy user response. + */ + private UserResponse anonymousUser() { + UserResponse userResponse = new UserResponse(); + userResponse.getUser().setId(ANONYMOUS_USER); + userResponse.getUser().setGivenName(null); + userResponse.getUser().setFamilyName(null); + userResponse.getConnection().setLanguage("en"); + userResponse.getConnection().setSca(false); + userResponse.getConnection().setOrganizationId(null); + return userResponse; + } + } diff --git a/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/oauth/WebFlowTokenEnhancer.java b/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/oauth/WebFlowTokenEnhancer.java index eb047770f..c647528e3 100644 --- a/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/oauth/WebFlowTokenEnhancer.java +++ b/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/oauth/WebFlowTokenEnhancer.java @@ -34,7 +34,7 @@ public class WebFlowTokenEnhancer implements TokenEnhancer { private static final String LANGUAGE = "language"; private static final String SCA = "sca"; - private static final String ORGANIZATION_ID = "organizationId"; + private static final String ORGANIZATION_ID = "organization_id"; /** * Enhance access tokens with additional information. From 5d718d29552dc0f321c3c896580ff0dd28878a3f Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Mon, 14 Oct 2019 14:21:22 +0200 Subject: [PATCH 091/197] Fix #533: Timed out operation is not updated in Next Step --- .../mtoken/controller/MobileTokenOnlineController.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/controller/MobileTokenOnlineController.java b/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/controller/MobileTokenOnlineController.java index 662b108a6..dbf61ee93 100644 --- a/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/controller/MobileTokenOnlineController.java +++ b/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/controller/MobileTokenOnlineController.java @@ -148,6 +148,11 @@ protected AuthMethod getAuthMethodName() { if (operation.isExpired()) { logger.warn("Operation has timed out, operation ID: {}", operation.getOperationId()); // handle operation expiration + try { + cancelAuthorization(operation.getOperationId(), operation.getUserId(), OperationCancelReason.TIMED_OUT_OPERATION, null); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } clearCurrentBrowserSession(); final MobileTokenAuthenticationResponse response = new MobileTokenAuthenticationResponse(); response.setResult(AuthStepResult.AUTH_FAILED); From 4502dae57fe84465a3ddcee5e90d8c22be779092 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Mon, 14 Oct 2019 14:23:58 +0200 Subject: [PATCH 092/197] Change log level for timed out operations, it is a regular event --- .../mtoken/controller/MobileTokenOnlineController.java | 2 +- .../webflow/authentication/controller/AuthMethodController.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/controller/MobileTokenOnlineController.java b/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/controller/MobileTokenOnlineController.java index dbf61ee93..5a7f60825 100644 --- a/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/controller/MobileTokenOnlineController.java +++ b/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/controller/MobileTokenOnlineController.java @@ -146,7 +146,7 @@ protected AuthMethod getAuthMethodName() { // Custom handling of operation expiration, checkOperationExpiration() method is not called if (operation.isExpired()) { - logger.warn("Operation has timed out, operation ID: {}", operation.getOperationId()); + logger.info("Operation has timed out, operation ID: {}", operation.getOperationId()); // handle operation expiration try { cancelAuthorization(operation.getOperationId(), operation.getUserId(), OperationCancelReason.TIMED_OUT_OPERATION, null); diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/controller/AuthMethodController.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/controller/AuthMethodController.java index 9815087c1..661e8c480 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/controller/AuthMethodController.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/controller/AuthMethodController.java @@ -144,7 +144,7 @@ protected void checkOperationExpiration(GetOperationDetailResponse operation) th throw new IllegalArgumentException("Operation is null in checkOperationExpiration"); } if (operation.isExpired()) { - logger.warn("Operation has timed out, operation ID: {}", operation.getOperationId()); + logger.info("Operation has timed out, operation ID: {}", operation.getOperationId()); try { cancelAuthorization(operation.getOperationId(), operation.getUserId(), OperationCancelReason.TIMED_OUT_OPERATION, null); } catch (Exception e) { From c0415ee6f01c8bf57dbecb2563ae2b11922c80b6 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Mon, 14 Oct 2019 15:22:43 +0200 Subject: [PATCH 093/197] Fix DDL scripts --- docs/Web-Flow-0.23.0.md | 2 +- docs/sql/oracle/create_schema.sql | 2 +- docs/sql/postgresql/create_schema.sql | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/Web-Flow-0.23.0.md b/docs/Web-Flow-0.23.0.md index 52129651d..fb9bd449c 100644 --- a/docs/Web-Flow-0.23.0.md +++ b/docs/Web-Flow-0.23.0.md @@ -35,7 +35,7 @@ CREATE TABLE ns_operation_afs ( response_afs_label VARCHAR(256), response_afs_extras VARCHAR(256), timestamp_created TIMESTAMP, - FOREIGN KEY operation_afs_fk (operation_id) REFERENCES ns_operation (operation_id) + CONSTRAINT operation_afs_fk FOREIGN KEY (operation_id) REFERENCES ns_operation (operation_id) ); CREATE TABLE wf_afs_config ( diff --git a/docs/sql/oracle/create_schema.sql b/docs/sql/oracle/create_schema.sql index 7c2d22123..b59b6bab3 100644 --- a/docs/sql/oracle/create_schema.sql +++ b/docs/sql/oracle/create_schema.sql @@ -162,7 +162,7 @@ CREATE TABLE ns_operation_afs ( response_afs_label VARCHAR(256), response_afs_extras VARCHAR(256), timestamp_created TIMESTAMP, - FOREIGN KEY operation_afs_fk (operation_id) REFERENCES ns_operation (operation_id) + CONSTRAINT operation_afs_fk FOREIGN KEY (operation_id) REFERENCES ns_operation (operation_id) ); -- Table ns_step_definition stores definitions of authentication/authorization steps. diff --git a/docs/sql/postgresql/create_schema.sql b/docs/sql/postgresql/create_schema.sql index 458ed3737..92ac96b32 100644 --- a/docs/sql/postgresql/create_schema.sql +++ b/docs/sql/postgresql/create_schema.sql @@ -160,8 +160,8 @@ CREATE TABLE ns_operation_afs ( response_afs_label VARCHAR(256), response_afs_extras VARCHAR(256), timestamp_created TIMESTAMP, - FOREIGN KEY operation_afs_fk (operation_id) REFERENCES ns_operation (operation_id) -) + CONSTRAINT operation_afs_fk FOREIGN KEY (operation_id) REFERENCES ns_operation (operation_id) +); -- Table ns_step_definition stores definitions of authentication/authorization steps. -- Data in this table needs to be loaded before Web Flow is started. From 1e82b7bc6683bd6690ff5306df2106116b8c3c4b Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Mon, 14 Oct 2019 17:21:22 +0200 Subject: [PATCH 094/197] Fix #574: Store information about used authorization instrument --- docs/Web-Flow-0.23.0.md | 5 ++ docs/sql/mysql/create_schema.sql | 1 + docs/sql/oracle/create_schema.sql | 1 + docs/sql/postgresql/create_schema.sql | 1 + .../model/enumeration/AfsAuthInstrument.java | 45 ++++++++++++++++ .../model/request/AfsRequestParameters.java | 8 +-- .../lib/nextstep/client/NextStepClient.java | 9 +++- .../model/enumeration/AuthInstrument.java | 2 +- .../model/request/UpdateOperationRequest.java | 18 +++++++ .../model/entity/OperationHistoryEntity.java | 11 ++++ .../service/OperationPersistenceService.java | 3 +- .../model/request/ApprovalScaInitRequest.java | 8 +++ .../consent/controller/ConsentController.java | 2 +- .../model/request/ConsentAuthRequest.java | 7 +++ .../form/controller/FormLoginController.java | 2 +- ...UsernamePasswordAuthenticationRequest.java | 9 ++++ .../model/request/InitOperationRequest.java | 8 +++ .../model/request/VerifyTimeoutRequest.java | 9 ++++ .../model/request/LoginScaInitRequest.java | 9 ++++ .../controller/MobileAppApiController.java | 8 +-- .../MobileTokenOfflineController.java | 2 +- .../MobileTokenAuthenticationRequest.java | 9 ++++ .../request/QrCodeAuthenticationRequest.java | 8 +++ .../model/request/QrCodeInitRequest.java | 4 +- .../model/request/OperationDetailRequest.java | 5 +- .../model/request/OperationReviewRequest.java | 9 ++++ ...pdateOperationChosenAuthMethodRequest.java | 3 +- .../UpdateOperationFormDataRequest.java | 3 +- .../SmsAuthorizationController.java | 31 ++++++----- .../request/SmsAuthorizationRequest.java | 18 +++++++ .../authentication/base/AuthStepRequest.java | 12 ++++- .../controller/AuthMethodController.java | 30 +++++------ .../listener/WebSocketDisconnectListener.java | 3 +- .../converter/AuthInstrumentConverter.java | 51 +++++++++++++++++++ .../service/AfsIntegrationService.java | 6 +-- .../src/main/resources/application.properties | 2 +- 36 files changed, 304 insertions(+), 58 deletions(-) create mode 100644 powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/enumeration/AfsAuthInstrument.java rename {powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter => powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep}/model/enumeration/AuthInstrument.java (94%) create mode 100644 powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/model/converter/AuthInstrumentConverter.java diff --git a/docs/Web-Flow-0.23.0.md b/docs/Web-Flow-0.23.0.md index fb9bd449c..a5c6b325b 100644 --- a/docs/Web-Flow-0.23.0.md +++ b/docs/Web-Flow-0.23.0.md @@ -8,6 +8,7 @@ Following database changes were introduced in version `0.23.0`: - Added `afs_enabled` and `afs_config_id` columns to table `ns_operation_config` - Added `operation_hash`, `websocket_session_id` and `client_ip_address` columns to table `wf_operation_session` +- Added `request_auth_instruments` column to table `ns_operation_history` - New tables `ns_operation_afs` and `wf_afs_config` for integration of anti-fraud system - Updated indexes and sequences @@ -25,6 +26,8 @@ ALTER TABLE wf_operation_session ADD client_ip_address VARCHAR(32); CREATE INDEX wf_operation_hash ON wf_operation_session (operation_hash); CREATE INDEX wf_websocket_session ON wf_operation_session (websocket_session_id); +ALTER TABLE ns_operation_history ADD request_auth_instruments VARCHAR(256); + CREATE TABLE ns_operation_afs ( afs_action_id INTEGER PRIMARY KEY NOT NULL, operation_id VARCHAR(256) NOT NULL, @@ -59,6 +62,8 @@ ALTER TABLE `wf_operation_session` ADD `client_ip_address` VARCHAR(32), CREATE INDEX `wf_operation_hash` ON `wf_operation_session` (`operation_hash`); CREATE INDEX `wf_websocket_session` ON `wf_operation_session` (`websocket_session_id`); +ALTER TABLE `ns_operation_history` ADD `request_auth_instruments` VARCHAR(256); + CREATE TABLE ns_operation_afs ( afs_action_id INTEGER PRIMARY KEY NOT NULL AUTO_INCREMENT, operation_id VARCHAR(256) NOT NULL, diff --git a/docs/sql/mysql/create_schema.sql b/docs/sql/mysql/create_schema.sql index 020185d76..5325775a9 100644 --- a/docs/sql/mysql/create_schema.sql +++ b/docs/sql/mysql/create_schema.sql @@ -131,6 +131,7 @@ CREATE TABLE ns_operation_history ( operation_id VARCHAR(256) NOT NULL, result_id INTEGER NOT NULL, request_auth_method VARCHAR(32) NOT NULL, + request_auth_instruments VARCHAR(256), request_auth_step_result VARCHAR(32) NOT NULL, request_params VARCHAR(4096), response_result VARCHAR(32) NOT NULL, diff --git a/docs/sql/oracle/create_schema.sql b/docs/sql/oracle/create_schema.sql index b59b6bab3..6ffdfadc1 100644 --- a/docs/sql/oracle/create_schema.sql +++ b/docs/sql/oracle/create_schema.sql @@ -138,6 +138,7 @@ CREATE TABLE ns_operation_history ( operation_id VARCHAR(256) NOT NULL, result_id INTEGER NOT NULL, request_auth_method VARCHAR(32) NOT NULL, + request_auth_instruments VARCHAR(256), request_auth_step_result VARCHAR(32) NOT NULL, request_params VARCHAR(4000), response_result VARCHAR(32) NOT NULL, diff --git a/docs/sql/postgresql/create_schema.sql b/docs/sql/postgresql/create_schema.sql index 92ac96b32..22094ee09 100644 --- a/docs/sql/postgresql/create_schema.sql +++ b/docs/sql/postgresql/create_schema.sql @@ -136,6 +136,7 @@ CREATE TABLE ns_operation_history ( operation_id VARCHAR(256) NOT NULL, result_id INTEGER NOT NULL, request_auth_method VARCHAR(32) NOT NULL, + request_auth_instruments VARCHAR(256), request_auth_step_result VARCHAR(32) NOT NULL, request_params VARCHAR(4000), response_result VARCHAR(32) NOT NULL, diff --git a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/enumeration/AfsAuthInstrument.java b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/enumeration/AfsAuthInstrument.java new file mode 100644 index 000000000..5e79802c8 --- /dev/null +++ b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/enumeration/AfsAuthInstrument.java @@ -0,0 +1,45 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.getlime.security.powerauth.lib.dataadapter.model.enumeration; + +/** + * Authentication instruments used for authentication / authorization during authentication steps. + * + * @author Roman Strobl, roman.strobl@wultra.com + */ +public enum AfsAuthInstrument { + + /** + * Password is used for step authentication / authorization. + */ + PASSWORD, + + /** + * SMS authorization code is used for step authentication / authorization. + */ + SMS_KEY, + + /** + * PowerAuth mobile token application is used for step authentication / authorization. + */ + POWERAUTH_TOKEN, + + /** + * Hardware token is used for step authentication / authorization. + */ + HW_TOKEN + +} diff --git a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/AfsRequestParameters.java b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/AfsRequestParameters.java index e89243c26..ea6b479da 100644 --- a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/AfsRequestParameters.java +++ b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/AfsRequestParameters.java @@ -17,7 +17,7 @@ import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.AfsAction; import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.AfsType; -import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.AuthInstrument; +import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.AfsAuthInstrument; import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.OperationTerminationReason; import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthStepResult; @@ -54,7 +54,7 @@ public class AfsRequestParameters { /** * Authentication instruments used during this authentication step. */ - private final List authInstruments = new ArrayList<>(); + private final List authInstruments = new ArrayList<>(); /** * Authentication step result. @@ -83,7 +83,7 @@ public AfsRequestParameters() { * @param authStepResult Authentication step result. * @param operationTerminationReason Reason why operation was terminated. */ - public AfsRequestParameters(AfsType afsType, AfsAction afsAction, String clientIpAddress, int stepIndex, String username, List authInstruments, AuthStepResult authStepResult, OperationTerminationReason operationTerminationReason) { + public AfsRequestParameters(AfsType afsType, AfsAction afsAction, String clientIpAddress, int stepIndex, String username, List authInstruments, AuthStepResult authStepResult, OperationTerminationReason operationTerminationReason) { this.afsType = afsType; this.afsAction = afsAction; this.clientIpAddress = clientIpAddress; @@ -161,7 +161,7 @@ public void setStepIndex(int stepIndex) { * Get authentication authentication instruments used during this step. * @return Authentication authentication instruments used during this step. */ - public List getAuthInstruments() { + public List getAuthInstruments() { return authInstruments; } diff --git a/powerauth-nextstep-client/src/main/java/io/getlime/security/powerauth/lib/nextstep/client/NextStepClient.java b/powerauth-nextstep-client/src/main/java/io/getlime/security/powerauth/lib/nextstep/client/NextStepClient.java index 9327efcb2..d6c13a18b 100644 --- a/powerauth-nextstep-client/src/main/java/io/getlime/security/powerauth/lib/nextstep/client/NextStepClient.java +++ b/powerauth-nextstep-client/src/main/java/io/getlime/security/powerauth/lib/nextstep/client/NextStepClient.java @@ -28,6 +28,7 @@ import io.getlime.security.powerauth.lib.nextstep.model.entity.ApplicationContext; import io.getlime.security.powerauth.lib.nextstep.model.entity.KeyValueParameter; import io.getlime.security.powerauth.lib.nextstep.model.entity.OperationFormData; +import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthInstrument; import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthMethod; import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthStepResult; import io.getlime.security.powerauth.lib.nextstep.model.exception.*; @@ -215,6 +216,7 @@ public ObjectResponse createOperation(String operationN * @param operationId Operation ID. * @param userId User ID. * @param authMethod Authentication method. + * @param authInstruments Authentication / authorization instruments. * @param organizationId Organization ID. * @param authStepResult Result of the last step. * @param authStepResultDescription Description of the result of the last step. @@ -223,7 +225,7 @@ public ObjectResponse createOperation(String operationN * @return A Response with UpdateOperationResponse object for OK status or ErrorModel for ERROR status. * @throws NextStepServiceException Thrown when communication with Next Step server fails, including {@link Error} with ERROR code. */ - public ObjectResponse updateOperation(String operationId, String userId, String organizationId, AuthMethod authMethod, AuthStepResult authStepResult, String authStepResultDescription, List params, ApplicationContext applicationContext) throws NextStepServiceException { + public ObjectResponse updateOperation(String operationId, String userId, String organizationId, AuthMethod authMethod, List authInstruments, AuthStepResult authStepResult, String authStepResultDescription, List params, ApplicationContext applicationContext) throws NextStepServiceException { try { // Exchange next step request with NextStep server. UpdateOperationRequest request = new UpdateOperationRequest(); @@ -231,6 +233,7 @@ public ObjectResponse updateOperation(String operationI request.setUserId(userId); request.setOrganizationId(organizationId); request.setAuthMethod(authMethod); + request.setAuthInstruments(authInstruments); request.setAuthStepResult(authStepResult); request.setAuthStepResultDescription(authStepResultDescription); if (params != null) { @@ -254,6 +257,7 @@ public ObjectResponse updateOperation(String operationI * @param operationId Operation ID. * @param userId User ID. * @param authMethod Authentication method. + * @param authInstruments Used authentication / authorization instruments. * @param organizationId Organization ID. * @param authStepResult Result of the last step. * @param authStepResultDescription Description of the result of the last step. @@ -262,7 +266,7 @@ public ObjectResponse updateOperation(String operationI * @return A Response with UpdateOperationResponse object for OK status or ErrorModel for ERROR status. * @throws NextStepServiceException Thrown when communication with Next Step server fails, including {@link Error} with ERROR code. */ - public ObjectResponse updateOperationPost(String operationId, String userId, String organizationId, AuthMethod authMethod, AuthStepResult authStepResult, String authStepResultDescription, List params, ApplicationContext applicationContext) throws NextStepServiceException { + public ObjectResponse updateOperationPost(String operationId, String userId, String organizationId, AuthMethod authMethod, List authInstruments, AuthStepResult authStepResult, String authStepResultDescription, List params, ApplicationContext applicationContext) throws NextStepServiceException { try { // Exchange next step request with NextStep server. UpdateOperationRequest request = new UpdateOperationRequest(); @@ -270,6 +274,7 @@ public ObjectResponse updateOperationPost(String operat request.setUserId(userId); request.setOrganizationId(organizationId); request.setAuthMethod(authMethod); + request.setAuthInstruments(authInstruments); request.setAuthStepResult(authStepResult); request.setAuthStepResultDescription(authStepResultDescription); if (params != null) { diff --git a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/enumeration/AuthInstrument.java b/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/enumeration/AuthInstrument.java similarity index 94% rename from powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/enumeration/AuthInstrument.java rename to powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/enumeration/AuthInstrument.java index b47463391..2a5f6a71b 100644 --- a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/enumeration/AuthInstrument.java +++ b/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/enumeration/AuthInstrument.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.getlime.security.powerauth.lib.dataadapter.model.enumeration; +package io.getlime.security.powerauth.lib.nextstep.model.enumeration; /** * Authentication instruments used for authentication / authorization during authentication steps. diff --git a/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/request/UpdateOperationRequest.java b/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/request/UpdateOperationRequest.java index f3327b893..1571fa326 100644 --- a/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/request/UpdateOperationRequest.java +++ b/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/request/UpdateOperationRequest.java @@ -17,6 +17,7 @@ import io.getlime.security.powerauth.lib.nextstep.model.entity.ApplicationContext; import io.getlime.security.powerauth.lib.nextstep.model.entity.KeyValueParameter; +import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthInstrument; import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthMethod; import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthStepResult; @@ -34,6 +35,7 @@ public class UpdateOperationRequest { private String userId; private String organizationId; private AuthMethod authMethod; + private List authInstruments; private AuthStepResult authStepResult; private String authStepResultDescription; private List params; @@ -110,6 +112,22 @@ public void setAuthMethod(AuthMethod authMethod) { this.authMethod = authMethod; } + /** + * Get used authentication / authorization instruments. + * @return Used authentication / authorization instruments. + */ + public List getAuthInstruments() { + return authInstruments; + } + + /** + * Set used authentication / authorization instruments. + * @param authInstruments Used authentication / authorization instruments. + */ + public void setAuthInstruments(List authInstruments) { + this.authInstruments = authInstruments; + } + /** * Get the result of the previous authentication step. * @return Authentication step result. diff --git a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/repository/model/entity/OperationHistoryEntity.java b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/repository/model/entity/OperationHistoryEntity.java index b2411c5d4..68131a5e0 100644 --- a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/repository/model/entity/OperationHistoryEntity.java +++ b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/repository/model/entity/OperationHistoryEntity.java @@ -45,6 +45,9 @@ public class OperationHistoryEntity implements Serializable { @Enumerated(EnumType.STRING) private AuthMethod requestAuthMethod; + @Column(name = "request_auth_instruments") + private String requestAuthInstruments; + @Column(name = "request_params") private String requestParams; @@ -103,6 +106,14 @@ public void setRequestAuthMethod(AuthMethod requestAuthMethod) { this.requestAuthMethod = requestAuthMethod; } + public String getRequestAuthInstruments() { + return requestAuthInstruments; + } + + public void setRequestAuthInstruments(String requestAuthInstruments) { + this.requestAuthInstruments = requestAuthInstruments; + } + public String getRequestParams() { return requestParams; } diff --git a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/service/OperationPersistenceService.java b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/service/OperationPersistenceService.java index 45eb3bad5..ddfee5908 100644 --- a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/service/OperationPersistenceService.java +++ b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/service/OperationPersistenceService.java @@ -162,8 +162,9 @@ public void updateOperation(UpdateOperationRequest request, UpdateOperationRespo operationHistory.setResponseResult(response.getResult()); operationHistory.setResponseResultDescription(response.getResultDescription()); try { - // Params and steps are saved as JSON for now - new entities would be required to store this data. + // Params, steps and auth instruments are saved as JSON for now - new entities would be required to store this data. // We can add these entities later in case they are needed. + operationHistory.setRequestAuthInstruments(objectMapper.writeValueAsString(request.getAuthInstruments())); operationHistory.setRequestParams(objectMapper.writeValueAsString(request.getParams())); operationHistory.setResponseSteps(objectMapper.writeValueAsString(response.getSteps())); } catch (JsonProcessingException e) { diff --git a/powerauth-webflow-authentication-approval-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/approvalsca/model/request/ApprovalScaInitRequest.java b/powerauth-webflow-authentication-approval-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/approvalsca/model/request/ApprovalScaInitRequest.java index 72a4d6c2a..04f03dad8 100644 --- a/powerauth-webflow-authentication-approval-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/approvalsca/model/request/ApprovalScaInitRequest.java +++ b/powerauth-webflow-authentication-approval-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/approvalsca/model/request/ApprovalScaInitRequest.java @@ -15,8 +15,12 @@ */ package io.getlime.security.powerauth.lib.webflow.authentication.method.approvalsca.model.request; +import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthInstrument; import io.getlime.security.powerauth.lib.webflow.authentication.base.AuthStepRequest; +import java.util.Collections; +import java.util.List; + /** * Model for an init request for SCA approval. * @@ -24,4 +28,8 @@ */ public class ApprovalScaInitRequest extends AuthStepRequest { + @Override + public List getAuthInstruments() { + return Collections.emptyList(); + } } diff --git a/powerauth-webflow-authentication-consent/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/consent/controller/ConsentController.java b/powerauth-webflow-authentication-consent/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/consent/controller/ConsentController.java index 40052c316..ca7ca7a0f 100644 --- a/powerauth-webflow-authentication-consent/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/consent/controller/ConsentController.java +++ b/powerauth-webflow-authentication-consent/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/consent/controller/ConsentController.java @@ -147,7 +147,7 @@ protected AuthenticationResult authenticate(ConsentAuthRequest request) throws A // log failed authorization into operation history so that maximum number of Next Step update calls can be checked Integer remainingAttemptsNS; try { - UpdateOperationResponse response = failAuthorization(operation.getOperationId(), operation.getUserId(), null); + UpdateOperationResponse response = failAuthorization(operation.getOperationId(), operation.getUserId(), request.getAuthInstruments(), null); if (response.getResult() == AuthResult.FAILED) { cleanHttpSession(); // FAILED result instead of CONTINUE means the authentication method is failed diff --git a/powerauth-webflow-authentication-consent/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/consent/model/request/ConsentAuthRequest.java b/powerauth-webflow-authentication-consent/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/consent/model/request/ConsentAuthRequest.java index 4ee8bc3a8..957b01bc4 100644 --- a/powerauth-webflow-authentication-consent/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/consent/model/request/ConsentAuthRequest.java +++ b/powerauth-webflow-authentication-consent/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/consent/model/request/ConsentAuthRequest.java @@ -16,8 +16,10 @@ package io.getlime.security.powerauth.lib.webflow.authentication.consent.model.request; import io.getlime.security.powerauth.lib.dataadapter.model.entity.ConsentOption; +import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthInstrument; import io.getlime.security.powerauth.lib.webflow.authentication.base.AuthStepRequest; +import java.util.Collections; import java.util.List; /** @@ -39,4 +41,9 @@ public ConsentAuthRequest(List options) { public List getOptions() { return options; } + + @Override + public List getAuthInstruments() { + return Collections.emptyList(); + } } diff --git a/powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/controller/FormLoginController.java b/powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/controller/FormLoginController.java index e7bf5f021..8955c04d8 100644 --- a/powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/controller/FormLoginController.java +++ b/powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/controller/FormLoginController.java @@ -146,7 +146,7 @@ protected AuthenticationResult authenticate(UsernamePasswordAuthenticationReques } else { try { if ("login.authenticationFailed".equals(authResponse.getErrorMessage())) { - UpdateOperationResponse response = failAuthorization(operation.getOperationId(), null, null); + UpdateOperationResponse response = failAuthorization(operation.getOperationId(), null, request.getAuthInstruments(), null); if (response.getResult() == AuthResult.FAILED) { // FAILED result instead of CONTINUE means the authentication method is failed throw new MaxAttemptsExceededException("Maximum number of authentication attempts exceeded"); diff --git a/powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/model/request/UsernamePasswordAuthenticationRequest.java b/powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/model/request/UsernamePasswordAuthenticationRequest.java index 15a99889f..f73f3be90 100644 --- a/powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/model/request/UsernamePasswordAuthenticationRequest.java +++ b/powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/model/request/UsernamePasswordAuthenticationRequest.java @@ -15,8 +15,12 @@ */ package io.getlime.security.powerauth.lib.webflow.authentication.method.form.model.request; +import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthInstrument; import io.getlime.security.powerauth.lib.webflow.authentication.base.AuthStepRequest; +import java.util.Collections; +import java.util.List; + /** * Model for a username / password authentication request from client. * @@ -79,4 +83,9 @@ public String getOrganizationId() { public void setOrganizationId(String organizationId) { this.organizationId = organizationId; } + + @Override + public List getAuthInstruments() { + return Collections.singletonList(AuthInstrument.PASSWORD); + } } diff --git a/powerauth-webflow-authentication-init/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/init/model/request/InitOperationRequest.java b/powerauth-webflow-authentication-init/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/init/model/request/InitOperationRequest.java index f13317f7f..5e3876f58 100644 --- a/powerauth-webflow-authentication-init/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/init/model/request/InitOperationRequest.java +++ b/powerauth-webflow-authentication-init/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/init/model/request/InitOperationRequest.java @@ -15,8 +15,12 @@ */ package io.getlime.security.powerauth.lib.webflow.authentication.method.init.model.request; +import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthInstrument; import io.getlime.security.powerauth.lib.webflow.authentication.base.AuthStepRequest; +import java.util.Collections; +import java.util.List; + /** * Models a registration request received from the client. * @@ -24,4 +28,8 @@ */ public class InitOperationRequest extends AuthStepRequest { + @Override + public List getAuthInstruments() { + return Collections.emptyList(); + } } diff --git a/powerauth-webflow-authentication-init/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/init/model/request/VerifyTimeoutRequest.java b/powerauth-webflow-authentication-init/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/init/model/request/VerifyTimeoutRequest.java index 756061df0..32f3f6ae4 100644 --- a/powerauth-webflow-authentication-init/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/init/model/request/VerifyTimeoutRequest.java +++ b/powerauth-webflow-authentication-init/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/init/model/request/VerifyTimeoutRequest.java @@ -15,12 +15,21 @@ */ package io.getlime.security.powerauth.lib.webflow.authentication.method.init.model.request; +import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthInstrument; import io.getlime.security.powerauth.lib.webflow.authentication.base.AuthStepRequest; +import java.util.Collections; +import java.util.List; + /** * Request for operation timeout verification. * * @author Roman Strobl, roman.strobl@wultra.com */ public class VerifyTimeoutRequest extends AuthStepRequest { + + @Override + public List getAuthInstruments() { + return Collections.emptyList(); + } } diff --git a/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/model/request/LoginScaInitRequest.java b/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/model/request/LoginScaInitRequest.java index e7e7f3508..f23d683dc 100644 --- a/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/model/request/LoginScaInitRequest.java +++ b/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/model/request/LoginScaInitRequest.java @@ -15,8 +15,12 @@ */ package io.getlime.security.powerauth.lib.webflow.authentication.method.loginsca.model.request; +import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthInstrument; import io.getlime.security.powerauth.lib.webflow.authentication.base.AuthStepRequest; +import java.util.Collections; +import java.util.List; + /** * Model for an init request for SCA login. * @@ -60,4 +64,9 @@ public String getOrganizationId() { public void setOrganizationId(String organizationId) { this.organizationId = organizationId; } + + @Override + public List getAuthInstruments() { + return Collections.emptyList(); + } } diff --git a/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/controller/MobileAppApiController.java b/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/controller/MobileAppApiController.java index e4b12c6f5..1a3e853ec 100644 --- a/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/controller/MobileAppApiController.java +++ b/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/controller/MobileAppApiController.java @@ -23,6 +23,7 @@ import io.getlime.security.powerauth.lib.mtoken.model.request.OperationApproveRequest; import io.getlime.security.powerauth.lib.mtoken.model.request.OperationRejectRequest; import io.getlime.security.powerauth.lib.mtoken.model.response.OperationListResponse; +import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthInstrument; import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthMethod; import io.getlime.security.powerauth.lib.nextstep.model.enumeration.OperationCancelReason; import io.getlime.security.powerauth.lib.nextstep.model.exception.NextStepServiceException; @@ -54,9 +55,7 @@ import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; /** * This controller presents endpoints that are consumed by the native mobile app, @@ -244,7 +243,8 @@ private Map getOperationConfigs(List authInstruments = Collections.singletonList(AuthInstrument.POWERAUTH_TOKEN); + final UpdateOperationResponse updateOperationResponse = authorize(operationId, userId, operation.getOrganizationId(), authInstruments, null); webSocketMessageService.notifyAuthorizationComplete(operationId, updateOperationResponse.getResult()); return new Response(); } else { diff --git a/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/controller/MobileTokenOfflineController.java b/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/controller/MobileTokenOfflineController.java index 09270c7d4..d89e01b13 100644 --- a/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/controller/MobileTokenOfflineController.java +++ b/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/controller/MobileTokenOfflineController.java @@ -153,7 +153,7 @@ protected AuthenticationResult authenticate(@RequestBody QrCodeAuthenticationReq // otherwise fail authorization Integer remainingAttemptsNS; try { - UpdateOperationResponse response = failAuthorization(operation.getOperationId(), getOperation().getUserId(), null); + UpdateOperationResponse response = failAuthorization(operation.getOperationId(), getOperation().getUserId(), request.getAuthInstruments(), null); if (response.getResult() == AuthResult.FAILED) { // FAILED result instead of CONTINUE means the authentication method is failed cleanHttpSession(); diff --git a/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/model/request/MobileTokenAuthenticationRequest.java b/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/model/request/MobileTokenAuthenticationRequest.java index c5f639884..6da35b532 100644 --- a/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/model/request/MobileTokenAuthenticationRequest.java +++ b/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/model/request/MobileTokenAuthenticationRequest.java @@ -1,11 +1,20 @@ package io.getlime.security.powerauth.lib.webflow.authentication.mtoken.model.request; +import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthInstrument; import io.getlime.security.powerauth.lib.webflow.authentication.base.AuthStepRequest; +import java.util.Collections; +import java.util.List; + /** * Request for online mobile token authentication. * * @author Petr Dvorak, petr@wultra.com */ public class MobileTokenAuthenticationRequest extends AuthStepRequest { + + @Override + public List getAuthInstruments() { + return Collections.singletonList(AuthInstrument.POWERAUTH_TOKEN); + } } diff --git a/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/model/request/QrCodeAuthenticationRequest.java b/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/model/request/QrCodeAuthenticationRequest.java index cafa46371..44b8da949 100644 --- a/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/model/request/QrCodeAuthenticationRequest.java +++ b/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/model/request/QrCodeAuthenticationRequest.java @@ -1,7 +1,11 @@ package io.getlime.security.powerauth.lib.webflow.authentication.mtoken.model.request; +import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthInstrument; import io.getlime.security.powerauth.lib.webflow.authentication.base.AuthStepRequest; +import java.util.Collections; +import java.util.List; + /** * Request for QR code based authentication in offline mode for mobile token. * @@ -61,4 +65,8 @@ public void setNonce(String nonce) { this.nonce = nonce; } + @Override + public List getAuthInstruments() { + return Collections.singletonList(AuthInstrument.POWERAUTH_TOKEN); + } } diff --git a/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/model/request/QrCodeInitRequest.java b/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/model/request/QrCodeInitRequest.java index 42de63356..571cf06e9 100644 --- a/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/model/request/QrCodeInitRequest.java +++ b/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/model/request/QrCodeInitRequest.java @@ -1,13 +1,11 @@ package io.getlime.security.powerauth.lib.webflow.authentication.mtoken.model.request; -import io.getlime.security.powerauth.lib.webflow.authentication.base.AuthStepRequest; - /** * Request for QR code initialization in offline mode for QR token. * * @author Roman Strobl, roman.strobl@wultra.com */ -public class QrCodeInitRequest extends AuthStepRequest { +public class QrCodeInitRequest { private String activationId; diff --git a/powerauth-webflow-authentication-operation-review/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/operation/model/request/OperationDetailRequest.java b/powerauth-webflow-authentication-operation-review/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/operation/model/request/OperationDetailRequest.java index f804cb0f1..363cbb49a 100644 --- a/powerauth-webflow-authentication-operation-review/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/operation/model/request/OperationDetailRequest.java +++ b/powerauth-webflow-authentication-operation-review/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/operation/model/request/OperationDetailRequest.java @@ -16,12 +16,11 @@ package io.getlime.security.powerauth.lib.webflow.authentication.method.operation.model.request; -import io.getlime.security.powerauth.lib.webflow.authentication.base.AuthStepRequest; - /** * Request for operation detail. * * @author Roman Strobl, roman.strobl@wultra.com */ -public class OperationDetailRequest extends AuthStepRequest { +public class OperationDetailRequest { + } diff --git a/powerauth-webflow-authentication-operation-review/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/operation/model/request/OperationReviewRequest.java b/powerauth-webflow-authentication-operation-review/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/operation/model/request/OperationReviewRequest.java index 1cd149968..ee6ddc124 100644 --- a/powerauth-webflow-authentication-operation-review/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/operation/model/request/OperationReviewRequest.java +++ b/powerauth-webflow-authentication-operation-review/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/operation/model/request/OperationReviewRequest.java @@ -16,12 +16,21 @@ package io.getlime.security.powerauth.lib.webflow.authentication.method.operation.model.request; +import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthInstrument; import io.getlime.security.powerauth.lib.webflow.authentication.base.AuthStepRequest; +import java.util.Collections; +import java.util.List; + /** * Request for operation review. * * @author Petr Dvorak, petr@wultra.com */ public class OperationReviewRequest extends AuthStepRequest { + + @Override + public List getAuthInstruments() { + return Collections.emptyList(); + } } diff --git a/powerauth-webflow-authentication-operation-review/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/operation/model/request/UpdateOperationChosenAuthMethodRequest.java b/powerauth-webflow-authentication-operation-review/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/operation/model/request/UpdateOperationChosenAuthMethodRequest.java index 1220818e2..ad94e8619 100644 --- a/powerauth-webflow-authentication-operation-review/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/operation/model/request/UpdateOperationChosenAuthMethodRequest.java +++ b/powerauth-webflow-authentication-operation-review/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/operation/model/request/UpdateOperationChosenAuthMethodRequest.java @@ -17,13 +17,12 @@ package io.getlime.security.powerauth.lib.webflow.authentication.method.operation.model.request; import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthMethod; -import io.getlime.security.powerauth.lib.webflow.authentication.base.AuthStepRequest; /** * Request to set chosen authentication method. * @author Roman Strobl, roman.strobl@wultra.com */ -public class UpdateOperationChosenAuthMethodRequest extends AuthStepRequest { +public class UpdateOperationChosenAuthMethodRequest { private AuthMethod chosenAuthMethod; diff --git a/powerauth-webflow-authentication-operation-review/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/operation/model/request/UpdateOperationFormDataRequest.java b/powerauth-webflow-authentication-operation-review/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/operation/model/request/UpdateOperationFormDataRequest.java index 7b163ac5a..8890aee0d 100644 --- a/powerauth-webflow-authentication-operation-review/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/operation/model/request/UpdateOperationFormDataRequest.java +++ b/powerauth-webflow-authentication-operation-review/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/operation/model/request/UpdateOperationFormDataRequest.java @@ -17,13 +17,12 @@ package io.getlime.security.powerauth.lib.webflow.authentication.method.operation.model.request; import io.getlime.security.powerauth.lib.nextstep.model.entity.OperationFormData; -import io.getlime.security.powerauth.lib.webflow.authentication.base.AuthStepRequest; /** * Request to update operation form data. * @author Roman Strobl, roman.strobl@wultra.com */ -public class UpdateOperationFormDataRequest extends AuthStepRequest { +public class UpdateOperationFormDataRequest { private OperationFormData formData; diff --git a/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java b/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java index c375d5dfa..6a4890548 100644 --- a/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java +++ b/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java @@ -25,10 +25,8 @@ import io.getlime.security.powerauth.lib.dataadapter.model.response.*; import io.getlime.security.powerauth.lib.nextstep.model.entity.ApplicationContext; import io.getlime.security.powerauth.lib.nextstep.model.entity.AuthStep; -import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthMethod; -import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthResult; -import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthStepResult; -import io.getlime.security.powerauth.lib.nextstep.model.enumeration.OperationCancelReason; +import io.getlime.security.powerauth.lib.nextstep.model.enumeration.*; +import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthInstrument; import io.getlime.security.powerauth.lib.nextstep.model.exception.NextStepServiceException; import io.getlime.security.powerauth.lib.nextstep.model.response.GetOperationDetailResponse; import io.getlime.security.powerauth.lib.nextstep.model.response.UpdateOperationResponse; @@ -41,6 +39,7 @@ import io.getlime.security.powerauth.lib.webflow.authentication.exception.MaxAttemptsExceededException; import io.getlime.security.powerauth.lib.webflow.authentication.model.AuthenticationResult; import io.getlime.security.powerauth.lib.webflow.authentication.model.HttpSessionAttributeNames; +import io.getlime.security.powerauth.lib.webflow.authentication.model.converter.AuthInstrumentConverter; import io.getlime.security.powerauth.lib.webflow.authentication.model.converter.FormDataConverter; import io.getlime.security.powerauth.lib.webflow.authentication.service.AfsIntegrationService; import io.getlime.security.powerauth.lib.webflow.authentication.sms.model.request.SmsAuthorizationRequest; @@ -59,6 +58,7 @@ import javax.servlet.http.HttpSession; import java.util.ArrayList; +import java.util.Collections; import java.util.List; /** @@ -77,6 +77,8 @@ public class SmsAuthorizationController extends AuthMethodController objectResponse = dataAdapterClient.verifyAuthorizationSms(messageId, request.getAuthCode(), userId, organizationId, operationContext); VerifySmsAuthorizationResponse smsResponse = objectResponse.getResponseObject(); smsAuthorizationResult = smsResponse.getSmsAuthorizationResult(); + request.setAuthInstruments(Collections.singletonList(AuthInstrument.SMS_KEY)); if (smsAuthorizationResult == SmsAuthorizationResult.VERIFIED_SUCCEEDED) { cleanHttpSession(); logger.info("Step authentication succeeded, operation ID: {}, authentication method: {}", operation.getOperationId(), authMethod.toString()); @@ -146,6 +149,7 @@ protected AuthenticationResult authenticate(SmsAuthorizationRequest request) thr if (!authStepOptions.isSmsOtpRequired() && !authStepOptions.isPasswordRequired()) { // No authentication is required, approve step cleanHttpSession(); + request.setAuthInstruments(Collections.emptyList()); logger.info("Step authentication succeeded (NO_FA), operation ID: {}, authentication method: {}", operation.getOperationId(), authMethod.toString()); return new AuthenticationResult(operation.getUserId(), operation.getOrganizationId()); } else if (!authStepOptions.isPasswordRequired()) { @@ -153,6 +157,7 @@ protected AuthenticationResult authenticate(SmsAuthorizationRequest request) thr ObjectResponse objectResponse = dataAdapterClient.verifyAuthorizationSms(messageId, authCode, userId, organizationId, operationContext); VerifySmsAuthorizationResponse smsResponse = objectResponse.getResponseObject(); smsAuthorizationResult = smsResponse.getSmsAuthorizationResult(); + request.setAuthInstruments(Collections.singletonList(AuthInstrument.SMS_KEY)); if (smsAuthorizationResult == SmsAuthorizationResult.VERIFIED_SUCCEEDED) { cleanHttpSession(); logger.info("Step authentication succeeded (1FA), operation ID: {}, authentication method: {}", operation.getOperationId(), authMethod.toString()); @@ -166,6 +171,12 @@ protected AuthenticationResult authenticate(SmsAuthorizationRequest request) thr } // Otherwise 2FA authentication is performed } + + List authInstruments = new ArrayList<>(); + authInstruments.add(AuthInstrument.SMS_KEY); + authInstruments.add(AuthInstrument.PASSWORD); + request.setAuthInstruments(authInstruments); + PasswordProtectionType passwordProtectionType = configuration.getPasswordProtection(); String cipherTransformation = configuration.getCipherTransformation(); io.getlime.security.powerauth.lib.webflow.authentication.encryption.PasswordProtection passwordProtection; @@ -208,7 +219,7 @@ protected AuthenticationResult authenticate(SmsAuthorizationRequest request) thr } try { - UpdateOperationResponse response = failAuthorization(operation.getOperationId(), operation.getUserId(), null); + UpdateOperationResponse response = failAuthorization(operation.getOperationId(), operation.getUserId(), request.getAuthInstruments(), null); if (response.getResult() == AuthResult.FAILED) { cleanHttpSession(); // FAILED result instead of CONTINUE means the authentication method is failed @@ -489,7 +500,6 @@ private void cleanHttpSession() { } // Choose current AFS action final AfsAction afsAction; - final List authInstruments = new ArrayList<>(); if (configuration.isAfsEnabled()) { if (authMethod == AuthMethod.LOGIN_SCA || authMethod == AuthMethod.APPROVAL_SCA) { if (authMethod == AuthMethod.LOGIN_SCA) { @@ -497,12 +507,6 @@ private void cleanHttpSession() { } else { afsAction = AfsAction.APPROVAL_AUTH; } - if (request.getPassword() != null) { - authInstruments.add(AuthInstrument.PASSWORD); - } - if (request.getAuthCode() != null) { - authInstruments.add(AuthInstrument.SMS_KEY); - } } else { afsAction = null; } @@ -513,6 +517,8 @@ private void cleanHttpSession() { try { return buildAuthorizationResponse(request, new AuthResponseProvider() { + final List authInstruments = authInstrumentConverter.fromAuthInstruments(request.getAuthInstruments()); + @Override public SmsAuthorizationResponse doneAuthentication(String userId) { if (afsAction != null) { @@ -555,6 +561,7 @@ public SmsAuthorizationResponse continueAuthentication(String operationId, Strin } catch (AuthStepException e) { logger.warn("Error occurred while verifying authorization code from SMS message: {}", e.getMessage()); if (afsAction != null) { + final List authInstruments = authInstrumentConverter.fromAuthInstruments(request.getAuthInstruments()); afsIntegrationService.executeAuthAction(operation.getOperationId(), afsAction, username, authInstruments, AuthStepResult.AUTH_FAILED); } final SmsAuthorizationResponse response = new SmsAuthorizationResponse(); diff --git a/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/model/request/SmsAuthorizationRequest.java b/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/model/request/SmsAuthorizationRequest.java index 7317364fc..a579b223e 100644 --- a/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/model/request/SmsAuthorizationRequest.java +++ b/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/model/request/SmsAuthorizationRequest.java @@ -15,8 +15,12 @@ */ package io.getlime.security.powerauth.lib.webflow.authentication.sms.model.request; +import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthInstrument; import io.getlime.security.powerauth.lib.webflow.authentication.base.AuthStepRequest; +import java.util.ArrayList; +import java.util.List; + /** * Request for SMS authorization. * @@ -26,6 +30,7 @@ public class SmsAuthorizationRequest extends AuthStepRequest { private String authCode; private String password; + private List authInstruments = new ArrayList<>(); /** * Get authorization code from SMS message. @@ -58,4 +63,17 @@ public String getPassword() { public void setPassword(String password) { this.password = password; } + + @Override + public List getAuthInstruments() { + return authInstruments; + } + + /** + * Set authorization instruments used in this request. + * @param authInstruments Authorization instruments used in this request. + */ + public void setAuthInstruments(List authInstruments) { + this.authInstruments = authInstruments; + } } diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/base/AuthStepRequest.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/base/AuthStepRequest.java index 192735e95..0d4e179fb 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/base/AuthStepRequest.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/base/AuthStepRequest.java @@ -16,10 +16,20 @@ package io.getlime.security.powerauth.lib.webflow.authentication.base; +import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthInstrument; + +import java.util.List; + /** * Base class for any authentication step requests. * * @author Petr Dvorak, petr@wultra.com */ -public class AuthStepRequest { +public abstract class AuthStepRequest { + + /** + * Get authentication / authorization instruments used in this step. + * @return Authentication / authorization instuments used in this step. + */ + public abstract List getAuthInstruments(); } diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/controller/AuthMethodController.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/controller/AuthMethodController.java index 9815087c1..6bc4b3164 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/controller/AuthMethodController.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/controller/AuthMethodController.java @@ -25,10 +25,7 @@ import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.OperationTerminationReason; import io.getlime.security.powerauth.lib.nextstep.client.NextStepClient; import io.getlime.security.powerauth.lib.nextstep.model.entity.*; -import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthMethod; -import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthResult; -import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthStepResult; -import io.getlime.security.powerauth.lib.nextstep.model.enumeration.OperationCancelReason; +import io.getlime.security.powerauth.lib.nextstep.model.enumeration.*; import io.getlime.security.powerauth.lib.nextstep.model.exception.NextStepServiceException; import io.getlime.security.powerauth.lib.nextstep.model.response.*; import io.getlime.security.powerauth.lib.webflow.authentication.base.AuthStepRequest; @@ -45,6 +42,7 @@ import org.springframework.stereotype.Component; import javax.servlet.http.HttpServletRequest; +import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -246,18 +244,19 @@ protected AuthenticationResult authenticate(T request) throws E { * @param operationId Operation ID of operation to be authorized. * @param userId User ID of user who should authorize operation. * @param organizationId Organization ID of organization related to the operation. + * @param authInstruments Used authentication / authorization instruments. * @param params Custom parameters. * @return Response with information about operation update result. * @throws NextStepServiceException In case communication fails. * @throws AuthStepException In case authorization fails. */ - protected UpdateOperationResponse authorize(String operationId, String userId, String organizationId, List params) throws NextStepServiceException, AuthStepException { + protected UpdateOperationResponse authorize(String operationId, String userId, String organizationId, List authInstruments, List params) throws NextStepServiceException, AuthStepException { // validate operation before requesting update GetOperationDetailResponse operation = getOperation(operationId); AuthMethod authMethod = getAuthMethodName(operation); logger.info("Step authorization started, operation ID: {}, user ID: {}, authentication method: {}", operationId, userId, authMethod.toString()); ApplicationContext applicationContext = operation.getApplicationContext(); - ObjectResponse response = nextStepClient.updateOperation(operationId, userId, organizationId, authMethod, AuthStepResult.CONFIRMED, null, params, applicationContext); + ObjectResponse response = nextStepClient.updateOperation(operationId, userId, organizationId, authMethod, authInstruments, AuthStepResult.CONFIRMED, null, params, applicationContext); // notify Data Adapter in case operation is in DONE state now if (response.getResponseObject().getResult()==AuthResult.DONE) { try { @@ -280,20 +279,21 @@ protected UpdateOperationResponse authorize(String operationId, String userId, S /** * Fail the operation with provided operation ID with user with given user ID. * - * @param operationId Operation ID of operation to fail. - * @param userId User ID of user who owns the operation. - * @param params Custom parameters. + * @param operationId Operation ID of operation to fail. + * @param userId User ID of user who owns the operation. + * @param authInstruments Used authentication instruments. + * @param params Custom parameters. * @return Response with information about operation update result. * @throws NextStepServiceException In case communication fails. * @throws AuthStepException In case authorization fails. */ - protected UpdateOperationResponse failAuthorization(String operationId, String userId, List params) throws NextStepServiceException, AuthStepException { + protected UpdateOperationResponse failAuthorization(String operationId, String userId, List authInstruments, List params) throws NextStepServiceException, AuthStepException { // validate operation before requesting update GetOperationDetailResponse operation = getOperation(operationId); AuthMethod authMethod = getAuthMethodName(operation); logger.info("Fail step started, operation ID: {}, user ID: {}, authentication method: {}", operationId, userId, authMethod.toString()); ApplicationContext applicationContext = operation.getApplicationContext(); - ObjectResponse response = nextStepClient.updateOperation(operationId, userId, operation.getOrganizationId(), authMethod, AuthStepResult.AUTH_FAILED, null, params, applicationContext); + ObjectResponse response = nextStepClient.updateOperation(operationId, userId, operation.getOrganizationId(), authMethod, authInstruments, AuthStepResult.AUTH_FAILED, null, params, applicationContext); // notify Data Adapter in case operation is in FAILED state now if (response.getResponseObject().getResult()==AuthResult.FAILED) { try { @@ -328,7 +328,7 @@ protected UpdateOperationResponse cancelAuthorization(String operationId, String AuthMethod authMethod = getAuthMethodName(operation); logger.info("Step cancel started, operation ID: {}, authentication method: {}", operationId, authMethod.toString()); ApplicationContext applicationContext = operation.getApplicationContext(); - ObjectResponse response = nextStepClient.updateOperation(operationId, userId, operation.getOrganizationId(), authMethod, AuthStepResult.CANCELED, cancelReason.toString(), params, applicationContext); + ObjectResponse response = nextStepClient.updateOperation(operationId, userId, operation.getOrganizationId(), authMethod, Collections.emptyList(), AuthStepResult.CANCELED, cancelReason.toString(), params, applicationContext); // notify Data Adapter in case operation is in FAILED state now if (response.getResponseObject().getResult() == AuthResult.FAILED) { try { @@ -450,7 +450,7 @@ private void cancelOperationsInHttpSession(String httpSessionId) { final ObjectResponse operation = nextStepClient.getOperationDetail(operationToCancel.getOperationId()); final GetOperationDetailResponse operationDetail = operation.getResponseObject(); final ApplicationContext applicationContext = operationDetail.getApplicationContext(); - nextStepClient.updateOperation(operationDetail.getOperationId(), operationDetail.getUserId(), operationDetail.getOrganizationId(), getAuthMethodName(), AuthStepResult.CANCELED, OperationCancelReason.INTERRUPTED_OPERATION.toString(), null, applicationContext); + nextStepClient.updateOperation(operationDetail.getOperationId(), operationDetail.getUserId(), operationDetail.getOrganizationId(), getAuthMethodName(), Collections.emptyList(), AuthStepResult.CANCELED, OperationCancelReason.INTERRUPTED_OPERATION.toString(), null, applicationContext); // notify Data Adapter about cancellation FormData formData = new FormDataConverter().fromOperationFormData(operation.getResponseObject().getFormData()); OperationContext operationContext = new OperationContext(operationDetail.getOperationId(), operationDetail.getOperationName(), operationDetail.getOperationData(), formData, applicationContext); @@ -482,7 +482,7 @@ protected R buildAuthorizationResponse(T request, AuthResponseProvider provider) GetOperationDetailResponse operation = getOperation(); // user was not authenticated - fail authorization authenticationManagementService.clearContext(); - responseObject = failAuthorization(operation.getOperationId(), null, null); + responseObject = failAuthorization(operation.getOperationId(), null, request.getAuthInstruments(), null); } else { userId = authResult.getUserId(); organizationId = authResult.getOrganizationId(); @@ -490,7 +490,7 @@ protected R buildAuthorizationResponse(T request, AuthResponseProvider provider) String operationId = authenticationManagementService.updateAuthenticationWithUserDetails(userId, authResult.getOrganizationId()); // response could not be derived - call authorize() method to update current operation - responseObject = authorize(operationId, userId, organizationId, null); + responseObject = authorize(operationId, userId, organizationId, request.getAuthInstruments(), null); } // TODO: Allow passing custom parameters switch (responseObject.getResult()) { diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/listener/WebSocketDisconnectListener.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/listener/WebSocketDisconnectListener.java index a843213c3..d959293fb 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/listener/WebSocketDisconnectListener.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/listener/WebSocketDisconnectListener.java @@ -41,6 +41,7 @@ import org.springframework.stereotype.Component; import org.springframework.web.socket.messaging.SessionDisconnectEvent; +import java.util.Collections; import java.util.List; /** @@ -103,7 +104,7 @@ public void onApplicationEvent(SessionDisconnectEvent sessionDisconnectEvent) { // Authentication method is not overridden, use last known authentication method authMethod = operationHistory.get(operationHistory.size() - 1).getAuthMethod(); } - nextStepClient.updateOperation(operationDetail.getOperationId(), operationDetail.getUserId(), operationDetail.getOrganizationId(), authMethod, AuthStepResult.CANCELED, OperationCancelReason.INTERRUPTED_OPERATION.toString(), null, operationDetail.getApplicationContext()); + nextStepClient.updateOperation(operationDetail.getOperationId(), operationDetail.getUserId(), operationDetail.getOrganizationId(), authMethod, Collections.emptyList(), AuthStepResult.CANCELED, OperationCancelReason.INTERRUPTED_OPERATION.toString(), null, operationDetail.getApplicationContext()); // Notify Data Adapter about cancellation FormData formData = new FormDataConverter().fromOperationFormData(operationDetail.getFormData()); OperationContext operationContext = new OperationContext(operationDetail.getOperationId(), operationDetail.getOperationName(), operationDetail.getOperationData(), formData, operationDetail.getApplicationContext()); diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/model/converter/AuthInstrumentConverter.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/model/converter/AuthInstrumentConverter.java new file mode 100644 index 000000000..657dac87f --- /dev/null +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/model/converter/AuthInstrumentConverter.java @@ -0,0 +1,51 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.getlime.security.powerauth.lib.webflow.authentication.model.converter; + +import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.AfsAuthInstrument; +import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthInstrument; + +import java.util.ArrayList; +import java.util.List; + +/** + * Converter for authentication / authorization instruments. + * + * @author Roman Strobl, roman.strobl@wultra.com + */ +public class AuthInstrumentConverter { + + public List fromAuthInstruments(List authInstruments) { + List authInstrumentsAfs = new ArrayList<>(); + for (AuthInstrument instrument: authInstruments) { + switch (instrument) { + case PASSWORD: + authInstrumentsAfs.add(AfsAuthInstrument.PASSWORD); + break; + case SMS_KEY: + authInstrumentsAfs.add(AfsAuthInstrument.SMS_KEY); + break; + case POWERAUTH_TOKEN: + authInstrumentsAfs.add(AfsAuthInstrument.POWERAUTH_TOKEN); + break; + case HW_TOKEN: + authInstrumentsAfs.add(AfsAuthInstrument.HW_TOKEN); + break; + } + } + return authInstrumentsAfs; + } +} diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AfsIntegrationService.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AfsIntegrationService.java index 5e3a9349d..c5ae98351 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AfsIntegrationService.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AfsIntegrationService.java @@ -24,7 +24,7 @@ import io.getlime.security.powerauth.lib.dataadapter.model.entity.OperationContext; import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.AfsAction; import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.AfsType; -import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.AuthInstrument; +import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.AfsAuthInstrument; import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.OperationTerminationReason; import io.getlime.security.powerauth.lib.dataadapter.model.request.AfsRequestParameters; import io.getlime.security.powerauth.lib.dataadapter.model.response.AfsResponse; @@ -108,7 +108,7 @@ public AfsResponse executeInitAction(String operationId, String username, AfsAct * @param authInstruments Authentication instruments used in this step. * @param authStepResult Authentication step result. */ - public void executeAuthAction(String operationId, AfsAction afsAction, String username, List authInstruments, AuthStepResult authStepResult) { + public void executeAuthAction(String operationId, AfsAction afsAction, String username, List authInstruments, AuthStepResult authStepResult) { executeAfsAction(operationId, afsAction, authInstruments, authStepResult, username, null); } @@ -133,7 +133,7 @@ public void executeLogoutAction(String operationId, OperationTerminationReason o * @param operationTerminationReason Reason why operation was terminated. * @return Response from anti-fraud system. */ - private AfsResponse executeAfsAction(String operationId, AfsAction afsAction, List authInstruments, AuthStepResult authStepResult, String username, OperationTerminationReason operationTerminationReason) { + private AfsResponse executeAfsAction(String operationId, AfsAction afsAction, List authInstruments, AuthStepResult authStepResult, String username, OperationTerminationReason operationTerminationReason) { if (configuration.isAfsEnabled()) { logger.debug("AFS integration is enabled"); try { diff --git a/powerauth-webflow/src/main/resources/application.properties b/powerauth-webflow/src/main/resources/application.properties index 2a0e592d8..b29a2f8d8 100644 --- a/powerauth-webflow/src/main/resources/application.properties +++ b/powerauth-webflow/src/main/resources/application.properties @@ -71,7 +71,7 @@ powerauth.webflow.sms.resend.delayMs=60000 powerauth.webflow.timeout.warning.delayMs=60000 # Anti-fraud system configuration -powerauth.webflow.afs.enabled=false +powerauth.webflow.afs.enabled=true powerauth.webflow.afs.type=THREAT_MARK powerauth.webflow.afs.detectIpAddress=false powerauth.webflow.afs.forceIpv4=true From 0ad6923b2057b1517d9f65b3e6f25d7409fd4cdc Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Mon, 14 Oct 2019 17:23:09 +0200 Subject: [PATCH 095/197] Revert unwanted change --- powerauth-webflow/src/main/resources/application.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/powerauth-webflow/src/main/resources/application.properties b/powerauth-webflow/src/main/resources/application.properties index b29a2f8d8..2a0e592d8 100644 --- a/powerauth-webflow/src/main/resources/application.properties +++ b/powerauth-webflow/src/main/resources/application.properties @@ -71,7 +71,7 @@ powerauth.webflow.sms.resend.delayMs=60000 powerauth.webflow.timeout.warning.delayMs=60000 # Anti-fraud system configuration -powerauth.webflow.afs.enabled=true +powerauth.webflow.afs.enabled=false powerauth.webflow.afs.type=THREAT_MARK powerauth.webflow.afs.detectIpAddress=false powerauth.webflow.afs.forceIpv4=true From 1cce5f2873e1006e1dc5984ab497524983c3843c Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Mon, 14 Oct 2019 17:35:32 +0200 Subject: [PATCH 096/197] Simplify code --- .../sms/controller/SmsAuthorizationController.java | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java b/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java index 6a4890548..ab73565e2 100644 --- a/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java +++ b/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java @@ -501,12 +501,10 @@ private void cleanHttpSession() { // Choose current AFS action final AfsAction afsAction; if (configuration.isAfsEnabled()) { - if (authMethod == AuthMethod.LOGIN_SCA || authMethod == AuthMethod.APPROVAL_SCA) { - if (authMethod == AuthMethod.LOGIN_SCA) { - afsAction = AfsAction.LOGIN_AUTH; - } else { - afsAction = AfsAction.APPROVAL_AUTH; - } + if (authMethod == AuthMethod.LOGIN_SCA) { + afsAction = AfsAction.LOGIN_AUTH; + } else if (authMethod == AuthMethod.APPROVAL_SCA) { + afsAction = AfsAction.APPROVAL_AUTH; } else { afsAction = null; } From f5bc9c1a09762896d81a814dc8efd92de2c9256e Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Tue, 15 Oct 2019 21:02:20 +0200 Subject: [PATCH 097/197] Minor fixes for AFS support --- .../model/request/AfsRequestParameters.java | 16 ++++++++++++++++ .../controller/SmsAuthorizationController.java | 12 ++++++++---- .../controller/AuthMethodController.java | 2 -- 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/AfsRequestParameters.java b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/AfsRequestParameters.java index ea6b479da..edc187ead 100644 --- a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/AfsRequestParameters.java +++ b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/AfsRequestParameters.java @@ -157,6 +157,22 @@ public void setStepIndex(int stepIndex) { this.stepIndex = stepIndex; } + /** + * Get username filled in by the user. + * @return Username filled in by the user. + */ + public String getUsername() { + return username; + } + + /** + * Set username filled in by the user. + * @param username Username filled in by the user. + */ + public void setUsername(String username) { + this.username = username; + } + /** * Get authentication authentication instruments used during this step. * @return Authentication authentication instruments used during this step. diff --git a/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java b/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java index 5a7e0bbfb..e70007642 100644 --- a/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java +++ b/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java @@ -534,9 +534,6 @@ public SmsAuthorizationResponse doneAuthentication(String userId) { @Override public SmsAuthorizationResponse failedAuthentication(String userId, String failedReason) { - if (afsAction != null) { - afsIntegrationService.executeAuthAction(operation.getOperationId(), afsAction, username, authInstruments, AuthStepResult.AUTH_FAILED); - } clearCurrentBrowserSession(); final SmsAuthorizationResponse response = new SmsAuthorizationResponse(); response.setResult(AuthStepResult.AUTH_FAILED); @@ -562,7 +559,14 @@ public SmsAuthorizationResponse continueAuthentication(String operationId, Strin logger.warn("Error occurred while verifying authorization code from SMS message: {}", e.getMessage()); if (afsAction != null) { final List authInstruments = authInstrumentConverter.fromAuthInstruments(request.getAuthInstruments()); - afsIntegrationService.executeAuthAction(operation.getOperationId(), afsAction, username, authInstruments, AuthStepResult.AUTH_FAILED); + if (e instanceof MaxAttemptsExceededException) { + // notify AFS about failed authentication method + afsIntegrationService.executeAuthAction(operation.getOperationId(), afsAction, username, authInstruments, AuthStepResult.AUTH_METHOD_FAILED); + // notify AFS about logout + afsIntegrationService.executeLogoutAction(operation.getOperationId(), OperationTerminationReason.FAILED); + } else { + afsIntegrationService.executeAuthAction(operation.getOperationId(), afsAction, username, authInstruments, AuthStepResult.AUTH_FAILED); + } } final SmsAuthorizationResponse response = new SmsAuthorizationResponse(); response.setResult(AuthStepResult.AUTH_FAILED); diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/controller/AuthMethodController.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/controller/AuthMethodController.java index 8fabdc451..f3515c892 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/controller/AuthMethodController.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/controller/AuthMethodController.java @@ -300,8 +300,6 @@ protected UpdateOperationResponse failAuthorization(String operationId, String u FormData formData = new FormDataConverter().fromOperationFormData(operation.getFormData()); OperationContext operationContext = new OperationContext(operation.getOperationId(), operation.getOperationName(), operation.getOperationData(), formData, applicationContext); dataAdapterClient.operationChangedNotification(OperationChange.FAILED, userId, operation.getOrganizationId(), operationContext); - // notify AFS about logout - afsIntegrationService.executeLogoutAction(operationId, OperationTerminationReason.FAILED); } catch (DataAdapterClientErrorException ex) { logger.error("Error while notifying Data Adapter", ex); } From ac05a1733f4fb23834aa1647fcd50cdccd58806e Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Tue, 15 Oct 2019 21:29:08 +0200 Subject: [PATCH 098/197] Improve enumerations for authentication results --- .../model/enumeration/SmsAuthorizationResult.java | 12 ++++++------ .../model/enumeration/UserAuthenticationResult.java | 12 ++++++------ .../method/form/controller/FormLoginController.java | 2 +- .../sms/controller/SmsAuthorizationController.java | 6 +++--- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/enumeration/SmsAuthorizationResult.java b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/enumeration/SmsAuthorizationResult.java index 01e51caf2..b8f286687 100644 --- a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/enumeration/SmsAuthorizationResult.java +++ b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/enumeration/SmsAuthorizationResult.java @@ -19,15 +19,15 @@ * Result of SMS authorization code verification. * *
    - *
  • NOT_VERIFIED - SMS authorization code verification has not been performed at all.
  • - *
  • VERIFIED_SUCCEEDED - SMS authorization code has been verified and verification succeeded.
  • - *
  • VERIFIED_FAILED - SMS authorization code has been verified and verification failed.
  • + *
  • SUCCEEDED - SMS authorization code has been verified and verification succeeded.
  • + *
  • FAILED - SMS authorization code has been verified and verification failed.
  • + *
  • SKIPPED - SMS authorization code verification has not been performed at all.
  • *
* * @author Roman Strobl, roman.strobl@wultra.com */ public enum SmsAuthorizationResult { - NOT_VERIFIED, - VERIFIED_SUCCEEDED, - VERIFIED_FAILED + SUCCEEDED, + FAILED, + SKIPPED } diff --git a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/enumeration/UserAuthenticationResult.java b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/enumeration/UserAuthenticationResult.java index b74a5dfde..4a8e7a449 100644 --- a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/enumeration/UserAuthenticationResult.java +++ b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/enumeration/UserAuthenticationResult.java @@ -19,15 +19,15 @@ * Result of username and password verification. * *
    - *
  • NOT_VERIFIED - user ID and password verification has not been performed at all.
  • - *
  • VERIFIED_SUCCEEDED - user ID and password have been verified and verification succeeded.
  • - *
  • VERIFIED_FAILED - user ID and password have been verified and verification failed.
  • + *
  • SUCCEEDED - user ID and password have been verified and verification succeeded.
  • + *
  • FAILED - user ID and password have been verified and verification failed.
  • + *
  • SKIPPED - user ID and password verification has not been performed at all.
  • *
* * @author Roman Strobl, roman.strobl@wultra.com */ public enum UserAuthenticationResult { - NOT_VERIFIED, - VERIFIED_SUCCEEDED, - VERIFIED_FAILED + SUCCEEDED, + FAILED, + SKIPPED } diff --git a/powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/controller/FormLoginController.java b/powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/controller/FormLoginController.java index b9ba55d1c..4fdde9539 100644 --- a/powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/controller/FormLoginController.java +++ b/powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/controller/FormLoginController.java @@ -147,7 +147,7 @@ protected AuthenticationResult authenticate(UsernamePasswordAuthenticationReques ObjectResponse objectResponse = dataAdapterClient.authenticateUser(userId, organizationId, protectedPassword, authenticationContext, operationContext); UserAuthenticationResponse authResponse = objectResponse.getResponseObject(); - if (authResponse.getAuthenticationResult() == UserAuthenticationResult.VERIFIED_SUCCEEDED) { + if (authResponse.getAuthenticationResult() == UserAuthenticationResult.SUCCEEDED) { logger.info("Step authentication succeeded, operation ID: {}, user ID: {}, authentication method: {}", operation.getOperationId(), authResponse.getUserDetail().getId(), getAuthMethodName().toString()); return new AuthenticationResult(authResponse.getUserDetail().getId(), authResponse.getUserDetail().getOrganizationId()); } else { diff --git a/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java b/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java index e70007642..37f684601 100644 --- a/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java +++ b/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java @@ -129,7 +129,7 @@ protected AuthenticationResult authenticate(SmsAuthorizationRequest request) thr VerifySmsAuthorizationResponse smsResponse = objectResponse.getResponseObject(); smsAuthorizationResult = smsResponse.getSmsAuthorizationResult(); request.setAuthInstruments(Collections.singletonList(AuthInstrument.SMS_KEY)); - if (smsAuthorizationResult == SmsAuthorizationResult.VERIFIED_SUCCEEDED) { + if (smsAuthorizationResult == SmsAuthorizationResult.SUCCEEDED) { cleanHttpSession(); logger.info("Step authentication succeeded, operation ID: {}, authentication method: {}", operation.getOperationId(), authMethod.toString()); return new AuthenticationResult(operation.getUserId(), operation.getOrganizationId()); @@ -160,7 +160,7 @@ protected AuthenticationResult authenticate(SmsAuthorizationRequest request) thr VerifySmsAuthorizationResponse smsResponse = objectResponse.getResponseObject(); smsAuthorizationResult = smsResponse.getSmsAuthorizationResult(); request.setAuthInstruments(Collections.singletonList(AuthInstrument.SMS_KEY)); - if (smsAuthorizationResult == SmsAuthorizationResult.VERIFIED_SUCCEEDED) { + if (smsAuthorizationResult == SmsAuthorizationResult.SUCCEEDED) { cleanHttpSession(); logger.info("Step authentication succeeded (1FA), operation ID: {}, authentication method: {}", operation.getOperationId(), authMethod.toString()); return new AuthenticationResult(operation.getUserId(), operation.getOrganizationId()); @@ -205,7 +205,7 @@ protected AuthenticationResult authenticate(SmsAuthorizationRequest request) thr ObjectResponse objectResponse = dataAdapterClient.verifyAuthorizationSmsAndPassword(messageId, authCode, userId, organizationId, protectedPassword, authenticationContext, operationContext); VerifySmsAndPasswordResponse smsAndPasswordResponse = objectResponse.getResponseObject(); smsAuthorizationResult = smsAndPasswordResponse.getSmsAuthorizationResult(); - if (smsAuthorizationResult == SmsAuthorizationResult.VERIFIED_SUCCEEDED && smsAndPasswordResponse.getUserAuthenticationResult() == UserAuthenticationResult.VERIFIED_SUCCEEDED) { + if (smsAuthorizationResult == SmsAuthorizationResult.SUCCEEDED && smsAndPasswordResponse.getUserAuthenticationResult() == UserAuthenticationResult.SUCCEEDED) { cleanHttpSession(); logger.info("Step authentication succeeded (2FA), operation ID: {}, authentication method: {}", operation.getOperationId(), authMethod.toString()); return new AuthenticationResult(operation.getUserId(), operation.getOrganizationId()); From 8456dbbeb9562504f6009d321bb1de10f3836cc4 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Mon, 21 Oct 2019 13:24:14 +0200 Subject: [PATCH 099/197] Upgrade Snyk --- powerauth-webflow/package-lock.json | 955 +++++++++++++++------------- powerauth-webflow/package.json | 2 +- 2 files changed, 523 insertions(+), 434 deletions(-) diff --git a/powerauth-webflow/package-lock.json b/powerauth-webflow/package-lock.json index 05ca76e5a..8310c46b4 100644 --- a/powerauth-webflow/package-lock.json +++ b/powerauth-webflow/package-lock.json @@ -28,9 +28,9 @@ } }, "@snyk/cocoapods-lockfile-parser": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@snyk/cocoapods-lockfile-parser/-/cocoapods-lockfile-parser-2.0.2.tgz", - "integrity": "sha512-DSSlljXGhSECdx7KhK7QlBiGC82fM2dZMzhcWxOsqyUVqzjArRGS9i4CRl/WMK5WDlLgc5bn5Xmpmp/g5Hf9YQ==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@snyk/cocoapods-lockfile-parser/-/cocoapods-lockfile-parser-2.0.4.tgz", + "integrity": "sha512-d57bajPjqCiNXMuyMmt9Zt98zbjABZUFw+91B705flzV6oB7OThgtA40Eoin6iatYoStIx28bC3T6b0mScy/iA==", "requires": { "@snyk/dep-graph": "^1.11.0", "@snyk/ruby-semver": "^2.0.4", @@ -42,9 +42,9 @@ }, "dependencies": { "core-js": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.2.1.tgz", - "integrity": "sha512-Qa5XSVefSVPRxy2XfUC13WbvqkxhkwB3ve+pgCQveNgYzbM/UxZeu1dcOX/xr4UmfUd+muuvsaxilQzCyUurMw==" + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.3.2.tgz", + "integrity": "sha512-S1FfZpeBchkhyoY76YAdFzKS4zz9aOK7EeFaNA2aJlyXyA+sgqz6xdxmLPGXEAf0nF44MVN1kSjrA9Kt3ATDQg==" }, "source-map": { "version": "0.6.1", @@ -118,12 +118,12 @@ } }, "@snyk/snyk-cocoapods-plugin": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@snyk/snyk-cocoapods-plugin/-/snyk-cocoapods-plugin-1.0.2.tgz", - "integrity": "sha512-eb8cawvz2vDLg/DRyzDDgv7+oZhsojNXxF8anX2Iq4ws8GZjd9CrMMMaSU7QehcT4h7jH5ITzbB1HOp+XHm3rw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@snyk/snyk-cocoapods-plugin/-/snyk-cocoapods-plugin-1.0.3.tgz", + "integrity": "sha512-AHAA7z23nPi1eHODsDxeSkl73Ze3yphuqJjMl39ie323EzBDcb9g6uAACrk0Qn2K/K2D8uyxMAf2zDtc+JGQfw==", "requires": { "@snyk/cli-interface": "1.5.0", - "@snyk/cocoapods-lockfile-parser": "2.0.2", + "@snyk/cocoapods-lockfile-parser": "2.0.4", "@snyk/dep-graph": "1.13.0", "source-map-support": "^0.5.7", "tslib": "^1.9.3" @@ -204,9 +204,9 @@ "integrity": "sha512-SGGAhXLHDx+PK4YLNcNGa6goPf9XRWQNAUUbffkwVGGXIxmDKWyGGL4inzq2sPmExu431Ekb9aEMn9BkPqEYFA==" }, "@types/node": { - "version": "12.7.11", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.11.tgz", - "integrity": "sha512-Otxmr2rrZLKRYIybtdG/sgeO+tHY20GxeDjcGmUnmmlCWyEnv2a2x1ZXBo3BTec4OiTXMQCiazB8NMBf0iRlFw==" + "version": "12.11.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.11.1.tgz", + "integrity": "sha512-TJtwsqZ39pqcljJpajeoofYRfeZ7/I/OMUQ5pR4q5wOKf2ocrUvBAZUMhWsOvKx3dVc/aaV5GluBivt0sWqA5A==" }, "@types/restify": { "version": "4.3.6", @@ -261,14 +261,6 @@ } } }, - "agent-base": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", - "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", - "requires": { - "es6-promisify": "^5.0.0" - } - }, "ajv": { "version": "4.11.8", "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", @@ -456,11 +448,6 @@ "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" }, - "ast-types": { - "version": "0.13.2", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.2.tgz", - "integrity": "sha512-uWMHxJxtfj/1oZClOxDEV1sQ1HCDkA4MG8Gr69KKeBjEVH0R84WlejZ0y2DcwyBlpAEMltmVYkVgqfLFb2oyiA==" - }, "async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", @@ -1467,6 +1454,26 @@ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.0.tgz", "integrity": "sha512-EgmjVLMn22z7eGGv3kcnHwSnJXmFHjISTY9E/S5lIcTD3Oxw05QTcBLNkJFzcb3cNueUdF/IN4U+d78V0zO8Hw==" }, + "bl": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-3.0.0.tgz", + "integrity": "sha512-EUAyP5UHU5hxF8BPT0LKW8gjYLhq1DQIcneOX/pL/m2Alo+OYDQAJlHq+yseMP50Os2nHXOSic6Ss3vSQeyf4A==", + "requires": { + "readable-stream": "^3.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", + "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, "blacklist": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/blacklist/-/blacklist-1.1.4.tgz", @@ -1702,11 +1709,6 @@ "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" }, - "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" - }, "cache-base": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", @@ -2057,11 +2059,6 @@ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=" }, - "data-uri-to-buffer": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-2.0.2.tgz", - "integrity": "sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==" - }, "date-now": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", @@ -2090,11 +2087,6 @@ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" - }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -2145,28 +2137,6 @@ } } }, - "degenerator": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-1.0.4.tgz", - "integrity": "sha1-/PSQo37OJmRk2cxDGrmMWBnO0JU=", - "requires": { - "ast-types": "0.x.x", - "escodegen": "1.x.x", - "esprima": "3.x.x" - }, - "dependencies": { - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" - } - } - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" - }, "des.js": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", @@ -2257,9 +2227,9 @@ } }, "dotnet-deps-parser": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/dotnet-deps-parser/-/dotnet-deps-parser-4.5.0.tgz", - "integrity": "sha512-t6rBxcWVZSDNhhWdsbq9ozaCzfPXV79FiyES1JLNEoA7nYF+zDC2VZvFZSnH8ilU3bghJXxZPH+EcKYvfw8g/g==", + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/dotnet-deps-parser/-/dotnet-deps-parser-4.5.2.tgz", + "integrity": "sha512-bk5Q1luEwQ10rrBwZbtTxUNadaLz2dM6xzOLoTK+oUBcaq6saCeELmkIgdG+Fwkn58XRgLQvOySVS0gp4OG6RA==", "requires": { "@types/xml2js": "0.4.3", "lodash": "^4.17.11", @@ -2382,9 +2352,9 @@ } }, "es-abstract": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.15.0.tgz", - "integrity": "sha512-bhkEqWJ2t2lMeaJDuk7okMkJWI/yqgH/EoGwpcvv0XW9RWQsRspI4wt6xuyuvMvvQE3gg/D9HXppgk21w78GyQ==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.16.0.tgz", + "integrity": "sha512-xdQnfykZ9JMEiasTAJZJdMWCQ1Vm00NBw79/AWi7ELfZuuPCSOMDZbT9mkOfSctVtfhb+sAAzrm+j//GjjLHLg==", "requires": { "es-to-primitive": "^1.2.0", "function-bind": "^1.1.1", @@ -2408,63 +2378,21 @@ "is-symbol": "^1.0.2" } }, - "es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" - }, - "es6-promisify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", - "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", - "requires": { - "es6-promise": "^4.0.3" - } - }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, - "escodegen": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.12.0.tgz", - "integrity": "sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg==", - "requires": { - "esprima": "^3.1.3", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - }, - "dependencies": { - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "optional": true - } - } - }, "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" - }, "esutils": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true }, "events": { "version": "3.0.0", @@ -2547,11 +2475,6 @@ } } }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, "extend-shallow": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", @@ -2645,11 +2568,6 @@ } } }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" - }, "faye-websocket": { "version": "0.11.1", "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", @@ -2680,11 +2598,6 @@ "escape-string-regexp": "^1.0.5" } }, - "file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" - }, "fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", @@ -2770,6 +2683,11 @@ "map-cache": "^0.2.2" } }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -3237,38 +3155,6 @@ } } }, - "ftp": { - "version": "0.3.10", - "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz", - "integrity": "sha1-kZfYYa2BQvPmPVqDv+TFn3MwiF0=", - "requires": { - "readable-stream": "1.1.x", - "xregexp": "2.0.0" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" - } - } - }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -3287,39 +3173,6 @@ "pump": "^3.0.0" } }, - "get-uri": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-2.0.3.tgz", - "integrity": "sha512-x5j6Ks7FOgLD/GlvjKwgu7wdmMR55iuRHhn8hj/+gA+eSbxQvZ+AEomq+3MgVEZj1vpi738QahGbCCSIDtXtkw==", - "requires": { - "data-uri-to-buffer": "2", - "debug": "4", - "extend": "~3.0.2", - "file-uri-to-path": "1", - "ftp": "~0.3.10", - "readable-stream": "3" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "requires": { - "ms": "^2.1.1" - } - }, - "readable-stream": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", - "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", @@ -3571,67 +3424,16 @@ } } }, - "http-errors": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", - "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - }, - "dependencies": { - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - } - } - }, "http-parser-js": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.0.tgz", "integrity": "sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w==" }, - "http-proxy-agent": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", - "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", - "requires": { - "agent-base": "4", - "debug": "3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, "https-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" }, - "https-proxy-agent-snyk-fork": { - "version": "git://github.com/snyk/node-https-proxy-agent.git#5e86ccb682d0c833c8daa25ee6f91c670161cd66", - "from": "git://github.com/snyk/node-https-proxy-agent.git#fix/https-agent-vuln", - "requires": { - "agent-base": "^4.3.0", - "debug": "^3.1.0" - } - }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -3830,11 +3632,6 @@ "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" }, - "ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" - }, "is-accessor-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", @@ -4169,15 +3966,6 @@ "invert-kv": "^1.0.0" } }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, "lie": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", @@ -4591,11 +4379,6 @@ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz", "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==" }, - "netmask": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/netmask/-/netmask-1.0.6.tgz", - "integrity": "sha1-ICl+idhvb2QA8lDZ9Pa0wZRfzTU=" - }, "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", @@ -4768,26 +4551,6 @@ "is-wsl": "^1.1.0" } }, - "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "wordwrap": "~1.0.0" - }, - "dependencies": { - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" - } - } - }, "original": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", @@ -4858,32 +4621,6 @@ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true }, - "pac-proxy-agent": { - "version": "3.0.0", - "resolved": "git://github.com/snyk/node-pac-proxy-agent.git#e962ea0fe8db650a55e349e1b422e3ac99bfe451", - "requires": { - "agent-base": "^4.2.0", - "debug": "^3.1.0", - "get-uri": "^2.0.0", - "http-proxy-agent": "^2.1.0", - "https-proxy-agent-snyk-fork": "git://github.com/snyk/node-https-proxy-agent.git#5e86ccb682d0c833c8daa25ee6f91c670161cd66", - "pac-resolver": "^3.0.0", - "raw-body": "^2.2.0", - "socks-proxy-agent": "^4.0.1" - } - }, - "pac-resolver": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-3.0.0.tgz", - "integrity": "sha512-tcc38bsjuE3XZ5+4vP96OfhOugrX+JcnpUbhfuc4LuXBLQhoTthOstZeoQJBDnQUDYzYmdImKsbz0xSl1/9qeA==", - "requires": { - "co": "^4.6.0", - "degenerator": "^1.0.4", - "ip": "^1.1.5", - "netmask": "^1.0.6", - "thunkify": "^2.1.2" - } - }, "package-json": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", @@ -5114,11 +4851,6 @@ } } }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" - }, "prepend-http": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", @@ -5163,25 +4895,6 @@ "resolved": "https://registry.npmjs.org/protocols/-/protocols-1.4.7.tgz", "integrity": "sha512-Fx65lf9/YDn3hUX08XUc0J8rSux36rEsyiv21ZGUC1mOyeM3lTRpZLcrm8aAolzS4itwVfm7TAPyxC2E5zd6xg==" }, - "proxy-agent": { - "version": "git://github.com/snyk/node-proxy-agent.git#c25ef74cbe593a4d60a71ff3053466e4b3171711", - "from": "git://github.com/snyk/node-proxy-agent.git#fix/https-agent-vuln", - "requires": { - "agent-base": "^4.2.0", - "debug": "^3.1.0", - "http-proxy-agent": "^2.1.0", - "https-proxy-agent-snyk-fork": "*", - "lru-cache": "^4.1.2", - "pac-proxy-agent": "*", - "proxy-from-env": "^1.0.0", - "socks-proxy-agent": "^4.0.1" - } - }, - "proxy-from-env": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", - "integrity": "sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4=" - }, "prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", @@ -5251,17 +4964,6 @@ "safe-buffer": "^5.1.0" } }, - "raw-body": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.1.tgz", - "integrity": "sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA==", - "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.3", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, "rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", @@ -5807,11 +5509,6 @@ "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" }, - "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" - }, "sha.js": { "version": "2.4.11", "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", @@ -5871,11 +5568,6 @@ "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", "dev": true }, - "smart-buffer": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.0.2.tgz", - "integrity": "sha512-JDhEpTKzXusOqXZ0BUIdH+CjFdO/CR3tLlf5CN34IypI+xMmXW1uB16OOY8z3cICbJlDAVJzNbwBhNO0wt9OAw==" - }, "snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", @@ -5982,14 +5674,14 @@ } }, "snyk": { - "version": "1.230.5", - "resolved": "https://registry.npmjs.org/snyk/-/snyk-1.230.5.tgz", - "integrity": "sha512-kzy6FHMyneVXcezBVO0xRbEDSZSPj9Z/fDH4HFwOm5cpm/HErQ8B86fO6KtfSNIsruWUFcobEzP1q41nOdleAQ==", + "version": "1.236.1", + "resolved": "https://registry.npmjs.org/snyk/-/snyk-1.236.1.tgz", + "integrity": "sha512-wxA5Dbknfm4Pq+0poGar2K8X1oh+OwECdJVgiDeCCnooo8cQBamVV4Zekpb6sXJAAX9Wprgm6S+f4YgTvNmd3A==", "requires": { "@snyk/cli-interface": "^2.0.3", "@snyk/dep-graph": "1.12.0", "@snyk/gemfile": "1.2.0", - "@snyk/snyk-cocoapods-plugin": "1.0.2", + "@snyk/snyk-cocoapods-plugin": "1.0.3", "@types/agent-base": "^4.2.0", "@types/restify": "^4.3.6", "abbrev": "^1.1.1", @@ -6005,17 +5697,17 @@ "needle": "^2.2.4", "opn": "^5.5.0", "os-name": "^3.0.0", - "proxy-agent": "git://github.com/snyk/node-proxy-agent.git#c25ef74cbe593a4d60a71ff3053466e4b3171711", + "proxy-agent": "*", "proxy-from-env": "^1.0.0", "semver": "^6.0.0", "snyk-config": "^2.2.1", - "snyk-docker-plugin": "1.29.1", - "snyk-go-plugin": "1.11.0", + "snyk-docker-plugin": "1.33.1", + "snyk-go-plugin": "1.11.1", "snyk-gradle-plugin": "3.1.0", "snyk-module": "1.9.1", "snyk-mvn-plugin": "2.4.0", "snyk-nodejs-lockfile-parser": "1.16.0", - "snyk-nuget-plugin": "1.12.1", + "snyk-nuget-plugin": "1.13.0", "snyk-php-plugin": "1.6.4", "snyk-policy": "1.13.5", "snyk-python-plugin": "^1.13.3", @@ -6056,16 +5748,438 @@ "supports-color": "^5.3.0" } }, + "debug": { + "version": "3.2.6", + "bundled": true, + "requires": { + "ms": "^2.1.1" + } + }, + "esprima": { + "version": "4.0.1", + "bundled": true + }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, + "inherits": { + "version": "2.0.4", + "bundled": true + }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" }, + "lru-cache": { + "version": "4.1.5", + "bundled": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "bundled": true + }, + "prelude-ls": { + "version": "1.1.2", + "bundled": true + }, + "proxy-agent": { + "version": "3.1.0", + "bundled": true, + "requires": { + "agent-base": "^4.2.0", + "debug": "^3.1.0", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent-snyk-fork": "*", + "lru-cache": "^4.1.2", + "pac-proxy-agent": "*", + "proxy-from-env": "^1.0.0", + "socks-proxy-agent": "^4.0.1" + }, + "dependencies": { + "agent-base": { + "version": "4.3.0", + "bundled": true, + "requires": { + "es6-promisify": "^5.0.0" + } + }, + "ast-types": { + "version": "0.13.2", + "bundled": true + }, + "bytes": { + "version": "3.1.0", + "bundled": true + }, + "co": { + "version": "4.6.0", + "bundled": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true + }, + "data-uri-to-buffer": { + "version": "2.0.2", + "bundled": true + }, + "debug": { + "version": "3.2.6", + "bundled": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-is": { + "version": "0.1.3", + "bundled": true + }, + "degenerator": { + "version": "1.0.4", + "bundled": true, + "requires": { + "ast-types": "0.x.x", + "escodegen": "1.x.x", + "esprima": "3.x.x" + } + }, + "depd": { + "version": "1.1.2", + "bundled": true + }, + "es6-promise": { + "version": "4.2.8", + "bundled": true + }, + "es6-promisify": { + "version": "5.0.0", + "bundled": true, + "requires": { + "es6-promise": "^4.0.3" + } + }, + "escodegen": { + "version": "1.12.0", + "bundled": true, + "requires": { + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, + "esprima": { + "version": "3.1.3", + "bundled": true + }, + "estraverse": { + "version": "4.3.0", + "bundled": true + }, + "esutils": { + "version": "2.0.3", + "bundled": true + }, + "extend": { + "version": "3.0.2", + "bundled": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "bundled": true + }, + "file-uri-to-path": { + "version": "1.0.0", + "bundled": true + }, + "ftp": { + "version": "0.3.10", + "bundled": true, + "requires": { + "readable-stream": "1.1.x", + "xregexp": "2.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "1.1.14", + "bundled": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + } + } + }, + "get-uri": { + "version": "2.0.3", + "bundled": true, + "requires": { + "data-uri-to-buffer": "2", + "debug": "4", + "extend": "~3.0.2", + "file-uri-to-path": "1", + "ftp": "~0.3.10", + "readable-stream": "3" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "bundled": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "http-errors": { + "version": "1.7.3", + "bundled": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + } + }, + "http-proxy-agent": { + "version": "2.1.0", + "bundled": true, + "requires": { + "agent-base": "4", + "debug": "3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true + } + } + }, + "https-proxy-agent-snyk-fork": { + "version": "2.2.2-fixed-mitm-vuln", + "bundled": true, + "requires": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "inherits": { + "version": "2.0.4", + "bundled": true + }, + "ip": { + "version": "1.1.5", + "bundled": true + }, + "isarray": { + "version": "0.0.1", + "bundled": true + }, + "levn": { + "version": "0.3.0", + "bundled": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "ms": { + "version": "2.1.2", + "bundled": true + }, + "netmask": { + "version": "1.0.6", + "bundled": true + }, + "optionator": { + "version": "0.8.2", + "bundled": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.4", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "wordwrap": "~1.0.0" + } + }, + "pac-proxy-agent": { + "version": "3.0.0", + "bundled": true, + "requires": { + "agent-base": "^4.2.0", + "debug": "^3.1.0", + "get-uri": "^2.0.0", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent-snyk-fork": "git://github.com/snyk/node-https-proxy-agent.git#fix/https-agent-vuln", + "pac-resolver": "^3.0.0", + "raw-body": "^2.2.0", + "socks-proxy-agent": "^4.0.1" + } + }, + "pac-resolver": { + "version": "3.0.0", + "bundled": true, + "requires": { + "co": "^4.6.0", + "degenerator": "^1.0.4", + "ip": "^1.1.5", + "netmask": "^1.0.6", + "thunkify": "^2.1.2" + } + }, + "prelude-ls": { + "version": "1.1.2", + "bundled": true + }, + "raw-body": { + "version": "2.4.1", + "bundled": true, + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.3", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "readable-stream": { + "version": "3.4.0", + "bundled": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "dependencies": { + "string_decoder": { + "version": "1.3.0", + "bundled": true, + "requires": { + "safe-buffer": "~5.2.0" + } + } + } + }, + "safe-buffer": { + "version": "5.2.0", + "bundled": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true + }, + "setprototypeof": { + "version": "1.1.1", + "bundled": true + }, + "smart-buffer": { + "version": "4.0.2", + "bundled": true + }, + "socks": { + "version": "2.3.2", + "bundled": true, + "requires": { + "ip": "^1.1.5", + "smart-buffer": "4.0.2" + } + }, + "socks-proxy-agent": { + "version": "4.0.2", + "bundled": true, + "requires": { + "agent-base": "~4.2.1", + "socks": "~2.3.2" + }, + "dependencies": { + "agent-base": { + "version": "4.2.1", + "bundled": true, + "requires": { + "es6-promisify": "^5.0.0" + } + } + } + }, + "source-map": { + "version": "0.6.1", + "bundled": true, + "optional": true + }, + "statuses": { + "version": "1.5.0", + "bundled": true + }, + "string_decoder": { + "version": "0.10.31", + "bundled": true + }, + "thunkify": { + "version": "2.1.2", + "bundled": true + }, + "toidentifier": { + "version": "1.0.0", + "bundled": true + }, + "type-check": { + "version": "0.3.2", + "bundled": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "unpipe": { + "version": "1.0.0", + "bundled": true + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true + }, + "wordwrap": { + "version": "1.0.0", + "bundled": true + }, + "xregexp": { + "version": "2.0.0", + "bundled": true + } + } + }, + "proxy-from-env": { + "version": "1.0.0", + "bundled": true + }, + "pseudomap": { + "version": "1.0.2", + "bundled": true + }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -6111,6 +6225,13 @@ "has-flag": "^3.0.0" } }, + "type-check": { + "version": "0.3.2", + "bundled": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, "wrap-ansi": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", @@ -6120,6 +6241,10 @@ "string-width": "^3.0.0", "strip-ansi": "^5.0.0" } + }, + "yallist": { + "version": "2.1.2", + "bundled": true } } }, @@ -6134,13 +6259,14 @@ } }, "snyk-docker-plugin": { - "version": "1.29.1", - "resolved": "https://registry.npmjs.org/snyk-docker-plugin/-/snyk-docker-plugin-1.29.1.tgz", - "integrity": "sha512-Mucc1rZ7l0U8Dykr5m6HPjau8b2H8JVtVaXGbKSZD6e/47JDJhudkgrWjsS5Yt/Zdp1weE3+4SguftFiVR971A==", + "version": "1.33.1", + "resolved": "https://registry.npmjs.org/snyk-docker-plugin/-/snyk-docker-plugin-1.33.1.tgz", + "integrity": "sha512-xfs3DN1tPMTh6J8x2341wGK4HRr+pI5+i/YRuRmsslnBnwk/DkKYcbt8zOIWk6kzMoW8vo+9LqqXBQO/24szKg==", "requires": { "debug": "^4.1.1", "dockerfile-ast": "0.0.16", "semver": "^6.1.0", + "tar-stream": "^2.1.0", "tslib": "^1" }, "dependencies": { @@ -6169,9 +6295,9 @@ } }, "snyk-go-plugin": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/snyk-go-plugin/-/snyk-go-plugin-1.11.0.tgz", - "integrity": "sha512-9hsGgloioGuey5hbZfv+MkFEslxXHyzUlaAazcR0NsY7VLyG/b2g3f88f/ZwCwlWaKL9LMv/ERIiey3oWAB/qg==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/snyk-go-plugin/-/snyk-go-plugin-1.11.1.tgz", + "integrity": "sha512-IsNi7TmpHoRHzONOWJTT8+VYozQJnaJpKgnYNQjzNm2JlV8bDGbdGQ1a8LcEoChxnJ8v8aMZy7GTiQyGGABtEQ==", "requires": { "debug": "^4.1.1", "graphlib": "^2.1.1", @@ -6300,12 +6426,12 @@ } }, "snyk-nuget-plugin": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/snyk-nuget-plugin/-/snyk-nuget-plugin-1.12.1.tgz", - "integrity": "sha512-QuANQxBjTGj3hEf2YpEQ0WuI4Yq/93boqWUs4eoSTfDyBRFgIkUP6fLkzNldrkL8fQbcagqQ2Xz8M9IEKRQtMg==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/snyk-nuget-plugin/-/snyk-nuget-plugin-1.13.0.tgz", + "integrity": "sha512-9PrsN6kSz79lKUlpfqAYvMtac7HYbscf4OJ5LTzTcPn2XRs24NCTZylUUpilkSY0r2DyDLY18cl+qHHjfJKnig==", "requires": { "debug": "^3.1.0", - "dotnet-deps-parser": "4.5.0", + "dotnet-deps-parser": "4.5.2", "jszip": "^3.1.5", "lodash": "^4.17.14", "snyk-paket-parser": "1.5.0", @@ -6467,34 +6593,6 @@ "url-parse": "^1.4.3" } }, - "socks": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.3.2.tgz", - "integrity": "sha512-pCpjxQgOByDHLlNqlnh/mNSAxIUkyBBuwwhTcV+enZGbDaClPvHdvm6uvOwZfFJkam7cGhBNbb4JxiP8UZkRvQ==", - "requires": { - "ip": "^1.1.5", - "smart-buffer": "4.0.2" - } - }, - "socks-proxy-agent": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz", - "integrity": "sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg==", - "requires": { - "agent-base": "~4.2.1", - "socks": "~2.3.2" - }, - "dependencies": { - "agent-base": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz", - "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==", - "requires": { - "es6-promisify": "^5.0.0" - } - } - } - }, "sort-keys": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", @@ -6613,11 +6711,6 @@ } } }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" - }, "stompjs": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/stompjs/-/stompjs-2.3.3.tgz", @@ -6727,6 +6820,30 @@ "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.9.tgz", "integrity": "sha512-2wsvQ+4GwBvLPLWsNfLCDYGsW6xb7aeC6utq2Qh0PFwgEy7K7dsma9Jsmb2zSQj7GvYAyUGSntLtsv++GmgL1A==" }, + "tar-stream": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.0.tgz", + "integrity": "sha512-+DAn4Nb4+gz6WZigRzKEZl1QuJVOLtAwwF+WUxy1fJ6X63CaGaUAxJRD2KEn1OMfcbCjySTYpNC6WmfQoIEOdw==", + "requires": { + "bl": "^3.0.0", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", + "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, "temp-dir": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", @@ -6793,11 +6910,6 @@ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" }, - "thunkify": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/thunkify/-/thunkify-2.1.2.tgz", - "integrity": "sha1-+qDp0jDFGsyVyhOjYawFyn4EVT0=" - }, "timed-out": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", @@ -6858,11 +6970,6 @@ "repeat-string": "^1.6.1" } }, - "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" - }, "toml": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz", @@ -6889,14 +6996,6 @@ "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "requires": { - "prelude-ls": "~1.1.2" - } - }, "typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", @@ -6988,11 +7087,6 @@ "crypto-random-string": "^1.0.0" } }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" - }, "unset-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", @@ -7447,11 +7541,6 @@ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=" }, - "xregexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz", - "integrity": "sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM=" - }, "xtend": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", diff --git a/powerauth-webflow/package.json b/powerauth-webflow/package.json index 2f2115b1a..5b8440dd8 100644 --- a/powerauth-webflow/package.json +++ b/powerauth-webflow/package.json @@ -39,7 +39,7 @@ "bluebird": "^3.5.0", "intl": "^1.2.5", "sanitize-html": "^1.20.1", - "snyk": "^1.230.5", + "snyk": "^1.236.1", "lodash": "^4.17.15" }, "scripts": { From aa2920e4e71e0f2a572c934a4e183a812f013db3 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Mon, 21 Oct 2019 15:27:35 +0200 Subject: [PATCH 100/197] Update operation user, organization ID and account status in non-SCA login step --- .../form/controller/FormLoginController.java | 43 ++++++++++--------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/controller/FormLoginController.java b/powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/controller/FormLoginController.java index 4fdde9539..30da4dcd1 100644 --- a/powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/controller/FormLoginController.java +++ b/powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/controller/FormLoginController.java @@ -55,6 +55,7 @@ import io.getlime.security.powerauth.lib.webflow.authentication.model.OrganizationDetail; import io.getlime.security.powerauth.lib.webflow.authentication.model.converter.FormDataConverter; import io.getlime.security.powerauth.lib.webflow.authentication.model.converter.OrganizationConverter; +import io.getlime.security.powerauth.lib.webflow.authentication.model.converter.UserAccountStatusConverter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -82,6 +83,7 @@ public class FormLoginController extends AuthMethodController objectResponse = dataAdapterClient.authenticateUser(userId, organizationId, protectedPassword, authenticationContext, operationContext); UserAuthenticationResponse authResponse = objectResponse.getResponseObject(); if (authResponse.getAuthenticationResult() == UserAuthenticationResult.SUCCEEDED) { + nextStepClient.updateOperationUser(operation.getOperationId(), userId, organizationId, statusConverter.fromAccountStatus(accountStatus)); logger.info("Step authentication succeeded, operation ID: {}, user ID: {}, authentication method: {}", operation.getOperationId(), authResponse.getUserDetail().getId(), getAuthMethodName().toString()); return new AuthenticationResult(authResponse.getUserDetail().getId(), authResponse.getUserDetail().getOrganizationId()); } else { - try { - if ("login.authenticationFailed".equals(authResponse.getErrorMessage())) { - UpdateOperationResponse response = failAuthorization(operation.getOperationId(), null, request.getAuthInstruments(), null); - if (response.getResult() == AuthResult.FAILED) { - // FAILED result instead of CONTINUE means the authentication method is failed - throw new MaxAttemptsExceededException("Maximum number of authentication attempts exceeded"); - } + if ("login.authenticationFailed".equals(authResponse.getErrorMessage())) { + UpdateOperationResponse response = failAuthorization(operation.getOperationId(), null, request.getAuthInstruments(), null); + if (response.getResult() == AuthResult.FAILED) { + // FAILED result instead of CONTINUE means the authentication method is failed + throw new MaxAttemptsExceededException("Maximum number of authentication attempts exceeded"); } - if (authResponse.getShowRemainingAttempts()) { - GetOperationDetailResponse updatedOperation = getOperation(); - Integer remainingAttemptsNS = updatedOperation.getRemainingAttempts(); - AuthStepException authEx = new AuthStepException("User authentication failed", authResponse.getErrorMessage()); - Integer remainingAttemptsDA = authResponse.getRemainingAttempts(); - Integer remainingAttempts = resolveRemainingAttempts(remainingAttemptsDA, remainingAttemptsNS); - authEx.setRemainingAttempts(remainingAttempts); - throw authEx; - } else { - throw new AuthStepException("User authentication failed", authResponse.getErrorMessage()); - } - } catch (NextStepServiceException e) { - logger.error("Error occurred in Next Step server", e); - throw new AuthStepException(e.getError().getMessage(), e, "error.communication"); + } + if (authResponse.getShowRemainingAttempts()) { + GetOperationDetailResponse updatedOperation = getOperation(); + Integer remainingAttemptsNS = updatedOperation.getRemainingAttempts(); + AuthStepException authEx = new AuthStepException("User authentication failed", authResponse.getErrorMessage()); + Integer remainingAttemptsDA = authResponse.getRemainingAttempts(); + Integer remainingAttempts = resolveRemainingAttempts(remainingAttemptsDA, remainingAttemptsNS); + authEx.setRemainingAttempts(remainingAttempts); + throw authEx; + } else { + throw new AuthStepException("User authentication failed", authResponse.getErrorMessage()); } } + } catch (NextStepServiceException e) { + logger.error("Error occurred in Next Step server", e); + throw new AuthStepException(e.getError().getMessage(), e, "error.communication"); } catch (DataAdapterClientErrorException e) { throw new AuthStepException(e.getError().getMessage(), e); } From 3fa905608ed62b3d227f13984babfe0a6550718c Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Mon, 21 Oct 2019 15:35:20 +0200 Subject: [PATCH 101/197] Update JavaDoc --- .../powerauth/lib/nextstep/client/NextStepClient.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/powerauth-nextstep-client/src/main/java/io/getlime/security/powerauth/lib/nextstep/client/NextStepClient.java b/powerauth-nextstep-client/src/main/java/io/getlime/security/powerauth/lib/nextstep/client/NextStepClient.java index 25e0ac3d2..1c6a71b9b 100644 --- a/powerauth-nextstep-client/src/main/java/io/getlime/security/powerauth/lib/nextstep/client/NextStepClient.java +++ b/powerauth-nextstep-client/src/main/java/io/getlime/security/powerauth/lib/nextstep/client/NextStepClient.java @@ -294,7 +294,7 @@ public ObjectResponse updateOperationPost(String operat } /** - * Update user and organization for an operation via PUT method. + * Update user, organization and account status for an operation via PUT method. * @param operationId Operation ID. * @param userId User ID. * @param organizationId Organization ID. @@ -317,7 +317,7 @@ public Response updateOperationUser(String operationId, String userId, String or } /** - * Update user and organization for an operation via POST method. + * UUpdate user, organization and account status for an operation via POST method. * @param operationId Operation ID. * @param userId User ID. * @param organizationId Organization ID. From 5c79089e5cd141a6cd28cc9e49bea753f585028a Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Tue, 22 Oct 2019 11:55:39 +0200 Subject: [PATCH 102/197] Fix #695: Update SCA approval flow for AFS integration --- .../service/OperationPersistenceService.java | 3 - ...roller.java => ApprovalScaController.java} | 56 ++++++--- .../model/request/ApprovalScaAuthRequest.java | 16 ++- .../model/request/ApprovalScaInitRequest.java | 14 +-- .../response/ApprovalScaAuthResponse.java | 45 +++++++ .../response/ApprovalScaInitResponse.java | 24 +--- ...ontroller.java => LoginScaController.java} | 113 +++++++++--------- .../model/request/LoginScaAuthRequest.java | 72 +++++++++++ .../model/request/LoginScaInitRequest.java | 51 +------- ...esponse.java => LoginScaAuthResponse.java} | 48 ++------ .../model/response/LoginScaInitResponse.java | 48 ++++++-- .../configuration/WebMvcConfiguration.java | 1 + .../src/main/js/actions/approvalScaActions.js | 34 +++++- .../src/main/js/actions/loginScaActions.js | 63 ++++++---- .../src/main/js/components/approvalSca.js | 59 ++++++++- .../src/main/js/components/loginSca.js | 8 +- 16 files changed, 414 insertions(+), 241 deletions(-) rename powerauth-webflow-authentication-approval-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/approvalsca/controller/{ApprovalScaInitController.java => ApprovalScaController.java} (72%) rename powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/model/request/PrepareLoginFormDataRequest.java => powerauth-webflow-authentication-approval-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/approvalsca/model/request/ApprovalScaAuthRequest.java (59%) create mode 100644 powerauth-webflow-authentication-approval-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/approvalsca/model/response/ApprovalScaAuthResponse.java rename powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/controller/{LoginScaInitController.java => LoginScaController.java} (88%) create mode 100644 powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/model/request/LoginScaAuthRequest.java rename powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/model/response/{PrepareLoginFormDataResponse.java => LoginScaAuthResponse.java} (51%) diff --git a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/service/OperationPersistenceService.java b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/service/OperationPersistenceService.java index de171b59d..c0c2cd2a1 100644 --- a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/service/OperationPersistenceService.java +++ b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/service/OperationPersistenceService.java @@ -18,11 +18,8 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; -import io.getlime.security.powerauth.app.nextstep.repository.AuthMethodRepository; -import io.getlime.security.powerauth.app.nextstep.repository.OperationAfsActionRepository; import io.getlime.security.powerauth.app.nextstep.repository.OperationHistoryRepository; import io.getlime.security.powerauth.app.nextstep.repository.OperationRepository; -import io.getlime.security.powerauth.app.nextstep.repository.model.entity.AuthMethodEntity; import io.getlime.security.powerauth.app.nextstep.repository.model.entity.OperationAfsActionEntity; import io.getlime.security.powerauth.app.nextstep.repository.model.entity.OperationEntity; import io.getlime.security.powerauth.app.nextstep.repository.model.entity.OperationHistoryEntity; diff --git a/powerauth-webflow-authentication-approval-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/approvalsca/controller/ApprovalScaInitController.java b/powerauth-webflow-authentication-approval-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/approvalsca/controller/ApprovalScaController.java similarity index 72% rename from powerauth-webflow-authentication-approval-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/approvalsca/controller/ApprovalScaInitController.java rename to powerauth-webflow-authentication-approval-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/approvalsca/controller/ApprovalScaController.java index 786323d9a..ce02c97df 100644 --- a/powerauth-webflow-authentication-approval-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/approvalsca/controller/ApprovalScaInitController.java +++ b/powerauth-webflow-authentication-approval-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/approvalsca/controller/ApprovalScaController.java @@ -26,7 +26,9 @@ import io.getlime.security.powerauth.lib.webflow.authentication.controller.AuthMethodController; import io.getlime.security.powerauth.lib.webflow.authentication.exception.AuthStepException; import io.getlime.security.powerauth.lib.webflow.authentication.exception.InvalidRequestException; +import io.getlime.security.powerauth.lib.webflow.authentication.method.approvalsca.model.request.ApprovalScaAuthRequest; import io.getlime.security.powerauth.lib.webflow.authentication.method.approvalsca.model.request.ApprovalScaInitRequest; +import io.getlime.security.powerauth.lib.webflow.authentication.method.approvalsca.model.response.ApprovalScaAuthResponse; import io.getlime.security.powerauth.lib.webflow.authentication.method.approvalsca.model.response.ApprovalScaInitResponse; import io.getlime.security.powerauth.lib.webflow.authentication.service.AuthMethodQueryService; import org.slf4j.Logger; @@ -45,9 +47,11 @@ */ @RestController @RequestMapping(value = "/api/auth/approval-sca") -public class ApprovalScaInitController extends AuthMethodController { +public class ApprovalScaController extends AuthMethodController { - private static final Logger logger = LoggerFactory.getLogger(ApprovalScaInitController.class); + private static final Logger logger = LoggerFactory.getLogger(ApprovalScaController.class); + + private final String FIELD_BANK_ACCOUNT_CHOICE_DISABLED = "operation.bankAccountChoice.disabled"; private final NextStepClient nextStepClient; private final AuthMethodQueryService authMethodQueryService; @@ -58,30 +62,34 @@ public class ApprovalScaInitController extends AuthMethodController getAuthInstruments() { + return Collections.emptyList(); + } } diff --git a/powerauth-webflow-authentication-approval-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/approvalsca/model/request/ApprovalScaInitRequest.java b/powerauth-webflow-authentication-approval-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/approvalsca/model/request/ApprovalScaInitRequest.java index 04f03dad8..98bd0109f 100644 --- a/powerauth-webflow-authentication-approval-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/approvalsca/model/request/ApprovalScaInitRequest.java +++ b/powerauth-webflow-authentication-approval-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/approvalsca/model/request/ApprovalScaInitRequest.java @@ -15,21 +15,11 @@ */ package io.getlime.security.powerauth.lib.webflow.authentication.method.approvalsca.model.request; -import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthInstrument; -import io.getlime.security.powerauth.lib.webflow.authentication.base.AuthStepRequest; - -import java.util.Collections; -import java.util.List; - /** - * Model for an init request for SCA approval. + * Request object used for initializing operation approval. * * @author Roman Strobl, roman.strobl@wultra.com */ -public class ApprovalScaInitRequest extends AuthStepRequest { +public class ApprovalScaInitRequest { - @Override - public List getAuthInstruments() { - return Collections.emptyList(); - } } diff --git a/powerauth-webflow-authentication-approval-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/approvalsca/model/response/ApprovalScaAuthResponse.java b/powerauth-webflow-authentication-approval-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/approvalsca/model/response/ApprovalScaAuthResponse.java new file mode 100644 index 000000000..2fa478440 --- /dev/null +++ b/powerauth-webflow-authentication-approval-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/approvalsca/model/response/ApprovalScaAuthResponse.java @@ -0,0 +1,45 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.getlime.security.powerauth.lib.webflow.authentication.method.approvalsca.model.response; + +import io.getlime.security.powerauth.lib.webflow.authentication.base.AuthStepResponse; + +/** + * Model for an init response for SCA approval. + * + * @author Roman Strobl, roman.strobl@wultra.com + */ +public class ApprovalScaAuthResponse extends AuthStepResponse { + + private boolean mobileTokenEnabled; + + /** + * Get whether mobile token is enabled for this step. + * @return Whether mobile token is enabled for this step. + */ + public boolean isMobileTokenEnabled() { + return mobileTokenEnabled; + } + + /** + * Set whether mobile token is enabled for this step. + * @param mobileTokenEnabled Whether mobile token is enabled for this step. + */ + public void setMobileTokenEnabled(boolean mobileTokenEnabled) { + this.mobileTokenEnabled = mobileTokenEnabled; + } + +} diff --git a/powerauth-webflow-authentication-approval-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/approvalsca/model/response/ApprovalScaInitResponse.java b/powerauth-webflow-authentication-approval-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/approvalsca/model/response/ApprovalScaInitResponse.java index 454ab5d8e..d287617dc 100644 --- a/powerauth-webflow-authentication-approval-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/approvalsca/model/response/ApprovalScaInitResponse.java +++ b/powerauth-webflow-authentication-approval-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/approvalsca/model/response/ApprovalScaInitResponse.java @@ -15,31 +15,11 @@ */ package io.getlime.security.powerauth.lib.webflow.authentication.method.approvalsca.model.response; -import io.getlime.security.powerauth.lib.webflow.authentication.base.AuthStepResponse; - /** - * Model for an init response for SCA approval. + * Response object used for initializing operation approval. * * @author Roman Strobl, roman.strobl@wultra.com */ -public class ApprovalScaInitResponse extends AuthStepResponse { - - private boolean mobileTokenEnabled; - - /** - * Get whether mobile token is enabled for this step. - * @return Whether mobile token is enabled for this step. - */ - public boolean isMobileTokenEnabled() { - return mobileTokenEnabled; - } - - /** - * Set whether mobile token is enabled for this step. - * @param mobileTokenEnabled Whether mobile token is enabled for this step. - */ - public void setMobileTokenEnabled(boolean mobileTokenEnabled) { - this.mobileTokenEnabled = mobileTokenEnabled; - } +public class ApprovalScaInitResponse { } diff --git a/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/controller/LoginScaInitController.java b/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/controller/LoginScaController.java similarity index 88% rename from powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/controller/LoginScaInitController.java rename to powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/controller/LoginScaController.java index 83c6c494d..dedb3a29a 100644 --- a/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/controller/LoginScaInitController.java +++ b/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/controller/LoginScaController.java @@ -36,10 +36,10 @@ import io.getlime.security.powerauth.lib.webflow.authentication.controller.AuthMethodController; import io.getlime.security.powerauth.lib.webflow.authentication.exception.AuthStepException; import io.getlime.security.powerauth.lib.webflow.authentication.exception.CommunicationFailedException; +import io.getlime.security.powerauth.lib.webflow.authentication.method.loginsca.model.request.LoginScaAuthRequest; import io.getlime.security.powerauth.lib.webflow.authentication.method.loginsca.model.request.LoginScaInitRequest; -import io.getlime.security.powerauth.lib.webflow.authentication.method.loginsca.model.request.PrepareLoginFormDataRequest; +import io.getlime.security.powerauth.lib.webflow.authentication.method.loginsca.model.response.LoginScaAuthResponse; import io.getlime.security.powerauth.lib.webflow.authentication.method.loginsca.model.response.LoginScaInitResponse; -import io.getlime.security.powerauth.lib.webflow.authentication.method.loginsca.model.response.PrepareLoginFormDataResponse; import io.getlime.security.powerauth.lib.webflow.authentication.model.HttpSessionAttributeNames; import io.getlime.security.powerauth.lib.webflow.authentication.model.OrganizationDetail; import io.getlime.security.powerauth.lib.webflow.authentication.model.converter.FormDataConverter; @@ -66,9 +66,9 @@ */ @RestController @RequestMapping(value = "/api/auth/login-sca") -public class LoginScaInitController extends AuthMethodController { +public class LoginScaController extends AuthMethodController { - private static final Logger logger = LoggerFactory.getLogger(LoginScaInitController.class); + private static final Logger logger = LoggerFactory.getLogger(LoginScaController.class); private final DataAdapterClient dataAdapterClient; private final NextStepClient nextStepClient; @@ -88,7 +88,7 @@ public class LoginScaInitController extends AuthMethodController nsObjectResponse = nextStepClient.getOrganizationList(); + List nsResponseList = nsObjectResponse.getResponseObject().getOrganizations(); + for (GetOrganizationDetailResponse nsResponse: nsResponseList) { + OrganizationDetail organization = organizationConverter.fromNSOrganization(nsResponse); + response.addOrganization(organization); + } + } catch (NextStepServiceException e) { + throw new CommunicationFailedException("Organization is not available"); + } + logger.info("Step authentication succeeded, operation ID: {}, authentication method: {}", operation.getOperationId(), getAuthMethodName().toString()); + return response; + } + /** * Get current authentication method name. * @return Current authentication method name. @@ -217,47 +261,4 @@ public AuthStepResponse cancelAuthentication() throws AuthStepException { } } - /** - * Prepare login form data. - * @param request Prepare login form data request. - * @return Prepare login form response. - * @throws AuthStepException Thrown when request is invalid or communication with Next Step fails. - */ - @RequestMapping(value = "/setup", method = RequestMethod.POST) - public PrepareLoginFormDataResponse prepareLoginForm(@RequestBody PrepareLoginFormDataRequest request) throws AuthStepException { - if (request == null) { - throw new AuthStepException("Invalid request in prepareLoginForm", "error.invalidRequest"); - } - logger.info("Prepare login form data started"); - final GetOperationDetailResponse operation = getOperation(); - final PrepareLoginFormDataResponse response = new PrepareLoginFormDataResponse(); - if (operation.getUserId() != null && operation.getOrganizationId() != null) { - // Username form can be skipped - response.setUserAlreadyKnown(true); - // Find out whether mobile token is enabled - boolean mobileTokenEnabled = false; - try { - if (authMethodQueryService.isMobileTokenAvailable(operation.getUserId(), operation.getOperationId())) { - mobileTokenEnabled = true; - } - } catch (NextStepServiceException e) { - logger.error(e.getMessage(), e); - } - response.setMobileTokenEnabled(mobileTokenEnabled); - logger.info("Prepare login form data skipped, user and organization is already known"); - return response; - } - try { - ObjectResponse nsObjectResponse = nextStepClient.getOrganizationList(); - List nsResponseList = nsObjectResponse.getResponseObject().getOrganizations(); - for (GetOrganizationDetailResponse nsResponse: nsResponseList) { - OrganizationDetail organization = organizationConverter.fromNSOrganization(nsResponse); - response.addOrganization(organization); - } - } catch (NextStepServiceException e) { - throw new CommunicationFailedException("Organization is not available"); - } - logger.info("Prepare login form data succeeded"); - return response; - } } diff --git a/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/model/request/LoginScaAuthRequest.java b/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/model/request/LoginScaAuthRequest.java new file mode 100644 index 000000000..31a6b1ca4 --- /dev/null +++ b/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/model/request/LoginScaAuthRequest.java @@ -0,0 +1,72 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.getlime.security.powerauth.lib.webflow.authentication.method.loginsca.model.request; + +import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthInstrument; +import io.getlime.security.powerauth.lib.webflow.authentication.base.AuthStepRequest; + +import java.util.Collections; +import java.util.List; + +/** + * Model for an authentication request for SCA login. + * + * @author Roman Strobl, roman.strobl@wultra.com + */ +public class LoginScaAuthRequest extends AuthStepRequest { + + private String username; + private String organizationId; + + /** + * Get username. + * + * @return Username. + */ + public String getUsername() { + return username; + } + + /** + * Set username. + * + * @param username Username. + */ + public void setUsername(String username) { + this.username = username; + } + + /** + * Get organization ID. + * @return Organization ID. + */ + public String getOrganizationId() { + return organizationId; + } + + /** + * Set organization ID. + * @param organizationId Organization ID. + */ + public void setOrganizationId(String organizationId) { + this.organizationId = organizationId; + } + + @Override + public List getAuthInstruments() { + return Collections.emptyList(); + } +} diff --git a/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/model/request/LoginScaInitRequest.java b/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/model/request/LoginScaInitRequest.java index f23d683dc..ba50fa607 100644 --- a/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/model/request/LoginScaInitRequest.java +++ b/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/model/request/LoginScaInitRequest.java @@ -15,58 +15,11 @@ */ package io.getlime.security.powerauth.lib.webflow.authentication.method.loginsca.model.request; -import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthInstrument; -import io.getlime.security.powerauth.lib.webflow.authentication.base.AuthStepRequest; - -import java.util.Collections; -import java.util.List; - /** - * Model for an init request for SCA login. + * Request object used for preparing login form data. * * @author Roman Strobl, roman.strobl@wultra.com */ -public class LoginScaInitRequest extends AuthStepRequest { - - private String username; - private String organizationId; - - /** - * Get username. - * - * @return Username. - */ - public String getUsername() { - return username; - } - - /** - * Set username. - * - * @param username Username. - */ - public void setUsername(String username) { - this.username = username; - } - - /** - * Get organization ID. - * @return Organization ID. - */ - public String getOrganizationId() { - return organizationId; - } - - /** - * Set organization ID. - * @param organizationId Organization ID. - */ - public void setOrganizationId(String organizationId) { - this.organizationId = organizationId; - } +public class LoginScaInitRequest { - @Override - public List getAuthInstruments() { - return Collections.emptyList(); - } } diff --git a/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/model/response/PrepareLoginFormDataResponse.java b/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/model/response/LoginScaAuthResponse.java similarity index 51% rename from powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/model/response/PrepareLoginFormDataResponse.java rename to powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/model/response/LoginScaAuthResponse.java index 3ff280c42..c7cfd6dd3 100644 --- a/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/model/response/PrepareLoginFormDataResponse.java +++ b/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/model/response/LoginScaAuthResponse.java @@ -15,59 +15,31 @@ */ package io.getlime.security.powerauth.lib.webflow.authentication.method.loginsca.model.response; -import io.getlime.security.powerauth.lib.webflow.authentication.model.OrganizationDetail; - -import java.util.ArrayList; -import java.util.List; +import io.getlime.security.powerauth.lib.webflow.authentication.base.AuthStepResponse; /** - * Response object used for querying login form data. + * Model for an authentication response for SCA login. * * @author Roman Strobl, roman.strobl@wultra.com */ -public class PrepareLoginFormDataResponse { +public class LoginScaAuthResponse extends AuthStepResponse { - private List organizations = new ArrayList<>(); - private boolean userAlreadyKnown; private boolean mobileTokenEnabled; /** - * Get organizations. - * @return Organizations. - */ - public List getOrganizations() { - return organizations; - } - - /** - * Set organizations. - * @param organizations Organizations. - */ - public void setOrganizations(List organizations) { - this.organizations = organizations; - } - - /** - * Add an organization. - * @param organization Organization. + * Get whether mobile token is enabled for this step. + * @return Whether mobile token is enabled for this step. */ - public void addOrganization(OrganizationDetail organization) { - organizations.add(organization); - } - - public boolean isUserAlreadyKnown() { - return userAlreadyKnown; - } - - public void setUserAlreadyKnown(boolean userAlreadyKnown) { - this.userAlreadyKnown = userAlreadyKnown; - } - public boolean isMobileTokenEnabled() { return mobileTokenEnabled; } + /** + * Set whether mobile token is enabled for this step. + * @param mobileTokenEnabled Whether mobile token is enabled for this step. + */ public void setMobileTokenEnabled(boolean mobileTokenEnabled) { this.mobileTokenEnabled = mobileTokenEnabled; } + } diff --git a/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/model/response/LoginScaInitResponse.java b/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/model/response/LoginScaInitResponse.java index 815d457d6..660d5679f 100644 --- a/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/model/response/LoginScaInitResponse.java +++ b/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/model/response/LoginScaInitResponse.java @@ -15,31 +15,59 @@ */ package io.getlime.security.powerauth.lib.webflow.authentication.method.loginsca.model.response; -import io.getlime.security.powerauth.lib.webflow.authentication.base.AuthStepResponse; +import io.getlime.security.powerauth.lib.webflow.authentication.model.OrganizationDetail; + +import java.util.ArrayList; +import java.util.List; /** - * Model for an init response for SCA login. + * Response object used for querying login form data. * * @author Roman Strobl, roman.strobl@wultra.com */ -public class LoginScaInitResponse extends AuthStepResponse { +public class LoginScaInitResponse { + private List organizations = new ArrayList<>(); + private boolean userAlreadyKnown; private boolean mobileTokenEnabled; /** - * Get whether mobile token is enabled for this step. - * @return Whether mobile token is enabled for this step. + * Get organizations. + * @return Organizations. */ - public boolean isMobileTokenEnabled() { - return mobileTokenEnabled; + public List getOrganizations() { + return organizations; } /** - * Set whether mobile token is enabled for this step. - * @param mobileTokenEnabled Whether mobile token is enabled for this step. + * Set organizations. + * @param organizations Organizations. */ + public void setOrganizations(List organizations) { + this.organizations = organizations; + } + + /** + * Add an organization. + * @param organization Organization. + */ + public void addOrganization(OrganizationDetail organization) { + organizations.add(organization); + } + + public boolean isUserAlreadyKnown() { + return userAlreadyKnown; + } + + public void setUserAlreadyKnown(boolean userAlreadyKnown) { + this.userAlreadyKnown = userAlreadyKnown; + } + + public boolean isMobileTokenEnabled() { + return mobileTokenEnabled; + } + public void setMobileTokenEnabled(boolean mobileTokenEnabled) { this.mobileTokenEnabled = mobileTokenEnabled; } - } diff --git a/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/configuration/WebMvcConfiguration.java b/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/configuration/WebMvcConfiguration.java index 9c51a35ca..b339cab3f 100644 --- a/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/configuration/WebMvcConfiguration.java +++ b/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/configuration/WebMvcConfiguration.java @@ -152,6 +152,7 @@ private ObjectMapper objectMapper() { objectMapper.registerModule(new JodaModule()); // replacement for ISO8601DateFormat which is deprecated objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false); + objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); return objectMapper; } diff --git a/powerauth-webflow/src/main/js/actions/approvalScaActions.js b/powerauth-webflow/src/main/js/actions/approvalScaActions.js index 25693a0ae..a685557d2 100644 --- a/powerauth-webflow/src/main/js/actions/approvalScaActions.js +++ b/powerauth-webflow/src/main/js/actions/approvalScaActions.js @@ -22,6 +22,34 @@ import {handleAuthFailedError} from "./errorHandling"; * @returns {Function} No return value. */ export function init() { + return function (dispatch) { + axios.post("./api/auth/approval-sca/init", {}).then((response) => { + axios.post("./api/auth/operation/detail", {}, { + headers: { + 'X-OPERATION-HASH': operationHash, + } + }).then((response) => { + dispatch({ + type: "SHOW_SCREEN_APPROVAL_SCA", + loading: false, + error: false, + payload: response.data + }); + return null; + }).catch((error) => { + dispatchError(dispatch, error); + }) + }).catch((error) => { + dispatchError(dispatch, error); + }) + } +} + +/** + * Confirm SCA approval. + * @returns {Function} No return value. + */ +export function confirm() { return function (dispatch) { dispatch({ type: "SHOW_SCREEN_APPROVAL_SCA", @@ -31,7 +59,7 @@ export function init() { message: "" } }); - axios.post("./api/auth/approval-sca/init", {}, { + axios.post("./api/auth/approval-sca/authenticate", {}, { headers: { 'X-OPERATION-HASH': operationHash, } @@ -81,6 +109,10 @@ export function init() { } } +/** + * Cancel SCA approval. + * @returns {Function} No return value. + */ export function cancel() { return function (dispatch) { axios.post("./api/auth/approval-sca/cancel", {}, { diff --git a/powerauth-webflow/src/main/js/actions/loginScaActions.js b/powerauth-webflow/src/main/js/actions/loginScaActions.js index 0702138d1..91ce9648c 100644 --- a/powerauth-webflow/src/main/js/actions/loginScaActions.js +++ b/powerauth-webflow/src/main/js/actions/loginScaActions.js @@ -18,12 +18,12 @@ import {dispatchError} from "../dispatcher/dispatcher"; import {handleAuthFailedError} from "./errorHandling"; /** - * Initialize SCA login for given username. + * Authenticate SCA login for given username. * @param username Username. * @param organizationId Organization ID. * @returns {Function} No return value. */ -export function init(username, organizationId) { +export function authenticate(username, organizationId) { return function (dispatch) { dispatch({ type: "SHOW_SCREEN_LOGIN_SCA", @@ -33,7 +33,7 @@ export function init(username, organizationId) { message: "" } }); - axios.post("./api/auth/login-sca/init", { + axios.post("./api/auth/login-sca/authenticate", { username: username, organizationId: organizationId }, { @@ -87,27 +87,11 @@ export function init(username, organizationId) { } } -export function cancel() { - return function (dispatch) { - axios.post("./api/auth/login-sca/cancel", {}, { - headers: { - 'X-OPERATION-HASH': operationHash, - } - }).then((response) => { - dispatch({ - type: "SHOW_SCREEN_ERROR", - payload: { - message: response.data.message - } - }); - return null; - }).catch((error) => { - dispatchError(dispatch, error); - }) - } -} - -export function getOrganizationList() { +/** + * Initialize SCA login. + * @returns {Function} No return value. + */ +export function init() { return function (dispatch) { dispatch({ type: "SHOW_SCREEN_LOGIN_SCA", @@ -117,7 +101,7 @@ export function getOrganizationList() { message: "" } }); - axios.post("./api/auth/login-sca/setup", {}).then((response) => { + axios.post("./api/auth/login-sca/init", {}).then((response) => { // Handling of page refresh if (response.data.userAlreadyKnown) { if (response.data.mobileTokenEnabled) { @@ -153,6 +137,35 @@ export function getOrganizationList() { } } +/** + * Cancel SCA login. + * @returns {Function} No return value. + */ +export function cancel() { + return function (dispatch) { + axios.post("./api/auth/login-sca/cancel", {}, { + headers: { + 'X-OPERATION-HASH': operationHash, + } + }).then((response) => { + dispatch({ + type: "SHOW_SCREEN_ERROR", + payload: { + message: response.data.message + } + }); + return null; + }).catch((error) => { + dispatchError(dispatch, error); + }) + } +} + +/** + * Select an organization. + * @param organizationId Organization ID. + * @returns {Function} No return value. + */ export function selectOrganization(organizationId) { return function (dispatch) { dispatch({ diff --git a/powerauth-webflow/src/main/js/components/approvalSca.js b/powerauth-webflow/src/main/js/components/approvalSca.js index 6f2a37436..4d25117d9 100644 --- a/powerauth-webflow/src/main/js/components/approvalSca.js +++ b/powerauth-webflow/src/main/js/components/approvalSca.js @@ -16,9 +16,13 @@ import React from 'react'; import {connect} from 'react-redux'; // Actions -import {init} from '../actions/approvalScaActions' +import {init, confirm, cancel} from "../actions/approvalScaActions"; // Components import Spinner from 'react-tiny-spin'; +import {Button, Panel} from "react-bootstrap"; +import OperationTimeout from "./operationTimeout"; +import OperationDetail from "./operationDetail"; +import {FormattedMessage} from "react-intl"; /** * SCA approval component. @@ -30,13 +34,60 @@ import Spinner from 'react-tiny-spin'; }) export default class ApprovalSca extends React.Component { + constructor() { + super(); + this.handleSubmit = this.handleSubmit.bind(this); + this.handleCancel = this.handleCancel.bind(this); + } + componentWillMount() { this.props.dispatch(init()); } + handleSubmit(event) { + event.preventDefault(); + this.props.dispatch(confirm()); + } + + handleCancel(event) { + event.preventDefault(); + this.props.dispatch(cancel()); + } + render() { - return ( - - ) + if (this.props.context.formData || this.props.context.data) { + return ( +
+
+ + + +
+
+
+ +
+
+
+
+ + + +
+
+
+
+ +
+ ) + } else { + return ( +
+ +
+ ) + } } } \ No newline at end of file diff --git a/powerauth-webflow/src/main/js/components/loginSca.js b/powerauth-webflow/src/main/js/components/loginSca.js index 1b7bea9a2..2639c79d2 100644 --- a/powerauth-webflow/src/main/js/components/loginSca.js +++ b/powerauth-webflow/src/main/js/components/loginSca.js @@ -18,9 +18,9 @@ import ReactDOM from 'react-dom'; import {connect} from 'react-redux'; // Actions import { - cancel, - getOrganizationList, init, + authenticate, + cancel, organizationConfigurationError, selectOrganization } from '../actions/loginScaActions' @@ -50,7 +50,7 @@ export default class LoginSca extends React.Component { } componentWillMount() { - this.props.dispatch(getOrganizationList()); + this.props.dispatch(init()); } handleLogin(event) { @@ -58,7 +58,7 @@ export default class LoginSca extends React.Component { const organizationId = this.props.context.chosenOrganizationId; const usernameField = "username" + "_" + organizationId; const username = ReactDOM.findDOMNode(this.refs[usernameField]); - this.props.dispatch(init(username.value, organizationId)); + this.props.dispatch(authenticate(username.value, organizationId)); } handleCancel(event) { From 66d899e1746b02d49b38dd7fa74ff642a5fb87bc Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Tue, 22 Oct 2019 13:34:14 +0200 Subject: [PATCH 103/197] Fix #681: AFS: integrate responses into non-SCA steps --- .../controller/ApprovalScaController.java | 3 + .../SmsAuthorizationController.java | 271 ++++++++++-------- 2 files changed, 157 insertions(+), 117 deletions(-) diff --git a/powerauth-webflow-authentication-approval-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/approvalsca/controller/ApprovalScaController.java b/powerauth-webflow-authentication-approval-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/approvalsca/controller/ApprovalScaController.java index ce02c97df..419323713 100644 --- a/powerauth-webflow-authentication-approval-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/approvalsca/controller/ApprovalScaController.java +++ b/powerauth-webflow-authentication-approval-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/approvalsca/controller/ApprovalScaController.java @@ -113,6 +113,9 @@ public ApprovalScaAuthResponse authenticateScaApproval(@RequestBody ApprovalScaA /** * Initialize SCA approval. + * @param request SCA approval initialization request. + * @throws AuthStepException In case SCA approval initialization fails. + * @throws NextStepServiceException In case communication with Next Step service fails. */ @RequestMapping(value = "/init", method = RequestMethod.POST) public ApprovalScaInitResponse initScaApproval(@RequestBody ApprovalScaInitRequest request) throws AuthStepException, NextStepServiceException { diff --git a/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java b/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java index 37f684601..ed1f978e2 100644 --- a/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java +++ b/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java @@ -28,6 +28,7 @@ import io.getlime.security.powerauth.lib.nextstep.model.enumeration.*; import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthInstrument; import io.getlime.security.powerauth.lib.nextstep.model.exception.NextStepServiceException; +import io.getlime.security.powerauth.lib.nextstep.model.response.GetOperationConfigDetailResponse; import io.getlime.security.powerauth.lib.nextstep.model.response.GetOperationDetailResponse; import io.getlime.security.powerauth.lib.nextstep.model.response.UpdateOperationResponse; import io.getlime.security.powerauth.lib.webflow.authentication.configuration.WebFlowServicesConfiguration; @@ -37,6 +38,7 @@ import io.getlime.security.powerauth.lib.webflow.authentication.exception.AuthStepException; import io.getlime.security.powerauth.lib.webflow.authentication.exception.InvalidRequestException; import io.getlime.security.powerauth.lib.webflow.authentication.exception.MaxAttemptsExceededException; +import io.getlime.security.powerauth.lib.webflow.authentication.exception.OperationNotConfiguredException; import io.getlime.security.powerauth.lib.webflow.authentication.model.AuthenticationResult; import io.getlime.security.powerauth.lib.webflow.authentication.model.HttpSessionAttributeNames; import io.getlime.security.powerauth.lib.webflow.authentication.model.converter.AuthInstrumentConverter; @@ -73,6 +75,9 @@ public class SmsAuthorizationController extends AuthMethodController objectResponse = dataAdapterClient.verifyAuthorizationSms(messageId, request.getAuthCode(), userId, organizationId, operationContext); + + String authCode = request.getAuthCode(); + AuthStepOptions authStepOptions = getAuthStepOptionsFromHttpSession(); + if (authStepOptions != null) { + // Authentication step options have been derived from AFS response + + if (!authStepOptions.isSmsOtpRequired() && !authStepOptions.isPasswordRequired()) { + // No authentication is required, approve step + cleanHttpSession(); + request.setAuthInstruments(Collections.emptyList()); + logger.info("Step authentication succeeded (NO_FA), operation ID: {}, authentication method: {}", operation.getOperationId(), authMethod.toString()); + return new AuthenticationResult(operation.getUserId(), operation.getOrganizationId()); + } else if (!authStepOptions.isPasswordRequired()) { + // Only SMS authorization is required, skip password verification + ObjectResponse objectResponse = dataAdapterClient.verifyAuthorizationSms(messageId, authCode, userId, organizationId, operationContext); VerifySmsAuthorizationResponse smsResponse = objectResponse.getResponseObject(); smsAuthorizationResult = smsResponse.getSmsAuthorizationResult(); request.setAuthInstruments(Collections.singletonList(AuthInstrument.SMS_KEY)); if (smsAuthorizationResult == SmsAuthorizationResult.SUCCEEDED) { cleanHttpSession(); - logger.info("Step authentication succeeded, operation ID: {}, authentication method: {}", operation.getOperationId(), authMethod.toString()); + logger.info("Step authentication succeeded (1FA), operation ID: {}, authentication method: {}", operation.getOperationId(), authMethod.toString()); return new AuthenticationResult(operation.getUserId(), operation.getOrganizationId()); } - remainingAttemptsDA = smsResponse.getRemainingAttempts(); - showRemainingAttempts = smsResponse.getShowRemainingAttempts(); - errorMessage = smsResponse.getErrorMessage(); - break; } + // Otherwise 2FA authentication is performed + } - case LOGIN_SCA: - case APPROVAL_SCA: { - - String authCode = request.getAuthCode(); - AuthStepOptions authStepOptions = getAuthStepOptionsFromHttpSession(); - if (authStepOptions != null) { - // Authentication step options have been derived from AFS response - - if (!authStepOptions.isSmsOtpRequired() && !authStepOptions.isPasswordRequired()) { - // No authentication is required, approve step - cleanHttpSession(); - request.setAuthInstruments(Collections.emptyList()); - logger.info("Step authentication succeeded (NO_FA), operation ID: {}, authentication method: {}", operation.getOperationId(), authMethod.toString()); - return new AuthenticationResult(operation.getUserId(), operation.getOrganizationId()); - } else if (!authStepOptions.isPasswordRequired()) { - // Only SMS authorization is required, skip password verification - ObjectResponse objectResponse = dataAdapterClient.verifyAuthorizationSms(messageId, authCode, userId, organizationId, operationContext); - VerifySmsAuthorizationResponse smsResponse = objectResponse.getResponseObject(); - smsAuthorizationResult = smsResponse.getSmsAuthorizationResult(); - request.setAuthInstruments(Collections.singletonList(AuthInstrument.SMS_KEY)); - if (smsAuthorizationResult == SmsAuthorizationResult.SUCCEEDED) { - cleanHttpSession(); - logger.info("Step authentication succeeded (1FA), operation ID: {}, authentication method: {}", operation.getOperationId(), authMethod.toString()); - return new AuthenticationResult(operation.getUserId(), operation.getOrganizationId()); - } - remainingAttemptsDA = smsResponse.getRemainingAttempts(); - showRemainingAttempts = smsResponse.getShowRemainingAttempts(); - errorMessage = smsResponse.getErrorMessage(); - break; - - } - // Otherwise 2FA authentication is performed - } - - List authInstruments = new ArrayList<>(); - authInstruments.add(AuthInstrument.SMS_KEY); - authInstruments.add(AuthInstrument.PASSWORD); - request.setAuthInstruments(authInstruments); - - PasswordProtectionType passwordProtectionType = configuration.getPasswordProtection(); - String cipherTransformation = configuration.getCipherTransformation(); - io.getlime.security.powerauth.lib.webflow.authentication.encryption.PasswordProtection passwordProtection; - switch (passwordProtectionType) { - case NO_PROTECTION: - // Password is sent in plain text - passwordProtection = new NoPasswordProtection(); - logger.info("No protection is used for protecting user password"); - break; - - case PASSWORD_ENCRYPTION_AES: - // Encrypt user password in case password encryption is configured in Web Flow - passwordProtection = new AesEncryptionPasswordProtection(cipherTransformation, configuration.getPasswordEncryptionKey()); - logger.info("User password is protected using transformation: {}", cipherTransformation); - break; - - default: - // Unsupported authentication type - throw new InvalidRequestException("Invalid authentication type"); - } + List authInstruments = new ArrayList<>(); + authInstruments.add(AuthInstrument.SMS_KEY); + authInstruments.add(AuthInstrument.PASSWORD); + request.setAuthInstruments(authInstruments); + + PasswordProtectionType passwordProtectionType = configuration.getPasswordProtection(); + String cipherTransformation = configuration.getCipherTransformation(); + io.getlime.security.powerauth.lib.webflow.authentication.encryption.PasswordProtection passwordProtection; + switch (passwordProtectionType) { + case NO_PROTECTION: + // Password is sent in plain text + passwordProtection = new NoPasswordProtection(); + logger.info("No protection is used for protecting user password"); + break; - String protectedPassword = passwordProtection.protect(request.getPassword()); - AuthenticationContext authenticationContext = new AuthenticationContext(passwordProtectionType, cipherTransformation); - ObjectResponse objectResponse = dataAdapterClient.verifyAuthorizationSmsAndPassword(messageId, authCode, userId, organizationId, protectedPassword, authenticationContext, operationContext); - VerifySmsAndPasswordResponse smsAndPasswordResponse = objectResponse.getResponseObject(); - smsAuthorizationResult = smsAndPasswordResponse.getSmsAuthorizationResult(); - if (smsAuthorizationResult == SmsAuthorizationResult.SUCCEEDED && smsAndPasswordResponse.getUserAuthenticationResult() == UserAuthenticationResult.SUCCEEDED) { - cleanHttpSession(); - logger.info("Step authentication succeeded (2FA), operation ID: {}, authentication method: {}", operation.getOperationId(), authMethod.toString()); - return new AuthenticationResult(operation.getUserId(), operation.getOrganizationId()); - } - remainingAttemptsDA = smsAndPasswordResponse.getRemainingAttempts(); - showRemainingAttempts = smsAndPasswordResponse.getShowRemainingAttempts(); - errorMessage = smsAndPasswordResponse.getErrorMessage(); + case PASSWORD_ENCRYPTION_AES: + // Encrypt user password in case password encryption is configured in Web Flow + passwordProtection = new AesEncryptionPasswordProtection(cipherTransformation, configuration.getPasswordEncryptionKey()); + logger.info("User password is protected using transformation: {}", cipherTransformation); break; - } default: - throw new InvalidRequestException("Invalid request"); + // Unsupported authentication type + throw new InvalidRequestException("Invalid authentication type"); + } + String protectedPassword = passwordProtection.protect(request.getPassword()); + AuthenticationContext authenticationContext = new AuthenticationContext(passwordProtectionType, cipherTransformation); + ObjectResponse objectResponse = dataAdapterClient.verifyAuthorizationSmsAndPassword(messageId, authCode, userId, organizationId, protectedPassword, authenticationContext, operationContext); + VerifySmsAndPasswordResponse smsAndPasswordResponse = objectResponse.getResponseObject(); + smsAuthorizationResult = smsAndPasswordResponse.getSmsAuthorizationResult(); + if (smsAuthorizationResult == SmsAuthorizationResult.SUCCEEDED && smsAndPasswordResponse.getUserAuthenticationResult() == UserAuthenticationResult.SUCCEEDED) { + cleanHttpSession(); + logger.info("Step authentication succeeded (2FA), operation ID: {}, authentication method: {}", operation.getOperationId(), authMethod.toString()); + return new AuthenticationResult(operation.getUserId(), operation.getOrganizationId()); } + remainingAttemptsDA = smsAndPasswordResponse.getRemainingAttempts(); + showRemainingAttempts = smsAndPasswordResponse.getShowRemainingAttempts(); + errorMessage = smsAndPasswordResponse.getErrorMessage(); + try { UpdateOperationResponse response = failAuthorization(operation.getOperationId(), operation.getUserId(), request.getAuthInstruments(), null); if (response.getResult() == AuthResult.FAILED) { @@ -375,35 +350,31 @@ private void cleanHttpSession() { initResponse.setUsername(username); } - if (configuration.isAfsEnabled() - && (authMethod == AuthMethod.LOGIN_SCA || authMethod == AuthMethod.APPROVAL_SCA)) { - - // Choose current AFS action - AfsAction afsAction; - if (authMethod == AuthMethod.LOGIN_SCA) { - afsAction = AfsAction.LOGIN_INIT; - } else { - afsAction = AfsAction.APPROVAL_INIT; - } - - // Execute an AFS action - AfsResponse afsResponse = afsIntegrationService.executeInitAction(operation.getOperationId(), username, afsAction); + if (configuration.isAfsEnabled()) { - // Save authentication step options derived from AFS response for authenticate step - updateAuthStepOptionsInHttpSession(afsResponse.getAuthStepOptions()); + AfsAction afsAction = determineAfsActionInit(authMethod, operation.getOperationName()); + System.out.println("AFS action: " + afsAction); - // Process AFS response - if (afsResponse.isAfsResponseApplied()) { - if (afsResponse.getAuthStepOptions() != null) { - if (!afsResponse.getAuthStepOptions().isPasswordRequired()) { - logger.debug("Disabling password verification based on AFS response in INIT step of authentication method: {}, operation ID: {}", authMethod, operation.getOperationId()); - // Step-down for password verification - initResponse.setPasswordEnabled(false); - } - if (!afsResponse.getAuthStepOptions().isSmsOtpRequired()) { - logger.debug("Disabling SMS authorization due based on AFS response in INIT step of authentication method: {}, operation ID: {}", authMethod, operation.getOperationId()); - // Step-down for SMS authorization - initResponse.setSmsOtpEnabled(false); + if (afsAction != null) { + // Execute an AFS action + AfsResponse afsResponse = afsIntegrationService.executeInitAction(operation.getOperationId(), username, afsAction); + + // Save authentication step options derived from AFS response for authenticate step + updateAuthStepOptionsInHttpSession(afsResponse.getAuthStepOptions()); + + // Process AFS response + if (afsResponse.isAfsResponseApplied()) { + if (afsResponse.getAuthStepOptions() != null) { + if (!afsResponse.getAuthStepOptions().isPasswordRequired()) { + logger.debug("Disabling password verification based on AFS response in INIT step of authentication method: {}, operation ID: {}", authMethod, operation.getOperationId()); + // Step-down for password verification + initResponse.setPasswordEnabled(false); + } + if (!afsResponse.getAuthStepOptions().isSmsOtpRequired()) { + logger.debug("Disabling SMS authorization due based on AFS response in INIT step of authentication method: {}, operation ID: {}", authMethod, operation.getOperationId()); + // Step-down for SMS authorization + initResponse.setSmsOtpEnabled(false); + } } } } @@ -500,16 +471,10 @@ private void cleanHttpSession() { // In other methods user ID is already available username = null; } - // Choose current AFS action final AfsAction afsAction; if (configuration.isAfsEnabled()) { - if (authMethod == AuthMethod.LOGIN_SCA) { - afsAction = AfsAction.LOGIN_AUTH; - } else if (authMethod == AuthMethod.APPROVAL_SCA) { - afsAction = AfsAction.APPROVAL_AUTH; - } else { - afsAction = null; - } + afsAction = determineAfsActionAuth(authMethod, operation.getOperationName()); + System.out.println("AFS action: " + afsAction); } else { afsAction = null; } @@ -641,4 +606,76 @@ private CreateSmsAuthorizationResponse sendAuthorizationSms(GetOperationDetailRe return daResponse.getResponseObject(); } + /** + * Determine AFS action during initialization. + * @param authMethod Current authentication method. + * @param operationName Operation name. + * @return AFS action. + * @throws AuthStepException In case of any failure. + */ + private AfsAction determineAfsActionInit(AuthMethod authMethod, String operationName) throws AuthStepException { + AfsAction afsAction; + switch (authMethod) { + case LOGIN_SCA: + afsAction = AfsAction.LOGIN_INIT; + break; + case APPROVAL_SCA: + afsAction = AfsAction.APPROVAL_INIT; + break; + case SMS_KEY: + GetOperationConfigDetailResponse config = getOperationConfig(operationName); + if (config == null) { + throw new OperationNotConfiguredException("Operation not configured, operation name: " + operationName); + } + if (OPERATION_CONFIG_TEMPLATE_LOGIN.equals(config.getTemplateId())) { + afsAction = AfsAction.LOGIN_INIT; + } else if (OPERATION_CONFIG_TEMPLATE_APPROVAL.equals(config.getTemplateId())) { + afsAction = AfsAction.APPROVAL_INIT; + } else { + // Unknown template, do not execute AFS action + afsAction = null; + } + break; + default: + afsAction = null; + } + return afsAction; + } + + /** + * Determine AFS action during authentication. + * @param authMethod Current authentication method. + * @param operationName Operation name. + * @return AFS action. + * @throws AuthStepException In case of any failure. + */ + private AfsAction determineAfsActionAuth(AuthMethod authMethod, String operationName) throws AuthStepException { + AfsAction afsAction; + switch (authMethod) { + case LOGIN_SCA: + afsAction = AfsAction.LOGIN_AUTH; + break; + case APPROVAL_SCA: + afsAction = AfsAction.APPROVAL_AUTH; + break; + case SMS_KEY: + GetOperationConfigDetailResponse config = getOperationConfig(operationName); + if (config == null) { + throw new OperationNotConfiguredException("Operation not configured, operation name: " + operationName); + } + if (OPERATION_CONFIG_TEMPLATE_LOGIN.equals(config.getTemplateId())) { + afsAction = AfsAction.LOGIN_AUTH; + } else if (OPERATION_CONFIG_TEMPLATE_APPROVAL.equals(config.getTemplateId())) { + afsAction = AfsAction.APPROVAL_AUTH; + } else { + // Unknown template, do not execute AFS action + afsAction = null; + } + break; + default: + afsAction = null; + } + return afsAction; + } + } From 7a19f28d0fd5fbf6d1feee60548641947070afac Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Tue, 22 Oct 2019 13:44:09 +0200 Subject: [PATCH 104/197] Fix #687: Update SCA information for OAuth tokens --- .../approvalsca/controller/ApprovalScaController.java | 9 ++++++++- .../method/loginsca/controller/LoginScaController.java | 1 + .../service/AuthenticationManagementService.java | 4 ++-- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/powerauth-webflow-authentication-approval-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/approvalsca/controller/ApprovalScaController.java b/powerauth-webflow-authentication-approval-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/approvalsca/controller/ApprovalScaController.java index 419323713..1a25110bd 100644 --- a/powerauth-webflow-authentication-approval-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/approvalsca/controller/ApprovalScaController.java +++ b/powerauth-webflow-authentication-approval-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/approvalsca/controller/ApprovalScaController.java @@ -31,6 +31,7 @@ import io.getlime.security.powerauth.lib.webflow.authentication.method.approvalsca.model.response.ApprovalScaAuthResponse; import io.getlime.security.powerauth.lib.webflow.authentication.method.approvalsca.model.response.ApprovalScaInitResponse; import io.getlime.security.powerauth.lib.webflow.authentication.service.AuthMethodQueryService; +import io.getlime.security.powerauth.lib.webflow.authentication.service.AuthenticationManagementService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -55,16 +56,19 @@ public class ApprovalScaController extends AuthMethodController Date: Tue, 22 Oct 2019 14:00:14 +0200 Subject: [PATCH 105/197] Remove debug logging --- .../sms/controller/SmsAuthorizationController.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java b/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java index ed1f978e2..d9ac4c862 100644 --- a/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java +++ b/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java @@ -353,7 +353,6 @@ private void cleanHttpSession() { if (configuration.isAfsEnabled()) { AfsAction afsAction = determineAfsActionInit(authMethod, operation.getOperationName()); - System.out.println("AFS action: " + afsAction); if (afsAction != null) { // Execute an AFS action @@ -474,7 +473,6 @@ private void cleanHttpSession() { final AfsAction afsAction; if (configuration.isAfsEnabled()) { afsAction = determineAfsActionAuth(authMethod, operation.getOperationName()); - System.out.println("AFS action: " + afsAction); } else { afsAction = null; } From 5838aa4408d9c58bf0855ab65b9c4fb5435e68ea Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Tue, 22 Oct 2019 16:16:19 +0200 Subject: [PATCH 106/197] Handling of blocking of user accounts during password verification and notification to AFS about failed authentication due to blocked user account --- .../response/UserAuthenticationResponse.java | 18 +++++ .../VerifySmsAndPasswordResponse.java | 18 +++++ .../controller/ApprovalScaController.java | 1 + .../form/controller/FormLoginController.java | 16 +++-- .../SmsAuthorizationController.java | 38 +++++----- .../exception/AuthStepException.java | 1 + .../AuthenticationFailedException.java | 72 +++++++++++++++++++ 7 files changed, 140 insertions(+), 24 deletions(-) create mode 100644 powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/exception/AuthenticationFailedException.java diff --git a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/response/UserAuthenticationResponse.java b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/response/UserAuthenticationResponse.java index ca2f104df..4fa0c370f 100644 --- a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/response/UserAuthenticationResponse.java +++ b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/response/UserAuthenticationResponse.java @@ -30,6 +30,7 @@ public class UserAuthenticationResponse { private String errorMessage; private Integer remainingAttempts; private boolean showRemainingAttempts; + private boolean userAccountBlocked; /** * Default constructor. @@ -126,4 +127,21 @@ public boolean getShowRemainingAttempts() { public void setShowRemainingAttempts(boolean showRemainingAttempts) { this.showRemainingAttempts = showRemainingAttempts; } + + /** + * Get whether user account is blocked. + * @return Whether user account is blocked. + */ + public boolean isUserAccountBlocked() { + return userAccountBlocked; + } + + /** + * Set whether user account is blocked. + * @param userAccountBlocked Whether user account is blocked. + */ + public void setUserAccountBlocked(boolean userAccountBlocked) { + this.userAccountBlocked = userAccountBlocked; + } + } diff --git a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/response/VerifySmsAndPasswordResponse.java b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/response/VerifySmsAndPasswordResponse.java index b375826d6..9ca71dbd3 100644 --- a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/response/VerifySmsAndPasswordResponse.java +++ b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/response/VerifySmsAndPasswordResponse.java @@ -30,6 +30,7 @@ public class VerifySmsAndPasswordResponse { private String errorMessage; private Integer remainingAttempts; private boolean showRemainingAttempts; + private boolean userAccountBlocked; /** * Default constructor. @@ -126,4 +127,21 @@ public boolean getShowRemainingAttempts() { public void setShowRemainingAttempts(boolean showRemainingAttempts) { this.showRemainingAttempts = showRemainingAttempts; } + + /** + * Get whether user account is blocked. + * @return Whether user account is blocked. + */ + public boolean isUserAccountBlocked() { + return userAccountBlocked; + } + + /** + * Set whether user account is blocked. + * @param userAccountBlocked Whether user account is blocked. + */ + public void setUserAccountBlocked(boolean userAccountBlocked) { + this.userAccountBlocked = userAccountBlocked; + } + } diff --git a/powerauth-webflow-authentication-approval-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/approvalsca/controller/ApprovalScaController.java b/powerauth-webflow-authentication-approval-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/approvalsca/controller/ApprovalScaController.java index 1a25110bd..de2e0510b 100644 --- a/powerauth-webflow-authentication-approval-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/approvalsca/controller/ApprovalScaController.java +++ b/powerauth-webflow-authentication-approval-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/approvalsca/controller/ApprovalScaController.java @@ -121,6 +121,7 @@ public ApprovalScaAuthResponse authenticateScaApproval(@RequestBody ApprovalScaA /** * Initialize SCA approval. * @param request SCA approval initialization request. + * @return SCA approval initialization response. * @throws AuthStepException In case SCA approval initialization fails. * @throws NextStepServiceException In case communication with Next Step service fails. */ diff --git a/powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/controller/FormLoginController.java b/powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/controller/FormLoginController.java index 30da4dcd1..6bb79cf30 100644 --- a/powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/controller/FormLoginController.java +++ b/powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/controller/FormLoginController.java @@ -45,6 +45,7 @@ import io.getlime.security.powerauth.lib.webflow.authentication.encryption.NoPasswordProtection; import io.getlime.security.powerauth.lib.webflow.authentication.encryption.PasswordProtection; import io.getlime.security.powerauth.lib.webflow.authentication.exception.AuthStepException; +import io.getlime.security.powerauth.lib.webflow.authentication.exception.AuthenticationFailedException; import io.getlime.security.powerauth.lib.webflow.authentication.exception.CommunicationFailedException; import io.getlime.security.powerauth.lib.webflow.authentication.exception.MaxAttemptsExceededException; import io.getlime.security.powerauth.lib.webflow.authentication.method.form.model.request.PrepareLoginFormDataRequest; @@ -161,17 +162,20 @@ protected AuthenticationResult authenticate(UsernamePasswordAuthenticationReques throw new MaxAttemptsExceededException("Maximum number of authentication attempts exceeded"); } } - if (authResponse.getShowRemainingAttempts()) { + Integer remainingAttemptsDA = authResponse.getRemainingAttempts(); + boolean showRemainingAttempts = authResponse.getShowRemainingAttempts(); + String errorMessage = authResponse.getErrorMessage(); + boolean userAccountBlocked = authResponse.isUserAccountBlocked(); + + AuthenticationFailedException authEx = new AuthenticationFailedException("Authentication failed", errorMessage); + if (showRemainingAttempts) { GetOperationDetailResponse updatedOperation = getOperation(); Integer remainingAttemptsNS = updatedOperation.getRemainingAttempts(); - AuthStepException authEx = new AuthStepException("User authentication failed", authResponse.getErrorMessage()); - Integer remainingAttemptsDA = authResponse.getRemainingAttempts(); Integer remainingAttempts = resolveRemainingAttempts(remainingAttemptsDA, remainingAttemptsNS); authEx.setRemainingAttempts(remainingAttempts); - throw authEx; - } else { - throw new AuthStepException("User authentication failed", authResponse.getErrorMessage()); } + authEx.setUserAccountBlocked(userAccountBlocked); + throw authEx; } } catch (NextStepServiceException e) { logger.error("Error occurred in Next Step server", e); diff --git a/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java b/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java index d9ac4c862..f3995ef57 100644 --- a/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java +++ b/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java @@ -35,10 +35,7 @@ import io.getlime.security.powerauth.lib.webflow.authentication.controller.AuthMethodController; import io.getlime.security.powerauth.lib.webflow.authentication.encryption.AesEncryptionPasswordProtection; import io.getlime.security.powerauth.lib.webflow.authentication.encryption.NoPasswordProtection; -import io.getlime.security.powerauth.lib.webflow.authentication.exception.AuthStepException; -import io.getlime.security.powerauth.lib.webflow.authentication.exception.InvalidRequestException; -import io.getlime.security.powerauth.lib.webflow.authentication.exception.MaxAttemptsExceededException; -import io.getlime.security.powerauth.lib.webflow.authentication.exception.OperationNotConfiguredException; +import io.getlime.security.powerauth.lib.webflow.authentication.exception.*; import io.getlime.security.powerauth.lib.webflow.authentication.model.AuthenticationResult; import io.getlime.security.powerauth.lib.webflow.authentication.model.HttpSessionAttributeNames; import io.getlime.security.powerauth.lib.webflow.authentication.model.converter.AuthInstrumentConverter; @@ -125,9 +122,6 @@ protected AuthenticationResult authenticate(SmsAuthorizationRequest request) thr ApplicationContext applicationContext = operation.getApplicationContext(); OperationContext operationContext = new OperationContext(operationId, operationName, operationData, formData, applicationContext); SmsAuthorizationResult smsAuthorizationResult; - Integer remainingAttemptsDA; - boolean showRemainingAttempts; - String errorMessage; String authCode = request.getAuthCode(); AuthStepOptions authStepOptions = getAuthStepOptionsFromHttpSession(); @@ -191,9 +185,11 @@ protected AuthenticationResult authenticate(SmsAuthorizationRequest request) thr logger.info("Step authentication succeeded (2FA), operation ID: {}, authentication method: {}", operation.getOperationId(), authMethod.toString()); return new AuthenticationResult(operation.getUserId(), operation.getOrganizationId()); } - remainingAttemptsDA = smsAndPasswordResponse.getRemainingAttempts(); - showRemainingAttempts = smsAndPasswordResponse.getShowRemainingAttempts(); - errorMessage = smsAndPasswordResponse.getErrorMessage(); + + Integer remainingAttemptsDA = smsAndPasswordResponse.getRemainingAttempts(); + boolean showRemainingAttempts = smsAndPasswordResponse.getShowRemainingAttempts(); + String errorMessage = smsAndPasswordResponse.getErrorMessage(); + boolean userAccountBlocked = smsAndPasswordResponse.isUserAccountBlocked(); try { UpdateOperationResponse response = failAuthorization(operation.getOperationId(), operation.getUserId(), request.getAuthInstruments(), null); @@ -202,16 +198,15 @@ protected AuthenticationResult authenticate(SmsAuthorizationRequest request) thr // FAILED result instead of CONTINUE means the authentication method is failed throw new MaxAttemptsExceededException("Maximum number of authentication attempts exceeded"); } + AuthenticationFailedException authEx = new AuthenticationFailedException("Authentication failed", errorMessage); if (showRemainingAttempts) { GetOperationDetailResponse updatedOperation = getOperation(); Integer remainingAttemptsNS = updatedOperation.getRemainingAttempts(); - AuthStepException authEx = new AuthStepException("SMS authorization failed", errorMessage); Integer remainingAttempts = resolveRemainingAttempts(remainingAttemptsDA, remainingAttemptsNS); authEx.setRemainingAttempts(remainingAttempts); - throw authEx; - } else { - throw new AuthStepException("SMS authorization failed", errorMessage); } + authEx.setUserAccountBlocked(userAccountBlocked); + throw authEx; } catch (NextStepServiceException e) { logger.error("Error occurred in Next Step server", e); throw new AuthStepException(e.getError().getMessage(), e, "error.communication"); @@ -522,13 +517,20 @@ public SmsAuthorizationResponse continueAuthentication(String operationId, Strin logger.warn("Error occurred while verifying authorization code from SMS message: {}", e.getMessage()); if (afsAction != null) { final List authInstruments = authInstrumentConverter.fromAuthInstruments(request.getAuthInstruments()); - if (e instanceof MaxAttemptsExceededException) { - // notify AFS about failed authentication method + if (e instanceof AuthenticationFailedException) { + AuthenticationFailedException authEx = (AuthenticationFailedException) e; + if (authEx.isUserAccountBlocked()) { + // notify AFS about failed authentication method due to the fact that user account is blocked + afsIntegrationService.executeAuthAction(operation.getOperationId(), afsAction, username, authInstruments, AuthStepResult.AUTH_METHOD_FAILED); + } else { + // notify AFS about failed authentication + afsIntegrationService.executeAuthAction(operation.getOperationId(), afsAction, username, authInstruments, AuthStepResult.AUTH_FAILED); + } + } else if (e instanceof MaxAttemptsExceededException) { + // notify AFS about failed authentication method due to last attempt afsIntegrationService.executeAuthAction(operation.getOperationId(), afsAction, username, authInstruments, AuthStepResult.AUTH_METHOD_FAILED); // notify AFS about logout afsIntegrationService.executeLogoutAction(operation.getOperationId(), OperationTerminationReason.FAILED); - } else { - afsIntegrationService.executeAuthAction(operation.getOperationId(), afsAction, username, authInstruments, AuthStepResult.AUTH_FAILED); } } final SmsAuthorizationResponse response = new SmsAuthorizationResponse(); diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/exception/AuthStepException.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/exception/AuthStepException.java index a6bf1df76..55445e274 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/exception/AuthStepException.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/exception/AuthStepException.java @@ -58,6 +58,7 @@ public AuthStepException(String message, Throwable cause, String messageId) { super(message, cause); this.messageId = messageId; } + /** * Get number of remaining authentication attempts. * @return Number of remaining attempts. diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/exception/AuthenticationFailedException.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/exception/AuthenticationFailedException.java new file mode 100644 index 000000000..da4c69e4e --- /dev/null +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/exception/AuthenticationFailedException.java @@ -0,0 +1,72 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.getlime.security.powerauth.lib.webflow.authentication.exception; + +/** + * Exception thrown in case user authentication fails. + */ +public class AuthenticationFailedException extends AuthStepException { + + private boolean userAccountBlocked; + + /** + * Constructor with message and message ID. + * + * @param message Error message. + * @param messageId Error message localization key. + */ + public AuthenticationFailedException(String message, String messageId) { + super(message, messageId); + } + + /** + * Constructor with message and cause. + * + * @param message Error message. + * @param cause Error cause (original exception, if any). + */ + public AuthenticationFailedException(String message, Throwable cause) { + super(message, cause); + } + + /** + * Constructor with message, cause and message ID. + * + * @param message Error message. + * @param cause Error cause (original exception, if any). + * @param messageId Error message localization key. + */ + public AuthenticationFailedException(String message, Throwable cause, String messageId) { + super(message, cause, messageId); + } + + /** + * Get whether user account is blocked. + * @return Whether user account is blocked. + */ + public boolean isUserAccountBlocked() { + return userAccountBlocked; + } + + /** + * Set whether user account is blocked. + * @param userAccountBlocked Whether user account is blocked. + */ + public void setUserAccountBlocked(boolean userAccountBlocked) { + this.userAccountBlocked = userAccountBlocked; + } + +} From 857fb0a4136f3773a4075de71cf512c898060a26 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Tue, 22 Oct 2019 17:29:06 +0200 Subject: [PATCH 107/197] Integrate AFS into non-SCA login --- .../form/controller/FormLoginController.java | 131 +++++++++++++----- ....java => UsernamePasswordAuthRequest.java} | 2 +- ....java => UsernamePasswordInitRequest.java} | 2 +- ...java => UsernamePasswordAuthResponse.java} | 2 +- ...java => UsernamePasswordInitResponse.java} | 2 +- .../js/actions/usernamePasswordAuthActions.js | 4 +- .../src/main/js/components/login.js | 4 +- 7 files changed, 108 insertions(+), 39 deletions(-) rename powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/model/request/{UsernamePasswordAuthenticationRequest.java => UsernamePasswordAuthRequest.java} (96%) rename powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/model/request/{PrepareLoginFormDataRequest.java => UsernamePasswordInitRequest.java} (94%) rename powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/model/response/{UsernamePasswordAuthenticationResponse.java => UsernamePasswordAuthResponse.java} (91%) rename powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/model/response/{PrepareLoginFormDataResponse.java => UsernamePasswordInitResponse.java} (97%) diff --git a/powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/controller/FormLoginController.java b/powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/controller/FormLoginController.java index 6bb79cf30..31cb81ead 100644 --- a/powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/controller/FormLoginController.java +++ b/powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/controller/FormLoginController.java @@ -22,12 +22,11 @@ import io.getlime.security.powerauth.lib.dataadapter.model.entity.AuthenticationContext; import io.getlime.security.powerauth.lib.dataadapter.model.entity.FormData; import io.getlime.security.powerauth.lib.dataadapter.model.entity.OperationContext; -import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.AccountStatus; -import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.PasswordProtectionType; -import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.UserAuthenticationResult; +import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.*; import io.getlime.security.powerauth.lib.dataadapter.model.response.UserAuthenticationResponse; import io.getlime.security.powerauth.lib.dataadapter.model.response.UserDetailResponse; import io.getlime.security.powerauth.lib.nextstep.client.NextStepClient; +import io.getlime.security.powerauth.lib.nextstep.model.entity.AfsActionDetail; import io.getlime.security.powerauth.lib.nextstep.model.entity.ApplicationContext; import io.getlime.security.powerauth.lib.nextstep.model.entity.AuthStep; import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthMethod; @@ -48,15 +47,17 @@ import io.getlime.security.powerauth.lib.webflow.authentication.exception.AuthenticationFailedException; import io.getlime.security.powerauth.lib.webflow.authentication.exception.CommunicationFailedException; import io.getlime.security.powerauth.lib.webflow.authentication.exception.MaxAttemptsExceededException; -import io.getlime.security.powerauth.lib.webflow.authentication.method.form.model.request.PrepareLoginFormDataRequest; -import io.getlime.security.powerauth.lib.webflow.authentication.method.form.model.request.UsernamePasswordAuthenticationRequest; -import io.getlime.security.powerauth.lib.webflow.authentication.method.form.model.response.PrepareLoginFormDataResponse; -import io.getlime.security.powerauth.lib.webflow.authentication.method.form.model.response.UsernamePasswordAuthenticationResponse; +import io.getlime.security.powerauth.lib.webflow.authentication.method.form.model.request.UsernamePasswordInitRequest; +import io.getlime.security.powerauth.lib.webflow.authentication.method.form.model.request.UsernamePasswordAuthRequest; +import io.getlime.security.powerauth.lib.webflow.authentication.method.form.model.response.UsernamePasswordInitResponse; +import io.getlime.security.powerauth.lib.webflow.authentication.method.form.model.response.UsernamePasswordAuthResponse; import io.getlime.security.powerauth.lib.webflow.authentication.model.AuthenticationResult; import io.getlime.security.powerauth.lib.webflow.authentication.model.OrganizationDetail; +import io.getlime.security.powerauth.lib.webflow.authentication.model.converter.AuthInstrumentConverter; import io.getlime.security.powerauth.lib.webflow.authentication.model.converter.FormDataConverter; import io.getlime.security.powerauth.lib.webflow.authentication.model.converter.OrganizationConverter; import io.getlime.security.powerauth.lib.webflow.authentication.model.converter.UserAccountStatusConverter; +import io.getlime.security.powerauth.lib.webflow.authentication.service.AfsIntegrationService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -75,28 +76,32 @@ */ @Controller @RequestMapping(value = "/api/auth/form") -public class FormLoginController extends AuthMethodController { +public class FormLoginController extends AuthMethodController { private static final Logger logger = LoggerFactory.getLogger(FormLoginController.class); private final DataAdapterClient dataAdapterClient; private final NextStepClient nextStepClient; private final WebFlowServicesConfiguration configuration; + private final AfsIntegrationService afsIntegrationService; private final OrganizationConverter organizationConverter = new OrganizationConverter(); private final UserAccountStatusConverter statusConverter = new UserAccountStatusConverter(); + private final AuthInstrumentConverter authInstrumentConverter = new AuthInstrumentConverter(); /** * Controller constructor. * @param dataAdapterClient Data Adapter client. * @param nextStepClient Next Step client. * @param configuration Web Flow configuration. + * @param afsIntegrationService AFS integration service. */ @Autowired - public FormLoginController(DataAdapterClient dataAdapterClient, NextStepClient nextStepClient, WebFlowServicesConfiguration configuration) { + public FormLoginController(DataAdapterClient dataAdapterClient, NextStepClient nextStepClient, WebFlowServicesConfiguration configuration, AfsIntegrationService afsIntegrationService) { this.dataAdapterClient = dataAdapterClient; this.nextStepClient = nextStepClient; this.configuration = configuration; + this.afsIntegrationService = afsIntegrationService; } /** @@ -106,16 +111,29 @@ public FormLoginController(DataAdapterClient dataAdapterClient, NextStepClient n * @throws AuthStepException Thrown when authentication fails. */ @Override - protected AuthenticationResult authenticate(UsernamePasswordAuthenticationRequest request) throws AuthStepException { + protected AuthenticationResult authenticate(UsernamePasswordAuthRequest request) throws AuthStepException { GetOperationDetailResponse operation = getOperation(); logger.info("Step authentication started, operation ID: {}, authentication method: {}", operation.getOperationId(), getAuthMethodName().toString()); checkOperationExpiration(operation); + try { FormData formData = new FormDataConverter().fromOperationFormData(operation.getFormData()); ApplicationContext applicationContext = operation.getApplicationContext(); OperationContext operationContext = new OperationContext(operation.getOperationId(), operation.getOperationName(), operation.getOperationData(), formData, applicationContext); ObjectResponse lookupResponse = dataAdapterClient.lookupUser(request.getUsername(), request.getOrganizationId(), operationContext); + String userId = lookupResponse.getResponseObject().getId(); + String organizationId = lookupResponse.getResponseObject().getOrganizationId(); + AccountStatus accountStatus = lookupResponse.getResponseObject().getAccountStatus(); + + nextStepClient.updateOperationUser(operation.getOperationId(), userId, organizationId, statusConverter.fromAccountStatus(accountStatus)); + if (configuration.isAfsEnabled() && !afsLoginAuthAlreadyExecuted(operation)) { + // Trigger LOGIN_INIT action for the first time + AfsAction afsAction = AfsAction.LOGIN_INIT; + afsIntegrationService.executeInitAction(operation.getOperationId(), request.getUsername(), afsAction); + // Currently the AFS call is only informational, there is no step-down implemented + } + PasswordProtectionType passwordProtectionType = configuration.getPasswordProtection(); String cipherTransformation = configuration.getCipherTransformation(); PasswordProtection passwordProtection; @@ -138,9 +156,6 @@ protected AuthenticationResult authenticate(UsernamePasswordAuthenticationReques } String protectedPassword = passwordProtection.protect(request.getPassword()); - String userId = lookupResponse.getResponseObject().getId(); - String organizationId = lookupResponse.getResponseObject().getOrganizationId(); - AccountStatus accountStatus = lookupResponse.getResponseObject().getAccountStatus(); if (accountStatus != AccountStatus.ACTIVE) { throw new AuthStepException("User authentication failed", "login.authenticationFailed"); @@ -151,7 +166,6 @@ protected AuthenticationResult authenticate(UsernamePasswordAuthenticationReques ObjectResponse objectResponse = dataAdapterClient.authenticateUser(userId, organizationId, protectedPassword, authenticationContext, operationContext); UserAuthenticationResponse authResponse = objectResponse.getResponseObject(); if (authResponse.getAuthenticationResult() == UserAuthenticationResult.SUCCEEDED) { - nextStepClient.updateOperationUser(operation.getOperationId(), userId, organizationId, statusConverter.fromAccountStatus(accountStatus)); logger.info("Step authentication succeeded, operation ID: {}, user ID: {}, authentication method: {}", operation.getOperationId(), authResponse.getUserDetail().getId(), getAuthMethodName().toString()); return new AuthenticationResult(authResponse.getUserDetail().getId(), authResponse.getUserDetail().getOrganizationId()); } else { @@ -201,14 +215,27 @@ protected AuthMethod getAuthMethodName() { * @return Authentication response. */ @RequestMapping(value = "/authenticate", method = RequestMethod.POST) - public @ResponseBody UsernamePasswordAuthenticationResponse authenticateHandler(@RequestBody UsernamePasswordAuthenticationRequest request) { + public @ResponseBody UsernamePasswordAuthResponse authenticateHandler(@RequestBody UsernamePasswordAuthRequest request) throws AuthStepException { + final GetOperationDetailResponse operation = getOperation(); + final String username = request.getUsername(); + final AfsAction afsAction; + if (configuration.isAfsEnabled()) { + afsAction = AfsAction.LOGIN_AUTH; + } else { + afsAction = null; + } try { return buildAuthorizationResponse(request, new AuthResponseProvider() { + final List authInstruments = authInstrumentConverter.fromAuthInstruments(request.getAuthInstruments()); + @Override - public UsernamePasswordAuthenticationResponse doneAuthentication(String userId) { + public UsernamePasswordAuthResponse doneAuthentication(String userId) { + if (afsAction != null) { + afsIntegrationService.executeAuthAction(operation.getOperationId(), afsAction, username, authInstruments, AuthStepResult.CONFIRMED); + } authenticateCurrentBrowserSession(); - final UsernamePasswordAuthenticationResponse response = new UsernamePasswordAuthenticationResponse(); + final UsernamePasswordAuthResponse response = new UsernamePasswordAuthResponse(); response.setResult(AuthStepResult.CONFIRMED); response.setMessage("authentication.success"); logger.info("Step result: CONFIRMED, authentication method: {}", getAuthMethodName().toString()); @@ -216,9 +243,9 @@ public UsernamePasswordAuthenticationResponse doneAuthentication(String userId) } @Override - public UsernamePasswordAuthenticationResponse failedAuthentication(String userId, String failedReason) { + public UsernamePasswordAuthResponse failedAuthentication(String userId, String failedReason) { clearCurrentBrowserSession(); - final UsernamePasswordAuthenticationResponse response = new UsernamePasswordAuthenticationResponse(); + final UsernamePasswordAuthResponse response = new UsernamePasswordAuthResponse(); response.setResult(AuthStepResult.AUTH_FAILED); response.setMessage(failedReason); logger.info("Step result: AUTH_FAILED, authentication method: {}", getAuthMethodName().toString()); @@ -226,8 +253,11 @@ public UsernamePasswordAuthenticationResponse failedAuthentication(String userId } @Override - public UsernamePasswordAuthenticationResponse continueAuthentication(String operationId, String userId, List steps) { - final UsernamePasswordAuthenticationResponse response = new UsernamePasswordAuthenticationResponse(); + public UsernamePasswordAuthResponse continueAuthentication(String operationId, String userId, List steps) { + if (afsAction != null) { + afsIntegrationService.executeAuthAction(operation.getOperationId(), afsAction, username, authInstruments, AuthStepResult.CONFIRMED); + } + final UsernamePasswordAuthResponse response = new UsernamePasswordAuthResponse(); response.setResult(AuthStepResult.CONFIRMED); response.setMessage("authentication.success"); response.getNext().addAll(steps); @@ -237,7 +267,25 @@ public UsernamePasswordAuthenticationResponse continueAuthentication(String oper }); } catch (AuthStepException e) { logger.warn("Error occurred while authenticating user: {}", e.getMessage()); - final UsernamePasswordAuthenticationResponse response = new UsernamePasswordAuthenticationResponse(); + if (afsAction != null) { + final List authInstruments = authInstrumentConverter.fromAuthInstruments(request.getAuthInstruments()); + if (e instanceof AuthenticationFailedException) { + AuthenticationFailedException authEx = (AuthenticationFailedException) e; + if (authEx.isUserAccountBlocked()) { + // notify AFS about failed authentication method due to the fact that user account is blocked + afsIntegrationService.executeAuthAction(operation.getOperationId(), afsAction, username, authInstruments, AuthStepResult.AUTH_METHOD_FAILED); + } else { + // notify AFS about failed authentication + afsIntegrationService.executeAuthAction(operation.getOperationId(), afsAction, username, authInstruments, AuthStepResult.AUTH_FAILED); + } + } else if (e instanceof MaxAttemptsExceededException) { + // notify AFS about failed authentication method due to last attempt + afsIntegrationService.executeAuthAction(operation.getOperationId(), afsAction, username, authInstruments, AuthStepResult.AUTH_METHOD_FAILED); + // notify AFS about logout + afsIntegrationService.executeLogoutAction(operation.getOperationId(), OperationTerminationReason.FAILED); + } + } + final UsernamePasswordAuthResponse response = new UsernamePasswordAuthResponse(); response.setResult(AuthStepResult.AUTH_FAILED); logger.info("Step result: AUTH_FAILED, authentication method: {}", getAuthMethodName().toString()); if (e.getMessageId() != null) { @@ -258,18 +306,19 @@ public UsernamePasswordAuthenticationResponse continueAuthentication(String oper * @throws AuthStepException Thrown when operation could not be canceled. */ @RequestMapping(value = "/cancel", method = RequestMethod.POST) - public @ResponseBody UsernamePasswordAuthenticationResponse cancelAuthentication() throws AuthStepException { + public @ResponseBody + UsernamePasswordAuthResponse cancelAuthentication() throws AuthStepException { try { final GetOperationDetailResponse operation = getOperation(); cancelAuthorization(operation.getOperationId(), operation.getUserId(), OperationCancelReason.UNKNOWN, null); - final UsernamePasswordAuthenticationResponse response = new UsernamePasswordAuthenticationResponse(); + final UsernamePasswordAuthResponse response = new UsernamePasswordAuthResponse(); response.setResult(AuthStepResult.CANCELED); response.setMessage("operation.canceled"); logger.info("Step result: CANCELED, operation ID: {}, authentication method: {}", operation.getOperationId(), getAuthMethodName().toString()); return response; } catch (NextStepServiceException e) { logger.error("Error occurred in Next Step server", e); - final UsernamePasswordAuthenticationResponse response = new UsernamePasswordAuthenticationResponse(); + final UsernamePasswordAuthResponse response = new UsernamePasswordAuthResponse(); response.setResult(AuthStepResult.AUTH_FAILED); response.setMessage("error.communication"); logger.info("Step result: AUTH_FAILED, authentication method: {}", getAuthMethodName().toString()); @@ -283,13 +332,16 @@ public UsernamePasswordAuthenticationResponse continueAuthentication(String oper * @return Prepare login form response. * @throws AuthStepException Thrown when request is invalid or communication with Next Step fails. */ - @RequestMapping(value = "/setup", method = RequestMethod.POST) - public @ResponseBody PrepareLoginFormDataResponse prepareLoginForm(@RequestBody PrepareLoginFormDataRequest request) throws AuthStepException { + @RequestMapping(value = "/init", method = RequestMethod.POST) + public @ResponseBody + UsernamePasswordInitResponse initLoginForm(@RequestBody UsernamePasswordInitRequest request) throws AuthStepException { if (request == null) { - throw new AuthStepException("Invalid request in prepareLoginForm", "error.invalidRequest"); + throw new AuthStepException("Invalid request", "error.invalidRequest"); } - logger.info("Prepare login form data started"); - final PrepareLoginFormDataResponse response = new PrepareLoginFormDataResponse(); + final GetOperationDetailResponse operation = getOperation(); + logger.info("Init step started, operation ID: {}, authentication method: {}", operation.getOperationId(), getAuthMethodName().toString()); + checkOperationExpiration(operation); + final UsernamePasswordInitResponse response = new UsernamePasswordInitResponse(); try { ObjectResponse nsObjectResponse = nextStepClient.getOrganizationList(); List nsResponseList = nsObjectResponse.getResponseObject().getOrganizations(); @@ -300,7 +352,24 @@ public UsernamePasswordAuthenticationResponse continueAuthentication(String oper } catch (NextStepServiceException e) { throw new CommunicationFailedException("Organization is not available"); } - logger.info("Prepare login form data succeeded"); + logger.debug("Init step succeeded, operation ID: {}, authentication method: {}", operation.getOperationId(), getAuthMethodName().toString()); return response; } + + /** + * Determine whether LOGIN_AUTH action was already executed. + * @param operation Operation. + * @return Whether LOGIN_AUTH action was already executed. + */ + private boolean afsLoginAuthAlreadyExecuted(GetOperationDetailResponse operation) { + if (operation.getAfsActions().isEmpty()) { + return false; + } + for (AfsActionDetail detail: operation.getAfsActions()) { + if (AfsAction.LOGIN_AUTH.toString().equals(detail.getAction())) { + return true; + } + } + return false; + } } diff --git a/powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/model/request/UsernamePasswordAuthenticationRequest.java b/powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/model/request/UsernamePasswordAuthRequest.java similarity index 96% rename from powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/model/request/UsernamePasswordAuthenticationRequest.java rename to powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/model/request/UsernamePasswordAuthRequest.java index f73f3be90..1ef643cf4 100644 --- a/powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/model/request/UsernamePasswordAuthenticationRequest.java +++ b/powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/model/request/UsernamePasswordAuthRequest.java @@ -26,7 +26,7 @@ * * @author Roman Strobl, roman.strobl@wultra.com */ -public class UsernamePasswordAuthenticationRequest extends AuthStepRequest { +public class UsernamePasswordAuthRequest extends AuthStepRequest { private String username; private String password; diff --git a/powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/model/request/PrepareLoginFormDataRequest.java b/powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/model/request/UsernamePasswordInitRequest.java similarity index 94% rename from powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/model/request/PrepareLoginFormDataRequest.java rename to powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/model/request/UsernamePasswordInitRequest.java index a8679f219..5da5140f7 100644 --- a/powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/model/request/PrepareLoginFormDataRequest.java +++ b/powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/model/request/UsernamePasswordInitRequest.java @@ -20,6 +20,6 @@ * * @author Roman Strobl, roman.strobl@wultra.com */ -public class PrepareLoginFormDataRequest { +public class UsernamePasswordInitRequest { } diff --git a/powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/model/response/UsernamePasswordAuthenticationResponse.java b/powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/model/response/UsernamePasswordAuthResponse.java similarity index 91% rename from powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/model/response/UsernamePasswordAuthenticationResponse.java rename to powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/model/response/UsernamePasswordAuthResponse.java index dfb48d2fe..28859dd5b 100644 --- a/powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/model/response/UsernamePasswordAuthenticationResponse.java +++ b/powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/model/response/UsernamePasswordAuthResponse.java @@ -22,6 +22,6 @@ * * @author Roman Strobl, roman.strobl@wultra.com */ -public class UsernamePasswordAuthenticationResponse extends AuthStepResponse { +public class UsernamePasswordAuthResponse extends AuthStepResponse { } diff --git a/powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/model/response/PrepareLoginFormDataResponse.java b/powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/model/response/UsernamePasswordInitResponse.java similarity index 97% rename from powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/model/response/PrepareLoginFormDataResponse.java rename to powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/model/response/UsernamePasswordInitResponse.java index 3dafa09df..731846606 100644 --- a/powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/model/response/PrepareLoginFormDataResponse.java +++ b/powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/model/response/UsernamePasswordInitResponse.java @@ -25,7 +25,7 @@ * * @author Roman Strobl, roman.strobl@wultra.com */ -public class PrepareLoginFormDataResponse { +public class UsernamePasswordInitResponse { private List organizations = new ArrayList<>(); diff --git a/powerauth-webflow/src/main/js/actions/usernamePasswordAuthActions.js b/powerauth-webflow/src/main/js/actions/usernamePasswordAuthActions.js index 56c3e8409..59ec59a9d 100644 --- a/powerauth-webflow/src/main/js/actions/usernamePasswordAuthActions.js +++ b/powerauth-webflow/src/main/js/actions/usernamePasswordAuthActions.js @@ -108,7 +108,7 @@ export function cancel() { } } -export function getOrganizationList() { +export function init() { return function (dispatch) { dispatch({ type: "SHOW_SCREEN_LOGIN", @@ -118,7 +118,7 @@ export function getOrganizationList() { message: "" } }); - axios.post("./api/auth/form/setup", {}).then((response) => { + axios.post("./api/auth/form/init", {}).then((response) => { dispatch({ type: "SHOW_SCREEN_LOGIN", payload: response.data diff --git a/powerauth-webflow/src/main/js/components/login.js b/powerauth-webflow/src/main/js/components/login.js index 02e4a3e83..74e19cc05 100644 --- a/powerauth-webflow/src/main/js/components/login.js +++ b/powerauth-webflow/src/main/js/components/login.js @@ -18,9 +18,9 @@ import ReactDOM from 'react-dom'; import {connect} from 'react-redux'; // Actions import { + init, authenticate, cancel, - getOrganizationList, organizationConfigurationError, selectOrganization } from '../actions/usernamePasswordAuthActions' @@ -51,7 +51,7 @@ export default class Login extends React.Component { } componentWillMount() { - this.props.dispatch(getOrganizationList()); + this.props.dispatch(init()); } handleLogin(event) { From fb31d17324ce064e519e66a95b8cb878057bbb94 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Tue, 22 Oct 2019 18:20:15 +0200 Subject: [PATCH 108/197] Propagate account status into SMS verification --- .../dataadapter/client/DataAdapterClient.java | 10 ++++--- .../request/VerifySmsAndPasswordRequest.java | 26 ++++++++++++++++++- .../VerifySmsAuthorizationRequest.java | 26 ++++++++++++++++++- .../form/controller/FormLoginController.java | 1 + .../SmsAuthorizationController.java | 5 ++-- 5 files changed, 60 insertions(+), 8 deletions(-) diff --git a/powerauth-data-adapter-client/src/main/java/io/getlime/security/powerauth/lib/dataadapter/client/DataAdapterClient.java b/powerauth-data-adapter-client/src/main/java/io/getlime/security/powerauth/lib/dataadapter/client/DataAdapterClient.java index e0612b517..0e9411ac1 100644 --- a/powerauth-data-adapter-client/src/main/java/io/getlime/security/powerauth/lib/dataadapter/client/DataAdapterClient.java +++ b/powerauth-data-adapter-client/src/main/java/io/getlime/security/powerauth/lib/dataadapter/client/DataAdapterClient.java @@ -215,13 +215,14 @@ public ObjectResponse createAuthorizationSms(Str * @param authorizationCode User entered authorization code. * @param userId User ID. * @param organizationId Organization ID. + * @param accountStatus User account status. * @param operationContext Operation context. * @return Empty response returned when action succeeds. * @throws DataAdapterClientErrorException Thrown when client request fails or SMS code authorization fails. */ - public ObjectResponse verifyAuthorizationSms(String messageId, String authorizationCode, String userId, String organizationId, OperationContext operationContext) throws DataAdapterClientErrorException { + public ObjectResponse verifyAuthorizationSms(String messageId, String authorizationCode, String userId, String organizationId, AccountStatus accountStatus, OperationContext operationContext) throws DataAdapterClientErrorException { try { - VerifySmsAuthorizationRequest request = new VerifySmsAuthorizationRequest(messageId, authorizationCode, userId, organizationId, operationContext); + VerifySmsAuthorizationRequest request = new VerifySmsAuthorizationRequest(messageId, authorizationCode, userId, organizationId, accountStatus, operationContext); HttpEntity> entity = new HttpEntity<>(new ObjectRequest<>(request)); ResponseEntity> response = restTemplate.exchange(serviceUrl + "/api/auth/sms/verify", HttpMethod.POST, entity, new ParameterizedTypeReference>() { }); @@ -241,14 +242,15 @@ public ObjectResponse verifyAuthorizationSms(Str * @param userId User ID for this authentication request. * @param organizationId Organization ID for this authentication request. * @param password Password for this authentication request, optionally encrypted. + * @param accountStatus Current user account status. * @param authenticationContext Authentication context. * @param operationContext Operation context. * @return Empty response returned when action succeeds. * @throws DataAdapterClientErrorException Thrown when client request fails or authentication/authorization fails. */ - public ObjectResponse verifyAuthorizationSmsAndPassword(String messageId, String authorizationCode, String userId, String organizationId, String password, AuthenticationContext authenticationContext, OperationContext operationContext) throws DataAdapterClientErrorException { + public ObjectResponse verifyAuthorizationSmsAndPassword(String messageId, String authorizationCode, String userId, String organizationId, AccountStatus accountStatus, String password, AuthenticationContext authenticationContext, OperationContext operationContext) throws DataAdapterClientErrorException { try { - VerifySmsAndPasswordRequest request = new VerifySmsAndPasswordRequest(messageId, authorizationCode, userId, organizationId, password, authenticationContext, operationContext); + VerifySmsAndPasswordRequest request = new VerifySmsAndPasswordRequest(messageId, authorizationCode, userId, organizationId, accountStatus, password, authenticationContext, operationContext); HttpEntity> entity = new HttpEntity<>(new ObjectRequest<>(request)); ResponseEntity> response = restTemplate.exchange(serviceUrl + "/api/auth/sms/password/verify", HttpMethod.POST, entity, new ParameterizedTypeReference>() { }); diff --git a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/VerifySmsAndPasswordRequest.java b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/VerifySmsAndPasswordRequest.java index 9a6b7b277..b46ac1756 100644 --- a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/VerifySmsAndPasswordRequest.java +++ b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/VerifySmsAndPasswordRequest.java @@ -17,6 +17,7 @@ import io.getlime.security.powerauth.lib.dataadapter.model.entity.AuthenticationContext; import io.getlime.security.powerauth.lib.dataadapter.model.entity.OperationContext; +import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.AccountStatus; /** * Request for SMS authorization code and password verification. @@ -50,6 +51,11 @@ public class VerifySmsAndPasswordRequest { */ private String organizationId; + /** + * User account status. + */ + private AccountStatus accountStatus; + /** * Authentication context. */ @@ -72,11 +78,13 @@ public VerifySmsAndPasswordRequest() { * @param authorizationCode Authorization code from user. * @param userId User ID for this authentication request. * @param organizationId Organization ID for this authentication request. + * @param accountStatus Current user account status. * @param password Password for this authentication request, optionally encrypted. * @param authenticationContext Authentication context. * @param operationContext Operation context. */ - public VerifySmsAndPasswordRequest(String messageId, String authorizationCode, String userId, String organizationId, String password, AuthenticationContext authenticationContext, OperationContext operationContext) { + public VerifySmsAndPasswordRequest(String messageId, String authorizationCode, String userId, String organizationId, AccountStatus accountStatus, + String password, AuthenticationContext authenticationContext, OperationContext operationContext) { this.messageId = messageId; this.authorizationCode = authorizationCode; this.userId = userId; @@ -168,6 +176,22 @@ public void setOrganizationId(String organizationId) { this.organizationId = organizationId; } + /** + * Get current user account status. + * @return User account status. + */ + public AccountStatus getAccountStatus() { + return accountStatus; + } + + /** + * Set current user account status. + * @param accountStatus User account status. + */ + public void setAccountStatus(AccountStatus accountStatus) { + this.accountStatus = accountStatus; + } + /** * Get authentication context. * @return Authentication context. diff --git a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/VerifySmsAuthorizationRequest.java b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/VerifySmsAuthorizationRequest.java index a9f6363cf..ffcd85f0a 100644 --- a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/VerifySmsAuthorizationRequest.java +++ b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/VerifySmsAuthorizationRequest.java @@ -16,6 +16,7 @@ package io.getlime.security.powerauth.lib.dataadapter.model.request; import io.getlime.security.powerauth.lib.dataadapter.model.entity.OperationContext; +import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.AccountStatus; /** * Request for SMS authorization code verification. @@ -44,6 +45,11 @@ public class VerifySmsAuthorizationRequest { */ private String organizationId; + /** + * User account status. + */ + private AccountStatus accountStatus; + /** * Operation context. */ @@ -61,9 +67,11 @@ public VerifySmsAuthorizationRequest() { * @param authorizationCode Authorization code from user. * @param userId User ID. * @param organizationId Organization ID. + * @param accountStatus Current user account status. * @param operationContext Operation context. */ - public VerifySmsAuthorizationRequest(String messageId, String authorizationCode, String userId, String organizationId, OperationContext operationContext) { + public VerifySmsAuthorizationRequest(String messageId, String authorizationCode, String userId, String organizationId, + AccountStatus accountStatus, OperationContext operationContext) { this.messageId = messageId; this.authorizationCode = authorizationCode; this.userId = userId; @@ -135,6 +143,22 @@ public void setOrganizationId(String organizationId) { this.organizationId = organizationId; } + /** + * Get current user account status. + * @return User account status. + */ + public AccountStatus getAccountStatus() { + return accountStatus; + } + + /** + * Set current user account status. + * @param accountStatus User account status. + */ + public void setAccountStatus(AccountStatus accountStatus) { + this.accountStatus = accountStatus; + } + /** * Get operation context. * @return Operation context. diff --git a/powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/controller/FormLoginController.java b/powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/controller/FormLoginController.java index 31cb81ead..a1fcc8349 100644 --- a/powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/controller/FormLoginController.java +++ b/powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/controller/FormLoginController.java @@ -213,6 +213,7 @@ protected AuthMethod getAuthMethodName() { * * @param request Authentication request using username and password. * @return Authentication response. + * @throws AuthStepException Thrown in case authentication fails. */ @RequestMapping(value = "/authenticate", method = RequestMethod.POST) public @ResponseBody UsernamePasswordAuthResponse authenticateHandler(@RequestBody UsernamePasswordAuthRequest request) throws AuthStepException { diff --git a/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java b/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java index f3995ef57..53c56ed73 100644 --- a/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java +++ b/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java @@ -119,6 +119,7 @@ protected AuthenticationResult authenticate(SmsAuthorizationRequest request) thr String operationData = operation.getOperationData(); String userId = operation.getUserId(); String organizationId = operation.getOrganizationId(); + AccountStatus accountStatus = userAccountStatusConverter.fromUserAccountStatus(operation.getAccountStatus()); ApplicationContext applicationContext = operation.getApplicationContext(); OperationContext operationContext = new OperationContext(operationId, operationName, operationData, formData, applicationContext); SmsAuthorizationResult smsAuthorizationResult; @@ -136,7 +137,7 @@ protected AuthenticationResult authenticate(SmsAuthorizationRequest request) thr return new AuthenticationResult(operation.getUserId(), operation.getOrganizationId()); } else if (!authStepOptions.isPasswordRequired()) { // Only SMS authorization is required, skip password verification - ObjectResponse objectResponse = dataAdapterClient.verifyAuthorizationSms(messageId, authCode, userId, organizationId, operationContext); + ObjectResponse objectResponse = dataAdapterClient.verifyAuthorizationSms(messageId, authCode, userId, organizationId, accountStatus, operationContext); VerifySmsAuthorizationResponse smsResponse = objectResponse.getResponseObject(); smsAuthorizationResult = smsResponse.getSmsAuthorizationResult(); request.setAuthInstruments(Collections.singletonList(AuthInstrument.SMS_KEY)); @@ -177,7 +178,7 @@ protected AuthenticationResult authenticate(SmsAuthorizationRequest request) thr String protectedPassword = passwordProtection.protect(request.getPassword()); AuthenticationContext authenticationContext = new AuthenticationContext(passwordProtectionType, cipherTransformation); - ObjectResponse objectResponse = dataAdapterClient.verifyAuthorizationSmsAndPassword(messageId, authCode, userId, organizationId, protectedPassword, authenticationContext, operationContext); + ObjectResponse objectResponse = dataAdapterClient.verifyAuthorizationSmsAndPassword(messageId, authCode, userId, organizationId, accountStatus, protectedPassword, authenticationContext, operationContext); VerifySmsAndPasswordResponse smsAndPasswordResponse = objectResponse.getResponseObject(); smsAuthorizationResult = smsAndPasswordResponse.getSmsAuthorizationResult(); if (smsAuthorizationResult == SmsAuthorizationResult.SUCCEEDED && smsAndPasswordResponse.getUserAuthenticationResult() == UserAuthenticationResult.SUCCEEDED) { From c87ed2433c5703ce07b607971f611c86b6fbd8f8 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Tue, 22 Oct 2019 18:45:34 +0200 Subject: [PATCH 109/197] Use account status for blocked accounts to simplify Data Adapter interface --- .../response/UserAuthenticationResponse.java | 19 +++++++++-------- .../VerifySmsAndPasswordResponse.java | 19 +++++++++-------- .../form/controller/FormLoginController.java | 10 +++++---- .../SmsAuthorizationController.java | 10 +++++---- .../AuthenticationFailedException.java | 21 ++++++++++--------- 5 files changed, 43 insertions(+), 36 deletions(-) diff --git a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/response/UserAuthenticationResponse.java b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/response/UserAuthenticationResponse.java index 4fa0c370f..2146fd7a1 100644 --- a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/response/UserAuthenticationResponse.java +++ b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/response/UserAuthenticationResponse.java @@ -16,6 +16,7 @@ package io.getlime.security.powerauth.lib.dataadapter.model.response; +import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.AccountStatus; import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.UserAuthenticationResult; /** @@ -30,7 +31,7 @@ public class UserAuthenticationResponse { private String errorMessage; private Integer remainingAttempts; private boolean showRemainingAttempts; - private boolean userAccountBlocked; + private AccountStatus accountStatus; /** * Default constructor. @@ -129,19 +130,19 @@ public void setShowRemainingAttempts(boolean showRemainingAttempts) { } /** - * Get whether user account is blocked. - * @return Whether user account is blocked. + * Get user account status. + * @return User account status. */ - public boolean isUserAccountBlocked() { - return userAccountBlocked; + public AccountStatus getAccountStatus() { + return accountStatus; } /** - * Set whether user account is blocked. - * @param userAccountBlocked Whether user account is blocked. + * Set user account status. + * @param accountStatus Status. */ - public void setUserAccountBlocked(boolean userAccountBlocked) { - this.userAccountBlocked = userAccountBlocked; + public void setAccountStatus(AccountStatus accountStatus) { + this.accountStatus = accountStatus; } } diff --git a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/response/VerifySmsAndPasswordResponse.java b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/response/VerifySmsAndPasswordResponse.java index 9ca71dbd3..223104f05 100644 --- a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/response/VerifySmsAndPasswordResponse.java +++ b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/response/VerifySmsAndPasswordResponse.java @@ -15,6 +15,7 @@ */ package io.getlime.security.powerauth.lib.dataadapter.model.response; +import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.AccountStatus; import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.SmsAuthorizationResult; import io.getlime.security.powerauth.lib.dataadapter.model.enumeration.UserAuthenticationResult; @@ -30,7 +31,7 @@ public class VerifySmsAndPasswordResponse { private String errorMessage; private Integer remainingAttempts; private boolean showRemainingAttempts; - private boolean userAccountBlocked; + private AccountStatus accountStatus; /** * Default constructor. @@ -129,19 +130,19 @@ public void setShowRemainingAttempts(boolean showRemainingAttempts) { } /** - * Get whether user account is blocked. - * @return Whether user account is blocked. + * Get user account status. + * @return User account status. */ - public boolean isUserAccountBlocked() { - return userAccountBlocked; + public AccountStatus getAccountStatus() { + return accountStatus; } /** - * Set whether user account is blocked. - * @param userAccountBlocked Whether user account is blocked. + * Set user account status. + * @param accountStatus Status. */ - public void setUserAccountBlocked(boolean userAccountBlocked) { - this.userAccountBlocked = userAccountBlocked; + public void setAccountStatus(AccountStatus accountStatus) { + this.accountStatus = accountStatus; } } diff --git a/powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/controller/FormLoginController.java b/powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/controller/FormLoginController.java index a1fcc8349..b72b3b930 100644 --- a/powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/controller/FormLoginController.java +++ b/powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/controller/FormLoginController.java @@ -29,6 +29,7 @@ import io.getlime.security.powerauth.lib.nextstep.model.entity.AfsActionDetail; import io.getlime.security.powerauth.lib.nextstep.model.entity.ApplicationContext; import io.getlime.security.powerauth.lib.nextstep.model.entity.AuthStep; +import io.getlime.security.powerauth.lib.nextstep.model.entity.enumeration.UserAccountStatus; import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthMethod; import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthResult; import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthStepResult; @@ -88,6 +89,7 @@ public class FormLoginController extends AuthMethodController authInstruments = authInstrumentConverter.fromAuthInstruments(request.getAuthInstruments()); if (e instanceof AuthenticationFailedException) { AuthenticationFailedException authEx = (AuthenticationFailedException) e; - if (authEx.isUserAccountBlocked()) { - // notify AFS about failed authentication method due to the fact that user account is blocked + if (authEx.getAccountStatus() != UserAccountStatus.ACTIVE) { + // notify AFS about failed authentication method due to the fact that user account is not active afsIntegrationService.executeAuthAction(operation.getOperationId(), afsAction, username, authInstruments, AuthStepResult.AUTH_METHOD_FAILED); } else { // notify AFS about failed authentication diff --git a/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java b/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java index 53c56ed73..0dd1c7c8d 100644 --- a/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java +++ b/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java @@ -25,6 +25,7 @@ import io.getlime.security.powerauth.lib.dataadapter.model.response.*; import io.getlime.security.powerauth.lib.nextstep.model.entity.ApplicationContext; import io.getlime.security.powerauth.lib.nextstep.model.entity.AuthStep; +import io.getlime.security.powerauth.lib.nextstep.model.entity.enumeration.UserAccountStatus; import io.getlime.security.powerauth.lib.nextstep.model.enumeration.*; import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthInstrument; import io.getlime.security.powerauth.lib.nextstep.model.exception.NextStepServiceException; @@ -190,7 +191,8 @@ protected AuthenticationResult authenticate(SmsAuthorizationRequest request) thr Integer remainingAttemptsDA = smsAndPasswordResponse.getRemainingAttempts(); boolean showRemainingAttempts = smsAndPasswordResponse.getShowRemainingAttempts(); String errorMessage = smsAndPasswordResponse.getErrorMessage(); - boolean userAccountBlocked = smsAndPasswordResponse.isUserAccountBlocked(); + boolean userAccountBlocked = smsAndPasswordResponse.getAccountStatus() != AccountStatus.ACTIVE; + UserAccountStatus userAccountStatus = userAccountStatusConverter.fromAccountStatus(smsAndPasswordResponse.getAccountStatus()); try { UpdateOperationResponse response = failAuthorization(operation.getOperationId(), operation.getUserId(), request.getAuthInstruments(), null); @@ -206,7 +208,7 @@ protected AuthenticationResult authenticate(SmsAuthorizationRequest request) thr Integer remainingAttempts = resolveRemainingAttempts(remainingAttemptsDA, remainingAttemptsNS); authEx.setRemainingAttempts(remainingAttempts); } - authEx.setUserAccountBlocked(userAccountBlocked); + authEx.setAccountStatus(userAccountStatus); throw authEx; } catch (NextStepServiceException e) { logger.error("Error occurred in Next Step server", e); @@ -520,8 +522,8 @@ public SmsAuthorizationResponse continueAuthentication(String operationId, Strin final List authInstruments = authInstrumentConverter.fromAuthInstruments(request.getAuthInstruments()); if (e instanceof AuthenticationFailedException) { AuthenticationFailedException authEx = (AuthenticationFailedException) e; - if (authEx.isUserAccountBlocked()) { - // notify AFS about failed authentication method due to the fact that user account is blocked + if (authEx.getAccountStatus() != UserAccountStatus.ACTIVE) { + // notify AFS about failed authentication method due to the fact that user account is not active afsIntegrationService.executeAuthAction(operation.getOperationId(), afsAction, username, authInstruments, AuthStepResult.AUTH_METHOD_FAILED); } else { // notify AFS about failed authentication diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/exception/AuthenticationFailedException.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/exception/AuthenticationFailedException.java index da4c69e4e..8f1f6b099 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/exception/AuthenticationFailedException.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/exception/AuthenticationFailedException.java @@ -15,12 +15,14 @@ */ package io.getlime.security.powerauth.lib.webflow.authentication.exception; +import io.getlime.security.powerauth.lib.nextstep.model.entity.enumeration.UserAccountStatus; + /** * Exception thrown in case user authentication fails. */ public class AuthenticationFailedException extends AuthStepException { - private boolean userAccountBlocked; + private UserAccountStatus accountStatus; /** * Constructor with message and message ID. @@ -54,19 +56,18 @@ public AuthenticationFailedException(String message, Throwable cause, String mes } /** - * Get whether user account is blocked. - * @return Whether user account is blocked. + * Get current user account status. + * @return User account status. */ - public boolean isUserAccountBlocked() { - return userAccountBlocked; + public UserAccountStatus getAccountStatus() { + return accountStatus; } /** - * Set whether user account is blocked. - * @param userAccountBlocked Whether user account is blocked. + * Set current user account status. + * @param accountStatus User account status. */ - public void setUserAccountBlocked(boolean userAccountBlocked) { - this.userAccountBlocked = userAccountBlocked; + public void setAccountStatus(UserAccountStatus accountStatus) { + this.accountStatus = accountStatus; } - } From 7a3bb43674e0d9715276459db92c8eb5a199b146 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Tue, 22 Oct 2019 20:27:14 +0200 Subject: [PATCH 110/197] Improve XHTML compliance of async --- powerauth-webflow/src/main/resources/templates/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/powerauth-webflow/src/main/resources/templates/index.html b/powerauth-webflow/src/main/resources/templates/index.html index 37715b783..b4ddabdc3 100644 --- a/powerauth-webflow/src/main/resources/templates/index.html +++ b/powerauth-webflow/src/main/resources/templates/index.html @@ -12,7 +12,7 @@ - + From 16f361aa6ebc6161ae38593c7c092d373007c0aa Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Thu, 24 Oct 2019 15:01:06 +0200 Subject: [PATCH 111/197] Add account status into constructor --- .../dataadapter/model/request/VerifySmsAndPasswordRequest.java | 1 + .../dataadapter/model/request/VerifySmsAuthorizationRequest.java | 1 + 2 files changed, 2 insertions(+) diff --git a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/VerifySmsAndPasswordRequest.java b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/VerifySmsAndPasswordRequest.java index b46ac1756..272264c58 100644 --- a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/VerifySmsAndPasswordRequest.java +++ b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/VerifySmsAndPasswordRequest.java @@ -89,6 +89,7 @@ public VerifySmsAndPasswordRequest(String messageId, String authorizationCode, S this.authorizationCode = authorizationCode; this.userId = userId; this.organizationId = organizationId; + this.accountStatus = accountStatus; this.password = password; this.authenticationContext = authenticationContext; this.operationContext = operationContext; diff --git a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/VerifySmsAuthorizationRequest.java b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/VerifySmsAuthorizationRequest.java index ffcd85f0a..9951c1913 100644 --- a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/VerifySmsAuthorizationRequest.java +++ b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/request/VerifySmsAuthorizationRequest.java @@ -76,6 +76,7 @@ public VerifySmsAuthorizationRequest(String messageId, String authorizationCode, this.authorizationCode = authorizationCode; this.userId = userId; this.organizationId = organizationId; + this.accountStatus = accountStatus; this.operationContext = operationContext; } From e7092e49c32932f796211dbba2941891ca65d7c4 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Thu, 24 Oct 2019 16:00:19 +0200 Subject: [PATCH 112/197] Fix application context in JSON --- docs/Next-Step-Server-REST-API-Reference.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Next-Step-Server-REST-API-Reference.md b/docs/Next-Step-Server-REST-API-Reference.md index fe4327c2d..ab0e6e1dd 100644 --- a/docs/Next-Step-Server-REST-API-Reference.md +++ b/docs/Next-Step-Server-REST-API-Reference.md @@ -1086,7 +1086,8 @@ Documentation for operation data is available [in a separate document](https://d "formattedValues": {}, "note": "Utility Bill Payment - 05/2019" } - ], + ] + }, "applicationContext": { "id": "DEMO", "name": "Demo application", @@ -1097,7 +1098,6 @@ Documentation for operation data is available [in a separate document](https://d "PISP" ] } - } } } } From f44df4ec3bc7054da040e6c086409783beb24f52 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Fri, 25 Oct 2019 10:52:10 +0200 Subject: [PATCH 113/197] Update dependencies --- powerauth-nextstep/pom.xml | 4 ++-- powerauth-tpp-engine/pom.xml | 4 ++-- powerauth-webflow-authentication-form/pom.xml | 2 +- powerauth-webflow-client/pom.xml | 2 +- powerauth-webflow/pom.xml | 6 +++--- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/powerauth-nextstep/pom.xml b/powerauth-nextstep/pom.xml index ee5b6b342..c30a77205 100644 --- a/powerauth-nextstep/pom.xml +++ b/powerauth-nextstep/pom.xml @@ -48,7 +48,7 @@ com.fasterxml.jackson.datatype jackson-datatype-joda - 2.10.0.pr1 + 2.10.0 @@ -79,7 +79,7 @@ com.google.guava guava - 27.0.1-jre + 28.1-jre diff --git a/powerauth-tpp-engine/pom.xml b/powerauth-tpp-engine/pom.xml index c34b90400..8f70ede2e 100644 --- a/powerauth-tpp-engine/pom.xml +++ b/powerauth-tpp-engine/pom.xml @@ -47,7 +47,7 @@ com.fasterxml.jackson.datatype jackson-datatype-joda - 2.10.0.pr1 + 2.10.0 javax.interceptor @@ -71,7 +71,7 @@ com.google.guava guava - 27.0.1-jre + 28.1-jre diff --git a/powerauth-webflow-authentication-form/pom.xml b/powerauth-webflow-authentication-form/pom.xml index 4ba3d2ce8..c56d8a9b1 100644 --- a/powerauth-webflow-authentication-form/pom.xml +++ b/powerauth-webflow-authentication-form/pom.xml @@ -26,7 +26,7 @@ org.bouncycastle bcprov-jdk15on - 1.61 + 1.64 test diff --git a/powerauth-webflow-client/pom.xml b/powerauth-webflow-client/pom.xml index cf1e99ae5..790c245a6 100644 --- a/powerauth-webflow-client/pom.xml +++ b/powerauth-webflow-client/pom.xml @@ -99,7 +99,7 @@ com.fasterxml.jackson.datatype jackson-datatype-joda - 2.10.0.pr1 + 2.10.0 diff --git a/powerauth-webflow/pom.xml b/powerauth-webflow/pom.xml index d0720e650..4429b8558 100644 --- a/powerauth-webflow/pom.xml +++ b/powerauth-webflow/pom.xml @@ -72,7 +72,7 @@ com.google.guava guava - 27.0.1-jre + 28.1-jre org.apache.httpcomponents @@ -82,12 +82,12 @@ com.fasterxml.jackson.datatype jackson-datatype-joda - 2.10.0.pr1 + 2.10.0 org.bouncycastle bcprov-jdk15on - 1.61 + 1.64 provided From 86cf682c5d6b7a438a1a3be4e5ca6fd9cc331bee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Dvo=C5=99=C3=A1k?= Date: Mon, 28 Oct 2019 16:57:28 +0100 Subject: [PATCH 114/197] Add note to migration guides --- docs/Web-Flow-0.23.0.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/docs/Web-Flow-0.23.0.md b/docs/Web-Flow-0.23.0.md index 031fdf703..f6a77407c 100644 --- a/docs/Web-Flow-0.23.0.md +++ b/docs/Web-Flow-0.23.0.md @@ -107,3 +107,28 @@ COMMIT; Note that the URI needs to be updated for each client in each environment. There is typically a different redirect URI for development, testing and production environments. +### Other Changes + +#### Storing Original OAuth 2.0 Scopes + +When assigning the application context to the operation, it is now possible to pass OAuth 2.0 scopes as a strongly typed attribute via the `originalScopes` attribute, like so: + +```json +{ + "requestObject": { + "operationId": "12341234-1234-1234-1234-123412341234", + "applicationContext": { + "id" : "democlient", + "name" : "Demo application", + "description" : "Demo application", + "originalScopes" : [ "aisp", "pisp" ], + "extras" : { + "applicationOwner" : "Wultra", + "_requestedScopes" : [ "aisp", "pisp" ] + } + } + } +} +``` + +This is helpful when working with the operation later, especially when fetching the correct consent for the operation. From 3170f7637cd18817d59244fa3c66bac45871080d Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Tue, 29 Oct 2019 21:21:41 +0100 Subject: [PATCH 115/197] Fix #699: Two-step selection of account breaks mobile token --- docs/Web-Flow-0.23.0.md | 2 + docs/sql/mysql/create_schema.sql | 1 + docs/sql/oracle/create_schema.sql | 1 + docs/sql/postgresql/create_schema.sql | 1 + .../lib/nextstep/client/NextStepClient.java | 74 ++++++++++++++++++ .../request/GetMobileTokenConfigRequest.java | 78 +++++++++++++++++++ .../request/UpdateMobileTokenRequest.java | 75 ++++++++++++++++++ .../GetMobileTokenConfigResponse.java | 42 ++++++++++ .../controller/OperationController.java | 58 +++++++++++++- .../model/entity/OperationHistoryEntity.java | 11 +++ .../service/OperationPersistenceService.java | 22 +++++- .../controller/ApprovalScaController.java | 1 + .../controller/LoginScaController.java | 1 + .../MobileTokenOnlineController.java | 10 ++- .../service/AuthMethodQueryService.java | 22 +++--- 15 files changed, 382 insertions(+), 17 deletions(-) create mode 100644 powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/request/GetMobileTokenConfigRequest.java create mode 100644 powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/request/UpdateMobileTokenRequest.java create mode 100644 powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/response/GetMobileTokenConfigResponse.java diff --git a/docs/Web-Flow-0.23.0.md b/docs/Web-Flow-0.23.0.md index f6a77407c..8e163fb10 100644 --- a/docs/Web-Flow-0.23.0.md +++ b/docs/Web-Flow-0.23.0.md @@ -30,6 +30,7 @@ CREATE INDEX wf_operation_hash ON wf_operation_session (operation_hash); CREATE INDEX wf_websocket_session ON wf_operation_session (websocket_session_id); ALTER TABLE ns_operation_history ADD request_auth_instruments VARCHAR(256); +ALTER TABLE ns_operation_history ADD mobile_token_active NUMBER(1) DEFAULT 0 NOT NULL; ALTER TABLE ns_operation ADD user_account_status VARCHAR(32); CREATE TABLE ns_operation_afs ( @@ -69,6 +70,7 @@ CREATE INDEX `wf_operation_hash` ON `wf_operation_session` (`operation_hash`); CREATE INDEX `wf_websocket_session` ON `wf_operation_session` (`websocket_session_id`); ALTER TABLE `ns_operation_history` ADD `request_auth_instruments` VARCHAR(256); +ALTER TABLE `ns_operation_history` ADD `mobile_token_active` BOOLEAN NOT NULL DEFAULT FALSE; ALTER TABLE `ns_operation` ADD `user_account_status` VARCHAR(32); CREATE TABLE ns_operation_afs ( diff --git a/docs/sql/mysql/create_schema.sql b/docs/sql/mysql/create_schema.sql index 0e5860f92..289b1c135 100644 --- a/docs/sql/mysql/create_schema.sql +++ b/docs/sql/mysql/create_schema.sql @@ -142,6 +142,7 @@ CREATE TABLE ns_operation_history ( response_timestamp_created TIMESTAMP DEFAULT CURRENT_TIMESTAMP, response_timestamp_expires TIMESTAMP DEFAULT CURRENT_TIMESTAMP, chosen_auth_method VARCHAR(32), + mobile_token_active BOOLEAN NOT NULL DEFAULT FALSE, PRIMARY KEY (operation_id, result_id), FOREIGN KEY operation_fk (operation_id) REFERENCES ns_operation (operation_id), FOREIGN KEY auth_method_fk (request_auth_method) REFERENCES ns_auth_method (auth_method) diff --git a/docs/sql/oracle/create_schema.sql b/docs/sql/oracle/create_schema.sql index c0906ae75..97da63c49 100644 --- a/docs/sql/oracle/create_schema.sql +++ b/docs/sql/oracle/create_schema.sql @@ -149,6 +149,7 @@ CREATE TABLE ns_operation_history ( response_timestamp_created TIMESTAMP, response_timestamp_expires TIMESTAMP, chosen_auth_method VARCHAR(32), + mobile_token_active NUMBER(1) DEFAULT 0 NOT NULL, CONSTRAINT history_pk PRIMARY KEY (operation_id, result_id), CONSTRAINT history_operation_fk FOREIGN KEY (operation_id) REFERENCES ns_operation (operation_id), CONSTRAINT history_auth_method_fk FOREIGN KEY (request_auth_method) REFERENCES ns_auth_method (auth_method) diff --git a/docs/sql/postgresql/create_schema.sql b/docs/sql/postgresql/create_schema.sql index 27d4bf834..66313c554 100644 --- a/docs/sql/postgresql/create_schema.sql +++ b/docs/sql/postgresql/create_schema.sql @@ -147,6 +147,7 @@ CREATE TABLE ns_operation_history ( response_timestamp_created TIMESTAMP, response_timestamp_expires TIMESTAMP, chosen_auth_method VARCHAR(32), + mobile_token_active BOOLEAN NOT NULL DEFAULT FALSE, CONSTRAINT history_pk PRIMARY KEY (operation_id, result_id), CONSTRAINT history_operation_fk FOREIGN KEY (operation_id) REFERENCES ns_operation (operation_id), CONSTRAINT history_auth_method_fk FOREIGN KEY (request_auth_method) REFERENCES ns_auth_method (auth_method) diff --git a/powerauth-nextstep-client/src/main/java/io/getlime/security/powerauth/lib/nextstep/client/NextStepClient.java b/powerauth-nextstep-client/src/main/java/io/getlime/security/powerauth/lib/nextstep/client/NextStepClient.java index 1c6a71b9b..d272db7e9 100644 --- a/powerauth-nextstep-client/src/main/java/io/getlime/security/powerauth/lib/nextstep/client/NextStepClient.java +++ b/powerauth-nextstep-client/src/main/java/io/getlime/security/powerauth/lib/nextstep/client/NextStepClient.java @@ -435,6 +435,80 @@ public ObjectResponse updateChosenAuthMethodPost(String operationId, AuthMethod } } + /** + * Update mobile token status for current operation step via PUT method. + * @param operationId Operation ID. + * @param mobileTokenActive Whether mobile token is active. + * @return Object response. + * @throws NextStepServiceException Thrown when communication with Next Step server fails, including {@link Error} with ERROR code. + */ + public ObjectResponse updateMobileToken(String operationId, boolean mobileTokenActive) throws NextStepServiceException { + try { + // Exchange next step request with NextStep server. + UpdateMobileTokenRequest request = new UpdateMobileTokenRequest(); + request.setOperationId(operationId); + request.setMobileTokenActive(mobileTokenActive); + HttpEntity> entity = new HttpEntity<>(new ObjectRequest<>(request)); + ResponseEntity response = restTemplate.exchange(serviceUrl + "/operation/mobileToken/status", HttpMethod.PUT, entity, new ParameterizedTypeReference() { + }); + return new ObjectResponse<>(response.getBody().getResponseObject()); + } catch (HttpStatusCodeException ex) { + throw handleHttpError(ex); + } catch (ResourceAccessException ex) { + throw handleResourceAccessError(ex); + } + } + + /** + * Update mobile token status for current operation step via POST method. + * @param operationId Operation ID. + * @param mobileTokenActive Whether mobile token is active. + * @return Object response. + * @throws NextStepServiceException Thrown when communication with Next Step server fails, including {@link Error} with ERROR code. + */ + public ObjectResponse updateMobileTokenPost(String operationId, boolean mobileTokenActive) throws NextStepServiceException { + try { + // Exchange next step request with NextStep server. + UpdateMobileTokenRequest request = new UpdateMobileTokenRequest(); + request.setOperationId(operationId); + request.setMobileTokenActive(mobileTokenActive); + HttpEntity> entity = new HttpEntity<>(new ObjectRequest<>(request)); + ResponseEntity response = restTemplate.exchange(serviceUrl + "/operation/status/update", HttpMethod.POST, entity, new ParameterizedTypeReference() { + }); + return new ObjectResponse<>(response.getBody().getResponseObject()); + } catch (HttpStatusCodeException ex) { + throw handleHttpError(ex); + } catch (ResourceAccessException ex) { + throw handleResourceAccessError(ex); + } + } + + /** + * Get mobile token configuration configuration. + * @param userId User ID. + * @param operationName Operation name. + * @param authMethod Authentication method. + * @return Mobile token configuration. + * @throws NextStepServiceException Thrown when operation configuration is missing. + */ + public ObjectResponse getMobileTokenConfig(String userId, String operationName, AuthMethod authMethod) throws NextStepServiceException { + try { + // Exchange next step request with NextStep server. + GetMobileTokenConfigRequest request = new GetMobileTokenConfigRequest(); + request.setUserId(userId); + request.setOperationName(operationName); + request.setAuthMethod(authMethod); + HttpEntity> entity = new HttpEntity<>(new ObjectRequest<>(request)); + ResponseEntity> response = restTemplate.exchange(serviceUrl + "/operation/mobileToken/config/detail", HttpMethod.POST, entity, new ParameterizedTypeReference>() {}); + return new ObjectResponse<>(response.getBody().getResponseObject()); + } catch (HttpStatusCodeException ex) { + throw handleHttpError(ex); + } catch (ResourceAccessException ex) { + // Next Step service is down + throw handleResourceAccessError(ex); + } + } + /** * Calls the operation details endpoint via POST method to get operation details. * diff --git a/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/request/GetMobileTokenConfigRequest.java b/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/request/GetMobileTokenConfigRequest.java new file mode 100644 index 000000000..488eb7c1d --- /dev/null +++ b/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/request/GetMobileTokenConfigRequest.java @@ -0,0 +1,78 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.getlime.security.powerauth.lib.nextstep.model.request; + +import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthMethod; + +/** + * Request object used obtaining mobile token configuration. + * + * @author Roman Strobl, roman.strobl@wultra.com + */ +public class GetMobileTokenConfigRequest { + + private String userId; + private String operationName; + private AuthMethod authMethod; + + /** + * Get user ID. + * @return User ID. + */ + public String getUserId() { + return userId; + } + + /** + * Set user ID. + * @param userId User ID. + */ + public void setUserId(String userId) { + this.userId = userId; + } + + /** + * Get the operation name. + * @return Operation name. + */ + public String getOperationName() { + return operationName; + } + + /** + * Set the operation name. + * @param operationName Operation name. + */ + public void setOperationName(String operationName) { + this.operationName = operationName; + } + + /** + * Get authentication method. + * @return Authentication method. + */ + public AuthMethod getAuthMethod() { + return authMethod; + } + + /** + * Set authentication method. + * @param authMethod Authentication method. + */ + public void setAuthMethod(AuthMethod authMethod) { + this.authMethod = authMethod; + } +} diff --git a/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/request/UpdateMobileTokenRequest.java b/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/request/UpdateMobileTokenRequest.java new file mode 100644 index 000000000..96015d4a4 --- /dev/null +++ b/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/request/UpdateMobileTokenRequest.java @@ -0,0 +1,75 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.getlime.security.powerauth.lib.nextstep.model.request; + +/** + * Request object used for updating mobile token status. + * + * @author Roman Strobl, roman.strobl@wultra.com + */ +public class UpdateMobileTokenRequest { + + private String operationId; + private boolean mobileTokenActive; + + /** + * Default constructor. + */ + public UpdateMobileTokenRequest() { + } + + /** + * Constructor with mobile token status. + * @param operationId Operation ID. + * @param mobileTokenActive Whether mobile token is active. + */ + public UpdateMobileTokenRequest(String operationId, boolean mobileTokenActive) { + this.operationId = operationId; + this.mobileTokenActive = mobileTokenActive; + } + + /** + * Get operation ID. + * @return Operation ID. + */ + public String getOperationId() { + return operationId; + } + + /** + * Set operation ID. + * @param operationId Operation ID. + */ + public void setOperationId(String operationId) { + this.operationId = operationId; + } + + /** + * Get whether mobile token is active. + * @return Whether mobile token is active. + */ + public boolean isMobileTokenActive() { + return mobileTokenActive; + } + + /** + * Set whether mobile token is active. + * @param mobileTokenActive Whether mobile token is active. + */ + public void setMobileTokenActive(boolean mobileTokenActive) { + this.mobileTokenActive = mobileTokenActive; + } +} diff --git a/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/response/GetMobileTokenConfigResponse.java b/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/response/GetMobileTokenConfigResponse.java new file mode 100644 index 000000000..f042c9dfa --- /dev/null +++ b/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/response/GetMobileTokenConfigResponse.java @@ -0,0 +1,42 @@ +/* + * Copyright 2019 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.getlime.security.powerauth.lib.nextstep.model.response; + +/** + * Response object used obtaining mobile token configuration. + * + * @author Roman Strobl, roman.strobl@wultra.com + */ +public class GetMobileTokenConfigResponse { + + private boolean mobileTokenEnabled; + + /** + * Get whether mobile token is enabled. + * @return Whether mobile token is enabled. + */ + public boolean isMobileTokenEnabled() { + return mobileTokenEnabled; + } + + /** + * Set whether mobile token is enabled. + * @param mobileTokenEnabled Whether mobile token is enabled. + */ + public void setMobileTokenEnabled(boolean mobileTokenEnabled) { + this.mobileTokenEnabled = mobileTokenEnabled; + } +} diff --git a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/controller/OperationController.java b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/controller/OperationController.java index 3cd06e863..99dd8bbae 100644 --- a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/controller/OperationController.java +++ b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/controller/OperationController.java @@ -25,11 +25,13 @@ import io.getlime.security.powerauth.app.nextstep.repository.model.entity.OperationAfsActionEntity; import io.getlime.security.powerauth.app.nextstep.repository.model.entity.OperationEntity; import io.getlime.security.powerauth.app.nextstep.repository.model.entity.OperationHistoryEntity; +import io.getlime.security.powerauth.app.nextstep.service.MobileTokenConfigurationService; import io.getlime.security.powerauth.app.nextstep.service.OperationConfigurationService; import io.getlime.security.powerauth.app.nextstep.service.OperationPersistenceService; import io.getlime.security.powerauth.app.nextstep.service.StepResolutionService; import io.getlime.security.powerauth.lib.nextstep.model.entity.*; import io.getlime.security.powerauth.lib.nextstep.model.entity.enumeration.UserAccountStatus; +import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthMethod; import io.getlime.security.powerauth.lib.nextstep.model.exception.NextStepServiceException; import io.getlime.security.powerauth.lib.nextstep.model.exception.OperationAlreadyExistsException; import io.getlime.security.powerauth.lib.nextstep.model.exception.OperationNotConfiguredException; @@ -63,6 +65,7 @@ public class OperationController { private final OperationPersistenceService operationPersistenceService; private final OperationConfigurationService operationConfigurationService; private final StepResolutionService stepResolutionService; + private final MobileTokenConfigurationService mobileTokenConfigurationService; private final ObjectMapper objectMapper = new ObjectMapper(); @@ -71,13 +74,15 @@ public class OperationController { * @param operationPersistenceService Operation persistence service. * @param operationConfigurationService Operation configuration service. * @param stepResolutionService Step resolution service. + * @param mobileTokenConfigurationService Mobile token configuration service. */ @Autowired public OperationController(OperationPersistenceService operationPersistenceService, OperationConfigurationService operationConfigurationService, - StepResolutionService stepResolutionService) { + StepResolutionService stepResolutionService, MobileTokenConfigurationService mobileTokenConfigurationService) { this.operationPersistenceService = operationPersistenceService; this.operationConfigurationService = operationConfigurationService; this.stepResolutionService = stepResolutionService; + this.mobileTokenConfigurationService = mobileTokenConfigurationService; } /** @@ -360,12 +365,61 @@ private Response updateOperationFormDataImpl(ObjectRequest request) throws OperationNotFoundException { logger.info("Received updateChosenAuthMethod request, operation ID: {}, chosen authentication method: {}", request.getRequestObject().getOperationId(), request.getRequestObject().getChosenAuthMethod().toString()); - // persist operation form data update + // persist chosen auth method update operationPersistenceService.updateChosenAuthMethod(request.getRequestObject()); logger.debug("The updateChosenAuthMethod request succeeded"); return new Response(); } + /** + * Update mobile token status for an operation (PUT method). + * @param request Update operation request. + * @return Update operation response. + * @throws OperationNotFoundException Thrown when operation is not found. + */ + @RequestMapping(value = "/operation/mobileToken/status", method = RequestMethod.PUT) + public @ResponseBody Response updateMobileToken(@RequestBody ObjectRequest request) throws OperationNotFoundException { + return updateMobileTokenImpl(request); + } + + /** + * Update operation with chosen authentication method (POST method alternative). + * @param request Update operation request. + * @return Update operation response. + * @throws OperationNotFoundException Thrown when operation is not found. + */ + @RequestMapping(value = "/operation/mobileToken/status/update", method = RequestMethod.POST) + public @ResponseBody Response updateMobileTokenPost(@RequestBody ObjectRequest request) throws OperationNotFoundException { + return updateMobileTokenImpl(request); + } + + private Response updateMobileTokenImpl(ObjectRequest request) throws OperationNotFoundException { + logger.info("Received updateMobileToken request, operation ID: {}, mobile token active: {}", request.getRequestObject().getOperationId(), request.getRequestObject().isMobileTokenActive()); + // persist mobile token update + operationPersistenceService.updateMobileToken(request.getRequestObject()); + logger.debug("The updateMobileToken request succeeded"); + return new Response(); + } + + /** + * Get mobile token configuration. + * @param request Get mobile token configuration request. + * @return Get mobile token configuration response. + * @throws OperationNotFoundException Thrown when operation is not found. + */ + @RequestMapping(value = "/operation/mobileToken/config/detail", method = RequestMethod.POST) + public @ResponseBody ObjectResponse getMobileTokenConfig(@RequestBody ObjectRequest request) throws OperationNotFoundException { + String userId = request.getRequestObject().getUserId(); + String operationName = request.getRequestObject().getOperationName(); + AuthMethod authMethod = request.getRequestObject().getAuthMethod(); + logger.info("Received getMobileTokenConfig request, user ID: {}, operation name: {}, authentication method: {}", userId, operationName, authMethod); + boolean isMobileTokenEnabled = mobileTokenConfigurationService.isMobileTokenEnabled(userId, operationName, authMethod); + GetMobileTokenConfigResponse response = new GetMobileTokenConfigResponse(); + response.setMobileTokenEnabled(isMobileTokenEnabled); + logger.debug("The getMobileTokenConfig request succeeded"); + return new ObjectResponse<>(response); + } + /** * Update application context for an operation (PUT method). * @param request Update application context request. diff --git a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/repository/model/entity/OperationHistoryEntity.java b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/repository/model/entity/OperationHistoryEntity.java index 68131a5e0..08b9fd6e1 100644 --- a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/repository/model/entity/OperationHistoryEntity.java +++ b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/repository/model/entity/OperationHistoryEntity.java @@ -71,6 +71,9 @@ public class OperationHistoryEntity implements Serializable { @Enumerated(EnumType.STRING) private AuthMethod chosenAuthMethod; + @Column(name = "mobile_token_active") + private boolean mobileTokenActive; + @ManyToOne @JoinColumn(name = "operation_id", insertable = false, updatable = false) private OperationEntity operation; @@ -170,6 +173,14 @@ public void setChosenAuthMethod(AuthMethod chosenAuthMethod) { this.chosenAuthMethod = chosenAuthMethod; } + public boolean isMobileTokenActive() { + return mobileTokenActive; + } + + public void setMobileTokenActive(boolean mobileTokenActive) { + this.mobileTokenActive = mobileTokenActive; + } + /** * Is the action expired? * diff --git a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/service/OperationPersistenceService.java b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/service/OperationPersistenceService.java index 710dee71d..50e902115 100644 --- a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/service/OperationPersistenceService.java +++ b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/service/OperationPersistenceService.java @@ -247,6 +247,26 @@ public void updateChosenAuthMethod(UpdateChosenAuthMethodRequest request) throws operationHistoryRepository.save(currentHistory); } + /** + * Update mobile token status. + * + * @param request Request to update mobile token status. + * @throws OperationNotFoundException Thrown when operation does not exist. + */ + public void updateMobileToken(UpdateMobileTokenRequest request) throws OperationNotFoundException { + Optional operationOptional = operationRepository.findById(request.getOperationId()); + if (!operationOptional.isPresent()) { + throw new OperationNotFoundException("Operation not found, operation ID: " + request.getOperationId()); + } + OperationEntity operation = operationOptional.get(); + OperationHistoryEntity currentHistory = operation.getCurrentOperationHistoryEntity(); + if (currentHistory == null) { + throw new IllegalStateException("Operation is missing history"); + } + currentHistory.setMobileTokenActive(request.isMobileTokenActive()); + operationHistoryRepository.save(currentHistory); + } + /** * Update application context. * @@ -324,7 +344,7 @@ public List getPendingOperations(String userId, boolean mobileT // Add operations whose last step is CONFIRMED with CONTINUE result and chosen authentication method supports mobile token OperationHistoryEntity currentHistoryEntity = operation.getCurrentOperationHistoryEntity(); if (currentHistoryEntity.getRequestAuthStepResult() == AuthStepResult.CONFIRMED && currentHistoryEntity.getResponseResult() == AuthResult.CONTINUE - && currentHistoryEntity.getChosenAuthMethod() != null) { + && currentHistoryEntity.isMobileTokenActive()) { AuthMethod chosenAuthMethod = currentHistoryEntity.getChosenAuthMethod(); if (mobileTokenConfigurationService.isMobileTokenEnabled(userId, operation.getOperationName(), chosenAuthMethod)) { filteredList.add(operation); diff --git a/powerauth-webflow-authentication-approval-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/approvalsca/controller/ApprovalScaController.java b/powerauth-webflow-authentication-approval-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/approvalsca/controller/ApprovalScaController.java index de2e0510b..95f5a9e23 100644 --- a/powerauth-webflow-authentication-approval-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/approvalsca/controller/ApprovalScaController.java +++ b/powerauth-webflow-authentication-approval-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/approvalsca/controller/ApprovalScaController.java @@ -101,6 +101,7 @@ public ApprovalScaAuthResponse authenticateScaApproval(@RequestBody ApprovalScaA boolean mobileTokenEnabled = false; try { if (authMethodQueryService.isMobileTokenAvailable(userId, operation.getOperationId())) { + nextStepClient.updateMobileToken(operation.getOperationId(), true); mobileTokenEnabled = true; } } catch (NextStepServiceException e) { diff --git a/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/controller/LoginScaController.java b/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/controller/LoginScaController.java index f89228193..694558eba 100644 --- a/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/controller/LoginScaController.java +++ b/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/controller/LoginScaController.java @@ -148,6 +148,7 @@ public LoginScaAuthResponse authenticateScaLogin(@RequestBody LoginScaAuthReques boolean mobileTokenEnabled = false; try { if (authMethodQueryService.isMobileTokenAvailable(userId, operation.getOperationId())) { + nextStepClient.updateMobileToken(operation.getOperationId(), true); mobileTokenEnabled = true; } } catch (NextStepServiceException e) { diff --git a/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/controller/MobileTokenOnlineController.java b/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/controller/MobileTokenOnlineController.java index 5a7f60825..6d23344d8 100644 --- a/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/controller/MobileTokenOnlineController.java +++ b/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/controller/MobileTokenOnlineController.java @@ -16,6 +16,7 @@ package io.getlime.security.powerauth.lib.webflow.authentication.mtoken.controller; +import io.getlime.security.powerauth.lib.nextstep.client.NextStepClient; import io.getlime.security.powerauth.lib.nextstep.model.entity.OperationHistory; import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthMethod; import io.getlime.security.powerauth.lib.nextstep.model.enumeration.AuthResult; @@ -57,18 +58,21 @@ public class MobileTokenOnlineController extends AuthMethodController objectResponseOperation = nextStepClient.getOperationDetail(operationId); - GetOperationDetailResponse operationDetail = objectResponseOperation.getResponseObject(); + GetOperationDetailResponse operation = objectResponseOperation.getResponseObject(); boolean mobileTokenAvailableAsNextStep = false; - for (AuthStep step: operationDetail.getSteps()) { + for (AuthStep step: operation.getSteps()) { if (step.getAuthMethod() == AuthMethod.POWERAUTH_TOKEN) { mobileTokenAvailableAsNextStep = true; break; } } - // SCA usage: check whether an authentication method supporting mobile token is currently available (authentication method is already chosen) + // SCA usage: check whether mobile token is enabled using configuration for user ID, operation name and chosen authentication method if (!mobileTokenAvailableAsNextStep) { // Retrieve pending mobile token operations for given user and check that operation with given operation ID is among them - ObjectResponse> objectResponseOperations = nextStepClient.getPendingOperations(userId, true); - List operationsForMobileToken = objectResponseOperations.getResponseObject(); - boolean operationSupportsMobileToken = false; - for (GetOperationDetailResponse operation : operationsForMobileToken) { - if (operation.getOperationId().equals(operationId)) { - operationSupportsMobileToken = true; - break; + if (operation.getChosenAuthMethod() != null) { + ObjectResponse objectResponse = nextStepClient.getMobileTokenConfig(userId, operation.getOperationName(), operation.getChosenAuthMethod()); + GetMobileTokenConfigResponse configResponse = objectResponse.getResponseObject(); + if (!configResponse.isMobileTokenEnabled()) { + return false; } } - if (!operationSupportsMobileToken) { - return false; - } } // Retrieve activation ID configured for mobile token From f757f2ed4c1b0795a7e6dba2d467ac13041957da Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Thu, 31 Oct 2019 09:39:27 -0400 Subject: [PATCH 116/197] Update dependencies --- powerauth-webflow/src/main/resources/templates/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/powerauth-webflow/src/main/resources/templates/index.html b/powerauth-webflow/src/main/resources/templates/index.html index b4ddabdc3..4df402d15 100644 --- a/powerauth-webflow/src/main/resources/templates/index.html +++ b/powerauth-webflow/src/main/resources/templates/index.html @@ -10,7 +10,7 @@ - + From b80304cdb663526129bc7db904d534c28169976c Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Thu, 31 Oct 2019 16:22:46 -0400 Subject: [PATCH 117/197] Documentation updates --- docs/Basic-Definitions.md | 10 +- docs/Components.md | 1 + docs/Customizing-Operation-Form-Data.md | 2 +- docs/Data-Adapter-REST-API-Reference.md | 112 +++++++++--------- docs/Data-Adapter.md | 1 + docs/Database-Table-Structure.md | 14 +++ docs/Next-Step-Server-REST-API-Reference.md | 37 ++---- docs/Next-Step-Server.md | 1 + docs/Readme.md | 2 + docs/Web-Flow-0.23.0.md | 3 +- docs/Web-Flow-Configuration.md | 14 +++ .../demo/controller/HomeController.java | 1 - 12 files changed, 112 insertions(+), 86 deletions(-) diff --git a/docs/Basic-Definitions.md b/docs/Basic-Definitions.md index b947f3eab..c98512707 100644 --- a/docs/Basic-Definitions.md +++ b/docs/Basic-Definitions.md @@ -216,7 +216,7 @@ The effective number of remaining attempts is the lower of the two above mention The HTTP session is used in Web Flow in following ways: - A client may create an operation with operation data before the OAuth 2.0 authentication is started and store assigned operationId in HTTP session in the `operationId` attribute. This attribute is picked when authentication is started and Web Flow continues an already existing operation. In case the `operationId` attribute is not found, Web Flow creates a new login operation with default operation data. - During the authentication process, the `PENDING_AUTH_OBJECT` attribute stored in HTTP session is updated with OAuth 2.0 `UserOperationAuthentication` token which contains the most current state of authentication. -- When the authentication process is succcessfully completed, the HTTP session becomes authenticated with the OAuth 2.0 `UserOperationAuthentication` token. +- When the authentication process is successfully completed, the HTTP session becomes authenticated with the OAuth 2.0 `UserOperationAuthentication` token. - When the authentication process fails, the `PENDING_AUTH_OBJECT` attribute is removed from HTTP session. The HTTP session does not become authenticated. The HTTP session is also used for storing temporary data during operation. @@ -238,3 +238,11 @@ Web Flow contains message resources which can be localized to different language ### Resource translation Web Flow supports translation of resources which contain references to values of operation form data. This process is called resource translation. + +### Anti-fraud system integration + +Anti-fraud System (AFS) integration is available for Web Flow. Web Flow triggers AFS actions during login +and approval steps both when the step is initialized and when step authentication is performed. +The AFS integration allows authentication step-down (e.g. using 1 factor instead of 2 factors or even no factors at all). +The AFS is also informed about completed, timed out and interrupted operations. +The communication with AFS is handled in Data Adapter. \ No newline at end of file diff --git a/docs/Components.md b/docs/Components.md index f8e3ae1db..a06cc80ba 100644 --- a/docs/Components.md +++ b/docs/Components.md @@ -60,6 +60,7 @@ Data Adapter handles following use cases: * Verify consent form options selected by the user. * Save consent form options selected by the user. * Verify authorization SMS code and user password. +* Execute an anti-fraud system (AFS) action and react on response from AFS. For more information see the [Web Flow customization project](https://github.com/wultra/powerauth-webflow-customization) diff --git a/docs/Customizing-Operation-Form-Data.md b/docs/Customizing-Operation-Form-Data.md index a4022cadf..10d1288fa 100644 --- a/docs/Customizing-Operation-Form-Data.md +++ b/docs/Customizing-Operation-Form-Data.md @@ -222,7 +222,7 @@ ApplicationContext applicationContext = new ApplicationContext(); applicationContext.setId("DEMO"); applicationContext.setName("Demo application"); applicationContext.setDescription("Web Flow demo application"); -applicationContext.getExtras().put("_requestedScopes", Collections.singletonList("AISP")); +applicationContext.getOriginalScopes().add("aisp"); applicationContext.getExtras().put("applicationOwner", "Wultra"); ``` diff --git a/docs/Data-Adapter-REST-API-Reference.md b/docs/Data-Adapter-REST-API-Reference.md index a9cfd1f40..9cebce59a 100644 --- a/docs/Data-Adapter-REST-API-Reference.md +++ b/docs/Data-Adapter-REST-API-Reference.md @@ -18,6 +18,7 @@ Following topics are covered in this chapter: - [Create OAuth 2.0 consent form](#create-oauth-20-consent-form) - [Validate OAuth 2.0 consent form](#validate-oauth-20-consent-form) - [Save OAuth 2.0 consent form](#save-oauth-20-consent-form) +- [Execute an AFS action] TODO You can access the generated REST API documentation in deployed Data Adapter: @@ -184,11 +185,9 @@ The list of expected status codes during authentication: "id": "DEMO", "name": "Demo application", "description": "Web Flow demo application", + "originalScopes": ["pisp"], "extras": { - "applicationOwner": "Wultra", - "_requestedScopes": [ - "PISP" - ] + "applicationOwner": "Wultra" } } } @@ -205,7 +204,23 @@ The list of expected status codes during authentication: "id": "12345678", "givenName": "John", "familyName": "Doe", - "organizationId": "RETAIL" + "organizationId": "RETAIL", + "accountStatus": "ACTIVE" + } +} +``` + +### Response - user account exists, however the account is not active (e.g. blockeds) + +```json +{ + "status": "OK", + "responseObject": { + "id": "12345678", + "givenName": "John", + "familyName": "Doe", + "organizationId": "RETAIL", + "accountStatus": "NOT_ACTIVE" } } ``` @@ -358,11 +373,9 @@ The list of expected status codes during authentication: "id": "DEMO", "name": "Demo application", "description": "Web Flow demo application", + "originalScopes": ["pisp"], "extras": { - "applicationOwner": "Wultra", - "_requestedScopes": [ - "PISP" - ] + "applicationOwner": "Wultra" } } } @@ -430,12 +443,13 @@ private String decryptPassword(String secretKeyBase64, String cipherTransformati { "status": "OK", "responseObject": { - "authenticationResult": "VERIFIED_SUCCEEDED", + "authenticationResult": "SUCCEEDED", "userDetail": { "id": "12345678", "givenName": "John", "familyName": "Doe", - "organizationId": "RETAIL" + "organizationId": "RETAIL", + "accountStatus": "ACTIVE" }, "errorMessage": null, "remainingAttempts": null, @@ -456,7 +470,7 @@ This message should be sent when the Data Adapter receives a correct message, ho { "status": "OK", "responseObject": { - "authenticationResult": "VERIFIED_FAILED", + "authenticationResult": "FAILED", "userDetail": null, "errorMessage": "login.authenticationFailed", "remainingAttempts": null, @@ -567,7 +581,8 @@ The list of expected status codes: "id": "12345678", "givenName": "John", "familyName": "Doe", - "organizationId": "RETAIL" + "organizationId": "RETAIL", + "accountStatus": "ACTIVE" } } ``` @@ -680,11 +695,9 @@ The list of expected status codes: "id": "DEMO", "name": "Demo application", "description": "Web Flow demo application", + "originalScopes": ["pisp"], "extras": { - "applicationOwner": "Wultra", - "_requestedScopes": [ - "PISP" - ] + "applicationOwner": "Wultra" } } } @@ -913,11 +926,9 @@ The list of expected status codes: "id": "DEMO", "name": "Demo application", "description": "Web Flow demo application", + "originalScopes": ["pisp"], "extras": { - "applicationOwner": "Wultra", - "_requestedScopes": [ - "PISP" - ] + "applicationOwner": "Wultra" } } }, @@ -1052,11 +1063,9 @@ Possible operation changes are: `DONE`, `CANCELED` and `FAILED`. "id": "DEMO", "name": "Demo application", "description": "Web Flow demo application", + "originalScopes": ["pisp"], "extras": { - "applicationOwner": "Wultra", - "_requestedScopes": [ - "PISP" - ] + "applicationOwner": "Wultra" } } }, @@ -1111,6 +1120,7 @@ The list of expected status codes: "requestObject": { "userId": "12345678", "organizationId": "RETAIL", + "accountStatus": "ACTIVE", "operationContext": { "id": "371526cc-5dee-414e-8418-5ee1c5ef2d67", "name": "authorize_payment", @@ -1184,11 +1194,9 @@ The list of expected status codes: "id": "DEMO", "name": "Demo application", "description": "Web Flow demo application", + "originalScopes": ["pisp"], "extras": { - "applicationOwner": "Wultra", - "_requestedScopes": [ - "PISP" - ] + "applicationOwner": "Wultra" } } }, @@ -1263,6 +1271,9 @@ The list of expected status codes: ```json { "requestObject": { + "userId": "12345678", + "organizationId": "RETAIL", + "accountStatus": "ACTIVE", "messageId": "617178ab-f315-4223-a602-9d4893b4f99f", "authorizationCode": "77038183", "operationContext": { @@ -1338,11 +1349,9 @@ The list of expected status codes: "id": "DEMO", "name": "Demo application", "description": "Web Flow demo application", + "originalScopes": ["pisp"], "extras": { - "applicationOwner": "Wultra", - "_requestedScopes": [ - "PISP" - ] + "applicationOwner": "Wultra" } } } @@ -1360,7 +1369,7 @@ The list of expected status codes: { "status": "OK", "responseObject": { - "smsAuthorizationResult": "VERIFIED_SUCCEEDED", + "smsAuthorizationResult": "SUCCEEDED", "errorMessage": null, "remainingAttempts": null, "showRemainingAttempts": false @@ -1374,7 +1383,7 @@ The list of expected status codes: { "status": "OK", "responseObject": { - "smsAuthorizationResult": "VERIFIED_FAILED", + "smsAuthorizationResult": "FAILED", "errorMessage": "smsAuthorization.failed", "remainingAttempts": 4, "showRemainingAttempts": false @@ -1421,8 +1430,9 @@ See chapter [User Password Encryption and Decryption](./Data-Adapter-REST-API-Re { "requestObject": { "userId": "12345678", - "password": "s3cret", "organizationId": "RETAIL", + "accountStatus": "ACTIVE", + "password": "s3cret", "authenticationContext": { "passwordProtection": "NO_PROTECTION", "cipherTransformation": "", @@ -1503,11 +1513,9 @@ See chapter [User Password Encryption and Decryption](./Data-Adapter-REST-API-Re "id": "DEMO", "name": "Demo application", "description": "Web Flow demo application", + "originalScopes": ["pisp"], "extras": { - "applicationOwner": "Wultra", - "_requestedScopes": [ - "PISP" - ] + "applicationOwner": "Wultra" } } } @@ -1525,8 +1533,8 @@ See chapter [User Password Encryption and Decryption](./Data-Adapter-REST-API-Re { "status": "OK", "responseObject": { - "smsAuthorizationResult": "VERIFIED_SUCCEEDED", - "userAuthenticationResult": "VERIFIED_SUCCEEDED", + "smsAuthorizationResult": "SUCCEEDED", + "userAuthenticationResult": "SUCCEEDED", "errorMessage": null, "remainingAttempts": null, "showRemainingAttempts": false @@ -1544,8 +1552,8 @@ See chapter [User Password Encryption and Decryption](./Data-Adapter-REST-API-Re { "status": "OK", "responseObject": { - "smsAuthorizationResult": "VERIFIED_FAILED", - "userAuthenticationResult": "VERIFIED_FAILED", + "smsAuthorizationResult": "FAILED", + "userAuthenticationResult": "FAILED", "errorMessage": "login.authenticationFailed", "remainingAttempts": null, "showRemainingAttempts": false @@ -1661,10 +1669,8 @@ The list of expected status codes: "id": "DEMO", "name": "Demo application", "description": "Web Flow demo application", + "originalScopes": ["pisp"], "extras": { - "_requestedScopes": [ - "PISP" - ], "applicationOwner": "Wultra" } } @@ -1811,10 +1817,8 @@ The list of expected status codes: "id": "DEMO", "name": "Demo application", "description": "Web Flow demo application", + "originalScopes": ["pisp"], "extras": { - "_requestedScopes": [ - "PISP" - ], "applicationOwner": "Wultra" } } @@ -1963,10 +1967,8 @@ The list of expected status codes: "id": "DEMO", "name": "Demo application", "description": "Web Flow demo application", + "originalScopes": ["pisp"], "extras": { - "_requestedScopes": [ - "PISP" - ], "applicationOwner": "Wultra" } } @@ -2145,10 +2147,8 @@ The list of expected status codes: "id": "DEMO", "name": "Demo application", "description": "Web Flow demo application", + "originalScopes": ["pisp"], "extras": { - "_requestedScopes": [ - "PISP" - ], "applicationOwner": "Wultra" } } diff --git a/docs/Data-Adapter.md b/docs/Data-Adapter.md index a431edee3..72ae4eab2 100644 --- a/docs/Data-Adapter.md +++ b/docs/Data-Adapter.md @@ -23,3 +23,4 @@ Following functionality needs to be customized during Web Flow deployment by imp - validate OAuth 2.0 consent form options - save OAuth 2.0 consent form options - authenticate user using user ID, password and SMS authorization code +- execute an anti-fraud system (AFS) action and react on response from AFS \ No newline at end of file diff --git a/docs/Database-Table-Structure.md b/docs/Database-Table-Structure.md index 51782765a..56d257247 100644 --- a/docs/Database-Table-Structure.md +++ b/docs/Database-Table-Structure.md @@ -45,10 +45,24 @@ Web Flow can coexist with PowerAuth in the same database schema or it can use a - **ns_step_definition** - the table stores definitions of authentication/authorization steps. Data in this table needs to be loaded before Web Flow is started. +- **ns_operation_afs** - the table stores responses from AFS for operations. + ### Database Tables for the Data Adapter - **da_sms_authorization** - the table stores data for SMS OTP authorization. +- **da_user_credentials** - the table stores user credentials. + ### Database Tables for the Web Flow Server - **wf_operation_session** - the table stores mapping of operations to HTTP sessions. + +- **wf_afs_config** - the table stores configuration of anti-fraud system integration. + +### Database Tables for the Third Party Provider + +- **tpp_consent** - the table stores definitions of consents. +- **tpp_user_consent** - the table stores consents given by the user. +- **tpp_user_consent_history** - the table stores changes of consents given by the user. +- **tpp_detail** - the table stores information about third parties. +- **tpp_app_detail** - the table store information about third party applications. diff --git a/docs/Next-Step-Server-REST-API-Reference.md b/docs/Next-Step-Server-REST-API-Reference.md index ab0e6e1dd..2db1c2b3e 100644 --- a/docs/Next-Step-Server-REST-API-Reference.md +++ b/docs/Next-Step-Server-REST-API-Reference.md @@ -24,6 +24,7 @@ Following topics are covered in this chapter: - [Update application context for an operation](#update-application-context-for-an-operation) - [Update user for an operation](#update-user-for-an-operation) - [Set chosen authentication method](#set-chosen-authentication-method) + - [Store result of an AFS action] TODO - [List operation configurations](#list-operation-configurations) - [Get operation configuration detail](#get-operation-configuration-detail) - [Organizations](#organizations) @@ -681,11 +682,9 @@ Example of complete operation detail: "id": "DEMO", "name": "Demo application", "description": "Web Flow demo application", + "originalScopes": ["pisp"], "extras": { - "applicationOwner": "Wultra", - "_requestedScopes": [ - "PISP" - ] + "applicationOwner": "Wultra" } }, "expired": false @@ -1013,11 +1012,9 @@ Documentation for operation data is available [in a separate document](https://d "id": "DEMO", "name": "Demo application", "description": "Web Flow demo application", + "originalScopes": ["pisp"], "extras": { - "applicationOwner": "Wultra", - "_requestedScopes": [ - "PISP" - ] + "applicationOwner": "Wultra" } } } @@ -1092,11 +1089,9 @@ Documentation for operation data is available [in a separate document](https://d "id": "DEMO", "name": "Demo application", "description": "Web Flow demo application", + "originalScopes": ["pisp"], "extras": { - "applicationOwner": "Wultra", - "_requestedScopes": [ - "PISP" - ] + "applicationOwner": "Wultra" } } } @@ -1433,11 +1428,9 @@ Retrieves detail of an operation in the Next Step server. "id": "DEMO", "name": "Demo application", "description": "Web Flow demo application", + "originalScopes": ["pisp"], "extras": { - "applicationOwner": "Wultra", - "_requestedScopes": [ - "PISP" - ] + "applicationOwner": "Wultra" } }, "expired": false @@ -1560,11 +1553,9 @@ Lists pending operation for given user and authentication method. "id": "DEMO", "name": "Demo application", "description": "Web Flow demo application", + "originalScopes": ["pisp"], "extras": { - "applicationOwner": "Wultra", - "_requestedScopes": [ - "PISP" - ] + "applicationOwner": "Wultra" } }, "expired": false @@ -1754,12 +1745,8 @@ Alternative with `POST` method for environments which do not allow `PUT` methods "id": "BANK_ABC_PROD", "name": "Bank ABC", "description": "Authorization for Bank ABC", + "originalScopes": ["SCOPE_1", "SCOPE_2", "SCOPE_3"], "extras": { - "_requestedScopes": [ - "SCOPE_1", - "SCOPE_2", - "SCOPE_3" - ], "applicationOwner": "BANK_ABC" } } diff --git a/docs/Next-Step-Server.md b/docs/Next-Step-Server.md index c93f8f993..2aeed5c0a 100644 --- a/docs/Next-Step-Server.md +++ b/docs/Next-Step-Server.md @@ -27,6 +27,7 @@ Next Step Server implements following functionality: - update user and organization for an operation - update application context for an operation - set chosen authentication method + - execute an AFS action - management of organizations - list organizations - retrieve organization detail diff --git a/docs/Readme.md b/docs/Readme.md index 59abf7920..680aacbb4 100644 --- a/docs/Readme.md +++ b/docs/Readme.md @@ -18,6 +18,8 @@ Web Flow can also display OAuth 2.0 consent page with options required to be sel Additional authentication and authorization steps can be implemented by extending Web Flow. Each operation can be configured to require a different authentication/authorization flow based on security requirements of the operation. +Web Flow can be integrated with anti-fraud systems, provide information for fraud detection as well as perform an authentication step-down based on response from anti-fraud system. + ## Overview - [Basic Definitions](./Basic-Definitions.md) diff --git a/docs/Web-Flow-0.23.0.md b/docs/Web-Flow-0.23.0.md index f6a77407c..96b77fba4 100644 --- a/docs/Web-Flow-0.23.0.md +++ b/docs/Web-Flow-0.23.0.md @@ -123,8 +123,7 @@ When assigning the application context to the operation, it is now possible to p "description" : "Demo application", "originalScopes" : [ "aisp", "pisp" ], "extras" : { - "applicationOwner" : "Wultra", - "_requestedScopes" : [ "aisp", "pisp" ] + "applicationOwner" : "Wultra" } } } diff --git a/docs/Web-Flow-Configuration.md b/docs/Web-Flow-Configuration.md index 5d93eaf04..e37afeb49 100644 --- a/docs/Web-Flow-Configuration.md +++ b/docs/Web-Flow-Configuration.md @@ -270,8 +270,22 @@ The `RETAIL` organization is the default one (it is preselected in the UI). The _Warning: In case you configure multiple organizations make sure the user ID used in PowerAuth Web Flow, PowerAuth Server and PowerAuth Push Server is unique across all organizations and it is consistent in all PowerAuth backends. You can achieve this requirement by assigning unique user IDs in different organizations during user authentication. Alternatively the uniqueness requirement can be achieved by adding a prefix to all user IDs based on the organization against which the user was authenticated (e.g. `RETAIL.12345678`)._ +## Operation configuration + +TODO + +## AFS configuration + +TODO + ## Authentication methods and next step definitions Authentication methods and next step definitions need to be configured during Web Flow deployment. See chapter [Configuring Next Step Definitions](./Configuring-Next-Step-Definitions.md) for details. + +## Mobile token configuration + +Mobile token needs to be enabled and configured in case it should be available for Web Flow. + +See chapter [Mobile Token Configuration](./Mobile-Token-Configuration.md) for details. diff --git a/powerauth-webflow-client/src/main/java/io/getlime/security/powerauth/app/webflow/demo/controller/HomeController.java b/powerauth-webflow-client/src/main/java/io/getlime/security/powerauth/app/webflow/demo/controller/HomeController.java index 0aed0f7b5..2376d73fc 100644 --- a/powerauth-webflow-client/src/main/java/io/getlime/security/powerauth/app/webflow/demo/controller/HomeController.java +++ b/powerauth-webflow-client/src/main/java/io/getlime/security/powerauth/app/webflow/demo/controller/HomeController.java @@ -277,7 +277,6 @@ private String createApplicationContext(List requestedScopes) throws Nex applicationContext.setName("Demo application"); applicationContext.setDescription("Web Flow demo application"); applicationContext.getOriginalScopes().addAll(requestedScopes); - applicationContext.getExtras().put("_requestedScopes", requestedScopes); applicationContext.getExtras().put("applicationOwner", "Wultra"); try { From eea67b139e7c3a24d6d1f7065368e7806562f1e5 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Thu, 31 Oct 2019 16:56:57 -0400 Subject: [PATCH 118/197] Update jackson-databind --- powerauth-webflow-i18n/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/powerauth-webflow-i18n/pom.xml b/powerauth-webflow-i18n/pom.xml index c3cc87255..c762e1719 100644 --- a/powerauth-webflow-i18n/pom.xml +++ b/powerauth-webflow-i18n/pom.xml @@ -21,7 +21,7 @@ com.fasterxml.jackson.core jackson-databind - 2.9.10 + 2.9.10.1 org.springframework From 975b316cf7c621b45a61ca218bd3e414cbcf284d Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Fri, 1 Nov 2019 10:31:27 -0400 Subject: [PATCH 119/197] Update Data Adapter documentation, translate form data for Data Adapter AFS requests --- docs/Data-Adapter-REST-API-Reference.md | 160 +++++++++++++++++- .../service/AfsIntegrationService.java | 6 +- 2 files changed, 164 insertions(+), 2 deletions(-) diff --git a/docs/Data-Adapter-REST-API-Reference.md b/docs/Data-Adapter-REST-API-Reference.md index 9cebce59a..f2e011ae9 100644 --- a/docs/Data-Adapter-REST-API-Reference.md +++ b/docs/Data-Adapter-REST-API-Reference.md @@ -18,7 +18,7 @@ Following topics are covered in this chapter: - [Create OAuth 2.0 consent form](#create-oauth-20-consent-form) - [Validate OAuth 2.0 consent form](#validate-oauth-20-consent-form) - [Save OAuth 2.0 consent form](#save-oauth-20-consent-form) -- [Execute an AFS action] TODO +- [Execute an AFS action](#execute-an-afs-action) You can access the generated REST API documentation in deployed Data Adapter: @@ -1744,6 +1744,7 @@ The list of expected status codes: { "requestObject": { "userId": "12345678", + "organizationId": "RETAIL", "operationContext": { "id": "7d92fce2-c1f2-4d5b-b522-61da0749fdf7", "name": "authorize_payment", @@ -1894,6 +1895,7 @@ The list of expected status codes: { "requestObject": { "userId": "12345678", + "organizationId": "RETAIL", "operationContext": { "id": "7d92fce2-c1f2-4d5b-b522-61da0749fdf7", "name": "authorize_payment", @@ -2074,6 +2076,7 @@ The list of expected status codes: { "requestObject": { "userId": "12345678", + "organizationId": "RETAIL", "operationContext": { "id": "4a04667b-8a1a-46af-813c-cf71ffcde478", "name": "authorize_payment", @@ -2202,3 +2205,158 @@ The list of expected status codes: } } ``` + +## Execute an AFS action + +### Execute an AFS action - request parameters + +
+ + + + + + + + +
MethodPOST
Resource URI/api/afs/action
+ +The list of expected status codes: + +| Code | Description | +|------|-------------| +| 200 | OK response - AFS action was successfully executed | +| 400 | `OPERATION_CONTEXT_INVALID` - invalid operation context | +| 400 | `REMOTE_ERROR` - communication with remote system failed | +| 500 | Server errors - provide error details in the message, this is only for unexpected errors | + +### Execute an AFS action - request + +- Headers: + - `Content-Type: application/json` + +```json +{ + "requestObject": { + "userId": "12345678", + "organizationId": "RETAIL", + "operationContext": { + "id": "47a74437-83f9-4567-8c9e-270bea98d9de", + "name": "authorize_payment", + "data": "A1*A100CZK*Q238400856/0300**D20190629*NUtility Bill Payment - 05/2019", + "formData": { + "title": { + "id": "operation.title", + "message": "Confirm Payment" + }, + "greeting": { + "id": "operation.greeting", + "message": "Hello,\nplease confirm following payment:" + }, + "summary": { + "id": "operation.summary", + "message": "Hello, please confirm payment 100 CZK to account 238400856/0300." + }, + "config": [], + "banners": [], + "parameters": [ + { + "type": "AMOUNT", + "id": "operation.amount", + "label": "Amount", + "valueFormatType": "AMOUNT", + "formattedValues": { + "amount": "100.00", + "currency": "CZK" + }, + "amount": 100, + "currency": "CZK", + "currencyId": "operation.currency" + }, + { + "type": "KEY_VALUE", + "id": "operation.account", + "label": "To Account", + "valueFormatType": "ACCOUNT", + "formattedValues": { + "value": "238400856/0300" + }, + "value": "238400856/0300" + }, + { + "type": "KEY_VALUE", + "id": "operation.dueDate", + "label": "Due Date", + "valueFormatType": "DATE", + "formattedValues": { + "value": "Jun 29, 2019" + }, + "value": "2019-06-29" + }, + { + "type": "NOTE", + "id": "operation.note", + "label": "Note", + "valueFormatType": "TEXT", + "formattedValues": { + "value": "Utility Bill Payment - 05/2019" + }, + "note": "Utility Bill Payment - 05/2019" + } + ], + "userInput": { + "smsFallback.enabled": "true", + "operation.bankAccountChoice": "CZ4012340000000012345678", + "operation.bankAccountChoice.disabled": "true" + } + }, + "applicationContext": { + "id": "DEMO", + "name": "Demo application", + "description": "Web Flow demo application", + "originalScopes": [ + "pisp" + ], + "extras": { + "applicationOwner": "Wultra" + } + } + }, +` "afsRequestParameters": { + "afsType": "THREAT_MARK", + "afsAction": "APPROVAL_INIT", + "clientIpAddress": "", + "stepIndex": 1, + "username": null, + "authInstruments": [], + "authStepResult": null, + "operationTerminationReason": null + }, + "extras": { + "cookie1": "123xyz", + "cookie2": "abc67890" + } + } +} +``` + +### Response - AFS action was successfully executed + +- Status Code: `200` +- Headers: + - `Content-Type: application/json` + +```json +{ + "status": "OK", + "responseObject": { + "afsResponseApplied": true, + "afsLabel": "1FA", + "authStepOptions": { + "smsOtpRequired": true, + "passwordRequired": false + }, + "extras": {} + } +} +``` diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AfsIntegrationService.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AfsIntegrationService.java index c5ae98351..76f5c5fea 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AfsIntegrationService.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/service/AfsIntegrationService.java @@ -66,6 +66,7 @@ public class AfsIntegrationService { private final NextStepClient nextStepClient; private final DataAdapterClient dataAdapterClient; private final OperationSessionService operationSessionService; + private final MessageTranslationService messageTranslationService; private final ObjectMapper objectMapper = new ObjectMapper(); @@ -75,13 +76,15 @@ public class AfsIntegrationService { * @param nextStepClient Next Step client. * @param dataAdapterClient Data Adapter client. * @param operationSessionService Operation session service. + * @param messageTranslationService Message translation service. */ @Autowired - public AfsIntegrationService(WebFlowServicesConfiguration configuration, NextStepClient nextStepClient, DataAdapterClient dataAdapterClient, OperationSessionService operationSessionService) { + public AfsIntegrationService(WebFlowServicesConfiguration configuration, NextStepClient nextStepClient, DataAdapterClient dataAdapterClient, OperationSessionService operationSessionService, MessageTranslationService messageTranslationService) { this.configuration = configuration; this.nextStepClient = nextStepClient; this.dataAdapterClient = dataAdapterClient; this.operationSessionService = operationSessionService; + this.messageTranslationService = messageTranslationService; } @@ -140,6 +143,7 @@ private AfsResponse executeAfsAction(String operationId, AfsAction afsAction, Li // Retrieve operation ObjectResponse operationDetail = nextStepClient.getOperationDetail(operationId); GetOperationDetailResponse operation = operationDetail.getResponseObject(); + messageTranslationService.translateFormData(operation.getFormData()); ObjectResponse objectResponse = nextStepClient.getOperationConfigDetail(operation.getOperationName()); GetOperationConfigDetailResponse config = objectResponse.getResponseObject(); if (config.isAfsEnabled()) { From 1be41a68986470e7da5b997db1747786ca403fa9 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Fri, 1 Nov 2019 11:07:11 -0400 Subject: [PATCH 120/197] Document AFS endpoint in Next Step, unify endpoint naming conventions --- docs/Data-Adapter-REST-API-Reference.md | 2 +- docs/Next-Step-Server-REST-API-Reference.md | 49 ++++++++++++++++++- .../dataadapter/client/DataAdapterClient.java | 2 +- .../lib/nextstep/client/NextStepClient.java | 2 +- .../controller/OperationController.java | 2 +- 5 files changed, 52 insertions(+), 5 deletions(-) diff --git a/docs/Data-Adapter-REST-API-Reference.md b/docs/Data-Adapter-REST-API-Reference.md index f2e011ae9..30c053f46 100644 --- a/docs/Data-Adapter-REST-API-Reference.md +++ b/docs/Data-Adapter-REST-API-Reference.md @@ -2217,7 +2217,7 @@ The list of expected status codes: Resource URI - /api/afs/action + /api/afs/action/execute diff --git a/docs/Next-Step-Server-REST-API-Reference.md b/docs/Next-Step-Server-REST-API-Reference.md index 2db1c2b3e..34ee4d3ce 100644 --- a/docs/Next-Step-Server-REST-API-Reference.md +++ b/docs/Next-Step-Server-REST-API-Reference.md @@ -24,7 +24,7 @@ Following topics are covered in this chapter: - [Update application context for an operation](#update-application-context-for-an-operation) - [Update user for an operation](#update-user-for-an-operation) - [Set chosen authentication method](#set-chosen-authentication-method) - - [Store result of an AFS action] TODO + - [Store result of an AFS action](#store-result-of-an-afs-action) - [List operation configurations](#list-operation-configurations) - [Get operation configuration detail](#get-operation-configuration-detail) - [Organizations](#organizations) @@ -1871,6 +1871,53 @@ Alternative with `POST` method for environments which do not allow `PUT` methods } ``` +### Store result of an AFS action + +Store result of an AFS action for an operation. + + + + + + + + + + +
MethodPOST
Resource URI/operation/afs/action/create
+ +#### Request + +- Headers: + - `Content-Type: application/json` + +```json +{ + "requestObject": { + "operationId": "47a74437-83f9-4567-8c9e-270bea98d9de", + "afsAction": "APPROVAL_INIT", + "stepIndex": 1, + "requestAfsExtras": "{}", + "afsResponseApplied": true, + "afsLabel": "1FA", + "responseAfsExtras": "{}", + "timestampCreated": 1572618429867 + } +} +``` + +#### Response +- Status Code: `200` +- Headers: + - `Content-Type: application/json` + +```json +{ + "status" : "OK" +} +``` + + ### List operation configurations Retrieves list of operation configurations. diff --git a/powerauth-data-adapter-client/src/main/java/io/getlime/security/powerauth/lib/dataadapter/client/DataAdapterClient.java b/powerauth-data-adapter-client/src/main/java/io/getlime/security/powerauth/lib/dataadapter/client/DataAdapterClient.java index 0e9411ac1..002be0aae 100644 --- a/powerauth-data-adapter-client/src/main/java/io/getlime/security/powerauth/lib/dataadapter/client/DataAdapterClient.java +++ b/powerauth-data-adapter-client/src/main/java/io/getlime/security/powerauth/lib/dataadapter/client/DataAdapterClient.java @@ -460,7 +460,7 @@ public ObjectResponse executeAfsAction(String userId, String organi AfsRequest request = new AfsRequest(userId, organizationId, operationContext, afsRequestParameters, extras); HttpEntity> entity = new HttpEntity<>(new ObjectRequest<>(request)); ResponseEntity> response = restTemplate.exchange( - serviceUrl + "/api/afs/action", HttpMethod.POST, entity, + serviceUrl + "/api/afs/action/execute", HttpMethod.POST, entity, new ParameterizedTypeReference>() { }); return new ObjectResponse<>(response.getBody().getResponseObject()); diff --git a/powerauth-nextstep-client/src/main/java/io/getlime/security/powerauth/lib/nextstep/client/NextStepClient.java b/powerauth-nextstep-client/src/main/java/io/getlime/security/powerauth/lib/nextstep/client/NextStepClient.java index 1c6a71b9b..5eac0809e 100644 --- a/powerauth-nextstep-client/src/main/java/io/getlime/security/powerauth/lib/nextstep/client/NextStepClient.java +++ b/powerauth-nextstep-client/src/main/java/io/getlime/security/powerauth/lib/nextstep/client/NextStepClient.java @@ -724,7 +724,7 @@ public Response createAfsAction(String operationId, String afsAction, int stepIn request.setTimestampCreated(new Date()); HttpEntity> entity = new HttpEntity<>(new ObjectRequest<>(request)); // Exchange next step request with NextStep server. - ResponseEntity response = restTemplate.exchange(serviceUrl + "/operation/afs", HttpMethod.POST, entity, Response.class); + ResponseEntity response = restTemplate.exchange(serviceUrl + "/operation/afs/action/create", HttpMethod.POST, entity, Response.class); return response.getBody(); } catch (HttpStatusCodeException ex) { throw handleHttpError(ex); diff --git a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/controller/OperationController.java b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/controller/OperationController.java index 3cd06e863..d14c86096 100644 --- a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/controller/OperationController.java +++ b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/controller/OperationController.java @@ -388,7 +388,7 @@ private Response updateChosenAuthMethodImpl(ObjectRequest request) throws OperationNotFoundException { CreateAfsActionRequest afsRequest = request.getRequestObject(); logger.info("Received createAfsAction request, operation ID: {}, AFS action: {}", afsRequest.getOperationId(), afsRequest.getAfsAction()); From be8d6f4a5ce7dbd7319343505d257e662e69f9d4 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Fri, 1 Nov 2019 11:17:49 -0400 Subject: [PATCH 121/197] Add basic documentation for operation configuration and AFS configuration --- docs/Web-Flow-Configuration.md | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/docs/Web-Flow-Configuration.md b/docs/Web-Flow-Configuration.md index e37afeb49..fba110807 100644 --- a/docs/Web-Flow-Configuration.md +++ b/docs/Web-Flow-Configuration.md @@ -272,11 +272,30 @@ _Warning: In case you configure multiple organizations make sure the user ID use ## Operation configuration -TODO +Operations need to be configured in table `ns_operation_config`. + +Following parameters are configured for each operation: +- `operation_name` - unique operation name which identifies the operation +- `template_version` - template version, see documentation for [Operation Data](./Operation-Data.md) + - currently used template version is `A` +- `template_id` - template identifier, see documentation for [Operation Data](./Operation-Data.md) + - for approval (payment) use `A` + - for login use `B` +- `mobile_token_enabled` - whether mobile token is enabled for this operation +- `mobile_token_mode` - configuration of mobile token factors, use only when `mobile_token_enabled` value is true + - for 1FA use: `{"type":"1FA"}` + - for 2FA use e.g.: `{"type":"2FA","variants":["possession_knowledge","possession_biometry"]}` +- `afs_enabled` - whether anti-fraud service integration is enabled for this operation +- `afs_config_id` - identifier of AFS configuration, use only when `afs_enabled` value is true ## AFS configuration -TODO +Anti-fraud system integration needs to be configured in table `ns_operation_config`. + +Following parameters are configured for each AFS configuration: +- `afs_config_id` - unique identifier of AFS configuration which is configured in `ns_operation_config` table to link operation with AFS configuration +- `js_snippet_url` - URL which should be used for executing JavaScript code from anti-fraud system +- `parameters` - reserved for future use, specify value `{}` ## Authentication methods and next step definitions From 5ee4163ff6719de66d05a174d3ebc3ed809d3989 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Fri, 1 Nov 2019 11:38:12 -0400 Subject: [PATCH 122/197] Update documentation, provide complete operation detail example --- docs/Data-Adapter-REST-API-Reference.md | 26 +++---- docs/Next-Step-Server-REST-API-Reference.md | 76 +++++++++++++++++---- 2 files changed, 76 insertions(+), 26 deletions(-) diff --git a/docs/Data-Adapter-REST-API-Reference.md b/docs/Data-Adapter-REST-API-Reference.md index 30c053f46..504d68c38 100644 --- a/docs/Data-Adapter-REST-API-Reference.md +++ b/docs/Data-Adapter-REST-API-Reference.md @@ -182,7 +182,7 @@ The list of expected status codes during authentication: "userInput": {} }, "applicationContext": { - "id": "DEMO", + "id": "democlient", "name": "Demo application", "description": "Web Flow demo application", "originalScopes": ["pisp"], @@ -370,7 +370,7 @@ The list of expected status codes during authentication: "userInput": {} }, "applicationContext": { - "id": "DEMO", + "id": "democlient", "name": "Demo application", "description": "Web Flow demo application", "originalScopes": ["pisp"], @@ -692,7 +692,7 @@ The list of expected status codes: } }, "applicationContext": { - "id": "DEMO", + "id": "democlient", "name": "Demo application", "description": "Web Flow demo application", "originalScopes": ["pisp"], @@ -923,7 +923,7 @@ The list of expected status codes: } }, "applicationContext": { - "id": "DEMO", + "id": "democlient", "name": "Demo application", "description": "Web Flow demo application", "originalScopes": ["pisp"], @@ -1060,7 +1060,7 @@ Possible operation changes are: `DONE`, `CANCELED` and `FAILED`. } }, "applicationContext": { - "id": "DEMO", + "id": "democlient", "name": "Demo application", "description": "Web Flow demo application", "originalScopes": ["pisp"], @@ -1191,7 +1191,7 @@ The list of expected status codes: } }, "applicationContext": { - "id": "DEMO", + "id": "democlient", "name": "Demo application", "description": "Web Flow demo application", "originalScopes": ["pisp"], @@ -1346,7 +1346,7 @@ The list of expected status codes: } }, "applicationContext": { - "id": "DEMO", + "id": "democlient", "name": "Demo application", "description": "Web Flow demo application", "originalScopes": ["pisp"], @@ -1510,7 +1510,7 @@ See chapter [User Password Encryption and Decryption](./Data-Adapter-REST-API-Re } }, "applicationContext": { - "id": "DEMO", + "id": "democlient", "name": "Demo application", "description": "Web Flow demo application", "originalScopes": ["pisp"], @@ -1666,7 +1666,7 @@ The list of expected status codes: } }, "applicationContext": { - "id": "DEMO", + "id": "democlient", "name": "Demo application", "description": "Web Flow demo application", "originalScopes": ["pisp"], @@ -1815,7 +1815,7 @@ The list of expected status codes: } }, "applicationContext": { - "id": "DEMO", + "id": "democlient", "name": "Demo application", "description": "Web Flow demo application", "originalScopes": ["pisp"], @@ -1966,7 +1966,7 @@ The list of expected status codes: } }, "applicationContext": { - "id": "DEMO", + "id": "democlient", "name": "Demo application", "description": "Web Flow demo application", "originalScopes": ["pisp"], @@ -2147,7 +2147,7 @@ The list of expected status codes: } }, "applicationContext": { - "id": "DEMO", + "id": "democlient", "name": "Demo application", "description": "Web Flow demo application", "originalScopes": ["pisp"], @@ -2311,7 +2311,7 @@ The list of expected status codes: } }, "applicationContext": { - "id": "DEMO", + "id": "democlient", "name": "Demo application", "description": "Web Flow demo application", "originalScopes": [ diff --git a/docs/Next-Step-Server-REST-API-Reference.md b/docs/Next-Step-Server-REST-API-Reference.md index 34ee4d3ce..90ba164c3 100644 --- a/docs/Next-Step-Server-REST-API-Reference.md +++ b/docs/Next-Step-Server-REST-API-Reference.md @@ -587,6 +587,7 @@ Operation detail contains following data: * **operationData** - arbitrary string which contains data related to this operation, this data is not used during authorization and authentication (required). Since Web Flow version 0.20.0 the [structure of operation data is specified](./Off-line-Signatures-QR-Code.md#operation-data) for easier interpretation of data in Mobile token. * **steps** - next steps for the operation (required) * **history** - operation history with completed authentication steps (required) +* **afsActions** - AFS actions executed for the operation (optional) * **formData** - data displayed by the UI as well as data gathered from the user responses (required, discussed in details below) * **chosenAuthMethod** - authentication method chosen in current authentication step (optional) * **remainingAttempts** - remaining attempts for current authentication step (optional) @@ -599,17 +600,18 @@ Example of complete operation detail: { "status": "OK", "responseObject": { - "operationId": "0861a423-ac06-4bcb-a426-2052872163d3", + "operationId": "b7ecf869-2ebb-44bf-ae0e-0963e9d6d46f", "operationName": "authorize_payment_sca", "userId": "12345678", "organizationId": "RETAIL", + "accountStatus": "ACTIVE", "result": "CONTINUE", - "timestampCreated": "2019-07-30T12:36:19+0000", - "timestampExpires": "2019-07-30T12:41:40+0000", + "timestampCreated": "2019-11-01T15:35:37+0000", + "timestampExpires": "2019-11-01T15:41:16+0000", "operationData": "A1*A100CZK*Q238400856/0300**D20190629*NUtility Bill Payment - 05/2019", "steps": [ { - "authMethod": "LOGIN_SCA", + "authMethod": "CONSENT", "params": [] } ], @@ -618,6 +620,50 @@ Example of complete operation detail: "authMethod": "INIT", "authResult": "CONTINUE", "requestAuthStepResult": "CONFIRMED" + }, + { + "authMethod": "LOGIN_SCA", + "authResult": "CONTINUE", + "requestAuthStepResult": "CONFIRMED" + }, + { + "authMethod": "APPROVAL_SCA", + "authResult": "CONTINUE", + "requestAuthStepResult": "CONFIRMED" + } + ], + "afsActions": [ + { + "action": "LOGIN_INIT", + "stepIndex": 1, + "afsLabel": "2FA", + "afsResponseApplied": false, + "requestExtras": {}, + "responseExtras": {} + }, + { + "action": "LOGIN_AUTH", + "stepIndex": 1, + "afsLabel": null, + "afsResponseApplied": false, + "requestExtras": {}, + "responseExtras": {} + }, + { + "action": "APPROVAL_INIT", + "stepIndex": 1, + "afsLabel": "1FA", + "afsResponseApplied": true, + "requestExtras": {}, + "responseExtras": {} + }, + { + "action": "APPROVAL_AUTH", + "stepIndex": 1, + "afsLabel": "2FA", + "afsResponseApplied": false, + "requestExtras": {}, + "responseExtras": {} } ], "formData": { @@ -673,16 +719,20 @@ Example of complete operation detail: ], "dynamicDataLoaded": false, "userInput": { - "smsFallback.enabled": "true" + "smsFallback.enabled": "true", + "operation.bankAccountChoice": "CZ4012340000000012345678", + "operation.bankAccountChoice.disabled": "true" } }, - "chosenAuthMethod": null, - "remainingAttempts": 3, + "chosenAuthMethod": "CONSENT", + "remainingAttempts": 5, "applicationContext": { - "id": "DEMO", + "id": "democlient", "name": "Demo application", "description": "Web Flow demo application", - "originalScopes": ["pisp"], + "originalScopes": [ + "pisp" + ], "extras": { "applicationOwner": "Wultra" } @@ -1009,7 +1059,7 @@ Documentation for operation data is available [in a separate document](https://d } }, "applicationContext": { - "id": "DEMO", + "id": "democlient", "name": "Demo application", "description": "Web Flow demo application", "originalScopes": ["pisp"], @@ -1086,7 +1136,7 @@ Documentation for operation data is available [in a separate document](https://d ] }, "applicationContext": { - "id": "DEMO", + "id": "democlient", "name": "Demo application", "description": "Web Flow demo application", "originalScopes": ["pisp"], @@ -1425,7 +1475,7 @@ Retrieves detail of an operation in the Next Step server. "chosenAuthMethod": null, "remainingAttempts": 3, "applicationContext": { - "id": "DEMO", + "id": "democlient", "name": "Demo application", "description": "Web Flow demo application", "originalScopes": ["pisp"], @@ -1550,7 +1600,7 @@ Lists pending operation for given user and authentication method. "chosenAuthMethod": "LOGIN_SCA", "remainingAttempts": null, "applicationContext": { - "id": "DEMO", + "id": "democlient", "name": "Demo application", "description": "Web Flow demo application", "originalScopes": ["pisp"], From 33f6264774bdf4331da3e7c42e24ad79ede0d9a9 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Fri, 1 Nov 2019 11:43:44 -0400 Subject: [PATCH 123/197] Fix typo --- docs/Data-Adapter-REST-API-Reference.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Data-Adapter-REST-API-Reference.md b/docs/Data-Adapter-REST-API-Reference.md index 504d68c38..ec4b219f9 100644 --- a/docs/Data-Adapter-REST-API-Reference.md +++ b/docs/Data-Adapter-REST-API-Reference.md @@ -2322,7 +2322,7 @@ The list of expected status codes: } } }, -` "afsRequestParameters": { + "afsRequestParameters": { "afsType": "THREAT_MARK", "afsAction": "APPROVAL_INIT", "clientIpAddress": "", From dc680acedcd65a2e819d8450354828a8bf533ae8 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Fri, 1 Nov 2019 11:47:09 -0400 Subject: [PATCH 124/197] Fixed typo --- docs/Data-Adapter-REST-API-Reference.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Data-Adapter-REST-API-Reference.md b/docs/Data-Adapter-REST-API-Reference.md index ec4b219f9..dfa250b5d 100644 --- a/docs/Data-Adapter-REST-API-Reference.md +++ b/docs/Data-Adapter-REST-API-Reference.md @@ -210,7 +210,7 @@ The list of expected status codes during authentication: } ``` -### Response - user account exists, however the account is not active (e.g. blockeds) +### Response - user account exists, however the account is not active (e.g. blocked) ```json { From 52ed20773526307cbcf184d1cd83bef20692b46b Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Fri, 1 Nov 2019 11:51:03 -0400 Subject: [PATCH 125/197] Fixed template IDs --- docs/Web-Flow-Configuration.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Web-Flow-Configuration.md b/docs/Web-Flow-Configuration.md index fba110807..6cab63bf3 100644 --- a/docs/Web-Flow-Configuration.md +++ b/docs/Web-Flow-Configuration.md @@ -279,8 +279,8 @@ Following parameters are configured for each operation: - `template_version` - template version, see documentation for [Operation Data](./Operation-Data.md) - currently used template version is `A` - `template_id` - template identifier, see documentation for [Operation Data](./Operation-Data.md) - - for approval (payment) use `A` - - for login use `B` + - for approval (payment) use `1` + - for login use `2` - `mobile_token_enabled` - whether mobile token is enabled for this operation - `mobile_token_mode` - configuration of mobile token factors, use only when `mobile_token_enabled` value is true - for 1FA use: `{"type":"1FA"}` From a847fce65c595584e124f1f3f3c1e7a05e543644 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Fri, 1 Nov 2019 12:00:31 -0400 Subject: [PATCH 126/197] Update AFS label in sample response --- docs/Next-Step-Server-REST-API-Reference.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Next-Step-Server-REST-API-Reference.md b/docs/Next-Step-Server-REST-API-Reference.md index 90ba164c3..e0d51a65e 100644 --- a/docs/Next-Step-Server-REST-API-Reference.md +++ b/docs/Next-Step-Server-REST-API-Reference.md @@ -644,7 +644,7 @@ Example of complete operation detail: { "action": "LOGIN_AUTH", "stepIndex": 1, - "afsLabel": null, + "afsLabel": "2FA", "afsResponseApplied": false, "requestExtras": {}, "responseExtras": {} From 2326481b7b145b6001f19f5909acd22c5091aa4b Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Fri, 1 Nov 2019 23:37:51 -0400 Subject: [PATCH 127/197] Documentation update --- docs/Basic-Definitions.md | 11 ++++++++--- docs/Compilation,-Packaging-and-Deployment.md | 1 + docs/Database-Table-Structure.md | 4 ++++ docs/OAuth-2.0-Integration.md | 3 ++- 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/docs/Basic-Definitions.md b/docs/Basic-Definitions.md index c98512707..a3e2f03a5 100644 --- a/docs/Basic-Definitions.md +++ b/docs/Basic-Definitions.md @@ -78,6 +78,7 @@ The operation may fail due to different reasons, such as: - Maximum number of attempts is reached causing authentication method to fail. - Operation times out. - User cancels the operation. +- User refreshes the browser, navigates to another URL or closes the browser window. ### Operation ID @@ -162,7 +163,7 @@ Whenever operation progresses to the next step, previous status of operation is ### Operation review -Operation review is a special authentication step which handles review of operation form data and next authentication method choice. This step is executed after user is authenticated and the next step is an authorization step. +Operation review is a special non-SCA authentication step which handles review of operation form data and next authentication method choice. This step is executed after user is authenticated and the next step is an authorization step. ### Organization @@ -177,7 +178,11 @@ See chapter [Configuring Next Step Definitions](./Configuring-Next-Step-Definiti ### Authentication method choice -The user becomes authenticated and there are multiple choices available for the next authentication method (which is usually performing authorization, not authentication). The next authentication method is executed based on user choice. +The user becomes authenticated and there are multiple choices available for the next authentication method (which is usually performing authorization, not authentication). The next authentication method is executed based on user choice. This approach is used in non-SCA authentication methods. + +### Authentication instrument + +The user has a choice of using different authentication instruments (SMS, mobile token, hardware token, etc.). The chosen authentication instrument influences how authentication / authorization is done. This approach is used in SCA authentication methods. ### Next step of an operation @@ -195,7 +200,7 @@ See chapter [Configuring Next Step Definitions](./Configuring-Next-Step-Definiti ### Next step user preferences -Next step user preferences store configuration for different authentication methods. +Next step user preferences store configuration for different authentication methods, for instance activation configured for mobile token. ### Authorization failure count diff --git a/docs/Compilation,-Packaging-and-Deployment.md b/docs/Compilation,-Packaging-and-Deployment.md index 65eb500a5..eb1c0e879 100644 --- a/docs/Compilation,-Packaging-and-Deployment.md +++ b/docs/Compilation,-Packaging-and-Deployment.md @@ -8,6 +8,7 @@ Web Flow can be deployed to any Java web container (such as Tomcat) using war ar In order to build Web Flow using Maven, following PowerAuth dependencies need to be satisfied: +* [powerauth-server](https://github.com/wultra/powerauth-server) - dependency **powerauth-java-client-spring** * [powerauth-push-server](https://github.com/wultra/powerauth-push-server) - dependency **powerauth-push-client** * [powerauth-restful-integration](https://github.com/wultra/powerauth-restful-integration) - dependency **powerauth-restful-security-spring** * [powerauth-crypto](https://github.com/wultra/powerauth-crypto) - dependency **powerauth-java-crypto** diff --git a/docs/Database-Table-Structure.md b/docs/Database-Table-Structure.md index 56d257247..48820e2f8 100644 --- a/docs/Database-Table-Structure.md +++ b/docs/Database-Table-Structure.md @@ -62,7 +62,11 @@ Web Flow can coexist with PowerAuth in the same database schema or it can use a ### Database Tables for the Third Party Provider - **tpp_consent** - the table stores definitions of consents. + - **tpp_user_consent** - the table stores consents given by the user. + - **tpp_user_consent_history** - the table stores changes of consents given by the user. + - **tpp_detail** - the table stores information about third parties. + - **tpp_app_detail** - the table store information about third party applications. diff --git a/docs/OAuth-2.0-Integration.md b/docs/OAuth-2.0-Integration.md index 3c8ad854c..0ab23a8c3 100644 --- a/docs/OAuth-2.0-Integration.md +++ b/docs/OAuth-2.0-Integration.md @@ -21,8 +21,9 @@ Web Flow only uses OAuth 2.0 access tokens and does not issue refresh tokens. Web Flow implements a basis Resource Server which provides access to the user profile. The Resource Server is provided by the [powerauth-webflow-resources project](../powerauth-webflow-resources). -Web Flow Resource Serverr provides following endpoints: +Web Flow Resource Server provides following endpoints: - `/api/secure/profile/me` - provides information about authenticated user (user ID, firstName, familyName), connection (language, SCA) and service (application name, environment, timestamp) +- `/api/secure/profile/me/info` - provides user information for OpenID Connect (OIDC) ## OAuth 2.0 Client From 7468002b0ab6b14687b57497089a5a628b71bcc3 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Sat, 2 Nov 2019 10:10:41 -0400 Subject: [PATCH 128/197] Enable Spring actuator, update dependencies --- pom.xml | 2 +- powerauth-nextstep/pom.xml | 4 ++++ powerauth-webflow-client/pom.xml | 4 ++++ powerauth-webflow/package-lock.json | 12 +++++++++++- powerauth-webflow/pom.xml | 4 ++++ 5 files changed, 24 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index cb1a3a07e..83c9eaf92 100644 --- a/pom.xml +++ b/pom.xml @@ -14,7 +14,7 @@ org.springframework.boot spring-boot-starter-parent - 2.1.6.RELEASE + 2.1.9.RELEASE diff --git a/powerauth-nextstep/pom.xml b/powerauth-nextstep/pom.xml index c30a77205..0e98d8c9e 100644 --- a/powerauth-nextstep/pom.xml +++ b/powerauth-nextstep/pom.xml @@ -36,6 +36,10 @@ org.springframework.boot spring-boot-starter-data-jpa
+ + org.springframework.boot + spring-boot-starter-actuator + diff --git a/powerauth-webflow-client/pom.xml b/powerauth-webflow-client/pom.xml index 790c245a6..58aa6410b 100644 --- a/powerauth-webflow-client/pom.xml +++ b/powerauth-webflow-client/pom.xml @@ -58,6 +58,10 @@ org.springframework.boot spring-boot-starter-data-jpa + + org.springframework.boot + spring-boot-starter-actuator + diff --git a/powerauth-webflow/package-lock.json b/powerauth-webflow/package-lock.json index 8310c46b4..fb8703adf 100644 --- a/powerauth-webflow/package-lock.json +++ b/powerauth-webflow/package-lock.json @@ -6036,10 +6036,20 @@ "debug": "^3.1.0", "get-uri": "^2.0.0", "http-proxy-agent": "^2.1.0", - "https-proxy-agent-snyk-fork": "git://github.com/snyk/node-https-proxy-agent.git#fix/https-agent-vuln", + "https-proxy-agent-snyk-fork": "git://github.com/snyk/node-https-proxy-agent.git#5e86ccb682d0c833c8daa25ee6f91c670161cd66", "pac-resolver": "^3.0.0", "raw-body": "^2.2.0", "socks-proxy-agent": "^4.0.1" + }, + "dependencies": { + "https-proxy-agent-snyk-fork": { + "version": "git://github.com/snyk/node-https-proxy-agent.git#5e86ccb682d0c833c8daa25ee6f91c670161cd66", + "from": "git://github.com/snyk/node-https-proxy-agent.git#fix/https-agent-vuln", + "requires": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + } + } } }, "pac-resolver": { diff --git a/powerauth-webflow/pom.xml b/powerauth-webflow/pom.xml index 4429b8558..fcd965a9c 100644 --- a/powerauth-webflow/pom.xml +++ b/powerauth-webflow/pom.xml @@ -60,6 +60,10 @@ org.springframework.security spring-security-messaging + + org.springframework.boot + spring-boot-starter-actuator + From 2c9cd7fe1d33840b4da702aaf71a65d446ff1dc8 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Sat, 2 Nov 2019 10:29:05 -0400 Subject: [PATCH 129/197] Documentation update --- docs/Next-Step-Server-REST-API-Reference.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/Next-Step-Server-REST-API-Reference.md b/docs/Next-Step-Server-REST-API-Reference.md index e0d51a65e..572289395 100644 --- a/docs/Next-Step-Server-REST-API-Reference.md +++ b/docs/Next-Step-Server-REST-API-Reference.md @@ -1817,7 +1817,7 @@ Alternative with `POST` method for environments which do not allow `PUT` methods ### Update user for an operation -Updates user ID and organization ID for an operation. +Updates user ID, organization ID and account status for an operation. @@ -1853,7 +1853,8 @@ Alternative with `POST` method for environments which do not allow `PUT` methods "requestObject": { "operationId": "0a044408-aea0-433a-80cf-6371dc2a76c0", "userId": "12345678", - "organizationId": "RETAIL" + "organizationId": "RETAIL", + "accountStatus": "ACTIVE" } } ``` From 154d8a63544ce9c9625a7735c415add9118ed6fb Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Sat, 2 Nov 2019 10:33:11 -0400 Subject: [PATCH 130/197] Update request/response JSON in documentation --- docs/Next-Step-Server-REST-API-Reference.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/Next-Step-Server-REST-API-Reference.md b/docs/Next-Step-Server-REST-API-Reference.md index 572289395..a4888f559 100644 --- a/docs/Next-Step-Server-REST-API-Reference.md +++ b/docs/Next-Step-Server-REST-API-Reference.md @@ -1512,7 +1512,7 @@ Lists pending operation for given user and authentication method. { "requestObject" : { "userId" : "12345678", - "authMethod" : "POWERAUTH_TOKEN" + "mobileTokenOnly" : true } } ``` @@ -1531,6 +1531,7 @@ Lists pending operation for given user and authentication method. "operationName": "authorize_payment_sca", "userId": "12345678", "organizationId": "RETAIL", + "accountStatus": "ACTIVE", "result": "CONTINUE", "timestampCreated": "2019-07-30T12:57:28+0000", "timestampExpires": "2019-07-30T13:02:28+0000", From e8ab6e4744a02dac5a6ab3bb08be320658950110 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Sat, 2 Nov 2019 10:46:25 -0400 Subject: [PATCH 131/197] Update documentation for Web Flow configuration --- docs/Compilation,-Packaging-and-Deployment.md | 2 +- docs/Web-Flow-Configuration.md | 67 +++++++++++++------ docs/Web-Flow-Installation-Manual.md | 2 +- .../src/main/resources/application.properties | 3 +- .../src/main/resources/application.properties | 2 +- .../src/main/resources/application.properties | 11 +-- 6 files changed, 56 insertions(+), 31 deletions(-) diff --git a/docs/Compilation,-Packaging-and-Deployment.md b/docs/Compilation,-Packaging-and-Deployment.md index eb1c0e879..0ad7c0607 100644 --- a/docs/Compilation,-Packaging-and-Deployment.md +++ b/docs/Compilation,-Packaging-and-Deployment.md @@ -38,7 +38,7 @@ The whole installation process is described in the [Web Flow Installation Manual You can test the web flow demo application by navigating to: http://localhost:8080/powerauth-webflow-client -* Use the "Login" action to test the user authentication. The Credential Server Sample project uses "test" as password for any username. +* Use the "Login" action to test the user authentication. The Data Adapter sample project uses "test" as password for any username. * Use the "Payment (DEMO)" action to test payment authorization. You will need to enable POWERAUTH_TOKEN authentication method for the user who will authorize the payment (using [Next Step REST API](./Next-Step-Server-REST-API-Reference.md#enable-an-authentication-method-for-given-user)). * Use the "Authorization" action to test operation authorization. In order to test this action you will need to create an operation and obtain its operationId (using [Next Step REST API](./Next-Step-Server-REST-API-Reference.md#create-an-operation)). diff --git a/docs/Web-Flow-Configuration.md b/docs/Web-Flow-Configuration.md index 6cab63bf3..40fc40324 100644 --- a/docs/Web-Flow-Configuration.md +++ b/docs/Web-Flow-Configuration.md @@ -16,7 +16,7 @@ At minimum the following configuration properties should be updated based on dep Complete configuration file: ```properties -# Credential Server Service URL +# Data Adapter Server Service URL powerauth.dataAdapter.service.url=http://localhost:8080/powerauth-data-adapter # Next Step Server Service URL @@ -37,11 +37,6 @@ powerauth.webflow.page.title=PowerAuth Web Flow powerauth.webflow.page.ext-resources.location=classpath:/static/resources/ powerauth.webflow.page.custom-css.url= -# Database Keep-Alive -spring.datasource.test-while-idle=true -spring.datasource.test-on-borrow=true -spring.datasource.validation-query=SELECT 1 - # Database Configuration - MySQL spring.datasource.url=jdbc:mysql://localhost:3306/powerauth spring.datasource.username=powerauth @@ -51,6 +46,15 @@ spring.jpa.properties.hibernate.connection.CharSet=utf8mb4 spring.jpa.properties.hibernate.connection.characterEncoding=utf8 spring.jpa.properties.hibernate.connection.useUnicode=true +# Database Configuration - PostgreSQL +#spring.datasource.url=jdbc:postgresql://localhost:5432/powerauth +#spring.datasource.username=powerauth +#spring.datasource.password=powerauth +#spring.datasource.driver-class-name=org.postgresql.Driver +#spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults=false +#spring.jpa.properties.hibernate.connection.characterEncoding=utf8 +#spring.jpa.properties.hibernate.connection.useUnicode=true + # Database Configuration - Oracle #spring.datasource.url=jdbc:oracle:thin:@//localhost:1521/powerauth #spring.datasource.username=powerauth @@ -65,7 +69,7 @@ powerauth.webflow.service.applicationName=powerauth-webflow powerauth.webflow.service.applicationDisplayName=PowerAuth Web Flow Server powerauth.webflow.service.applicationEnvironment= -# Configuration of Offline mode +# Configuration of Offline Mode powerauth.webflow.offlineMode.available=true # Configuration of Android Security Warning @@ -81,6 +85,14 @@ powerauth.webflow.sms.resend.delayMs=60000 # Configuration of Delay for Showing Operation Timeout Warning in Milliseconds powerauth.webflow.timeout.warning.delayMs=60000 + +# Anti-fraud system configuration +powerauth.webflow.afs.enabled=true +powerauth.webflow.afs.type=THREAT_MARK +powerauth.webflow.afs.detectIpAddress=false +powerauth.webflow.afs.forceIpv4=true +powerauth.webflow.afs.tm.cookies.deviceTag= +powerauth.webflow.afs.tm.cookies.sessionSid= ``` Encryption of user passwords during transport can be configured using following properties: @@ -113,11 +125,6 @@ At minimum the following configuration properties should be updated based on dep Complete configuration file: ```properties -# Database Keep-Alive -spring.datasource.test-while-idle=true -spring.datasource.test-on-borrow=true -spring.datasource.validation-query=SELECT 1 - # Database Configuration - MySQL spring.datasource.url=jdbc:mysql://localhost:3306/powerauth spring.datasource.username=powerauth @@ -127,6 +134,15 @@ spring.jpa.properties.hibernate.connection.CharSet=utf8mb4 spring.jpa.properties.hibernate.connection.characterEncoding=utf8 spring.jpa.properties.hibernate.connection.useUnicode=true +# Database Configuration - PostgreSQL +#spring.datasource.url=jdbc:postgresql://localhost:5432/powerauth +#spring.datasource.username=powerauth +#spring.datasource.password= +#spring.datasource.driver-class-name=org.postgresql.Driver +#spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults=false +#spring.jpa.properties.hibernate.connection.characterEncoding=utf8 +#spring.jpa.properties.hibernate.connection.useUnicode=true + # Database Configuration - Oracle #spring.datasource.url=jdbc:oracle:thin:@//localhost:1521/powerauth #spring.datasource.username=powerauth @@ -153,11 +169,6 @@ At minimum the following configuration properties should be updated based on dep Complete configuration file: ```properties -# Database Keep-Alive -spring.datasource.test-while-idle=true -spring.datasource.test-on-borrow=true -spring.datasource.validation-query=SELECT 1 - # Database Configuration - MySQL spring.datasource.url=jdbc:mysql://localhost:3306/powerauth spring.datasource.username=powerauth @@ -167,6 +178,15 @@ spring.jpa.properties.hibernate.connection.CharSet=utf8mb4 spring.jpa.properties.hibernate.connection.characterEncoding=utf8 spring.jpa.properties.hibernate.connection.useUnicode=true +# Database Configuration - PostgreSQL +#spring.datasource.url=jdbc:postgresql://localhost:5432/postgres +#spring.datasource.username=powerauth +#spring.datasource.password= +#spring.datasource.driver-class-name=org.postgresql.Driver +#spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults=false +#spring.jpa.properties.hibernate.connection.characterEncoding=utf8 +#spring.jpa.properties.hibernate.connection.useUnicode=true + # Database Configuration - Oracle #spring.datasource.url=jdbc:oracle:thin:@//localhost:1521/powerauth #spring.datasource.username=powerauth @@ -180,11 +200,6 @@ spring.jpa.properties.hibernate.connection.useUnicode=true powerauth.authorization.sms-otp.expiration-time-in-seconds=300 # Maximum number of tries to verify a SMS OTP authorization code powerauth.authorization.sms-otp.max-verify-tries-per-message=5 - -# Application Service Configuration -powerauth.dataAdapter.service.applicationName=powerauth-data-adapter -powerauth.dataAdapter.service.applicationDisplayName=PowerAuth Data Adapter -powerauth.dataAdapter.service.applicationEnvironment= ``` ## Web Flow Client @@ -297,6 +312,14 @@ Following parameters are configured for each AFS configuration: - `js_snippet_url` - URL which should be used for executing JavaScript code from anti-fraud system - `parameters` - reserved for future use, specify value `{}` +AFS also needs to be configured using application properties: +- `powerauth.webflow.afs.enabled` - enables AFS integration +- `powerauth.webflow.afs.type` - AFS product type (e.g. `THREAT_MARK`) +- `powerauth.webflow.afs.detectIpAddress` - whether Web Flow should attempt to detect client IP addresses +- `powerauth.webflow.afs.forceIpv4` - whether only IPv4 addresses should be used when detecting client IP addresses +- `powerauth.webflow.afs.tm.cookies.deviceTag` - name of Threat Mark `deviceTag` cookie +- `powerauth.webflow.afs.tm.cookies.sessionSid` - name of Threat Mark `sessionSid` cookie + ## Authentication methods and next step definitions Authentication methods and next step definitions need to be configured during Web Flow deployment. diff --git a/docs/Web-Flow-Installation-Manual.md b/docs/Web-Flow-Installation-Manual.md index 69e6a0149..c697a2973 100644 --- a/docs/Web-Flow-Installation-Manual.md +++ b/docs/Web-Flow-Installation-Manual.md @@ -117,7 +117,7 @@ Note that the JDBC settings differ based on used database vendor and JDBC driver - + diff --git a/powerauth-nextstep/src/main/resources/application.properties b/powerauth-nextstep/src/main/resources/application.properties index 9d1b2e684..d63355b31 100644 --- a/powerauth-nextstep/src/main/resources/application.properties +++ b/powerauth-nextstep/src/main/resources/application.properties @@ -6,6 +6,7 @@ spring.datasource.url=jdbc:mysql://localhost:3306/powerauth spring.datasource.username=powerauth spring.datasource.password= spring.datasource.driver-class-name=com.mysql.jdbc.Driver +spring.jpa.properties.hibernate.connection.CharSet=utf8mb4 spring.jpa.properties.hibernate.connection.characterEncoding=utf8 spring.jpa.properties.hibernate.connection.useUnicode=true @@ -32,7 +33,7 @@ powerauth.nextstep.operation.expirationTimeInSeconds=300 # Application Service Configuration powerauth.nextstep.service.applicationName=powerauth-nextstep -powerauth.nextstep.service.applicationDisplayName=PowerAuth 2.0 Next Step Server +powerauth.nextstep.service.applicationDisplayName=PowerAuth Next Step Server powerauth.nextstep.service.applicationEnvironment= # Disable new Hibernate ID generators diff --git a/powerauth-webflow-client/src/main/resources/application.properties b/powerauth-webflow-client/src/main/resources/application.properties index 9ad8bf5b3..a78ed0dab 100644 --- a/powerauth-webflow-client/src/main/resources/application.properties +++ b/powerauth-webflow-client/src/main/resources/application.properties @@ -13,7 +13,7 @@ powerauth.service.ssl.acceptInvalidSslCertificate=false # Application Service Configuration powerauth.webflow.client.service.applicationName=powerauth-webflow-client -powerauth.webflow.client.service.applicationDisplayName=PowerAuth 2.0 Web Flow Client +powerauth.webflow.client.service.applicationDisplayName=PowerAuth Web Flow Client powerauth.webflow.client.service.applicationEnvironment= # Disable JMX diff --git a/powerauth-webflow/src/main/resources/application.properties b/powerauth-webflow/src/main/resources/application.properties index 2a0e592d8..5d04da53d 100644 --- a/powerauth-webflow/src/main/resources/application.properties +++ b/powerauth-webflow/src/main/resources/application.properties @@ -1,24 +1,24 @@ # Allow externalization of properties using application-ext.properties spring.profiles.active=ext -# Credential Server Service URL +# Data Adapter Server Service URL powerauth.dataAdapter.service.url=http://localhost:8080/powerauth-data-adapter # Next Step Server Service URL powerauth.nextstep.service.url=http://localhost:8080/powerauth-nextstep -# PowerAuth 2.0 Server URL +# PowerAuth Server URL powerauth.service.url=http://localhost:8080/powerauth-java-server/soap powerauth.service.security.clientToken= powerauth.service.security.clientSecret= # Whether invalid SSL certificates should be accepted powerauth.service.ssl.acceptInvalidSslCertificate=false -# PowerAuth 2.0 Push Server URL +# PowerAuth Push Server URL powerauth.push.service.url=http://localhost:8080/powerauth-push-server # Dynamic CSS stylesheet URL -powerauth.webflow.page.title=PowerAuth 2.0 Web Flow +powerauth.webflow.page.title=PowerAuth Web Flow powerauth.webflow.page.ext-resources.location=classpath:/static/resources/ powerauth.webflow.page.custom-css.url= @@ -27,6 +27,7 @@ spring.datasource.url=jdbc:mysql://localhost:3306/powerauth spring.datasource.username=powerauth spring.datasource.password= spring.datasource.driver-class-name=com.mysql.jdbc.Driver +spring.jpa.properties.hibernate.connection.CharSet=utf8mb4 spring.jpa.properties.hibernate.connection.characterEncoding=utf8 spring.jpa.properties.hibernate.connection.useUnicode=true @@ -50,7 +51,7 @@ spring.jpa.properties.hibernate.connection.useUnicode=true # Application Service Configuration powerauth.webflow.service.applicationName=powerauth-webflow -powerauth.webflow.service.applicationDisplayName=PowerAuth 2.0 Web Flow Server +powerauth.webflow.service.applicationDisplayName=PowerAuth Web Flow Server powerauth.webflow.service.applicationEnvironment= # Configuration of Offline Mode From c9f07ddd5c8b0296f09c15f853eb1da7e3b30fad Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Tue, 5 Nov 2019 09:59:27 -0500 Subject: [PATCH 132/197] Add link to migration instructions --- docs/Migration-Instructions.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/Migration-Instructions.md b/docs/Migration-Instructions.md index c403274ff..91a47b356 100644 --- a/docs/Migration-Instructions.md +++ b/docs/Migration-Instructions.md @@ -2,6 +2,7 @@ This page contains PowerAuth Web Flow migration instructions. +- [PowerAuth Web Flow 0.23.0](./Web-Flow-0.23.0.md) - [PowerAuth Web Flow 0.22.0](./Web-Flow-0.22.0.md) - [PowerAuth Web Flow 0.21.0](./Web-Flow-0.21.0.md) - [PowerAuth Web Flow 0.20.0](./Web-Flow-0.20.0.md) From bf14d90c4e953a55795177c65580d11d80ac7460 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Tue, 5 Nov 2019 10:34:55 -0500 Subject: [PATCH 133/197] Downgrade Spring OAuth dependency because OAuth behaviour has changed --- powerauth-webflow/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/powerauth-webflow/pom.xml b/powerauth-webflow/pom.xml index fcd965a9c..ae09cacf2 100644 --- a/powerauth-webflow/pom.xml +++ b/powerauth-webflow/pom.xml @@ -40,7 +40,7 @@ org.springframework.security.oauth.boot spring-security-oauth2-autoconfigure - 2.1.8.RELEASE + 2.0.0.RELEASE bcpkix-jdk15on From 6de0f43c63ebd640632cf13143476b78e9cd1f73 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Wed, 6 Nov 2019 19:12:47 +0100 Subject: [PATCH 134/197] Handle null pointer exception for account status --- .../lib/webflow/resource/controller/UserProfileController.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/powerauth-webflow-resources/src/main/java/io/getlime/security/powerauth/lib/webflow/resource/controller/UserProfileController.java b/powerauth-webflow-resources/src/main/java/io/getlime/security/powerauth/lib/webflow/resource/controller/UserProfileController.java index b24be6cd1..a73a0380d 100644 --- a/powerauth-webflow-resources/src/main/java/io/getlime/security/powerauth/lib/webflow/resource/controller/UserProfileController.java +++ b/powerauth-webflow-resources/src/main/java/io/getlime/security/powerauth/lib/webflow/resource/controller/UserProfileController.java @@ -89,7 +89,8 @@ public UserProfileController(DataAdapterClient client, AuthorizationServerTokenS final ObjectResponse userDetailResponse = client.fetchUserDetail(authentication.getUserAuthentication().getName(), organizationId); - if (userDetailResponse.getResponseObject().getAccountStatus() != AccountStatus.ACTIVE) { + if (userDetailResponse.getResponseObject().getAccountStatus() == null + || userDetailResponse.getResponseObject().getAccountStatus() != AccountStatus.ACTIVE) { // Return dummy user in case user account is not ACTIVE return anonymousUser(); } From 420c6e7b3a845b2dea7914c1784b9f7d866a45b4 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Thu, 7 Nov 2019 18:04:25 +0100 Subject: [PATCH 135/197] Dependency cleanup for OAuth2 --- powerauth-webflow-resources/pom.xml | 6 ++++++ powerauth-webflow/pom.xml | 11 ----------- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/powerauth-webflow-resources/pom.xml b/powerauth-webflow-resources/pom.xml index 4943e8e94..412cd70a0 100644 --- a/powerauth-webflow-resources/pom.xml +++ b/powerauth-webflow-resources/pom.xml @@ -35,6 +35,12 @@ org.springframework.security.oauth.boot spring-security-oauth2-autoconfigure 2.1.8.RELEASE + + + bcpkix-jdk15on + org.bouncycastle + + org.springframework.boot diff --git a/powerauth-webflow/pom.xml b/powerauth-webflow/pom.xml index ae09cacf2..2c54ed852 100644 --- a/powerauth-webflow/pom.xml +++ b/powerauth-webflow/pom.xml @@ -37,17 +37,6 @@ org.springframework.boot spring-boot-starter-data-jpa - - org.springframework.security.oauth.boot - spring-security-oauth2-autoconfigure - 2.0.0.RELEASE - - - bcpkix-jdk15on - org.bouncycastle - - - org.springframework.boot spring-boot-starter-thymeleaf From 6c80cf4c5cea4bd2759c832f55217652ca9c23da Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Tue, 12 Nov 2019 18:04:59 +0100 Subject: [PATCH 136/197] Update Coverity scan configuration --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 53cd22111..f60b9ca9d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,7 +7,7 @@ branches: - coverity_scan env: global: - - secure: "VP4tgKnWZ3NoaXeaL2PfCCVvltddXrUl9BygxdPncmoFIYiTtb+cjpCwg7HdFYE0yRlM1lASQATUcAVOF988ow0wK4phLbma+fzKXWl3nQOMsESRkxo78dmRDSJrbiTe8PU2ocKOUkiGOt/pLWirUUHL5OUgRCT8C4gXnGsfOsiOgDCj7+YOMq4J3GUw+TVgP3Mvgoe7eVIFJcW1fQeI2I2GOPcRo4J6vgWYk2odxslaSloXMbHS7WMgdGIeM3Eo+MrDDATUMfEr39jlGtDSFuP+HnVNgScnt+pyeJn38kE9jqoX16sV3uGpNQV3SDiABJOFVrJOa3O9b3xUUU+F1Gq3TWPVT6sgGcjDXXWfdWBm25RP5GAfCDgeBKHtIFpTeZBWHEJqzTzWhoM0DmKPnaHzhD+atCHYC7ABqohQV7O70CzEjQxFS1x9qKm9T1Kx8F3XyK+s2hJRvNfHL6U0x4KnuZgKyt/1WG12j5ouFmW4JFipRAizUr4gtmXtf+Bza8Yt22LQwUH4xOmpI1htK5X8vZkxjUnldG7BBMljKymjeCkCdqQ/WPsWtA1zPFPEE8R5VmH3osqs1gS9HFO9R1BW10Z7S/SkijZZzy+WhV2Eg38A6m70XQnk9yAOS4YvF9W8AkxvLo3DwDFFP6aCuHmOVrvUOIIX2cKIExfI1k8=" + - secure: "U+RrKhdImhnpzPM/m/fC14B96MCI6gfPzClhakmgVVRNHYe5YDc2+xNwdY2QEM5k6HY2Jm3u84l/RlAY8A8qijKlwMqXpXE9bnMl02ONpdknN1lX1vds5OhEGPCoXvjMTN7RpR/0/5UBIDH+mpq2hN+FjLa1yO8FhvrrcNiLQEv03abe4uJZqRQhoL73oxjJDh80hqFQ2PHfsWz8Mkgw1vEs3WGE5UDWM/N5XE15bJdoq4Lx7/1+dgc6CjoRQCEHt2P5rI4NHckts+8Dplf8Ae+gLCI1dQm/cNSxBYmSZF+KXRLZWPvnNSGqh0BYFeEUIRmDQyl1Yi4t5MQqSvXz0oF0HX+EOUUVo7amo0swpevRQdrTutUU5NZvM0Xsizb5oxcZqe51NIQPIUySlwDJLhgZVtMcXNqKhRb1IhOl6qNwz6e8+FVOCTejaDSIjNq6pRVF4v/kbSWaaGykqbtuZmSLAHufAYA5tH4l96wFm1BzJSL/XFnscHAJzyM++v+nm8fIR7jHL7KnBoUAFpnpqe1R9azGQiPi3IWcgp9tUbd1rNULHEFHpuMIyjJ4Ew6TCvurVtj74I4HHu/5LjgCB9Nrj6QzASNVvoaJ0spnc+nyX//w9Yj1u8qFDHU3AE22JX41ikUrvuiTsRlIBp+w2YP59rULzBEVf3Ekn/9ly3s=" before_install: - echo -n | openssl s_client -connect https://scan.coverity.com:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | sudo tee -a /etc/ssl/certs/ca- From aab53badafef7c3f10b99ee99e8d6d1a0012605b Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Tue, 12 Nov 2019 20:14:15 +0100 Subject: [PATCH 137/197] Update Spring boot dependencies due to security advisories --- pom.xml | 2 +- powerauth-webflow-i18n/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 83c9eaf92..7bd31912d 100644 --- a/pom.xml +++ b/pom.xml @@ -14,7 +14,7 @@ org.springframework.boot spring-boot-starter-parent - 2.1.9.RELEASE + 2.2.1.RELEASE diff --git a/powerauth-webflow-i18n/pom.xml b/powerauth-webflow-i18n/pom.xml index c762e1719..01451da41 100644 --- a/powerauth-webflow-i18n/pom.xml +++ b/powerauth-webflow-i18n/pom.xml @@ -21,7 +21,7 @@ com.fasterxml.jackson.core jackson-databind - 2.9.10.1 + 2.10.0 org.springframework From 47a5e9998bacedf36e7ed98aa3049a8a3d56219f Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Wed, 13 Nov 2019 18:39:34 +0100 Subject: [PATCH 138/197] Fix #709: Fix issues found by coverity scan --- .../model/entity/attribute/AmountAttribute.java | 2 +- .../model/entity/attribute/AttributeFormatted.java | 8 ++++++++ .../model/entity/attribute/HeadingAttribute.java | 2 +- .../model/entity/attribute/KeyValueAttribute.java | 2 +- .../dataadapter/model/entity/attribute/NoteAttribute.java | 2 +- .../entity/attribute/OperationAmountFieldAttribute.java | 2 +- .../attribute/OperationFormFieldAttributeFormatted.java | 8 ++++++++ .../entity/attribute/OperationHeadingFieldAttribute.java | 2 +- .../entity/attribute/OperationKeyValueFieldAttribute.java | 2 +- .../entity/attribute/OperationNoteFieldAttribute.java | 2 +- .../repository/model/entity/OperationAfsActionEntity.java | 3 +-- .../app/nextstep/service/OperationPersistenceService.java | 4 ++-- .../powerauth/lib/tpp/engine/client/TppEngineClient.java | 4 ++++ .../method/loginsca/controller/LoginScaController.java | 4 ++++ 14 files changed, 35 insertions(+), 12 deletions(-) diff --git a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/entity/attribute/AmountAttribute.java b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/entity/attribute/AmountAttribute.java index 28a7e2bca..ee781dc83 100644 --- a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/entity/attribute/AmountAttribute.java +++ b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/entity/attribute/AmountAttribute.java @@ -56,7 +56,7 @@ public AmountAttribute(String id, String label, BigDecimal amount, String curren this.amount = amount; this.currency = currency; this.currencyId = currencyId; - this.formattedValues.putAll(formattedValues); + addFormattedValues(formattedValues); } /** diff --git a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/entity/attribute/AttributeFormatted.java b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/entity/attribute/AttributeFormatted.java index d85ab2304..c5cf19a29 100644 --- a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/entity/attribute/AttributeFormatted.java +++ b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/entity/attribute/AttributeFormatted.java @@ -57,4 +57,12 @@ public void addFormattedValue(String key, String formattedValue) { formattedValues.put(key, formattedValue); } + /** + * Add multiple formatted values. + * @param formattedValues Formatted values. + */ + public void addFormattedValues(Map formattedValues) { + addFormattedValues(formattedValues); + } + } diff --git a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/entity/attribute/HeadingAttribute.java b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/entity/attribute/HeadingAttribute.java index 72089fdae..704b62f63 100644 --- a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/entity/attribute/HeadingAttribute.java +++ b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/entity/attribute/HeadingAttribute.java @@ -56,7 +56,7 @@ public HeadingAttribute(String id, String label, String value, ValueFormatType v this.label = label; this.value = value; this.valueFormatType = valueFormatType; - this.formattedValues.putAll(formattedValues); + addFormattedValues(formattedValues); } } \ No newline at end of file diff --git a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/entity/attribute/KeyValueAttribute.java b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/entity/attribute/KeyValueAttribute.java index 55953c926..ab52f2ac0 100644 --- a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/entity/attribute/KeyValueAttribute.java +++ b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/entity/attribute/KeyValueAttribute.java @@ -58,7 +58,7 @@ public KeyValueAttribute(String id, String label, String value, ValueFormatType this.label = label; this.value = value; this.valueFormatType = valueFormatType; - this.formattedValues.putAll(formattedValues); + addFormattedValues(formattedValues); } /** diff --git a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/entity/attribute/NoteAttribute.java b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/entity/attribute/NoteAttribute.java index e98d9f4a6..255439261 100644 --- a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/entity/attribute/NoteAttribute.java +++ b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/entity/attribute/NoteAttribute.java @@ -59,7 +59,7 @@ public NoteAttribute(String id, String label, String note, ValueFormatType value this.label = label; this.note = note; this.valueFormatType = valueFormatType; - this.formattedValues.putAll(formattedValues); + addFormattedValues(formattedValues); } diff --git a/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/entity/attribute/OperationAmountFieldAttribute.java b/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/entity/attribute/OperationAmountFieldAttribute.java index 3469fb4c2..864c9b49e 100644 --- a/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/entity/attribute/OperationAmountFieldAttribute.java +++ b/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/entity/attribute/OperationAmountFieldAttribute.java @@ -56,7 +56,7 @@ public OperationAmountFieldAttribute(String id, String label, BigDecimal amount, this.amount = amount; this.currency = currency; this.currencyId = currencyId; - this.formattedValues.putAll(formattedValues); + addFormattedValues(formattedValues); } /** diff --git a/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/entity/attribute/OperationFormFieldAttributeFormatted.java b/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/entity/attribute/OperationFormFieldAttributeFormatted.java index 33c6fcdb9..5abbe37fe 100644 --- a/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/entity/attribute/OperationFormFieldAttributeFormatted.java +++ b/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/entity/attribute/OperationFormFieldAttributeFormatted.java @@ -56,4 +56,12 @@ public void addFormattedValue(String key, String formattedValue) { formattedValues.put(key, formattedValue); } + /** + * Add multiple formatted values. + * @param formattedValues Formatted values. + */ + public void addFormattedValues(Map formattedValues) { + addFormattedValues(formattedValues); + } + } diff --git a/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/entity/attribute/OperationHeadingFieldAttribute.java b/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/entity/attribute/OperationHeadingFieldAttribute.java index 86f992b71..8ce6716e3 100644 --- a/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/entity/attribute/OperationHeadingFieldAttribute.java +++ b/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/entity/attribute/OperationHeadingFieldAttribute.java @@ -57,7 +57,7 @@ public OperationHeadingFieldAttribute(String id, String label, String value, Val this.label = label; this.value = value; this.valueFormatType = valueFormatType; - this.formattedValues.putAll(formattedValues); + addFormattedValues(formattedValues); } } \ No newline at end of file diff --git a/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/entity/attribute/OperationKeyValueFieldAttribute.java b/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/entity/attribute/OperationKeyValueFieldAttribute.java index 34d727e0f..2e1bd5d16 100644 --- a/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/entity/attribute/OperationKeyValueFieldAttribute.java +++ b/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/entity/attribute/OperationKeyValueFieldAttribute.java @@ -59,7 +59,7 @@ public OperationKeyValueFieldAttribute(String id, String label, String value, Va this.label = label; this.value = value; this.valueFormatType = valueFormatType; - this.formattedValues.putAll(formattedValues); + addFormattedValues(formattedValues); } /** diff --git a/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/entity/attribute/OperationNoteFieldAttribute.java b/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/entity/attribute/OperationNoteFieldAttribute.java index 361f87bf1..8a76cbf84 100644 --- a/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/entity/attribute/OperationNoteFieldAttribute.java +++ b/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/entity/attribute/OperationNoteFieldAttribute.java @@ -59,7 +59,7 @@ public OperationNoteFieldAttribute(String id, String label, String note, ValueFo this.label = label; this.note = note; this.valueFormatType = valueFormatType; - this.formattedValues.putAll(formattedValues); + addFormattedValues(formattedValues); } /** diff --git a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/repository/model/entity/OperationAfsActionEntity.java b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/repository/model/entity/OperationAfsActionEntity.java index 633bffbcd..0e0f1f9a8 100644 --- a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/repository/model/entity/OperationAfsActionEntity.java +++ b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/repository/model/entity/OperationAfsActionEntity.java @@ -141,7 +141,6 @@ public boolean equals(Object o) { OperationAfsActionEntity that = (OperationAfsActionEntity) o; return stepIndex == that.stepIndex && afsResponseApplied == that.afsResponseApplied && - afsActionId.equals(that.afsActionId) && afsAction.equals(that.afsAction) && Objects.equals(requestAfsExtras, that.requestAfsExtras) && Objects.equals(afsLabel, that.afsLabel) && @@ -152,6 +151,6 @@ public boolean equals(Object o) { @Override public int hashCode() { - return Objects.hash(afsActionId, afsAction, stepIndex, requestAfsExtras, afsResponseApplied, afsLabel, responseAfsExtras, timestampCreated, operation); + return Objects.hash(afsAction, stepIndex, requestAfsExtras, afsResponseApplied, afsLabel, responseAfsExtras, timestampCreated, operation); } } diff --git a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/service/OperationPersistenceService.java b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/service/OperationPersistenceService.java index 50e902115..164f67d20 100644 --- a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/service/OperationPersistenceService.java +++ b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/service/OperationPersistenceService.java @@ -343,8 +343,8 @@ public List getPendingOperations(String userId, boolean mobileT for (OperationEntity operation : entities) { // Add operations whose last step is CONFIRMED with CONTINUE result and chosen authentication method supports mobile token OperationHistoryEntity currentHistoryEntity = operation.getCurrentOperationHistoryEntity(); - if (currentHistoryEntity.getRequestAuthStepResult() == AuthStepResult.CONFIRMED && currentHistoryEntity.getResponseResult() == AuthResult.CONTINUE - && currentHistoryEntity.isMobileTokenActive()) { + if (currentHistoryEntity != null && currentHistoryEntity.getRequestAuthStepResult() == AuthStepResult.CONFIRMED + && currentHistoryEntity.getResponseResult() == AuthResult.CONTINUE && currentHistoryEntity.isMobileTokenActive()) { AuthMethod chosenAuthMethod = currentHistoryEntity.getChosenAuthMethod(); if (mobileTokenConfigurationService.isMobileTokenEnabled(userId, operation.getOperationName(), chosenAuthMethod)) { filteredList.add(operation); diff --git a/powerauth-tpp-engine-client/src/main/java/io/getlime/security/powerauth/lib/tpp/engine/client/TppEngineClient.java b/powerauth-tpp-engine-client/src/main/java/io/getlime/security/powerauth/lib/tpp/engine/client/TppEngineClient.java index b4a1dd9be..ceb7f41f1 100644 --- a/powerauth-tpp-engine-client/src/main/java/io/getlime/security/powerauth/lib/tpp/engine/client/TppEngineClient.java +++ b/powerauth-tpp-engine-client/src/main/java/io/getlime/security/powerauth/lib/tpp/engine/client/TppEngineClient.java @@ -263,6 +263,10 @@ private TppEngineClientException httpStatusException(HttpStatusCodeException ex) TypeReference> typeReference = new TypeReference>() { }; ObjectResponse errorResponse = objectMapper.readValue(ex.getResponseBodyAsString(), typeReference); + if (errorResponse == null) { + TppEngineError error = new TppEngineError(TppEngineError.Code.ERROR_GENERIC, "IO error occurred: " + ex.getMessage()); + return new TppEngineClientException(ex, error); + } TppEngineError error = errorResponse.getResponseObject(); if (error == null) { error = new TppEngineError(); diff --git a/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/controller/LoginScaController.java b/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/controller/LoginScaController.java index 694558eba..f1a22d482 100644 --- a/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/controller/LoginScaController.java +++ b/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/controller/LoginScaController.java @@ -234,6 +234,10 @@ protected AuthMethod getAuthMethodName() { */ private void updateUsernameInHttpSession(String username) { synchronized (httpSession.getServletContext()) { + if (!username.matches("[0-9a-zA-Z_]+")) { + logger.error("Invalid username: {}", username); + return; + } httpSession.setAttribute(HttpSessionAttributeNames.USERNAME, username); } } From cabff2d8c9297e859d09fd4e20552a7219f6e58c Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Wed, 13 Nov 2019 19:29:27 +0100 Subject: [PATCH 139/197] Improve input sanitization --- .../method/loginsca/controller/LoginScaController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/controller/LoginScaController.java b/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/controller/LoginScaController.java index f1a22d482..daaef7fbb 100644 --- a/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/controller/LoginScaController.java +++ b/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/controller/LoginScaController.java @@ -234,7 +234,7 @@ protected AuthMethod getAuthMethodName() { */ private void updateUsernameInHttpSession(String username) { synchronized (httpSession.getServletContext()) { - if (!username.matches("[0-9a-zA-Z_]+")) { + if (username == null || !username.matches("^[0-9a-zA-Z_]+$")) { logger.error("Invalid username: {}", username); return; } From d3dbac8b369bf7abcf73a26709f9441aa94e6ec3 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Wed, 13 Nov 2019 20:29:56 +0100 Subject: [PATCH 140/197] Switch log level to warning for invalid username --- .../method/loginsca/controller/LoginScaController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/controller/LoginScaController.java b/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/controller/LoginScaController.java index daaef7fbb..2fa67f025 100644 --- a/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/controller/LoginScaController.java +++ b/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/controller/LoginScaController.java @@ -235,7 +235,7 @@ protected AuthMethod getAuthMethodName() { private void updateUsernameInHttpSession(String username) { synchronized (httpSession.getServletContext()) { if (username == null || !username.matches("^[0-9a-zA-Z_]+$")) { - logger.error("Invalid username: {}", username); + logger.warn("Invalid username: {}", username); return; } httpSession.setAttribute(HttpSessionAttributeNames.USERNAME, username); From 8b3c6fad2728e1c7df0c2f391e03eb66057a0df5 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Thu, 14 Nov 2019 14:48:59 +0100 Subject: [PATCH 141/197] Fix #711: Upgrade JavaScript dependencies --- powerauth-webflow/package-lock.json | 2242 +++++++++++++++------------ powerauth-webflow/package.json | 32 +- 2 files changed, 1230 insertions(+), 1044 deletions(-) diff --git a/powerauth-webflow/package-lock.json b/powerauth-webflow/package-lock.json index fb8703adf..74a271415 100644 --- a/powerauth-webflow/package-lock.json +++ b/powerauth-webflow/package-lock.json @@ -5,32 +5,32 @@ "requires": true, "dependencies": { "@babel/runtime": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.3.4.tgz", - "integrity": "sha512-IvfvnMdSaLBateu0jfsYIpZTxAc2cKEXEMiezGGN75QcBcecDUKd3PgLAncT0oOgxKy8dd8hrJKj9MfzgfZd6g==", + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.7.2.tgz", + "integrity": "sha512-JONRbXbTXc9WQE2mAZd1p0Z3DZ/6vaQIkgYMSTP3KjRCyd7rCZCcfhCyX+YjwcKxcZ82UrxbRD358bpExNgrjw==", "requires": { - "regenerator-runtime": "^0.12.0" + "regenerator-runtime": "^0.13.2" }, "dependencies": { "regenerator-runtime": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz", - "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==" + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", + "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==" } } }, "@snyk/cli-interface": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@snyk/cli-interface/-/cli-interface-2.1.0.tgz", - "integrity": "sha512-b/magC8iNQP9QhSDeV9RQDSaY3sNy57k0UH1Y/sMOSvVLHLsA7dOi/HrPWTiLouyGqcuYzwjkz7bNbu8cwmVDQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@snyk/cli-interface/-/cli-interface-2.2.0.tgz", + "integrity": "sha512-sA7V2JhgqJB9z5uYotgQc5iNDv//y+Mdm39rANxmFjtZMSYJZHkP80arzPjw1mB5ni/sWec7ieYUUFeySZBfVg==", "requires": { "tslib": "^1.9.3" } }, "@snyk/cocoapods-lockfile-parser": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@snyk/cocoapods-lockfile-parser/-/cocoapods-lockfile-parser-2.0.4.tgz", - "integrity": "sha512-d57bajPjqCiNXMuyMmt9Zt98zbjABZUFw+91B705flzV6oB7OThgtA40Eoin6iatYoStIx28bC3T6b0mScy/iA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@snyk/cocoapods-lockfile-parser/-/cocoapods-lockfile-parser-3.0.0.tgz", + "integrity": "sha512-AebCc+v9vtOL9tFkU4/tommgVsXxqdx6t45kCkBW+FC4PaYvfYEg9Eg/9GqlY9+nFrLFo/uTr+E/aR0AF/KqYA==", "requires": { "@snyk/dep-graph": "^1.11.0", "@snyk/ruby-semver": "^2.0.4", @@ -42,9 +42,9 @@ }, "dependencies": { "core-js": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.3.2.tgz", - "integrity": "sha512-S1FfZpeBchkhyoY76YAdFzKS4zz9aOK7EeFaNA2aJlyXyA+sgqz6xdxmLPGXEAf0nF44MVN1kSjrA9Kt3ATDQg==" + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.4.1.tgz", + "integrity": "sha512-KX/dnuY/J8FtEwbnrzmAjUYgLqtk+cxM86hfG60LGiW3MmltIc2yAmDgBgEkfm0blZhUrdr1Zd84J2Y14mLxzg==" }, "source-map": { "version": "0.6.1", @@ -52,9 +52,9 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, "source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", + "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -63,17 +63,17 @@ } }, "@snyk/composer-lockfile-parser": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@snyk/composer-lockfile-parser/-/composer-lockfile-parser-1.0.3.tgz", - "integrity": "sha512-hb+6E7kMzWlcwfe//ILDoktBPKL2a3+RnJT/CXnzRXaiLQpsdkf5li4q2v0fmvd+4v7L3tTN8KM+//lJyviEkg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@snyk/composer-lockfile-parser/-/composer-lockfile-parser-1.2.0.tgz", + "integrity": "sha512-kZT+HTqgNcQMeoE5NM9M3jj463M8zI7ZxqZXLw9WoyVs5JTt9g0qFWxIG1cNwZdGVI+y7tzZbNWw9BlMD1vCCQ==", "requires": { "lodash": "^4.17.13" } }, "@snyk/dep-graph": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/@snyk/dep-graph/-/dep-graph-1.12.0.tgz", - "integrity": "sha512-n7+PlHn3SqznHgsCpeBRfEvU1oiQydoGkXQlnSB2+tfImiKXvY7YZbrg4wlbvYgylYiTbpCi5CpPNkJG14S+UQ==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/@snyk/dep-graph/-/dep-graph-1.13.1.tgz", + "integrity": "sha512-Ww2xvm5UQgrq9eV0SdTBCh+w/4oI2rCx5vn1IOSeypaR0CO4p+do1vm3IDZ2ugg4jLSfHP8+LiD6ORESZMkQ2w==", "requires": { "graphlib": "^2.1.5", "lodash": "^4.7.14", @@ -94,9 +94,9 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, "source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", + "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -118,13 +118,13 @@ } }, "@snyk/snyk-cocoapods-plugin": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@snyk/snyk-cocoapods-plugin/-/snyk-cocoapods-plugin-1.0.3.tgz", - "integrity": "sha512-AHAA7z23nPi1eHODsDxeSkl73Ze3yphuqJjMl39ie323EzBDcb9g6uAACrk0Qn2K/K2D8uyxMAf2zDtc+JGQfw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@snyk/snyk-cocoapods-plugin/-/snyk-cocoapods-plugin-2.0.1.tgz", + "integrity": "sha512-XVkvaMvMzQ3miJi/YZmsRJSAUfDloYhfg6pXPgzAeAugB4p+cNi01Z68pT62ypB8U/Ugh1Xx2pb9aoOFqBbSjA==", "requires": { "@snyk/cli-interface": "1.5.0", - "@snyk/cocoapods-lockfile-parser": "2.0.4", - "@snyk/dep-graph": "1.13.0", + "@snyk/cocoapods-lockfile-parser": "3.0.0", + "@snyk/dep-graph": "^1.13.1", "source-map-support": "^0.5.7", "tslib": "^1.9.3" }, @@ -137,33 +137,15 @@ "tslib": "^1.9.3" } }, - "@snyk/dep-graph": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@snyk/dep-graph/-/dep-graph-1.13.0.tgz", - "integrity": "sha512-e0XcLH6Kgs/lunf6iDjbxEnm9+JYFEJn6eo/PlEUW+SMWBZ2uEXHBTDNp9oxjJou48PngzWMveEkniBAN+ulOQ==", - "requires": { - "graphlib": "^2.1.5", - "lodash": "^4.7.14", - "object-hash": "^1.3.1", - "semver": "^6.0.0", - "source-map-support": "^0.5.11", - "tslib": "^1.9.3" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, "source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", + "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -204,9 +186,9 @@ "integrity": "sha512-SGGAhXLHDx+PK4YLNcNGa6goPf9XRWQNAUUbffkwVGGXIxmDKWyGGL4inzq2sPmExu431Ekb9aEMn9BkPqEYFA==" }, "@types/node": { - "version": "12.11.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.11.1.tgz", - "integrity": "sha512-TJtwsqZ39pqcljJpajeoofYRfeZ7/I/OMUQ5pR4q5wOKf2ocrUvBAZUMhWsOvKx3dVc/aaV5GluBivt0sWqA5A==" + "version": "12.12.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.7.tgz", + "integrity": "sha512-E6Zn0rffhgd130zbCbAr/JdXfXkoOUFAKNs/rF8qnafSJ8KYaA/j3oz7dcwal+lYjLA7xvdd5J4wdYpCTlP8+w==" }, "@types/restify": { "version": "4.3.6", @@ -261,19 +243,29 @@ } } }, + "agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "requires": { + "es6-promisify": "^5.0.0" + } + }, "ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", "requires": { - "co": "^4.6.0", - "json-stable-stringify": "^1.0.1" + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, "ajv-keywords": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", - "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=" + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", + "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==" }, "align-text": { "version": "0.1.4", @@ -421,10 +413,11 @@ } }, "assert": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", - "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", "requires": { + "object-assign": "^4.1.1", "util": "0.10.3" }, "dependencies": { @@ -448,18 +441,23 @@ "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" }, + "ast-types": { + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.2.tgz", + "integrity": "sha512-uWMHxJxtfj/1oZClOxDEV1sQ1HCDkA4MG8Gr69KKeBjEVH0R84WlejZ0y2DcwyBlpAEMltmVYkVgqfLFb2oyiA==" + }, "async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", - "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", "requires": { - "lodash": "^4.17.11" + "lodash": "^4.17.14" } }, "async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==" }, "atob": { "version": "2.1.2", @@ -467,18 +465,18 @@ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" }, "axios": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.1.tgz", - "integrity": "sha512-0BfJq4NSfQXd+SkFdrvFbG7addhYSBA2mQwISr46pD6E5iqkWg02RAs8vyTT/j0RTnoYmeXauBuSv1qKwR179g==", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.0.tgz", + "integrity": "sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ==", "requires": { "follow-redirects": "1.5.10", "is-buffer": "^2.0.2" }, "dependencies": { "is-buffer": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz", - "integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw==" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", + "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==" } } }, @@ -729,40 +727,6 @@ "find-cache-dir": "^1.0.0", "loader-utils": "^1.0.2", "mkdirp": "^0.5.1" - }, - "dependencies": { - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true - }, - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "loader-utils": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", - "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^2.0.0", - "json5": "^1.0.1" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } } }, "babel-messages": { @@ -1440,19 +1404,19 @@ } }, "base64-js": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", - "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==" + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" }, "big.js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==" + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" }, "binary-extensions": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.0.tgz", - "integrity": "sha512-EgmjVLMn22z7eGGv3kcnHwSnJXmFHjISTY9E/S5lIcTD3Oxw05QTcBLNkJFzcb3cNueUdF/IN4U+d78V0zO8Hw==" + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==" }, "bl": { "version": "3.0.0", @@ -1474,15 +1438,10 @@ } } }, - "blacklist": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/blacklist/-/blacklist-1.1.4.tgz", - "integrity": "sha1-st0J1hd2JbLKppg1o3somV+povI=" - }, "bluebird": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz", - "integrity": "sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==" + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.1.tgz", + "integrity": "sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg==" }, "bn.js": { "version": "4.11.8", @@ -1685,9 +1644,9 @@ } }, "buffer": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", - "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", "requires": { "base64-js": "^1.0.2", "ieee754": "^1.1.4", @@ -1709,6 +1668,11 @@ "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + }, "cache-base": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", @@ -1777,9 +1741,9 @@ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" }, "chokidar": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.2.tgz", - "integrity": "sha512-IwXUx0FXc5ibYmPC2XeEj5mpXoV66sR+t3jqu2NS2GYwCktt3KF1/Qqjws/NkegajBA4RbZ5+DDwlOiJsxDHEg==", + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", "requires": { "anymatch": "^2.0.0", "async-each": "^1.0.1", @@ -1792,7 +1756,7 @@ "normalize-path": "^3.0.0", "path-is-absolute": "^1.0.0", "readdirp": "^2.2.1", - "upath": "^1.1.0" + "upath": "^1.1.1" } }, "ci-info": { @@ -1848,6 +1812,11 @@ "restore-cursor": "^2.0.0" } }, + "cli-spinner": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/cli-spinner/-/cli-spinner-0.2.10.tgz", + "integrity": "sha512-U0sSQ+JJvSLi1pAYuJykwiA8Dsr15uHEy85iCJ6A+0DjVxivr3d+N2Wjvodeg89uP5K6TswFkKBfAD7B3YSn/Q==" + }, "cli-width": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", @@ -1913,9 +1882,9 @@ "dev": true }, "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" }, "concat-map": { "version": "0.0.1", @@ -1936,12 +1905,9 @@ } }, "console-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "requires": { - "date-now": "^0.1.4" - } + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" }, "constants-browserify": { "version": "1.0.0", @@ -2059,17 +2025,26 @@ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=" }, - "date-now": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=" + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "data-uri-to-buffer": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-1.2.0.tgz", + "integrity": "sha512-vKQ9DTQPN1FLYiiEEOQ6IBGFqvjCa5rSK3cWMy/Nespm5d/x3dGFT9UBZnkLxCwua/IXBi2TYnwTEpsOvhC4UQ==" }, "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "requires": { - "ms": "^2.1.1" + "ms": "2.0.0" } }, "decamelize": { @@ -2087,6 +2062,11 @@ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" + }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -2137,10 +2117,32 @@ } } }, + "degenerator": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-1.0.4.tgz", + "integrity": "sha1-/PSQo37OJmRk2cxDGrmMWBnO0JU=", + "requires": { + "ast-types": "0.x.x", + "escodegen": "1.x.x", + "esprima": "3.x.x" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" + } + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, "des.js": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", - "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", "requires": { "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0" @@ -2244,9 +2246,9 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, "source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", + "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -2275,9 +2277,9 @@ "dev": true }, "elliptic": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", - "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.1.tgz", + "integrity": "sha512-xvJINNLbTeWQjrl6X+7eQCrIy/YPv5XCpKW6kB5mKvtnGILoLDcySuwomfdzt0BMdLNVnuRNTuzKNHj0bva1Cg==", "requires": { "bn.js": "^4.4.0", "brorand": "^1.0.1", @@ -2369,30 +2371,176 @@ } }, "es-to-primitive": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", - "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "requires": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", "is-symbol": "^1.0.2" } }, + "es5-ext": { + "version": "0.10.52", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.52.tgz", + "integrity": "sha512-bWCbE9fbpYQY4CU6hJbJ1vSz70EClMlDgJ7BmwI+zEJhxrwjesZRPglGJlsZhu0334U3hI+gaspwksH9IGD6ag==", + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.2", + "next-tick": "~1.0.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-map": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", + "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", + "requires": { + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", + "es6-set": "~0.1.5", + "es6-symbol": "~3.1.1", + "event-emitter": "~0.3.5" + } + }, + "es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" + }, + "es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "requires": { + "es6-promise": "^4.0.3" + } + }, + "es6-set": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", + "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", + "requires": { + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", + "es6-symbol": "3.1.1", + "event-emitter": "~0.3.5" + }, + "dependencies": { + "es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + } + } + }, + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "requires": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, + "escodegen": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.12.0.tgz", + "integrity": "sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg==", + "requires": { + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true + } + } + }, + "escope": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", + "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", + "requires": { + "es6-map": "^0.1.3", + "es6-weak-map": "^2.0.1", + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + }, "esutils": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", - "dev": true + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } }, "events": { "version": "3.0.0", @@ -2467,14 +2615,29 @@ "requires": { "is-extendable": "^0.1.0" } - }, - "ms": { + } + } + }, + "ext": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.2.0.tgz", + "integrity": "sha512-0ccUQK/9e3NreLFg6K6np8aPyRgwycx+oFGtfx1dSp7Wj00Ozw9r05FgBRlzjf2XBM7LAzwgLyDscRrtSU91hA==", + "requires": { + "type": "^2.0.0" + }, + "dependencies": { + "type": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", + "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==" } } }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, "extend-shallow": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", @@ -2568,10 +2731,25 @@ } } }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + }, "faye-websocket": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", - "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", "requires": { "websocket-driver": ">=0.5.1" } @@ -2598,6 +2776,11 @@ "escape-string-regexp": "^1.0.5" } }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" + }, "fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", @@ -2631,12 +2814,12 @@ } }, "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" + "locate-path": "^2.0.0" } }, "follow-redirects": { @@ -2645,21 +2828,6 @@ "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", "requires": { "debug": "=3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } } }, "for-in": { @@ -2694,13 +2862,13 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "fsevents": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.7.tgz", - "integrity": "sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw==", + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", + "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", "optional": true, "requires": { - "nan": "^2.9.2", - "node-pre-gyp": "^0.10.0" + "nan": "^2.12.1", + "node-pre-gyp": "^0.12.0" }, "dependencies": { "abbrev": { @@ -2761,11 +2929,11 @@ "optional": true }, "debug": { - "version": "2.6.9", + "version": "4.1.1", "bundled": true, "optional": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, "deep-extend": { @@ -2910,22 +3078,22 @@ } }, "ms": { - "version": "2.0.0", + "version": "2.1.1", "bundled": true, "optional": true }, "needle": { - "version": "2.2.4", + "version": "2.3.0", "bundled": true, "optional": true, "requires": { - "debug": "^2.1.2", + "debug": "^4.1.0", "iconv-lite": "^0.4.4", "sax": "^1.2.4" } }, "node-pre-gyp": { - "version": "0.10.3", + "version": "0.12.0", "bundled": true, "optional": true, "requires": { @@ -2951,12 +3119,12 @@ } }, "npm-bundled": { - "version": "1.0.5", + "version": "1.0.6", "bundled": true, "optional": true }, "npm-packlist": { - "version": "1.2.0", + "version": "1.4.1", "bundled": true, "optional": true, "requires": { @@ -3075,7 +3243,7 @@ "optional": true }, "semver": { - "version": "5.6.0", + "version": "5.7.0", "bundled": true, "optional": true }, @@ -3155,6 +3323,38 @@ } } }, + "ftp": { + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz", + "integrity": "sha1-kZfYYa2BQvPmPVqDv+TFn3MwiF0=", + "requires": { + "readable-stream": "1.1.x", + "xregexp": "2.0.0" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } + } + }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -3173,6 +3373,29 @@ "pump": "^3.0.0" } }, + "get-uri": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-2.0.4.tgz", + "integrity": "sha512-v7LT/s8kVjs+Tx0ykk1I+H/rbpzkHvuIq87LmeXptcf5sNWm9uQiwjNAt94SJPA1zOlCntmnOlJvVWKmzsxG8Q==", + "requires": { + "data-uri-to-buffer": "1", + "debug": "2", + "extend": "~3.0.2", + "file-uri-to-path": "1", + "ftp": "~0.3.10", + "readable-stream": "2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + } + } + }, "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", @@ -3196,9 +3419,9 @@ } }, "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -3313,9 +3536,9 @@ } }, "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" }, "has-symbols": { "version": "1.0.0", @@ -3380,9 +3603,12 @@ } }, "hoist-non-react-statics": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz", - "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==" + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.0.tgz", + "integrity": "sha512-0XsbTXxgiaCDYDIWFcwkmerZPSwywfUqYmwT4jzewKTQSWoE6FCMoUVOeBJWK3E/CrWbxRG3m5GzY4lnIwGRBA==", + "requires": { + "react-is": "^16.7.0" + } }, "home-or-tmp": { "version": "2.0.0", @@ -3424,16 +3650,53 @@ } } }, + "http-errors": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", + "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + } + } + }, "http-parser-js": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.0.tgz", - "integrity": "sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w==" + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz", + "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=" + }, + "http-proxy-agent": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", + "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", + "requires": { + "agent-base": "4", + "debug": "3.1.0" + } }, "https-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" }, + "https-proxy-agent": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-3.0.1.tgz", + "integrity": "sha512-+ML2Rbh6DAuee7d07tYGEKOEi2voWPUGan+ExdPbPW6Z3svq+JCqr0v8WmKPOkz1vOVykPCBSuobe7G8GJUtVg==", + "requires": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + } + }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -3443,9 +3706,9 @@ } }, "ieee754": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", - "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==" + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" }, "immediate": { "version": "3.0.6", @@ -3462,11 +3725,6 @@ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" - }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -3594,9 +3852,9 @@ "integrity": "sha1-giRKIZDE5Bn4Nx9ao02qNCDiq94=" }, "intl-format-cache": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/intl-format-cache/-/intl-format-cache-2.1.0.tgz", - "integrity": "sha1-BKNp/sv61tpgBbrh8UMzMy3PkxY=" + "version": "2.2.9", + "resolved": "https://registry.npmjs.org/intl-format-cache/-/intl-format-cache-2.2.9.tgz", + "integrity": "sha512-Zv/u8wRpekckv0cLkwpVdABYST4hZNTDaX7reFetrYTJwxExR2VyTqQm+l0WmL0Qo8Mjb9Tf33qnfj0T7pjxdQ==" }, "intl-messageformat": { "version": "2.2.0", @@ -3612,9 +3870,9 @@ "integrity": "sha1-tD1FqXRoytvkQzHXS7Ho3qRPwHU=" }, "intl-relativeformat": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/intl-relativeformat/-/intl-relativeformat-2.1.0.tgz", - "integrity": "sha1-AQ8RBYAiUfQKxH0OPhogE0iiVd8=", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/intl-relativeformat/-/intl-relativeformat-2.2.0.tgz", + "integrity": "sha512-4bV/7kSKaPEmu6ArxXf9xjv1ny74Zkwuey8Pm01NH4zggPP7JHwg2STk8Y3JdspCKRDriwIyLRfEXnj2ZLr4Bw==", "requires": { "intl-messageformat": "^2.0.0" } @@ -3632,6 +3890,11 @@ "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" + }, "is-accessor-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", @@ -3729,9 +3992,9 @@ } }, "is-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", "requires": { "is-extglob": "^2.1.1" } @@ -3834,11 +4097,6 @@ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "optional": true }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" - }, "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -3898,29 +4156,21 @@ "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==" }, - "json-stable-stringify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "requires": { - "jsonify": "~0.0.0" - } + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "json3": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", - "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=" + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", + "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==" }, "json5": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=" }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" - }, "jszip": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.2.2.tgz", @@ -3966,6 +4216,15 @@ "invert-kv": "^1.0.0" } }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, "lie": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", @@ -3975,15 +4234,14 @@ } }, "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", "requires": { "graceful-fs": "^4.1.2", "parse-json": "^2.2.0", "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" + "strip-bom": "^3.0.0" }, "dependencies": { "pify": { @@ -3999,32 +4257,37 @@ "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==" }, "loader-utils": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", - "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", "requires": { - "big.js": "^3.1.3", + "big.js": "^5.2.2", "emojis-list": "^2.0.0", - "json5": "^0.5.0", - "object-assign": "^4.0.1" + "json5": "^1.0.1" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + } } }, "locate-path": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, "requires": { "p-locate": "^2.0.0", "path-exists": "^3.0.0" - }, - "dependencies": { - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - } } }, "lodash": { @@ -4033,9 +4296,9 @@ "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" }, "lodash-es": { - "version": "4.17.14", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.14.tgz", - "integrity": "sha512-7zchRrGa8UZXjD/4ivUWP1867jDkhzTG2c/uj739utSd7O/pFFdxspCemIFKEEjErbcqRzn8nKnGsi7mvTgRPA==" + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.15.tgz", + "integrity": "sha512-rlrc3yU3+JNOpZ9zj5pQtxnx2THmvRykwL4Xlxoa8I9lHBlVbbyPhgyPMioxVZ4NqyxaVVtaJnzsyOidQIhyyQ==" }, "lodash.assign": { "version": "4.2.0", @@ -4111,12 +4374,11 @@ "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" }, "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "yallist": "^3.0.2" } }, "macos-release": { @@ -4155,6 +4417,14 @@ "safe-buffer": "^5.1.2" } }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "requires": { + "mimic-fn": "^1.0.0" + } + }, "memory-fs": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", @@ -4272,9 +4542,9 @@ } }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "mute-stream": { "version": "0.0.7", @@ -4372,12 +4642,37 @@ "debug": "^3.2.6", "iconv-lite": "^0.4.4", "sax": "^1.2.4" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } } }, "neo-async": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz", - "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==" + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==" + }, + "netmask": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-1.0.6.tgz", + "integrity": "sha1-ICl+idhvb2QA8lDZ9Pa0wZRfzTU=" + }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" }, "nice-try": { "version": "1.0.5", @@ -4394,9 +4689,9 @@ } }, "node-libs-browser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.0.tgz", - "integrity": "sha512-5MQunG/oyOaBdttrL40dA7bUfPORLRWMUJLQtMg7nluxUvk5XwnLdL9twQHFAjRx/y7mIMkLKT9++qPbbk6BZA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", "requires": { "assert": "^1.1.1", "browserify-zlib": "^0.2.0", @@ -4408,7 +4703,7 @@ "events": "^3.0.0", "https-browserify": "^1.0.0", "os-browserify": "^0.3.0", - "path-browserify": "0.0.0", + "path-browserify": "0.0.1", "process": "^0.11.10", "punycode": "^1.2.4", "querystring-es3": "^0.2.0", @@ -4420,7 +4715,14 @@ "tty-browserify": "0.0.0", "url": "^0.11.0", "util": "^0.11.0", - "vm-browserify": "0.0.4" + "vm-browserify": "^1.0.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + } } }, "node-object-hash": { @@ -4493,9 +4795,9 @@ "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==" }, "object-inspect": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz", - "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==" + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==" }, "object-keys": { "version": "1.1.1", @@ -4551,6 +4853,19 @@ "is-wsl": "^1.1.0" } }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, "original": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", @@ -4601,7 +4916,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, "requires": { "p-try": "^1.0.0" } @@ -4610,7 +4924,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, "requires": { "p-limit": "^1.1.0" } @@ -4618,8 +4931,49 @@ "p-try": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" + }, + "pac-proxy-agent": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-3.0.1.tgz", + "integrity": "sha512-44DUg21G/liUZ48dJpUSjZnFfZro/0K5JTyFYLBcmh9+T6Ooi4/i4efwUiEy0+4oQusCBqWdhv16XohIj1GqnQ==", + "requires": { + "agent-base": "^4.2.0", + "debug": "^4.1.1", + "get-uri": "^2.0.0", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^3.0.0", + "pac-resolver": "^3.0.0", + "raw-body": "^2.2.0", + "socks-proxy-agent": "^4.0.1" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "pac-resolver": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-3.0.0.tgz", + "integrity": "sha512-tcc38bsjuE3XZ5+4vP96OfhOugrX+JcnpUbhfuc4LuXBLQhoTthOstZeoQJBDnQUDYzYmdImKsbz0xSl1/9qeA==", + "requires": { + "co": "^4.6.0", + "degenerator": "^1.0.4", + "ip": "^1.1.5", + "netmask": "^1.0.6", + "thunkify": "^2.1.2" + } }, "package-json": { "version": "4.0.1", @@ -4638,9 +4992,9 @@ "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==" }, "parse-asn1": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.4.tgz", - "integrity": "sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==", + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", + "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", "requires": { "asn1.js": "^4.0.0", "browserify-aes": "^1.0.0", @@ -4684,9 +5038,9 @@ "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" }, "path-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", - "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=" + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==" }, "path-dirname": { "version": "1.0.2", @@ -4694,12 +5048,9 @@ "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" }, "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "requires": { - "pinkie-promise": "^2.0.0" - } + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" }, "path-is-absolute": { "version": "1.0.1", @@ -4722,13 +5073,11 @@ "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" }, "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" + "pify": "^2.0.0" }, "dependencies": { "pify": { @@ -4755,19 +5104,6 @@ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "requires": { - "pinkie": "^2.0.0" - } - }, "pkg-dir": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", @@ -4775,17 +5111,6 @@ "dev": true, "requires": { "find-up": "^2.1.0" - }, - "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - } } }, "posix-character-classes": { @@ -4851,6 +5176,11 @@ } } }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" + }, "prepend-http": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", @@ -4895,6 +5225,41 @@ "resolved": "https://registry.npmjs.org/protocols/-/protocols-1.4.7.tgz", "integrity": "sha512-Fx65lf9/YDn3hUX08XUc0J8rSux36rEsyiv21ZGUC1mOyeM3lTRpZLcrm8aAolzS4itwVfm7TAPyxC2E5zd6xg==" }, + "proxy-agent": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-3.1.1.tgz", + "integrity": "sha512-WudaR0eTsDx33O3EJE16PjBRZWcX8GqCEeERw1W3hZJgH/F2a46g7jty6UGty6NeJ4CKQy8ds2CJPMiyeqaTvw==", + "requires": { + "agent-base": "^4.2.0", + "debug": "4", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^3.0.0", + "lru-cache": "^5.1.1", + "pac-proxy-agent": "^3.0.1", + "proxy-from-env": "^1.0.0", + "socks-proxy-agent": "^4.0.1" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "proxy-from-env": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", + "integrity": "sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4=" + }, "prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", @@ -4928,9 +5293,9 @@ } }, "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, "querystring": { "version": "0.2.0", @@ -4943,9 +5308,9 @@ "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" }, "querystringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.0.tgz", - "integrity": "sha512-sluvZZ1YiTLD5jsqZcDmFyV2EwToyXZBfpoVOmktMmW+VEnhgakFHnasVph65fOjGPTWN0Nw3+XQaSeMayr0kg==" + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz", + "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==" }, "randombytes": { "version": "2.1.0", @@ -4964,6 +5329,17 @@ "safe-buffer": "^5.1.0" } }, + "raw-body": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.1.tgz", + "integrity": "sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA==", + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.3", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, "rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", @@ -5012,9 +5388,12 @@ } }, "react-device-detect": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/react-device-detect/-/react-device-detect-1.6.2.tgz", - "integrity": "sha512-XIBgwIfpGAknm7tXe/YNbx4ieIR7IyFI3KNfSQk4UjHVy97UHe/nB7iJj8R/dDsI+I/ZzPR4HJ39Gh5tI4nhxw==" + "version": "1.9.10", + "resolved": "https://registry.npmjs.org/react-device-detect/-/react-device-detect-1.9.10.tgz", + "integrity": "sha512-Rb618NuNwJojJeIgI5UoONwztbd4wMT4TBofzvYOHnPNu61LYYz8b78cXQb7kXRrPn6iI5T1gFtNQh0GxHEPxw==", + "requires": { + "ua-parser-js": "^0.7.20" + } }, "react-dom": { "version": "15.6.2", @@ -5028,20 +5407,19 @@ } }, "react-input-autosize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/react-input-autosize/-/react-input-autosize-1.2.0.tgz", - "integrity": "sha1-hyQQcRWfdCEjiXaR2meW7DO1fQU=", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/react-input-autosize/-/react-input-autosize-2.2.2.tgz", + "integrity": "sha512-jQJgYCA3S0j+cuOwzuCd1OjmBmnZLdqQdiLKRYrsMMzbjUrVDS5RvJUDwJqA7sKuksDuzFtm6hZGKFu7Mjk5aw==", "requires": { - "create-react-class": "^15.5.2", "prop-types": "^15.5.8" } }, "react-intl": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-2.8.0.tgz", - "integrity": "sha512-1cSasNkHxZOXYYhms9Q1tSEWF8AWZQNq3nPLB/j8mYV0ZTSt2DhGQXHfKrKQMu4cgj9J1Crqg7xFPICTBgzqtQ==", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-2.9.0.tgz", + "integrity": "sha512-27jnDlb/d2A7mSJwrbOBnUgD+rPep+abmoJE511Tf8BnoONIAUehy/U1zZCHGO17mnOwMWxqN4qC0nW11cD6rA==", "requires": { - "hoist-non-react-statics": "^2.5.5", + "hoist-non-react-statics": "^3.3.0", "intl-format-cache": "^2.0.5", "intl-messageformat": "^2.1.0", "intl-relativeformat": "^2.1.0", @@ -5049,12 +5427,11 @@ } }, "react-intl-redux": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/react-intl-redux/-/react-intl-redux-0.5.0.tgz", - "integrity": "sha1-0ltJYNgpoaevhmeH2gT+KA/IpPw=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/react-intl-redux/-/react-intl-redux-2.1.1.tgz", + "integrity": "sha512-wnW6z4wcA5Qybrf36YXX87m+sLJKpPmjJsTqOFdJ2IzkePEGc3D5z1S3ehb66h9fP+z2YNQWlYGhPkUPitWtcg==", "requires": { - "prop-types": "^15.5.9", - "warning": "^3.0.0" + "prop-types": "^15.7.2" } }, "react-is": { @@ -5087,37 +5464,27 @@ } }, "react-redux": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-5.1.1.tgz", - "integrity": "sha512-LE7Ned+cv5qe7tMV5BPYkGQ5Lpg8gzgItK07c67yHvJ8t0iaD9kPFPAli/mYkiyJYrs2pJgExR2ZgsGqlrOApg==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-5.1.2.tgz", + "integrity": "sha512-Ns1G0XXc8hDyH/OcBHOxNgQx9ayH3SPxBnFCOidGKSle8pKihysQw2rG/PmciUQRoclhVBO8HMhiRmGXnDja9Q==", "requires": { "@babel/runtime": "^7.1.2", - "hoist-non-react-statics": "^3.1.0", + "hoist-non-react-statics": "^3.3.0", "invariant": "^2.2.4", "loose-envify": "^1.1.0", "prop-types": "^15.6.1", "react-is": "^16.6.0", "react-lifecycles-compat": "^3.0.0" - }, - "dependencies": { - "hoist-non-react-statics": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.0.tgz", - "integrity": "sha512-0XsbTXxgiaCDYDIWFcwkmerZPSwywfUqYmwT4jzewKTQSWoE6FCMoUVOeBJWK3E/CrWbxRG3m5GzY4lnIwGRBA==", - "requires": { - "react-is": "^16.7.0" - } - } } }, "react-select": { - "version": "1.0.0-beta14", - "resolved": "https://registry.npmjs.org/react-select/-/react-select-1.0.0-beta14.tgz", - "integrity": "sha1-8X7gnfk7mg7MQCPFf7lB7AEHkJs=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/react-select/-/react-select-1.0.1.tgz", + "integrity": "sha512-488j7KOR/48OSfrOuQsGpZldY2Tuv2BIcaJ3uPZ4EgQDZnwyxGl4hCGkhsu8mkEGu38oPEjqoNacG+j/nktfWQ==", "requires": { - "blacklist": "^1.1.2", "classnames": "^2.2.4", - "react-input-autosize": "^1.1.0" + "prop-types": "^15.5.8", + "react-input-autosize": "^2.1.0" } }, "react-tiny-spin": { @@ -5130,22 +5497,32 @@ } }, "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", "requires": { - "load-json-file": "^1.0.0", + "load-json-file": "^2.0.0", "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" + "path-type": "^2.0.0" } }, "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "^2.0.0" + } + } } }, "readable-stream": { @@ -5350,9 +5727,9 @@ } }, "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "requires": { "glob": "^7.1.3" } @@ -5484,9 +5861,9 @@ "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=" }, "set-value": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", "requires": { "extend-shallow": "^2.0.1", "is-extendable": "^0.1.1", @@ -5509,6 +5886,11 @@ "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, "sha.js": { "version": "2.4.11", "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", @@ -5568,6 +5950,11 @@ "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", "dev": true }, + "smart-buffer": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.1.0.tgz", + "integrity": "sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw==" + }, "snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", @@ -5606,11 +5993,6 @@ "requires": { "is-extendable": "^0.1.0" } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" } } }, @@ -5674,19 +6056,20 @@ } }, "snyk": { - "version": "1.236.1", - "resolved": "https://registry.npmjs.org/snyk/-/snyk-1.236.1.tgz", - "integrity": "sha512-wxA5Dbknfm4Pq+0poGar2K8X1oh+OwECdJVgiDeCCnooo8cQBamVV4Zekpb6sXJAAX9Wprgm6S+f4YgTvNmd3A==", + "version": "1.247.1", + "resolved": "https://registry.npmjs.org/snyk/-/snyk-1.247.1.tgz", + "integrity": "sha512-/3n8Eair/MCtetCfaU7jRdIq0wac4fpFQXrp5phwRLvnxO9x6racbozrBszmlOBCCLlveFCBJg5il5hf1kacwQ==", "requires": { - "@snyk/cli-interface": "^2.0.3", - "@snyk/dep-graph": "1.12.0", + "@snyk/cli-interface": "2.2.0", + "@snyk/dep-graph": "1.13.1", "@snyk/gemfile": "1.2.0", - "@snyk/snyk-cocoapods-plugin": "1.0.3", + "@snyk/snyk-cocoapods-plugin": "2.0.1", "@types/agent-base": "^4.2.0", "@types/restify": "^4.3.6", "abbrev": "^1.1.1", "ansi-escapes": "3.2.0", "chalk": "^2.4.2", + "cli-spinner": "0.2.10", "configstore": "^3.1.2", "debug": "^3.1.0", "diff": "^4.0.1", @@ -5697,23 +6080,23 @@ "needle": "^2.2.4", "opn": "^5.5.0", "os-name": "^3.0.0", - "proxy-agent": "*", + "proxy-agent": "^3.1.1", "proxy-from-env": "^1.0.0", "semver": "^6.0.0", "snyk-config": "^2.2.1", "snyk-docker-plugin": "1.33.1", "snyk-go-plugin": "1.11.1", - "snyk-gradle-plugin": "3.1.0", + "snyk-gradle-plugin": "3.2.2", "snyk-module": "1.9.1", "snyk-mvn-plugin": "2.4.0", - "snyk-nodejs-lockfile-parser": "1.16.0", - "snyk-nuget-plugin": "1.13.0", - "snyk-php-plugin": "1.6.4", + "snyk-nodejs-lockfile-parser": "1.16.1", + "snyk-nuget-plugin": "1.13.1", + "snyk-php-plugin": "1.7.0", "snyk-policy": "1.13.5", "snyk-python-plugin": "^1.13.3", "snyk-resolve": "1.0.1", "snyk-resolve-deps": "4.4.0", - "snyk-sbt-plugin": "2.8.0", + "snyk-sbt-plugin": "2.9.0", "snyk-tree": "^1.0.0", "snyk-try-require": "1.3.1", "source-map-support": "^0.5.11", @@ -5748,500 +6131,61 @@ "supports-color": "^5.3.0" } }, - "debug": { - "version": "3.2.6", - "bundled": true, - "requires": { - "ms": "^2.1.1" - } - }, - "esprima": { - "version": "4.0.1", - "bundled": true - }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, - "inherits": { - "version": "2.0.4", - "bundled": true - }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" }, - "lru-cache": { - "version": "4.1.5", - "bundled": true, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "source-map-support": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", + "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, - "ms": { - "version": "2.1.2", - "bundled": true + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } }, - "prelude-ls": { - "version": "1.1.2", - "bundled": true + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } }, - "proxy-agent": { - "version": "3.1.0", - "bundled": true, - "requires": { - "agent-base": "^4.2.0", - "debug": "^3.1.0", - "http-proxy-agent": "^2.1.0", - "https-proxy-agent-snyk-fork": "*", - "lru-cache": "^4.1.2", - "pac-proxy-agent": "*", - "proxy-from-env": "^1.0.0", - "socks-proxy-agent": "^4.0.1" - }, - "dependencies": { - "agent-base": { - "version": "4.3.0", - "bundled": true, - "requires": { - "es6-promisify": "^5.0.0" - } - }, - "ast-types": { - "version": "0.13.2", - "bundled": true - }, - "bytes": { - "version": "3.1.0", - "bundled": true - }, - "co": { - "version": "4.6.0", - "bundled": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true - }, - "data-uri-to-buffer": { - "version": "2.0.2", - "bundled": true - }, - "debug": { - "version": "3.2.6", - "bundled": true, - "requires": { - "ms": "^2.1.1" - } - }, - "deep-is": { - "version": "0.1.3", - "bundled": true - }, - "degenerator": { - "version": "1.0.4", - "bundled": true, - "requires": { - "ast-types": "0.x.x", - "escodegen": "1.x.x", - "esprima": "3.x.x" - } - }, - "depd": { - "version": "1.1.2", - "bundled": true - }, - "es6-promise": { - "version": "4.2.8", - "bundled": true - }, - "es6-promisify": { - "version": "5.0.0", - "bundled": true, - "requires": { - "es6-promise": "^4.0.3" - } - }, - "escodegen": { - "version": "1.12.0", - "bundled": true, - "requires": { - "esprima": "^3.1.3", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - } - }, - "esprima": { - "version": "3.1.3", - "bundled": true - }, - "estraverse": { - "version": "4.3.0", - "bundled": true - }, - "esutils": { - "version": "2.0.3", - "bundled": true - }, - "extend": { - "version": "3.0.2", - "bundled": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "bundled": true - }, - "file-uri-to-path": { - "version": "1.0.0", - "bundled": true - }, - "ftp": { - "version": "0.3.10", - "bundled": true, - "requires": { - "readable-stream": "1.1.x", - "xregexp": "2.0.0" - }, - "dependencies": { - "readable-stream": { - "version": "1.1.14", - "bundled": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - } - } - }, - "get-uri": { - "version": "2.0.3", - "bundled": true, - "requires": { - "data-uri-to-buffer": "2", - "debug": "4", - "extend": "~3.0.2", - "file-uri-to-path": "1", - "ftp": "~0.3.10", - "readable-stream": "3" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "bundled": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "http-errors": { - "version": "1.7.3", - "bundled": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - } - }, - "http-proxy-agent": { - "version": "2.1.0", - "bundled": true, - "requires": { - "agent-base": "4", - "debug": "3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "bundled": true - } - } - }, - "https-proxy-agent-snyk-fork": { - "version": "2.2.2-fixed-mitm-vuln", - "bundled": true, - "requires": { - "agent-base": "^4.3.0", - "debug": "^3.1.0" - } - }, - "iconv-lite": { - "version": "0.4.24", - "bundled": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "inherits": { - "version": "2.0.4", - "bundled": true - }, - "ip": { - "version": "1.1.5", - "bundled": true - }, - "isarray": { - "version": "0.0.1", - "bundled": true - }, - "levn": { - "version": "0.3.0", - "bundled": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "ms": { - "version": "2.1.2", - "bundled": true - }, - "netmask": { - "version": "1.0.6", - "bundled": true - }, - "optionator": { - "version": "0.8.2", - "bundled": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "wordwrap": "~1.0.0" - } - }, - "pac-proxy-agent": { - "version": "3.0.0", - "bundled": true, - "requires": { - "agent-base": "^4.2.0", - "debug": "^3.1.0", - "get-uri": "^2.0.0", - "http-proxy-agent": "^2.1.0", - "https-proxy-agent-snyk-fork": "git://github.com/snyk/node-https-proxy-agent.git#5e86ccb682d0c833c8daa25ee6f91c670161cd66", - "pac-resolver": "^3.0.0", - "raw-body": "^2.2.0", - "socks-proxy-agent": "^4.0.1" - }, - "dependencies": { - "https-proxy-agent-snyk-fork": { - "version": "git://github.com/snyk/node-https-proxy-agent.git#5e86ccb682d0c833c8daa25ee6f91c670161cd66", - "from": "git://github.com/snyk/node-https-proxy-agent.git#fix/https-agent-vuln", - "requires": { - "agent-base": "^4.3.0", - "debug": "^3.1.0" - } - } - } - }, - "pac-resolver": { - "version": "3.0.0", - "bundled": true, - "requires": { - "co": "^4.6.0", - "degenerator": "^1.0.4", - "ip": "^1.1.5", - "netmask": "^1.0.6", - "thunkify": "^2.1.2" - } - }, - "prelude-ls": { - "version": "1.1.2", - "bundled": true - }, - "raw-body": { - "version": "2.4.1", - "bundled": true, - "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.3", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "readable-stream": { - "version": "3.4.0", - "bundled": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "dependencies": { - "string_decoder": { - "version": "1.3.0", - "bundled": true, - "requires": { - "safe-buffer": "~5.2.0" - } - } - } - }, - "safe-buffer": { - "version": "5.2.0", - "bundled": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true - }, - "setprototypeof": { - "version": "1.1.1", - "bundled": true - }, - "smart-buffer": { - "version": "4.0.2", - "bundled": true - }, - "socks": { - "version": "2.3.2", - "bundled": true, - "requires": { - "ip": "^1.1.5", - "smart-buffer": "4.0.2" - } - }, - "socks-proxy-agent": { - "version": "4.0.2", - "bundled": true, - "requires": { - "agent-base": "~4.2.1", - "socks": "~2.3.2" - }, - "dependencies": { - "agent-base": { - "version": "4.2.1", - "bundled": true, - "requires": { - "es6-promisify": "^5.0.0" - } - } - } - }, - "source-map": { - "version": "0.6.1", - "bundled": true, - "optional": true - }, - "statuses": { - "version": "1.5.0", - "bundled": true - }, - "string_decoder": { - "version": "0.10.31", - "bundled": true - }, - "thunkify": { - "version": "2.1.2", - "bundled": true - }, - "toidentifier": { - "version": "1.0.0", - "bundled": true - }, - "type-check": { - "version": "0.3.2", - "bundled": true, - "requires": { - "prelude-ls": "~1.1.2" - } - }, - "unpipe": { - "version": "1.0.0", - "bundled": true - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true - }, - "wordwrap": { - "version": "1.0.0", - "bundled": true - }, - "xregexp": { - "version": "2.0.0", - "bundled": true - } - } - }, - "proxy-from-env": { - "version": "1.0.0", - "bundled": true - }, - "pseudomap": { - "version": "1.0.2", - "bundled": true - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "requires": { - "ansi-regex": "^4.1.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "requires": { "has-flag": "^3.0.0" } }, - "type-check": { - "version": "0.3.2", - "bundled": true, - "requires": { - "prelude-ls": "~1.1.2" - } - }, "wrap-ansi": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", @@ -6251,10 +6195,6 @@ "string-width": "^3.0.0", "strip-ansi": "^5.0.0" } - }, - "yallist": { - "version": "2.1.2", - "bundled": true } } }, @@ -6288,6 +6228,11 @@ "ms": "^2.1.1" } }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -6323,15 +6268,20 @@ "requires": { "ms": "^2.1.1" } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" } } }, "snyk-gradle-plugin": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/snyk-gradle-plugin/-/snyk-gradle-plugin-3.1.0.tgz", - "integrity": "sha512-789Rqyhv1+WYbfy1Qilgsw0FMccedSaCO5n+54CXXGVUZWMsVvqJj3T8k7+vis+9Eq+Sgbdzti8vDtApz6rWWQ==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/snyk-gradle-plugin/-/snyk-gradle-plugin-3.2.2.tgz", + "integrity": "sha512-ijIWsypbtpdTuRcYTFsnEWbaBnhCc7q0iIg0A4OcOW/xLyInPwyfBMnip4ubNfHAS/PrvzgfwwwJhttcQD0ZaQ==", "requires": { - "@snyk/cli-interface": "^2.1.0", + "@snyk/cli-interface": "2.2.0", "@types/debug": "^4.1.4", "chalk": "^2.4.2", "clone-deep": "^0.3.0", @@ -6371,6 +6321,11 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -6407,9 +6362,9 @@ } }, "snyk-nodejs-lockfile-parser": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/snyk-nodejs-lockfile-parser/-/snyk-nodejs-lockfile-parser-1.16.0.tgz", - "integrity": "sha512-cf3uozRXEG88nsjOQlo+SfOJPpcLs45qpnuk2vhBBZ577IMnV+fTOJQsP2YRiikLUbdgkVlduviwUO6OVn1PhA==", + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/snyk-nodejs-lockfile-parser/-/snyk-nodejs-lockfile-parser-1.16.1.tgz", + "integrity": "sha512-MEQImB2XU35D66wYve6g1RcDuD9vyoxGvYtM+ngSd5ItujzjIpyF26W7niqHwBRGLamqjsKF5cOlbmHs+wsx/Q==", "requires": { "@yarnpkg/lockfile": "^1.0.2", "graphlib": "^2.1.5", @@ -6425,9 +6380,9 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, "source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", + "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -6436,9 +6391,9 @@ } }, "snyk-nuget-plugin": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/snyk-nuget-plugin/-/snyk-nuget-plugin-1.13.0.tgz", - "integrity": "sha512-9PrsN6kSz79lKUlpfqAYvMtac7HYbscf4OJ5LTzTcPn2XRs24NCTZylUUpilkSY0r2DyDLY18cl+qHHjfJKnig==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/snyk-nuget-plugin/-/snyk-nuget-plugin-1.13.1.tgz", + "integrity": "sha512-2AQVeahBK7Rt38p0Acl1fMsFQu3dsqoRODPoRaS0IM/bOBzVdAkDF9pCb5yKMREGpMZcyRFkt8Q+hGiUk0Nlfg==", "requires": { "debug": "^3.1.0", "dotnet-deps-parser": "4.5.2", @@ -6458,11 +6413,12 @@ } }, "snyk-php-plugin": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/snyk-php-plugin/-/snyk-php-plugin-1.6.4.tgz", - "integrity": "sha512-FFQeimtbwq17nDUS0o0zuKgyjXSX7SpoC9iYTeKvxTXrmKf2QlxTtPvmMM4/hQxehEu1i40ow1Ozw0Ahxm8Dpw==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/snyk-php-plugin/-/snyk-php-plugin-1.7.0.tgz", + "integrity": "sha512-mDe90xkqSEVrpx1ZC7ItqCOc6fZCySbE+pHVI+dAPUmf1C1LSWZrZVmAVeo/Dw9sJzJfzmcdAFQl+jZP8/uV0A==", "requires": { - "@snyk/composer-lockfile-parser": "1.0.3", + "@snyk/cli-interface": "2.2.0", + "@snyk/composer-lockfile-parser": "1.2.0", "tslib": "1.9.3" }, "dependencies": { @@ -6539,16 +6495,43 @@ }, "dependencies": { "@types/node": { - "version": "6.14.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-6.14.7.tgz", - "integrity": "sha512-YbPXbaynBTe0pVExPhL76TsWnxSPeFAvImIsmylpBWn/yfw+lHy+Q68aawvZHsgskT44ZAoeE67GM5f+Brekew==" + "version": "6.14.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-6.14.9.tgz", + "integrity": "sha512-leP/gxHunuazPdZaCvsCefPQxinqUDsCxCR5xaDUrY2MkYxQRFZZwU5e7GojyYsGB7QVtCi7iVEl/hoFXQYc+w==" + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" } } }, "snyk-sbt-plugin": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/snyk-sbt-plugin/-/snyk-sbt-plugin-2.8.0.tgz", - "integrity": "sha512-ZzyBdND5CsaO0xkv05geZXu8Dd6Llvr/5oTj811U7h7UmrvljrAiABW4RGjRJPrPVuuJaDej2p633sgGtK9UsA==", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/snyk-sbt-plugin/-/snyk-sbt-plugin-2.9.0.tgz", + "integrity": "sha512-R8jfRDkqlSsiSHYNAItKBUKUwb0n5z304Ko8ply/eoNAJMkXbFASDKHRto1v4F4wryJb4Rl1j/vFvIwytqZrww==", "requires": { "semver": "^6.1.2", "tmp": "^0.1.0", @@ -6588,12 +6571,28 @@ "lodash.clonedeep": "^4.3.0", "lru-cache": "^4.0.0", "then-fs": "^2.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + } } }, "sockjs-client": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.3.0.tgz", - "integrity": "sha512-R9jxEzhnnrdxLCNln0xg5uGHqMnkhPSTzUZH2eXcR03S/On9Yvoq2wyUZILRUhZCNVu2PmwWVoyuiPz8th8zbg==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz", + "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==", "requires": { "debug": "^3.2.5", "eventsource": "^1.0.7", @@ -6601,6 +6600,49 @@ "inherits": "^2.0.3", "json3": "^3.3.2", "url-parse": "^1.4.3" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "socks": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.3.3.tgz", + "integrity": "sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA==", + "requires": { + "ip": "1.1.5", + "smart-buffer": "^4.1.0" + } + }, + "socks-proxy-agent": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz", + "integrity": "sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg==", + "requires": { + "agent-base": "~4.2.1", + "socks": "~2.3.2" + }, + "dependencies": { + "agent-base": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz", + "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==", + "requires": { + "es6-promisify": "^5.0.0" + } + } } }, "sort-keys": { @@ -6671,9 +6713,9 @@ } }, "spdx-license-ids": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz", - "integrity": "sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g==" + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==" }, "spin.js": { "version": "2.3.2", @@ -6721,6 +6763,11 @@ } } }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, "stompjs": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/stompjs/-/stompjs-2.3.3.tgz", @@ -6795,12 +6842,9 @@ } }, "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "requires": { - "is-utf8": "^0.2.0" - } + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" }, "strip-eof": { "version": "1.0.0", @@ -6813,11 +6857,11 @@ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" }, "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", "requires": { - "has-flag": "^1.0.0" + "has-flag": "^2.0.0" } }, "symbol-observable": { @@ -6904,6 +6948,20 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" } } }, @@ -6920,15 +6978,20 @@ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" }, + "thunkify": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/thunkify/-/thunkify-2.1.2.tgz", + "integrity": "sha1-+qDp0jDFGsyVyhOjYawFyn4EVT0=" + }, "timed-out": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" }, "timers-browserify": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", - "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", + "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", "requires": { "setimmediate": "^1.0.4" } @@ -6980,6 +7043,11 @@ "repeat-string": "^1.6.1" } }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + }, "toml": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz", @@ -7006,6 +7074,19 @@ "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "requires": { + "prelude-ls": "~1.1.2" + } + }, "typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", @@ -7016,9 +7097,9 @@ } }, "ua-parser-js": { - "version": "0.7.19", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.19.tgz", - "integrity": "sha512-T3PVJ6uz8i0HzPxOF9SWzWAlfN/DavlpQqepn22xgve/5QecC+XMCAtmUNnY7C9StehaV6exjUCI801lOI7QlQ==" + "version": "0.7.20", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.20.tgz", + "integrity": "sha512-8OaIKfzL5cpx8eCMAhhvTlft8GYF8b2eQr6JkCyVdrgjcytyOmPCXrqXFcUnhonRpLlh5yxEZVohm6mzaowUOw==" }, "uglify-js": { "version": "2.8.29", @@ -7049,6 +7130,16 @@ "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", "optional": true }, + "uglifyjs-webpack-plugin": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz", + "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=", + "requires": { + "source-map": "^0.5.6", + "uglify-js": "^2.8.29", + "webpack-sources": "^1.0.1" + } + }, "uncontrollable": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-4.1.0.tgz", @@ -7058,35 +7149,14 @@ } }, "union-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", "requires": { "arr-union": "^3.1.0", "get-value": "^2.0.6", "is-extendable": "^0.1.1", - "set-value": "^0.4.3" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - }, - "set-value": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" - } - } + "set-value": "^2.0.1" } }, "unique-string": { @@ -7097,6 +7167,11 @@ "crypto-random-string": "^1.0.0" } }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, "unset-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", @@ -7139,9 +7214,9 @@ "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=" }, "upath": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", - "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" }, "update-notifier": { "version": "2.5.0", @@ -7193,6 +7268,14 @@ } } }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "requires": { + "punycode": "^2.1.0" + } + }, "urix": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", @@ -7215,11 +7298,11 @@ } }, "url-parse": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.4.tgz", - "integrity": "sha512-/92DTTorg4JjktLNLe6GPS2/RvAd/RGr6LuktmWSMLEOa6rjnlrFXNgSbSmkNvCoL2T028A0a1JaJLzRMlFoHg==", + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", + "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", "requires": { - "querystringify": "^2.0.0", + "querystringify": "^2.1.1", "requires-port": "^1.0.0" } }, @@ -7273,12 +7356,9 @@ } }, "vm-browserify": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", - "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", - "requires": { - "indexof": "0.0.1" - } + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" }, "vscode-languageserver-types": { "version": "3.14.0", @@ -7304,31 +7384,32 @@ } }, "webpack": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-2.7.0.tgz", - "integrity": "sha512-MjAA0ZqO1ba7ZQJRnoCdbM56mmFpipOPUv/vQpwwfSI42p5PVDdoiuK2AL2FwFUVgT859Jr43bFZXRg/LNsqvg==", + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.12.0.tgz", + "integrity": "sha512-Sw7MdIIOv/nkzPzee4o0EdvCuPmxT98+vVpIvwtcwcF1Q4SDSNp92vwcKc4REe7NItH9f1S4ra9FuQ7yuYZ8bQ==", "requires": { "acorn": "^5.0.0", "acorn-dynamic-import": "^2.0.0", - "ajv": "^4.7.0", - "ajv-keywords": "^1.1.1", + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0", "async": "^2.1.2", - "enhanced-resolve": "^3.3.0", + "enhanced-resolve": "^3.4.0", + "escope": "^3.6.0", "interpret": "^1.0.0", "json-loader": "^0.5.4", "json5": "^0.5.1", "loader-runner": "^2.3.0", - "loader-utils": "^0.2.16", + "loader-utils": "^1.1.0", "memory-fs": "~0.4.1", "mkdirp": "~0.5.0", "node-libs-browser": "^2.0.0", "source-map": "^0.5.3", - "supports-color": "^3.1.0", - "tapable": "~0.2.5", - "uglify-js": "^2.8.27", - "watchpack": "^1.3.1", + "supports-color": "^4.2.1", + "tapable": "^0.2.7", + "uglifyjs-webpack-plugin": "^0.4.6", + "watchpack": "^1.4.0", "webpack-sources": "^1.0.1", - "yargs": "^6.0.0" + "yargs": "^8.0.2" } }, "webpack-core": { @@ -7401,11 +7482,12 @@ } }, "websocket-driver": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", - "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz", + "integrity": "sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg==", "requires": { - "http-parser-js": ">=0.4.0", + "http-parser-js": ">=0.4.0 <0.4.11", + "safe-buffer": ">=5.1.0", "websocket-extensions": ">=0.1.1" } }, @@ -7428,9 +7510,9 @@ } }, "which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" }, "widest-line": { "version": "2.0.1", @@ -7482,6 +7564,11 @@ "execa": "^1.0.0" } }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" + }, "wordwrap": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", @@ -7502,9 +7589,9 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "write-file-atomic": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.2.tgz", - "integrity": "sha512-s0b6vB3xIVRLWywa6X9TOMA7k9zio0TMOsl9ZnDkliA/cfJlpHXAscj0gbHVJiTdIuAYpIyqS5GW91fqm6gG5g==", + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", "requires": { "graceful-fs": "^4.1.11", "imurmurhash": "^0.1.4", @@ -7551,6 +7638,11 @@ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=" }, + "xregexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz", + "integrity": "sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM=" + }, "xtend": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", @@ -7568,34 +7660,39 @@ "optional": true }, "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" }, "yargs": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", - "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", + "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", "requires": { - "camelcase": "^3.0.0", + "camelcase": "^4.1.0", "cliui": "^3.2.0", "decamelize": "^1.1.1", "get-caller-file": "^1.0.1", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", + "os-locale": "^2.0.0", + "read-pkg-up": "^2.0.0", "require-directory": "^2.1.1", "require-main-filename": "^1.0.1", "set-blocking": "^2.0.0", - "string-width": "^1.0.2", - "which-module": "^1.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", "y18n": "^3.2.1", - "yargs-parser": "^4.2.0" + "yargs-parser": "^7.0.0" }, "dependencies": { - "camelcase": { + "ansi-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" }, "cliui": { "version": "3.2.0", @@ -7605,22 +7702,111 @@ "string-width": "^1.0.1", "strip-ansi": "^3.0.1", "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" } + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "requires": { + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" } } }, "yargs-parser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", - "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", + "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", "requires": { - "camelcase": "^3.0.0" + "camelcase": "^4.1.0" }, "dependencies": { "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" } } } diff --git a/powerauth-webflow/package.json b/powerauth-webflow/package.json index 5b8440dd8..5fab5e701 100644 --- a/powerauth-webflow/package.json +++ b/powerauth-webflow/package.json @@ -19,27 +19,27 @@ }, "homepage": "https://github.com/wultra/powerauth-webflow", "dependencies": { - "axios": "^v0.18.1", - "react": "^15.4.2", - "react-bootstrap": "^0.30.8", - "react-select": "1.0.0-beta14", - "react-dom": "^15.4.2", - "react-redux": "^5.0.3", + "axios": "^0.19.0", + "react": "^15.6.2", + "react-bootstrap": "^0.30.10", + "react-select": "1.0.1", + "react-dom": "^15.6.2", + "react-redux": "^5.0.7", "react-tiny-spin": "^0.6.5", - "react-device-detect": "^1.6.2", + "react-device-detect": "^1.9.10", "redux": "^3.6.0", "redux-thunk": "^2.2.0", - "redux-promise-middleware": "^4.2.0", - "webpack": "^2.3.2", - "sockjs-client": "^1.1.2", + "redux-promise-middleware": "^4.2.1", + "webpack": "^3.12.0", + "sockjs-client": "^1.4.0", "stompjs": "^2.3.3", - "react-intl": "^2.3.0", - "react-intl-redux": "^0.5.0", - "hard-source-webpack-plugin": "^0.5.0-rc.2", - "bluebird": "^3.5.0", + "react-intl": "^2.2.2", + "react-intl-redux": "^2.1.1", + "hard-source-webpack-plugin": "^0.5.18", + "bluebird": "^3.7.1", "intl": "^1.2.5", "sanitize-html": "^1.20.1", - "snyk": "^1.236.1", + "snyk": "^1.247.1", "lodash": "^4.17.15" }, "scripts": { @@ -49,7 +49,7 @@ }, "devDependencies": { "babel-core": "^6.26.3", - "babel-loader": "^7.1.4", + "babel-loader": "^7.1.5", "babel-polyfill": "^6.26.0", "babel-preset-env": "^1.7.0", "babel-preset-react": "^6.24.1", From 758de136cd08d8c3607ff673741042e9f2972405 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Thu, 14 Nov 2019 16:41:51 +0100 Subject: [PATCH 142/197] Fix #705: Wrong expired error on mobile api Simplify verification of expired operations --- .../controller/ApprovalScaController.java | 2 -- .../consent/controller/ConsentController.java | 2 -- .../form/controller/FormLoginController.java | 2 -- .../method/init/controller/ApiController.java | 1 - .../init/controller/TimeoutController.java | 1 - .../controller/LoginScaController.java | 1 - .../controller/MobileAppApiController.java | 3 -- .../MobileTokenOfflineController.java | 4 --- .../MobileTokenOnlineController.java | 10 ++---- .../controller/OperationReviewController.java | 4 --- .../SmsAuthorizationController.java | 3 -- .../controller/AuthMethodController.java | 32 ++++++++++++++++--- 12 files changed, 31 insertions(+), 34 deletions(-) diff --git a/powerauth-webflow-authentication-approval-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/approvalsca/controller/ApprovalScaController.java b/powerauth-webflow-authentication-approval-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/approvalsca/controller/ApprovalScaController.java index 95f5a9e23..7315315d3 100644 --- a/powerauth-webflow-authentication-approval-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/approvalsca/controller/ApprovalScaController.java +++ b/powerauth-webflow-authentication-approval-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/approvalsca/controller/ApprovalScaController.java @@ -82,7 +82,6 @@ public ApprovalScaController(NextStepClient nextStepClient, AuthMethodQueryServi public ApprovalScaAuthResponse authenticateScaApproval(@RequestBody ApprovalScaAuthRequest request) throws AuthStepException, NextStepServiceException { GetOperationDetailResponse operation = getOperation(); logger.info("Step authentication started, operation ID: {}, authentication method: {}", operation.getOperationId(), getAuthMethodName().toString()); - checkOperationExpiration(operation); String userId = operation.getUserId(); if (userId == null) { // At this point user ID must be known, method cannot continue @@ -130,7 +129,6 @@ public ApprovalScaAuthResponse authenticateScaApproval(@RequestBody ApprovalScaA public ApprovalScaInitResponse initScaApproval(@RequestBody ApprovalScaInitRequest request) throws AuthStepException, NextStepServiceException { GetOperationDetailResponse operation = getOperation(); logger.info("Step init started, operation ID: {}, authentication method: {}", operation.getOperationId(), getAuthMethodName().toString()); - checkOperationExpiration(operation); String userId = operation.getUserId(); if (userId == null) { // At this point user ID must be known, method cannot continue diff --git a/powerauth-webflow-authentication-consent/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/consent/controller/ConsentController.java b/powerauth-webflow-authentication-consent/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/consent/controller/ConsentController.java index ca7ca7a0f..1232454fb 100644 --- a/powerauth-webflow-authentication-consent/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/consent/controller/ConsentController.java +++ b/powerauth-webflow-authentication-consent/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/consent/controller/ConsentController.java @@ -101,7 +101,6 @@ public ConsentController(DataAdapterClient dataAdapterClient, NextStepClient nex protected AuthenticationResult authenticate(ConsentAuthRequest request) throws AuthStepException { final GetOperationDetailResponse operation = getOperation(); logger.info("Step authentication started, operation ID: {}, authentication method: {}", operation.getOperationId(), getAuthMethodName().toString()); - checkOperationExpiration(operation); if (getConsentSkippedFromHttpSession()) { // Consent form is skipped, step authentication is complete logger.info("Step authentication succeeded, operation ID: {}, authentication method: {}", operation.getOperationId(), getAuthMethodName().toString()); @@ -186,7 +185,6 @@ protected AuthMethod getAuthMethodName() { public ConsentInitResponse initConsentForm() throws AuthStepException { final GetOperationDetailResponse operation = getOperation(); logger.info("Init step started, operation ID: {}, authentication method: {}", operation.getOperationId(), getAuthMethodName().toString()); - checkOperationExpiration(operation); ConsentInitResponse initResponse = new ConsentInitResponse(); diff --git a/powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/controller/FormLoginController.java b/powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/controller/FormLoginController.java index b72b3b930..cd0464249 100644 --- a/powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/controller/FormLoginController.java +++ b/powerauth-webflow-authentication-form/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/form/controller/FormLoginController.java @@ -116,7 +116,6 @@ public FormLoginController(DataAdapterClient dataAdapterClient, NextStepClient n protected AuthenticationResult authenticate(UsernamePasswordAuthRequest request) throws AuthStepException { GetOperationDetailResponse operation = getOperation(); logger.info("Step authentication started, operation ID: {}, authentication method: {}", operation.getOperationId(), getAuthMethodName().toString()); - checkOperationExpiration(operation); try { FormData formData = new FormDataConverter().fromOperationFormData(operation.getFormData()); @@ -343,7 +342,6 @@ UsernamePasswordInitResponse initLoginForm(@RequestBody UsernamePasswordInitRequ } final GetOperationDetailResponse operation = getOperation(); logger.info("Init step started, operation ID: {}, authentication method: {}", operation.getOperationId(), getAuthMethodName().toString()); - checkOperationExpiration(operation); final UsernamePasswordInitResponse response = new UsernamePasswordInitResponse(); try { ObjectResponse nsObjectResponse = nextStepClient.getOrganizationList(); diff --git a/powerauth-webflow-authentication-init/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/init/controller/ApiController.java b/powerauth-webflow-authentication-init/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/init/controller/ApiController.java index 200dd39b9..4295c7736 100644 --- a/powerauth-webflow-authentication-init/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/init/controller/ApiController.java +++ b/powerauth-webflow-authentication-init/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/init/controller/ApiController.java @@ -84,7 +84,6 @@ public ApiController(OperationSessionService operationSessionService) { try { operation = getOperation(); logger.info("Operation found, operation ID: {}, operation name: {}", operation.getOperationId(), operation.getOperationName()); - checkOperationExpiration(operation); } catch (OperationNotAvailableException ex) { logger.info("Operation not found"); // Operation is not available - this state is valid in INIT authentication method, operation was not initialized yet diff --git a/powerauth-webflow-authentication-init/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/init/controller/TimeoutController.java b/powerauth-webflow-authentication-init/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/init/controller/TimeoutController.java index a18c4ebbe..b51c285d9 100644 --- a/powerauth-webflow-authentication-init/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/init/controller/TimeoutController.java +++ b/powerauth-webflow-authentication-init/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/init/controller/TimeoutController.java @@ -65,7 +65,6 @@ public VerifyTimeoutResponse verifyTimeout(VerifyTimeoutRequest request) throws } final GetOperationDetailResponse operation = getOperation(); logger.debug("Verify timeout started, operation: {}", operation.getOperationId()); - checkOperationExpiration(operation); final VerifyTimeoutResponse response = new VerifyTimeoutResponse(); response.setTimeoutDelayMs(timeoutService.getTimeoutDelay(operation)); diff --git a/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/controller/LoginScaController.java b/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/controller/LoginScaController.java index 694558eba..f3e70f748 100644 --- a/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/controller/LoginScaController.java +++ b/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/controller/LoginScaController.java @@ -107,7 +107,6 @@ public LoginScaController(DataAdapterClient dataAdapterClient, NextStepClient ne public LoginScaAuthResponse authenticateScaLogin(@RequestBody LoginScaAuthRequest request) throws AuthStepException, NextStepServiceException { GetOperationDetailResponse operation = getOperation(); logger.info("Step authentication started, operation ID: {}, authentication method: {}", operation.getOperationId(), getAuthMethodName().toString()); - checkOperationExpiration(operation); try { FormData formData = new FormDataConverter().fromOperationFormData(operation.getFormData()); ApplicationContext applicationContext = operation.getApplicationContext(); diff --git a/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/controller/MobileAppApiController.java b/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/controller/MobileAppApiController.java index 1a3e853ec..a942fc99f 100644 --- a/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/controller/MobileAppApiController.java +++ b/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/controller/MobileAppApiController.java @@ -232,9 +232,6 @@ private Map getOperationConfigs(List history = operation.getHistory(); for (OperationHistory h : history) { if (AuthMethod.POWERAUTH_TOKEN.equals(h.getAuthMethod()) @@ -116,7 +115,6 @@ protected AuthMethod getAuthMethodName() { final GetOperationDetailResponse operation = getOperation(); final AuthMethod authMethod = getAuthMethodName(operation); logger.info("Init step started, operation ID: {}, authentication method: {}", operation.getOperationId(), authMethod.toString()); - checkOperationExpiration(operation); MobileTokenInitResponse initResponse = pushMessageService.sendStepInitPushMessage(operation, authMethod); initResponse.setOfflineModeAvailable(webFlowServicesConfiguration.isOfflineModeAvailable()); @@ -147,15 +145,13 @@ protected AuthMethod getAuthMethodName() { @RequestMapping(value = "/authenticate", method = RequestMethod.POST) public @ResponseBody MobileTokenAuthenticationResponse checkOperationStatus(@RequestBody MobileTokenAuthenticationRequest request) throws AuthStepException { - final GetOperationDetailResponse operation = getOperation(); + final GetOperationDetailResponse operation = getOperation(false); final AuthMethod authMethod = getAuthMethodName(operation); // Log level is set to FINE due to large amount of requests caused by polling. logger.debug("Step authentication started, operation ID: {}, authentication method: {}", operation.getOperationId(), authMethod.toString()); - - // Custom handling of operation expiration, checkOperationExpiration() method is not called if (operation.isExpired()) { - logger.info("Operation has timed out, operation ID: {}", operation.getOperationId()); - // handle operation expiration + logger.info("Operation has timed out, operation ID: {}", operation); + // Handle operation expiration try { cancelAuthorization(operation.getOperationId(), operation.getUserId(), OperationCancelReason.TIMED_OUT_OPERATION, null); } catch (Exception e) { diff --git a/powerauth-webflow-authentication-operation-review/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/operation/controller/OperationReviewController.java b/powerauth-webflow-authentication-operation-review/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/operation/controller/OperationReviewController.java index 111048b5a..166e86de7 100644 --- a/powerauth-webflow-authentication-operation-review/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/operation/controller/OperationReviewController.java +++ b/powerauth-webflow-authentication-operation-review/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/operation/controller/OperationReviewController.java @@ -98,7 +98,6 @@ public OperationReviewController(DataAdapterClient dataAdapterClient, NextStepCl protected AuthenticationResult authenticate(OperationReviewRequest request) throws AuthStepException { final GetOperationDetailResponse operation = getOperation(); logger.info("Step authentication started, operation ID: {}, authentication method: {}", operation.getOperationId(), getAuthMethodName().toString()); - checkOperationExpiration(operation); //TODO: Check pre-authenticated user here logger.info("Step authentication succeeded, operation ID: {}, authentication method: {}", operation.getOperationId(), getAuthMethodName().toString()); return new AuthenticationResult(operation.getUserId(), operation.getOrganizationId()); @@ -122,7 +121,6 @@ protected AuthMethod getAuthMethodName() { @RequestMapping(value = "/detail", method = RequestMethod.POST) public @ResponseBody OperationReviewDetailResponse getOperationDetails(@RequestBody OperationDetailRequest request) throws AuthStepException { final GetOperationDetailResponse operation = getOperation(); - checkOperationExpiration(operation); OperationReviewDetailResponse response = new OperationReviewDetailResponse(); response.setData(operation.getOperationData()); response.setFormData(decorateFormData(operation)); @@ -238,7 +236,6 @@ public OperationReviewResponse continueAuthentication(String operationId, String private Response updateFormDataImpl(UpdateOperationFormDataRequest request) throws NextStepServiceException, DataAdapterClientErrorException, AuthStepException { final GetOperationDetailResponse operation = getOperation(); - checkOperationExpiration(operation); // update formData in Next Step server nextStepClient.updateOperationFormData(operation.getOperationId(), request.getFormData()); // Send notification to Data Adapter if the bank account has changed. @@ -281,7 +278,6 @@ private Response updateFormDataImpl(UpdateOperationFormDataRequest request) thro private Response updateChosenAuthenticationMethodImpl(UpdateOperationChosenAuthMethodRequest request) throws NextStepServiceException, AuthStepException { final GetOperationDetailResponse operation = getOperation(); - checkOperationExpiration(operation); // update chosenAuthMethod in Next Step server nextStepClient.updateChosenAuthMethod(operation.getOperationId(), request.getChosenAuthMethod()); return new Response(); diff --git a/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java b/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java index 0dd1c7c8d..671210b76 100644 --- a/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java +++ b/powerauth-webflow-authentication-sms/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/sms/controller/SmsAuthorizationController.java @@ -111,7 +111,6 @@ protected AuthenticationResult authenticate(SmsAuthorizationRequest request) thr final GetOperationDetailResponse operation = getOperation(); final AuthMethod authMethod = getAuthMethodName(operation); logger.info("Step authentication started, operation ID: {}, authentication method: {}", operation.getOperationId(), authMethod.toString()); - checkOperationExpiration(operation); final String messageId = getMessageIdFromHttpSession(); try { FormData formData = new FormDataConverter().fromOperationFormData(operation.getFormData()); @@ -334,7 +333,6 @@ private void cleanHttpSession() { final GetOperationDetailResponse operation = getOperation(); final AuthMethod authMethod = getAuthMethodName(operation); logger.info("Init step started, operation ID: {}, authentication method: {}", operation.getOperationId(), authMethod.toString()); - checkOperationExpiration(operation); InitSmsAuthorizationResponse initResponse = new InitSmsAuthorizationResponse(); // By default enable both SMS authorization and password verification (2FA) @@ -422,7 +420,6 @@ private void cleanHttpSession() { final GetOperationDetailResponse operation = getOperation(); final AuthMethod authMethod = getAuthMethodName(operation); logger.info("Resend step started, operation ID: {}, authentication method: {}", operation.getOperationId(), authMethod.toString()); - checkOperationExpiration(operation); ResendSmsAuthorizationResponse resendResponse = new ResendSmsAuthorizationResponse(); resendResponse.setResendDelay(configuration.getSmsResendDelay()); try { diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/controller/AuthMethodController.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/controller/AuthMethodController.java index f3515c892..c2e93d543 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/controller/AuthMethodController.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/controller/AuthMethodController.java @@ -96,11 +96,21 @@ public abstract class AuthMethodController operationDetail = nextStepClient.getOperationDetail(operationId); final GetOperationDetailResponse operation = operationDetail.getResponseObject(); - validateOperationState(operation); + if (validateOperationSate) { + validateOperationState(operation); + } filterStepsBasedOnActiveAuthMethods(operation.getSteps(), operation.getUserId(), operationId); // Convert operation definition for LOGIN_SCA step which requires login operation definition and not approval operation definition. // This is a temporary workaround until Web Flow supports configuration of multiple operations in a compound operation. @@ -137,7 +160,7 @@ protected GetOperationDetailResponse getOperation(String operationId) throws Aut * @param operation Operation. * @throws OperationTimeoutException Thrown when operation is expired. */ - protected void checkOperationExpiration(GetOperationDetailResponse operation) throws OperationTimeoutException { + private void checkOperationExpiration(GetOperationDetailResponse operation) throws OperationTimeoutException { if (operation == null) { throw new IllegalArgumentException("Operation is null in checkOperationExpiration"); } @@ -569,6 +592,7 @@ private void validateOperationState(GetOperationDetailResponse operation) throws throw new OperationNotAvailableException("Operation is not available"); } logger.debug("Validate operation started, operation ID: {}", operation.getOperationId()); + checkOperationExpiration(operation); if (operation.getResult() == AuthResult.FAILED) { List operationHistory = operation.getHistory(); if (operationHistory.size() == 0 || operationHistory.get(operationHistory.size()-1).getRequestAuthStepResult() != AuthStepResult.CANCELED) { From 0ad16e4ec6f6fc79375786ed8fd2522cc86678e9 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Thu, 14 Nov 2019 16:52:20 +0100 Subject: [PATCH 143/197] Fix logging --- .../mtoken/controller/MobileTokenOnlineController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/controller/MobileTokenOnlineController.java b/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/controller/MobileTokenOnlineController.java index a0c66efe8..d1e216a62 100644 --- a/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/controller/MobileTokenOnlineController.java +++ b/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/controller/MobileTokenOnlineController.java @@ -150,7 +150,7 @@ protected AuthMethod getAuthMethodName() { // Log level is set to FINE due to large amount of requests caused by polling. logger.debug("Step authentication started, operation ID: {}, authentication method: {}", operation.getOperationId(), authMethod.toString()); if (operation.isExpired()) { - logger.info("Operation has timed out, operation ID: {}", operation); + logger.info("Operation has timed out, operation ID: {}", operation.getOperationId()); // Handle operation expiration try { cancelAuthorization(operation.getOperationId(), operation.getUserId(), OperationCancelReason.TIMED_OUT_OPERATION, null); From 71c405e4299cfd58d28e49e185ba8cc2fde4596b Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Thu, 14 Nov 2019 17:48:24 +0100 Subject: [PATCH 144/197] Fix incorrect error codes for failed operation updates in Next Step --- .../MobileApiExceptionResolver.java | 12 +++---- .../controller/AuthMethodController.java | 18 +++++++--- .../OperationIsAlreadyCanceledException.java | 35 +++++++++++++++++++ ...=> OperationIsAlreadyFailedException.java} | 4 +-- .../exception/OperationIsAlreadyFinished.java | 35 +++++++++++++++++++ 5 files changed, 90 insertions(+), 14 deletions(-) create mode 100644 powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/exception/OperationIsAlreadyCanceledException.java rename powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/exception/{OperationAlreadyFailedException.java => OperationIsAlreadyFailedException.java} (87%) create mode 100644 powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/exception/OperationIsAlreadyFinished.java diff --git a/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/errorhandling/MobileApiExceptionResolver.java b/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/errorhandling/MobileApiExceptionResolver.java index 0a77ef13d..f8ca033b6 100644 --- a/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/errorhandling/MobileApiExceptionResolver.java +++ b/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/errorhandling/MobileApiExceptionResolver.java @@ -18,11 +18,7 @@ import io.getlime.core.rest.model.base.entity.Error; import io.getlime.core.rest.model.base.response.ErrorResponse; import io.getlime.security.powerauth.lib.mtoken.model.enumeration.ErrorCode; -import io.getlime.security.powerauth.lib.nextstep.model.exception.OperationAlreadyCanceledException; -import io.getlime.security.powerauth.lib.nextstep.model.exception.OperationAlreadyFailedException; -import io.getlime.security.powerauth.lib.nextstep.model.exception.OperationAlreadyFinishedException; -import io.getlime.security.powerauth.lib.webflow.authentication.exception.AuthStepException; -import io.getlime.security.powerauth.lib.webflow.authentication.exception.OperationTimeoutException; +import io.getlime.security.powerauth.lib.webflow.authentication.exception.*; import io.getlime.security.powerauth.lib.webflow.authentication.mtoken.errorhandling.exception.*; import io.getlime.security.powerauth.rest.api.base.exception.PowerAuthAuthenticationException; import org.slf4j.Logger; @@ -132,7 +128,7 @@ private ErrorResponse error(String code, AuthStepException e) { * @param t Throwable. * @return Response with error details. */ - @ExceptionHandler(OperationAlreadyFinishedException.class) + @ExceptionHandler(OperationIsAlreadyFinished.class) @ResponseStatus(HttpStatus.BAD_REQUEST) public @ResponseBody ErrorResponse handleOperationAlreadyFinishedException(Throwable t) { return error(ErrorCode.OPERATION_ALREADY_FINISHED, t); @@ -143,7 +139,7 @@ private ErrorResponse error(String code, AuthStepException e) { * @param t Throwable. * @return Response with error details. */ - @ExceptionHandler(OperationAlreadyFailedException.class) + @ExceptionHandler(OperationIsAlreadyFailedException.class) @ResponseStatus(HttpStatus.BAD_REQUEST) public @ResponseBody ErrorResponse handleOperationAlreadyFailedException(Throwable t) { return error(ErrorCode.OPERATION_ALREADY_FAILED, t); @@ -154,7 +150,7 @@ private ErrorResponse error(String code, AuthStepException e) { * @param t Throwable. * @return Response with error details. */ - @ExceptionHandler(OperationAlreadyCanceledException.class) + @ExceptionHandler(OperationIsAlreadyCanceledException.class) @ResponseStatus(HttpStatus.BAD_REQUEST) public @ResponseBody ErrorResponse handleOperationCanceledException(Throwable t) { return error(ErrorCode.OPERATION_ALREADY_CANCELED, t); diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/controller/AuthMethodController.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/controller/AuthMethodController.java index c2e93d543..7872e7103 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/controller/AuthMethodController.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/controller/AuthMethodController.java @@ -26,7 +26,7 @@ import io.getlime.security.powerauth.lib.nextstep.client.NextStepClient; import io.getlime.security.powerauth.lib.nextstep.model.entity.*; import io.getlime.security.powerauth.lib.nextstep.model.enumeration.*; -import io.getlime.security.powerauth.lib.nextstep.model.exception.NextStepServiceException; +import io.getlime.security.powerauth.lib.nextstep.model.exception.*; import io.getlime.security.powerauth.lib.nextstep.model.response.*; import io.getlime.security.powerauth.lib.webflow.authentication.base.AuthStepRequest; import io.getlime.security.powerauth.lib.webflow.authentication.base.AuthStepResponse; @@ -528,8 +528,18 @@ protected R buildAuthorizationResponse(T request, AuthResponseProvider provider) return provider.failedAuthentication(userId, "error.unknown"); } } - } catch (NextStepServiceException e) { - logger.error("Error while building authorization response", e); + } catch (OperationAlreadyFinishedException ex) { + // Translate Next Step exception for update of a finished operation + throw new OperationIsAlreadyFinished(ex.getMessage()); + } catch (OperationAlreadyCanceledException ex) { + // Translate Next Step exception for update of a canceled operation + throw new OperationIsAlreadyCanceledException(ex.getMessage()); + } catch (OperationAlreadyFailedException ex) { + // Translate Next Step exception for update of a failed operation + throw new OperationIsAlreadyFailedException(ex.getMessage()); + } catch (NextStepServiceException ex) { + // Generic Next Step error + logger.error("Error while building authorization response", ex); throw new CommunicationFailedException("Step authorization failed"); } } @@ -598,7 +608,7 @@ private void validateOperationState(GetOperationDetailResponse operation) throws if (operationHistory.size() == 0 || operationHistory.get(operationHistory.size()-1).getRequestAuthStepResult() != AuthStepResult.CANCELED) { // allow displaying of canceled operations - operation may be canceled in mobile app and later displayed in web UI logger.warn("Operation has already failed, operation ID: {}", operation.getOperationId()); - throw new OperationAlreadyFailedException("Operation has already failed"); + throw new OperationIsAlreadyFailedException("Operation has already failed"); } } final AuthMethod currentAuthMethod = getAuthMethodName(operation); diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/exception/OperationIsAlreadyCanceledException.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/exception/OperationIsAlreadyCanceledException.java new file mode 100644 index 000000000..11e4c0543 --- /dev/null +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/exception/OperationIsAlreadyCanceledException.java @@ -0,0 +1,35 @@ +/* + * Copyright 2017 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.getlime.security.powerauth.lib.webflow.authentication.exception; + +/** + * Operation already canceled exception. + * + * @author Roman Strobl, roman.strobl@wultra.com + */ +public class OperationIsAlreadyCanceledException extends AuthStepException { + + /** + * Constructor with message. + * + * @param message Error message. + */ + public OperationIsAlreadyCanceledException(String message) { + super(message, "operation.alreadyCanceled"); + } + +} diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/exception/OperationAlreadyFailedException.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/exception/OperationIsAlreadyFailedException.java similarity index 87% rename from powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/exception/OperationAlreadyFailedException.java rename to powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/exception/OperationIsAlreadyFailedException.java index ff6d95a0f..7ef63b9c0 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/exception/OperationAlreadyFailedException.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/exception/OperationIsAlreadyFailedException.java @@ -21,14 +21,14 @@ * * @author Roman Strobl, roman.strobl@wultra.com */ -public class OperationAlreadyFailedException extends AuthStepException { +public class OperationIsAlreadyFailedException extends AuthStepException { /** * Constructor with message. * * @param message Error message. */ - public OperationAlreadyFailedException(String message) { + public OperationIsAlreadyFailedException(String message) { super(message, "operation.alreadyFailed"); } diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/exception/OperationIsAlreadyFinished.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/exception/OperationIsAlreadyFinished.java new file mode 100644 index 000000000..f93e9e455 --- /dev/null +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/exception/OperationIsAlreadyFinished.java @@ -0,0 +1,35 @@ +/* + * Copyright 2017 Wultra s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.getlime.security.powerauth.lib.webflow.authentication.exception; + +/** + * Operation already finished exception. + * + * @author Roman Strobl, roman.strobl@wultra.com + */ +public class OperationIsAlreadyFinished extends AuthStepException { + + /** + * Constructor with message. + * + * @param message Error message. + */ + public OperationIsAlreadyFinished(String message) { + super(message, "operation.alreadyFinished"); + } + +} From 10b467f8fbe53bfa92a7f4def5e999f664e15688 Mon Sep 17 00:00:00 2001 From: snyk-bot Date: Fri, 15 Nov 2019 00:14:10 +0000 Subject: [PATCH 145/197] fix: powerauth-webflow/package.json & powerauth-webflow/package-lock.json to reduce vulnerabilities The following vulnerabilities are fixed with an upgrade: - https://snyk.io/vuln/npm:mem:20180117 --- powerauth-webflow/package-lock.json | 1015 +++++++++++---------------- powerauth-webflow/package.json | 2 +- 2 files changed, 392 insertions(+), 625 deletions(-) diff --git a/powerauth-webflow/package-lock.json b/powerauth-webflow/package-lock.json index 74a271415..96217b592 100644 --- a/powerauth-webflow/package-lock.json +++ b/powerauth-webflow/package-lock.json @@ -229,18 +229,11 @@ "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==" }, "acorn-dynamic-import": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz", - "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz", + "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==", "requires": { - "acorn": "^4.0.3" - }, - "dependencies": { - "acorn": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=" - } + "acorn": "^5.0.0" } }, "agent-base": { @@ -267,16 +260,6 @@ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==" }, - "align-text": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", - "requires": { - "kind-of": "^3.0.2", - "longest": "^1.0.1", - "repeat-string": "^1.5.2" - } - }, "amdefine": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", @@ -359,6 +342,11 @@ } } }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, "archy": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", @@ -446,14 +434,6 @@ "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.2.tgz", "integrity": "sha512-uWMHxJxtfj/1oZClOxDEV1sQ1HCDkA4MG8Gr69KKeBjEVH0R84WlejZ0y2DcwyBlpAEMltmVYkVgqfLFb2oyiA==" }, - "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", - "requires": { - "lodash": "^4.17.14" - } - }, "async-each": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", @@ -1673,6 +1653,47 @@ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" }, + "cacache": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", + "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", + "requires": { + "bluebird": "^3.5.1", + "chownr": "^1.0.1", + "glob": "^7.1.2", + "graceful-fs": "^4.1.11", + "lru-cache": "^4.1.1", + "mississippi": "^2.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.2", + "ssri": "^5.2.4", + "unique-filename": "^1.1.0", + "y18n": "^4.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + } + } + }, "cache-base": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", @@ -1689,11 +1710,6 @@ "unset-value": "^1.0.0" } }, - "camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" - }, "caniuse-lite": { "version": "1.0.30000941", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000941.tgz", @@ -1705,15 +1721,6 @@ "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz", "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==" }, - "center-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", - "requires": { - "align-text": "^0.1.3", - "lazy-cache": "^1.0.3" - } - }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", @@ -1759,6 +1766,16 @@ "upath": "^1.1.1" } }, + "chownr": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.3.tgz", + "integrity": "sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw==" + }, + "chrome-trace-event": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-0.1.3.tgz", + "integrity": "sha512-sjndyZHrrWiu4RY7AkHgjn80GfAM2ZSzUkZLV/Js59Ldmh6JDThf0SUmOHU53rFu2rVxxfCzJ30Ukcfch3Gb/A==" + }, "ci-info": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", @@ -1822,16 +1839,6 @@ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" }, - "cliui": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", - "requires": { - "center-align": "^0.1.1", - "right-align": "^0.1.1", - "wordwrap": "0.0.2" - } - }, "clone-deep": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.3.0.tgz", @@ -1875,11 +1882,15 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, + "commander": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", + "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==" + }, "commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" }, "component-emitter": { "version": "1.3.0", @@ -1891,6 +1902,17 @@ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, "configstore": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", @@ -1923,6 +1945,19 @@ "safe-buffer": "~5.1.1" } }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, "copy-descriptor": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", @@ -2025,14 +2060,10 @@ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=" }, - "d": { + "cyclist": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "requires": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=" }, "data-uri-to-buffer": { "version": "1.2.0", @@ -2270,6 +2301,17 @@ "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, "electron-to-chromium": { "version": "1.3.113", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.113.tgz", @@ -2322,14 +2364,24 @@ } }, "enhanced-resolve": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz", - "integrity": "sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24=", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz", + "integrity": "sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA==", "requires": { "graceful-fs": "^4.1.2", - "memory-fs": "^0.4.0", - "object-assign": "^4.0.1", - "tapable": "^0.2.7" + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + } } }, "entities": { @@ -2345,14 +2397,6 @@ "prr": "~1.0.1" } }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "requires": { - "is-arrayish": "^0.2.1" - } - }, "es-abstract": { "version": "1.16.0", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.16.0.tgz", @@ -2380,39 +2424,6 @@ "is-symbol": "^1.0.2" } }, - "es5-ext": { - "version": "0.10.52", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.52.tgz", - "integrity": "sha512-bWCbE9fbpYQY4CU6hJbJ1vSz70EClMlDgJ7BmwI+zEJhxrwjesZRPglGJlsZhu0334U3hI+gaspwksH9IGD6ag==", - "requires": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.2", - "next-tick": "~1.0.0" - } - }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "es6-map": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", - "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", - "requires": { - "d": "1", - "es5-ext": "~0.10.14", - "es6-iterator": "~2.0.1", - "es6-set": "~0.1.5", - "es6-symbol": "~3.1.1", - "event-emitter": "~0.3.5" - } - }, "es6-promise": { "version": "4.2.8", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", @@ -2426,49 +2437,6 @@ "es6-promise": "^4.0.3" } }, - "es6-set": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", - "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", - "requires": { - "d": "1", - "es5-ext": "~0.10.14", - "es6-iterator": "~2.0.1", - "es6-symbol": "3.1.1", - "event-emitter": "~0.3.5" - }, - "dependencies": { - "es6-symbol": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", - "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", - "requires": { - "d": "1", - "es5-ext": "~0.10.14" - } - } - } - }, - "es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "requires": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, - "es6-weak-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", - "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", - "requires": { - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.1" - } - }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -2499,13 +2467,11 @@ } } }, - "escope": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", - "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", + "eslint-scope": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA==", "requires": { - "es6-map": "^0.1.3", - "es6-weak-map": "^2.0.1", "esrecurse": "^4.1.0", "estraverse": "^4.1.1" } @@ -2533,15 +2499,6 @@ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" }, - "event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", - "requires": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, "events": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz", @@ -2618,21 +2575,6 @@ } } }, - "ext": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.2.0.tgz", - "integrity": "sha512-0ccUQK/9e3NreLFg6K6np8aPyRgwycx+oFGtfx1dSp7Wj00Ozw9r05FgBRlzjf2XBM7LAzwgLyDscRrtSU91hA==", - "requires": { - "type": "^2.0.0" - }, - "dependencies": { - "type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", - "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==" - } - } - }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -2806,7 +2748,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", - "dev": true, "requires": { "commondir": "^1.0.1", "make-dir": "^1.0.0", @@ -2817,11 +2758,19 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, "requires": { "locate-path": "^2.0.0" } }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, "follow-redirects": { "version": "1.5.10", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", @@ -2851,11 +2800,31 @@ "map-cache": "^0.2.2" } }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, "fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -2878,7 +2847,8 @@ }, "ansi-regex": { "version": "2.1.1", - "bundled": true + "bundled": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -2896,11 +2866,13 @@ }, "balanced-match": { "version": "1.0.0", - "bundled": true + "bundled": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2913,15 +2885,18 @@ }, "code-point-at": { "version": "1.1.0", - "bundled": true + "bundled": true, + "optional": true }, "concat-map": { "version": "0.0.1", - "bundled": true + "bundled": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", - "bundled": true + "bundled": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -3024,7 +2999,8 @@ }, "inherits": { "version": "2.0.3", - "bundled": true + "bundled": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -3034,6 +3010,7 @@ "is-fullwidth-code-point": { "version": "1.0.0", "bundled": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -3046,17 +3023,20 @@ "minimatch": { "version": "3.0.4", "bundled": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { "version": "0.0.8", - "bundled": true + "bundled": true, + "optional": true }, "minipass": { "version": "2.3.5", "bundled": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -3073,6 +3053,7 @@ "mkdirp": { "version": "0.5.1", "bundled": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -3145,7 +3126,8 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true + "bundled": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -3155,6 +3137,7 @@ "once": { "version": "1.4.0", "bundled": true, + "optional": true, "requires": { "wrappy": "1" } @@ -3230,7 +3213,8 @@ }, "safe-buffer": { "version": "5.1.2", - "bundled": true + "bundled": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -3260,6 +3244,7 @@ "string-width": { "version": "1.0.2", "bundled": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -3277,6 +3262,7 @@ "strip-ansi": { "version": "3.0.1", "bundled": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -3315,11 +3301,13 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true + "bundled": true, + "optional": true }, "yallist": { "version": "3.0.3", - "bundled": true + "bundled": true, + "optional": true } } }, @@ -3360,11 +3348,6 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, - "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" - }, "get-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", @@ -3535,11 +3518,6 @@ "ansi-regex": "^2.0.0" } }, - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" - }, "has-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", @@ -3710,6 +3688,11 @@ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=" + }, "immediate": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", @@ -3841,11 +3824,6 @@ } } }, - "interpret": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", - "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==" - }, "intl": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/intl/-/intl-1.2.5.tgz", @@ -3903,11 +3881,6 @@ "kind-of": "^3.0.2" } }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" - }, "is-binary-path": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", @@ -4151,11 +4124,6 @@ "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", "dev": true }, - "json-loader": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", - "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==" - }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -4169,7 +4137,8 @@ "json5": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=" + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true }, "jszip": { "version": "3.2.2", @@ -4203,11 +4172,6 @@ "package-json": "^4.0.0" } }, - "lazy-cache": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" - }, "lcid": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", @@ -4233,24 +4197,6 @@ "immediate": "~3.0.5" } }, - "load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "strip-bom": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" - } - } - }, "loader-runner": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", @@ -4355,11 +4301,6 @@ "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=" }, - "longest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" - }, "loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -4417,14 +4358,6 @@ "safe-buffer": "^5.1.2" } }, - "mem": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", - "requires": { - "mimic-fn": "^1.0.0" - } - }, "memory-fs": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", @@ -4498,6 +4431,34 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" }, + "mississippi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz", + "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==", + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^2.0.1", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, "mixin-deep": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", @@ -4541,6 +4502,19 @@ "minimist": "0.0.8" } }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -4669,11 +4643,6 @@ "resolved": "https://registry.npmjs.org/netmask/-/netmask-1.0.6.tgz", "integrity": "sha1-ICl+idhvb2QA8lDZ9Pa0wZRfzTU=" }, - "next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" - }, "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", @@ -4730,17 +4699,6 @@ "resolved": "https://registry.npmjs.org/node-object-hash/-/node-object-hash-1.4.2.tgz", "integrity": "sha512-UdS4swXs85fCGWWf6t6DMGgpN/vnlKeSGEQ7hJcrs7PBFoxoKLmibc3QRb7fwiYsjdL7PX8iI/TMSlZ90dgHhQ==" }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -4991,6 +4949,16 @@ "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz", "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==" }, + "parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "requires": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, "parse-asn1": { "version": "5.1.5", "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", @@ -5004,14 +4972,6 @@ "safe-buffer": "^5.1.1" } }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "requires": { - "error-ex": "^1.2.0" - } - }, "parse-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-4.0.1.tgz", @@ -5067,26 +5027,6 @@ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" - }, - "path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", - "requires": { - "pify": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" - } - } - }, "pbkdf2": { "version": "3.0.17", "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", @@ -5108,7 +5048,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", - "dev": true, "requires": { "find-up": "^2.1.0" } @@ -5210,6 +5149,11 @@ "asap": "~2.0.3" } }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=" + }, "prop-types": { "version": "15.7.2", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", @@ -5292,6 +5236,27 @@ "once": "^1.3.1" } }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -5496,35 +5461,6 @@ "spin.js": "^2.0.1" } }, - "read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", - "requires": { - "load-json-file": "^2.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^2.0.0" - } - }, - "read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", - "requires": { - "find-up": "^2.0.0", - "read-pkg": "^2.0.0" - }, - "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "requires": { - "locate-path": "^2.0.0" - } - } - } - }, "readable-stream": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", @@ -5676,29 +5612,11 @@ "is-finite": "^1.0.0" } }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" - }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" - }, "requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" }, - "resolve": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", - "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", - "requires": { - "path-parse": "^1.0.6" - } - }, "resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", @@ -5718,14 +5636,6 @@ "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" }, - "right-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", - "requires": { - "align-text": "^0.1.1" - } - }, "rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", @@ -5751,6 +5661,14 @@ "is-promise": "^2.1.0" } }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "requires": { + "aproba": "^1.1.1" + } + }, "rxjs": { "version": "6.5.3", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz", @@ -5832,6 +5750,15 @@ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, + "schema-utils": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", + "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", + "requires": { + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0" + } + }, "secure-keys": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/secure-keys/-/secure-keys-1.0.0.tgz", @@ -5850,10 +5777,10 @@ "semver": "^5.0.3" } }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + "serialize-javascript": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.9.1.tgz", + "integrity": "sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A==" }, "set-immediate-shim": { "version": "1.0.1", @@ -6689,34 +6616,6 @@ "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" }, - "spdx-correct": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", - "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==" - }, - "spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", - "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==" - }, "spin.js": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/spin.js/-/spin.js-2.3.2.tgz", @@ -6744,6 +6643,14 @@ "number-is-nan": "^1.0.0" } }, + "ssri": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz", + "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", + "requires": { + "safe-buffer": "^5.1.1" + } + }, "static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", @@ -6785,6 +6692,15 @@ "readable-stream": "^2.0.2" } }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, "stream-http": { "version": "2.8.3", "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", @@ -6797,6 +6713,11 @@ "xtend": "^4.0.0" } }, + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=" + }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", @@ -6841,11 +6762,6 @@ "ansi-regex": "^2.0.0" } }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" - }, "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", @@ -6856,23 +6772,15 @@ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" }, - "supports-color": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", - "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", - "requires": { - "has-flag": "^2.0.0" - } - }, "symbol-observable": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" }, "tapable": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.9.tgz", - "integrity": "sha512-2wsvQ+4GwBvLPLWsNfLCDYGsW6xb7aeC6utq2Qh0PFwgEy7K7dsma9Jsmb2zSQj7GvYAyUGSntLtsv++GmgL1A==" + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" }, "tar-stream": { "version": "2.1.0", @@ -6978,6 +6886,15 @@ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, "thunkify": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/thunkify/-/thunkify-2.1.2.tgz", @@ -7074,11 +6991,6 @@ "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" }, - "type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" - }, "type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", @@ -7087,6 +6999,11 @@ "prelude-ls": "~1.1.2" } }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, "typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", @@ -7101,43 +7018,42 @@ "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.20.tgz", "integrity": "sha512-8OaIKfzL5cpx8eCMAhhvTlft8GYF8b2eQr6JkCyVdrgjcytyOmPCXrqXFcUnhonRpLlh5yxEZVohm6mzaowUOw==" }, - "uglify-js": { - "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "uglify-es": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", + "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", "requires": { - "source-map": "~0.5.1", - "uglify-to-browserify": "~1.0.0", - "yargs": "~3.10.0" + "commander": "~2.13.0", + "source-map": "~0.6.1" }, "dependencies": { - "yargs": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", - "requires": { - "camelcase": "^1.0.2", - "cliui": "^2.1.0", - "decamelize": "^1.0.0", - "window-size": "0.1.0" - } + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" } } }, - "uglify-to-browserify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", - "optional": true - }, "uglifyjs-webpack-plugin": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz", - "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.3.0.tgz", + "integrity": "sha512-ovHIch0AMlxjD/97j9AYovZxG5wnHOPkL7T1GKochBADp/Zwc44pEWNqpKl1Loupp1WhFg7SlYmHZRUfdAacgw==", "requires": { - "source-map": "^0.5.6", - "uglify-js": "^2.8.29", - "webpack-sources": "^1.0.1" + "cacache": "^10.0.4", + "find-cache-dir": "^1.0.0", + "schema-utils": "^0.4.5", + "serialize-javascript": "^1.4.0", + "source-map": "^0.6.1", + "uglify-es": "^3.3.4", + "webpack-sources": "^1.1.0", + "worker-farm": "^1.5.2" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } } }, "uncontrollable": { @@ -7159,6 +7075,22 @@ "set-value": "^2.0.1" } }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "requires": { + "imurmurhash": "^0.1.4" + } + }, "unique-string": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", @@ -7346,15 +7278,6 @@ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==" }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, "vm-browserify": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", @@ -7384,32 +7307,29 @@ } }, "webpack": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.12.0.tgz", - "integrity": "sha512-Sw7MdIIOv/nkzPzee4o0EdvCuPmxT98+vVpIvwtcwcF1Q4SDSNp92vwcKc4REe7NItH9f1S4ra9FuQ7yuYZ8bQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.0.0.tgz", + "integrity": "sha512-wnEjBERuGrbelfsBJ7QKLuGAEaLNPTGJrLgK8H0p1TPS3pUqvTU4OZKeS1OAd8xBpEkuBrFcyHpXPvi0JZVvkA==", "requires": { "acorn": "^5.0.0", - "acorn-dynamic-import": "^2.0.0", + "acorn-dynamic-import": "^3.0.0", "ajv": "^6.1.0", "ajv-keywords": "^3.1.0", - "async": "^2.1.2", - "enhanced-resolve": "^3.4.0", - "escope": "^3.6.0", - "interpret": "^1.0.0", - "json-loader": "^0.5.4", - "json5": "^0.5.1", + "chrome-trace-event": "^0.1.1", + "enhanced-resolve": "^4.0.0", + "eslint-scope": "^3.7.1", "loader-runner": "^2.3.0", "loader-utils": "^1.1.0", "memory-fs": "~0.4.1", + "micromatch": "^3.1.8", "mkdirp": "~0.5.0", + "neo-async": "^2.5.0", "node-libs-browser": "^2.0.0", - "source-map": "^0.5.3", - "supports-color": "^4.2.1", - "tapable": "^0.2.7", - "uglifyjs-webpack-plugin": "^0.4.6", + "schema-utils": "^0.4.2", + "tapable": "^1.0.0", + "uglifyjs-webpack-plugin": "^1.1.1", "watchpack": "^1.4.0", - "webpack-sources": "^1.0.1", - "yargs": "^8.0.2" + "webpack-sources": "^1.0.1" } }, "webpack-core": { @@ -7509,11 +7429,6 @@ "isexe": "^2.0.0" } }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" - }, "widest-line": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz", @@ -7551,11 +7466,6 @@ } } }, - "window-size": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=" - }, "windows-release": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-3.2.0.tgz", @@ -7569,10 +7479,13 @@ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" }, - "wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" + "worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "requires": { + "errno": "~0.1.7" + } }, "wrap-ansi": { "version": "2.1.0", @@ -7663,152 +7576,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - }, - "yargs": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", - "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", - "requires": { - "camelcase": "^4.1.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", - "read-pkg-up": "^2.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^7.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" - }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - }, - "dependencies": { - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - } - } - }, - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" - }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "os-locale": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", - "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" - } - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" - } - } - }, - "yargs-parser": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", - "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", - "requires": { - "camelcase": "^4.1.0" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" - } - } } } } diff --git a/powerauth-webflow/package.json b/powerauth-webflow/package.json index 5fab5e701..c259dffb6 100644 --- a/powerauth-webflow/package.json +++ b/powerauth-webflow/package.json @@ -30,7 +30,7 @@ "redux": "^3.6.0", "redux-thunk": "^2.2.0", "redux-promise-middleware": "^4.2.1", - "webpack": "^3.12.0", + "webpack": "^4.0.0", "sockjs-client": "^1.4.0", "stompjs": "^2.3.3", "react-intl": "^2.2.2", From e5f2709b39bf9331ba45fa5cf888e492f1824fb5 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Fri, 15 Nov 2019 13:15:22 +0100 Subject: [PATCH 146/197] Fix issues caused by migration to WebPack 4, remove development mode for JS due to logged errors and warnings --- docs/Compilation,-Packaging-and-Deployment.md | 29 - pom.xml | 35 - powerauth-webflow/package-lock.json | 1164 +++++++++++++---- powerauth-webflow/package.json | 4 +- powerauth-webflow/pom.xml | 71 - .../src/main/js/webpack-deploy.js | 71 - powerauth-webflow/webpack.config.js | 8 +- 7 files changed, 918 insertions(+), 464 deletions(-) delete mode 100644 powerauth-webflow/src/main/js/webpack-deploy.js diff --git a/docs/Compilation,-Packaging-and-Deployment.md b/docs/Compilation,-Packaging-and-Deployment.md index 0ad7c0607..ed1dbe5ed 100644 --- a/docs/Compilation,-Packaging-and-Deployment.md +++ b/docs/Compilation,-Packaging-and-Deployment.md @@ -41,32 +41,3 @@ You can test the web flow demo application by navigating to: http://localhost:80 * Use the "Login" action to test the user authentication. The Data Adapter sample project uses "test" as password for any username. * Use the "Payment (DEMO)" action to test payment authorization. You will need to enable POWERAUTH_TOKEN authentication method for the user who will authorize the payment (using [Next Step REST API](./Next-Step-Server-REST-API-Reference.md#enable-an-authentication-method-for-given-user)). * Use the "Authorization" action to test operation authorization. In order to test this action you will need to create an operation and obtain its operationId (using [Next Step REST API](./Next-Step-Server-REST-API-Reference.md#create-an-operation)). - -## Maven Profiles (Advanced) - -There are following Maven profiles defined: -* **prod** - used for deployment to a production environment (default profile) -* **fast** - used for fast redeployment to a development environment (do not use when dependencies change, in this case prod build is required) -* **dev** - used for development in the IDE (mainly for debugging) - -Path to the pom.xml file: - -`powerauth-webflow/powerauth-webflow/pom.xml` - -## Development - -During development you can start the backend and the frontend separately for easier continuous redeployment. - -### Backend -To start the backend part in the IDE, simply point the IDE to run Main class: - -`io.getlime.security.powerauth.app.webflow.PowerAuthWebFlowApplication` - -You should see a Spring boot console in IDE log and the last message should start with "Started PowerAuthWebFlowApplication". To redeploy, trigger a build in the IDE and Maven should redeploy changes automatically. - -### Frontend -To start the frontend part in the IDE, use the **package** phase with the "dev" Maven profile: - -`mvn package -P dev` - -Maven builds the application and stops the deployment in the moment when webpack starts watching for changes. When you make any change in JavaScript code, you should see a message from compiler and bundle.js in target folder should be redeployed automatically using the WebpackDeployPlugin (see [webpack.config.js](../powerauth-webflow/webpack.config.js) and [webpack-deploy.js](../powerauth-webflow/src/main/js/webpack-deploy.js)). Note that bundle.js is built in full debug mode, hence the large size of the output of the compiler. Compiled frontend code is located in target/classes/static/built/bundle.js diff --git a/pom.xml b/pom.xml index 7bd31912d..bc0db11ef 100644 --- a/pom.xml +++ b/pom.xml @@ -174,41 +174,6 @@ - - fast - - true - true - true - - - - - org.apache.maven.plugins - maven-war-plugin - ${maven-war-plugin.version} - - true - false - - - - org.zeroturnaround - jrebel-maven-plugin - 1.1.9 - - - generate-rebel-xml - process-resources - - generate - - - - - - - diff --git a/powerauth-webflow/package-lock.json b/powerauth-webflow/package-lock.json index 96217b592..02879a2a4 100644 --- a/powerauth-webflow/package-lock.json +++ b/powerauth-webflow/package-lock.json @@ -213,6 +213,174 @@ "@types/node": "*" } }, + "@webassemblyjs/ast": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", + "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==", + "requires": { + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz", + "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==" + }, + "@webassemblyjs/helper-api-error": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz", + "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==" + }, + "@webassemblyjs/helper-buffer": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz", + "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==" + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz", + "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==", + "requires": { + "@webassemblyjs/wast-printer": "1.8.5" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz", + "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==" + }, + "@webassemblyjs/helper-module-context": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz", + "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==", + "requires": { + "@webassemblyjs/ast": "1.8.5", + "mamacro": "^0.0.3" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz", + "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==" + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz", + "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==", + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz", + "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==", + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz", + "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==", + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz", + "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==" + }, + "@webassemblyjs/wasm-edit": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz", + "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==", + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/helper-wasm-section": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-opt": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "@webassemblyjs/wast-printer": "1.8.5" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz", + "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==", + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz", + "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==", + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz", + "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==", + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz", + "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==", + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/floating-point-hex-parser": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-code-frame": "1.8.5", + "@webassemblyjs/helper-fsm": "1.8.5", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz", + "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==", + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + }, "@yarnpkg/lockfile": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", @@ -224,17 +392,9 @@ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" }, "acorn": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", - "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==" - }, - "acorn-dynamic-import": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz", - "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==", - "requires": { - "acorn": "^5.0.0" - } + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.3.0.tgz", + "integrity": "sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA==" }, "agent-base": { "version": "4.3.0", @@ -255,16 +415,16 @@ "uri-js": "^4.2.2" } }, + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==" + }, "ajv-keywords": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==" }, - "amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" - }, "ansi-align": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", @@ -1654,43 +1814,31 @@ "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" }, "cacache": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", - "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", - "requires": { - "bluebird": "^3.5.1", - "chownr": "^1.0.1", - "glob": "^7.1.2", - "graceful-fs": "^4.1.11", - "lru-cache": "^4.1.1", - "mississippi": "^2.0.0", + "version": "12.0.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz", + "integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==", + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", "mkdirp": "^0.5.1", "move-concurrently": "^1.0.1", "promise-inflight": "^1.0.1", - "rimraf": "^2.6.2", - "ssri": "^5.2.4", - "unique-filename": "^1.1.0", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", "y18n": "^4.0.0" }, "dependencies": { - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, "y18n": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" } } }, @@ -1710,6 +1858,11 @@ "unset-value": "^1.0.0" } }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, "caniuse-lite": { "version": "1.0.30000941", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000941.tgz", @@ -1772,9 +1925,12 @@ "integrity": "sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw==" }, "chrome-trace-event": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-0.1.3.tgz", - "integrity": "sha512-sjndyZHrrWiu4RY7AkHgjn80GfAM2ZSzUkZLV/Js59Ldmh6JDThf0SUmOHU53rFu2rVxxfCzJ30Ukcfch3Gb/A==" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "requires": { + "tslib": "^1.9.0" + } }, "ci-info": { "version": "1.6.0", @@ -1839,6 +1995,64 @@ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + } + } + }, "clone-deep": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.3.0.tgz", @@ -1883,9 +2097,9 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, "commander": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", - "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==" + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, "commondir": { "version": "1.0.1", @@ -2179,10 +2393,10 @@ "minimalistic-assert": "^1.0.0" } }, - "detect-indent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", - "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=" + "detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=" }, "diff": { "version": "4.0.1", @@ -2468,9 +2682,9 @@ } }, "eslint-scope": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.3.tgz", - "integrity": "sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", "requires": { "esrecurse": "^4.1.0", "estraverse": "^4.1.1" @@ -2575,6 +2789,14 @@ } } }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -2710,6 +2932,11 @@ "ua-parser-js": "^0.7.18" } }, + "figgy-pudding": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", + "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==" + }, "figures": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", @@ -2748,6 +2975,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "dev": true, "requires": { "commondir": "^1.0.1", "make-dir": "^1.0.0", @@ -2758,10 +2986,22 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, "requires": { "locate-path": "^2.0.0" } }, + "findup-sync": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", + "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + } + }, "flush-write-stream": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", @@ -2847,8 +3087,7 @@ }, "ansi-regex": { "version": "2.1.1", - "bundled": true, - "optional": true + "bundled": true }, "aproba": { "version": "1.2.0", @@ -2866,13 +3105,11 @@ }, "balanced-match": { "version": "1.0.0", - "bundled": true, - "optional": true + "bundled": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, - "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2885,18 +3122,15 @@ }, "code-point-at": { "version": "1.1.0", - "bundled": true, - "optional": true + "bundled": true }, "concat-map": { "version": "0.0.1", - "bundled": true, - "optional": true + "bundled": true }, "console-control-strings": { "version": "1.1.0", - "bundled": true, - "optional": true + "bundled": true }, "core-util-is": { "version": "1.0.2", @@ -2999,8 +3233,7 @@ }, "inherits": { "version": "2.0.3", - "bundled": true, - "optional": true + "bundled": true }, "ini": { "version": "1.3.5", @@ -3010,7 +3243,6 @@ "is-fullwidth-code-point": { "version": "1.0.0", "bundled": true, - "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -3023,20 +3255,17 @@ "minimatch": { "version": "3.0.4", "bundled": true, - "optional": true, "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { "version": "0.0.8", - "bundled": true, - "optional": true + "bundled": true }, "minipass": { "version": "2.3.5", "bundled": true, - "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -3053,7 +3282,6 @@ "mkdirp": { "version": "0.5.1", "bundled": true, - "optional": true, "requires": { "minimist": "0.0.8" } @@ -3126,8 +3354,7 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true, - "optional": true + "bundled": true }, "object-assign": { "version": "4.1.1", @@ -3137,7 +3364,6 @@ "once": { "version": "1.4.0", "bundled": true, - "optional": true, "requires": { "wrappy": "1" } @@ -3213,8 +3439,7 @@ }, "safe-buffer": { "version": "5.1.2", - "bundled": true, - "optional": true + "bundled": true }, "safer-buffer": { "version": "2.1.2", @@ -3244,7 +3469,6 @@ "string-width": { "version": "1.0.2", "bundled": true, - "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -3262,7 +3486,6 @@ "strip-ansi": { "version": "3.0.1", "bundled": true, - "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -3301,13 +3524,11 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true, - "optional": true + "bundled": true }, "yallist": { "version": "3.0.3", - "bundled": true, - "optional": true + "bundled": true } } }, @@ -3348,6 +3569,11 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, "get-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", @@ -3441,6 +3667,43 @@ "ini": "^1.3.4" } }, + "global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "requires": { + "global-prefix": "^3.0.0" + }, + "dependencies": { + "global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "requires": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + } + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + }, "globals": { "version": "9.18.0", "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", @@ -3485,22 +3748,6 @@ "lodash": "^4.17.5" } }, - "hard-source-webpack-plugin": { - "version": "0.5.18", - "resolved": "https://registry.npmjs.org/hard-source-webpack-plugin/-/hard-source-webpack-plugin-0.5.18.tgz", - "integrity": "sha512-qo1kuq0J4aII77JnkS36/mkhM+Mk7MNURKKmVVgY+m+2Pm3iu/hOUVkJS4sqRAKLcRRtDMdr+SrlPgJZCmdcPQ==", - "requires": { - "lodash": "^4.15.0", - "mkdirp": "^0.5.1", - "node-object-hash": "^1.2.0", - "rimraf": "^2.6.2", - "source-list-map": "^0.1.6", - "source-map": "^0.5.6", - "webpack-core": "~0.6.0", - "webpack-sources": "^1.0.1", - "write-json-file": "^2.3.0" - } - }, "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -3518,6 +3765,11 @@ "ansi-regex": "^2.0.0" } }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, "has-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", @@ -3598,6 +3850,14 @@ "os-tmpdir": "^1.0.1" } }, + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "requires": { + "parse-passwd": "^1.0.0" + } + }, "hosted-git-info": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", @@ -3703,11 +3963,73 @@ "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=" }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", + "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "requires": { + "find-up": "^3.0.0" + } + } + } + }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -3824,6 +4146,11 @@ } } }, + "interpret": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", + "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==" + }, "intl": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/intl/-/intl-1.2.5.tgz", @@ -4007,11 +4334,6 @@ "path-is-inside": "^1.0.1" } }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" - }, "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", @@ -4124,6 +4446,11 @@ "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", "dev": true }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -4231,6 +4558,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, "requires": { "p-locate": "^2.0.0", "path-exists": "^3.0.0" @@ -4335,6 +4663,19 @@ "pify": "^3.0.0" } }, + "mamacro": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", + "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==" + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "requires": { + "p-defer": "^1.0.0" + } + }, "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", @@ -4358,6 +4699,23 @@ "safe-buffer": "^5.1.2" } }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + }, + "dependencies": { + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + } + } + }, "memory-fs": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", @@ -4432,9 +4790,9 @@ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" }, "mississippi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz", - "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", "requires": { "concat-stream": "^1.5.0", "duplexify": "^3.4.2", @@ -4442,21 +4800,10 @@ "flush-write-stream": "^1.0.0", "from2": "^2.1.0", "parallel-transform": "^1.1.0", - "pump": "^2.0.1", + "pump": "^3.0.0", "pumpify": "^1.3.3", "stream-each": "^1.1.0", "through2": "^2.0.0" - }, - "dependencies": { - "pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - } } }, "mixin-deep": { @@ -4694,11 +5041,6 @@ } } }, - "node-object-hash": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/node-object-hash/-/node-object-hash-1.4.2.tgz", - "integrity": "sha512-UdS4swXs85fCGWWf6t6DMGgpN/vnlKeSGEQ7hJcrs7PBFoxoKLmibc3QRb7fwiYsjdL7PX8iI/TMSlZ90dgHhQ==" - }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -4865,15 +5207,26 @@ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" + }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" }, + "p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==" + }, "p-limit": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, "requires": { "p-try": "^1.0.0" } @@ -4882,6 +5235,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, "requires": { "p-limit": "^1.1.0" } @@ -4889,7 +5243,8 @@ "p-try": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true }, "pac-proxy-agent": { "version": "3.0.1", @@ -4972,6 +5327,11 @@ "safe-buffer": "^5.1.1" } }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=" + }, "parse-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-4.0.1.tgz", @@ -5048,6 +5408,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, "requires": { "find-up": "^2.1.0" } @@ -5612,11 +5973,55 @@ "is-finite": "^1.0.0" } }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, "requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "requires": { + "resolve-from": "^3.0.0" + } + }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + }, + "dependencies": { + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + } + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" + }, "resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", @@ -5751,11 +6156,12 @@ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, "schema-utils": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", - "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", "requires": { "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", "ajv-keywords": "^3.1.0" } }, @@ -5782,6 +6188,11 @@ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.9.1.tgz", "integrity": "sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A==" }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, "set-immediate-shim": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", @@ -6572,19 +6983,6 @@ } } }, - "sort-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", - "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", - "requires": { - "is-plain-obj": "^1.0.0" - } - }, - "source-list-map": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.8.tgz", - "integrity": "sha1-xVCyq1Qn9rPyH1r+rYjE9Vh7IQY=" - }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -6644,11 +7042,11 @@ } }, "ssri": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz", - "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", "requires": { - "safe-buffer": "^5.1.1" + "figgy-pudding": "^3.5.1" } }, "static-extend": { @@ -6772,6 +7170,14 @@ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + }, "symbol-observable": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", @@ -6873,6 +7279,139 @@ } } }, + "terser": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.4.0.tgz", + "integrity": "sha512-oDG16n2WKm27JO8h4y/w3iqBGAOSCtq7k8dRmrn4Wf9NouL0b2WpMHGChFGZq4nFAQy1FsNJrVQHfurXOSTmOA==", + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "source-map-support": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", + "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + } + } + }, + "terser-webpack-plugin": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.1.tgz", + "integrity": "sha512-ZXmmfiwtCLfz8WKZyYUuuHf3dMYEjg8NrjHMb0JqHVHVOSkzp3cW2/XG1fP3tRhqEqSzMwzzRQGtAPbs4Cncxg==", + "requires": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^1.7.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + }, + "dependencies": { + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "p-limit": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", + "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "requires": { + "find-up": "^3.0.0" + } + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + } + } + }, "then-fs": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/then-fs/-/then-fs-2.0.0.tgz", @@ -7018,44 +7557,6 @@ "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.20.tgz", "integrity": "sha512-8OaIKfzL5cpx8eCMAhhvTlft8GYF8b2eQr6JkCyVdrgjcytyOmPCXrqXFcUnhonRpLlh5yxEZVohm6mzaowUOw==" }, - "uglify-es": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", - "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", - "requires": { - "commander": "~2.13.0", - "source-map": "~0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "uglifyjs-webpack-plugin": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.3.0.tgz", - "integrity": "sha512-ovHIch0AMlxjD/97j9AYovZxG5wnHOPkL7T1GKochBADp/Zwc44pEWNqpKl1Loupp1WhFg7SlYmHZRUfdAacgw==", - "requires": { - "cacache": "^10.0.4", - "find-cache-dir": "^1.0.0", - "schema-utils": "^0.4.5", - "serialize-javascript": "^1.4.0", - "source-map": "^0.6.1", - "uglify-es": "^3.3.4", - "webpack-sources": "^1.1.0", - "worker-farm": "^1.5.2" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, "uncontrollable": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-4.1.0.tgz", @@ -7278,6 +7779,11 @@ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==" }, + "v8-compile-cache": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz", + "integrity": "sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w==" + }, "vm-browserify": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", @@ -7307,57 +7813,33 @@ } }, "webpack": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.0.0.tgz", - "integrity": "sha512-wnEjBERuGrbelfsBJ7QKLuGAEaLNPTGJrLgK8H0p1TPS3pUqvTU4OZKeS1OAd8xBpEkuBrFcyHpXPvi0JZVvkA==", - "requires": { - "acorn": "^5.0.0", - "acorn-dynamic-import": "^3.0.0", - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0", - "chrome-trace-event": "^0.1.1", - "enhanced-resolve": "^4.0.0", - "eslint-scope": "^3.7.1", - "loader-runner": "^2.3.0", - "loader-utils": "^1.1.0", - "memory-fs": "~0.4.1", - "micromatch": "^3.1.8", - "mkdirp": "~0.5.0", - "neo-async": "^2.5.0", - "node-libs-browser": "^2.0.0", - "schema-utils": "^0.4.2", - "tapable": "^1.0.0", - "uglifyjs-webpack-plugin": "^1.1.1", - "watchpack": "^1.4.0", - "webpack-sources": "^1.0.1" - } - }, - "webpack-core": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/webpack-core/-/webpack-core-0.6.9.tgz", - "integrity": "sha1-/FcViMhVjad76e+23r3Fo7FyvcI=", - "requires": { - "source-list-map": "~0.1.7", - "source-map": "~0.4.1" - }, - "dependencies": { - "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "requires": { - "amdefine": ">=0.0.4" - } - } - } - }, - "webpack-sources": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz", - "integrity": "sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==", - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" + "version": "4.41.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.41.2.tgz", + "integrity": "sha512-Zhw69edTGfbz9/8JJoyRQ/pq8FYUoY0diOXqW0T6yhgdhCv6wr0hra5DwwWexNRns2Z2+gsnrNcbe9hbGBgk/A==", + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/wasm-edit": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "acorn": "^6.2.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.1.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.1", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.1", + "watchpack": "^1.6.0", + "webpack-sources": "^1.4.1" }, "dependencies": { "source-list-map": { @@ -7369,6 +7851,73 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + } + } + }, + "webpack-cli": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.10.tgz", + "integrity": "sha512-u1dgND9+MXaEt74sJR4PR7qkPxXUSQ0RXYq8x1L6Jg1MYVEmGPrH6Ah6C4arD4r0J1P5HKjRqpab36k0eIzPqg==", + "requires": { + "chalk": "2.4.2", + "cross-spawn": "6.0.5", + "enhanced-resolve": "4.1.0", + "findup-sync": "3.0.0", + "global-modules": "2.0.0", + "import-local": "2.0.0", + "interpret": "1.2.0", + "loader-utils": "1.2.3", + "supports-color": "6.1.0", + "v8-compile-cache": "2.0.3", + "yargs": "13.2.4" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "enhanced-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", + "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "tapable": "^1.0.0" + } } } }, @@ -7429,6 +7978,11 @@ "isexe": "^2.0.0" } }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, "widest-line": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz", @@ -7511,19 +8065,6 @@ "signal-exit": "^3.0.2" } }, - "write-json-file": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-2.3.0.tgz", - "integrity": "sha1-K2TIozAE1UuGmMdtWFp3zrYdoy8=", - "requires": { - "detect-indent": "^5.0.0", - "graceful-fs": "^4.1.2", - "make-dir": "^1.0.0", - "pify": "^3.0.0", - "sort-keys": "^2.0.0", - "write-file-atomic": "^2.0.0" - } - }, "xdg-basedir": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", @@ -7576,6 +8117,129 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "yargs": { + "version": "13.2.4", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.4.tgz", + "integrity": "sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==", + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "os-locale": "^3.1.0", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "requires": { + "invert-kv": "^2.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "p-limit": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", + "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + } + } + }, + "yargs-parser": { + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", + "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } } } } diff --git a/powerauth-webflow/package.json b/powerauth-webflow/package.json index c259dffb6..538c43db2 100644 --- a/powerauth-webflow/package.json +++ b/powerauth-webflow/package.json @@ -30,12 +30,12 @@ "redux": "^3.6.0", "redux-thunk": "^2.2.0", "redux-promise-middleware": "^4.2.1", - "webpack": "^4.0.0", + "webpack": "^4.0.1", + "webpack-cli": "^3.3.10", "sockjs-client": "^1.4.0", "stompjs": "^2.3.3", "react-intl": "^2.2.2", "react-intl-redux": "^2.1.1", - "hard-source-webpack-plugin": "^0.5.18", "bluebird": "^3.7.1", "intl": "^1.2.5", "sanitize-html": "^1.20.1", diff --git a/powerauth-webflow/pom.xml b/powerauth-webflow/pom.xml index 2c54ed852..8b1556358 100644 --- a/powerauth-webflow/pom.xml +++ b/powerauth-webflow/pom.xml @@ -253,77 +253,6 @@ - - fast - - false - - - - - com.github.eirslett - frontend-maven-plugin - 1.7.5 - - target - - - - webpack build - - webpack - - - - - - - - - dev - - - - com.github.eirslett - frontend-maven-plugin - 1.7.5 - - target - - - - install node and npm - - install-node-and-npm - - - v10.15.3 - 6.4.1 - - - - npm install - - npm - - - install - - - - webpack build - - webpack - - - -d --watch - - - - - - - diff --git a/powerauth-webflow/src/main/js/webpack-deploy.js b/powerauth-webflow/src/main/js/webpack-deploy.js deleted file mode 100644 index 7ec5051e0..000000000 --- a/powerauth-webflow/src/main/js/webpack-deploy.js +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright 2016 Wultra s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -'use strict'; - -const fs = require('fs'); - -let compilationStart = -1; -let compilationEnd = -1; - -/** - * This plug-in handles redeployment of the JavaScript code during development. - * @constructor empty - */ -function WebpackDeployPlugin() { -} - -WebpackDeployPlugin.prototype.apply = function (compiler) { - compiler.plugin("compilation", compilation => { - const date = new Date(); - compilationStart = date.getTime(); - console.log("Compilation started."); - }); - - compiler.plugin("done", compilation => { - const date = new Date(); - compilationEnd = date.getTime(); - console.log("Compilation finished in " + (compilationEnd - compilationStart) + " ms."); - try { - const srcPrefix = "src/main/resources/static/resources/js/built/"; - const src1 = srcPrefix + "bundle.js"; - const src2 = srcPrefix + "bundle.js.map"; - const targetPrefix = "target/classes/static/resources/js/built/"; - const target1 = targetPrefix + "bundle.js"; - const target2 = targetPrefix + "bundle.js.map"; - // redeploy only when source and target files exist - fs.accessSync(src1); - fs.accessSync(src2); - fs.accessSync(target1); - fs.accessSync(target2); - console.log("Deploying bundle.js and bundle.js.map"); - const rs1 = fs.createReadStream(src1); - const rs2 = fs.createReadStream(src2); - const ws1 = fs.createWriteStream(target1); - const ws2 = fs.createWriteStream(target2); - rs1.pipe(ws1); - ws1.on('finish', function () { - rs2.pipe(ws2); - ws2.on('finish', function () { - console.log('Deployment was successful.'); - }); - }); - } catch (ex) { - console.log("Error occurred during deployment: " + ex.toString()); - } - }); -}; - -module.exports = WebpackDeployPlugin; \ No newline at end of file diff --git a/powerauth-webflow/webpack.config.js b/powerauth-webflow/webpack.config.js index 1ffa16c77..057ca3e72 100644 --- a/powerauth-webflow/webpack.config.js +++ b/powerauth-webflow/webpack.config.js @@ -2,8 +2,6 @@ var path = require('path'); var node_dir = __dirname + '/node_modules'; -var WebpackDeployPlugin = require('./src/main/js/webpack-deploy.js'); -var HardSourceWebpackPlugin = require('hard-source-webpack-plugin'); var webpack = require('webpack'); module.exports = { @@ -12,7 +10,7 @@ module.exports = { cache: true, resolve: { alias: { - 'stompjs': node_dir + '/stompjs/lib/stomp.js', + 'stompjs': node_dir + '/stompjs/lib/stomp.js' } }, output: { @@ -20,7 +18,7 @@ module.exports = { filename: './src/main/resources/static/resources/js/built/bundle.js' }, module: { - loaders: [ + rules: [ { test: path.join(__dirname, '.'), exclude: /(node_modules)/, @@ -34,8 +32,6 @@ module.exports = { ] }, plugins: [ - new WebpackDeployPlugin(), - new HardSourceWebpackPlugin(), new webpack.ProvidePlugin({ Promise: "bluebird" }) From ad3ae47d11cc54e6e8d7a43c0decc5b6a55c34f2 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Fri, 15 Nov 2019 14:17:21 +0100 Subject: [PATCH 147/197] Change operation validation default for consistency --- .../authentication/controller/AuthMethodController.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/controller/AuthMethodController.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/controller/AuthMethodController.java index 7872e7103..101b65615 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/controller/AuthMethodController.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/controller/AuthMethodController.java @@ -126,7 +126,7 @@ protected GetOperationDetailResponse getOperation(boolean validateOperationState * @throws AuthStepException Thrown when operation could not be retrieved or it is not available. */ protected GetOperationDetailResponse getOperation(String operationId) throws AuthStepException { - return getOperation(operationId, false); + return getOperation(operationId, true); } /** @@ -312,7 +312,7 @@ protected UpdateOperationResponse authorize(String operationId, String userId, S */ protected UpdateOperationResponse failAuthorization(String operationId, String userId, List authInstruments, List params) throws NextStepServiceException, AuthStepException { // validate operation before requesting update - GetOperationDetailResponse operation = getOperation(operationId); + GetOperationDetailResponse operation = getOperation(operationId, false); AuthMethod authMethod = getAuthMethodName(operation); logger.info("Fail step started, operation ID: {}, user ID: {}, authentication method: {}", operationId, userId, authMethod.toString()); ApplicationContext applicationContext = operation.getApplicationContext(); @@ -345,7 +345,7 @@ protected UpdateOperationResponse failAuthorization(String operationId, String u */ protected UpdateOperationResponse cancelAuthorization(String operationId, String userId, OperationCancelReason cancelReason, List params) throws NextStepServiceException, AuthStepException { // validate operation before requesting update - GetOperationDetailResponse operation = getOperation(operationId); + GetOperationDetailResponse operation = getOperation(operationId, false); AuthMethod authMethod = getAuthMethodName(operation); logger.info("Step cancel started, operation ID: {}, authentication method: {}", operationId, authMethod.toString()); ApplicationContext applicationContext = operation.getApplicationContext(); From 1eccfc92aa97f055decfad896d2a0c906cfb769a Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Fri, 15 Nov 2019 14:19:21 +0100 Subject: [PATCH 148/197] Fix typo in validateOperationState --- .../authentication/controller/AuthMethodController.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/controller/AuthMethodController.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/controller/AuthMethodController.java index 101b65615..b8e0cf2d7 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/controller/AuthMethodController.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/controller/AuthMethodController.java @@ -132,15 +132,15 @@ protected GetOperationDetailResponse getOperation(String operationId) throws Aut /** * Get operation detail with given operation ID. * @param operationId Operation ID. - * @param validateOperationSate Whether operation state should be validated. + * @param validateOperationState Whether operation state should be validated. * @return Operation detail. * @throws AuthStepException Thrown when operation could not be retrieved or it is not available. */ - protected GetOperationDetailResponse getOperation(String operationId, boolean validateOperationSate) throws AuthStepException { + protected GetOperationDetailResponse getOperation(String operationId, boolean validateOperationState) throws AuthStepException { try { final ObjectResponse operationDetail = nextStepClient.getOperationDetail(operationId); final GetOperationDetailResponse operation = operationDetail.getResponseObject(); - if (validateOperationSate) { + if (validateOperationState) { validateOperationState(operation); } filterStepsBasedOnActiveAuthMethods(operation.getSteps(), operation.getUserId(), operationId); From b2cd4c1205038c5552a44f431145f6ad7e977672 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Fri, 15 Nov 2019 14:20:09 +0100 Subject: [PATCH 149/197] Update comments --- .../webflow/authentication/controller/AuthMethodController.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/controller/AuthMethodController.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/controller/AuthMethodController.java index b8e0cf2d7..6e688ed9c 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/controller/AuthMethodController.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/controller/AuthMethodController.java @@ -311,7 +311,6 @@ protected UpdateOperationResponse authorize(String operationId, String userId, S * @throws AuthStepException In case authorization fails. */ protected UpdateOperationResponse failAuthorization(String operationId, String userId, List authInstruments, List params) throws NextStepServiceException, AuthStepException { - // validate operation before requesting update GetOperationDetailResponse operation = getOperation(operationId, false); AuthMethod authMethod = getAuthMethodName(operation); logger.info("Fail step started, operation ID: {}, user ID: {}, authentication method: {}", operationId, userId, authMethod.toString()); @@ -344,7 +343,6 @@ protected UpdateOperationResponse failAuthorization(String operationId, String u * @throws AuthStepException In case authorization fails. */ protected UpdateOperationResponse cancelAuthorization(String operationId, String userId, OperationCancelReason cancelReason, List params) throws NextStepServiceException, AuthStepException { - // validate operation before requesting update GetOperationDetailResponse operation = getOperation(operationId, false); AuthMethod authMethod = getAuthMethodName(operation); logger.info("Step cancel started, operation ID: {}, authentication method: {}", operationId, authMethod.toString()); From 20891c6854a7b212923075471e247bd4b95d3964 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Fri, 15 Nov 2019 14:23:22 +0100 Subject: [PATCH 150/197] Update JavaDoc --- .../webflow/authentication/controller/AuthMethodController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/controller/AuthMethodController.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/controller/AuthMethodController.java index 6e688ed9c..359cd5ad6 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/controller/AuthMethodController.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/controller/AuthMethodController.java @@ -120,7 +120,7 @@ protected GetOperationDetailResponse getOperation(boolean validateOperationState } /** - * Get operation detail. + * Get operation detail with given operation ID. * @param operationId Operation ID. * @return Operation detail. * @throws AuthStepException Thrown when operation could not be retrieved or it is not available. From d0fbe5183aea9009a1c074045465793f22ce8acd Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Sat, 16 Nov 2019 11:31:58 +0100 Subject: [PATCH 151/197] Update username validation regexp --- .../method/loginsca/controller/LoginScaController.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/controller/LoginScaController.java b/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/controller/LoginScaController.java index 2fa67f025..ea68e1f06 100644 --- a/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/controller/LoginScaController.java +++ b/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/controller/LoginScaController.java @@ -70,6 +70,8 @@ public class LoginScaController extends AuthMethodController Date: Mon, 18 Nov 2019 11:38:23 +0100 Subject: [PATCH 152/197] Validate username format early --- .../loginsca/controller/LoginScaController.java | 13 +++++++++---- powerauth-webflow/package-lock.json | 3 +-- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/controller/LoginScaController.java b/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/controller/LoginScaController.java index ea68e1f06..425303f26 100644 --- a/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/controller/LoginScaController.java +++ b/powerauth-webflow-authentication-login-sca/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/method/loginsca/controller/LoginScaController.java @@ -122,6 +122,15 @@ public LoginScaAuthResponse authenticateScaLogin(@RequestBody LoginScaAuthReques // First time invocation, user ID is not available yet userIdAlreadyAvailable = false; String username = request.getUsername(); + // Verify username format + if (username == null || !username.matches(USERNAME_VALIDATION_REGEXP)) { + logger.warn("Invalid username: {}", username); + // Send error in case username format is not acceptable + LoginScaAuthResponse response = new LoginScaAuthResponse(); + response.setResult(AuthStepResult.AUTH_FAILED); + response.setMessage("login.userNotFound"); + return response; + } ObjectResponse objectResponse = dataAdapterClient.lookupUser(username, organizationId, operationContext); updateUsernameInHttpSession(username); UserDetailResponse userDetailResponse = objectResponse.getResponseObject(); @@ -236,10 +245,6 @@ protected AuthMethod getAuthMethodName() { */ private void updateUsernameInHttpSession(String username) { synchronized (httpSession.getServletContext()) { - if (username == null || !username.matches(USERNAME_VALIDATION_REGEXP)) { - logger.warn("Invalid username: {}", username); - return; - } httpSession.setAttribute(HttpSessionAttributeNames.USERNAME, username); } } diff --git a/powerauth-webflow/package-lock.json b/powerauth-webflow/package-lock.json index fb8703adf..c3d40c087 100644 --- a/powerauth-webflow/package-lock.json +++ b/powerauth-webflow/package-lock.json @@ -6036,7 +6036,6 @@ "debug": "^3.1.0", "get-uri": "^2.0.0", "http-proxy-agent": "^2.1.0", - "https-proxy-agent-snyk-fork": "git://github.com/snyk/node-https-proxy-agent.git#5e86ccb682d0c833c8daa25ee6f91c670161cd66", "pac-resolver": "^3.0.0", "raw-body": "^2.2.0", "socks-proxy-agent": "^4.0.1" @@ -6044,7 +6043,7 @@ "dependencies": { "https-proxy-agent-snyk-fork": { "version": "git://github.com/snyk/node-https-proxy-agent.git#5e86ccb682d0c833c8daa25ee6f91c670161cd66", - "from": "git://github.com/snyk/node-https-proxy-agent.git#fix/https-agent-vuln", + "from": "git://github.com/snyk/node-https-proxy-agent.git#5e86ccb682d0c833c8daa25ee6f91c670161cd66", "requires": { "agent-base": "^4.3.0", "debug": "^3.1.0" From 9c4e33ca561c79e7e469bf6d7426e9b041753b28 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Mon, 18 Nov 2019 11:54:17 +0100 Subject: [PATCH 153/197] Update package-lock.json --- powerauth-webflow/package-lock.json | 3511 +++++++++++++++------------ 1 file changed, 1990 insertions(+), 1521 deletions(-) diff --git a/powerauth-webflow/package-lock.json b/powerauth-webflow/package-lock.json index c3d40c087..8f13a3b59 100644 --- a/powerauth-webflow/package-lock.json +++ b/powerauth-webflow/package-lock.json @@ -20,17 +20,17 @@ } }, "@snyk/cli-interface": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@snyk/cli-interface/-/cli-interface-2.1.0.tgz", - "integrity": "sha512-b/magC8iNQP9QhSDeV9RQDSaY3sNy57k0UH1Y/sMOSvVLHLsA7dOi/HrPWTiLouyGqcuYzwjkz7bNbu8cwmVDQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@snyk/cli-interface/-/cli-interface-2.3.0.tgz", + "integrity": "sha512-ecbylK5Ol2ySb/WbfPj0s0GuLQR+KWKFzUgVaoNHaSoN6371qRWwf2uVr+hPUP4gXqCai21Ug/RDArfOhlPwrQ==", "requires": { "tslib": "^1.9.3" } }, "@snyk/cocoapods-lockfile-parser": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@snyk/cocoapods-lockfile-parser/-/cocoapods-lockfile-parser-2.0.4.tgz", - "integrity": "sha512-d57bajPjqCiNXMuyMmt9Zt98zbjABZUFw+91B705flzV6oB7OThgtA40Eoin6iatYoStIx28bC3T6b0mScy/iA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@snyk/cocoapods-lockfile-parser/-/cocoapods-lockfile-parser-3.0.0.tgz", + "integrity": "sha512-AebCc+v9vtOL9tFkU4/tommgVsXxqdx6t45kCkBW+FC4PaYvfYEg9Eg/9GqlY9+nFrLFo/uTr+E/aR0AF/KqYA==", "requires": { "@snyk/dep-graph": "^1.11.0", "@snyk/ruby-semver": "^2.0.4", @@ -42,9 +42,9 @@ }, "dependencies": { "core-js": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.3.2.tgz", - "integrity": "sha512-S1FfZpeBchkhyoY76YAdFzKS4zz9aOK7EeFaNA2aJlyXyA+sgqz6xdxmLPGXEAf0nF44MVN1kSjrA9Kt3ATDQg==" + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.4.1.tgz", + "integrity": "sha512-KX/dnuY/J8FtEwbnrzmAjUYgLqtk+cxM86hfG60LGiW3MmltIc2yAmDgBgEkfm0blZhUrdr1Zd84J2Y14mLxzg==" }, "source-map": { "version": "0.6.1", @@ -52,9 +52,9 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, "source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", + "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -63,17 +63,17 @@ } }, "@snyk/composer-lockfile-parser": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@snyk/composer-lockfile-parser/-/composer-lockfile-parser-1.0.3.tgz", - "integrity": "sha512-hb+6E7kMzWlcwfe//ILDoktBPKL2a3+RnJT/CXnzRXaiLQpsdkf5li4q2v0fmvd+4v7L3tTN8KM+//lJyviEkg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@snyk/composer-lockfile-parser/-/composer-lockfile-parser-1.2.0.tgz", + "integrity": "sha512-kZT+HTqgNcQMeoE5NM9M3jj463M8zI7ZxqZXLw9WoyVs5JTt9g0qFWxIG1cNwZdGVI+y7tzZbNWw9BlMD1vCCQ==", "requires": { "lodash": "^4.17.13" } }, "@snyk/dep-graph": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/@snyk/dep-graph/-/dep-graph-1.12.0.tgz", - "integrity": "sha512-n7+PlHn3SqznHgsCpeBRfEvU1oiQydoGkXQlnSB2+tfImiKXvY7YZbrg4wlbvYgylYiTbpCi5CpPNkJG14S+UQ==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/@snyk/dep-graph/-/dep-graph-1.13.1.tgz", + "integrity": "sha512-Ww2xvm5UQgrq9eV0SdTBCh+w/4oI2rCx5vn1IOSeypaR0CO4p+do1vm3IDZ2ugg4jLSfHP8+LiD6ORESZMkQ2w==", "requires": { "graphlib": "^2.1.5", "lodash": "^4.7.14", @@ -94,9 +94,9 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, "source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", + "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -118,13 +118,13 @@ } }, "@snyk/snyk-cocoapods-plugin": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@snyk/snyk-cocoapods-plugin/-/snyk-cocoapods-plugin-1.0.3.tgz", - "integrity": "sha512-AHAA7z23nPi1eHODsDxeSkl73Ze3yphuqJjMl39ie323EzBDcb9g6uAACrk0Qn2K/K2D8uyxMAf2zDtc+JGQfw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@snyk/snyk-cocoapods-plugin/-/snyk-cocoapods-plugin-2.0.1.tgz", + "integrity": "sha512-XVkvaMvMzQ3miJi/YZmsRJSAUfDloYhfg6pXPgzAeAugB4p+cNi01Z68pT62ypB8U/Ugh1Xx2pb9aoOFqBbSjA==", "requires": { "@snyk/cli-interface": "1.5.0", - "@snyk/cocoapods-lockfile-parser": "2.0.4", - "@snyk/dep-graph": "1.13.0", + "@snyk/cocoapods-lockfile-parser": "3.0.0", + "@snyk/dep-graph": "^1.13.1", "source-map-support": "^0.5.7", "tslib": "^1.9.3" }, @@ -137,33 +137,15 @@ "tslib": "^1.9.3" } }, - "@snyk/dep-graph": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@snyk/dep-graph/-/dep-graph-1.13.0.tgz", - "integrity": "sha512-e0XcLH6Kgs/lunf6iDjbxEnm9+JYFEJn6eo/PlEUW+SMWBZ2uEXHBTDNp9oxjJou48PngzWMveEkniBAN+ulOQ==", - "requires": { - "graphlib": "^2.1.5", - "lodash": "^4.7.14", - "object-hash": "^1.3.1", - "semver": "^6.0.0", - "source-map-support": "^0.5.11", - "tslib": "^1.9.3" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, "source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", + "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -204,9 +186,9 @@ "integrity": "sha512-SGGAhXLHDx+PK4YLNcNGa6goPf9XRWQNAUUbffkwVGGXIxmDKWyGGL4inzq2sPmExu431Ekb9aEMn9BkPqEYFA==" }, "@types/node": { - "version": "12.11.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.11.1.tgz", - "integrity": "sha512-TJtwsqZ39pqcljJpajeoofYRfeZ7/I/OMUQ5pR4q5wOKf2ocrUvBAZUMhWsOvKx3dVc/aaV5GluBivt0sWqA5A==" + "version": "12.12.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.8.tgz", + "integrity": "sha512-XLla8N+iyfjvsa0KKV+BP/iGSoTmwxsu5Ci5sM33z9TjohF72DEz95iNvD6pPmemvbQgxAv/909G73gUn8QR7w==" }, "@types/restify": { "version": "4.3.6", @@ -231,6 +213,174 @@ "@types/node": "*" } }, + "@webassemblyjs/ast": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", + "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==", + "requires": { + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz", + "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==" + }, + "@webassemblyjs/helper-api-error": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz", + "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==" + }, + "@webassemblyjs/helper-buffer": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz", + "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==" + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz", + "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==", + "requires": { + "@webassemblyjs/wast-printer": "1.8.5" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz", + "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==" + }, + "@webassemblyjs/helper-module-context": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz", + "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==", + "requires": { + "@webassemblyjs/ast": "1.8.5", + "mamacro": "^0.0.3" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz", + "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==" + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz", + "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==", + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz", + "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==", + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz", + "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==", + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz", + "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==" + }, + "@webassemblyjs/wasm-edit": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz", + "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==", + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/helper-wasm-section": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-opt": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "@webassemblyjs/wast-printer": "1.8.5" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz", + "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==", + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz", + "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==", + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz", + "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==", + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz", + "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==", + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/floating-point-hex-parser": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-code-frame": "1.8.5", + "@webassemblyjs/helper-fsm": "1.8.5", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz", + "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==", + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + }, "@yarnpkg/lockfile": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", @@ -242,53 +392,38 @@ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" }, "acorn": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", - "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==" + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.3.0.tgz", + "integrity": "sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA==" }, - "acorn-dynamic-import": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz", - "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=", + "agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", "requires": { - "acorn": "^4.0.3" - }, - "dependencies": { - "acorn": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=" - } + "es6-promisify": "^5.0.0" } }, "ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", - "requires": { - "co": "^4.6.0", - "json-stable-stringify": "^1.0.1" - } - }, - "ajv-keywords": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", - "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=" - }, - "align-text": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", "requires": { - "kind-of": "^3.0.2", - "longest": "^1.0.1", - "repeat-string": "^1.5.2" + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, - "amdefine": { + "ajv-errors": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==" + }, + "ajv-keywords": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", + "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==" }, "ansi-align": { "version": "2.0.0", @@ -296,35 +431,6 @@ "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", "requires": { "string-width": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "^3.0.0" - } - } } }, "ansi-escapes": { @@ -367,6 +473,11 @@ } } }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, "archy": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", @@ -421,10 +532,11 @@ } }, "assert": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", - "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", "requires": { + "object-assign": "^4.1.1", "util": "0.10.3" }, "dependencies": { @@ -448,18 +560,20 @@ "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" }, + "ast-types": { + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.2.tgz", + "integrity": "sha512-uWMHxJxtfj/1oZClOxDEV1sQ1HCDkA4MG8Gr69KKeBjEVH0R84WlejZ0y2DcwyBlpAEMltmVYkVgqfLFb2oyiA==" + }, "async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", - "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", - "requires": { - "lodash": "^4.17.11" - } + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" }, "async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==" }, "atob": { "version": "2.1.2", @@ -467,19 +581,12 @@ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" }, "axios": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.1.tgz", - "integrity": "sha512-0BfJq4NSfQXd+SkFdrvFbG7addhYSBA2mQwISr46pD6E5iqkWg02RAs8vyTT/j0RTnoYmeXauBuSv1qKwR179g==", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.0.tgz", + "integrity": "sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ==", "requires": { "follow-redirects": "1.5.10", "is-buffer": "^2.0.2" - }, - "dependencies": { - "is-buffer": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz", - "integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw==" - } } }, "babel-code-frame": { @@ -1440,19 +1547,19 @@ } }, "base64-js": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", - "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==" + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" }, "big.js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==" + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" }, "binary-extensions": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.0.tgz", - "integrity": "sha512-EgmjVLMn22z7eGGv3kcnHwSnJXmFHjISTY9E/S5lIcTD3Oxw05QTcBLNkJFzcb3cNueUdF/IN4U+d78V0zO8Hw==" + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==" }, "bl": { "version": "3.0.0", @@ -1474,15 +1581,10 @@ } } }, - "blacklist": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/blacklist/-/blacklist-1.1.4.tgz", - "integrity": "sha1-st0J1hd2JbLKppg1o3somV+povI=" - }, "bluebird": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz", - "integrity": "sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==" + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.1.tgz", + "integrity": "sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg==" }, "bn.js": { "version": "4.11.8", @@ -1503,11 +1605,6 @@ "widest-line": "^2.0.0" }, "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -1530,41 +1627,6 @@ "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -1685,13 +1747,20 @@ } }, "buffer": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", - "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", "requires": { "base64-js": "^1.0.2", "ieee754": "^1.1.4", "isarray": "^1.0.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + } } }, "buffer-from": { @@ -1709,6 +1778,40 @@ "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + }, + "cacache": { + "version": "12.0.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz", + "integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==", + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + }, + "dependencies": { + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + } + } + }, "cache-base": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", @@ -1726,9 +1829,9 @@ } }, "camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" }, "caniuse-lite": { "version": "1.0.30000941", @@ -1741,15 +1844,6 @@ "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz", "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==" }, - "center-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", - "requires": { - "align-text": "^0.1.3", - "lazy-cache": "^1.0.3" - } - }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", @@ -1777,9 +1871,9 @@ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" }, "chokidar": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.2.tgz", - "integrity": "sha512-IwXUx0FXc5ibYmPC2XeEj5mpXoV66sR+t3jqu2NS2GYwCktt3KF1/Qqjws/NkegajBA4RbZ5+DDwlOiJsxDHEg==", + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", "requires": { "anymatch": "^2.0.0", "async-each": "^1.0.1", @@ -1792,7 +1886,20 @@ "normalize-path": "^3.0.0", "path-is-absolute": "^1.0.0", "readdirp": "^2.2.1", - "upath": "^1.1.0" + "upath": "^1.1.1" + } + }, + "chownr": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.3.tgz", + "integrity": "sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw==" + }, + "chrome-trace-event": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "requires": { + "tslib": "^1.9.0" } }, "ci-info": { @@ -1848,19 +1955,53 @@ "restore-cursor": "^2.0.0" } }, + "cli-spinner": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/cli-spinner/-/cli-spinner-0.2.10.tgz", + "integrity": "sha512-U0sSQ+JJvSLi1pAYuJykwiA8Dsr15uHEy85iCJ6A+0DjVxivr3d+N2Wjvodeg89uP5K6TswFkKBfAD7B3YSn/Q==" + }, "cli-width": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" }, "cliui": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", "requires": { - "center-align": "^0.1.1", - "right-align": "^0.1.1", - "wordwrap": "0.0.2" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + } + } } }, "clone-deep": { @@ -1906,22 +2047,37 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, "commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" }, "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, "configstore": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", @@ -1936,12 +2092,9 @@ } }, "console-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "requires": { - "date-now": "^0.1.4" - } + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" }, "constants-browserify": { "version": "1.0.0", @@ -1957,6 +2110,19 @@ "safe-buffer": "~5.1.1" } }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, "copy-descriptor": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", @@ -2059,17 +2225,22 @@ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=" }, - "date-now": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=" + "cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=" + }, + "data-uri-to-buffer": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-1.2.0.tgz", + "integrity": "sha512-vKQ9DTQPN1FLYiiEEOQ6IBGFqvjCa5rSK3cWMy/Nespm5d/x3dGFT9UBZnkLxCwua/IXBi2TYnwTEpsOvhC4UQ==" }, "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "requires": { - "ms": "^2.1.1" + "ms": "2.0.0" } }, "decamelize": { @@ -2087,6 +2258,11 @@ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" + }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -2137,19 +2313,41 @@ } } }, + "degenerator": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-1.0.4.tgz", + "integrity": "sha1-/PSQo37OJmRk2cxDGrmMWBnO0JU=", + "requires": { + "ast-types": "0.x.x", + "escodegen": "1.x.x", + "esprima": "3.x.x" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" + } + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, "des.js": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", - "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", "requires": { "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0" } }, - "detect-indent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", - "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=" + "detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=" }, "diff": { "version": "4.0.1", @@ -2244,9 +2442,9 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, "source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", + "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -2268,6 +2466,17 @@ "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, "electron-to-chromium": { "version": "1.3.113", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.113.tgz", @@ -2275,9 +2484,9 @@ "dev": true }, "elliptic": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", - "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.1.tgz", + "integrity": "sha512-xvJINNLbTeWQjrl6X+7eQCrIy/YPv5XCpKW6kB5mKvtnGILoLDcySuwomfdzt0BMdLNVnuRNTuzKNHj0bva1Cg==", "requires": { "bn.js": "^4.4.0", "brorand": "^1.0.1", @@ -2320,14 +2529,24 @@ } }, "enhanced-resolve": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz", - "integrity": "sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24=", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz", + "integrity": "sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA==", "requires": { "graceful-fs": "^4.1.2", - "memory-fs": "^0.4.0", - "object-assign": "^4.0.1", - "tapable": "^0.2.7" + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + } } }, "entities": { @@ -2343,14 +2562,6 @@ "prr": "~1.0.1" } }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "requires": { - "is-arrayish": "^0.2.1" - } - }, "es-abstract": { "version": "1.16.0", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.16.0.tgz", @@ -2369,30 +2580,89 @@ } }, "es-to-primitive": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", - "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "requires": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", "is-symbol": "^1.0.2" } }, + "es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" + }, + "es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "requires": { + "es6-promise": "^4.0.3" + } + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, + "escodegen": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.12.0.tgz", + "integrity": "sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg==", + "requires": { + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true + } + } + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + }, "esutils": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", - "dev": true + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" }, "events": { "version": "3.0.0", @@ -2467,14 +2737,22 @@ "requires": { "is-extendable": "^0.1.0" } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" } } }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, "extend-shallow": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", @@ -2568,10 +2846,25 @@ } } }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + }, "faye-websocket": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", - "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", "requires": { "websocket-driver": ">=0.5.1" } @@ -2590,6 +2883,11 @@ "ua-parser-js": "^0.7.18" } }, + "figgy-pudding": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", + "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==" + }, "figures": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", @@ -2598,6 +2896,11 @@ "escape-string-regexp": "^1.0.5" } }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" + }, "fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", @@ -2631,12 +2934,63 @@ } }, "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" + "locate-path": "^3.0.0" + }, + "dependencies": { + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", + "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + } + } + }, + "findup-sync": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", + "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + } + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" } }, "follow-redirects": { @@ -2645,21 +2999,6 @@ "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", "requires": { "debug": "=3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } } }, "for-in": { @@ -2683,24 +3022,44 @@ "map-cache": "^0.2.2" } }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, "fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "fsevents": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.7.tgz", - "integrity": "sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw==", + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", + "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", "optional": true, "requires": { - "nan": "^2.9.2", - "node-pre-gyp": "^0.10.0" + "nan": "^2.12.1", + "node-pre-gyp": "^0.12.0" }, "dependencies": { "abbrev": { @@ -2761,11 +3120,11 @@ "optional": true }, "debug": { - "version": "2.6.9", + "version": "4.1.1", "bundled": true, "optional": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, "deep-extend": { @@ -2910,22 +3269,22 @@ } }, "ms": { - "version": "2.0.0", + "version": "2.1.1", "bundled": true, "optional": true }, "needle": { - "version": "2.2.4", + "version": "2.3.0", "bundled": true, "optional": true, "requires": { - "debug": "^2.1.2", + "debug": "^4.1.0", "iconv-lite": "^0.4.4", "sax": "^1.2.4" } }, "node-pre-gyp": { - "version": "0.10.3", + "version": "0.12.0", "bundled": true, "optional": true, "requires": { @@ -2951,12 +3310,12 @@ } }, "npm-bundled": { - "version": "1.0.5", + "version": "1.0.6", "bundled": true, "optional": true }, "npm-packlist": { - "version": "1.2.0", + "version": "1.4.1", "bundled": true, "optional": true, "requires": { @@ -3075,7 +3434,7 @@ "optional": true }, "semver": { - "version": "5.6.0", + "version": "5.7.0", "bundled": true, "optional": true }, @@ -3155,15 +3514,42 @@ } } }, + "ftp": { + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz", + "integrity": "sha1-kZfYYa2BQvPmPVqDv+TFn3MwiF0=", + "requires": { + "readable-stream": "1.1.x", + "xregexp": "2.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } + } + }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" }, "get-stream": { "version": "4.1.0", @@ -3173,6 +3559,29 @@ "pump": "^3.0.0" } }, + "get-uri": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-2.0.4.tgz", + "integrity": "sha512-v7LT/s8kVjs+Tx0ykk1I+H/rbpzkHvuIq87LmeXptcf5sNWm9uQiwjNAt94SJPA1zOlCntmnOlJvVWKmzsxG8Q==", + "requires": { + "data-uri-to-buffer": "1", + "debug": "2", + "extend": "~3.0.2", + "file-uri-to-path": "1", + "ftp": "~0.3.10", + "readable-stream": "2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + } + } + }, "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", @@ -3196,9 +3605,9 @@ } }, "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -3235,6 +3644,43 @@ "ini": "^1.3.4" } }, + "global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "requires": { + "global-prefix": "^3.0.0" + }, + "dependencies": { + "global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "requires": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + } + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + }, "globals": { "version": "9.18.0", "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", @@ -3267,9 +3713,9 @@ } }, "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==" }, "graphlib": { "version": "2.1.7", @@ -3279,22 +3725,6 @@ "lodash": "^4.17.5" } }, - "hard-source-webpack-plugin": { - "version": "0.5.18", - "resolved": "https://registry.npmjs.org/hard-source-webpack-plugin/-/hard-source-webpack-plugin-0.5.18.tgz", - "integrity": "sha512-qo1kuq0J4aII77JnkS36/mkhM+Mk7MNURKKmVVgY+m+2Pm3iu/hOUVkJS4sqRAKLcRRtDMdr+SrlPgJZCmdcPQ==", - "requires": { - "lodash": "^4.15.0", - "mkdirp": "^0.5.1", - "node-object-hash": "^1.2.0", - "rimraf": "^2.6.2", - "source-list-map": "^0.1.6", - "source-map": "^0.5.6", - "webpack-core": "~0.6.0", - "webpack-sources": "^1.0.1", - "write-json-file": "^2.3.0" - } - }, "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -3313,14 +3743,14 @@ } }, "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, "has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" }, "has-value": { "version": "1.0.0", @@ -3341,6 +3771,11 @@ "kind-of": "^4.0.0" }, "dependencies": { + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, "kind-of": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", @@ -3394,10 +3829,18 @@ "os-tmpdir": "^1.0.1" } }, + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "requires": { + "parse-passwd": "^1.0.0" + } + }, "hosted-git-info": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", - "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==" + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", + "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==" }, "htmlparser2": { "version": "3.10.1", @@ -3424,16 +3867,53 @@ } } }, + "http-errors": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", + "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + } + } + }, "http-parser-js": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.0.tgz", - "integrity": "sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w==" + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz", + "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=" + }, + "http-proxy-agent": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", + "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", + "requires": { + "agent-base": "4", + "debug": "3.1.0" + } }, "https-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" }, + "https-proxy-agent": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-3.0.1.tgz", + "integrity": "sha512-+ML2Rbh6DAuee7d07tYGEKOEi2voWPUGan+ExdPbPW6Z3svq+JCqr0v8WmKPOkz1vOVykPCBSuobe7G8GJUtVg==", + "requires": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + } + }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -3443,9 +3923,14 @@ } }, "ieee754": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", - "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==" + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=" }, "immediate": { "version": "3.0.6", @@ -3457,15 +3942,34 @@ "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=" }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + }, + "dependencies": { + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "requires": { + "find-up": "^3.0.0" + } + } + } + }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" }, "inflight": { "version": "1.0.6", @@ -3507,9 +4011,9 @@ }, "dependencies": { "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" }, "ansi-styles": { "version": "3.2.1", @@ -3529,56 +4033,12 @@ "supports-color": "^5.3.0" } }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, "strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "requires": { "ansi-regex": "^4.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" - } - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" } } } @@ -3632,6 +4092,11 @@ "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" + }, "is-accessor-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", @@ -3640,11 +4105,6 @@ "kind-of": "^3.0.2" } }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" - }, "is-binary-path": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", @@ -3654,9 +4114,9 @@ } }, "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", + "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==" }, "is-callable": { "version": "1.1.4", @@ -3721,17 +4181,14 @@ } }, "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "requires": { - "number-is-nan": "^1.0.0" - } + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" }, "is-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", "requires": { "is-extglob": "^2.1.1" } @@ -3771,11 +4228,6 @@ "path-is-inside": "^1.0.1" } }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" - }, "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", @@ -3834,11 +4286,6 @@ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "optional": true }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" - }, "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -3850,9 +4297,9 @@ "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" }, "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" }, "isexe": { "version": "2.0.0", @@ -3893,33 +4340,26 @@ "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", "dev": true }, - "json-loader": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", - "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==" + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" }, - "json-stable-stringify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "requires": { - "jsonify": "~0.0.0" - } + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "json3": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", - "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=" + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", + "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==" }, "json5": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=" - }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true }, "jszip": { "version": "3.2.2", @@ -3943,6 +4383,13 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { "is-buffer": "^1.1.5" + }, + "dependencies": { + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + } } }, "latest-version": { @@ -3954,9 +4401,9 @@ } }, "lazy-cache": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", + "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=" }, "lcid": { "version": "1.0.0", @@ -3966,6 +4413,15 @@ "invert-kv": "^1.0.0" } }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, "lie": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", @@ -3974,39 +4430,34 @@ "immediate": "~3.0.5" } }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" - } - } - }, "loader-runner": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==" }, "loader-utils": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", - "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", "requires": { - "big.js": "^3.1.3", + "big.js": "^5.2.2", "emojis-list": "^2.0.0", - "json5": "^0.5.0", - "object-assign": "^4.0.1" + "json5": "^1.0.1" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + } } }, "locate-path": { @@ -4092,11 +4543,6 @@ "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=" }, - "longest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" - }, "loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -4111,12 +4557,11 @@ "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" }, "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "yallist": "^3.0.2" } }, "macos-release": { @@ -4132,6 +4577,19 @@ "pify": "^3.0.0" } }, + "mamacro": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", + "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==" + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "requires": { + "p-defer": "^1.0.0" + } + }, "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", @@ -4155,6 +4613,23 @@ "safe-buffer": "^5.1.2" } }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + }, + "dependencies": { + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + } + } + }, "memory-fs": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", @@ -4228,6 +4703,23 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, "mixin-deep": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", @@ -4271,10 +4763,23 @@ "minimist": "0.0.8" } }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "mute-stream": { "version": "0.0.7", @@ -4321,47 +4826,6 @@ "ini": "^1.3.0", "secure-keys": "^1.0.0", "yargs": "^3.19.0" - }, - "dependencies": { - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" - }, - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" - }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } - }, - "window-size": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", - "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=" - }, - "yargs": { - "version": "3.32.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", - "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", - "requires": { - "camelcase": "^2.0.1", - "cliui": "^3.0.3", - "decamelize": "^1.1.1", - "os-locale": "^1.4.0", - "string-width": "^1.0.1", - "window-size": "^0.1.4", - "y18n": "^3.2.0" - } - } } }, "needle": { @@ -4372,12 +4836,32 @@ "debug": "^3.2.6", "iconv-lite": "^0.4.4", "sax": "^1.2.4" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } } }, "neo-async": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz", - "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==" + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==" + }, + "netmask": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-1.0.6.tgz", + "integrity": "sha1-ICl+idhvb2QA8lDZ9Pa0wZRfzTU=" }, "nice-try": { "version": "1.0.5", @@ -4394,9 +4878,9 @@ } }, "node-libs-browser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.0.tgz", - "integrity": "sha512-5MQunG/oyOaBdttrL40dA7bUfPORLRWMUJLQtMg7nluxUvk5XwnLdL9twQHFAjRx/y7mIMkLKT9++qPbbk6BZA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", "requires": { "assert": "^1.1.1", "browserify-zlib": "^0.2.0", @@ -4408,7 +4892,7 @@ "events": "^3.0.0", "https-browserify": "^1.0.0", "os-browserify": "^0.3.0", - "path-browserify": "0.0.0", + "path-browserify": "0.0.1", "process": "^0.11.10", "punycode": "^1.2.4", "querystring-es3": "^0.2.0", @@ -4420,23 +4904,14 @@ "tty-browserify": "0.0.0", "url": "^0.11.0", "util": "^0.11.0", - "vm-browserify": "0.0.4" - } - }, - "node-object-hash": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/node-object-hash/-/node-object-hash-1.4.2.tgz", - "integrity": "sha512-UdS4swXs85fCGWWf6t6DMGgpN/vnlKeSGEQ7hJcrs7PBFoxoKLmibc3QRb7fwiYsjdL7PX8iI/TMSlZ90dgHhQ==" - }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" + "vm-browserify": "^1.0.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + } } }, "normalize-path": { @@ -4493,9 +4968,9 @@ "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==" }, "object-inspect": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz", - "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==" + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==" }, "object-keys": { "version": "1.1.1", @@ -4551,6 +5026,19 @@ "is-wsl": "^1.1.0" } }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, "original": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", @@ -4592,11 +5080,21 @@ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" + }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" }, + "p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==" + }, "p-limit": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", @@ -4621,6 +5119,48 @@ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true }, + "pac-proxy-agent": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-3.0.1.tgz", + "integrity": "sha512-44DUg21G/liUZ48dJpUSjZnFfZro/0K5JTyFYLBcmh9+T6Ooi4/i4efwUiEy0+4oQusCBqWdhv16XohIj1GqnQ==", + "requires": { + "agent-base": "^4.2.0", + "debug": "^4.1.1", + "get-uri": "^2.0.0", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^3.0.0", + "pac-resolver": "^3.0.0", + "raw-body": "^2.2.0", + "socks-proxy-agent": "^4.0.1" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "pac-resolver": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-3.0.0.tgz", + "integrity": "sha512-tcc38bsjuE3XZ5+4vP96OfhOugrX+JcnpUbhfuc4LuXBLQhoTthOstZeoQJBDnQUDYzYmdImKsbz0xSl1/9qeA==", + "requires": { + "co": "^4.6.0", + "degenerator": "^1.0.4", + "ip": "^1.1.5", + "netmask": "^1.0.6", + "thunkify": "^2.1.2" + } + }, "package-json": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", @@ -4637,10 +5177,20 @@ "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz", "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==" }, + "parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "requires": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, "parse-asn1": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.4.tgz", - "integrity": "sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==", + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", + "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", "requires": { "asn1.js": "^4.0.0", "browserify-aes": "^1.0.0", @@ -4650,13 +5200,10 @@ "safe-buffer": "^5.1.1" } }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "requires": { - "error-ex": "^1.2.0" - } + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=" }, "parse-path": { "version": "4.0.1", @@ -4684,9 +5231,9 @@ "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" }, "path-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", - "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=" + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==" }, "path-dirname": { "version": "1.0.2", @@ -4694,12 +5241,9 @@ "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" }, "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "requires": { - "pinkie-promise": "^2.0.0" - } + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" }, "path-is-absolute": { "version": "1.0.1", @@ -4716,28 +5260,6 @@ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" - } - } - }, "pbkdf2": { "version": "3.0.17", "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", @@ -4755,19 +5277,6 @@ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "requires": { - "pinkie": "^2.0.0" - } - }, "pkg-dir": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", @@ -4851,6 +5360,11 @@ } } }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" + }, "prepend-http": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", @@ -4868,9 +5382,9 @@ "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" }, "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, "promise": { "version": "7.3.1", @@ -4880,6 +5394,11 @@ "asap": "~2.0.3" } }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=" + }, "prop-types": { "version": "15.7.2", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", @@ -4895,6 +5414,41 @@ "resolved": "https://registry.npmjs.org/protocols/-/protocols-1.4.7.tgz", "integrity": "sha512-Fx65lf9/YDn3hUX08XUc0J8rSux36rEsyiv21ZGUC1mOyeM3lTRpZLcrm8aAolzS4itwVfm7TAPyxC2E5zd6xg==" }, + "proxy-agent": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-3.1.1.tgz", + "integrity": "sha512-WudaR0eTsDx33O3EJE16PjBRZWcX8GqCEeERw1W3hZJgH/F2a46g7jty6UGty6NeJ4CKQy8ds2CJPMiyeqaTvw==", + "requires": { + "agent-base": "^4.2.0", + "debug": "4", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^3.0.0", + "lru-cache": "^5.1.1", + "pac-proxy-agent": "^3.0.1", + "proxy-from-env": "^1.0.0", + "socks-proxy-agent": "^4.0.1" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "proxy-from-env": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", + "integrity": "sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4=" + }, "prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", @@ -4927,10 +5481,31 @@ "once": "^1.3.1" } }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, "querystring": { "version": "0.2.0", @@ -4943,9 +5518,9 @@ "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" }, "querystringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.0.tgz", - "integrity": "sha512-sluvZZ1YiTLD5jsqZcDmFyV2EwToyXZBfpoVOmktMmW+VEnhgakFHnasVph65fOjGPTWN0Nw3+XQaSeMayr0kg==" + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz", + "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==" }, "randombytes": { "version": "2.1.0", @@ -4964,6 +5539,17 @@ "safe-buffer": "^5.1.0" } }, + "raw-body": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.1.tgz", + "integrity": "sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA==", + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.3", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, "rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", @@ -5012,9 +5598,19 @@ } }, "react-device-detect": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/react-device-detect/-/react-device-detect-1.6.2.tgz", - "integrity": "sha512-XIBgwIfpGAknm7tXe/YNbx4ieIR7IyFI3KNfSQk4UjHVy97UHe/nB7iJj8R/dDsI+I/ZzPR4HJ39Gh5tI4nhxw==" + "version": "1.9.10", + "resolved": "https://registry.npmjs.org/react-device-detect/-/react-device-detect-1.9.10.tgz", + "integrity": "sha512-Rb618NuNwJojJeIgI5UoONwztbd4wMT4TBofzvYOHnPNu61LYYz8b78cXQb7kXRrPn6iI5T1gFtNQh0GxHEPxw==", + "requires": { + "ua-parser-js": "^0.7.20" + }, + "dependencies": { + "ua-parser-js": { + "version": "0.7.20", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.20.tgz", + "integrity": "sha512-8OaIKfzL5cpx8eCMAhhvTlft8GYF8b2eQr6JkCyVdrgjcytyOmPCXrqXFcUnhonRpLlh5yxEZVohm6mzaowUOw==" + } + } }, "react-dom": { "version": "15.6.2", @@ -5028,11 +5624,10 @@ } }, "react-input-autosize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/react-input-autosize/-/react-input-autosize-1.2.0.tgz", - "integrity": "sha1-hyQQcRWfdCEjiXaR2meW7DO1fQU=", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/react-input-autosize/-/react-input-autosize-2.2.2.tgz", + "integrity": "sha512-jQJgYCA3S0j+cuOwzuCd1OjmBmnZLdqQdiLKRYrsMMzbjUrVDS5RvJUDwJqA7sKuksDuzFtm6hZGKFu7Mjk5aw==", "requires": { - "create-react-class": "^15.5.2", "prop-types": "^15.5.8" } }, @@ -5049,12 +5644,11 @@ } }, "react-intl-redux": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/react-intl-redux/-/react-intl-redux-0.5.0.tgz", - "integrity": "sha1-0ltJYNgpoaevhmeH2gT+KA/IpPw=", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/react-intl-redux/-/react-intl-redux-2.2.0.tgz", + "integrity": "sha512-coiNaVbc6Wy9S98oI3cohjsRRkBYu9O0Os0IRGcBVYfHek4u1i8VKXa3rVQM52UzOpCIchcmXMHvC8znLStuWg==", "requires": { - "prop-types": "^15.5.9", - "warning": "^3.0.0" + "prop-types": "^15.7.2" } }, "react-is": { @@ -5111,13 +5705,13 @@ } }, "react-select": { - "version": "1.0.0-beta14", - "resolved": "https://registry.npmjs.org/react-select/-/react-select-1.0.0-beta14.tgz", - "integrity": "sha1-8X7gnfk7mg7MQCPFf7lB7AEHkJs=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/react-select/-/react-select-1.0.1.tgz", + "integrity": "sha512-488j7KOR/48OSfrOuQsGpZldY2Tuv2BIcaJ3uPZ4EgQDZnwyxGl4hCGkhsu8mkEGu38oPEjqoNacG+j/nktfWQ==", "requires": { - "blacklist": "^1.1.2", "classnames": "^2.2.4", - "react-input-autosize": "^1.1.0" + "prop-types": "^15.5.8", + "react-input-autosize": "^2.1.0" } }, "react-tiny-spin": { @@ -5129,25 +5723,6 @@ "spin.js": "^2.0.1" } }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - } - }, "readable-stream": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", @@ -5160,6 +5735,13 @@ "safe-buffer": "~5.1.1", "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + } } }, "readdirp": { @@ -5305,23 +5887,49 @@ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" }, "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" }, "requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" }, - "resolve": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", - "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "requires": { + "resolve-from": "^3.0.0" + } + }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", "requires": { - "path-parse": "^1.0.6" + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + }, + "dependencies": { + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + } } }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" + }, "resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", @@ -5341,18 +5949,10 @@ "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" }, - "right-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", - "requires": { - "align-text": "^0.1.1" - } - }, "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "requires": { "glob": "^7.1.3" } @@ -5374,6 +5974,14 @@ "is-promise": "^2.1.0" } }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "requires": { + "aproba": "^1.1.1" + } + }, "rxjs": { "version": "6.5.3", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz", @@ -5455,6 +6063,16 @@ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, "secure-keys": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/secure-keys/-/secure-keys-1.0.0.tgz", @@ -5473,6 +6091,11 @@ "semver": "^5.0.3" } }, + "serialize-javascript": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.9.1.tgz", + "integrity": "sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A==" + }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", @@ -5484,9 +6107,9 @@ "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=" }, "set-value": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", "requires": { "extend-shallow": "^2.0.1", "is-extendable": "^0.1.1", @@ -5509,6 +6132,11 @@ "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, "sha.js": { "version": "2.4.11", "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", @@ -5529,6 +6157,11 @@ "mixin-object": "^2.0.1" }, "dependencies": { + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, "kind-of": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz", @@ -5536,11 +6169,6 @@ "requires": { "is-buffer": "^1.0.2" } - }, - "lazy-cache": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", - "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=" } } }, @@ -5568,6 +6196,11 @@ "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", "dev": true }, + "smart-buffer": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.1.0.tgz", + "integrity": "sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw==" + }, "snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", @@ -5606,11 +6239,6 @@ "requires": { "is-extendable": "^0.1.0" } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" } } }, @@ -5674,19 +6302,20 @@ } }, "snyk": { - "version": "1.236.1", - "resolved": "https://registry.npmjs.org/snyk/-/snyk-1.236.1.tgz", - "integrity": "sha512-wxA5Dbknfm4Pq+0poGar2K8X1oh+OwECdJVgiDeCCnooo8cQBamVV4Zekpb6sXJAAX9Wprgm6S+f4YgTvNmd3A==", + "version": "1.248.0", + "resolved": "https://registry.npmjs.org/snyk/-/snyk-1.248.0.tgz", + "integrity": "sha512-5rc339ktPNpqFjZHIpiduJT3VGx8G3uXIZG515Z4P/CNtQtl35FB3h2b+CKGz1vtQgOEzNky0fMmu5Wq/xt9Lg==", "requires": { - "@snyk/cli-interface": "^2.0.3", - "@snyk/dep-graph": "1.12.0", + "@snyk/cli-interface": "2.3.0", + "@snyk/dep-graph": "1.13.1", "@snyk/gemfile": "1.2.0", - "@snyk/snyk-cocoapods-plugin": "1.0.3", + "@snyk/snyk-cocoapods-plugin": "2.0.1", "@types/agent-base": "^4.2.0", "@types/restify": "^4.3.6", "abbrev": "^1.1.1", "ansi-escapes": "3.2.0", "chalk": "^2.4.2", + "cli-spinner": "0.2.10", "configstore": "^3.1.2", "debug": "^3.1.0", "diff": "^4.0.1", @@ -5697,23 +6326,23 @@ "needle": "^2.2.4", "opn": "^5.5.0", "os-name": "^3.0.0", - "proxy-agent": "*", + "proxy-agent": "^3.1.1", "proxy-from-env": "^1.0.0", "semver": "^6.0.0", "snyk-config": "^2.2.1", "snyk-docker-plugin": "1.33.1", "snyk-go-plugin": "1.11.1", - "snyk-gradle-plugin": "3.1.0", + "snyk-gradle-plugin": "3.2.2", "snyk-module": "1.9.1", "snyk-mvn-plugin": "2.4.0", - "snyk-nodejs-lockfile-parser": "1.16.0", - "snyk-nuget-plugin": "1.13.0", - "snyk-php-plugin": "1.6.4", + "snyk-nodejs-lockfile-parser": "1.16.1", + "snyk-nuget-plugin": "1.13.1", + "snyk-php-plugin": "1.7.0", "snyk-policy": "1.13.5", "snyk-python-plugin": "^1.13.3", "snyk-resolve": "1.0.1", "snyk-resolve-deps": "4.4.0", - "snyk-sbt-plugin": "2.8.0", + "snyk-sbt-plugin": "2.9.0", "snyk-tree": "^1.0.0", "snyk-try-require": "1.3.1", "source-map-support": "^0.5.11", @@ -5748,447 +6377,6 @@ "supports-color": "^5.3.0" } }, - "debug": { - "version": "3.2.6", - "bundled": true, - "requires": { - "ms": "^2.1.1" - } - }, - "esprima": { - "version": "4.0.1", - "bundled": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, - "inherits": { - "version": "2.0.4", - "bundled": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "lru-cache": { - "version": "4.1.5", - "bundled": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "bundled": true - }, - "prelude-ls": { - "version": "1.1.2", - "bundled": true - }, - "proxy-agent": { - "version": "3.1.0", - "bundled": true, - "requires": { - "agent-base": "^4.2.0", - "debug": "^3.1.0", - "http-proxy-agent": "^2.1.0", - "https-proxy-agent-snyk-fork": "*", - "lru-cache": "^4.1.2", - "pac-proxy-agent": "*", - "proxy-from-env": "^1.0.0", - "socks-proxy-agent": "^4.0.1" - }, - "dependencies": { - "agent-base": { - "version": "4.3.0", - "bundled": true, - "requires": { - "es6-promisify": "^5.0.0" - } - }, - "ast-types": { - "version": "0.13.2", - "bundled": true - }, - "bytes": { - "version": "3.1.0", - "bundled": true - }, - "co": { - "version": "4.6.0", - "bundled": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true - }, - "data-uri-to-buffer": { - "version": "2.0.2", - "bundled": true - }, - "debug": { - "version": "3.2.6", - "bundled": true, - "requires": { - "ms": "^2.1.1" - } - }, - "deep-is": { - "version": "0.1.3", - "bundled": true - }, - "degenerator": { - "version": "1.0.4", - "bundled": true, - "requires": { - "ast-types": "0.x.x", - "escodegen": "1.x.x", - "esprima": "3.x.x" - } - }, - "depd": { - "version": "1.1.2", - "bundled": true - }, - "es6-promise": { - "version": "4.2.8", - "bundled": true - }, - "es6-promisify": { - "version": "5.0.0", - "bundled": true, - "requires": { - "es6-promise": "^4.0.3" - } - }, - "escodegen": { - "version": "1.12.0", - "bundled": true, - "requires": { - "esprima": "^3.1.3", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - } - }, - "esprima": { - "version": "3.1.3", - "bundled": true - }, - "estraverse": { - "version": "4.3.0", - "bundled": true - }, - "esutils": { - "version": "2.0.3", - "bundled": true - }, - "extend": { - "version": "3.0.2", - "bundled": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "bundled": true - }, - "file-uri-to-path": { - "version": "1.0.0", - "bundled": true - }, - "ftp": { - "version": "0.3.10", - "bundled": true, - "requires": { - "readable-stream": "1.1.x", - "xregexp": "2.0.0" - }, - "dependencies": { - "readable-stream": { - "version": "1.1.14", - "bundled": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - } - } - }, - "get-uri": { - "version": "2.0.3", - "bundled": true, - "requires": { - "data-uri-to-buffer": "2", - "debug": "4", - "extend": "~3.0.2", - "file-uri-to-path": "1", - "ftp": "~0.3.10", - "readable-stream": "3" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "bundled": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "http-errors": { - "version": "1.7.3", - "bundled": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - } - }, - "http-proxy-agent": { - "version": "2.1.0", - "bundled": true, - "requires": { - "agent-base": "4", - "debug": "3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "bundled": true - } - } - }, - "https-proxy-agent-snyk-fork": { - "version": "2.2.2-fixed-mitm-vuln", - "bundled": true, - "requires": { - "agent-base": "^4.3.0", - "debug": "^3.1.0" - } - }, - "iconv-lite": { - "version": "0.4.24", - "bundled": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "inherits": { - "version": "2.0.4", - "bundled": true - }, - "ip": { - "version": "1.1.5", - "bundled": true - }, - "isarray": { - "version": "0.0.1", - "bundled": true - }, - "levn": { - "version": "0.3.0", - "bundled": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "ms": { - "version": "2.1.2", - "bundled": true - }, - "netmask": { - "version": "1.0.6", - "bundled": true - }, - "optionator": { - "version": "0.8.2", - "bundled": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "wordwrap": "~1.0.0" - } - }, - "pac-proxy-agent": { - "version": "3.0.0", - "bundled": true, - "requires": { - "agent-base": "^4.2.0", - "debug": "^3.1.0", - "get-uri": "^2.0.0", - "http-proxy-agent": "^2.1.0", - "pac-resolver": "^3.0.0", - "raw-body": "^2.2.0", - "socks-proxy-agent": "^4.0.1" - }, - "dependencies": { - "https-proxy-agent-snyk-fork": { - "version": "git://github.com/snyk/node-https-proxy-agent.git#5e86ccb682d0c833c8daa25ee6f91c670161cd66", - "from": "git://github.com/snyk/node-https-proxy-agent.git#5e86ccb682d0c833c8daa25ee6f91c670161cd66", - "requires": { - "agent-base": "^4.3.0", - "debug": "^3.1.0" - } - } - } - }, - "pac-resolver": { - "version": "3.0.0", - "bundled": true, - "requires": { - "co": "^4.6.0", - "degenerator": "^1.0.4", - "ip": "^1.1.5", - "netmask": "^1.0.6", - "thunkify": "^2.1.2" - } - }, - "prelude-ls": { - "version": "1.1.2", - "bundled": true - }, - "raw-body": { - "version": "2.4.1", - "bundled": true, - "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.3", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "readable-stream": { - "version": "3.4.0", - "bundled": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "dependencies": { - "string_decoder": { - "version": "1.3.0", - "bundled": true, - "requires": { - "safe-buffer": "~5.2.0" - } - } - } - }, - "safe-buffer": { - "version": "5.2.0", - "bundled": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true - }, - "setprototypeof": { - "version": "1.1.1", - "bundled": true - }, - "smart-buffer": { - "version": "4.0.2", - "bundled": true - }, - "socks": { - "version": "2.3.2", - "bundled": true, - "requires": { - "ip": "^1.1.5", - "smart-buffer": "4.0.2" - } - }, - "socks-proxy-agent": { - "version": "4.0.2", - "bundled": true, - "requires": { - "agent-base": "~4.2.1", - "socks": "~2.3.2" - }, - "dependencies": { - "agent-base": { - "version": "4.2.1", - "bundled": true, - "requires": { - "es6-promisify": "^5.0.0" - } - } - } - }, - "source-map": { - "version": "0.6.1", - "bundled": true, - "optional": true - }, - "statuses": { - "version": "1.5.0", - "bundled": true - }, - "string_decoder": { - "version": "0.10.31", - "bundled": true - }, - "thunkify": { - "version": "2.1.2", - "bundled": true - }, - "toidentifier": { - "version": "1.0.0", - "bundled": true - }, - "type-check": { - "version": "0.3.2", - "bundled": true, - "requires": { - "prelude-ls": "~1.1.2" - } - }, - "unpipe": { - "version": "1.0.0", - "bundled": true - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true - }, - "wordwrap": { - "version": "1.0.0", - "bundled": true - }, - "xregexp": { - "version": "2.0.0", - "bundled": true - } - } - }, - "proxy-from-env": { - "version": "1.0.0", - "bundled": true - }, - "pseudomap": { - "version": "1.0.2", - "bundled": true - }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -6200,24 +6388,14 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, "source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", + "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" } }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, "strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", @@ -6225,35 +6403,6 @@ "requires": { "ansi-regex": "^4.1.0" } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - }, - "type-check": { - "version": "0.3.2", - "bundled": true, - "requires": { - "prelude-ls": "~1.1.2" - } - }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - } - }, - "yallist": { - "version": "2.1.2", - "bundled": true } } }, @@ -6287,6 +6436,11 @@ "ms": "^2.1.1" } }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -6322,15 +6476,20 @@ "requires": { "ms": "^2.1.1" } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" } } }, "snyk-gradle-plugin": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/snyk-gradle-plugin/-/snyk-gradle-plugin-3.1.0.tgz", - "integrity": "sha512-789Rqyhv1+WYbfy1Qilgsw0FMccedSaCO5n+54CXXGVUZWMsVvqJj3T8k7+vis+9Eq+Sgbdzti8vDtApz6rWWQ==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/snyk-gradle-plugin/-/snyk-gradle-plugin-3.2.2.tgz", + "integrity": "sha512-ijIWsypbtpdTuRcYTFsnEWbaBnhCc7q0iIg0A4OcOW/xLyInPwyfBMnip4ubNfHAS/PrvzgfwwwJhttcQD0ZaQ==", "requires": { - "@snyk/cli-interface": "^2.1.0", + "@snyk/cli-interface": "2.2.0", "@types/debug": "^4.1.4", "chalk": "^2.4.2", "clone-deep": "^0.3.0", @@ -6339,6 +6498,14 @@ "tslib": "^1.9.3" }, "dependencies": { + "@snyk/cli-interface": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@snyk/cli-interface/-/cli-interface-2.2.0.tgz", + "integrity": "sha512-sA7V2JhgqJB9z5uYotgQc5iNDv//y+Mdm39rANxmFjtZMSYJZHkP80arzPjw1mB5ni/sWec7ieYUUFeySZBfVg==", + "requires": { + "tslib": "^1.9.3" + } + }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -6365,18 +6532,10 @@ "ms": "^2.1.1" } }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" } } }, @@ -6406,9 +6565,9 @@ } }, "snyk-nodejs-lockfile-parser": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/snyk-nodejs-lockfile-parser/-/snyk-nodejs-lockfile-parser-1.16.0.tgz", - "integrity": "sha512-cf3uozRXEG88nsjOQlo+SfOJPpcLs45qpnuk2vhBBZ577IMnV+fTOJQsP2YRiikLUbdgkVlduviwUO6OVn1PhA==", + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/snyk-nodejs-lockfile-parser/-/snyk-nodejs-lockfile-parser-1.16.1.tgz", + "integrity": "sha512-MEQImB2XU35D66wYve6g1RcDuD9vyoxGvYtM+ngSd5ItujzjIpyF26W7niqHwBRGLamqjsKF5cOlbmHs+wsx/Q==", "requires": { "@yarnpkg/lockfile": "^1.0.2", "graphlib": "^2.1.5", @@ -6424,9 +6583,9 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, "source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", + "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -6435,9 +6594,9 @@ } }, "snyk-nuget-plugin": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/snyk-nuget-plugin/-/snyk-nuget-plugin-1.13.0.tgz", - "integrity": "sha512-9PrsN6kSz79lKUlpfqAYvMtac7HYbscf4OJ5LTzTcPn2XRs24NCTZylUUpilkSY0r2DyDLY18cl+qHHjfJKnig==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/snyk-nuget-plugin/-/snyk-nuget-plugin-1.13.1.tgz", + "integrity": "sha512-2AQVeahBK7Rt38p0Acl1fMsFQu3dsqoRODPoRaS0IM/bOBzVdAkDF9pCb5yKMREGpMZcyRFkt8Q+hGiUk0Nlfg==", "requires": { "debug": "^3.1.0", "dotnet-deps-parser": "4.5.2", @@ -6457,14 +6616,23 @@ } }, "snyk-php-plugin": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/snyk-php-plugin/-/snyk-php-plugin-1.6.4.tgz", - "integrity": "sha512-FFQeimtbwq17nDUS0o0zuKgyjXSX7SpoC9iYTeKvxTXrmKf2QlxTtPvmMM4/hQxehEu1i40ow1Ozw0Ahxm8Dpw==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/snyk-php-plugin/-/snyk-php-plugin-1.7.0.tgz", + "integrity": "sha512-mDe90xkqSEVrpx1ZC7ItqCOc6fZCySbE+pHVI+dAPUmf1C1LSWZrZVmAVeo/Dw9sJzJfzmcdAFQl+jZP8/uV0A==", "requires": { - "@snyk/composer-lockfile-parser": "1.0.3", + "@snyk/cli-interface": "2.2.0", + "@snyk/composer-lockfile-parser": "1.2.0", "tslib": "1.9.3" }, "dependencies": { + "@snyk/cli-interface": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@snyk/cli-interface/-/cli-interface-2.2.0.tgz", + "integrity": "sha512-sA7V2JhgqJB9z5uYotgQc5iNDv//y+Mdm39rANxmFjtZMSYJZHkP80arzPjw1mB5ni/sWec7ieYUUFeySZBfVg==", + "requires": { + "tslib": "^1.9.3" + } + }, "tslib": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", @@ -6496,9 +6664,9 @@ } }, "snyk-python-plugin": { - "version": "1.13.3", - "resolved": "https://registry.npmjs.org/snyk-python-plugin/-/snyk-python-plugin-1.13.3.tgz", - "integrity": "sha512-Ud7mHmpMG4uCChvYLx5jA8HwOV/FNpT65xTxSt+6wsOjIUTuLiqM86mbvgzgk3pir8vMP9yQEsCi1i0zYLBArw==", + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/snyk-python-plugin/-/snyk-python-plugin-1.13.4.tgz", + "integrity": "sha512-XjGmvKMYENFMH94q+GSQz5JzTjgsgapdF0ZcS107c3UzMYeXa2Qd2Du9S5IB+mjvm335EJGcQJPlgFYb/qoeFw==", "requires": { "@snyk/cli-interface": "^2.0.3", "tmp": "0.0.33" @@ -6538,16 +6706,43 @@ }, "dependencies": { "@types/node": { - "version": "6.14.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-6.14.7.tgz", - "integrity": "sha512-YbPXbaynBTe0pVExPhL76TsWnxSPeFAvImIsmylpBWn/yfw+lHy+Q68aawvZHsgskT44ZAoeE67GM5f+Brekew==" + "version": "6.14.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-6.14.9.tgz", + "integrity": "sha512-leP/gxHunuazPdZaCvsCefPQxinqUDsCxCR5xaDUrY2MkYxQRFZZwU5e7GojyYsGB7QVtCi7iVEl/hoFXQYc+w==" + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" } } }, "snyk-sbt-plugin": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/snyk-sbt-plugin/-/snyk-sbt-plugin-2.8.0.tgz", - "integrity": "sha512-ZzyBdND5CsaO0xkv05geZXu8Dd6Llvr/5oTj811U7h7UmrvljrAiABW4RGjRJPrPVuuJaDej2p633sgGtK9UsA==", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/snyk-sbt-plugin/-/snyk-sbt-plugin-2.9.0.tgz", + "integrity": "sha512-R8jfRDkqlSsiSHYNAItKBUKUwb0n5z304Ko8ply/eoNAJMkXbFASDKHRto1v4F4wryJb4Rl1j/vFvIwytqZrww==", "requires": { "semver": "^6.1.2", "tmp": "^0.1.0", @@ -6587,12 +6782,28 @@ "lodash.clonedeep": "^4.3.0", "lru-cache": "^4.0.0", "then-fs": "^2.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + } } }, "sockjs-client": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.3.0.tgz", - "integrity": "sha512-R9jxEzhnnrdxLCNln0xg5uGHqMnkhPSTzUZH2eXcR03S/On9Yvoq2wyUZILRUhZCNVu2PmwWVoyuiPz8th8zbg==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz", + "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==", "requires": { "debug": "^3.2.5", "eventsource": "^1.0.7", @@ -6600,20 +6811,50 @@ "inherits": "^2.0.3", "json3": "^3.3.2", "url-parse": "^1.4.3" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } } }, - "sort-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", - "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", + "socks": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.3.3.tgz", + "integrity": "sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA==", "requires": { - "is-plain-obj": "^1.0.0" + "ip": "1.1.5", + "smart-buffer": "^4.1.0" } }, - "source-list-map": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.8.tgz", - "integrity": "sha1-xVCyq1Qn9rPyH1r+rYjE9Vh7IQY=" + "socks-proxy-agent": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz", + "integrity": "sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg==", + "requires": { + "agent-base": "~4.2.1", + "socks": "~2.3.2" + }, + "dependencies": { + "agent-base": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz", + "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==", + "requires": { + "es6-promisify": "^5.0.0" + } + } + } }, "source-map": { "version": "0.5.7", @@ -6646,34 +6887,6 @@ "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" }, - "spdx-correct": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", - "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==" - }, - "spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz", - "integrity": "sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g==" - }, "spin.js": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/spin.js/-/spin.js-2.3.2.tgz", @@ -6701,6 +6914,14 @@ "number-is-nan": "^1.0.0" } }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "requires": { + "figgy-pudding": "^3.5.1" + } + }, "static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", @@ -6720,6 +6941,11 @@ } } }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, "stompjs": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/stompjs/-/stompjs-2.3.3.tgz", @@ -6737,6 +6963,15 @@ "readable-stream": "^2.0.2" } }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, "stream-http": { "version": "2.8.3", "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", @@ -6749,14 +6984,33 @@ "xtend": "^4.0.0" } }, + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=" + }, "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + } } }, "string.prototype.trimleft": { @@ -6793,14 +7047,6 @@ "ansi-regex": "^2.0.0" } }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "requires": { - "is-utf8": "^0.2.0" - } - }, "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", @@ -6812,11 +7058,11 @@ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" }, "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "requires": { - "has-flag": "^1.0.0" + "has-flag": "^3.0.0" } }, "symbol-observable": { @@ -6825,9 +7071,9 @@ "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" }, "tapable": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.9.tgz", - "integrity": "sha512-2wsvQ+4GwBvLPLWsNfLCDYGsW6xb7aeC6utq2Qh0PFwgEy7K7dsma9Jsmb2zSQj7GvYAyUGSntLtsv++GmgL1A==" + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" }, "tar-stream": { "version": "2.1.0", @@ -6903,6 +7149,101 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + } + } + }, + "terser": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.4.0.tgz", + "integrity": "sha512-oDG16n2WKm27JO8h4y/w3iqBGAOSCtq7k8dRmrn4Wf9NouL0b2WpMHGChFGZq4nFAQy1FsNJrVQHfurXOSTmOA==", + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "source-map-support": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", + "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + } + } + }, + "terser-webpack-plugin": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.1.tgz", + "integrity": "sha512-ZXmmfiwtCLfz8WKZyYUuuHf3dMYEjg8NrjHMb0JqHVHVOSkzp3cW2/XG1fP3tRhqEqSzMwzzRQGtAPbs4Cncxg==", + "requires": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^1.7.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + }, + "dependencies": { + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "requires": { + "find-up": "^3.0.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" } } }, @@ -6919,15 +7260,29 @@ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "thunkify": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/thunkify/-/thunkify-2.1.2.tgz", + "integrity": "sha1-+qDp0jDFGsyVyhOjYawFyn4EVT0=" + }, "timed-out": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" }, "timers-browserify": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", - "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", + "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", "requires": { "setimmediate": "^1.0.4" } @@ -6979,6 +7334,11 @@ "repeat-string": "^1.6.1" } }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + }, "toml": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz", @@ -7005,6 +7365,19 @@ "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, "typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", @@ -7019,35 +7392,6 @@ "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.19.tgz", "integrity": "sha512-T3PVJ6uz8i0HzPxOF9SWzWAlfN/DavlpQqepn22xgve/5QecC+XMCAtmUNnY7C9StehaV6exjUCI801lOI7QlQ==" }, - "uglify-js": { - "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", - "requires": { - "source-map": "~0.5.1", - "uglify-to-browserify": "~1.0.0", - "yargs": "~3.10.0" - }, - "dependencies": { - "yargs": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", - "requires": { - "camelcase": "^1.0.2", - "cliui": "^2.1.0", - "decamelize": "^1.0.0", - "window-size": "0.1.0" - } - } - } - }, - "uglify-to-browserify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", - "optional": true - }, "uncontrollable": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-4.1.0.tgz", @@ -7057,35 +7401,30 @@ } }, "union-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", "requires": { "arr-union": "^3.1.0", "get-value": "^2.0.6", "is-extendable": "^0.1.1", - "set-value": "^0.4.3" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - }, - "set-value": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" - } - } + "set-value": "^2.0.1" + } + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "requires": { + "imurmurhash": "^0.1.4" } }, "unique-string": { @@ -7096,6 +7435,11 @@ "crypto-random-string": "^1.0.0" } }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, "unset-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", @@ -7129,6 +7473,11 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" } } }, @@ -7138,9 +7487,9 @@ "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=" }, "upath": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", - "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" }, "update-notifier": { "version": "2.5.0", @@ -7176,22 +7525,17 @@ "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } } } }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "requires": { + "punycode": "^2.1.0" + } + }, "urix": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", @@ -7214,11 +7558,11 @@ } }, "url-parse": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.4.tgz", - "integrity": "sha512-/92DTTorg4JjktLNLe6GPS2/RvAd/RGr6LuktmWSMLEOa6rjnlrFXNgSbSmkNvCoL2T028A0a1JaJLzRMlFoHg==", + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", + "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", "requires": { - "querystringify": "^2.0.0", + "querystringify": "^2.1.1", "requires-port": "^1.0.0" } }, @@ -7262,22 +7606,15 @@ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==" }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } + "v8-compile-cache": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz", + "integrity": "sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w==" }, "vm-browserify": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", - "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", - "requires": { - "indexof": "0.0.1" - } + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" }, "vscode-languageserver-types": { "version": "3.14.0", @@ -7303,56 +7640,184 @@ } }, "webpack": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-2.7.0.tgz", - "integrity": "sha512-MjAA0ZqO1ba7ZQJRnoCdbM56mmFpipOPUv/vQpwwfSI42p5PVDdoiuK2AL2FwFUVgT859Jr43bFZXRg/LNsqvg==", - "requires": { - "acorn": "^5.0.0", - "acorn-dynamic-import": "^2.0.0", - "ajv": "^4.7.0", - "ajv-keywords": "^1.1.1", - "async": "^2.1.2", - "enhanced-resolve": "^3.3.0", - "interpret": "^1.0.0", - "json-loader": "^0.5.4", - "json5": "^0.5.1", - "loader-runner": "^2.3.0", - "loader-utils": "^0.2.16", - "memory-fs": "~0.4.1", - "mkdirp": "~0.5.0", - "node-libs-browser": "^2.0.0", - "source-map": "^0.5.3", - "supports-color": "^3.1.0", - "tapable": "~0.2.5", - "uglify-js": "^2.8.27", - "watchpack": "^1.3.1", - "webpack-sources": "^1.0.1", - "yargs": "^6.0.0" - } - }, - "webpack-core": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/webpack-core/-/webpack-core-0.6.9.tgz", - "integrity": "sha1-/FcViMhVjad76e+23r3Fo7FyvcI=", - "requires": { - "source-list-map": "~0.1.7", - "source-map": "~0.4.1" + "version": "4.41.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.41.2.tgz", + "integrity": "sha512-Zhw69edTGfbz9/8JJoyRQ/pq8FYUoY0diOXqW0T6yhgdhCv6wr0hra5DwwWexNRns2Z2+gsnrNcbe9hbGBgk/A==", + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/wasm-edit": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "acorn": "^6.2.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.1.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.1", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.1", + "watchpack": "^1.6.0", + "webpack-sources": "^1.4.1" + } + }, + "webpack-cli": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.10.tgz", + "integrity": "sha512-u1dgND9+MXaEt74sJR4PR7qkPxXUSQ0RXYq8x1L6Jg1MYVEmGPrH6Ah6C4arD4r0J1P5HKjRqpab36k0eIzPqg==", + "requires": { + "chalk": "2.4.2", + "cross-spawn": "6.0.5", + "enhanced-resolve": "4.1.0", + "findup-sync": "3.0.0", + "global-modules": "2.0.0", + "import-local": "2.0.0", + "interpret": "1.2.0", + "loader-utils": "1.2.3", + "supports-color": "6.1.0", + "v8-compile-cache": "2.0.3", + "yargs": "13.2.4" }, "dependencies": { - "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", "requires": { - "amdefine": ">=0.0.4" + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "enhanced-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", + "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "tapable": "^1.0.0" + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "requires": { + "invert-kv": "^2.0.0" + } + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + }, + "yargs": { + "version": "13.2.4", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.4.tgz", + "integrity": "sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==", + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "os-locale": "^3.1.0", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.0" } } } }, "webpack-sources": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz", - "integrity": "sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", "requires": { "source-list-map": "^2.0.0", "source-map": "~0.6.1" @@ -7400,11 +7865,12 @@ } }, "websocket-driver": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", - "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz", + "integrity": "sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg==", "requires": { - "http-parser-js": ">=0.4.0", + "http-parser-js": ">=0.4.0 <0.4.11", + "safe-buffer": ">=5.1.0", "websocket-extensions": ">=0.1.1" } }, @@ -7427,9 +7893,9 @@ } }, "which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" }, "widest-line": { "version": "2.0.1", @@ -7437,41 +7903,12 @@ "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==", "requires": { "string-width": "^2.1.1" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "^3.0.0" - } - } } }, "window-size": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=" + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", + "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=" }, "windows-release": { "version": "3.2.0", @@ -7481,18 +7918,60 @@ "execa": "^1.0.0" } }, - "wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" + }, + "worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "requires": { + "errno": "~0.1.7" + } }, "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + } } }, "wrappy": { @@ -7501,28 +7980,15 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "write-file-atomic": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.2.tgz", - "integrity": "sha512-s0b6vB3xIVRLWywa6X9TOMA7k9zio0TMOsl9ZnDkliA/cfJlpHXAscj0gbHVJiTdIuAYpIyqS5GW91fqm6gG5g==", + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", "requires": { "graceful-fs": "^4.1.11", "imurmurhash": "^0.1.4", "signal-exit": "^3.0.2" } }, - "write-json-file": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-2.3.0.tgz", - "integrity": "sha1-K2TIozAE1UuGmMdtWFp3zrYdoy8=", - "requires": { - "detect-indent": "^5.0.0", - "graceful-fs": "^4.1.2", - "make-dir": "^1.0.0", - "pify": "^3.0.0", - "sort-keys": "^2.0.0", - "write-file-atomic": "^2.0.0" - } - }, "xdg-basedir": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", @@ -7550,6 +8016,11 @@ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=" }, + "xregexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz", + "integrity": "sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM=" + }, "xtend": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", @@ -7567,59 +8038,57 @@ "optional": true }, "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" }, "yargs": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", - "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", + "version": "3.32.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", + "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", "requires": { - "camelcase": "^3.0.0", - "cliui": "^3.2.0", + "camelcase": "^2.0.1", + "cliui": "^3.0.3", "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.2", - "which-module": "^1.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^4.2.0" + "string-width": "^1.0.1", + "window-size": "^0.1.4", + "y18n": "^3.2.0" }, "dependencies": { - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } } } }, "yargs-parser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", - "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", + "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", "requires": { - "camelcase": "^3.0.0" + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" }, "dependencies": { "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" } } } From 243b483c4fe08580dc021f45bd0e3d42e98e458a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Dvo=C5=99=C3=A1k?= Date: Thu, 21 Nov 2019 05:32:34 +0100 Subject: [PATCH 154/197] Fix #716: Remove duplicate SQL column (incorrect merge) --- docs/sql/oracle/create_schema.sql | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/sql/oracle/create_schema.sql b/docs/sql/oracle/create_schema.sql index 97da63c49..bd9fc765c 100644 --- a/docs/sql/oracle/create_schema.sql +++ b/docs/sql/oracle/create_schema.sql @@ -28,7 +28,6 @@ CREATE TABLE oauth_client_token ( authentication_id VARCHAR(256) PRIMARY KEY, token_id VARCHAR(256), token BLOB, - authentication_id VARCHAR(256) PRIMARY KEY, user_name VARCHAR(256), client_id VARCHAR(256) ); From eea4edbc1494645dee7c70d53c14b8f94ea15c8b Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Fri, 22 Nov 2019 14:29:51 +0100 Subject: [PATCH 155/197] Fix #715: Add external transaction ID to operation --- docs/Web-Flow-0.23.0.md | 4 +++- docs/sql/mysql/create_schema.sql | 1 + docs/sql/oracle/create_schema.sql | 1 + docs/sql/postgresql/create_schema.sql | 3 ++- .../lib/nextstep/client/NextStepClient.java | 12 +++++++----- .../model/request/CreateOperationRequest.java | 17 +++++++++++++++++ .../model/response/CreateOperationResponse.java | 17 +++++++++++++++++ .../response/GetOperationDetailResponse.java | 17 +++++++++++++++++ .../controller/OperationController.java | 2 ++ .../model/entity/OperationEntity.java | 11 +++++++++++ .../service/OperationPersistenceService.java | 1 + .../nextstep/service/StepResolutionService.java | 1 + 12 files changed, 80 insertions(+), 7 deletions(-) diff --git a/docs/Web-Flow-0.23.0.md b/docs/Web-Flow-0.23.0.md index 664bb6013..c60dda38b 100644 --- a/docs/Web-Flow-0.23.0.md +++ b/docs/Web-Flow-0.23.0.md @@ -9,7 +9,7 @@ Following database changes were introduced in version `0.23.0`: - Added `afs_enabled` and `afs_config_id` columns to table `ns_operation_config` - Added `operation_hash`, `websocket_session_id` and `client_ip_address` columns to table `wf_operation_session` - Added `request_auth_instruments` column to table `ns_operation_history` -- Added `user_account_status` column to table `ns_operation` +- Added `user_account_status` and `external_transaction_id` columns to table `ns_operation` - New tables `ns_operation_afs` and `wf_afs_config` for integration of anti-fraud system - Updated indexes and sequences @@ -25,6 +25,7 @@ ALTER TABLE wf_operation_session ADD websocket_session_id VARCHAR(32); ALTER TABLE wf_operation_session ADD client_ip_address VARCHAR(32); ALTER TABLE ns_operation ADD application_original_scopes VARCHAR(256); +ALTER TABLE ns_operation ADD external_transaction_id VARCHAR(256); CREATE INDEX wf_operation_hash ON wf_operation_session (operation_hash); CREATE INDEX wf_websocket_session ON wf_operation_session (websocket_session_id); @@ -65,6 +66,7 @@ ALTER TABLE `wf_operation_session` ADD `websocket_session_id` VARCHAR(32), ALTER TABLE `wf_operation_session` ADD `client_ip_address` VARCHAR(32), ALTER TABLE `ns_operation` ADD `application_original_scopes` VARCHAR(256); +ALTER TABLE `ns_operation` ADD `external_transaction_id` VARCHAR(256); CREATE INDEX `wf_operation_hash` ON `wf_operation_session` (`operation_hash`); CREATE INDEX `wf_websocket_session` ON `wf_operation_session` (`websocket_session_id`); diff --git a/docs/sql/mysql/create_schema.sql b/docs/sql/mysql/create_schema.sql index 289b1c135..99ee6894b 100644 --- a/docs/sql/mysql/create_schema.sql +++ b/docs/sql/mysql/create_schema.sql @@ -122,6 +122,7 @@ CREATE TABLE ns_operation ( user_id VARCHAR(256), organization_id VARCHAR(256), user_account_status VARCHAR(32), + external_transaction_id VARCHAR(256), result VARCHAR(32), timestamp_created TIMESTAMP DEFAULT CURRENT_TIMESTAMP, timestamp_expires TIMESTAMP DEFAULT CURRENT_TIMESTAMP, diff --git a/docs/sql/oracle/create_schema.sql b/docs/sql/oracle/create_schema.sql index bd9fc765c..d211f96bc 100644 --- a/docs/sql/oracle/create_schema.sql +++ b/docs/sql/oracle/create_schema.sql @@ -127,6 +127,7 @@ CREATE TABLE ns_operation ( user_id VARCHAR(256), organization_id VARCHAR(256), user_account_status VARCHAR(32), + external_transaction_id VARCHAR(256), result VARCHAR(32), timestamp_created TIMESTAMP, timestamp_expires TIMESTAMP, diff --git a/docs/sql/postgresql/create_schema.sql b/docs/sql/postgresql/create_schema.sql index 66313c554..253d6539e 100644 --- a/docs/sql/postgresql/create_schema.sql +++ b/docs/sql/postgresql/create_schema.sql @@ -125,8 +125,9 @@ CREATE TABLE ns_operation ( application_extras TEXT, user_id VARCHAR(256), organization_id VARCHAR(256), - result VARCHAR(32), user_account_status VARCHAR(32), + external_transaction_id VARCHAR(256), + result VARCHAR(32), timestamp_created TIMESTAMP, timestamp_expires TIMESTAMP, CONSTRAINT operation_organization_fk FOREIGN KEY (organization_id) REFERENCES ns_organization (organization_id) diff --git a/powerauth-nextstep-client/src/main/java/io/getlime/security/powerauth/lib/nextstep/client/NextStepClient.java b/powerauth-nextstep-client/src/main/java/io/getlime/security/powerauth/lib/nextstep/client/NextStepClient.java index e1684f4b2..2c8e0da65 100644 --- a/powerauth-nextstep-client/src/main/java/io/getlime/security/powerauth/lib/nextstep/client/NextStepClient.java +++ b/powerauth-nextstep-client/src/main/java/io/getlime/security/powerauth/lib/nextstep/client/NextStepClient.java @@ -125,7 +125,7 @@ public RestTemplate getRestTemplate() { * @throws NextStepServiceException Thrown when communication with Next Step server fails, including {@link Error} with ERROR code. */ public ObjectResponse createOperation(String operationName, String operationData, List params) throws NextStepServiceException { - return createOperation(operationName, null, operationData, null, null, params, null); + return createOperation(operationName, null, operationData, null, null, null, params, null); } /** @@ -140,7 +140,7 @@ public ObjectResponse createOperation(String operationN * @throws NextStepServiceException Thrown when communication with Next Step server fails, including {@link Error} with ERROR code. */ public ObjectResponse createOperation(String operationName, String operationId, String operationData, List params, ApplicationContext applicationContext) throws NextStepServiceException { - return createOperation(operationName, operationId, operationData, null, null, params, applicationContext); + return createOperation(operationName, operationId, operationData, null, null, null, params, applicationContext); } /** @@ -155,7 +155,7 @@ public ObjectResponse createOperation(String operationN * @throws NextStepServiceException Thrown when communication with Next Step server fails, including {@link Error} with ERROR code. */ public ObjectResponse createOperation(String operationName, String operationData, OperationFormData formData, List params, ApplicationContext applicationContext) throws NextStepServiceException { - return createOperation(operationName, null, operationData, null, formData, params, applicationContext); + return createOperation(operationName, null, operationData, null, null, formData, params, applicationContext); } /** @@ -165,13 +165,14 @@ public ObjectResponse createOperation(String operationN * @param operationId Operation ID (optional - if null, unique ID is automatically generated). * @param operationData Operation data. * @param organizationId Organization ID. + * @param externalTransactionId External transaction ID. * @param formData Operation form data, such as title, message and displayable attributes. * @param params List of generic parameters. * @param applicationContext Context of application requesting the OAuth 2.0 consent. * @return A Response with CreateOperationResponse object for OK status or ErrorModel for ERROR status. * @throws NextStepServiceException Thrown when communication with Next Step server fails, including {@link Error} with ERROR code. */ - public ObjectResponse createOperation(String operationName, String operationId, String operationData, String organizationId, OperationFormData formData, List params, ApplicationContext applicationContext) throws NextStepServiceException { + public ObjectResponse createOperation(String operationName, String operationId, String operationData, String organizationId, String externalTransactionId, OperationFormData formData, List params, ApplicationContext applicationContext) throws NextStepServiceException { try { // Exchange next step request with NextStep server. CreateOperationRequest request = new CreateOperationRequest(); @@ -179,6 +180,7 @@ public ObjectResponse createOperation(String operationN request.setOperationId(operationId); request.setOperationData(operationData); request.setOrganizationId(organizationId); + request.setExternalTransactionId(externalTransactionId); request.setFormData(formData); if (params != null) { request.getParams().addAll(params); @@ -208,7 +210,7 @@ public ObjectResponse createOperation(String operationN * @throws NextStepServiceException Thrown when communication with Next Step server fails, including {@link Error} with ERROR code. */ public ObjectResponse createOperation(String operationName, String operationData, OperationFormData formData, String organizationId, List params, ApplicationContext applicationContext) throws NextStepServiceException { - return createOperation(operationName, null, operationData, organizationId, formData, params, applicationContext); + return createOperation(operationName, null, operationData, organizationId, null, formData, params, applicationContext); } /** diff --git a/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/request/CreateOperationRequest.java b/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/request/CreateOperationRequest.java index 947df613e..839e3c344 100644 --- a/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/request/CreateOperationRequest.java +++ b/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/request/CreateOperationRequest.java @@ -33,6 +33,7 @@ public class CreateOperationRequest { private String operationId; private String operationData; private String organizationId; + private String externalTransactionId; private List params; private OperationFormData formData; private ApplicationContext applicationContext; @@ -110,6 +111,22 @@ public void setOrganizationId(String organizationId) { this.organizationId = organizationId; } + /** + * Get external transaction ID. + * @return External transaction ID. + */ + public String getExternalTransactionId() { + return externalTransactionId; + } + + /** + * Set external transaction ID. + * @param externalTransactionId External transaction ID. + */ + public void setExternalTransactionId(String externalTransactionId) { + this.externalTransactionId = externalTransactionId; + } + /** * Get the list with optional extra parameters. * @return Extra parameters. diff --git a/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/response/CreateOperationResponse.java b/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/response/CreateOperationResponse.java index 3d3994bad..72a20277b 100644 --- a/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/response/CreateOperationResponse.java +++ b/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/response/CreateOperationResponse.java @@ -33,6 +33,7 @@ public class CreateOperationResponse { private String operationId; private String operationName; private String organizationId; + private String externalTransactionId; private AuthResult result; private String resultDescription; private Date timestampCreated; @@ -104,6 +105,22 @@ public void setOrganizationId(String organizationId) { this.organizationId = organizationId; } + /** + * Get external transaction ID. + * @return External transaction ID. + */ + public String getExternalTransactionId() { + return externalTransactionId; + } + + /** + * Set external transaction ID. + * @param externalTransactionId External transaction ID. + */ + public void setExternalTransactionId(String externalTransactionId) { + this.externalTransactionId = externalTransactionId; + } + /** * Set operation data. * @param operationData Operation data. diff --git a/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/response/GetOperationDetailResponse.java b/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/response/GetOperationDetailResponse.java index dbea36a8d..da0aca51f 100644 --- a/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/response/GetOperationDetailResponse.java +++ b/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/response/GetOperationDetailResponse.java @@ -36,6 +36,7 @@ public class GetOperationDetailResponse { private String userId; private String organizationId; private UserAccountStatus accountStatus; + private String externalTransactionId; private AuthResult result; private Date timestampCreated; private Date timestampExpires; @@ -137,6 +138,22 @@ public void setAccountStatus(UserAccountStatus accountStatus) { this.accountStatus = accountStatus; } + /** + * Get external transaction ID. + * @return External transaction ID. + */ + public String getExternalTransactionId() { + return externalTransactionId; + } + + /** + * Set external transaction ID. + * @param externalTransactionId External transaction ID. + */ + public void setExternalTransactionId(String externalTransactionId) { + this.externalTransactionId = externalTransactionId; + } + /** * Get the authentication step result. * @return Authentication step result. diff --git a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/controller/OperationController.java b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/controller/OperationController.java index 9eecbee55..fdd59d737 100644 --- a/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/controller/OperationController.java +++ b/powerauth-nextstep/src/main/java/io/getlime/security/powerauth/app/nextstep/controller/OperationController.java @@ -207,6 +207,7 @@ private Response updateOperationUserImpl(ObjectRequest stepDefinitions = filterStepDefinitions(request.getOperationName(), OperationRequestType.CREATE, null, null, null); response.getSteps().addAll(filterAuthSteps(stepDefinitions, null, request.getOperationName())); From 6b1441c6ab86b3e0852b0d78b7a7e4287aa1bcef Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Fri, 22 Nov 2019 15:49:19 +0100 Subject: [PATCH 156/197] Update dependencies to avoid vulnerabilities reported by Snyk --- powerauth-webflow-authentication-mtoken/pom.xml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/powerauth-webflow-authentication-mtoken/pom.xml b/powerauth-webflow-authentication-mtoken/pom.xml index 166634886..6801d60dd 100644 --- a/powerauth-webflow-authentication-mtoken/pom.xml +++ b/powerauth-webflow-authentication-mtoken/pom.xml @@ -39,6 +39,12 @@ org.springframework.ws spring-ws-security + + + bcprov-jdk15on + org.bouncycastle + + org.springframework @@ -77,7 +83,7 @@ com.google.zxing javase - 3.3.3 + 3.4.0 From 1240184d342212208fade4e51a8f91d9d693a563 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Fri, 22 Nov 2019 15:52:04 +0100 Subject: [PATCH 157/197] Fix security vulnerability CVE-2019-11269 --- powerauth-webflow-resources/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/powerauth-webflow-resources/pom.xml b/powerauth-webflow-resources/pom.xml index 412cd70a0..8f26e02a5 100644 --- a/powerauth-webflow-resources/pom.xml +++ b/powerauth-webflow-resources/pom.xml @@ -34,7 +34,7 @@ org.springframework.security.oauth.boot spring-security-oauth2-autoconfigure - 2.1.8.RELEASE + 2.2.0.RELEASE bcpkix-jdk15on From 5ac8a22088a28925eaf65b64076700ba5e4f1d0a Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Wed, 27 Nov 2019 15:09:56 +0100 Subject: [PATCH 158/197] Fix JavaDoc errors on Java 11 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index bc0db11ef..9965f2b48 100644 --- a/pom.xml +++ b/pom.xml @@ -92,7 +92,7 @@ 1.8 1.8 3.1.0 - 3.0.1 + 3.1.1 3.2.2 2.3.1 1.3.2 From ebccc59ae59b5e45471d2971088f0e671c4c3974 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Wed, 27 Nov 2019 15:26:57 +0100 Subject: [PATCH 159/197] Upgrade Maven jar plugin --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 9965f2b48..b4429195c 100644 --- a/pom.xml +++ b/pom.xml @@ -91,7 +91,7 @@ UTF-8 1.8 1.8 - 3.1.0 + 3.2.0 3.1.1 3.2.2 2.3.1 From d64c6584b5ae2de4c29930215a3daf5613e1d4ee Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Wed, 27 Nov 2019 15:43:18 +0100 Subject: [PATCH 160/197] Upgrade TTP engine version --- powerauth-tpp-engine-client/pom.xml | 2 +- powerauth-tpp-engine-model/pom.xml | 2 +- powerauth-tpp-engine/pom.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/powerauth-tpp-engine-client/pom.xml b/powerauth-tpp-engine-client/pom.xml index 34a5fea2e..990c89043 100644 --- a/powerauth-tpp-engine-client/pom.xml +++ b/powerauth-tpp-engine-client/pom.xml @@ -24,7 +24,7 @@ powerauth-webflow-parent io.getlime.security - 0.22.0 + 0.23.0-SNAPSHOT powerauth-tpp-engine-client diff --git a/powerauth-tpp-engine-model/pom.xml b/powerauth-tpp-engine-model/pom.xml index 4abd6ccd3..0f3dbaa1e 100644 --- a/powerauth-tpp-engine-model/pom.xml +++ b/powerauth-tpp-engine-model/pom.xml @@ -23,7 +23,7 @@ powerauth-webflow-parent io.getlime.security - 0.22.0 + 0.23.0-SNAPSHOT powerauth-tpp-engine-model diff --git a/powerauth-tpp-engine/pom.xml b/powerauth-tpp-engine/pom.xml index 8f70ede2e..e29d9ca5a 100644 --- a/powerauth-tpp-engine/pom.xml +++ b/powerauth-tpp-engine/pom.xml @@ -12,7 +12,7 @@ io.getlime.security powerauth-webflow-parent - 0.22.0 + 0.23.0-SNAPSHOT ../pom.xml From 56a9410d35a7c37463fbc544a9bdc8ad10e0e510 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Wed, 27 Nov 2019 16:51:23 +0100 Subject: [PATCH 161/197] Fix typos in migration guide --- docs/Web-Flow-0.23.0.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/Web-Flow-0.23.0.md b/docs/Web-Flow-0.23.0.md index c60dda38b..c7d069ad3 100644 --- a/docs/Web-Flow-0.23.0.md +++ b/docs/Web-Flow-0.23.0.md @@ -61,9 +61,9 @@ DDL update script for MySQL: ALTER TABLE `ns_operation_config` ADD `afs_enabled` BOOLEAN NOT NULL DEFAULT FALSE; ALTER TABLE `ns_operation_config` ADD `afs_config_id` VARCHAR(256); -ALTER TABLE `wf_operation_session` ADD `operation_hash` VARCHAR(256), -ALTER TABLE `wf_operation_session` ADD `websocket_session_id` VARCHAR(32), -ALTER TABLE `wf_operation_session` ADD `client_ip_address` VARCHAR(32), +ALTER TABLE `wf_operation_session` ADD `operation_hash` VARCHAR(256); +ALTER TABLE `wf_operation_session` ADD `websocket_session_id` VARCHAR(32); +ALTER TABLE `wf_operation_session` ADD `client_ip_address` VARCHAR(32); ALTER TABLE `ns_operation` ADD `application_original_scopes` VARCHAR(256); ALTER TABLE `ns_operation` ADD `external_transaction_id` VARCHAR(256); From f55f398cadb23183df2c5d8e32c4b8de819df212 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Fri, 29 Nov 2019 13:05:00 +0100 Subject: [PATCH 162/197] Fix DDL merge issues --- docs/sql/mysql/create_schema.sql | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/sql/mysql/create_schema.sql b/docs/sql/mysql/create_schema.sql index 99ee6894b..013cce24e 100644 --- a/docs/sql/mysql/create_schema.sql +++ b/docs/sql/mysql/create_schema.sql @@ -21,7 +21,6 @@ CREATE TABLE oauth_client_token ( authentication_id VARCHAR(256) PRIMARY KEY, token_id VARCHAR(256), token LONG VARBINARY, - authentication_id VARCHAR(256) PRIMARY KEY, user_name VARCHAR(256), client_id VARCHAR(256) ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; @@ -32,7 +31,6 @@ CREATE TABLE oauth_access_token ( authentication_id VARCHAR(256) PRIMARY KEY, token_id VARCHAR(256), token LONG VARBINARY, - authentication_id VARCHAR(256) PRIMARY KEY, user_name VARCHAR(256), client_id VARCHAR(256), authentication LONG VARBINARY, From 77eb3655bf21f1b130ffd300a1fa47925d3ca00e Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Thu, 5 Dec 2019 13:31:20 +0100 Subject: [PATCH 163/197] Fix invalid method call in AttributeFormatted --- .../dataadapter/model/entity/attribute/AttributeFormatted.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/entity/attribute/AttributeFormatted.java b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/entity/attribute/AttributeFormatted.java index c5cf19a29..2f3bc56df 100644 --- a/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/entity/attribute/AttributeFormatted.java +++ b/powerauth-data-adapter-model/src/main/java/io/getlime/security/powerauth/lib/dataadapter/model/entity/attribute/AttributeFormatted.java @@ -62,7 +62,7 @@ public void addFormattedValue(String key, String formattedValue) { * @param formattedValues Formatted values. */ public void addFormattedValues(Map formattedValues) { - addFormattedValues(formattedValues); + this.formattedValues.putAll(formattedValues); } } From f4d9b865ca074cd57111194e5e1182df81ecdfde Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Thu, 5 Dec 2019 13:42:17 +0100 Subject: [PATCH 164/197] Fix invalid method call in AttributeFormatted --- .../entity/attribute/OperationFormFieldAttributeFormatted.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/entity/attribute/OperationFormFieldAttributeFormatted.java b/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/entity/attribute/OperationFormFieldAttributeFormatted.java index 5abbe37fe..2d6cdd7b2 100644 --- a/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/entity/attribute/OperationFormFieldAttributeFormatted.java +++ b/powerauth-nextstep-model/src/main/java/io/getlime/security/powerauth/lib/nextstep/model/entity/attribute/OperationFormFieldAttributeFormatted.java @@ -61,7 +61,7 @@ public void addFormattedValue(String key, String formattedValue) { * @param formattedValues Formatted values. */ public void addFormattedValues(Map formattedValues) { - addFormattedValues(formattedValues); + this.formattedValues.putAll(formattedValues); } } From 564243a97b92acf47d992bfa48e360f7ba18ee03 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Thu, 5 Dec 2019 13:52:52 +0100 Subject: [PATCH 165/197] Update serial version UID due to class changes --- .../authentication/security/UserOperationAuthentication.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/security/UserOperationAuthentication.java b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/security/UserOperationAuthentication.java index 7cb749c9c..4aa7db0de 100644 --- a/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/security/UserOperationAuthentication.java +++ b/powerauth-webflow-authentication/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/security/UserOperationAuthentication.java @@ -33,7 +33,7 @@ */ public class UserOperationAuthentication extends AbstractAuthenticationToken implements Serializable { - private static final long serialVersionUID = -3790516505615465445L; + private static final long serialVersionUID = 4514448849365459373L; private String userId; private String operationId; From 99f53bc358ab71849a64534eee2e484a5746cbb8 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Thu, 5 Dec 2019 16:43:45 +0100 Subject: [PATCH 166/197] Fix #721: Catch Web Socket errors --- .../src/main/js/websocket-client.js | 77 +++++++++++++------ 1 file changed, 53 insertions(+), 24 deletions(-) diff --git a/powerauth-webflow/src/main/js/websocket-client.js b/powerauth-webflow/src/main/js/websocket-client.js index 4d6e26702..38b06f972 100644 --- a/powerauth-webflow/src/main/js/websocket-client.js +++ b/powerauth-webflow/src/main/js/websocket-client.js @@ -25,25 +25,30 @@ require('stompjs'); * @param webSocketId Web Socket ID. */ function register(registrations, webSocketId) { - var msie = document.documentMode; - if (msie && msie < 11) { - // Old IE versions do not support Web Sockets, see: https://caniuse.com/#feat=websockets - // For IE < 11 fall back to polling. - return; - } - let headers = {}; - headers[csrf.headerName] = csrf.token; - const socket = SockJS('./websocket'); - client = Stomp.over(socket); - client.debug = () => {}; - client.connect(headers, function (frame) { - registrations.forEach(function (registration) { - client.subscribe(registration.route, registration.callback); + try { + var msie = document.documentMode; + if (msie && msie < 11) { + // Old IE versions do not support Web Sockets, see: https://caniuse.com/#feat=websockets + // For IE < 11 fall back to polling. + return; + } + let headers = {}; + headers[csrf.headerName] = csrf.token; + const socket = SockJS('./websocket'); + client = Stomp.over(socket); + client.debug = () => {}; + client.connect(headers, function (frame) { + registrations.forEach(function (registration) { + client.subscribe(registration.route, registration.callback); + }); + // Registration of the client with given webSocketId to link WebSocket session and operation + const msg = {"webSocketId": webSocketId}; + client.send("/app/registration", {}, JSON.stringify(msg)); }); - // registration of the client with given webSocketId to link WebSocket session and operation - const msg = {"webSocketId": webSocketId}; - client.send("/app/registration", {}, JSON.stringify(msg)); - }); + } catch (e) { + // Ignore Web Socket errors, however log the event + console.log("Web Socket registration failed."); + } } @@ -53,7 +58,14 @@ function register(registrations, webSocketId) { * @param callback Callback function to call on an event. */ function subscribe(route, callback) { - client.subscribe(route, callback); + try { + if (client !== undefined) { + client.subscribe(route, callback); + } + } catch (e) { + // Ignore Web Socket errors, however log the event + console.log("Web Socket subscribe action failed."); + } } /** @@ -61,7 +73,14 @@ function subscribe(route, callback) { * @param route Web Socket route. */ function unsubscribe(route) { - client.unsubscribe(route); + try { + if (client !== undefined) { + client.unsubscribe(route); + } + } catch (e) { + // Ignore Web Socket errors, however log the event + console.log("Web Socket unsubscribe action failed."); + } } /** @@ -71,8 +90,13 @@ function unsubscribe(route) { * @param message Text of the message as JSON. */ function send(destination, params, message) { - if (client !== undefined) { - client.send(destination, params, message); + try { + if (client !== undefined) { + client.send(destination, params, message); + } + } catch (e) { + // Ignore Web Socket errors, however log the event + console.log("Web Socket send action failed."); } } @@ -80,8 +104,13 @@ function send(destination, params, message) { * Disconnect the WebSocket. */ function disconnect() { - if (client !== undefined) { - client.disconnect(); + try { + if (client !== undefined) { + client.disconnect(); + } + } catch (e) { + // Ignore Web Socket errors, however log the event + console.log("Web Socket disconnect action failed."); } } From 7cb7a597b61955618676c7df9628d12cbd74790d Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Thu, 5 Dec 2019 18:47:45 +0100 Subject: [PATCH 167/197] Fix #723: Log error when operation list could not be retrieved --- .../mtoken/controller/MobileAppApiController.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/controller/MobileAppApiController.java b/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/controller/MobileAppApiController.java index a942fc99f..93b72687c 100644 --- a/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/controller/MobileAppApiController.java +++ b/powerauth-webflow-authentication-mtoken/src/main/java/io/getlime/security/powerauth/lib/webflow/authentication/mtoken/controller/MobileAppApiController.java @@ -147,6 +147,7 @@ private ObjectResponse getOperationListImpl(PowerAuthApiA operationList = getOperationListForUser(userId, true); operationConfigs = getOperationConfigs(operationList); } catch (AuthStepException e) { + logger.error("Could not retrieve operation list", e); // Next step operation list failed, return empty operation list return new ObjectResponse<>(new OperationListResponse()); } @@ -319,6 +320,7 @@ private boolean isSignatureTypeAllowedForOperation(String operationName, PowerAu try { operationConfig = getOperationConfig(operationName); } catch (AuthStepException e) { + logger.error("Could not retrieve operation configuration", e); // Next step request failed, cannot decide return false; } From 94940bc43d84c8c4950bf3685ce1471b6edb1e6d Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Thu, 5 Dec 2019 19:14:33 +0100 Subject: [PATCH 168/197] Update Next Step documentation --- docs/Next-Step-Server-REST-API-Reference.md | 99 +++++++++++++++++++++ docs/Next-Step-Server.md | 4 +- 2 files changed, 102 insertions(+), 1 deletion(-) diff --git a/docs/Next-Step-Server-REST-API-Reference.md b/docs/Next-Step-Server-REST-API-Reference.md index a4888f559..2db19aa83 100644 --- a/docs/Next-Step-Server-REST-API-Reference.md +++ b/docs/Next-Step-Server-REST-API-Reference.md @@ -24,6 +24,8 @@ Following topics are covered in this chapter: - [Update application context for an operation](#update-application-context-for-an-operation) - [Update user for an operation](#update-user-for-an-operation) - [Set chosen authentication method](#set-chosen-authentication-method) + - [Update mobile token status for an operation](#update-mobile-token-status-for-an-operation) + - [Get mobile token configuration](#get-mobile-token-configuration) - [Store result of an AFS action](#store-result-of-an-afs-action) - [List operation configurations](#list-operation-configurations) - [Get operation configuration detail](#get-operation-configuration-detail) @@ -1923,6 +1925,103 @@ Alternative with `POST` method for environments which do not allow `PUT` methods } ``` +### Update mobile token status for an operation + +Set whether mobile token is active for an operation. + +
+ + + + + + + + +
MethodPUT
Resource URI/operation/mobileToken/status
+ +Alternative with `POST` method for environments which do not allow `PUT` methods: + + + + + + + + + +
MethodPOST
Resource URI/operation/mobileToken/status/update
+ + +#### Request + +- Headers: + - `Content-Type: application/json` + +```json +{ + "requestObject": { + "operationId": "1ee2d165-1926-4a77-be5f-82ec26f12b97", + "mobileTokenActive": true + } +} +``` + +#### Response +- Status Code: `200` +- Headers: + - `Content-Type: application/json` + +```json +{ + "status" : "OK" +} +``` + +### Get mobile token configuration + +Get whether mobile token is enabled for given user ID, operation ID and authentication method. + + + + + + + + + + +
MethodPOST
Resource URI/operation/mobileToken/config/detail
+ +#### Request + +- Headers: + - `Content-Type: application/json` + +```json +{ + "requestObject": { + "userId": "12345678", + "operationName": "login", + "authMethod": "LOGIN_SCA" + } +} +``` + +#### Response +- Status Code: `200` +- Headers: + - `Content-Type: application/json` + +```json +{ + "status": "OK", + "responseObject": { + "mobileTokenEnabled": true + } +} +``` + ### Store result of an AFS action Store result of an AFS action for an operation. diff --git a/docs/Next-Step-Server.md b/docs/Next-Step-Server.md index 2aeed5c0a..2539d53c1 100644 --- a/docs/Next-Step-Server.md +++ b/docs/Next-Step-Server.md @@ -27,7 +27,9 @@ Next Step Server implements following functionality: - update user and organization for an operation - update application context for an operation - set chosen authentication method - - execute an AFS action + - update mobile token status for an operation + - retrieve mobile token configuration + - store result of an AFS action - management of organizations - list organizations - retrieve organization detail From e380f401de0f48f87b265c94ca314cfb0ed255b4 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Thu, 5 Dec 2019 23:14:09 +0100 Subject: [PATCH 169/197] Update documentation --- docs/Next-Step-Server-REST-API-Reference.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Next-Step-Server-REST-API-Reference.md b/docs/Next-Step-Server-REST-API-Reference.md index 2db19aa83..95d360534 100644 --- a/docs/Next-Step-Server-REST-API-Reference.md +++ b/docs/Next-Step-Server-REST-API-Reference.md @@ -1980,7 +1980,7 @@ Alternative with `POST` method for environments which do not allow `PUT` methods ### Get mobile token configuration -Get whether mobile token is enabled for given user ID, operation ID and authentication method. +Get whether mobile token is enabled for given user ID, operation name and authentication method. From 0899cb4acb752b8149f9ddc0d3bce6ed157f7b1d Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Tue, 10 Dec 2019 12:27:36 +0100 Subject: [PATCH 170/197] Switch to release 0.23.x of PowerAuth libraries --- powerauth-webflow-authentication-login-sca/pom.xml | 2 +- powerauth-webflow-authentication-mtoken/pom.xml | 4 ++-- powerauth-webflow-authentication/pom.xml | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/powerauth-webflow-authentication-login-sca/pom.xml b/powerauth-webflow-authentication-login-sca/pom.xml index 91ea46c0c..3639938e6 100644 --- a/powerauth-webflow-authentication-login-sca/pom.xml +++ b/powerauth-webflow-authentication-login-sca/pom.xml @@ -26,7 +26,7 @@ io.getlime.security powerauth-java-crypto - 0.23.0-SNAPSHOT + 0.23.0 diff --git a/powerauth-webflow-authentication-mtoken/pom.xml b/powerauth-webflow-authentication-mtoken/pom.xml index 6801d60dd..f579ff0bc 100644 --- a/powerauth-webflow-authentication-mtoken/pom.xml +++ b/powerauth-webflow-authentication-mtoken/pom.xml @@ -61,12 +61,12 @@ io.getlime.security powerauth-restful-security-spring - 0.23.0-SNAPSHOT + 0.23.0 io.getlime.security powerauth-push-client - 0.23.0-SNAPSHOT + 0.23.0 io.getlime.security diff --git a/powerauth-webflow-authentication/pom.xml b/powerauth-webflow-authentication/pom.xml index 3dbb43b8b..9d208456a 100644 --- a/powerauth-webflow-authentication/pom.xml +++ b/powerauth-webflow-authentication/pom.xml @@ -64,12 +64,12 @@ io.getlime.security powerauth-java-client-spring - 0.23.0-SNAPSHOT + 0.23.1 io.getlime.security powerauth-java-crypto - 0.23.0-SNAPSHOT + 0.23.0 From cf7e9b2cbcc50e764aa4b19ee1425abb229fe64e Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Wed, 11 Dec 2019 13:27:21 +0100 Subject: [PATCH 171/197] Fix #720: Not allowed to deserialize error --- powerauth-webflow-resources/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/powerauth-webflow-resources/pom.xml b/powerauth-webflow-resources/pom.xml index 8f26e02a5..8441b11c5 100644 --- a/powerauth-webflow-resources/pom.xml +++ b/powerauth-webflow-resources/pom.xml @@ -34,7 +34,7 @@ org.springframework.security.oauth.boot spring-security-oauth2-autoconfigure - 2.2.0.RELEASE + 2.2.2.RELEASE bcpkix-jdk15on From 9e70238ae9dcaa10b5277dadf9d8507eea333a2b Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Wed, 11 Dec 2019 15:34:36 +0100 Subject: [PATCH 172/197] Fix #603: Optimize timeout API requests --- .../src/main/js/components/login.js | 10 +++---- .../src/main/js/components/loginSca.js | 10 +++---- .../main/js/components/operationTimeout.js | 26 ++++++++++++++++--- 3 files changed, 32 insertions(+), 14 deletions(-) diff --git a/powerauth-webflow/src/main/js/components/login.js b/powerauth-webflow/src/main/js/components/login.js index 74e19cc05..db2ec83db 100644 --- a/powerauth-webflow/src/main/js/components/login.js +++ b/powerauth-webflow/src/main/js/components/login.js @@ -115,7 +115,7 @@ export default class Login extends React.Component { } return ( - {this.banners()} + {this.banners(true)} {this.title()} {this.loginForm(organizations[0].organizationId)} @@ -134,7 +134,7 @@ export default class Login extends React.Component { return ( - {this.banners()} + {this.banners(org.organizationId === this.props.context.chosenOrganizationId)} {this.title()} {this.loginForm(org.organizationId)} @@ -169,7 +169,7 @@ export default class Login extends React.Component { intl={this.props.intl} callback={organization => this.organizationChanged(organization.organizationId)} /> - {this.banners()} + {this.banners(true)} {this.title()} {this.loginForm(chosenOrganizationId)} @@ -192,9 +192,9 @@ export default class Login extends React.Component { this.props.dispatch(selectOrganization(organizationId)); } - banners() { + banners(timeoutCheckActive) { return ( - + ) } diff --git a/powerauth-webflow/src/main/js/components/loginSca.js b/powerauth-webflow/src/main/js/components/loginSca.js index 2639c79d2..bd4e7c437 100644 --- a/powerauth-webflow/src/main/js/components/loginSca.js +++ b/powerauth-webflow/src/main/js/components/loginSca.js @@ -108,7 +108,7 @@ export default class LoginSca extends React.Component { } return ( - {this.banners()} + {this.banners(true)} {this.title()} {this.loginForm(organizations[0].organizationId)} @@ -127,7 +127,7 @@ export default class LoginSca extends React.Component { return ( - {this.banners()} + {this.banners(org.organizationId === this.props.context.chosenOrganizationId)} {this.title()} {this.loginForm(org.organizationId)} @@ -162,7 +162,7 @@ export default class LoginSca extends React.Component { intl={this.props.intl} callback={organization => this.organizationChanged(organization.organizationId)} /> - {this.banners()} + {this.banners(true)} {this.title()} {this.loginForm(chosenOrganizationId)} @@ -185,9 +185,9 @@ export default class LoginSca extends React.Component { this.props.dispatch(selectOrganization(organizationId)); } - banners() { + banners(timeoutCheckActive) { return ( - + ) } diff --git a/powerauth-webflow/src/main/js/components/operationTimeout.js b/powerauth-webflow/src/main/js/components/operationTimeout.js index a422bbed6..991ace1e3 100644 --- a/powerauth-webflow/src/main/js/components/operationTimeout.js +++ b/powerauth-webflow/src/main/js/components/operationTimeout.js @@ -36,14 +36,32 @@ export default class OperationTimeout extends React.Component { } componentWillMount() { - this.props.dispatch(verifyOperationTimeout()); + // Check timeout only in case the check is active to avoid concurrent requests + if (this.props.timeoutCheckActive) { + this.props.dispatch(verifyOperationTimeout()); + } } componentWillReceiveProps(props) { + if (!this.props.timeoutCheckActive && props.timeoutCheckActive) { + // Timeout check has just been activated e.g. by switching active organization + if (this.state.timeoutCheckScheduled) { + // Timeout check is already scheduled, just enable it + this.setState({timeoutCheckEnabled: true}); + } else { + // Trigger new timeout check + this.props.dispatch(verifyOperationTimeout()); + } + return; + } + if (this.props.timeoutCheckActive && !props.timeoutCheckActive) { + // Timeout check has just been deactivated e.g. by switching active organization + this.setState({timeoutCheckEnabled: false}); + return; + } if (props.timeout) { - this.setState({timeoutCheckEnabled: props.timeout.timeoutCheckEnabled}); - if (this.state.timeoutCheckEnabled && !this.state.timeoutCheckScheduled && props.timeout.timeoutDelayMs > 0) { - this.setState({timeoutCheckScheduled: true}); + if (!this.state.timeoutCheckScheduled && props.timeout.timeoutCheckEnabled && props.timeout.timeoutDelayMs > 0) { + this.setState({timeoutCheckEnabled: true, timeoutCheckScheduled: true}); let nextVerificationMs = props.timeout.timeoutDelayMs; if (props.timeout.timeoutWarningDelayMs > 0 && props.timeout.timeoutWarningDelayMs < props.timeout.timeoutDelayMs) { nextVerificationMs = props.timeout.timeoutWarningDelayMs; From 81f34e5c1e22f67a459266e4517dd1c71fcb4221 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Wed, 11 Dec 2019 15:47:04 +0100 Subject: [PATCH 173/197] Avoid duplicate timeout requests for different organizations --- .../src/main/js/components/operationTimeout.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/powerauth-webflow/src/main/js/components/operationTimeout.js b/powerauth-webflow/src/main/js/components/operationTimeout.js index 991ace1e3..ae0796636 100644 --- a/powerauth-webflow/src/main/js/components/operationTimeout.js +++ b/powerauth-webflow/src/main/js/components/operationTimeout.js @@ -44,7 +44,7 @@ export default class OperationTimeout extends React.Component { componentWillReceiveProps(props) { if (!this.props.timeoutCheckActive && props.timeoutCheckActive) { - // Timeout check has just been activated e.g. by switching active organization + // Timeout check has just been activated e.g. by switching the active organization if (this.state.timeoutCheckScheduled) { // Timeout check is already scheduled, just enable it this.setState({timeoutCheckEnabled: true}); @@ -55,11 +55,11 @@ export default class OperationTimeout extends React.Component { return; } if (this.props.timeoutCheckActive && !props.timeoutCheckActive) { - // Timeout check has just been deactivated e.g. by switching active organization + // Timeout check has just been deactivated e.g. by switching the active organization this.setState({timeoutCheckEnabled: false}); return; } - if (props.timeout) { + if (props.timeoutCheckActive && props.timeout) { if (!this.state.timeoutCheckScheduled && props.timeout.timeoutCheckEnabled && props.timeout.timeoutDelayMs > 0) { this.setState({timeoutCheckEnabled: true, timeoutCheckScheduled: true}); let nextVerificationMs = props.timeout.timeoutDelayMs; From 2aac9be185b1732c1f1b46c5cc27a33455910bb6 Mon Sep 17 00:00:00 2001 From: snyk-bot Date: Thu, 12 Dec 2019 05:28:09 +0000 Subject: [PATCH 174/197] fix: powerauth-webflow/package.json, powerauth-webflow/package-lock.json & powerauth-webflow/.snyk to reduce vulnerabilities The following vulnerabilities are fixed with a Snyk patch: - https://snyk.io/vuln/SNYK-JS-TREEKILL-536781 --- powerauth-webflow/.snyk | 5 +- powerauth-webflow/package-lock.json | 164 +++++++++++++++++++--------- powerauth-webflow/package.json | 2 +- 3 files changed, 117 insertions(+), 54 deletions(-) diff --git a/powerauth-webflow/.snyk b/powerauth-webflow/.snyk index 433e6f3a7..ee885b8a6 100644 --- a/powerauth-webflow/.snyk +++ b/powerauth-webflow/.snyk @@ -1,5 +1,5 @@ # Snyk (https://snyk.io) policy file, patches or ignores known vulnerabilities. -version: v1.13.5 +version: v1.14.0 ignore: {} # patches apply the minimum changes required to fix a vulnerability patch: @@ -8,3 +8,6 @@ patch: patched: '2019-10-04T00:13:57.715Z' - snyk > proxy-agent > pac-proxy-agent > https-proxy-agent: patched: '2019-10-04T00:13:57.715Z' + SNYK-JS-TREEKILL-536781: + - snyk > snyk-sbt-plugin > tree-kill: + patched: '2019-12-12T05:27:55.901Z' diff --git a/powerauth-webflow/package-lock.json b/powerauth-webflow/package-lock.json index 8f13a3b59..9b5aa2fbe 100644 --- a/powerauth-webflow/package-lock.json +++ b/powerauth-webflow/package-lock.json @@ -42,9 +42,9 @@ }, "dependencies": { "core-js": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.4.1.tgz", - "integrity": "sha512-KX/dnuY/J8FtEwbnrzmAjUYgLqtk+cxM86hfG60LGiW3MmltIc2yAmDgBgEkfm0blZhUrdr1Zd84J2Y14mLxzg==" + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.5.0.tgz", + "integrity": "sha512-Ifh3kj78gzQ7NAoJXeTu+XwzDld0QRIwjBLRqAMhuLhP3d2Av5wmgE9ycfnvK6NAEjTkQ1sDPeoEZAWO3Hx1Uw==" }, "source-map": { "version": "0.6.1", @@ -186,9 +186,9 @@ "integrity": "sha512-SGGAhXLHDx+PK4YLNcNGa6goPf9XRWQNAUUbffkwVGGXIxmDKWyGGL4inzq2sPmExu431Ekb9aEMn9BkPqEYFA==" }, "@types/node": { - "version": "12.12.8", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.8.tgz", - "integrity": "sha512-XLla8N+iyfjvsa0KKV+BP/iGSoTmwxsu5Ci5sM33z9TjohF72DEz95iNvD6pPmemvbQgxAv/909G73gUn8QR7w==" + "version": "12.12.17", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.17.tgz", + "integrity": "sha512-Is+l3mcHvs47sKy+afn2O1rV4ldZFU7W8101cNlOd+MRbjM4Onida8jSZnJdTe/0Pcf25g9BNIUsuugmE6puHA==" }, "@types/restify": { "version": "4.3.6", @@ -2563,17 +2563,17 @@ } }, "es-abstract": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.16.0.tgz", - "integrity": "sha512-xdQnfykZ9JMEiasTAJZJdMWCQ1Vm00NBw79/AWi7ELfZuuPCSOMDZbT9mkOfSctVtfhb+sAAzrm+j//GjjLHLg==", + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.16.3.tgz", + "integrity": "sha512-WtY7Fx5LiOnSYgF5eg/1T+GONaGmpvpPdCpSnYij+U2gDTL0UPfWrhDw7b2IYb+9NQJsYpCA0wOQvZfsd6YwRw==", "requires": { - "es-to-primitive": "^1.2.0", + "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "has": "^1.0.3", - "has-symbols": "^1.0.0", + "has-symbols": "^1.0.1", "is-callable": "^1.1.4", "is-regex": "^1.0.4", - "object-inspect": "^1.6.0", + "object-inspect": "^1.7.0", "object-keys": "^1.1.1", "string.prototype.trimleft": "^2.1.0", "string.prototype.trimright": "^2.1.0" @@ -3069,7 +3069,8 @@ }, "ansi-regex": { "version": "2.1.1", - "bundled": true + "bundled": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -3087,11 +3088,13 @@ }, "balanced-match": { "version": "1.0.0", - "bundled": true + "bundled": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -3104,15 +3107,18 @@ }, "code-point-at": { "version": "1.1.0", - "bundled": true + "bundled": true, + "optional": true }, "concat-map": { "version": "0.0.1", - "bundled": true + "bundled": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", - "bundled": true + "bundled": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -3215,7 +3221,8 @@ }, "inherits": { "version": "2.0.3", - "bundled": true + "bundled": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -3225,6 +3232,7 @@ "is-fullwidth-code-point": { "version": "1.0.0", "bundled": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -3237,17 +3245,20 @@ "minimatch": { "version": "3.0.4", "bundled": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { "version": "0.0.8", - "bundled": true + "bundled": true, + "optional": true }, "minipass": { "version": "2.3.5", "bundled": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -3264,6 +3275,7 @@ "mkdirp": { "version": "0.5.1", "bundled": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -3336,7 +3348,8 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true + "bundled": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -3346,6 +3359,7 @@ "once": { "version": "1.4.0", "bundled": true, + "optional": true, "requires": { "wrappy": "1" } @@ -3421,7 +3435,8 @@ }, "safe-buffer": { "version": "5.1.2", - "bundled": true + "bundled": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -3451,6 +3466,7 @@ "string-width": { "version": "1.0.2", "bundled": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -3468,6 +3484,7 @@ "strip-ansi": { "version": "3.0.1", "bundled": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -3506,11 +3523,13 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true + "bundled": true, + "optional": true }, "yallist": { "version": "3.0.3", - "bundled": true + "bundled": true, + "optional": true } } }, @@ -3718,11 +3737,11 @@ "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==" }, "graphlib": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.7.tgz", - "integrity": "sha512-TyI9jIy2J4j0qgPmOOrHTCtpPqJGN/aurBwc6ZT+bRii+di1I+Wv3obRhVrmBEXet+qkMaEX67dXrwsd3QQM6w==", + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz", + "integrity": "sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==", "requires": { - "lodash": "^4.17.5" + "lodash": "^4.17.15" } }, "has": { @@ -4273,11 +4292,11 @@ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" }, "is-symbol": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", - "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", "requires": { - "has-symbols": "^1.0.0" + "has-symbols": "^1.0.1" } }, "is-typedarray": { @@ -6302,9 +6321,9 @@ } }, "snyk": { - "version": "1.248.0", - "resolved": "https://registry.npmjs.org/snyk/-/snyk-1.248.0.tgz", - "integrity": "sha512-5rc339ktPNpqFjZHIpiduJT3VGx8G3uXIZG515Z4P/CNtQtl35FB3h2b+CKGz1vtQgOEzNky0fMmu5Wq/xt9Lg==", + "version": "1.258.2", + "resolved": "https://registry.npmjs.org/snyk/-/snyk-1.258.2.tgz", + "integrity": "sha512-SGVl7Wk82YFhemPuJQZvFkNdSefe6HAQcEbXp4AotwPiYPSP0wLNVuOPlKWakOduBB7/zEAZltRL2+0dv23txQ==", "requires": { "@snyk/cli-interface": "2.3.0", "@snyk/dep-graph": "1.13.1", @@ -6334,15 +6353,15 @@ "snyk-go-plugin": "1.11.1", "snyk-gradle-plugin": "3.2.2", "snyk-module": "1.9.1", - "snyk-mvn-plugin": "2.4.0", + "snyk-mvn-plugin": "2.7.0", "snyk-nodejs-lockfile-parser": "1.16.1", "snyk-nuget-plugin": "1.13.1", "snyk-php-plugin": "1.7.0", "snyk-policy": "1.13.5", - "snyk-python-plugin": "^1.13.3", + "snyk-python-plugin": "^1.14.0", "snyk-resolve": "1.0.1", "snyk-resolve-deps": "4.4.0", - "snyk-sbt-plugin": "2.9.0", + "snyk-sbt-plugin": "2.9.1", "snyk-tree": "^1.0.0", "snyk-try-require": "1.3.1", "source-map-support": "^0.5.11", @@ -6549,14 +6568,47 @@ } }, "snyk-mvn-plugin": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/snyk-mvn-plugin/-/snyk-mvn-plugin-2.4.0.tgz", - "integrity": "sha512-Fmt6Mjx6zZz+4q6PnBkhuNGhEX++q/pKMI26ls4p3JPkx4KxBz89oncpkmf7P8YCkoaka8oHhtDEv/R4Z9LleQ==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/snyk-mvn-plugin/-/snyk-mvn-plugin-2.7.0.tgz", + "integrity": "sha512-DLBt+6ZvtoleXE7Si3wAa6gdPSWsXdIQEY6m2zW2InN9WiaRwIEKMCY822eFmRPZVNNmZNRUIeQsoHZwv/slqQ==", "requires": { + "@snyk/cli-interface": "2.2.0", + "debug": "^4.1.1", "lodash": "^4.17.15", + "needle": "^2.4.0", + "tmp": "^0.1.0", "tslib": "1.9.3" }, "dependencies": { + "@snyk/cli-interface": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@snyk/cli-interface/-/cli-interface-2.2.0.tgz", + "integrity": "sha512-sA7V2JhgqJB9z5uYotgQc5iNDv//y+Mdm39rANxmFjtZMSYJZHkP80arzPjw1mB5ni/sWec7ieYUUFeySZBfVg==", + "requires": { + "tslib": "^1.9.3" + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "tmp": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.1.0.tgz", + "integrity": "sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw==", + "requires": { + "rimraf": "^2.6.3" + } + }, "tslib": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", @@ -6664,9 +6716,9 @@ } }, "snyk-python-plugin": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/snyk-python-plugin/-/snyk-python-plugin-1.13.4.tgz", - "integrity": "sha512-XjGmvKMYENFMH94q+GSQz5JzTjgsgapdF0ZcS107c3UzMYeXa2Qd2Du9S5IB+mjvm335EJGcQJPlgFYb/qoeFw==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/snyk-python-plugin/-/snyk-python-plugin-1.14.1.tgz", + "integrity": "sha512-76u10VrYJp0tz7eD7DC5/Q3fBMPlLieOqoUbN67u0OqF1nF7BLnFBnakZ9VbOqYeJyBoloL9+HIMJ5Nma9qLCQ==", "requires": { "@snyk/cli-interface": "^2.0.3", "tmp": "0.0.33" @@ -6740,16 +6792,29 @@ } }, "snyk-sbt-plugin": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/snyk-sbt-plugin/-/snyk-sbt-plugin-2.9.0.tgz", - "integrity": "sha512-R8jfRDkqlSsiSHYNAItKBUKUwb0n5z304Ko8ply/eoNAJMkXbFASDKHRto1v4F4wryJb4Rl1j/vFvIwytqZrww==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/snyk-sbt-plugin/-/snyk-sbt-plugin-2.9.1.tgz", + "integrity": "sha512-+cRFH4uAaoW7NeVLaWmpU236uhe4JRBakNGe+M9UhAswEqDAyFmyzWVU57EAjlzJKLIdh9JPFUvzjntGNs1I1A==", "requires": { + "debug": "^4.1.1", "semver": "^6.1.2", "tmp": "^0.1.0", - "tree-kill": "^1.2.1", "tslib": "^1.10.0" }, "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -7344,11 +7409,6 @@ "resolved": "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz", "integrity": "sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==" }, - "tree-kill": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.1.tgz", - "integrity": "sha512-4hjqbObwlh2dLyW4tcz0Ymw0ggoaVDMveUB9w8kFSQScdRLo0gxO9J7WFcUBo+W3C1TLdFIEwNOWebgZZ0RH9Q==" - }, "trim-right": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", diff --git a/powerauth-webflow/package.json b/powerauth-webflow/package.json index 538c43db2..68886cbbd 100644 --- a/powerauth-webflow/package.json +++ b/powerauth-webflow/package.json @@ -39,7 +39,7 @@ "bluebird": "^3.7.1", "intl": "^1.2.5", "sanitize-html": "^1.20.1", - "snyk": "^1.247.1", + "snyk": "^1.258.2", "lodash": "^4.17.15" }, "scripts": { From c5995ffdbed9c9c1a1b09419c5fccb660f12567d Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Fri, 13 Dec 2019 15:30:27 +0100 Subject: [PATCH 175/197] Fix #731: Prepare user documentation --- docs/Readme.md | 6 +- docs/Users-Guide.md | 292 +++++++++++++++++++++++++ docs/_Sidebar.md | 1 + docs/img/android_warning.png | Bin 0 -> 142295 bytes docs/img/auth_error.png | Bin 0 -> 126988 bytes docs/img/authorization_cancel.png | Bin 0 -> 368630 bytes docs/img/authorization_error.png | Bin 0 -> 155006 bytes docs/img/authorization_sms.png | Bin 0 -> 177136 bytes docs/img/authorization_success.png | Bin 0 -> 155009 bytes docs/img/backend_error.png | Bin 0 -> 113801 bytes docs/img/choose_segment.png | Bin 0 -> 68427 bytes docs/img/consent.png | Bin 0 -> 150745 bytes docs/img/language_switch.png | Bin 0 -> 61002 bytes docs/img/leave.png | Bin 0 -> 66546 bytes docs/img/login_invalid.png | Bin 0 -> 105546 bytes docs/img/mtoken_offline.png | Bin 0 -> 190995 bytes docs/img/mtoken_online.png | Bin 0 -> 189413 bytes docs/img/pa-webflow-demo-app.png | Bin 0 -> 985750 bytes docs/img/reload.png | Bin 0 -> 73205 bytes docs/img/sms_resend.png | Bin 0 -> 49175 bytes docs/img/test_client_authorization.png | Bin 0 -> 141721 bytes docs/img/timeout_error.png | Bin 0 -> 137001 bytes docs/img/timeout_warning.png | Bin 0 -> 122597 bytes 23 files changed, 298 insertions(+), 1 deletion(-) create mode 100644 docs/Users-Guide.md create mode 100644 docs/img/android_warning.png create mode 100644 docs/img/auth_error.png create mode 100644 docs/img/authorization_cancel.png create mode 100644 docs/img/authorization_error.png create mode 100644 docs/img/authorization_sms.png create mode 100644 docs/img/authorization_success.png create mode 100644 docs/img/backend_error.png create mode 100644 docs/img/choose_segment.png create mode 100644 docs/img/consent.png create mode 100644 docs/img/language_switch.png create mode 100644 docs/img/leave.png create mode 100644 docs/img/login_invalid.png create mode 100644 docs/img/mtoken_offline.png create mode 100644 docs/img/mtoken_online.png create mode 100644 docs/img/pa-webflow-demo-app.png create mode 100644 docs/img/reload.png create mode 100644 docs/img/sms_resend.png create mode 100644 docs/img/test_client_authorization.png create mode 100644 docs/img/timeout_error.png create mode 100644 docs/img/timeout_warning.png diff --git a/docs/Readme.md b/docs/Readme.md index 680aacbb4..a492c3e18 100644 --- a/docs/Readme.md +++ b/docs/Readme.md @@ -22,10 +22,12 @@ Web Flow can be integrated with anti-fraud systems, provide information for frau ## Overview +- [Introduction](./Readme.md) - [Basic Definitions](./Basic-Definitions.md) - [Components](./Components.md) - [Web Flow Architecture](./Web-Flow-Architecture.md) - [OAuth 2.0 Integration](./OAuth-2.0-Integration.md) +- [User's Guide](./Users-Guide.md) ## Applications - [Web Flow Server](./Web-Flow-Server.md) @@ -46,6 +48,7 @@ Web Flow can be integrated with anti-fraud systems, provide information for frau ## Deployment - [Web Flow Installation Manual](./Web-Flow-Installation-Manual.md) +- [Deploying Web Flow on JBoss / Wildfly](./Deploying-Wildfly.md) - [Database Table Structure](./Database-Table-Structure.md) - [Migration Instructions](./Migration-Instructions.md) - [Docker Deployment](./Docker-Deployment.md) @@ -60,6 +63,7 @@ Web Flow can be integrated with anti-fraud systems, provide information for frau ## Technical Notes +- [Operation Data Structure](./Operation-Data.md) - [Off-line Signatures QR Code](./Off-line-Signatures-QR-Code.md) - [Web Socket Communication Protocol](./Web-Socket-Communication-Protocol.md) - [Used Push Message Extras](./Used-Push-Message-Extras.md) @@ -70,4 +74,4 @@ Web Flow can be integrated with anti-fraud systems, provide information for frau ## Releases -- [Releases](https://github.com/wultra/powerauth-webflow/releases) +- [Releases](https://github.com/wultra/powerauth-webflow/releases) \ No newline at end of file diff --git a/docs/Users-Guide.md b/docs/Users-Guide.md new file mode 100644 index 000000000..c21edf06b --- /dev/null +++ b/docs/Users-Guide.md @@ -0,0 +1,292 @@ +# User's Guide + +## Introduction + +PowerAuth Web Flow is used for authentication and authorization of various operations in the web browser. +The most typical use case is protection of PSD2 APIs using strong customer authentication (SCA). + +The following operations are fully configured by default: +- `login` - user authentication, in PSD2 terminology an `AISP` operation granting access to the bank account information +- `authorize_payment` - user authentication followed by payment authorization, in PSD2 terminology a `PISP` operation initiating a payment transaction + +These two operations are described in details in the following sections. + +Web Flow can also be used for additional purposes, such as: +- user authentication and consent approval for providing user identity (the `bank ID` use case) +- user authentication and payment authorization during 3D secure operations when paying online with a credit card +- any other case of OAuth 2.0 or Open ID Connect (OIDC) standard based authentication + +Documentation of these additional scenarios are out of scope of this user's guide. + +## Operation Steps + +Each operation consists of multiple steps depending on configuration of the operation, such as: +- `user authentication` - user specifies the username, then enters the password and SMS authorization code or alternatively uses two-factor authentication in Mobile Token +- `payment authorization` - payment details are displayed after the user was authenticated and the user approves the operation using password and SMS authorization code or two-factor authentication in Mobile Token +- `consent approval` - the screen shows consent information and consent options, the user either approves or rejects the consent by interacting with the consent form + +In order for an operation to succeed, all defined steps need to be completed successfully. The user is redirected back +to the original application once all steps have succeeded. In case any of the steps fails, the user is redirected back to the +original application with an error. + +## Authorization Instruments + +The authorization of individual operation steps can be performed using following instruments: +- `Authorization SMS and Password` - the user receives a generated one time code (OTP) in SMS message, which is used for authorizing the operation. +In order to satisfy `SCA` requirements of two-factor authentication in PSD2 legislation, a user password is required together with the SMS OTP code. +Note: The requirement to specify user password can be avoided in case anti-fraud integration is used in Web Flow and an authentication step-down to +one factor is performed for given operation step. In case of non-SCA operations, the password is not required, too. +- `Mobile Token` - the user receives a push message on mobile device and authorizes the operation step. The authorization is performed +by one of available options in the application and is protected by strong cryptography: + - Numeric PIN code + - Fingerprint verification (Touch ID on iOS) + - Face recognition (Face ID on iOS) +- `Hardware Token` - integration is not yet available, however it will be available in a future release + +## Authorization Using SMS OTP + +The first SMS message is sent automatically when a step with SMS authorization appears. There are 5 attempts to enter the +OTP code which was sent in the SMS message. In case all attempts to authorize the operation step using OTP code fail, +the whole operation fails. + +![Preview](./img/authorization_sms.png) + +The user can request to resend the authorization SMS after 1 minute after previous SMS message was sent. + +![Preview](./img/sms_resend.png) + +The OTP code is generated as a hash created from operation data with a random key. The digest value is digitized into +8 digits, unless the code length is configured otherwise. Each sent SMS contains a new OTP code. The original OTP code +is valid until a new authorization SMS is sent. + + +## Authorization Using Mobile Token + +The Mobile token authentication requires an application installed on user mobile device which is paired +with PowerAuth server before the operation is started. This process is called `Activation` in PowerAuth terminology. +Furthermore the mobile token must be configured and enabled, see chapter about [mobile token configuration](./Mobile-Token-Configuration.md). + +The Mobile Token can be used in two modes: +- `Online mode`: used when the user has internet access on mobile device, the operation is confirmed from mobile device. The user does not see the authorization code, it is computed using keys on the mobile device and verified by calling PowerAuth server directly using a two-factor signature. + +![Preview](./img/mtoken_online.png) + +- `Offline mode`: used when the user is offline on mobile device, the user scans a QR code and retypes calculated authorization code. The authorization code is computed using keys on the mobile device and displayed as 16 digits separated into four groups for easier retyping. Once user retypes the code, the web application verifies the code by calling PowerAuth server. + +![Preview](./img/mtoken_offline.png) + +The Mobile Token calculates the authorization code using a two-factor PowerAuth signature which signs the operation data. The authorization is completed +by successfully verifying the signature in PowerAuth server. In case signature verification fails, the authorization can be reattempted until the +maximum number of tries is reached and the operation fails. + +## Consent Approval + +The consent screen displays information about consent which should be approved by the user. One or more consent +options can be displayed and the user needs to check the required options to approve the consent. The consent +text and options differ based on operation (`AISP`, `PISP`, etc). + +![Preview](./img/consent.png) + +## Testing Web Flow Using Test Client + +1. Download and unpack `powerauth-webflow-testing.zip` file from the [release](https://github.com/wultra/powerauth-docker/releases) section. +1. If needed, modify properties in `application.properties` file. +1. Start the application by `sh start.sh` or `start.bat` command. +1. Open [http://localhost:8888](http://localhost:8888) in browser. + +You should see a demo app that has following features: + +- Login demo - user authentication for `AISP` (SCA and non-SCA variants) +- Payment demo - user authentication and payment approval for `PISP` (SCA and non-SCA variants) +- Operation authorization demo (by operation ID) + +It looks like this: + +![Preview](./img/pa-webflow-demo-app.png) + +## Generic Behaviour of Web Flow + +This chapter describes generic behaviour which is independent on chosen operation and chosen authorization instrument. + +| Behaviour | Screenshot | +| --------- | ---------- | +| When all authentication steps are successfully completed for an operation, the user is redirected back to the original application with a success message. | ![Preview](./img/authorization_success.png) | +| In case of a critical error or timeout the error message is displayed and user is redirected to the original application with an error message. | ![Preview](./img/authorization_error.png) | +| Each operation can be canceled any time using the Cancel button. In this case the user is redirected to the original application which triggered the authentication flow. | ![Preview](./img/authorization_cancel.png) | +| The user interface should not leak information whether user account is active or not. For this reason the authentication form appears active even for non-existent users or blocked accounts. | ![Preview](./img/login_invalid.png) | +| The error messages should not leak information about which authentication method failed (SMS verification or password verification). Thus generic error messages are shown for authentication errors. | ![Preview](./img/auth_error.png) | +| In case of critical errors (e.g. application backend is not running) no details should leak with information about application internals, only a generic error message should be displayed. | ![Preview](./img/backend_error.png) | +| Each operation has timeout of 5 minutes. The timeout is reset back to 5 minutes every time user performs an activity such as attempt to authorize the operation step. When timeout is exceeded, the user is redirected to the original application which triggered the authentication flow. | ![Preview](./img/timeout_error.png) | +| A timeout warning should appear 1 minute before actual timeout (after 4 minutes of inactivity), unless the user extends the timeout by some activity, such as authorization of a step or failure to authorize. | ![Preview](./img/timeout_warning.png) | +| The user can switch language during any time and the page updates to reflect the change of language. | ![Preview](./img/language_switch.png) | +| The user account can be `Personal` or `Corporate` and the user can switch the segment in first authentication step. | ![Preview](./img/choose_segment.png) | +| A security warning should appear when the application is used from an Android device. The user can override the security warning and continue with the authentication. | ![Preview](./img/android_warning.png) | +| In case the user tries to refresh the page a confirmation dialog appears. The refresh action interrupts operation which is in progress. | ![Preview](./img/reload.png) | +| In case the user tries to navigate away from the page or close browser window a confirmation dialog appears. The navigation action interrupts operation which is in progress. | ![Preview](./img/leave.png) | + +## Login SCA Testing (AISP) + +- AISP contains only a user authentication step, there is no approval step. +- AIPS contains a consent step. +- AISP operation can be triggered by choosing `Login SCA` in the test client. There is no data required to be signed for this operation. +- The very first screen is used for entering the username. + - If the username is empty, an error appears. + - Up to 256 characters can be entered into the username field. + - If the username validation fails, an error appears. The validation following regular expression is used for username validation: ```^[a-zA-Z0-9_\\-@./\\\\:;<>!#$%&'\"*+=?^`(){}\\[\\]|~]{4,256}$```. + - In case the username validation succeeds, the user is moved to the next screen. +- In case the user account has a configured PowerAuth activation, a Mobile Token authentication screen appears. + - The user can request a fall back to SMS authorization. In this case the initial authorization SMS is sent after clicking the SMS fallback link. +- In case the user account does not have a configured PowerAuth activation, the SMS and password authentication screen appears. + - The initial authorization SMS is sent after clicking the Continue button. + - The language of the SMS text is based on the language selected in the web application. +- In a real implementation, in case the user account does not exist, the SMS and password authentication screen appears and pretends that the account + is active to avoid detecting which accounts exist and which do not. + - In this case no authorization SMS is sent, however the application pretends that the authorization SMS was sent. +- The user has 5 attempts for authentication using password and SMS. + - Up to 256 characters can be entered into the password field. The typed characters are not displayed, an asterisk is used instead. + - Up to 8 characters can be entered into the SMS authorization code field. +- In the default implementation any valid username can be used with password `test` for successful authentication. +- The SMS authorization code can be found in table `da_sms_authorization`. You need to order records by `timestamp_created` column to see only the latest SMS OTP codes. The SMS OTP code is stored in column `authorization_code`. By default, you can connect to it using following credentials: + +| parameter | value | +|---|---| +| URL | `jdbc:mysql://localhost:23376/powerauth` | +| username | `root` | +| password | `root` | +| table name | `da_sms_authorization` | + +- The same authorization code can be retried up to 5 times with different or same password before the operation fails. +- The user can request resending of SMS. + - A new SMS record appears in table `da_sms_authorization`. + - The previous SMS authorization code is no longer active. + - After sending a SMS the link becomes active again after 1 minute. + - When language is switched, the authorization SMS is not sent. + - The user can request another SMS which will be sent in language currently selected by user. +- The error message is the same for case when password verification fails or SMS authorization code verification fails, +so that it is not possible to identify which value was invalid. +- Once the user authentication succeeds, the user is redirected to the consent step. + - The consent step has one option and can either be confirmed or rejected. + - The operation succeeds only when the consent step is confirmed. + +## Payment Authorization Testing (PISP) +- PISP has an authentication step, an approval step and a consent step. +- PISP operation can be triggered by choosing `Payment SCA` in the test client. The payment operation contains data with payment detail. +- The testing of login step during payment is the same as in case of AISP, except the next step is an approval step. +- The approval step contains information about payment. + - You can change the payment details in the test client before triggering the payment operation. +- The user can change the bank account from which the payment will be sent in case the bank account information is available and user has multiple bank accounts. + - It is possible to complete the approval step even in case the balance is not positive. +- The user needs to approve the payment details before continuing with the payment step authorization. +- SMS authorization code and password verification as well as Mobile Token authorization are identical to login step in AISP. +- Once both login and approval steps are completed, the consent step loads and it must be approved. + +## Operation Authorization Testing + +The `Authorization` option in the test client is used for authorizing a previously created operation. + +- A custom AISP operation can be triggered by following command: +``` +curl --request POST \ + --url http://localhost:8080/powerauth-nextstep/operation \ + --header 'content-type: application/json' \ + --data '{ + "requestObject": { + "operationName": "login_sca", + "operationData": "A2", + "params": [], + "formData": { + "applicationContext": { + "id": "democlient", + "name": "Demo application", + "description": "Web Flow demo application", + "originalScopes": [ + "aisp" + ], + "extras": { + "applicationOwner": "Wultra" + } + } + } + } +}' +``` + +- A custom PISP operation can be triggered by following command: +``` +curl --request POST \ + --url http://localhost:8080/powerauth-nextstep/operation \ + --header 'content-type: application/json' \ + --data '{ + "requestObject": { + "operationName": "authorize_payment_sca", + "operationData": "A1*A100CZK*Q238400856/0300**D20170629*NUtility Bill Payment - 05/2017", + "params": [], + "formData": { + "title": { + "id": "operation.title" + }, + "greeting": { + "id": "operation.greeting" + }, + "summary": { + "id": "operation.summary" + }, + "config": [], + "parameters": [ + { + "type": "AMOUNT", + "id": "operation.amount", + "valueFormatType": "AMOUNT", + "amount": 100, + "currency": "CZK", + "currencyId": "operation.currency" + }, + { + "type": "KEY_VALUE", + "id": "operation.account", + "valueFormatType": "ACCOUNT", + "value": "238400856/0300" + }, + { + "type": "KEY_VALUE", + "id": "operation.dueDate", + "valueFormatType": "DATE", + "value": "2017-06-29" + }, + { + "type": "NOTE", + "id": "operation.note", + "valueFormatType": "TEXT", + "note": "Utility Bill Payment - 05/2017" + } + ], + "applicationContext": { + "id": "democlient", + "name": "Demo application", + "description": "Web Flow demo application", + "originalScopes": [ + "pisp" + ], + "extras": { + "applicationOwner": "Wultra" + } + } + } + } +}' +``` + +- Either of the previous commands returns an operation ID which should be used in the authorization form: +- The AISP or PISP operation authorization continues with same steps as an operation triggered directly by the test client. +- See the documentation for [customizing operation form data](./Next-Step-Server-REST-API-Reference.md#operation-formdata) and [customizing operation data](./Operation-Data.md) in case you want to test an operation with custom data. + +![Preview](./img/test_client_authorization.png) + +## Non-SCA Operations + +The `Login` and `Payment` operations in the test client do not satisfy SCA requirements of PSD2. +They can still be used in scenarios which are not regulated by PSD2. + +There are following differences from SCA steps: +- The login form contains a username and password in one form. It is not required to use two-factor authentication during login. +- The payment form contains a review step with choice of authorization options. The payment approval using SMS OTP code does not require user password because a single factor can be used. \ No newline at end of file diff --git a/docs/_Sidebar.md b/docs/_Sidebar.md index 268df965f..d6662496b 100644 --- a/docs/_Sidebar.md +++ b/docs/_Sidebar.md @@ -5,6 +5,7 @@ - [Components](./Components.md) - [Web Flow Architecture](./Web-Flow-Architecture.md) - [OAuth 2.0 Integration](./OAuth-2.0-Integration.md) +- [User's Guide](./Users-Guide.md) **Applications** - [Web Flow Server](./Web-Flow-Server.md) diff --git a/docs/img/android_warning.png b/docs/img/android_warning.png new file mode 100644 index 0000000000000000000000000000000000000000..72e03a26efa45bfcfb35f139d01a164ad51e1202 GIT binary patch literal 142295 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͖CMe)lvUApRY?f&r(A`xU>>@QnH!BU&=Y}NfXb$50Y!?g|qkJ zi6x%m_4a+wgA&gTf;j&BUqv@(GCf!rHR^N}bB!aa6b22ySY`Yu5i8m(#?_a7VXG7| zlYcS`JG!C)*|?tvRq3?W-Uz%s=5qHZA##8MTuhIYgd;Ko#4u)~*#;Z1vM2g!FU_?! ziw@h-Bv5sfvAl>-NHjYJ!I-Z^OSYL<;~2rF^6Z?K6XK3YM)Wh$147nbp4R~$SUYeF z)kD3U?C!PRaLnLasKq{)33FJ+N@r=kI+%Cfwm1)IpOPLp{Vt@L2e_}of5mGQjGwQV zBWi}Y{LR^~&{x5*p_6tJm`3jPi4WYHq{g`2ZoNaE6ZIwX`C0900ckKtV`s}Hyu6+_ zPPnRpSB9e{nDzWBkq?!q@8uRNb>0kxYQePWtmms@Tl^~>;gh6W_HsN&Azuxgwf6Di z0qRml)J$q=cJ%m0Y=YI%*L%RgsrxdO4qH)T0K!ktwZ4(qW@W@8HJcn>iDcPqlsUJq zlRc!?<>p8Cs{~%Ah)lI0bgFpR#wfC8gT5bHMD0SPoL7@LZa5_a{CyZNqL;do>U!Yd zq|wk~N7cqI$3ssh)8#S_MnjvbJB5(J1Q)_ABp+Xm!KwgN z>*Dt|9_Lk+H!2h+NE^UO1dWt8AidXe4Sk>570?rI)n2y{FBM7dHex2}3baO;-RgtanyfF=7UHaFDUif7TUg>Gh;Z4C_U6AOL$| zVI`VFZAqh)En}5&y9!TbH5kbJ*vRk|SefJFTXdm;TxGLNOzBWo^X6=rhb_?swJ67 zm%%wZ4IYhZA8qX87{#M6`b_%4Zv@`Dk=vx&>Iu$TUy);Wgkk#1G7@Xc{;Q8`1P>^B zQD{rB9dnJ;$W=;ZoThQ#4BPjdPbOMBRdI(yV!C-Z-_@r05@xts0RuBonn=?7>)!r= ziqpB9^#huvv|47!WjnIdIJIF?9*<>a%xv8WdS+%>K9Nc49((2A7Tg2PyV=u!*@)nA z*2|}hKb0+|U_74P%VOT!OB0y#{o9;7(F067Sx~mdR!uC{M!PRwoSmVBnOr&D!rA;7 zy;{B{r(FjuM$uTOyS$PLFO;KofF@G{1G;8^jUuh$cY(@O<7S`9rLl83mAnE$%l@t; zh4D+;`dmEo9|rDuIGWXO=;hFz$`4|)Q(~f~L+a)EgbWhDkK6)46XA9crYBye7ZP{~ zM;oukmk(g=Ig^e4?Tb%nIf~TxzWwlH^h^f!n8mS7O<3DT(KV~-fe81oLB8Sky7~nm znTdaS2pqQ>NuR9NgxA^%Sg$v(g^yJGYRu_>UE>D!ygL@|X<1PiT5P(= zv7k6~sC1>J7B!>pS$>&6P$Jx5U2r_j;@bxI=ak)*0ts`m^(#D*OudN{v8TLsy$004 zK9Iq;9j&Xy=8U8lukCG*_q(GEPB!O9bSs&EBh)}at0u*aj|(ukGa0>)QCv;ELSu;; z2^}kCSZ`zD;*&AT&wf~Ieyv+SPp|g=laD1tm3b2B{MwkyuwS_v@-2%B38E96oq~f@ z9!8pln1xVSg%CfE1MBxu@Tc0wRr-5K(MgDG0#R?6(I zefJN-xAfJ!@fq&s$Uf~!H@qUg*H$Io_wk-umBrvxB{?$)OwJKA>--4FI5w*zJkb}Q zk=Qq!-hmRmNTW+hWVL?(LCt?mD4fP8V@Rb7zEqIV!{V++nTQ+OHN4@jEZe_;->2HuFb7!97DT<$xLCfejs z`@{5@lTBJcQY*>Lsf|nZ{=by~PbgGy#CB6+mKp3%HLhy_Ki8iK3V*hG8#H#9$5G4cEQC-&`47;X0Jw@S3@}9ZRVO(A|psBZaqx zV9%94czPV=-qLL|MA%!qp$6(MWbB}4y1v}0z)lDVmH!kJl?RNwJVF_UbPmMd?^2L|G8)x-U1&Ku!aYBEXyUd)#ltc}!X9 zKM=_SD49q?+5BI87WACuqAizwLfXYzAfu+jcMC>6g^I4Hg9Vti(JmV?u(#X7Y2C(2 zrL>sZ3Gx3DLnl_!g~QTux6pmPeqDb*m92Jr(B_}}0hx7K06jWJaHtNVoDF? z65=HE`Cf-_0i>$FL|{_RH8fh3j@%?;vuq912MDN3d&B^bzs$~i zs-FK9@KPm0+8U;AXWWGK4xUGu$QIIn$Rs8UCH^z}44a_$aDIu{r-z_N!`jd8O>diy z%IkgGj32LZXH|r9;xP69{}7u#AT&erFtNh_M)Fwwhfv~EW)e0Bpu}Y;_9P1Z+$;>A zT`dQ064ft&blU@?k50`)sM#!8dt zm-*`Ixg3^f71=YY)epx!1mkaD)<4(3vV^$7QO{ZsWh6~T`T|s61uUNbgKa>C%=Ojm zl5~#useXi2*#U}H=?CHNHE~n4( z$+WYjyVhGWN=+MeG&oh(vG<2yw+hpc86@)~Zn5>T3?&kzmdP+NrIFpmdT7lBPtuDA zB#PH0YkyD!Q3$$=J+uPvUTZq{d zM^vL-oC@=u1fhE>nJ4c;pf5GJJu89Ji<$a~AFef?e5Q2CL~uBVsa9+$-qzzk_|phK6RTpl>ut*WmRl$}INF!jnstYthXCvfz9Z4P@o zdh~uHLU%_b7CEMro*aGM*ro9vM5*A4Wdj(6b?-nw*JDI|()n>$ff z@xOF?Y$4)^^}uhft==zYuf^Y$C|FO|#vdR*9zz5exhEg|Y9&%UgTbx_NRBTm9BLAQg-B!KaX}p<(7W-H%rP|In9{Yh|uyH7Iio zs}C3US$mnK8JXwM8=i)PQ{tz`>xzn(iHqH9bE!|42V?3RYg!uq0mmw}P96X#K%@&t{D3)A@f?on=^*UDvP&hEORL1?d)$?jBI2 zyQO;&Vd#b#1`+A*?h>WDyE~+$W9aVk8}9depXa@g>mPq+m}|#cd!Of8HV+8z2MhZ< z|Eb{Hb=&Dze;dMFn-zDD+j$=#_DvyI>pX^Rd@CTs5jL26q<+G3WbPL~iB9>~M^Bt# zc4c4{F`T|;Qr+&sV%m}Gn1t(hO`d1-_%d$vQ}{{ zxTNmtS)8uZi@G}^kp>5YFhTi)Hm?7^tS_Hh&00MdPt%4{54{jWOa{k63U~97RckfL zBO6vKVqMo>E^-|eM&BH6V$Dai(v?08cT|Fwy73nu7z|5H#|u>Cq~B21KaEAfHrP0P zlCcLa{&q2y&8K180$@LW8c@*NFQP$AdCaYH3shIu0B;sOu}5KLtjHxa6cYUvBD{g~ z*EswTcG(bou7N~HHq$N}5eYs5KUXl8{&yrZTA(~6iHaZF5`OFh_^xg2+l!sV*rst^ ztn@xhKZR`1uSQLCTqoa(QqUcqy*20yEu{8&mXA)IS9*xb!onh!qY7@r=T2;u@$T+8ZTy? zsWPzQq|9*aBi!LQd80LA> zh99APd3AGwtW|6(+U&a;D0khob${{=F=$CdUqOOD9`%Nf{?Axu__}ouDlfiU@;j|w zad0G8xs^87)+^50A!b{m9}1PDRJVrKuRtXm@t7#$S0nw9&KzSO8tshJ zqT|bXF|@?v7AvtxN8#H(>BTgutI`-wYSHUn5qxC^%5jt6%$4sOdP%a?EsUq%GaHXQWYP$bNH?>i_=(*vB9i z*TTmk6MrUx3M700LX2N6B6CD>k&#ziT?&oS`P~x;5&jW%O*W>L`>=dO6APM_F%I38 zcwn;Pjwk91F543Mm{&D}<cn#T&xY$C#$9}T)jJgTA@C$7l< zvm+t1tR(b)zk?f<2O*HK6zc8Kx^KS8%~8FPCA7JU)KVrqh165qs(JlsxG*HR?*Lo+ zoevv+ z0sjtK`%t56Sfuo>SFKVz`Qp6|ueI&17LR^~UwOFi9trBhVy>L|x1o)-+cgnCSn(s; zl#Q|(M=ko-MgTGlhu;b>tGSJ@2%mFusT8b2hWFnq0!4q+YJPgy3+)Nt`hVN~j; zKr#sbeL8fFzCLS!Q^7#ZGw$t?Nwr6B$(LaEk&!gbN1M`$6fTRWLQ+tHs}4tSX28vt z*IyYXi^!4<6po7Rh)@}x>|wngrvG|OOS<^r6}5DNf<(VX5R5Q{llEC#^lVb1_V<4W ztkr-e1I1?2y+!Lg4hmB5)XA&k6nc@n)mytOYNoqYnxb$l?{S(U(eLz}2nxqaFSS`& z9}lNGjnX!BLoAKA;r!`*8pCxhH%qE3jD=ii*+c5G#$pY5s#)7BYhSp+?e6h*Tc z8F7}0{<|o#GuzQ(9i>J8MW=PCz<5R5?an}%g*P#ATUn^=^NueuyXe^_r{8B4XJq{G{KePYhf3M#nCfr`sdyvw6Ur5|`=o4JG!^o3R$?$}#Uh zlD!7~D>}^4ri2MRBqS3Us9kkluIM*6%^35+{yrCAWRm*Bb4Wc(NSm@mlV!LsxBZHx z)fi}d;_O_|NCqg>j*+#kLf1L5wAaWxm5htJamZ34lGFa>#a5R6eMy4&U;h#}R*Vp@ zN-3Q#9`5P@8GgDcV)fF<-@wcbe|kVpFU+mxSPqY%m&2WOSHk5jkJ+$w$hRlSoP|4j zVr!w)%*sZ21M`G0i3S!EXHBXYUHgSad^)qndwrFOH)>-v%3_z9EFLfD{`1&LW69gN zq0%9SzLb9CF9o#EkR2meT_1%eSG=T?sB?u(VGrFWSmff<%yFB*Y0hL%GwIu zF4y#LI|HOE{~f2sK3HHMa%Su3Qi`qC1{R1Y(ed%g863^qX=|+ul6_${nJ1#7DkM+D zOq8l(4S!EB0oR|X(nn4qOV_q4y3uqYn=+2nw9+G?tW19gki zeDsn`eh=*K{FN%2l6=FhTo&3w+*h62nEb=9R+~h`FZNq5$`kYxE!5uXzs=4`JI5u8 zEo;eDaVr{pQXEs**y(x%RwVmZz@Poe=%i6C41m`2?J`>9p@j|u|7TmUS9Hj!oOGIg znm&u_0k!vV+G)KI{feDrwi4~r9~urgye5}?a5)N=sKyNt>BVE`jrF7 zC%P&m(4r)yH*~M}F#IWfi*P=DcBlS#eLAdVG}<8#^fTtKs75>VXmclOH0NkKJ2fG5 z^78M>;HjDhCZizmxDAoSD(N_yb3IA)#d?r{HQJ_qL4hwj~<-^f$>~ezV zgYolXPR^UbFFOf|0$u-*)FeyIu|C*U%iVUZCBQ;G+A;mGo*4}qfoJo_`x94J0=xfk zqw#0(KTD)5-0Gf!p%-#9zsBaA_@h$Ioq|lCHsBRr}XVSfw3x_x9 z6J?uoW?R)zkf7H8$z*$x*FDLiRk98`m}0%#_tx!U$EN}p_R#C`XoAHYskBoNgv6VT z{@Sr~DeZ%xt9G+C+Q@4rb`D3+pGl=pI(6>=@`Q%VrkXIu0*Te9ulX&n#pUX#H@8sP zI6ehq*`a!PXh(7&LHGYYn7T&Czbd?kUllcXCe_l9T$rms}ZGTiMddavdvXGa8`Qcs`3G^+KwD)3*d{3C1|? zFH3Q{xtml?cm4LS4cypgQ)#H4+h1=GFeq^95&?3(bH8&)|Ls2@I&zBNE+J4IO;t%dx=O$---C*WaEz*x`ibSYq<2@|nEncNy*RRvD z)g23{nBB+eC`@3~rQo=J3h3aN!~f?1bAr1mEht&g!2shY}Z>$?*- zwY~Q8Z)_o}zlQ4f%@WT6ul7VNzhcDsP&HU7~fIdz0b-j%6M9{r-T&NWIVhalWn}(PQBG%B#mLDc>#XvK5=2F_QHVDQo=T z9=>lngdX~7a$X<0k9aD6(k5*Z3ix}!^p_Vm0qYP4l-K!+kUwt-!o%r5hp(`EbdijM?bHjLIEjX1Z58O4vNhz9~hQPAM_1 zhKMjnHWrfWKPp(o<=6;Kbl*EYqKLbUyv-U64Vrw7p)ztZK{~9iF`>7d-sH?}hD>SC6Y#&*mEFU`=+>kLNA9Mh||QZNbS{O+}2^-(Vsl`_fhcM77k< z>xC()>p6cdR8JQsEia!K@gma(!sx_JRh@zB}$ zSYnC`V+sQ2Ft0(LS|q((U3Z##*!W0e6W#hm;oXno{c_4U<*lhx@Ix7>tPA2F*4lH( zWzx5FL^9u&r`zcd+p$15!55D+Fo2VW#>KSfQDM;8bN}H3oDMFYJ6JeysTo3e4I>&y zjQDxq^aRJFpGh@Kd0qvTTm=nTz&0&3(Zd9*H@}}@@YS|$QsKEvS3x-kk214EUc|1% zJgk0nC9_Pe0>uiZP3*ZNf7JOQW9cNNLqsl}(iLe(bZyFIX;q!vUl>-n2= zqWmff88ps2i9QVSonJL9T6rwDI_w-t`sZ4k9(ps8ZV-?ves_)JRELC+hHjEJN0E=y zPo$^y_eUx21)ujRUvm0QVfvij$}_D3b3DZ*7C*|q$Ii^Z#+w38cN%Aa>2#nf1~5znA^RYam=u+?m+5`4x z{6S|5`Z;nmrpZk?Qa$%OA7R$A81t7WeNW2h7Gh-(5D0VQy}f?5<2jALupoolEM`?n zZzCndLVsi?Qog>_M-YXL;)IH#+#P9(8c5wAQf38vT#=5z++x;}3Yf?)8f;cVAv69k zs$&pTZ=BR|VYULV=b#uRamAU;>*%tY@w>QJnQy&7l$@kDOROB;&A6`i)$ykvvnAwZ z9q)NNqU(QZEP(T8#ID<&oJD57{hX0E*k;&Q=f7xcp&-KgyJ7fXe(Gm<<>y>sDUZET zf6lAs?J(`qDo$Zu=Hn>b1fjXi5{!$txfzRW`Xteyn1GJ&8s;*(7ld1$el}xJn;$hF z&llgYxjk}wlw}dmWi_f_778UjDNfME6^ zI;}h)$~JBi_SfF!gBi1gBI<4>k$X`3s_cWr)%l}jr*Y#;akq@h7Vi0HjTecPFEygb zI$@x#-yzqK(@oE2gy#J-VtU69SI+p4VV`cv?*8?6|g|Q$IT;z8V674R50#Y(1OXl!S}{l&l5uLV?vGm>6VA{t|-AmM??C+);vy6GSk16 z!7&pxWk_;p!QeD$+M4`!rpE>e4@_&k)StzFemD@}79qS%n6v*`X|JX@zkEw9eI{_Y zkme|>vC?Ye@|FH^zJl}!w&i*NmaR4Q@VT-7xdGqx5>ifOohD$DHOyp7^{Uo)70icp zuktY1>KYo}S#pi3coh4NuJM|wt&-`|NX_Z*OV>)h z=u`XCm6pv<_8WKi)GQ+GB#VMSIrAALSu3~9xH@!J*ruHpU@q#Db0G59a_M_KQVbB$ z1^|qJQn86)ITTdA$*d2!YIZM1&sdc?B@XY?ASf>FA4*<4%iHPIs_WP2uUnQlkoQ4R z?4^uADStVyCAfnODiG6Ym^Zs;C$ssdBuL#Wmqvfv1fmW7dvN$*<2Ynx;CT8d!to?T z{mmk5D(H-|qzq8_xOh=rv!I7Oy)71OMxy0R&ADV%TtHrTr1o4SXE^ZQy4BuMnshc4 zDYX6LLigX!O*gxoK62x)!Q#FND5*F!gj>BC-bK0#UrrxIwGAU=wDynzZjGzfSFQFg zOY|Ta)Dt?_5T)Ek7E3VJpN^42)pxkG6&<68j?>2uJvyuor#;?xJsJV;&+tJj_`FC@ z@9(F^6GYN@AI}Za)ZTKS1@BA-lJAitK1AGu)&T*n-N=0>J??Hs6e69I`2J#=V7&Wg zSB*%^uwSj(s?aN=3sC{ut>B%m?dEv~FY0(yKI5Pso|jpZhXoJ|T@igl-bu+y&zrip zPLBCQg;sx4SUf9o9XuT-p7)qBUOqa$KNd=tDDKB7UR$*S-QD^sb6RCAFI$icw!v~P zCP#Z~F!a-f%ZfP(^n-VQRjJpzz53!3A^ljthYQ=k)nJr1jYSU!xx9~{H-|p)j-0*J|#tX7Vz(0a6hL-O#9#XZO6g!44T|&`0 z`K40_$U?%bHW4yP9^;#@OWe9PAN|0A_e2S{ZXG0=nCn{$G6^U%^ee_8#Ri+XG}EA7{FmLH=;$Px$F7lj0_GND4YB6|1IPeS?&|ZRfq#_+Z%+ z)WBn;oD)9e3Y~Uk@dZ84R4i`OUAp;Ath{~k=yv8}DLW#|HIz7Uihc2<+8^^L$AfN( zTcroTPZQ4%_IR8sZrevpEhkLLkD^px{Wa3vUMbHPBw>#2lhM(VQgZKC`@y=?<6ir4 zgLPZF_Lxk?u@)m}$d3btvdPa2auth7uEf122rTc}YUoe?)+pF)k1<3%2 zL6VgO;*1bVTGk*)%$Iil(;}8^>+10hkO(sNT&>JmneH6`)vY|oTE6{i=EU{dpN2tL zVgY}}2(B6NBHqJGU^1Auw==RWYn^>4CTA#69sQX}H?+oO8j?30nnY^M$5hb2D0ptI zo1QI~o_t`UiA~g(|LBV@E-t)bDBXV#|K7KtvduBM--I3?6T(&q`-{7A%VEfwX>vM` zOt*M=>sL6M#|GYX!K{mvEcEh}03^w8q;AaL-ET&Qdzqc5uZ7N*-9DCwQKt~vDa9N4b!F33mSRziDPvDMakez^z$?Tk@0;aFJJ^jYPeeC*VPwY z`5CG<7R)gi@NMgxt%XJY+y+uzPoHvD5L7PEk9vAHx}uA8xQlR*TF;0sSV5oA#Yo)4 z9K7m-=Vc@S5PMQn*x;M=}!H`ap1X)%W#VGwlJM$5*7byG$U~<~9bbo+8o*S8qLtGNm(_BZe zmo4n#{pg2tp1sa!8=7N#SY^{px$71w4;7euN>cmQdQ{EUe+JbKZ8Joro0L~F?WF_D zA9w_b_Dxn9X2!TC*X}C#?exr>A%bnu!f3$;MK~>4-?Y*(nakjBsmcA)H9Nz<(Zn{* zlWLN2eqJAneRyY^lMHRv#=Q*ex$r&x!{xdg^7ICpp_iO_)(wyrCAr03d2NB>HKogr zV8oogp3<{ftO>Z3nlRCmk?()3JJF@vfq7R zB4+YlZkB))uMdJy-nvR2+z7;$AODDC#CNBb^&N!M3}XkPP%Tr|2RKTZNus&EaM7~< zF`XKLa;Y<2Pw;}LmXX4Zga1eR`>D<4_)3)UYz*p%4HV0;gRcfhUkN9TAQ4VAuE?{B zs@CB5JqYC8utt{*S1XOPQ82by+#a?t3foDY759^e$G~WTNVEH*3nYS)m69N&e{L_b z5IY`83c%ra@RtGq9*(6eX~T81kKgjRLzYp{6nG{F0w=@q_9-uh$hgUDkR=AD$f#R8 z!8aezPSqpI1(cnm4+N2M<%6++fiHc}H-1I2$y7#ik8!Da_H2{D=ZP#v4a!St-zJo% zd>4EO;ls|zTR@9QhY3w;wt9-ZeLGo(b2L?fcs*ChtJtO)+ZcK9)v@XnsAjB`Txfsbb z@!A!W0VUQ^*=`y^7{bI%M}i{`Wu?2n@X8Z8`gw+NQqA>q{^l%1XQt*+RQTcbKU8#t z%wAQsWQTN|=y9Vt?SZ6KH{pKOHwP{r-itSKi9hY$}ZuY0n2+=L>E^&eTx2|DFQ-6CyZNeuD=1%Hq2! z1#otFSP@63tgda6tS)>OUu|_K{zOjfvI}Dit9cpgOVDB}kv~hzNuL;-rC5mgAP?s# zY95uZ8Q7g)+NHYXNg}j=Ev;DP41qQ{O6l@`&L4`t*RDbx76sa|>K<}liQ#v^?XTkG z^4Z!G9K*CXFdpai+~Oz9GJKCuj zV-9jkBT_#@-LR%m6)`PvdT8(*lw4IhIdZA$X$BS3$r(MLyFXFIECG=gE*CE0sl>Sk zG|zosXRJbO0dP{`c3+usC#dqqaiI`*o66uJTB44eyR+nx`Drp1snb5(qc4j?r@ zK~TJ2(lbWHc4LI%Y3R=jEJu1Z?HwsJh87L|e6<`YwRutU^9?Q6hx{sMA@@Fw-gdcB zMoA1AS4Mci23ma*s&kD+>!WTaAn}Fd`4Nq8q>y>)Jlu>I*hS!6KBBePpZE?)q~}x* zG2182Sk74RF=u1|=DzPA52vFX9-R|ZRm2dyae!@~g^h0;b@#PKGP(fsxNi!w9bIkh zQ^Eq(!knQ4AI}CIBo4(;llVzpTMtrzv|HxOS;<6{orMhPGy@qD1{miiJIzPbzFb1o z_GZ*TF4T30nlEDLVjCR3Mj0Wb)iUm9ALCpGU(SAh)3dF(xKJwO{n2nb9T!6%BAzIn z`aE?e2}gk4?1x@sVv+N0CceQ93YHjNDwnScYJCa6H*UZhpAe?eth|+EH+@C0S@A|E zMwq{)kdvyCQf%g=+Cwjf;A*R&22+C7WX}NRb3i1R;m;=k!qx^JrKW~i@d*^*`&*G& z!mhPR{$lj|gv;6anX$VGn|XN!C<3;u(@EY0n{PkCpv@yg#W4Fsp6fkVezzLi=dLp@ zak4$YV3dk|&JkUK;kjC6T>T6_maZx~?e|bfQ&$+?Ow7)pwCZ?o&FOlNVh=%-=HPa} z``8kb3VKr8z^DuwZ^Sca7y?sF4patXITsx1%mYdh!V-bQf~jFeG_lPJ)7X?4dASBf9^bSCE$oD!d0#mlI9=SgVj1|d zwJsM27GpTs>hH_s^D!(xg;S+he6+g0+BO~SO?|09$p;MZFdyB=#J9%~0h$FgIYo4K zfyePRG2OQl`CTo*dLH*4Lg)3gO8riqBoUcj9+}uF?UD2%Co?Mgt}ZS=9t!DUIm|Z> zNxdMH&}a7tHlS>@ZDYl zaQa{nDhe0~Fser}k0WG}t8-};PIDHel@kQfrtn6X_Jg&I01N@YCS2MbM>(p)amA7a z6PzDm7Z>*V=ZM7W`FN_92U{A*`dblauHolT5=lkej1i@0P((@OzUZ=ByQE(gC$bayPT^HM}?^Sd2H?9WS$ zS#2y`&qOL(QK}Ow#3baTvkPQ-=u{K3!;&|$R^=2nUuI=U#(P~Qh;h6o9MaUexO*Bu zqiMsqozUp$oyp;)D8sN%3U)msI-vE-La7dF%{7Qv{=_%ADhB|q>yii6Vol-~!9+ROA+u}7?BfE*LKszY z-ltyqijqq{$Hah9WVGOX)(Z*|iJDf!!jQ+E#vXXQlA7{p;_);lL1n?QBc3fy@E}vi zg}K^cB=B1pyQ2V|CBc>#6Uo?NDbc9kp3^ISSHh4DpIbFnE1#839sKZ_FD^4eNah-Q z(H;Y1@>_7>ZF{hX(YhYYGKI3-TiU(<`~Vk7CKbSp0#;JVi-RnlBd?aT!s3GTbSJLC zCV+@NJ_f4&U~5W6&sHpM%JS_s{G(0FH%iTk#TMDAzd^k@Y%t2H$bCqV@b1rwehf=P zI=AyKj)aRE+Ao`a%+-$Zhm3;5liVy zD#qutCuinS8W>i0DBPj%zhBHUMW?8xj<*T3WOTUGKS8vjY|n%ZFPzJaV0=*Izzq^{ zI@!aln;o*z1g?6pFO3jbr@rriuiEsIvH62bk+)%`ZF5FI>;xMScHQ?AAO*&SaH5H% zSfh^|naGJ%YluRxqUTFqI29Ms?3S$3F{r)w%=`DmES?NPZ|GAgo(Y>XD%!Vw6%Jpq zc*rYC%Qeb;RHIMT0U`1#j*7(^H{YeIecp9e@8laCxGfCLEus9OntmlJGS$Hh=bRA+ z@bRvoO{&%B+eS240g*ixRBn-Z*@*+?1@^3Z(XRq}xW#t~{p}8c`T5Sa<{Xx%nGnT_ zmviwqvvQr=?$*CUk}kT3Q=Y0~V1CPTOeI~B0~rM)>DmD`Y4_sf@ah5u`Q>AH+_TLxhj+^1r2BZ;ZJZM4}e*H8Ev!I%k_K7&oT$!>d4i$q>Z?=OcZIt9yvv{qpR(Nc|`!*m0T1kz-MxiAbt zGkE3kU}|E67w+QN+ILWk@HM3JfEH(u+VN}?xy`vZ>6Z*jlsx!z*P zB@@3O8l$>-^D5%}3oyFD4rp1d71lM`oMLqpSi_OP<#yFUVQ}56RjrNc%$?xa%;1hZ zG$%S*Fm@036>d#Qd}B;uY>#2i1(e35rYGw&T}X+RY8Iezrkx%b!yYHahpNn(rB<@> z@)i)s_;859C$y?L7h)}x9TjF?yMH9D6S_oujmXlI6TL8aFs{HN~&?^qI!(Ng>f z+s(5KWs3AI#5SYz@n^w#;Kib2b~xNN+|Q<+V=zb)B-SRa z!IF!NzDqx`pQ9czcHqE!qQa}1lj(mn&ifZH^7$&wuA`pCSyhFfV~29~4uk+(JKH=% zbcj$W_OkRnpW!Z>wUA?@a24~gL*$RoVrCgOiYTsa(%?bXJBPPiBELJk%PQ*YSY45) z-2*n3G{xz#Olt@Q^6;2Pm}Nuq86Y3?Xl;S%#_|RLtMCKVfNY;mV1A0w68a4T8hNI! z?=xDC)hX?Etl$$GIVEtAv{a8F2wmT)y6^7ns2Oq;sSdn{$a8=H;uuDxbz2?5-Q(de zKM;J_)Ed(0_^@gv499YdaP42lS$SHPdAp*zu&`=ncKy>NZ|txYrYf0QSu)AB4Sz$wp)Vx%Q^@sVObU+9wmA`IVn~uT+qqDm zA9V6|aq9!?0$e5xj~#`fO6DBxnSkEC42cOnpv@CH*j&h!pQJ4g2qxbtVYSYNT@Cg} z(hc!+4_q?>#me;1`L{0n=_h#5YERW(?|nctmoQR1IRa5bJ0@)Bct}e9c9*|@gH$rz zSvmaL-hisD19RrMg)F(c%@6HRVqWO3-w2I350oi!Ns2Ts{H%SC^0D%TX=w9K0R+`^ zE~R>n=jGMx%(*jkMxP8$l<}tSKrAs_+v?(j_4d#xSlXv$t9|n})MqDz&4uOtg4T{7 z8%WkrcrRh7+S)4uSKpoxTIzL}BYCIZ&|49ldS_)#t)HMz%H#~9H`XSOS_CbNSqIdV z5x@m1`eg2?i=xFf8O((aJ7h+VE0KMf4G=7zvO4dLi@$=6REdWytMYRdL^Q-dZ+Fov zRLzOXe$vTR8l&^nC4DHI@8(yVSAKkyV#E*7fC*Mw!%*VLX__871}Pv^}T$`iFz z+SwM|A_NPuSTSH4E}l-**oF~)HYOSP)j#%jusHK5k1crO?Ku;)^bo&a6W247uVl`` zOa_<$pt%o%0J55~h36TBZ-QYPe@+x&Bg|{zZugQTTad(E3!>ju+1c5=;@&Rin2?cB z$uyIY`yozryV}UH5`Dw{nRAUiE9Suqa2!DCTn~BKAT}tU%@NDYyTFU_PAj?Et3aWI z@w`8c$5idc)S7zay(uqIcbjkbigO+Pxz|NJh0`??q!@NO4?&{$LvN~&6-1Jm(s>cp zf*B!QJG94t9Iv+|_l1=hWVk9+lRa{IR;!O=MVPWi#fFYPMSTcP;nkd~<0NLRI2k%d zQf&}9q5Y(q23Md$18!V_Y8E6$|J_*7-utJCj6b6d{n$dAp1xDQ_We`6i_%i238 zZHFs%3T=P_v>}hPlY(KC2JJ^p&=;XMidCcpO$udq3fKf6V*WZJ)^lp-@8}e|m@W?| z44Zhh8L|K&{W$MdJ(V9HdBRnCY1!U%x_7R9D!{k(W{^K1t(W%`@e?(Jbk;#hfW#84 z^K#=bo{&OS%i;G1Nk}ZRoqdd)`>*ocyAKy?L(;t7T-)SG=zJQkSqP| zHKb4@JciC(!+7V}9=`5m{KN_c0~`bK8csHe`C6J}3Emu6plsw>05ZMqwaL78# zo;T!_4EWaW>nOh5?6Fv##sXG4Iso2Wi?75I==2C2P8`z}hfOy^f$YEDEThtBJ4xqt z<{KrVeteRABLBsspMjEA7;GJ6!D`B<e~u+^o9UZB#LhMeF#BX`rs#aV?galvhgru8~o1Yp9g=DjxMlRE44TZsWS-=FQw? zqZ1WZAO~g@wbpmA*qTWDdM&zKmbZ`37E10VJ|la-k$Tn@F7eJsmEd08?he2} z@GKI{0R?a<%j>z`z3&(im%4^vIp+IBk(Y??U+-^RDt`}E2?Sge#S51;ROi{$4L3Db zcHBE{xhr|Np|FFEh~buqi>Rx7b=YIJ)<~z2$bX#RkN9UD&?3^`DGj3izU*6NNgBQVeOX)tLpeAn+%g*kLT5%*y{)6%234M$MXhb`NA9TF@W$Gu z@`2zv^5Vnlhk-@8emyF*V!)?q)5KdOhIc7Lo=evk^#Gg?tUHf&%Kqo+T0({6z?VO> z5kCi}*nI~N4q~A4#Q6kzx%3Hho#WyN0H0TyBSmaO68FfV3M87B4oee1cra zTbi%T>{qO&vpJZ#*wHn0O+;3>Pt}Q7Quwak+FrYq3wn!M6n3bRV~;Z2oL>*e06xY< zO(x}PWjb~T+4#M(4aQnN{^az|zenwZm{P$rr#X-uQ3a_mB>gl;y_}m!!|e74RDdN7 z$%W^m_m}DuF_F>ke~HHPOj+BXsSKLCM_&8wa`2Vj z;Ce1#MbP!L&rNz>=(9f`afG=NvDBa_=+HDfU_VBakLolIhT@(%S=Ah&O?<2z&o%% zQA>E;Qb`14aaLcMu|fg(LEJc9S`Q35oSU*z2kI@->HJ3{CmU?koDRK1@}V#5gAQMC zEB;SKjPK}+hs=OpY{4>uWdq3C`9YkBr-8h|ASkYcrA74CggC}(!;p-oQH-dEsV=v3&yoj6vx~0mfF59sK&l2d*L}IbbMj@%Al=>ytFM zx0T}~8NGPnv8thR=um=Lx>wW4viVpBF(UsGUr@E-Y?q#XcLIhBcea2J0Lkm4IL!)! zP&UMdH*(t)!^1nI5vgEBmp>Zxiv8`DfvLnYrSyuM>;noztZi5f=D9tT-_qiDl!7n1 zvvuM#y~?3l2?a@w3~{kll%SWtXYzQ;o?6TMy{pZU7tZYs$rxP!_`7qnQhKrKtD3A< zV0SQ7wD~9;S#IpV&ozrO$SG{o)w5JtPCUiodjDyH(MECZwfunO#7|iv7d^Y+kWqW9!|4Wv!OY-I|U&L=IE+t(BiS_~$o9#@M9nZsY%J#6%D*yUy=*bPgG7b*|@2 z#7#rE*Z^|Zx-i}LL4;ZR(`Y4vksd-(-U`7hlE7$!cOhl(lyp`?VhA@~_D+KiMwBr1 zKA@qI#yB*UD*7bBz93KpkYzsS)c?@_GShgi7An&gwY%YR%8X~Oni(_eo808!VlIKe z%b^i+7cbyb^{|glz0&q*VBe1*`%4HWl8W7z(1MDC7(^GNjq`n-YWZ{AKTcIO^GEOQ zdEnK%>9#tbHOEJ|YHQ)3-bWgcHR|Q#(ZT`(>>{{>(m^ke(uKj z#s8>xLQ$tbg_mjB%k_J{%+5*7*9u1BMP0K<{bYX&B0Al5OolS#_lCLBx18duZS9FX zSGWu0k4jy5z<9zIEjWu-$vAD*S=3bN5;xt9xT8#M_cWf{&Nxx(;;ue&`vUt)IUSdZ zXF8!)rFiqc__C{tJU^L~E*SV27DgKOE@#OW$)}0PV<4XInkz0imo| z4MRbTo=SFa171_8uujgFrCsKFf4Fo7H zuaC>|^$)RWVaHP;;S^}=TMnU$PVV#TbpxEr?)2YE^IwqO2ar%AM4roe?xNA+Zk?{V zV{o=iywr91NnzKfH_iWq7gg_$f8!CazEK&RIb1a%z4;Pv;I`?nbRUsX?OKw=n?v#_|g#*#uxDxdOPLG;kEr!5Ig;DhsA2cokEze_r+3l zNvhk+VpBOox4zGuRz#Lz;jZ0W?q{=qg$_YZECQ$!wfTRbcY@X&J%40x)6&>YF~vbP{|C0n*r4*tSBN2 ziG|_~83Nyq!-*~1o{r~U|H_8P4^{_=V;z#ZfVvLz6cDQ`;j(G{Xy&b5_ zZi!+%yi5E*_mBf4x^rfy$mrK^!l>O^wDi@Ide(j+ZtCVKi}>2fV|^F4zN&>m-trmA zYF9i~{jYZae^k9?R8;Q+u03>z0wR)vfHZ=1E8PtvsW5bRrwT~d3`k1Dz|h@FcMsj& z-SG~;|9jS1XYqk=%x319C-%Ot`#N;aX!PvjPFMT(9PVawC%yLR`Bs}CG?Owo%+j0~ z7;@jF_ZHM&YLk(UOxszg(-#}fmXK?A^PyVQ{`5U*DVGMXK&a>(rh{|7({o_=urB@S zehcC|5l!{hsaHp)!dobu1u!4gxd~z}2 zU%|In{kTG3)i5zJ``U0qX?vKLy-Sh*N~tACp*AfN1O+&d05yqG)x^+Mfe%|G_M_M?=*ZY53-84y&Zx{(^f+YB(6UevcPF2_Hg{dR>tAgILvc3D3}Bamm4N|!)-)kX(VNPRI*$k%}M()C0? zk00Ty@YIg;aj$H}-7QG7NmRy%e+4OfrR0;7i5onbJ_+jCRzG#_Bi^_%PC`bvR=s&UjU zp3MuFDTZkiU`@4Eg|_Y2H3Qc#HJN8|xR}-HZ2mJv=lV6tAWzc*>zTFdwP^ccM90c3 zDI$_Ztn!NTVT?_t;vGsRC@(zg%|JqVRsKw&lk$w%-86B+V@aorF9D7_7d(2kW7)rP4@2}YWP#GjKCHhcI&meA4mr@7GrqubA|wwRKLmqhE6pWRn2MU9K2Y0G#e+d5Swu3_Y`q4RbH>dfisV=D`u^KOUN3c=e*YCX2P&LDA z???7-dg<*~aX*uwFjUb-Tyg!kHs_-{raTrf9A?o49d)ao{V>e+w1`RG0bQ9Pa6&ZY zFba)tiC)z=1#6j|uwpbk8`*lPY2vRCB$M$SLT!~8rD!tgQERvGJ8cb-*Rv5?4W)Bp zgP6dvmae<_%;?w376S^veIo+fr08=WJ(5eE{_BA^Wsu|r^_RnN?fKpD%w(%Clv4y$7{ z?Ir(ak_neSIWA=>0>`P1_P<{fxVD|EVcWBz$=PBQyXmbeSKP2r7#2bxOM@R9D!{hg z)jAkrHr-!+AI~y|x$K=&=1eIQf3V&#&56TAns=1!<$-|VXJ4S(^w*GF+nx`ym0_11 zhM|#HE_&>Zrbvx9Qq*v;T|nm`!Vc49=VEp?dk5gJW7rSg?QtYkZJAp*1iR|M-JACe z>RYpRLziU8`o={E)O*9>>A#(R^}&E@mBBVekLFHh{d>l*V17HmxzVYZ z8mXzFP}Z7?Em=>n!}-HATp%#ycnhVmVuIerwv^fKlHOK|wnyzAdLaXZO0h-oe#U1WtSCoPUNa>{xWk2=wWfmL3h&>8=I3wTqsQ zcUL3Tlv=k`jT>UgkTQ+DKv%Y(eegODd>^x5jTNd43mm>F@8&U=rd4iPWut@=koa$O zl9DyzwqL*JfTVoy{dKN23-qZDR}?!HZ57N$LZj8%)!O+B2?Bl6GEU3aUR^6qd8Zsy zjh%8MrF@c{A5P~4W?IBm+07kFmdv=? zLouS~S9K&tz%ID^8N1qS1JSJQ^IRhIVMe|9xf&LAf_3dH&*a3Ir^D}4B))D+cl}0$ zwl!V3Bh%O@NcqekfdLGXk#b|E@YxTw6Nsg>A~0ITnCC~u90xq5o=V=c2$aZwGW~WUzvdY<8hj9NVMsC1XAEwSPe0GG!9mA_4_1&jkHlx(ue+_0FY%w1 zF&f~}rv94An{1pMAU3kuY@mUoVj8PRhHNC%@EgMoDZND3-xBnCtrcD#BU0&^B5P#B zJ?#SlW&wGnUd}xp)nb<(2xMa}{bs;CPXp0=g@7`uIZ!#(?8RpQb^@WouEr)eu{Fzr zavELFP<%eOw)qyiW+jJBIa_M)GpRMS3{t5Aamyhv9sh)=l3NYtnsAPX{);Iye}pHi z7RcT_o_3hPM{tW@v}f3lxjKFSTopd2k$#%s@^SUhAw;MOqtg!?@Vz zqdF}l1)@c4e?b+lAA;4pJ$z>r{>nagF-BcQ=6klC9c_n@!?9G_3ZI0j4EP$^X}h|a!&Jn41YM-OgevH5`M$4=i+o)5 zgUAJY)Coa%;Kq@KQnQb1Z&xQz35#j4dt})lzW1rTLQzqA9kPdoI}2u zndfw)E>VL(f8c_TIIK$L?*~Hk}fO{R{r?F3sdGPr9i2VuEcVB^e$& z3jN3=K$7$W-99KnF0dXQRmrI+H7;!#^)e~pPnEGUpVYlNI~l1>be}DP_Txu8Sm1~p zXd4zlArcHnLS7cX%yDRGB~7umEkFazBMIM*Mk|Y(5W3d>XAj%z;ugTXlo%8*X6?vB zXBF@F%c8~aHTX?d@GR!VqR_viy>x9JQ7}A>qY$6j$)tdML+_=#LkFelepYgE0A@2{sM=*9%wDtMhUZxm z2etlpwaz~!fV%_}7GnF~%H}IT3dkfhQ}L92V^sX;ISYrqHTMNFBFu9Ym;b=9r9(pB zV{4tL*|QL_`;~zrmF;Li32*f~SLxI=uSV-BQJj0>`xSy=r9b^wnQrS7g z5_Rd)rbZw(Sjq z{$in$*_o_C5&)!+V|avDA&%vHhG)g`9=9=f-XGj1i_?JWwh%hF%Dg^+QDN+=qn_%P zll(vEe&AaZazQWZtu_+WT2~TdD}VVS}EL?I1(Il z?)BvDf(m`-P`eO|6S@72nvkP2(*CHCzdGMW+_TbD$hE1H%`Wz#r#hdpp}=v}l^5qW zh_s1j4{hQ%8%9+CU6s{d#5}pt*V_FM@~kx1fsqB5^B9;e zWd@MSlATTgI#9V?XFd5Cg0Gh*UE7SZU9ho4N zZRFcXI|gxq&d%_S1J`~8xIt*C!POcc+!jvHdg*{SzmiKmn1r1(KeK z_7OAUg-XK0gq$z8+V-LrBYpuZpXu76Mqf}-xOImi1(SF?tgTY;0dWX05nU}7A+FbZ zc<%0K0;B8U=eF?*CHJEI+GZ0I5#Y}p#YGtdW4{+D-DBO~;W)5UsRjjvDpmC^&>t); za0?;pw&C2}I4GuXI+UENX#$G7xK*G4Hj1AO6@@|;QIg~}-?K#MqQZQ96Vs+u1X3YQ zW@<4&rpw8UTEu?T2ZnZRp*>LXa%{NzgEFDVXhtGve))R(kDb|h=S9zju3@|umE|nI zI>!N_2U1*7DN65b=7!{cU|`TwdJ`U=qo4)?3xv;`r95n zBhj;66)%x7!8z$&gm48T$AlqD{%;`kQ(~ak1m91Ae})H*@EVz9c)fV{W|ch?L=;^jNX5fi*9DpJ?uISJ3>e z_dW}SCE-&F5&DZwDFD6~tJpQziyl)hohK$z#`l=S!%(>}KO+iyE|;Wc8(wP`UH3;;yET>;6Uu zkXVOgSf&O_A(#`E|1IyDxC+uT-%eJwPZ|(|;96_V?8RV-Ybw2&T(9U`g=A23c1Fy;s8-{wFn1fT zL~fW7{Ah&B!Au1F`A;=(}I#0ZY#`t=9 zHIozSYckUp7>uO^lra}~$SQqkR95y8UTc$7`qc2W=9&UQSP3%@fkx>`Hgk*L;(Hu|s;hPXEVh$wtdpn|j3XSA-f5 zK7g;AHOreMjR8s_`0(^RamXMJavFDPL{oRn+2Ko-VnwtCmyOjkWScXIK!W~)R({Qf36s&)zA19S&wv=77WvX!L_yUiR=t4Qhu-Z9 zq7N=3+$+E0j6m_gga-OoJ0DyR>#)8RDW1L1$Ha5)vnbMfML4@A*MjNJllQIYQft?x z7=5qmI(t4Rp^&w&SFBT~?%Grm58$cirZB3?%xkV5cmTahV)r9DZ(1?Dnm_svhna+`WTptF@KOlHKF=Y$={MGyZ}`AVKT zV`8asa*LVPhXqXk1f~VxxVaGh{YhaG_(kEj8RuX+V8x6r@RdU2r6O^?VPClqo&St} zYRh&*(!+@MKv4b9P7N-%EnUw5rAlTq!YbQ4;6Tr{uDY~MmXU?C8F>QGHuIJ@MMr2f ze>=Q8WN;!EyfDyFM&eLp+faxi8?dKEyTtP^+sBuHty|od%=fK$0yz?I(>qkmQEwf% z;lkc5l*9WEve&*bZY|ti0Bj-S0yYeg(~rauA}39(rJB6ZBIFp9&acA9A-c-dvQED>3$GZco~~By9T4Hn()jqG z@o$JfF#`>x2qsr_%u#LLZB?ZJ#L>{%z1vOW@>I4n!=by;=%)c~dMb+5gE)9gqaz?{p;tAf8cnU0v~s|#t zlH!@G6KO;yq!&}tyMldsaA|U8!r?!2r~{V2b4L-gi)~jmQ|8VaJ+2y`onB()vC}jU z<39m0dsg!?hHD`ev8SEM2gQOVHETolXGcz14iowk=~jivyr5Df>=EDS%xwO6D#FG{(ulRYldPN*(0*D zT~|lxtgY7OuICJD=4_fZK>%{0O+hoA?>K8>`4VoruYf6Ap^c%j%mTZWzW!#b=07#~ z_3#7TIc$$sU3VcM`Y;#%u|)8!XAHdcHxbKQ zEa#@4Q}*3lt`!OGb;ai*nY)^VbzOQ}Ab#c%g|vCO6=%qHR7aZL;Ln62!76%u%MFh{ z_RdOS_I_ZO(R>+KQK}$2NK>B@VhQ=EUx7P-u3o8=`U!7>9!{fOQ&1P~TeMWny4HX_!584Oe45tgTdPdY$}iqt^uD2;pn}b*0W8%E`185o{qQktv-0@?xm z1{NLGRU+{gDc&5f$z_GpR#->Okl7oYjs4SIoz)TL&8ii#?ZHjW!19G|rkT$qr3+>qA z@?<8#q$!dFS0_KjHWE-0CyJb!a`;VF7pxhwGD{&&rMtUwg|otzs;*lgP><*gbLH@M?4X7;+n(+YhwGTuEzPdVA7jO;broHE`lZ^Um)B*Q9= zjY*q~ODG;Yr<=qmZV>#>%Di3SX;PKN}~FSC|P87v8|j@qSGQgbP6b^%mrsU1eO^}R2+ z-5lEhslIA$B`x{Q3y!l2QvQNB1&pWb8H|&v)z)9d@jRKMB1HnRB6^_06@)2?C5U^R zFT0}x=;tO{a;@}swfQi>oCf`qmkkNEhIO|=$+6)Lmv)-0ccqIqMU^#jGNpRr`_S}r z7NO*wqM4eFYCVl=4yCCB&$~3t*zaH7w5U*@L-Op-eXMdt+%C4$=2hv&;d?PHN zr2?OR-|dF3Wvc4x3$ZOd6<}^f|6zr(YHd89=m)hN5|DR~M*rhAhS}z1%g?;74=l*5 z__6bz+6lhQe=L1JISXpPNh1b?OhNs%@XYiUP@ACJm7l;g_j>Z_6-{xbr zr23sD*tIyB?Xt-CZC|eY0Z|s@yuyDnzS1yyKyu`(eHF;9%yW#0;uaXmvbWP7R&Fv# zRsI44_V~AFF~=*eXt$FI*?IrZ(%XY*r45pr1dHTey6sdy1LtLo=td6!e4KTC(g|A? ztAG}+M$RmA)YQ}RS~<-RY|3xqT4-(j6H4)stiMI|D?C5o3tOUPe$NpK5{Zqh=<;&n zZ5O3ewZg^cRL4Mn+pP22?^%nx&}d|Quu5M#h=_|>tUkBagBM=ggDCK!O0aD(v)c7q z){wri^fm>rY zpO^O?FF=n>CEe%zH@jA=g=b@LxmApS>0FG-i3~;w)##GUfu<)n))Vr{qCiX#9WzO^ z$)?Jy023}*PD1v`F*ITIO;lA{!5i!2BKh;{9ulr1T*tp!e%K`SkV159S%Z9s+B}mT z8^Hql5UwdY0>L;f+3~Y{;TM+UN22IU>@7rSk1oBM(G)S z>#rK`fe~<%t>4z6K(Az9e~*>0oq5F7MAt~+Gf+9Y;UuElr(+$u zfHiWVBzzoFYOW@a`Yy_g?xi>`Zg_-o^IVDJl0!9zrj2WJit=JMYOv^nOZ0;I4$&7i(yF`@lplr@WR%p#QtJH3cL41P!2fvqdrxeS;f?Ixe zdw-sPf%4L3M~+BPo+D*VL)pNdL(+sGS`8%}q;Yw!>nIXwf&xo^aTJ17R)quaGdTmW z=sE58WLG@TR6v~rQjWQC3{IASRWIa>!-)s4hKiltSug$MbVQsds?27&flj3eiGddv znsVPo5-lw>mbfMpQ08Q_o|rKN2%Mpfs!LbqPJbI6XiZH~Dd>?iKSr9_0kct*e&Lobe=-` zg}vDZz$am!D(BDh9hDKKR^0Y~dHxV?DX7pZN*@};@(qQHfh6@N4PzU0Zt;aR1lnVE z=v!^HE?Jw^r~7ms697qSiiu>~nU1dv(GFB`5tY9&44`#Kwne|B0b1q+Vr}I&|2#*2 z^nnUw`@0KH#_0;qgYN&{lhxL?e$*Xmr!fs{=ZY=V(#SmLt@COcUk(M3Mo<6lE2))j zprZ>W8b1+WtmHhjTlhL5#V(|o=3@)1(nOYm&N(Q$6wWlNIkB6rgj$hpIKvS6_oA-Pqh62*J*{%RCPQ0#5q87^GS^ z>2^+}_De|hvv^y^KLh@$x-0iEd_xhsF$^#x)M4hx|`%QjHsvrQi`4(Mg+ zK3hr}G1J{H(SL=w4^P*w8mJK5>^7(!D(c<9rlUu1M5&*@@HQ&!AE4!&$2gEupZme0 zzB?D@KGQK6v}f#(Gxu997S0-!tokszkCO?|1yoQlhp;ZX!WV^`*M4@sZfk*2`_50q z6xvqu0E%si9e2A>$o&GPqHt(diWk=Fx=fkuUt@WFsW6oc(|1`7jDR?)ZW)np)@xtx?e{fCA6vh!6n$U^<) zY21OvX%Ql`?UJ@#aD*r?2x!{4mdeP=9V~*KYWa6|E8o^%`6i=%W8p3SP-=P*NoOP? zWbennA9WhGUY5=6Doem7Fhq2`+`dP2b1bXTt!UKudkhJjE23_f*ZVpn6XX>Q3}?C1 zYFQ=CaP*VUL=Dw9Yt!Fyb##_{FaAS3yp3@|kjH)a1Cw(d=sK?+HCOYYTJ7n8#VbZp~{pI6lcD|=BV`(ae(Nz)yk zfY@vm@EcUx&dN=yEo_GmOz$k&*)hv8^w}G`gJ~wJM&G9>X z7YVP_2DzKL{)E_$5nRrXTj;hf9|vAZlrAD2-+Hcr%-2+z@pAfgRwD|$CChPWjY>R@ z>4RVRu*JZk>&spd*7L}^YXy>^<}sFZbS6d?p~Tld1{?gO+RDeEjoqe%y$e}U;Yv`B zic`h?S#7OJw4cHKt1+gxd)_F<1(_el{b$-b_d4=aU17A8^PU0;zuC)ZZ@|X4( zr4&e$pwkdVkc3;JTkg@22cApn4s*RIMf*^j!pV3yO;u5;AVSG^AmHl`%uB}WgQ9NN zWgCLc#n&kyj;EI9`wV`-tqK7uFS3Y!fw0fJQW;uz2Lqc5H;CB|qVYjwSo_dM;7jH= zIR$`8eMd!hY8V@3h!GLf%s-UGhS->t=ku=m$tSGHbi zy1}mdDs`gJjM@Dy8r##3#(BRV#DX;r@@QSVL<8-vY#}jblZU@Q4Q3};yo)`Zn2I%V zarCF~r!ZkIBX&k93Q#3>TJD*e)0jp&-uSQ)qfu`=Fw#0rJ~y-Zy0fsroyX#G^csv} zOj7!Jbz>dZxU-SsxMQcuViFi;V&s{NMMo)@U3wYM*OkjK%449(;nWZ_MmP13qoacn5}>6yUwWN2fEYL>+1hG$*xmc=v0N{ zd6K2o%nkP912&~YpM=Ej@8!UF7UT#PLNZxrMs`g#*j zXC!Zg=)^7{mTzCiQ-emPSoTF?;= z_B>Mr=Bhfq|F)VIWuxOrq+kd|<$US;kwGzP=J*rTt5hMVHjG0;`gkR=6kdjXu&w*M zwP+UqM?BFN&HCi23p|wbKJ&vLJ||krTFc(PF0nio8R4`|uA~**iw3TCo-PISI|B+| z@{SazhE{uli8>VqkhI>#MB$sUo2sD5 zjSjg$T8f@3*b|NBy-pJS)MP*-=7ky?e^{K{@p20J#;Dx#2dsn|t;B>H@lOwnBd4n6 zKzXHz=K;gziK6{J(3P|u4IhR2E>i2Kf>h0u$#NSDtd7UfU1uSv-iBWDC5cLF13pRZ zqFUpZQrpQ3!%g6DdjC1L&f>+a{E7ZV>;ssW^)aopgw)7$w+>pPF5D=1sK|I>F#L0` zcQz4UfedMU1CJ0XYZrYTv zuwS`Cel`AG2{Ydn@b)^D{N=TxL`@Y>qrgl?ud(Z7!m&tM_9->LxD8pMs18qN@k+;} zh3=7|EI`HgeJt_Hy#F^|hP+s=wT}mM%?TvDoN_Wu98j2(^$#5{DLJAo4S;+dvznLe z=dDh_*-bWLlW=EdBb<`g!S&V0cL|s|6~biJ?Yki2EISn&D-@$pN|cZ7ePL~m?^XKh z7KLV>SXdk}*OU(HJUtyPD*FN0XH-ux7Lemx=dVsv<}Qw0GHM*-$=VM~8wt{V9yC=P zS3;f5r0W8t52Aa|e<*d3qWAFaE8pClegep+n0w`@By7ldEG1b&XR6~`e=0R3{DQb@ z$mmlFhsx43*5@h)VL8TTFrx_`XCsprcI0Tj3KC0D!6m)v6hMgdSX4U6$`mEat+yDn zhg(vq0n8QQF|H$5^=PaifDf~3wsx$ECC({dmJ(4|7OB_QV2AsDF?$yayDf_qqeTN0 zI1GemOU-G;Q@*JLIQt?vE}5eX78&BIU}p~+>Ip2P!41Y~%;=-y0EOG#-eGvW0vCjU z5o#worh!qq6LZ+m`{lcW@++!2;=fPvbpC29=rZq`S2r_W7KEZQo_P7^vXbpK`TrCp zk-pj5y2EE%?OAG4eocygUofS%VR`kQFnjPC_gO-DeaH%68E7$RrB&9ysxt84+@Krx zoVqjE1fGB15+A%lMQ6J+N6x_duDR5CwC3aOa~*uX6OT`ZujuGke7r6?ozU>8)0>Pm zz&tlLqd8k_46h~s`XO&3d#IQ6MB&GeQC#&;mI-3F{788bm^A~`0l6tI$b!ri;|lbQ zp51VQ?`ZsQGpMD%*dN@5jN&gTrTOd54Y`|C#=7eoZ@o(LalAR~C1v~_sl8p|*luiu#8Sp7eIUww zkMu1t=8fh{DW&BcxHyPbW43^`ioxIu#@pDRjKJ{Ltwg)}f<8sRCfv6QiM0%F-~SIN z_57RtFY-O#QiI!mfJ9Blixvjz@Zp*`s!3nIr~b;b(H|%;_Z3eJl&>Co>6~MZX7Xh` zcDh+oD-y~0nn)Orm}5V8Dlw0~(BMEd!AeGZ=dpd_u@`IM8NbTO@=ATnXBmCtOsr*< zI6&fpi{eI|j7eh=rk`Q;7djAGPJr&iEJ&#I+|RSZ`mJl zZ;F4)lLEGdUj``q7jO%G#7Xd13EQv^y9`YzdKu|@Q5E7M`s8kI2TzHbaI|gswugn!^zi>P%;tk?4H_8gaQlwQ%#4<$_cIF>5`;m99{%$ZK3$B`0HG>(y zBIvK}-6yE!H)i>Z;yBs0MY~%Ep3g28 zPa$DCBEdfNF7r-M#mb zA^TcH0!{Z`cA>_04iUj7f7Y}eKY)-#(p5I2&&s#3jF01S*Zy&n8o{OY}_5f}|0KM19k0q%;~o=K@Z|lQP;vjB$mui! zNNzd#7BWP!#V8qlGjQL&r5_W@rBhif3_aiC`KRt}eH>R1heo<36dt@6{6{XHC~2uBtWUHlqcyU0*%564yL z{jy2I?&+yR;;wDc%OYk#VVzvK&Um&8JC`JHjm5CRpq)SE> zCS}$zxz2Hq(Yq!~GT^7pIzn|a<`OO%)m@g^4A%EyqA8LNTtmm`X4^{)fV`H$fg0TQz(?; zy-fM3aZ>jPRnx;gbl#6w9Jr2IdKmUB=kfSsO)b$uamP7f|^w$}-j#rC_&WD>N68ePHPx3=h@adIMKEB~QtqsJojGm8e z=Hru#uiJw!K>F^waN<7-S$7y2gUZ7=h_DSbS7UpC@J|^chp70S#vdSx){QQ^clAzD zaE+dB;Tj1W8Bn8#U92w%<*|D;hwqNU&ED#5&9#c}uEv?7Vj>$JXMGnBES6@i-{{fl z(Iel*cgf!9#?{H|VSo71rm;^8Hl{3kvwqo5;8*5*5^gkbjjSY&ooSN1H&xr>y8Ckr zAuce1F2SAtH~vr9+BzBKF#)690azA_-pbdr*D6=GL2sWJg=74@b7i@%%^rlu8I97! zNC{60@?8PnTf5SKWlRfBwW&x`oU90lbwTJu)$nIEkr=^0RbLT)5h6t#%E05wMUy0Y zd7#bf-)j|{QY}@?+q5CWI*Qt?yRiTQnl{W&6Tfi5+UUs`)390QC-uzJiRrkj9 zX<+zXF(_tSS*T=T-;B>1A(IhX5=F!>Yt2Q^l7TQF-SWn>XlU-agB+C=gij2aTzdaG&zHY_p`j>9hI~ieQEV(7oQdi^xSFDLZA_DSjMdMJ8*;;4s;6XJo10K+uFy8ImuxZvGlut;o-UcnR@mR z0eV)~BIFAHrJ?&S>7$3A1qYX@Tf+IC_5%pyq|Pm6Za%O1@uJio@kaW`H<`H|10VZ=t2^H*I*Nk?ZLTSS9peiKdZz1k0oQlubdspx;t3%evJr}2R({T+E7t7rItEIK<{wBZ4vj4?fZ zK#W1Xq2l>%X+HUuSqqj?Cl#a&in6@G-qQq`nrMN|Bvg)}!NZYB#i-mr8P{PMvNwD! zCy_)=O`ANWa>q`Hfm?s0+l6e%N?Ax$F=1N#`gx%$yL(mU$anRpPks7rL+lLxGJUGE z7<)V;Ze}fgMiWjPz3)A(9r`COv>oU#C@qwAYZ6iGKEQnf$F=_!EC-RrHfW0^rU0&r zwRdY~b|;5p2N1UkRrp?>0Qd13XsyQ73?M0J>{C-tlt+r7`+5lg zNFS=-!Xv^q-n6Ye>)V_^A0rHTSLS`cYg5SghzV)XQR7@bSB9^>+#6p+yT;lJ#Bs!c`~Lb&5URDmyYJ~E;9_}_{_+Ks%B0v0X=t*)IASKVKROYSZh4ecAL!`NP&V_xre1!()QTNy zCZJJ26lu*+UM^wDy;nJV&4HacaIdC{rIaqbXVgp7ds<-d z=G(Wpnvckwn(_=!?-(z_95_I4eNdm}jb=Cwn{8pquTnr_cQeCgzeVU}{h@=UM%RBy zXJciklKE(OH+Mt8w)+aB1mPWedF7>D(#Dc7vLyNi1SHn0)WqRE)6eBKQ~R8L&6Esk z{(vTHbF1|#^BkdD7dV?N{^i~?eXX|^C>iaV(%fz$hcyD+{f*oOe;&Z>Y?=0U(GMke z9LITV+NXA&kxW@(B6;Rc6A&{4lqX0GJ7Uq!;EV?)EKm0H!ip_?I?}NCA0fs{D_%l`Pvi@ydNjU5c1~%NUu3 zCz;n!`;_+bh+qUG##j9eQPdY+KDY6A0dLC%JZ`3)5%<7Ad2t%PjbjPs)XIbFvZUyF z>v}KA#tydr@WuK6cYNrq7RMkuvwtJK^h;Ur?&!QM+}Um}=aa~(KGk&6np^(ul{${E zR+Gw!4CgwWp>lk!_javJMS4X=VkXa_t~yatJlK5c)Zi7 z6YG1kTc95oclHy?Cl#MnA{I}G%;|OxKJ*AO1L}(9XFdLG6PT(R+LHIQ?c7gLndJMS z+t`yy-y?#}*QdSvAGx*q&+FbO&xq?AAMCA&Fdx*eVwIuAp3fFBdNHhGQ35~F?1$;H zIKF;Oe7cVU&!Wu@_wTop29YFCq!lLUY2>1W5klS#dnKH($T7KpQ>M>vQXm8Ry@zbD zo4OzWt@9mML-pFo|5cj*FO(ed?XM01`~m~1hW5q-G8vg z7!c8fsbm}g3>(Cj@H-SuBKFplL!i#eq! zxFN?095?yG>5^aKSwKaEBKJQ663AAHOp)_;d`QsTu>Mo?0ti>85zdya&0@?<#|br= zjhC^&I0V^QoiB1=iKW=&+_{f_`b{XsMMT=R21WKbt^q^ry8QsLH;_5IKF=3>*hyVM zG9G!J4^n;K{u9z8OqOjeX~Fs4bWvhI=sxHnkp`r;y!B{4+dypdoHx(XUppZvA^&m_ z1P!OC`ZR^K@C9#r3eYu1H@lNp+6+ z?=-8Fv|s&VDSu`W8!|d7ZdivgGDmIaR2W!hezpp&L2|tV0|p4^ZA7K1JasdFXgDyxu|$i)99 zR2b`sucOaaQfBu$t0Kj4G%)%QvT?-SpzjdHveF}>-#p(#P9U?zEN?2mj1cgleHqx! zN#Ku(9YJ!y{E}iIM-vM|MjSdca^SCdueN0S)0I?vGEq{?SER4JB_phxGY2Mu3(JB! z5;?aldX2s=f12KxH{T737?yWG&H@u{%KKHAlf77^y2<6}S4@uyeDAkEXE;9eAboG4 z4=4!TMvFXpe&=S8FCi1dSkpGv!#Judcr}0sU`&Z#ZH-B^2(Ls)GdChQ_l9*1fNAJs zPKGsIAXB#WiPm^ZT2z<^eS6r38T`igUU<~v`Ht;inSiI=K<;r!)jq8%rTY1~m7R6DT=P{A?b7u6H_reEXy(Sck_ zRVzJ+hnGYDA64HS&UX90ZL3u+N>%Nm_G)dhTB}CU+N-V6+M5tkt2VVM5>=(Dt-T3q z3u03%R;W!7iIq3c_xF3=_x&FCAD_Q+9QTpyzOQj!=Y3wmPsFGHFg+HOlI{cEdG2lV zXeE?FAoJz&i&$d8HFbWDZ-S-^+&*<%^>Y*lWxx*gF;ojrD2p_;Ww)xVo{rH-uawDU}E9~?8O z7hbd~Ifa=5_bRGDb@%LWiS*?PrgL&PX)Z^t>?tH->e&`h0OGr?lSvi(SzBVQh{BUU z>DoCGs%LHNUQFN0uCqdKBDaQ`We|nwZ%H4}AAxcdbaQ zzTy+CaNgVepK;$dG&$bH6hy2ecJ0;cB#B(!GX3#{CL7o5jqWj@k14sSr~Py{Sd+Y>plMtF99& z$qT~O<`vV^gmThQ6mF<uV2lcNTtJYDA&mnGu2j?M$IzBrRgvV z;s9=*b(};fYUm~w%0=o>e`3m&3s8!pc%C}=lJC3Mrm`Eb%xW0;ol~l2;UoVq0$Fz~ zHbv#mfls80+3)6j_RPD^{~&Ya%%fmpR_IHT8>Upt-@cYk)t-*bq=y?e?HGj@osOHX zQP=+H6-Ok|C{DZ@kp2D7PaKIMGME1O(~vvAa1rkmdv{%N``85cQiT)Rhq}7w$NhZ= z$72v%UBrD{7KbHOad+vh+(-t_Q33$< zm$BV{*CPxYxdXxRwyiR{66vHeCsK7d5%J!>U0KX$zeP^IZzQQ6kp><#_Kwr)r^+JG zhRKv{!UuvdJ+Y+k9lou$V8Z~>(n#{Q-_O{!g8nh>|E}dC(GF+NN4IbHowS)Se{}NM zaRq!r*xnI@Hrk7|61ic^eFr!qne9|d26wdXfByY?su%c*_^`7NXyA6zZQ<mek}4sW@IEaHJ_TrYVdnH zgkKq0q9={-t}mgkYpL@2Bv|{M+7zN74(PMYg9{2f>QO-b?-QKn|62+5s*Uzx(|x_x z9?c+EO72kBZOH z7p7@6YiSvU1JWL49+?ycWvB`y1H}%Q+9QYLI@t*iKPS|>i!u`PGUcU3|p>VDcyYb<)4G3cjZ~d|hQ6HQy+ZJ*DtE zYUtWn9QB}bTDKDRG|msdBk^A%cdspoZah@UV{_<2^imI>q!Zb^z@Znw3`W-SOZh>E zk8Z1o_>eI0v*fb`m0c#we=!De3lkfiga5SfQ^;{W-1;r_ zlgt#-^jC)h=-~JA+f)}EwAz}=Kfz;Xv@P)xw!?cT4vS;>VNH`?1}rxv znU+|_CxYwn{RAD57R-Lc_GTlR6G7MBDRW>%T)^*CCMml8FQGF;!O zzIYPdcyi{Q7$qor5^Hi4B;6ic2x6>=CAs4pBvi*+yPSATaz~2V84_n`E%XPqUnuF7 zwl48CJ@4ptpEh3wlOCVrZ#yYriMVv7|2CdE7wGS&l)alWV5(q}n-9K%p+p*Ir;A4= z&mfm7MCsB32}MT~(_CC?+Jo`pO~Ms&55&Ie#+ucc56)3?q{`iv^!ZI2&DcGvLOkT6 zUhJTgL-YIrj9SfNODk5iVup0+YkZ717IO-pK4Wu)Q@$}N%^c==bLT#E07x#i1<#1{{PvL-ai9T*D9Qd%=hlXGPqbjsu7o>5zy z9K;A}4C9JKUO|&@XsrBjaOCLwfBx`Q_+p*vS=matdm-x0u&5r4BS;<}vA4C>8BWH$ z6{(25m7U8R%|~JWo?-LSe>JL~%|iu*wfq2smaIh)rT`PNeAE+wBU5joU0YJagHg^I ze%(O2EhZx&CUB^oZdTrA=Iv4Ko2^HJUa8dLLR=iER1!i5_L3Mt{lo9W@&Ht@5dA`D z^ZM=5mrWmYZh=>6A^%A?X$dLkKg-&hrr2|%6gT;FgM^)ZA&S%hYQuPgUBHjiL*{|9 zKXzM($eU42Tj}=L`pWOTcI!PQA`_!?oSfj0Dkm8cmAoh}sM&g!i)ctGlTmjA`KaY{ zNB_O|z14JlC9){Z636hDZ=vT@xuaI=TSVFeFQ{&>Yc{fp@{~wi7k#gM^s1Fl_6#Ay zvGPl4P40hPz`t$)ke^cLvTAPs`N8b(`1dhbL&yoDGhvxDsB>2bOsUs=vOaurxP#Wz zq-S-$))g62e!8Y zz!ld|#;%+HZQUt&`XK}V?eRn5FJT&=(ekEClRA(xl9!mY!2do`ND`1+c$8mNY8|H{ zk)YCOXkA=l{)V<$zIP`w6qb31@g}>mA5wWGJTAu6;R^)zCdXmDh3iT0R2-Hzgr|)3 z8;ClNglxlE=r!}S@6a;2ct`k)MZ2T;oy?=!=ie0GSq+-zE3wHMD6KO|aN9>SYN>Uecf!SaxPc0De^vI~!1{Wi2V5O0RF+~}AJeIIE53fc z}u;}7@6}ntfkaZ!Or~|brp9yE!e^|V*DdC(y!BBG zjaig%{sD61C~3};_bRsxgtT-eG|UHtl@rXeem9T4V0e=kQAGv8@CZa`Ia&ZgLft-Y>qevR5K>y8z}+rio-qW7xcXqm|g#oQR%a3dk#qQV}L zXNLQKzfpgw{K^@H1m5AlxvX})k5XzmG!u$P*u|I&I%iR}>G%3|XKNKYueMiC-j@FV z4ziaKGZE(?eZ>*x55wk`lK@dT;=>KkDOq|M{9%l#IM?pLbh7ol+x_L}YQV*HHPUgm0pn5eE1;A>8%meLDE+(mj>s2WrQs_RsR~}fc%pK5A zNJ&Cz?#|P8a3uaEObLCPv@fZT*6i!`q`OFIUr8(ycr{~hK_%YN(@ zei0FPJC}v*y)^q>4gzE z)#i1vrfT@{58WpxFQ{)v)R-KJt_l6jfY*x1Ic$Q(d2u`s#ZWOfYlSV2X=w{C^9pVg zaNf#Nkz2|hU18a-EN&{Lb;lzMCdM)Oufm^sgzHn*(XpMmvg9A@lOFSBOZ(iU`C-nb z3~c-Zqjw4}it$95HuDKhik5ic$1Uy@o>`%c_X*TCmVcW=lNof z+j+dC_i0=~7!riv-EBxWTT)df`gja_sT;V-2ar=(;<{}(IADIss(5jIFSUikrd_{7 z$I)8Dp=u$W9P^dylfr@O8@kH=ypAHXCbL@ITqfN+{1%J%9q)el#AFJL)&tgvutugi z>;Ao*Wsdf%|7Z7AqLtkHJ}v2Q_YM^SKWs3SJGECgVLoz+3-e)Bs3h7hl91md1cOu* z`1a1sH5goiF1E+OtV9<-h^AcK{S7lD9WDQ}H$)PI`Zo{9i|DADY$3$35mT`1E?l$;=_vP;brpW32X{s~A26@@DqQ@pAt_ zGQe2N!R(v!qjcj5Epq5nv-ZxFy=)H>!HMd7tarMf%8_!Q_8rA<Qy-MzbF|!?e41(&E!{tuCyu;W>hlQSVdqj>AH1A;DR4Xm)JB+!(a&nFSKxzDggy1sz$5aW1 z;ZUYexDx$V9tI}8A?kti9<@fY)EZJz>`POQJ7|X12e`G0O*_)3FA4o$V3uI|kBy=T z9}_S74cR&hIvS7}v-uEg_Bai$iOlRs1)AF*SgNv3nT{#ZNJI4IS~T&VqHT)C`-;|{ z*grWzv0eroPoBWa$qTi;BDA*eWmfDTv1j;M6jY2K7l@|g4Ks>n8SbEWm?YFLLk2$6 z$ge)%X4Ud8bMB>hk>ji$dz{kwgPJSt=?iiahbIeZXr*VnIEMC@j-^50W9PWRGo57GUflv}`t&7Yeh|)vj+(5`h*+ln*y5Wm5!}M|DG3WS#$!#@ zJH@YFQn()ue=zy`IXpoOZ{ zaNkAE<r2 z2+(-{UvbDD3P|w{gclKaNKe6@F=So?yqX`pI-*K0vEaVse=ajzbB{4ncircC{$_dT znzpKorY@Q9V9e-82&c1e~y_MP$>Ej z!_wqS-rUwxiInwM;Rl>FL+$|rq?>0cB^v1mt~7diF7gv@Ca%|$OIbG`ViyMXw0zgv zamy|dq4au`%vc;&>{rM+nanFvtsw4WgA3>JN8F0e?yFB=MM;(F>pG(uxME6;?jCT- zS5v|1OlEDO~6GLz@a zF~cV70jxM9F}K$A`W`m*E1P$j8S1|iGaD-|V)gfNBs7Pe-wl5@M)6+ypC9OW+jT4I1{-opsPU8-0T6YZV^>ed^PY^%PnA0WarMdZCBLwnWlA>_>mnWdyD`)+2f+ua#KT%nJz*?~gM7n^?5HO^wzqtCX8$T+wH zwk8-gir2C6-5GpxJu3$_lDD~Ua^xg0F-{=6X;!iH`y>*L8*Q&svm#8wZmUiFxFY8Ga8z{6@zdKTZf}8NZDurDC9YqSLL2 zFpeV5Dy)+|GPqr%ZZo2Un(z$>w+N^5a>!|vW3k;ZjMVd~sXeDAr%rZoG%*!qtsa-l zQOG_JD>vg3Hmd#~sQBN^zConpH1G_01&q!PdmQTF_0r*!agN+>DBQE}6IS3%tziXC` zMlY=SVDd)0+ix!G?cD=-TQHOj&pvPEO0Ro1&n{AofLyj2_n?n@gn4AoG?h{ZQUq4Z zf5e+j0`f3%P?=kif&i1}ImxHBFJ93e5&GcjMZbL}+$Kv#OmZr2l{{}14B=LqSQWO5 zk$(9Q$KO;9f5}zy{@F-{o=!A2-M#iJL_;* z?at`n`yH3Bovrh#EHQ$hBc@G7L7r=qs`6z`u}E^+6uAI4kp^O0}UnQBu)hXjxpqa6yB&j+Wd!n<1Ic|snT`M{e^OAk(=WW0) z&@b?YiqZmRTc^B2E;C11Wfk#P? zxNF^SEwgdQ>+k(&6mEX~*K0EKrW*mg3Ap$zi+Fdz_5!9dBvbp(8Eu>t>1ZGolf380 zQt)Yg_BkwgT$Gq>Y55r^fH-4ej$6thc5~)vnqmo(Hju0N{*Qe(lvFfX`suyO2V&07 zXluO`8tyV-J)@xajSHk-7@X7!OXM}kB$=hjuhu$+IZn0m6p?PUulWn5Nuja2xYY?R zSE+G{bdXfD1I5j5W>oGSV-5=^chl0AzmkOD8sbj8#}p(l<7DFz&_g=s%HcH;knU>Z zNcs5ia;~bhwzTcqWbZFy`=W=}Xi0!UEuQbx)@&~<*JtHWs3I52I0C33$RcHXHnfj@ z-m`%MzP8~SJ!=tB28in_-nlRPzzGcIj1#$kQj}8f9>YF4Qd#nN?E8=S_Ts*0LKSGi zKrOhndHQPGLm18G<^G%RZfRmk==O_yv{YRr>Ew?#?kYChArAJ8?;}J?D{B{jqNURFDT2JWx5%&G^nH24FG)RUZ^_ zr4`ICzD4wiX}gm@FpL+?*l4wk@lUXPymm z=*oba9S;x0_1DNb@%F>ey>-umiJP&g`@(uoPx|HH7qmt6?umziJR)>k#Mwzn?qL9p z{9NW|PqN}ib8qwS2v<4yXXjbhUG2J8EZ&?8gktgy!`j@F-)!nm?@Dohw-JMl!~=Ar zU}Sn0whDpN!k-K%H5V+n+no}-;l8!(xDT6ol}NzDAKmglbgIB~{PKK)ko2rc9mw0df@@Zsp> zX~R2jQQel6?I3ge12A(_2A>Gunr-G_a{xg5f<6L}+&OjHX}k z0^KB&!H@cA2+H{ZIYznIG-ye+lm}>=75&&GRgQ49$E#GaOPI_Wgl9Xjf$c#M?u5nA zwf!WGzJWgf(0wV#*&}ey$2#Ol!*lFc70zd`DzG`AW#<`S&IA0Hm`Z!;blCUv$LX7Y z#FgIcro~yLv)Os$1H1}}lcg@-g!IKBSGe{4DG=oD$DJ4TCa=q4W!t7uXEYFdg=@vV zL}`Q$FKA~-`(mhJZbeq5xNVoz&K-uZydn-0@+ z!(IC~V$aW{HBu(JAV&E44{eArgz+2wfy7j1BbzN9`iKy};-;Mh zl{xx*%#BQ<9Y!$4_uUg7zCkTV)4~m&P=Ak*A!KN6C??OjLD6QfFkevqVe54}2$zWY z{wCQqr45l%?`pS)-aB7;h@f*oLx>o_Uh`e^?w*xR?l5%co?VNVFq0TIEpXK$Ab*z)e8#-@ zVW!pCa*bJ5u9p4kWWII=d>DlpCL%>F2K>Z?Bk~tGt}qp~0?7T!fK5*2qPC+hfm%^B z`EQFDey!RolJ0!aT*KTB^6V>S)v#b1lX8tYWV0z-T+1@^>;tWKV;av2COudTF1u^$ z8#q-itM{I^SJs8@(%`2!yob!@_UPwkmvDBQQFJ$5=U-F&6*5z3EMQdK{Q^~~Q{EQs ztLqvDbUULr%b*(?hq*qeY{)UVBfAz=X{{Y1B8$d-e4G(7ITchb1n2pnA;9A-zmvAW04Us|jWVyz+-HZW|r8)Ma% zKk5;fNjhK7;k6e~P~Njt0_PYVp>7G2|237cgp0;}7YEf`4X{^?dH8l|%+IU%sE1r$ z7`mv0{R#at!cv=(?;mzC;cn*H&^VGg&j!F|VgxwxmMuosW_jh5bTrm3%nv!)m%pmu z-mLP}-sX(Sm*}5hcXs%zc!7yCeD;eHEF~K1CsiU|k(l!ZrHI95JyBT-vkJBI3j2SL_ zaG%?XqxR7YO|0=}ZAA8xUaEzrQ+V%4-tjO{lR#(>aU(X6n`WOgva0yV2mUK9P$vt< zS?wj~(Z97*iGe4sW7{gN?B3xq)%4KGCBoCv<7ANU5ZQgkj?JkvmFmTdfSHlj%^vpa z5+Y%h;DYj6tHpJfy{(GN6wIzyz?tG@Vg24W*Ltfyy-rvvhk0QEJJE`znX+7vYyTRf=n1(^Q=gP6s>}j71$Ee_q222V1!|v~5kjj^I`o2h_8l7791alf7*kt0Vl1 zz19=cvp057;Xehh%dG&(>yBT78sXB1g zeD<3Uo7`2-n_KOEaBHV@AJa+KozIjFdA2))d%D>w-xiOa;>W@sbS(Ya2KPH+JkPH3 z3~SqI59?3A$JD07yiG5__@kP=k*b-^pQVtg>%W+oI>oEmY0MU3h9|9;UpX7c^!3jC zW^McB$&4>o=yr;A-QxAejCPOh@n^>Q3j?fElx%Iw6}E0J>C4T7^OG`Q!ue{HxU!uns4PVqTnZLYpF<5#?KDvmimaW@u7~cw~>zcl( zYY#bNnTO>{5xAaWjx8RmUVA z@l?K=AOc!O$S1>hE4^dDf4qwR7FR%XuRdeUVkgE$S-VM$F7!kuKr&f;$#Gvl2ypsO zk%?18vRs0pZ&j|>8|p&+#Z>wr;IJgrQ{^bc^IZdYaDEQ_q=~XyZwRq;Svd_0+ix`ptp^dSo(x|VNo^YJ z%rxmSN#9Aqj}24V!fr1w#}S8loE10J+J#=X%$pe~e_6!z#x$tR1`K1CDxm2hZpJIv z_?W6Ws;Xl2vZA$OCtOh_K)q!~8eey{o{pS`TnBRM)qnZb(6mSZ9F-rpe8;nU1o-DU z6p8gY!mMoZqt?j^p5w>$S{@_VnYIgT{wp7!y_}~_#zS-6-{yYRz_TjT;F7D;gd$ePC z&EBeuGqA(hJAsYWq7Gi~aCRLly|yEB^H4tU@7@g%0zFn>DvevNodo7VDpo$823 z6g9aVwS*S};6-fbO8YE6eLd;PnsLeL3Li1`$21&|nl0{-a_9btUaDyj??hxL?Cu*q zT=2?e@y$+7>FJSdGPeP!5D|6ghp5*DlGP7X_|oFP(p`sd4Q@qW}B9m)cZJm6kUzp@}}4d!b|ETVuV z{Ovxdrc3$=iVOi=WP-8Q29dC>4C#6C%VDiK!BVh*6QkG+#A{-BFJl(*dV_ovI4-O* zeZ7)Ub#hxCj9;|Vi2)L>y{lQg@?C+@Q^h8-r++P+q4R+IAzs(g1SVwxVj-q9?EGjA zHobq0Hk3)eRxS-A6hx$UI-z1A_U|QIyafh5WKd%?<@0~s7DklXuO^36v`5;5cbw;? zlW{JJ;I&>13+I((Nbe3H_ejM%{oCexZF%3^-4K*HMqz(ldak|CY13W&>TSrPR{Ij* zR^djZojk7^vxL9)?6@)f*EW6ZqB2pRUD$d?ZJ$4B{-y5FZmX7epI+XURsel}{(D6gXTzQGB~=#SnbPTx@Ul(_mWcF|L<6(BtrQ#v@AQa*$EG17Ij zlzvVk%At>TPk+pWwO$RkgX-EIXI;uAV6Q`T9f30??>7bz@1zUZY{xv5*Usc^dwuZg7Jg-+Vlj9)b>NkmEV z;K(A-A=HdDnjm2Ou#eBN2V#6JbQ7#%YTL&OdMYQgVc29m%Ve8yj{g&Kw!HYO2IdLP z1Eq>Qt9P^_B*aycxAK-1Db)2W@8)cEjQUVHYD?+!^G!qXp71{$r^f8TOjvn zB8w@9`O~xTTViodb1!nrCF^PH9UTbLN%Pg9OuyvGgUt&iWZg^);zChDi@7@C?EGq} zZ6;U@xmi79>)IA_a25(DefLys1h+PkpCM@SIDy+HrfiwFi^FXof>D0^O=q{sfZolt z1X1NglX8U%1=dgAXXlV`t%sy19lm<2pBDC;^QaEbQ95Qj6yeMQpmE3ftm+CNv*1m*bKw7S!-Y;tzSPZaZsFIa?8BKY>T$Z@ktjoe z(a77X^%$E)1>hRI-!OR6XN~SoU&9XbcthCKv9KGi8~AJ`zFXEBJcW+2d~UtdV`GyV z47%!>w!iGx!;*p%_-DA`lD z@il+{^_ivM3-o2FT{~#S_w*=GwBELaoEDYjIT5iQXC{ig`e1dMap(@;u{-;LGQ%&` zWbIV6SQ3Qga@l_N2=$pkEyA{CJ?*Y9;gB{^?k^JM8>div{j&p z_?Yh#VB-u0W*8EVFeZ>_L*twAS&X)|v2QsTYpG8~=!2M}+16m+@+3#N>ME;9)>4BW zi#!fWp^Ux(_0@bTAPcqr9!+!a`_Acm84K6@xza=mtxnP z=KD?iLMgdU@`aH^>e|O#JF$V4s%q+yX`K6==aZeE39iHt%+;NBFO%wc0=A!V(y&xGWai z1|@v1;pof4i)?7ve8G5_J#Hym35Z+r#EnOn+hG0rY@pU2x*2^KQ-9?R(KO)Vg7!KS*aiQtNiR$-t=}143b#KICEm%42Ub}K5#x} zpaX`#f*u)^OxLN0P`pS|{mvEpdfzbakzl_BXY@_|ko89DH)h`X@8?_OqFbLSs=v4G z)4>eAqwu~>Et7`P$P2&Ip6{@A8=WvmEgs;qUy*bw%+K@k#s^(H%8X>AS_b1K?q zcQ)CFP1jNK{4J37@BnvMn$40J-5KoBc`W#4ILk~?WJD9-V>A$XxyOn7iHdm?-fn4TwLccI*VY_*`qR!Y62KaU z_lbd!uPDB}i+yAu7MP$J20JasXUyZV0!!7c*Cq4Wf$ze-vmv+750Q9F{mV^IbV9UE zX8M}*ZHzH{%#3gfen2#M2pwFt$j2Md@4_t2a(^lN;?e2tXPu~uu&ygO z%l7m*9p_IgE&Pc)rzPa9xKFGi{d4=_w)45m=mAYk%zIo8u3^i9ompJvV&hB%iBCT` z3`DnX1p=Bce}i%N#O)6cT*xtMIQ$1>(=bg=Md;Q9sCDIP-Lo}NzMPy1p}t43!lo`o zPDR6}A}n{KN`u|>;?qRkd;3(`_jv?UK3_t zMdAVRR--JPonm`<^tc|a59>!~xCuTZ`zYO*^_+hBN@`f)#@Kgb;)IO% zPciD0thVUxhFIO!hPK~nH_Pj3^E=6(jXX9y%VwV%>~DCC^6ByVaq#^8tV#S-UW^edF7L#)nX-;4g9@!N*S9)dtx=*jvam# zCE2WSQqmxVL?`$!`_Emv+E4*^S`MrsfnNarUk$z6*4hF^IWtt+Pm<|zz`}~K0qK)> zmD1<2=ah}RHLV5>yB?t5Q<#-g!W>LgHW>d4rQZdQ;jX9eexAMUJU>HTr=lD$x>`o2V7U7O?>CG$f)QiZ^rOHH?_N?} zam(cdNBJp1+seurxS8!Yz0#7rdn~7(f4qB`t>;e+guZq!?ZjoVeDY*{Gtqklr-7y+ zcy6>GkxSZz4+se+&}Zz)b@YyF_R!F-w+&CMFZ%ZqujNS!So$V2#m@dWl5Qrs5MX8G&e!|lZb}$bcLTFz0+u_kDS>!bU z%sJ>k18@T70&L-d8HYL<2j@*zS!S)vpHQ5ad4b{;x2}M}S*yd~ojUlz0;tdDCm{Yp zD6~5lEiK#TjAJ>MfA1MK@;GcJHM|hP02R%5RpNZD;-?UnkJ$U(s(H8l+|H)va+GbU zOqk1Zw>(JoqrJh?hM#3I$t#JS2+3nwq{@yufUXcwwD9=(s_Q zXlgIA0(V+MmO?fKE@?+fPb9a%xR$`b@RJk0G-jg)@LxvQ;0ZnKijOci0Y#bZda^JC zx4nF{xLTetgZ$hxZ-qRQ1S5tjT*6PB*x@s$S~bZ2t`wb2D4AsPxB$gG zaJG9sL*t%BTNQZz-FNfE(bPG+{MYMt*vPhSVq2}Qb@U77HqYuE3KnR11jC)~FT5<@ zoIhto8-|$rO_HkJ3T91KD3`o9Ec*uePe^opA0vf(UClY_9@~DR((Vl`=U`~FO-Jw8 zV)9XhsaKb%sdKSA03Pgw>|!;6Jh>;EEk3_l@dI~MvPd8+r?B=+CD;#Ii|`E`3q*(EYm99dL8FR5}0NfA@I zJeIv+RI4~IDiuW@&asHd{%x@cyUeb8m^MUy==XGuG=9zVvZ5WYrZ3A<@+ldNYX=dxCZf<)lZQoeX^D3_|D zkyWjRoT=b?nDfR?`z0>o#6K{k0X(Fuqm+AEX_Im+*mT=Y+{0Wr3^g*>IZ%sa;g!DbAxUI~9JWU2` z^?Vi>f5+18P72r4FNdAc!P|~V0$na_q5pL_v+CyK$|K*|&mr`8sn4BJPYcX)MKtdE zRhbWrYjUy=jz*SbOAbG@){1nIcV>UY+2|F9>yo`pKwWA*UOrT!mF>n+sd^dYvt&P|g60|$!|;fqCa+u|x`M{t&%KUsa-Lcixd@UuS0 z?3{LC=T}fm+oFLaBz)!1T@0vZufX{Fp0XFg*fuSo7f@5+JUi4p%m@+Qs%NIw@$$eH zQs(K8viL}Fxd8H|q~Kqq`6}b2Rrx%ew+|l&JFU?aUkHjy>`zLwf;I<}EbWhKh-cSk zDxt-O8zA#^VT4PQG=L3pAR0lZ&I2wazKV<&J)wY$@k|q1M zDc^ItFFiG+eI3h697eOvK}TW7{f7mx=iQ9-2A$S{eugDc)f`wp6O|Q& zRE*Kv!}RDUedc#W&l#G)p__y(ZEHdi`R%~4X|D@v8K#8`f_TW<2whv%#lBYNGs}_% zA3{(w*BioFW-i2M$V+H@6X>8~sU8F*$ecm1q%#w$42hN7I$FTrciAnQG2;=;0*OJfx~R&n@*86|fd zqJ7P=nc?^vg;F`(ft&r^q^o|P7uq;}-o|;=fyUr>F0wBGSjz3YQ!y1xZ?f@92vtP( z=C2Sm`ga9x1NDeSFn9w4+BGex$UTWrs5<1yu7Svj2u5X>!0YaeM8*w!f4}>5oY$DF2RKJK3JDSv?L%_Wt;( zgR}fe2Kg0t6gTHvr->I!Ewuw{r=wcxxPl^_mP`K%{a!mA;rzpVD$T1mVpfw&oz7$S zx{)tZB!Oh-AnLV|#iHXM)Qqxz*ua5? zz-^0L0OHf9mX}_cYozGMKJnw;jC}=Zq1iz*x+y8Z;}8P@8z2# zwWi;F$m!LMt--GJs4i(~fgZ#uA4g%EX0wv`@znW^lQZy)@TJ!g96xVo2`LJy>=BL@ z3Dc`mZ>jesONwzDn5whQ^mInSuFBHAk^ctWe{`X+CMtyx>-qKH5CxJ7} zY72UunY}Z;dDd~dK~BP2MQ z1^ruM6YlMhP|$V@I+nSqRj@Vn2or}qC+jfS`CNZ-Fw^E!u+VCA9M}@urrs=h|0tq| z0{%erVZU_cZ^K1e_v(lmk>q0$I%qJ@bMpK<<~AF;H^!FELMQ+&tc6XG_!!4V#sA8~e+U(9!yjJFy~9lDY$9q|?R=j&g#jn@aGM<^?ytNINIWu2= zhJNUM`<~es^PFY%7Rl8Kxz<)~GxyQohS>Y1o33NOLuQdvzxTlS5pgTqA5fOU)|b%N z=Zfv#edv2O%E5BX;uMRrAru@Xw4=ySib=xsm9g#1&2(i^F15EeBs3kwD&+5TZ@An& z*DBFo;>qiw_Iu+RDQ2#57nB*Up;2oe9x2w%Eb9D(81AfeC&9ciF=td=7GQn+4SgDB=7vd|oBHQw)F)*Z%bETaReTq#Mx* zxokVr-o1_u7G|%Zq_MHVn{$*-^-!KX1%rbw7Q?V-W=lR7=$Wu1Q?R;QOHdqVp9G_Z z!-jG_TFj@UCTJq01@!|%Xqno;AD?5-T0GlbaR>M*#gp6EHRPbu&cUfNDKv@p?Y&c_ zye4^o!!MNep_2a7=%yU<_`IExxx@4O6e+8?CA9iv6EU0Zum1In&16%*QMmkvwhz@F zhtzEBE-zc(=du^tQop~ipmiZskaI@$e)G+JV)$eEy9K+Ucb=Lz1-};2jL`S?Q7E#G zQ|p#9U_ZFqMCnwtys`hw{gfW;&1UCiZs$Vg8<3F4 zz!~fEr%C)4;yiMJFPy{GK0{3kfk0db)y5+jKPPHO@_eC4qNALf=rPao^Q89lL_mjnq$83@4ng zJKjnv#(@%JJgi*E=yM4f1EJsq<`HWOLP~*|VL#GdttJAV_GD&rNO4rPf^s=%Uk5eo z((m~QyVd#c%z3N$SIV^W!t}f_DT-;@QWcq_352 zUX1}i^F^Lk62W(f_UPkteh>$(*H6>?`%@Iixa8GdS!r9SR*EApL6s!F_=sR6|v|s$=@uA4NY-Lh{%c_t*Y?62Y z62l$>7pXAI;)xz@p`_60D40t-=e>c^SCLWG=QMY}`wF6pg2Ii2KUu67j)?LBG>nLk zn84c%>BNcWYct<@@|@oYy+TD5q}`_{6VN_ZjO^8XG5e;5*>6ivxKEek8> z?BFYgu7mPc>g|ID9*BfBvR7g7H z@9(K}2CtAn9QT5bpVo*8*G>;;Xx3DOg#Nn|4B5I2!J zlVaf%QMY7N=&@^3pE9#`fzekyb+OG(+zcH!vRTH3YyL2jC8Hny#>GN=@qef~3${9< zW=lhGcXxMBa1Ia%?(Xiv-QC^Y-QC>}?hXlZaCZ$bd~;{+-1!If?C!35dsXdK6r}si zo!^o|;07xwGDxFKr@_ubP;6>zuL%(w`Ku@We4?$`|K65Tq>1MYEd2~YHy?;5icr&i z)z+{6>Nq3ns6ki8RdDF0-ZM9UWj$($qS;HIC#S>of1e9z)A^a=9jC(bd)O#Z;P|<@ zEl*onYw4d}Y=eWQQ{&eHEF5mDf6|ob@);c&Q$6~S=2EKoR(Xw`Z6K2UbZcCQ16M2m zuNQ!XH@(H%_<|v$fjvD!Dg;aj`yFDXEED@er4Kf7bD(K#4DT;F4X;|y?79&Y%X5{L zLFgV!tT5u<>$a~K3xx?{8HI$~FU~J@ufXtJ>#J6*BVJ?B->=gzhmmNaxc>HYWLMxQ z?`x~U!JO*y4Gtn*?&0@4qmU~6(r5cV)|%vmig74?eW5ZpjMZYZ9pLMy=Y%u~b}iY4 ze?)~=hG25%f{cSW_ZkPZ@*75$Cni@V$TemPvKv=^@@xU?gOq|u(Qy-NjWIyGKYA~k zIhth6%Uo&}A(c8l(?NzGPb(s0VDe*mKIe`fLsy!Y?`t{E3t?c5Rp)r_kR15{DgBb! z1-BolfWT2VWxqZ4od{h5Bp>1rm4{{Ai;Uci-*P(mra#Y@hpo3Y&m4w_7E zwESQG-jh)jDAq~+OMIL&y!lD@{yKxN8_dIKTmas|L#-<%> z(Qyz0`;bot+ruT=#-V|?c$M1AXb>-#x?L(pOEZwa|9lA;S z3eUZmU5KQlPHD^S32KTWLqNUpwajMT25TN9zUdwyyJ*;;XRunGr_5%=6jc=UvJ zDzw#QsXn49882)EA@8SAf>G|bW(Uh_b3Trm?lx=AQ3B41?d!+)+yI8@eu$^POeu?# z7oU$XY4U$>Y?+c-?z%qfmgbnh$}`6lm`~FGK328ucSK>ghuJ$s6Xe>C%$FY|36DC` z@^^cshex@c0>Gs9%sAk;!48v+OQ;YWF>3ZR1g~oG^dXMEDC9adDA_C570QqRVQbDp z`j>HX7WX~-;4pBsa=Vv=tdo_5H1qqGzvlNCf4aMG6F)Rm8#GS5G$_NA(sIJ3K4qmv z=f#or?5oo(EY835)D$y=PWZdayw|Wv8e2c0|n7~gnapZiqL!#m^D4WiFOwInu5HI6qh2-DIx^eW7UNgL&3@TkPE4y&8f&`Lam z{F}EQeMROdomw4uwLZL__?(#k&mIa0pof0yfw2lIi7S zjrNy$eRW*Gpks92-fc)7*j&^1QD(QZ4`%N@&#&GY}Wqjzhuq-^@*YAJl{J? z&0=i56=8mET`ba zWSv%_WPk3P`*&7d;%RX7Z=FU#duC5K)gM|hHJJMlR&3utb-h@n3NWe&52shAucEZpKf{^T!UoVgjw9?9+U+4(Jc8#7tPbUURio2W zgoEBYPb*?+dTTiU35a(P!b<}1hvgTQbC={3shee{K*?{6{ineoG7W|?SiupuQkHN@ zgfX&C!>^q*QnYlm^6{*2av?!-NiiEtV0!+0S0B{Jo98^f_F!paNLvXcc(Zjj(icn!c8|))^q!&X5{2-Cy045 z2Mg4+mm{tJ_I|~QXYTKY{IoTKSKO4QT{8*G)`YjFqa9&+cg+(|lPCg7=EM|iu(|tj~BCl0o!!1Ep47j#rCAcE| zd~*5pOHEvV^x1U2bNr{L8O8vSJq;)#VeTg~|E~(0=Y?kwVBhEKKDPL~4(|KI3jd#B zYV-HqD)!vEX@if}!S?uFb2ZUG9jC6^ebT*$pmL=h54CC&y*g8+arY4a^i`OeBXJ4p z7riK0$bbj3zZc(3a4kZb*C{3$nwNqGa`P|^ZUUoSG+Ndy___vSnCD^Y*u(VJtAAuZ zhcw&$2blkxJQybWcSC}F8CCC^nYrux=YBw)(q-I59h!=1IdcVJow8b;;S(7`@EKU5rgvne< zuML4R7$uo72CDmk^?Hc9@9o2AtHrWU)BgjrFBtKKP8ZhgPArE4$6%f22kvF8-Z3W% zd`gFQq^l_-CcSKY1Rr@~f204g-E|rwz1xsGC*8UN zqaZc9*{BJ2R|s+FO2%ICG7;rh2kW0|+9Db$ricX-gyFq-?@*BuhWz?(#DR7mFWu`a zYy1}={s+t4=Md|M4RQ~LIJ=+k5{KK|73y9(%`R)t28GL8#A_$gCzqXjPDJFe&X*hW z>$;l}`P}u&$6~a0s%5^0+%-f&kkW1OjksX@8tV%zR?=|zb+4CcdYTb4^l%#SHDywP zBP-UMjX8x7c!|=!;N(4sS<)-!8Q;JD&a?`1(MwbRNy*>dxfwsS7gX z6X@vB?-?(fd)rB$J_AYQT>G)agzK8ElDMBK_nLdD9vrv;o6*YVGb#POfBq+5%S{O# zPX5k&B=pf9UiWn_s`X_h;c(+vel=dIUBSw9Pz|#>+0(#6H*#WIAtD&7sDOdU73&$V=DoTi&J%LWPK!3NTU!6ga?}Bm!Ui(p3KE z*_!U$Z~-Q9aF~xFzE52<>gmioPr_JPcxBd|tfuE~t5&^qmO9m;fE|0_3s<=lDc*5H zf(W|42xpD6oj#~0sN=79ltiVwPR;5hmi%noJ?wDE(a^}D=}J878Q{ynm2n*INoFa_KfH`x)C_fmNfdepOa zS9+Cdk^6x72M41&bMD_1p_f)3v>AAzpT4CbyqV!ZHWCRhl@}K!r~`i;LTp~qkh-oz z5BK#>9<~4xf~ZHTt@e6Hxn6@D7dxZ0$aSwyQ5)Aj#b4$3AFG>vb3Lijx@=l9$jo1G z-BMzI(D(3gpO4(j+i+NRC}yLo*u8sliPYka!9gjSP+v~!^d{JBT-`hJEUWx4mXm+n zy43{*KgB0s-Yyjz&){dn3mA5ixUWKv_V!g!`L@iUGAIhlfHL^ zU8l><2IX%1Tq$90k!*HwKDXXu zX%sp+*oBC<0RQD4=RWKR?|QP|W6e7~3|7!BI-_*hw!1Lx5$A9q5xF?S=;C3&u%vB% z?5Q5zjpIKL+Vo@o^gaM9`o=_#XrGc`t!VFEKQ|xF6U)ny2zh91ckA!pHFa9^0ecF~ zBw_58rPCS`G-yR!W$IP4CnlGBZuj>1lWVrv1+QlH3iPilX#q5@FF1a${4H7>CEhY5 zT1EsjuCWSr-n-x+q~O*8|I@}%tK67yb2h#?$6uhu&egxq=U;%F+pF^)Ou(3i01Laa z9LsJDJI}9&bVQH51(w4Gon+i=1`ej{WVx({2U{BB|C-@GW0@GH$gS)pf zF)OlngM0Aj;ZByj@wGjxbqGaQlV>6x*#2zQ;+ET$55nw7Hm~Z_DlB*rWlTsE1~rNN znH%xZ$Ru{=uV@^03QW%Xwk2o?bHK z20#Xn<4v9=T`q7XVW%l82D}W;8_Mq~;TglGvQ} zVTEGfbw=_W$l0eZ%?ceGXsw9KDO_iNz)kHgB2T^qN9j5@f=sgQ3hcE1iz6%N zRBw{hW4sWjdSd`$fX>HbYm~=cjR8jz*~Z2mt?R@aRn+ktM}Y>cQHiXqv^}KG zEG2~dxjm|ljCg)=3yG%$onA}NvGOEM#&l#D;U}TNqg7Br?Qa1a9qX^P+|0Eb&76@4 zF_FqIYD6dqReRL>*}<)3`VLupYgJk{3$Y}gH;SI|+z#A?Fc>Y|Wyv@sFy}#Z{}2Ol z;{*fRBj+SYP9cBCp)?a@NXkF7_wAWPRLZn89}jvfy_;(4*GG ze0eH~bxIj!aoN1Tre>_}OvGR5_GQB#5AHiA%sbQ^FUvaVBjBStd0VOU5rEGqODm-xz^ApTeZxa$-3L$Z7=S$*fx=jp3k;SgkVfx}-vCbJuxTAflMJUt&JFLKo; za4%+%dIN@dzT7I9^6>IR%h{s4CB$v^D^>{V~yybfR{y`9!!ODjNTySu9DJ)RXJh_&;=8*PcK9WRM_`}t-1g4{* zbBLGL2=hB-#2+#=fe0u%LMA)Uq$(!r*DsZ~ZQ|r`;pC;N^DaugEelXt3vw|0N9gv+ZGTeSbV$ z=p*O3Ul?UmKTQCxN*rJk_=E-JokF3PUVix;A}RTIZ56UsqT#Cnu~(cVnJOrh4YP3^ zRmXhN2~ydF^5Nci({PTBUe`Dt;vhK+jL5}7{h0{236AOUGPpP9d|MPKxK`?Z`=b

5u)$y9+68v(B<@=CcfznoKrYS|hKhME&BtvG_i6?^R_299v zzz-XjeE1C)gn$iCx8}dn9S`h%X$Gae#qEdXx>tm$zq$)*Vypv!Kd4n;Sfxy2II-^PL(a9DG;3DXHCf*V*-1V$Jev`njwLhK3=(U^w?cW$ z7jk)xoWSD{|I`fcV#-}atP`OXWTHiX*G6!pQxl{`JRM^jWo=VI{w-|ZiUZXS`^S~q z4^Ns!2h}W(;mqUrlhlIm{N|bWFxL!~ts?9kJD_g4d7IpWoyo=yttCm;$#yI#tYy?* z&T5Kj>oyIpZ>rj{zr$3l#l0v^=~4Qx&NvUJC6)M$GO*v{^hSt&Ch0cZbsW8cy`%c5sHL2Nabj`R#sv zG+^7nRf2LM$wekS*1C4J=X{O$dvLsR1k0t$+-nF+>!4V( zjB`m?JhHd^sa3f|FG?pHRbuQxk9~hJw|>YaFA;!WRLMMFh^r&y61Se3h;+;K<5!hp zl|^y4Prdd|q}{pF2v(W_`8K*9AwCKI%LM>W6O?~J*-#~QYpHuOcL?QooV=dkmD$aQ zG2lbX#$|#8yH@wPVB0ml%8&T%t_hB4wFxnC`&me@>D^>%Giy7joajT=I`| zF=i(+p}~O1DEU@=3xG6$-1eOMLCW|(Fo^8(G4C+bY>qof(%V%NK1D$l7Wt?^kB#VUujSb^l>s|?Qme6265VA(3rQ91p1K&EB zm6to?L6fX}BY;ImenhIISVg4aGlnv%1mo2=BdsBR;7{g*@Q0FfsDk}@qUIGh{tMA_ ztg5%5naE)~&A&HfbI+wvI8C}?xgW>v$!^FQQI7_rdKTvb&r!2CqILvzIOz~$nWGNT zL@-MRn{sU+ZOdg>z~f<(!r&r9Nj)rg@{hIxM8TSFcr&uFEh(lNp6FxX)lP1+I5RKJ zxb;awT+Df!V>8PLAN8k#i`?KVs8}$0EmTms54Sl;ipca;K9Yl9)iR#ChB(K)Juzlqtn^6=VU87mhMOy3aY03_*Gr-~QG8Q|Snh0XPQ9=I9#Ik*uOsgJUt~J7np84&nvMO)Qv=#C(u7 zFolT(1qw*jdEGE;VlVY{@p5*ah_*Q;9PPu>&aEU@h8zfHgVith$I!1lOVIZkFHL@#}A2c@f01Vr@t4;dPt z#e##F2d~whmyH{&X@Z6AJkLr0z9X{=`HsA;qIv*9hS{D0@)<{d` z#>3`}c#HtRW_*>Y&)f<=`=w6*id7%ezN8@unvHxaa`xK z!-t*9^JdM{Dc{%7thAgP2Y0wR8Z(*f)d&q8d#1%R;Xww-&m|$UL^_mrX*O35HB0P@ z0z|WD!Ox-Vet6>eH#&_~soi_aaDBVEz(tv7^4ZMYWj2N3c}`o%YamYGeYphONW7}O zpX|fp33fydVqsBBIhH1LbVeh$bt&a7o&@E`_%ecjvV}|gqs~_phHfSvJ7EyOHq7pc zCnrVKPYim>+;qeWdR4590yaO1&#d-DN$`58MNSAt?$p?@i0wxeL;4i$eZCWphU3t& ze8((1BBA-oE+dxPzGgfm&)YAFbE1n6a)Ej@N*hP;igld88eF_t5?zj zxJOY#1VY+3wyjcitht#d#R5XCn8*W=Q#!x49LPYl?eKjJx)44ucN&8$!>BHO>BuDm zt8|Q>yRf5C@OUdDi@4!&MILWqV z3uTP~2URh2UImw|C=5D5FMmXsn73$|^BXR&=YhgpcB6ho=5h=nhbd07Tw1K_xv4V|*nCm5Pug%7!{~`o3Kh9pB-5PY(uE!R7*! zywj<<_r)3*Hp+!&86dcLd+C=WSVwi*tTqv7OI=`b)BBzDG2?KrBS67kkMewQSUp>` zFMwdZhs;M3$xoj*! z5UF<^Ud0M-*X?`Px`81dQ-DC*cv}@4(FEdbSP6vbx%|FWewtj;)*+3$Z0)Xwr14GG$V~2|dEBG+qpcbpDZEwO6Gv z;AUPP%6onQ-yMn1IzNomwT4vZ zyu|^TZR7(DrMJRRdt|WwcR|4gRM_zkTui_H)(8H2f7Oi{O;U3LUt&>2V*I)Y?T=zX zI+DjMIQ<5c*$A2rbcO~bUxGknBps9$9$TU$CzcPwED))%W4BSEBKxSZSU}9XQOY)c zinV@oKp6lso(A1pQHN2khJ_>^Gz-z)oB#pQ=>&;`?=$m>t0TRyHZjr?xf@R`uxY1V zMJRqgC)b=%R^8Z)d@vLh6Lrw``rB(X@4=kcohIdY>b4-Km}BwACsqEvKGuu+erTNxm4`Bb8<4g{gCF>g@0^$XDm0yuA@drYqC*eG3RZ9 zc7+bI%nVa|)}GQyiC8>CeMim-v4Xds0|@#ifL1UF1aya0h9ox?Kruo{&`#937}zx8 zSc6X>SO@PpTZI%Q;l3n%M7bvqYMJ5i$JBP=s4Y?SW$>tLxb{sDCvQWV&vheA$V{~~ zzuvI@!KkORd(pVv$9*;uB(*sFYc4HcxHGkT!>=CfpJR)a-`Lp=5CtXFCN=b3YQ5KR z#^Ye9N-+K{l!#2wyg`?8{1y>m?!Or*Wz=xo7#tj}r^)X;pxmu+Uno@eAQh74Od^mS zBMy%jk4Xzy73dfq%?8T6KDx0Vf#=5=ns_sMqM}#&h|a3xFO|yaWg8QT=<6oQo@dbL z`Y8?0j0>Qb8u{(9a9=;nHmMEAGvM*Ksx6qw?CaWTR1iiex9(***)Xsd4w+{^<`6oP zgX)Yyr>Wlc@@oyV2PD3z6prI`-}jkl*g$UCW{P#T)&eFGv$)>;+82pc0;t1Kdh5`7 zH-Gdwom?i2Zi4~|-PdQoBM`2W_Aym`klB??wn*BQkW2)1-A+htH2I!~iF+N|osCU5 zItggZkNZa9bx2>#=QITUSTuW2+BeUDshV9|dRNktuZU}(J=Q7AQyR6;@5F&gEL*g< z&=HaQ<1TZ$H-FSs^|j_hYM|9+CU@}#NXZ-!1Y&&)eaGB8ls&Ngw@hN^!y`BW=dtv$ zkauJE5v(1vEFhPUdi1SUzz{9zE>3<K4;x*8CF1)%4>cYaPAndOePt>1=PO6lM@id?(MDdYuy3{c&syUoCGE$h z>K#L<&jbfQ#a>`GtF>gAYCIh31G~D6-FV#GZ|^IX#-V2&M0N~j)jXs;QW(9&y>{x3 zYr_6t&WRc@c-Rr)cI)D%shbmGq3>#Thb6H@EJo?oD%Ua13GT?1(j;@w!+;0GkCapF zI>`1f6ER0xmHx_@EEqs*IA4fr{F1)&qONnP&@K3rcI-S#v}Dup1@Xjo!gZM?0v)TBqW~

i|3yznP3z;8*0IFdHhB)mWm9a`G4nTX>7 z8oca2O6_SM0Wy?H*}(KxzB z$6C|Z*f^HPMbv%7_kNuMi&w^FFfdfA zB9{HQSaVr@ZI4ZsvXKJKIXA;cy77oa_er7NSi)f0mq5p3kvqH}M8o=uhoSPBVizM^ zR_gq3Y|Uv6^TLvkl6Ow+d8hFsu77?2Sn79FjV5Hi3R3XgcB0=i=%@FN%4=&^y3n2~> zpMR^@bN@wY*PWmT-6gkJ1Eu&ITBr0qUz;jfX+Cdc7QUh_K8e4izR4WuZZ zW)9`ivF%Ps*V!p$s9BGj-Lx!O6-S=L5?D%EMK@bSJFW zHmUlA%;3_XeQ7VK>*Ebo%3tGR(;30ZK&x-ag2p+Cq-dmqfzTuo4_0{+>4vqFMt&rl zqvu+jXM!bUhRF{I*iysRo0y84zCLsfS;$_F3HS6Pl`oEves~Tv*hekcfuM5cY7WR< ze)I994u#Zeec1lQyxf#Xpp+5`YB3E-}s4AmY=fCOd2l8#$NC-4-b28Qy^rZRnDuD7Mm5;XHUdw_%Cb$24`*-h;cB~= z_DV**p8=1jFmoqAyw5nvQf$|wn5es7)F{|xD$f%NP&~Fl3wZPWWth2DXpM|(**e}8%R(TxP(_F= zIDuT2Cxd@(0I56^H=2d{z6`Bza8!SdT?ST|-ab+{X zN@Km9tv4X+!F)xgOfJKreD;q~YMz7rM0Z4c3{&m&{W^A~PQ(o#GGL^bdniuVdzW?o zX3--MN3cp{DFquE%-N%)nAnG;oYkj3yaXFBS0xb?8jg~2ZoCa}>76SYzFPW4tG~d* zsC>1DQ3X@wO5fZ0I}wGZ%bcH?Fv5e1pO;dsiOGI29JC*z`_9`+!VJc?=dVI1%NyHGTUhZ&?VRu_&#@^R6AO|e@z3IS zwj6`m?xiE2bK;@ct%F-N50a3CuB5%lxB+>u5zRXi;zpEFl)tWVdhjl}2#k!ZBMzSq z@{WRy+u7S$#!!FwdCNZp3Mw}j-K?yu91=p1pfqQQ|j<21Om; zl+7>^nkOEFFb+|0USzv3dAkJRIz;s71JqZG+mke^zMTIAn^ zi5Pj4<46PA_L%!Rc-Tym5ea3`M|}*#jmv1s-wuPo`=N3x<rQk;$Me2%n-Ou%` zz*BE-U_XIGDrV9d=Xk^-KzcF?htxVL<|Ct8T2yv9D^3raIet(1nJ{hbI})CMe=3Z_oZZsGeBTgWWD_2Z#J>&;&R8G821cE1x)Nz$hd{Qo_q75`8e zb>rC38=-(NP-zF$ag&ToGO_mycn4{CsBI0$R+?12R3de->OfeD0|>cXA1aYN(`#@^ zMaBllZ5As-1r4S&S{X=MK`^+Umw(p=hU8vU^J8}l9Ypyz?Z2ns5Q-tETJywx$7lQ~ zGDK)a==%nYty0T~P1_(W#T=d9Pq;DnMv;MR^@6D<;~m$?lG;B+ZY?PhsNh*|ZtL#I zd9~(pjlBs(u{++er6KPeOPHH0N_(uH&G(7bBcq1#kJD6+Z^%CWp}7>`k7K?6PNPXJ zRF4bG4Q54l8mOPae=cGyB2Adv&LeOCi){n|CX+w+51oWK#3#qZG>Ub~${QiVf-xs~ zEt2KgCi=WYMCY;0<{5H%-DaCo&N^1)-xzd|>#1&w42J11zcmXInbpvw*%#CPB|+~< zQ}Dv^+LN(0w+p&)o`;~3(&9v}f5fguae-2|U?lpqu>@XYuFUIQ7Uuc}(z$}ra7`lw zKs>^aDTa=3v_7v<#u)Q2%Ye>?jO@|er$i3@)&}Vt2TT6VAr?Zbv<49WgOH2>=UiOg zQjQ2T<3D0B`$)Bxjlck%e}PtAOeWE(mWeNEg%n&M8&hKr_s#d9n;@K?v02Vtn@#PP zW|qIJY;XdPa)VKXZ_kPEQ_?B5N@=ufbaZL$64HypX+O~Dr9Xxfk*SQn`|rqlUWR&BeY*@gue~b ze~9>tD-^z(iLvpcwG!R07)H&yNLH`9Y7H5iRg&>1a00e9!?X(})&i^ikD!8hT;qtm zk=gE;?Lk}PfwZOVJ1-o|ns&8n@4tQ6CByO{41i}hEU@n_d3#kzmggaYl=>;mC!@tb zIz{^5KMi6R5^EQ*JVZGY5_b~3-E|n&Dhgm&Lt2gvA))u%>cj!V44&V zv$-L`K3-Q=hJTUT@uNt3;J*o4t$D;+YNEhiDr8@z^T@QgjA|_3hg%kl+$*%<(9#pOT=lS+4O8Tvn%X zNBiL2HZea;KF~R?+c^-|w!UEjwO`B{Np8l$Y>@eYf1O_|kcvp@eNcI*jbF#St+lQg z`!rZQv7yyZ-B_FQ9&W~GPm+~gYxl#8C@s6_194cE`#0%0vA-~cxpogiP(7yoR;eQ) zH}FRFPwpDq&Rhc((Obzow|ReS|EV%IZF|!pbl&|p5oh~&r-156*WZ@-q9AGY^;De^ zeFY0FwcNA`9d;vV8+%1gecwV`Fd#3M#o`fvYniEY$m`&C-pz>NL-Kn>eANW1kMi09y@Pu{>zW ztjz?NBKMXsz+?>|4Z4x;Q95QUI9I^g_wY zr+fcM8X~0}w!$#5OTUsg9MhhE{cDet^BwX=ppC(rGE5c@_+ul89UwXX`NgLFddH=b z%t^Et6G(EWeMwmwb40)XWfzPpa=iQs?bO#ASoPOvXrzi=Yh)Z%iKYO5jBOeF>Z%Zs zxIH%TF8x5Iv>z_x{&Ihiy$gir{f@O?zq*^L_E6D>TkjJzF4%CBwiPt8QwBotV}AT~ zxz_3qdL|Fc+ONW5WFSOoE!+rgm3Sss#vWmV4omf}-Z zcZ;)^@E$<2Cyp}TA*Z>NP;aR}F&lIIOZMr9qWPP4 z!DPbvsrBY&y1C4$_iN(d?u^ljgC%H$y@&2Sy!XIqAj46ApA>y4ASV?j&DRtVGn+pg zh8O5NmDb$R2ZE8YsZ={M*<+XH-?+w8a&U5N0ad&IqlicpAtpQHk;@FZ;K^SL3YC8b zxBW-2>%T%?&ie?fL|VT%ITVN;vdmRK(y$X#h>B#UXcvFfnl|245PG4zGbyimqY>5k z-D7(!cLY7^%lHIu5D=BN=gGy{TBX*Z{}NznNf>MRrm_Z0aW#V7NvnXWPH|%!_n^^l zjd!WBFx5L}mZ^}Zl8Rgy)bs0DJ(N*QN~&q3DIm zRPhM|rCll023ujA^6#E;pY`;uY2AL(l~v8=91L-6B5BIp*0Joqd|`o;j9Kc}9p7|s z=QhuRrfs7+z~N`LQ+4kM4|UT5w^a&*McS?1a)s8q=7V|HLjhDycAzWaAN?(w@2SNs z0m&iG)-W^;Uf|WnKlLTHO%g7Lx?N5UEsR%Zzg)k@Vi-B_Cd&mKB8c>f0z>s>a#1Ji zco!>420+-MwGcxWO;F?XYxa!C7?gZH*<3C2rt=V8wVBuTe&edPs}TgeA9;t^*+MxY zK{e^Vi>sW?3|qE*Pl+trTK4zd6fEcX-rg+_qf95?cAk?_f{p0j6xGX@u%|gUxJ<&g zKj$DtNF?!osQen{9OP&<9T6h1KGW79ybw4HoYpaX+ejNP9z<1xHh`Azp|tNO9zL`% zj#GM7-L^Hab~G7@WW0xWKA7e#;_5(Ke)Rj!w-#yM+9O4{f@~ycQUN7L#j2s*7YZ-= zB&nD7OpcO={A;{R3%Q#Dy6baF`uY5!vF5MxQxy&sw8_P-f zYD+_5hw-<~@tI%?S`r$M=$u%%*ZO%H3nSr~!)vsrVbrjiHO>aAUj2=R@NmC1Hst$f zllnviq{R2ZQuwGWMzJx;T5O)}#0C;h26zaGH{xt|GH?@oj$S_Gm%Xsc`Nh5q*$++e zPGl~x%*5RglHt_ncrJPNr3(z#mpHrUZ^Bex9nIc>CT4c3(1AhJmFy%NMq6pjt!J+K zH+RJIN5#=|>H4j7&K-s7)kcgr3oOl}0+%@WA86|x#YBkiOCoMM1UZ_Y8UmfWB{@FF z>mu@71v$-qn4@et`=$hgDL_@=$a@_S0h{IFB&U)8iRTHTBvWz*gD6KDHCrF^oa0eA zD-JfDLQIsWG|fS0fY9?hvm!b0uR6+`cX1AXM=Z;r2kGPH{64dOU0xM6`)C2jws1NKgk&ZN(&kbD?` zQxHDS7m4oqg3sIp)}i~3&^iKn7H{gTaY+6+KaL4U%?{8aoJH7pEkMQzCo%{T@0_E~ ze7Aiw^LSPMTt9)aitlH3HOoS;s$&;-xJ{t8VS#rh9P9E~l5`H;?n?Z+)Q&SSC6x0E z<089w^o;+@wt}LYLx=_lwQU1`7-B&V*PfesGM1k zc-ft@UKu%ztxuZ%Mq?1Y3GU9abJ&d>^wXj-|MpoUyBzORt@}~BhHrA-+Q=Hn7u?Cd zxpr$ovdAY%bbn#jtsbY@O(A` z9+)E%JQS4&&K*JQ`UEY8u3S+y)RlfHjkM`jECIGz!=uXNf$66Lo~pCOl0j z38R$XdGiio`J5*uQWZG)jr#05?3S$lLb=?Dn68UjUUebZuRN`q{tHNxua4E(bgOUc?geUpkPN6X<+vt~=zEJ} z@;mN#;>V_#C2SG5#WVh}G0Tr{Ylc+lCoB%GhsM!;w0ROj_N-6^mOpBhB!Qp0Eil7J^~FC{Cl%}R3r)`?+o-`6rdDqy$(=6eq8Kw%q1 zBFDRtW__vlhcAs&&IsL9fK~;s{*{l|nu{ju+`T_wc36ET29%C_oP4(%F}wW0fNp_e z-*^ux#S${=58_W(XnZy&!Jx^}1j$ir+1nJ+n5ii5C0+cW)&NvA=R4%2AADy&$1~ud z^-mfJ_OURKzitfT_qD%;pR#d(EPI)QX|))Kc-z7cveF)GLa7NtwE3`VSpJ9?be5X- z0v%9nU2u7y&9CIW2hw^={rjG}u@x&Kql%TQ9uQ@B`W? zw&!3d?sZGfCsmLdhN*FP*2_J)hNMb{rn1w)BHaa+K)i@$;5oCydFj|+gUHk((5naXm`m)*slHxFp3fl zBgz5oJiST_;88u_&c6x0X-tTFfv_;6$|~AMP^i2Yb}*JiAKqV|i#UaV;eO(k5;pTP z_p8B3UQh|AF$;&u0Bj7rjcc*Af0AshX-g+hMa*RfeOkrdSA-phABO2h+EBanM(q>X zrl0tcW*yJ%Fig)q>~ZLKdXzT-_j6rRYJh)4Fm6qi`}n_f9dx0^ga}=0g*?*}lVk1C z4v>4fh`S~;HW5xW^D-S@TH(4NxO<#(!cg3(z)l1-Kv@}P_X@e(4L`jSmxzFApneP- zK`>H}==;jg--{OrX)eObpG}T0yvE;)KQ9*L3#IjqJg#4afJjK~9sxn)WSpAP(@ zjiTvNAwyt^2;DsIixA!9RBA4^Q&sB^9MKxCFdII8#qSljK-^X}i(~9Sql|quYJBbb zNPtB19vhZR6fvFv!mChmRSwr~Wtlb;*CYmW7GCjJJIL``QB*r-Xa-U}dXPK*Au;n3 zPxc6H>zJEqB{Sd-c*t#Kv6sR-jhyVz%Gk%q=I#xxi z`Ziu;5jTUV2U6|ZvBZlldoO=R4qL_x8yQE2zm)iDUFn&Nj{dT1KqXmopc9A93eYtSd82Z0?Ma?7~qpPzulpLDIH zzQUyJXJR&Hz%kZ_ex=Re;LhkfYNQUojz7q9NdCsIWkjNlpGCLw(7)IpER_y>W7F<& zagIOdJc}v)S1z%mKkN1RIj%?m*hOOUM-3EJas`a0v4+29BjHMmtKNDB0jtKp#9qSX zzw4;CYz6v;gf{}QUvE?!+tNekbmnwmDu0?RJyIum;V=C zfq_Xm2&za1LbVKAsyVfrb>d_zt$1>*!&zwuC~C-i0-o`$n+kwGL1qMY&1o%DW8P=;WJfw(`Lrc|-vHP9C;~y$ubzuOu|x zirQFS11Ff#4R6GRoL)5`l+(i>22GKGEg3C%)alJH_Xc)oUZB9Uo};N)J01_j-~laQ z{J=NUL9;EjMN`!>VDm?DZr~}$)Q3Hoh>%-s_vmD7j7Dy z0Tf)@!J!l&(T}`7^+45aGfJ@HC|?}|dJc@8Dr!3qiUoZprhLi+ddi5~%CWQRMlSnV zH?;DtbY|Ky+3>?Vri)DYsXN}u@8Dc&AB>Z11UneWBYP=Z!HmwswU3V+Cl(?cAVJqjC`>~rW;$(rupb+KX!xAlB2EAd6=IH$KCcSi{kow_u4Qw+u*V|0tzx+}=Bu9YEhE|J zRh~+-&SzmMFUhljjZaYc&NWy3x4j;JK%M6r8t#@2C+LF;ugp*QO^9P~kUNHRY0p;7W4bebB%Oqfzq8!79$fTNW*KPPc6740Y6s#; z+K1(^lSI~dbRPX7TNBc1qYho?RZcM}VV^%^$e3l4INBYrPYku$doaQ=3A9kZ>A7O^C_;SPsh+$*lAm{KE7X6fD|q-`iO5y zTqGp8W4e+{d`DCUDKg33V00z+XL@u(+uGmqkvj=L81o+4E#}OBu=;1B3-&SpAB@iN z;akLc){TBZSEz?wEB4`&80k}vlk=uuKF6`IK7$PW>W7+8bpF#reDwmE?uz7)U_ryLiDyj7S%y7oX{!z)@fq9v zT2y#3s5bP(8~flnpBukz4;{T`Uy#oW7R54-t88#A=Ec~sspDl_oL4!(X`20N#K>5< zH|Urxe^E&s1aG_^Q~e!0a*Y0A|Ilk2#t?P3RW#nv<@m8kW07r;9;bTjm5lAl)>%MM zW}lLF_My+RWzZ3XJ@)pqF}D~91t;~Ps7mCGPtcQJv)r~Ge-cO9vs|#DZR?RM-z+iw z3}$44y^UjTN0z^PeCUiEuKuDwFf1t^I*rGmzzM-*1ZLjh+h?b< z?AR^?5_tNHA6_*1jl8tG!y^Md7_rCKg}2+@m*;Y-OjLXhru^soaU8P*1Q{{g$4}et zme-gVGL;H6M=T=1}>fBVe(tDOu#`SD;Z`Ov}I+J@%A1`J?1ew<(` z))TmC?Tck4=*fb3Fy3!C5A+;^u%ri0xvaX5kB+2mgl=OtST^HF2FdV;?`<>3%%6^v zlAlxPt32?)ANB#Muqt02Yp}hC79rJ*kD6j&lJs{Wb=$rlC?7U1vTfYeA22CfoVgv0 z89DrexMqQ_&-jte9+A0zMExO=;@jmblLI>5T28_^MkfX@E_H0E2Ws@g9t&u5PSKw{ z@k!Ke`bV3_i%g2tji-I;$rpZP9D){oD%3gmGy!p7)v6L*S_5~(hnE;51C4@T`3Sgq zhR63Z%54do)ZP`*3#)qYdSzzy2|08)cP*>)X2d`FX8Rcr8eiy@80>V?ftpLTn=5f3 zd|Xub_*R)MeS8_p2o^l(_%!DaG1~azMe~g03 z0)xE^cII3VcH0}8&37MjehQ<=t8X2ytW*&cfmA~~AJ;w>7u`Zi$0(gZl~w=!P!SK@(c`luFJ?JZA`o-FqQO^T11u2k=}L>bT3Tpb02T~ zY{B%Ui}G0}4|5k<$K>4imvPx2#Y~BR*@ri`9k8WqbI6+*pJ5f;ZT>@>ZO*i2pOY^nGmDQ*w(THNejmAKQ{Fys}$;7EDU`+q#(>J~Z@Z9cb9++z2K#3T>a8 z)H@z@+q7e`paVdtuzWj5aapG)PLG95^v3K3f|a%Dm}yp2@cA%@S`gT|T6si{0*g{U zRbDNpO=1Lt;i|@i)jn-};t=Df4v%fx93aN^);?oQ;`Y^SwVg}A#pGCG)5lkPQze*B zkCr`jkTwk9BZp{IZtz8Q@r-YyYn|_P@nTQ{*z@>lq-rCM4ff?(=^9XSXOo!LIl7As z4p3;PPJ6D?rdU$)7%tQ74@&}Ke+(nik*jw55ayBnj5X^Py*fi=63eChoO#j1Z0gz1 zc}ks3xZ^tyWTGqR_a9if`Y^s)zB>To2b}?Dlmgof55iQ2jqv-pA!0p=uW?IAC2gM| z?!=;7 z+@5Vj{@6Y`$K=DC^^VcP4+b*S=_X7Ne(Bhp;i{?rIn2lyD`}o+XbwAoG!IM)D!y4{ z-I_du2|xXyY&90LrC$AB=eheeexP)TlDM`a!^eqHam(gr96=;F*~c*UlMD9nS-26Y zCs^%064`(9i3V37lqu0z7)h-PZRHwl_ytqBwmgd=BV#jc(B<>MsWyP|i+a65qNV~g zKvT(Blf1C!TY!=0RzXgkQ_FTVR0QbYExjL)>;z)YO#aXxZ$yAr%&&O9K{ffik84n`_7 z4LYUpR3Vy?f)ywD=C*Kb6zx!t)~u5@I;Cd{8<&fHJ@kF{85eP3*rz`EObq;}VFq~& zSQdsRw^HQ9vG4@V(T9K!ua1@@QQK2mg!SgPaG1l0i8cH9R)Yd>oiJQJqn3q; zZ8~3IwPUg$9ArCO`-%O^hGg}Q#|3%)Wud`46`=6Jx*ZQP#O7D4hVLe9#caOnDfkk9 z!uKM`aPkN{$I7rvr2(mOE z0O2=ds0!yvQ{ATSD@jn(2Z&Kz+P+c(07b+eHdH|Z8E-9XLT{WWkK2W7h*Gfx>gYDI z-?XCRn2_V@iT)fLZ3)_|VAyaoKvb1h<$^|m7bg0k@mF=E@nIdO(S_%YD)pQa{>*-& zU$pkEaly0i@bxM`R7o9|s%0-K!zE{WVmDqNBRgxQwz<}gR*FsB{2Db>9KTelP$fw-o%*a#dmBgi@gw_Lch(6%dRsZ#dFNx<5l)>T z(1MYDcQyO!$*GP$P(F5k$3vA~r+;iGX5VYh1SOeF&d9lwf}vtLx|{yDcF7$y<90_F z?apm%f)zi!Kw#2U@g+u#x*!|jWorzu_uPO-GJ$*ZyP>Hn+jT$JO+bs$=m zt^5B!yqmgx4$u-MkMrPoBob&e9;7IZ9Xq^;iG1cTu|n$CoVzh0YimB|nb?W)`UFV) z)H8PGwZ?T=qGJI8OHa|~{HiDB}ptQ>E?%1<8pZ(Q}C@ZVvv`GiOQ zD;xA@D+e|_MDl>pHO{B^IB}lQx49lNRul+2)xCu{-S}^;>X4;A<_?}>1jEgqnq8Q{ zOa&PaY}+QU{V~o!AkhW;pS<^FZyc3FK{)y$2WlT1UUN-OpO6}~^(3mqK~7bf7Jef@ zhF|pgS|@N!yZ0ID7PUXBAKm01BX}T#V@~5UFgX*Wdq;rguyS?TBRLyiY+WxrEG>|e zadMy`P`!W*)gRpE6Ohkbfn|OMJW1Y$@X@ND(br=wS}4xvyS$uFd6~+Ou8n@}D(m^i zS28gw4@G%;F8)RjzWT~P;i}{OD?PgEdxoEX?a#N;&(Ha)f6KwwroMXqPF{U|p5w~S zhnKhBwZU4NsnS1lg}?dkLsYB3)=PA(LDmyFn8&Ua=JOq^AHd=moJO+{#d)2DhwAu` zy;(nh(T4M@0Xh4yMw~Qa-9BgSaGLhmSBNF~<-nJX{A*h*4}d-d4&=HXbrF}X;atD* z%^#4=%WI9jswBFkq6XJ2qz+&Q_NZj7kxh5bRPjTbs20>cF-Hg;;pwexYv>~1y4NlrUbVh zqSud*&hQ9iz$TPPs;zuN`t_0IKjAIP%e1oMIp^ytRN*HMS$za*j2+*)o1@(5;HG`W zkK#M|SdCr#<9SBdvFQKJg#MRLK)t#3rXgyJ=|)kKy;sjdN!^agB5qpo_;4IKGs75u zZ#an7IpazTj4CNDVW+pp9o-S81dV*;yB@3Z@zfj$@!KXEN*<9XC^ z^V3i8`fOgc#UTxS{LRLYIJpYb;C23qHO)B=N1OU!q=^aGiJOP7+g|=0=0`vyXO4~k z^tCpvlf1ZFxnrEim-A46%i*TeKM9|FHtd`d7d%UV-|CbGd*u=pJlt5^_%kLRZD4>m z&Dj4!j!k)Li>$4@jO&a3DQ8SOWuLePb^9y+6K{2=4gF%@`tRg#d+eUEF#%J%ld~Ag zO5eG{f8IXa{>-|Gk~a@A=>!*D=H6H$;yOX!hvD+G=6RTf3{&iA*zpg9)o0xGuG3(E z)rSuNaL1m;>7T4OV^K1E^|_+Qse8slm_Z+2HZ0ZTKis?KqHOHeAijxzZlvj7R>U?B zE5xWAT>9{JZ!^vS8m~1pD~ZMuy~C;d%!x+IukYk`4uYkI+7Rp*Cx+P%pqd!|CqUfg7}I@qR%WyZq%4&fpv2_dEl=PZDMO&Q^vWtV?Z9p#znsu0^{CjjW1&! zHYVAPi(y_N)vY(~T^n;Dp$jH&A7sMMPGQ{eQ8?SyFt*JNv9ZP$7qs5Y-DKuYYdCDk z69?htKXlB`+{HdF>LEdXJ;?2kiu8knK(M!MPUc3vQ4)&@&B<|Vz!^SXtpPT)>oj^q zVDQDp(mrGQ+EX*W%Y`j|^Y#zirQ40Wv3d@!4|mMdl_Lb@NJn2ecdp8D;dx37zA?p} zzFi~6mSO5TvGN-*==m-bPGWlGK)?Jd_i%E*@x^_TpLXCrao7HRF80jt>|TV=e4(0a z5qzLnfy3hR6W!%!0>J3HhR4(3v7ueOFz(zC1a->4ikb%*Vsm0pjGaNpczC8R%HWA_ z?1Q%1!ymasVvO{aEhwka&R8!w#KZ7V8-m5glZbnL;1fM7#7pr6 z9HTlR_`8TtD?_^vhxK&fFpmZtak&Z}{fVE1=eR|Ty7APG^IKN#p5OY@_T9(k6CN4w za*kh|=ba#_DLP)>L{Dt=)#;C4jS{7 z)2MZ*jPY>;_5lP=;vb?3F5}`6;EPY<#AVL2P2|EEIHqh2+8h_I8^>~~yWn@ciZ(9# z`uf4Aio}$K&&xheHh<0x;de97u>9B~$Cg&TwFQ@#8?<9t_x9@y7Lq z<;*D%9}=L;+dQ$~yskVl#ty&!X$S^jz~*2LA>(WP_IlOl@Rx?&-FARF-Tqp5YZ38;N!$#U&4=_zogFQHzQw2Ew zxWUz;oE#9qgLC`K?ci}h|MoZ&a`Oh!*m{oDFh9t?9hB>g_XJmuY%rYL|LO@0QBzp+ zbRza<%8b!eO!qvVz6M6VcO79aX8g?9TEdxzzBfNG_^J(hWpuWk7&+IUHXCjiota4) zzf?I_uxD`C?V`fxQ~~+ZzmpSuziry@7H~mdK388X9Pb8ybLmX9+%r3sqx~+W=WMEhnM)|mnTr-qK;=?>e%dvkJsK1UbgRB zG<=ln5ZjeEF^SpS$*XaBj^6YLD?dsaT`P<-cz5woB2F{D@><}Pr_ZO(|Mo{1BmJ{u zb7*WG|B3alux}mX`uG#>-(lYTzr+8D{%_&~%R>Uq2gu9;KW0JBE3@VKUJH>htt-dQ zrL}X54cBX}uUKM3n|z)8SvMg=1&%$$hY4!TD>D8!YUFLL*Tq}KH|GZ~acvlKn+N{s z(A=BI?QT}!il^~MABDLFO#a$fh{**#>wI?jvAbgl+RX$za@}W@yXz}7wEI@$L7ALqACrFXt?owP*phXJBDWy;#NN|_n?!nyx zq`3C>dEfUh_q*RcS$pj{GxM9h=j>T)&zXG^qoJ-qOz@ll0|SFtN%4&q1_tJ942(xD zk8%HUuH$GlF)#=^?d0V(l;q`^G~AqR>>RBzFcf3Hq~YmM>`@}xGL-nSA2Ttrov|xE zdCbK2kNL7*TJ!M|ah7x0uGODg6S9!BBw zb6Vb^q5NdAa zoT47d)-;-O+JcS|W?WF6O@6Xle-P@R_=mL0MVjARx}F6(3y+X|uOpoYOhE@_ZOV$i z1pX8Bx7ZlXZWXuYXZ}h;UC+>As=*OvskB7~nc=OUv>m#hjS76Dr3Uu5(>@NNeuIJg z7}s$%g~i~rupYLgQ8LG~B7Apho-+@8YC6GD8{DqtnGu{2STz96)f`7B6aJ~UUjS3vT*QD%G{Ux1H5~`9WBkNeoY)j& zrwixAuO72Jl(b##gyxDM0PiT&th4K}Y+p34WrzWb>c@nSFJctAnBS(pc&jL(75<9p zmm;1U;hvo7iyT35BKod&1Ms52qjYK_(rS!qqG}TDnE5EX&aAG*&NItMffble8OaR6 zLF|_K2Fz|QV(zu0gcs=r^@Y?037qlvQB;@R>X6GwJ%%wRAAKEl9Z4PWY_vm{=h}@+ zmyeVwp>u>cB5JMSiZ0+q5cdPd!>b4OR>nUuvh2GQhxkDs--M-C#%id~fyCd|EBUBX zzu=-!i!SdLV9rTbSd?8>)U&*Ma)sUYrR`aF~37AXsPf8Yv{Q%8g zj#2HU?d8k_cWBsFQfI^y^h)%83Qd#?30*W#lPm6s&dacfU*qa}*M)e;%JNI!{4!NzS_`L2UPo2D{SkygHCa_ zMYijBT_{!Kh~glWVmuZq3MzTlU$#8C=LY(ft!jsVI^cRm4icf`ztSwtJatI*Eca~j ztVoDds~qOaw8@+mPOxPk;mMd6JZ<__0Qrt`LPmN0^a}MVJ$#Q^UNBlXJuE$RmeioX zqf3>n5pT}07Euv!xGnQf^gxgyL=sVnD_L3J3e}0#!$*2Y`bVZmmQ+P-#NFvn^9g5q zkk$=@_-Ui%>g5vUQ6_&ps=WqXkjJ6|NJqH&#nF7=QRI>FrOA;r0}<2;`i((48#mi{ z^!aG9={wVa3Te|(L&`FbnMX4Y&PL89mx9MoNBs*euT0YQjbrW2$-UBj+6|+<+wRdZ z{^5#c=f0KkU|6sbhA0zfE^BUP!Qh(fzPNnoNT>?dD2`@Wei&DHHm(t_O1P2y>ZkTk zYA>L#)n51H4O=k9Q@~#yy4D+Bg`JqOxI9^VqWff&8O5CT#_P>^!L|YldP9byZ+UTJ z5$_u>^<6rZGV`es)ve$NNBOIAjv$-6i7RgW1^oPvsc!--9oMtF*CblqMMw8QZmL|W zjgqsDNBIqD+jgUaS>A3y2+;c>$;#2q`1iwR#iD={vA1|ciqR5NfR1VIhqQv5+@%e$yGH}rP7JiylmtWOZ&rgJbd2wYv8^{ zz-uk(EmvH3T=}-)_OD_8?BldQraSiSF{k_YFUy*>w@juDerdPBZ#G09;F-u4 zxY*&?l4kS9p!)cTf76|}$aMP5=h=08cZVEQ;?fdY_;jaHdci;TG62cFjI8E&TWJ97 zG&bG?ZpEg$&VS!@U@74_(Va=mO_(oLmTDHjuE@k$WzN>qHqDM0NC1mLAAJkge)Ny; zgU`Tk)iktCCpD@o8;aTTiVl2M(HDAkGvKy`yT;3p9Wg&s_Bq6|n7?s}i}(TloVjEc zqNX!ygac8hNXG008UI`3?uL<5xgCDflO`8<__XUy{%sFMnlV3p+fegjK+m4?q%NWq zQ7&OBIkPu4@3D04H%OdD`^%)dNqy<8*>^j2^cP{BL|w%qe#@k%*!EG&QQ=Xx|D8Y9 zrSNf^@26Yy&9zvCIfb{-FN|q2*(IuLtqTOS3Z%X^I8!>9Y#kjMr8iq|m0~o!diJMwJ+r57=2&ipF~KGwQMq30 z$cH;57fW3YXBB0N@dF=Y%o#)WtMIrAl=jv5A1K8YNNU^}nn{6CyM*zEAD8LsIffDU zxE|$nG20_Db@_WI3@;ar_~1;Q>5ib+aqBT~cBq2FN(NR4|D#o-{@qBks2kH|5w z{!)+r{xBXr$H4g)je(*3i1xo}tw)^y(ZR&Ph_b`L{*TW4zx_Ygr@!ql`aeBZawG=c z-#hZZ?PD(He`#aB&c*sK`ccbY8HSv;ypq!2UK{LYZSCa#!P$ee?9J?72EL1;p*sc! zCEGvkk&+hc$=|Hp!%oM*!$3_H0CtA(Sy(w+TJ!lpT>i0xA>{-3OG2zYESP*Cj!y0X zA8F=)X#oDx|FHR)nf|5X;ULXypr*kj@9bvHB*OQKPk>tU$VgK^$-@{4$V+^3{ZtW)T41riXc>w?CiA()!r2m)jf9CmbpoX1~wWGls zyT3^Hzdiv41w};v1N%Qk|5vEt|3Jkh1pYVje@Xrq@*f`nAUC_e6Ser~Ap!-Z`2Rn= z|5IPf+TGdF^B;9xCp!4dUz7OhTO%d{0)n3(2(TZAzAqzTmFTtS!Lc}p zIVvO;Jn<(o@?teoa^y(u{X|Es0DEf0oJgUfN5!_Up^b@6jjycn>g}VqM!Y&J&HCrR zgZ~)+0iGUtj|A3zAWum0Jd$wuCGqEav|)SMw!-sbd1p~O`~GX2*WG7rbsB^(oeWTY zE$^WV!RX~b6s8*XB0W2|)WB){Gj{k_QN_~53?WW};Qg1yd;y7Fi?LY2T-{wO=qUQU zhD16EsYE)UV<592$z2U$o5c4aTtBq9e%0-)%noz2I*G${=O8uL%Z0SvGMD?6aNO z0My=b3>Hbi&&VVLyQk3b6rKG3a4F+NS$=6R$N9tyi|lnFJl7}%bQTw1WN0A4MwuWb z6lE0-GDm}uFoF;s!MS5P;+r`htgOWLy-~mBG!UH*GAo&if5DuqTpL@O#OtO!i`d!y z%27cYrPILU;|D7$DF$0-jU>Ut!JloCb)H5bQ^5h45xY-O{>>GAXd#WeS2?o&dyUJu z@;PCo%CpXsp?eJ~k{4^a-#vVl_G@orq^hDA{60u+LX2-|-Il3b=m8!djs~CcSBymL zZ?&-8z1WK3!12FYHTlg+4G5b-m;!!c+m<{j^&`SPutsMVe0eA_%b_^Z6yK+6qB=0f9RPu9MpPIy$4oN zopQK_?_QilH(dT<^IMkfmPzoU)z}obF@jOJL2lt@bqIjY`dpT zmYa(iek#%W$F4Ai#99uhFEw>3*wS70l3g+jioR(G`Or*sbg05baLHLWwz69eIi#PMK zUcP>pul>rO05--p0`M3SPc5WMG{8ly=GQ?e4R@;`Ezx9=zsDAr8H(><81vffBZ7Q* zKE^r$bGnYgk#>&3(bT1-@2Q{UBiLXFOX0h!QJTg>hxl+?wZ|H3gL^;WQ`=$MuFjS( zv;AtZTtPxS?FTsJeRi2mtD?jC6U=9du&oH6b5mKooYTB_>{1#Gj6shyY;gQCh*ZEw zKZKuvrt?ob@m_?gR?6sbx>&BSiGR)e4%)$?4VYmyL5B6GX0h2E%fJG$Jt4u7hH^zm zPtBP@nL%|$^d|cwuwMxZ&S|^@R~yo+5o6t-!Z#O~Jtsg!{&47LQ&qb)3hBkUxyyK@ z=sIr7Yo{cCK@yV85>hI{vKk8Ez*{DTPZp9W%Im{4zZA2ZgQ{&}s`{~zn3dZ5pnDet zkPiJM@Metw7`SgTw+m2kjsna03oLyHH%S?nj6>o?M3EjalUaJ&VpUP-k-MQ^LjsjeJPp^i*_DX@#x;Ml)`0Kl^iSm)?q5Jm1m!>e9EXR z{jT)9XoU;-y|cdv`{>Io{CvVoDZP4BIq8$Q;4{x38MOiu)D~E5K_#Gh7}$#Es&H<$ zZ2T7~1}?<+kr6x->#daoV>$vPa3(=!R2m5Vl4RV8xWC$ z16KPg;3jItC%Xj=cfP8kw*=*Uwg@Kzx+kkXvoggtNR$m$-Hpu)&@VIOY=84|r1NW+ zRtBtItIY9_^-4Rx+cW-m%`F@dokBLcGa_pN zN8K|uV$gCzJfyw2kaJS+f5cfXUP zGCt=uwK7Q)6N+hNShc6*rw9#^{8OgVGDJn{0(3y$IEXko8|1$YXb$&DSJ%!@eS{S?Rg z9786Gm@muj@~hV+eQO^;w935EX;?nEEjb-P=-B!VGJn?bNmfYozOiWxr;b-s$(3E z>Mq!*mQBayuyf!XU}ic~vRT60pe@XdbM3c(Ecn-JWDXo5Z$+eDa%6Y&ayl7j$=BX7 zd{)hzXQS}x)s3sjU^#IQuDmB=4PrhBRGcg(W)H0Q`Q7@iwT@Gs90!T&Gu?#Em##SM z^sE|RF;33UM0uvB3wua3VdA-7Vf7{F_Gh&=qLqvtWp0*xtId#^#?#^wv}zWmS&gRM zeWKtCQ5+6=aT9J+M%pQbRFuW*7S_~N78yl)8FLExv|keIr5lVfD_6TxF0cxAsCihm zI#`{4X<<3!7k~dQJE$E1y8I&Q8Sp03#Hxip(B9)|W#7#22`AI>aA{6pJp?$@`ZrLR zk)zI+y`Bi6ayq&(D82=r_#g zVYsrgCFy^;*8V-slX3Aqk#z?C(q* z3QbhO9#dQ2b1>uq`9gk{cszCw4jUR+&qu+SGQn<+`{Z%fyQ2Hgq2aHkHw1Wr%-k|( zFS~bo3Qk6>V_I75d8#J6Y%2y#B3^!^qI;(&{*1rt2i*i{=ox6ni5Z|%x%s1OhTp6kbf(R958zfq=LVAC?%&jYML;KH+!LjX?lNZ} zl*Wr@Q-pL#Wy`k;*}|fO=t;3y0eZ8bM~=#*zrf)k!MvoSqV!(Uvuk^F$iv2jC^^&f z-QO;n9Fcr+S$>(&+C@QFOVKVmqG`}lr6sijeYLz53?W=8Cto%(UUC}tC(CqNK|1hx zoSat?Po5uK$erY<4LJnw9sh1pVQ5l#&rkS*UNn{7%5}nxDg*DpB;aThI8r%SI?C6d zlVXbZ^w8%$CD1DN)z$u&Z@!hYjLw{ChT&0h_;99(8l0K#*q|d?OF`~ zU`GwsjIaFo!LrT%3>)&np`v0?|4lcJ8tV<6BLg zLx(#vsCII>gh+J9#ZuY+Ops&8D1((oyqO0-I;tQ20BM%wGu3fRMbNh})fV?>&W&Y) zfDk)>cpBwvzhfWdKGw%@oaQ33jmD2F4U=AgZHVp$x>Hk~5l}Qj^o!~l@~V^6dG<2M z*_-IDc>jL%VO_XuGh}D+Xo;_(Qbxc&x0vTTqoK-ae+{d59WS_{?I*$_d0OQR9lBt< zL}lC)dzu&nxY*M-K_7ilQ|n##5vxD(U~E}xXg>aR*pz+Y)kN{k5`KEe<-yM=6S1C4`p)bM>Oc(5#!QUEx5|g`cV4CWBb3vQQxs zl1zBKZ4?W9Bz$q$oVOVLbM zOBQ){@LIo#a*-Fy=$zQifW?gp@d{7FE7nUd4`bV>W{4QU^`oNlFlf#gl~FZYE90PCT(5a zxO~mWrqUa`q z3>L;i%?<#FAc#1n5$^kvN~KK)vv2(AwPlDIPdkM3G~2h#!HxZ9G^1f1D!@*=;vV6Z z$rk`KyJT6ZP>)A94VrCsK;mp=Wbnp4olgGN0DrlX0gx3EdlkNj;^M@eH@M>wL+&#M7J4GEn;BPXPEr?!4B9z=y`Vq!>>6V9@=E^CsA89 z9yKWGjDS?Cenli!{~qHo20P@fR^U{Je4VS>GHHboGkWn9x)JBZ?7j*d=x*b9Z3HoG zN6cs~wxkcb*@zB!VUg)gk`GlBJyoD;-p_^!N} z1jEXp%2n=OVupp-<r!m9A+H_(dKUn$Al!B+IVRoA2MpEL4!R(8Beqh>BnESp_Y*n}BgcFDC|&@PGk zBAho=ha8Zej10=+KVH($BK3|=$+KNP^0SY7`&xAb@a;pgXb_@H{Qz+iSSloCq}x~0pS{YiubbcX*I|b2>`Do5Y0&GSDT*OVA7kC4fRJ~EKv3mFrtjN#7M+Ex zPJWrqV0|_pYyiSi{Z$6jw?T7`;slf)KXYP5Rc6l77X^d@!x<9^!P75{-uLThU)3+P zxseAr+z4KIeoR&s$BU)kogd$&z3p6HR0YdyR3m6KP>m*S7j=;J@}UW1s>0S za4`rw9nz`czcS)WurFM* zCD?#yg5PmJzT!6ngXQAW-t-8J@J9!aM#Sa5D!A=?#*j$1*}l^IttumEEs0AQb^l7} z#^F9FP_+O7KO)YGvpi3F0_8Vc1Cj2i%11jR3pAUVPvI6H<65&m(47-k@FbIITj@4r z!Uo5rV&WR9d{|U60Vwmm;x}o}eRoJjn@hqAj?y6z0i^QfJksG$QMkpi4}}VXR^)U7 zy!Q|eUV*^TAH)4jy!tyE5-QxWsj^pR(|1)y;1ve&wT{E&wELskmLPi> z0>58zcS$z{q+WQn32FgB?B_dS8!q&ZH%*aD9rDI0T~gxqNT!Vt%t-Q`Wyit9kF6dV zWASN~mk>!;$4i%IGiN~^jJ7_;D(fn)^*bd>or1%KnYPPi4q*J%Qx4-bnjLw7wnyxd z-4Ls8Js@|QLs97|l;bhIqRDPtF+0(_ICu7rb%ivqUd>1XO+3vJR^69Ip!mjkR^eMT z&8w234mraJbmX8!$E)&jP>#8SRvGBlfI`v_IlPF2m3{K7Kw3hco_0`k6r~J__jQoW zt&-uKHlHA|0HO={own>_2$wU2kt47wYE2nJO1IUBc)FzO_(%6dD!Z}c4U+@WR}Oiv z?qkT*5g;&JyE?|OFdEjY>{N+fwWo#2x-lAUJS`Bo8eoNj4!J5k^@=RN-mVad`&#@d z2t3>sMCoU#eQCL(IlXgV>{fCO>S4TPV>s0K+0AHD_oRw&a0G;@gTD-k$wlNz-R9gMTDe*^)+LXk5^3+&1+Pfz-FZmgU+p&Xk&;$D zb%gh`s1UbaIT$(KSS(DjrW6>zsjC`tk?seEsyI^NWkhs!aT98x&j zpVds_Q5iZ;92+|XRKh^?#+OeFcaS!WiMxQ-x~@86s(HD6k#MbY;rI`yI1k$d6ewgX@@#au{SO@e+bK-8@+&oEw>Z8 zvCHvL0hucPH?X%tpR*X4v%? zAV685rYQiD;*+!^jhgylro`M>V_sTMk<;f2k5ND+1R4VJueH!>QgL>H^|8+N(HsF= z!zSQe+W;Dc{qlmAZUtLiKc`MS?DA!PVW|aKn^-@8~su zoLtcWq`J?p$SVIJc`sEd7QR$c;R+EG%K zMW|=s9+z!FW9_=voGZ)mhi2uK0wWz>7z2QO~#%wws`>=~v1BUG&g++>k-ZSVL&zv@$yU5}(|MSHB zU&0^yT0kjW_2(xK*u=8R#E?n8B(qSTwr9~Or9`b{v73kY%_Hqo-!Ep)4N$JXk=F6L z!j#LjBe#cL4Zo}wOPY>FmI(o_6k<4So`%iKQ7#7GpJ&GwTwuj0MxDKM&y6Za^P8qzw@z%r9T&@JJus{kY_cKq@&N-5b36NRH9MYrzb!nr0F8qa}al)Y#4gNhGqfyjwd zJ(UzrU3;gXdFWPI%Xp{#!_whvr{9an^2BzyrxYPIc<9;W-vZ<|S3fMPUAbd>t96*4&moxzM6i2zAG ze~{C(cXrR#b0hlO$zFDFBIwlCXgEte@XE^A!=~R5tI^+wXfp1~_r}dMt^@fMri5z2 zZm$0ZCtpbHNe*1cK)|2K4tw_JKek>13tv;_-gW${qCt4r0Np@sE`ylMxRoHR;CkO?)JT`!M}zQpl^Xy4oZLOEx@GF0*1&qDh%~ z9b-g*w*`1`N}e|eAnbF#$oC5hm=E&g;YS#w)tGO~&Agsq%+7%Hv;zje=Yhg|u6>mYaVXr#w-Q;o(xaj*(3^fr4v|fqU zo5QaS2LayVG&5XhY>_65YxsDcl{FOpmyCgFp+$}x+{4SWC%ut=!*v(cGso78NEJGc zYQuwBU{`h8eYdGs$y`qKl_T5XpW2FGxM~jJZTR*UQ|pcBE^6!GRAN_l`;9+ncI3N) z)_OO$0+3VXID+VAp2XFjkN(rEPBn&V?&6=#+3vX!dkPpTF6OgH+|c^xG( zsa141v>VYqj?lG@_%zee3Gf-xixYc2_|YVVF#8ODE{?-34PIDo--C!~r=|37YCHJ&w^LT(*XZQ-zohI&Fv2nfK(Nxb@caKW1LNEvq;k zHIBi{yq=&iZFuu7X1X4?N3Z8v&rLppbV2p5yK^(d4z6-ROMA-9hVF@6Sf@$zB(Gfk z0V@etU;Mlo#%Gvo7Ke>bAe2We16eB#)0R#HO2h0T?1TELrVH6t3>T}N=b1YuwUOws z*~yJGIw((L^GO!pc$a>hSjsgsj4HGSmm(_}8Hbeace|ckw3QiG zuendoZ#C|o-qu3gKdG!ixdg3?I;H~VhrK1P(Sd|fAv(81Ptt|n2dUs!td&2$Xw7$j z=o@h4$YGj%hk%Qw9h@+!GzHMGXriCtMF)A|6~udv;)U;ZA=PeQL{u!?-t*9-PgGwr zP9LLowQcEIazxLU)5UY{t zI94TeHpt_^y~Tw#=8gfv(JF#{-=Sbcy$;h;Cdx;!8#1rLCTlM4=R)Mi9&lT4?gc<)EwJS{ZY78X~Xqz#qJYr zZ@x3uk?p5wHo>p@0=)_)Z!w%i;m>3QpWaw@tE)rT4uN%am1$_dj?B2?=dvdLd>$XMr-F{rBi?(vV$fbNix}VI8 z!$}PV0QmOwIYNM&y^a1+&Mkl(X)PnLfgJgAW7#%K-f#LrXV- zi35Hl471F@O|SdHPeKG1Ce^rtl;?Yue%Q1QG14ddewbn^~N6c=mHt|6OZm(lo-Os&z$U!G( zl8Fz`X=ywwO9~DGt)PYGaifr+wfP?6pv<7mfXty@zxg8MmY7!wOor1db9ha)Pt#3c zRk34}+>N6@3i>)vm`AeuZze(Jn544ZuBu2CN)n&-DE6EAMMZc8)!UmlzF}sRPgiTV zPvioA`#maTS{=sj+TsGcjy_Tgjw!;-zWW{ajp}8mR(nTEPeQ~bP$F!yflQC9c95}n z+Yoy`t^a%QHH>$++j6~yKZfSzT?1+KD@i`IFr8v*>q27jjHQ$0#U7sVI`8HD_;qS> z{3`hHXM%P(PJYh_{&mK6K?R3k zouR=CUeH-fWx8!t>f5-B7wqgM^qKdTuQ)t!lZAXW$+=Sd6PDKoBAshH32LlD{lwAug9uYGj|G z)|ouli@7!`t@h*EgysnDHb?CvQ~@KhW=-FNfjo{QR&6|30QyP)wFcYfs?rJ!x*YJ~o{W(nqO4`4l zqSn_G9K**wn?`6e`@)J7)&A~0R%ft;z_d%R!*x;<$1xnFb&|KCb5!-;&_Q@fc^#aEN$zCgrtSkLrnYKjtu z@3TO8;&|Bg2<~gr#Mxv<&YA3`TUr*ik%FV@DbuMJ3^08Of8kdEH(o6OR|GwLIt-4BO zaLtgKmX#0wDVgspvwW0jmQABOj?UM;^nWf{o0dKP^GScG5dxCbzpFHVflDB|40Kl| z|NQzff}JNq6y%e-G5W@hUECmGGvgAsvS+kL!f+Zffkf7q&4$3Q4UoOr@4L`0F@Z*g zNUw+8%A#)%jU>(ixgg2Lxi{I32P{Tl$;gYZGF~O&AbJTA_!6-3>QFQZhr(o^@1G5; zfRL){NQQcUWE{C`S)E#e3X{)v6Utl#W&(m{TW9X?1G0$xh3;-29FHo+`{Ysp zQ4q76^;H1rOCnKgdL7V5*VDiq(9B{EM%10p@ARCRz<0Ltd-NT)B%7>v-4uqF;VY1< zGo9k>a#6Iuu~FsyCyfFY(Rb{6Zk<@B?5JKfq-~*2xGUYNA;zBb-lQfhIDuZ0zlvun z?nX9MX$bT4kHXFRLwsx{NG4#lb5I+odrkFI8mP2dn5(xI|1?7Ungvc*Lp&W9h`(V> zfNk^g7394el&Vl*ggEGc0XGjCZip?m z|2)1%Q1Oc(6rFUD#RqcQKU5=GTHbAQGow;JieS^N1Th4?lFIcO&T!`h2MD>Ni%HvV z6>*Vjz~8Dl(l46fEE19cl7W}NqWNYHfCg4mOMF+mvtGM(Ye|`)jd)1qnry2Io|g&0 z>z9hm;$AT@8d8b0-&v6~O`wu#3g`){16@=rQJ$26CmUFdP=0-gKsutDV#s^kJ};cwu4yFMXXYuQ$^4GnY6yCF(sE=%GlStJ$kV6|@as%hP8a%F)-)pIb9d$p^f1nNRXvlyLwlXS z<@!K<2{dPsKjkVFO@PQ?+-b*VWpm|Zw=}U~iTLHyp{G07!0z%e16Eg6Q9Bfhv@IW3 zW)oyX>oO=(#DslGbqted#^m=PmcvsIanqdJ8*QTGpJWJPm){{{JfkTkpdiQ5Mm{OU zp``d+m%-1buDRaZixb-~%r8k60TVO3;m4yzWxc>0?+_Y%)`yOe3{cMWe5ejt)-LjJ)T=tFZxuJF{*Yi` zd}TfxyK`CnJ-1~1tJ}<+6cLCBbwO8*TD7aER7D778Rx{lZxk9|$vhNmNf8(Zu5@q*GuPYT5YAq zgfnf^yK%q_ zjcJ)wA!E_vEyKdq!WApI*Ovv`QjXB)BHy5{2G@Z5zC73Ca71s@alP%L_f8-<%YWNv zxnSgXT|GIKYhio1^Y8ZbmSMJ1S2BgIcBH4}aDi7)b5h{&?F^k*fVsWoQ@l7;7lGTV z=`*&DZ1N*VD*M>`LH0naM5BP+J5zEQzdPmKi!ier1La@Ff){Tqy!c}Bir?4ixjVbw{S)?L|6f1_EmJ?4gDk%Mwsmfne=op@<{686WSjkEl*24 z{+(z9UN038ITFDwUv2zz1U8Zsg%vONwhY4ux!_CiCD37`nx*N+3=CUg$@3fcUCZBc zM{!GzQ-ZXi47y_D+W7kMpZ@hZ(5QFQf%#5XXl`?Hsg^WF9EKq>bllL!;d3q1s*t`5 zomGI#W)KO9_<}~!4o3f@?x*MZqFz}xqnpE4H5t9papCstghX7pKKKx&=x!&Zr7-S@ z@)P*RX_+zVsxQ)zQc}3xx-9VSw-W5vW*jfrym^9OOd3(_>RIVQR8_Ym6~eqRq(z@~ zfMM#yRN1s3zU2e^1tVZi=WiLFtAr)CK1_AwRa^dvo;DM36}0wfA>J!R39|_&KD?x6 z6AwR;SE6c&MbD|Xpl3c0aanfFX30_*U0^9N#1B#P!){fxH$QJVCf)&bHaB%a^35x{ zE102Kg!B1`;tU_TVr@JLaQ7BD-&y5wLZ@u=18yGt1^lxokavoZ;?#tcj$R+QmyFhy zIg{RK5ex9S8$mue-Yw>|I>#Fw)1^s2+_{ct6w4dh##(6~Q;Ap&`V66*cm<|BB-Cv6 z5+9$2I4uMhQ_3Km+PtOiOQ@i2Hxs43`ax^%h-)ao`K~1==)V5`$R9!Tp4HW@Z*7Jw z)%A8IDmp1?GcXzqr+S!AM4Stg-PwBcKWx|2NCuiXR2US=_#J-W<)nXMDc&b7!NbUt zf6`T5rN3$-F$Bkan`ukwV%-lESXs0rVn^D{I~P~;+;k?n`k>j5OdF5;T0U4BclJgh z8mbcb{-zx!2b0iI$bDbuTlxTJyjgI(8bVF3lr2@zFmd9<)~%~YfC~)O*e$=bRnufL>zU~(>E+;i z^Ue0}=}ZaubbiXA{QmCvw|hN_qNh%Xxmwr@1e}ii;|c3377MLAS_m6k&g>S@*Y-SVG+- zL%%^3u{k1r+S8qzkHR;Hmr#rS>F7tAEN0WGg}I#?TP8;boK`-In-?9aqEf_Z@LY#Q zfHmXfw0|@lvS(R$%5C`%XdJA)?s317+deAW%dL9P?*g$T*9-iuFY&bU8RGG1P2Poe z)$5rsRzLoyo8kCwCI%sQXay(w;6F$+5mS#X;rqKt{Z`AnF@%i7@=c;QH0So0SmMfU zH7%n4GE|Vk|HvnCgwprJq%GW)GUTMX#VL5T1D%9CrrB^>Y7Ryh^j@}HNo-8>|LJt? z5pFe?I$BqN3ad-583+(r?TYfAbo!%iK=CaBeosIL>~4ylPo z_p^&2DL~u^ZcaZsPgYvZiiceM)f97q70E)B4NqlhINon*ylOfbMe##c89eU9n*H!% zA4^tz+@D{?#jp3do!nA4KFaAH#T%|aOB%gP4?HHM;3O36jbglfM%pSRx|8n}X3$%# zz#JSeS!M3Xtq!#yNV4wGGfaPPssak(Ce(3YfXdsSR ze?$a1PlJt*qZp?SIhKSu=Bp^&kU(}fQXNqjx`8&lBwp8EP|z~~Ax5(7^M0Jx?~=hP z33Qb?F9`;JO%k@Qfib^Z3H4OerC6QNPtSkNd)s%K6WHJyaEe;29--4WzR;0r+taO} zJN`4K(A%`^-Q}}^{Ns2x?hh0{N*ms5MBtf;Jn(ErAFsJWA6yTnp}|8}nP#`KXiPNl zz6A6f)VOJRx)V_!y|*osg%^(MT&VcqTQ<3X5zp@YR9`GvyAQZt;I~;~`MC2n z0KYfp)2DFkK>p`M6Y2ttbig#wmV2>iDtxzne7*g>+xe;Hrw@njM>^FBb8fnG8i!ad z%9MZ}UQWSYS?cv}rmy2o$bp`;@}`o`JQc8T>MPItQ<@bwqc z$l*5>JBzQ&fE1KHWL;e9Q-g3hXPuTaoILq6co_JGatN+5NJcd$`H+87ik@+RF(;l? z`=~OQP>iy65<(g`r&0ZccsSo4jK`2|X0|*Oh*k?igj`eW094R-kU6?XA!pHU#cKs? z1DWGnGBP368zhe9eo%ZwJsW&gU@B1AzRJBj8q_=4%LWY`68|$!m9XM7nUjde5HJ?k z5|0I@bWk{l2d)Wc15EFG_~}4xXZXNVcf>busFCw+%`x)D2sfYqfVe^&@4#uf&y6?= z2A$XvewfX+yp*+HjL*1wGHzq>;a*5R0R-S9-LCUpWwnL5n%%G!r+hTtG{9g-5`%vy z2XX;ojDHXsT~erl2E95f0*C7bEoFXcDsuSuzQ%_l&te)Mh7kOgxAbH?7)CJ0a|#Ns zV~#6I(%)y9^Am@S%cdB=Liq(gUnKzUcUeen>rjmp$Y8RO9BA`gdSR`fwYhJ$M<*UtTnUNoORE+&))kw7!coT)F>x% z2SVc%P}qH#9(smfIx=FlwJ-M(tPG!?^x&#O!r!#yV@?-}id|bTS~#UGjl6ySCGk-{ zNyxfmItEOetAJhy+O^mLc8>p+^?e_7*SBXL%-Iuryb&0iL`8Lr!56)W+=A_GCwUC+ zYxoCaqjZv@(T|h@I=lq6W8&-owsM)oTs+q;C^B*h%Lx~B?7nf#ZZA34zKKr;lcxV! zEL(_UG?m}t&MCd{(>6C`8d?7!%VH$4LNBw^rN?cY{}YqGm-swG(x1Q3syBW-- zvLS?iPv0fGv4tuhvj_G2Q=B-L?5$JT9G(vnnTMjR|LWJ(;hwQbFeH}l{f_dp@3J`P zo)LIImKrXUAtNj#H5OI_edL$|&!rIzt773h?yT18_1BZoVmd->_njKI*SEd`%=QAc zz=n;cCN64nCQ%<{-U{rUH0f~u8B~WpC+9vN2M&E(&HlwR4nZLh4Ji`U+(diU zJJw2j?ssc502=e-^5(PIx*yw`IYtccz9}GM3g7n+O%?F2#&0d{{~)LNQ@58E7$LI zjXsjARWm8&lqu^S%TxOq#tHP!I(D(o{7ewz?yv8E@|=hX*KdoiP24nh5mq8iuDk)& z>Gy2up6dQFJ0-@yx24zYOZ@|K+a44=+Aio}JlFoMMKrV?2uMtcE$_*|jyiyyvVP6x z$%MZjryT=Fxk+mEOV2(fLB=b^#v@yQr+!sbxO?3|=%LJ|%jqW%M*?$yCq2pE$GyL$ z?7Vp8x5jt{Q?HHCDQ{ex+E2@L@4Q=(6)O7x4S9aD!CGcOZ-G%~_1l$KEaHFbS>sf9aBFHWh^VqA~qz|t} z`OXH?{##KX#l0@JiT+I+XkLcj`!i0>eG%GjA56G?+A}Ov`whbom7j{*{Cgqy3&r-X z(azY0Sm9yCm3ix&=+?@+X09_U4lhZ_69M23Q(8zAufLL;(<7cxohkjQxO&Uims}X9 z%TzI8>b2JHvp3(-{^}k55&;3T+)_TPQ9i>{65Cw$UCmRnVLt4@HO_kz9RZ0;o3*4J zyLhMtz>1bzxUMvc^x#$U9igYVRd>`{IeM8{`F!`a=P{1Gi`_Bd6jGmS5Vu4*Xd7~Y zwklB5YP#c-N~K_VAA3oO%$KR^>1sE>K77yK{xqR})%~z{{*LjcqTXumkM1A4uurB; z!xO5f29=*pw>#thE?w-1NvP>h6Kzye*>$XQE1Vq)HU13xJ|13_+WC&3yknt&bmyt{ zP?wrXoeRz1Gb?DAe;=eJV2TgAD4ocG(&^!H_ME;N@oJg;h(mY2U6kV?Rmp-85F(AO znf#11mKMsrT-Go6D-A+!b$F;WFMI7h-Rv-*J*8OkopUvu&*4k{?RD=J8!W`Dp!A%Jxo#jZ^n8yGv=DBf5{zcftq;ZvimmACfApx8gmun86L7ETkadjPjPrxmW?s6K|Sw}uXek5WDN z8}<>#u)}popGYAhZ%FfIS>8AgZ`XzbBqO3>a6U!>^2daPqh(&H*SyI%8Tev*j`*%{ zS!Nr~DA^CNP6E92WvQ zPGD=2GoT(3vHBlt&UK7V3oQi)cqRG=T|l_f3X2~-5OY20%~vx}*vqe)$~jL@>Y_-m zWBMy;JHB7~s4`W_lBGVd8I$a_N9SZ8G`QoU1_R$QZ#WOy$xCDdc|&?Wq|JH!sdP^m1@$qH?2*&hn|7Q_p)A$v=c>pt-s=Q^ zt;e?xUfAPA>kQ%yiFy~XNuS43&q+VKo;7i>GioaQLJ?wDXL)yP4j7J&jP?Jj@bp|B z?*7SEC1lZ;pzDesaHn8cONTJTNtZa0Zy)md?wu((oAINp*#H>*dP)$O-C zTu9r#s#M9<*gj|VSUw+R_KpY!mCN_~R60D6u)3t^xPgc?`Um zBsRJD#;CFTcW?Dx{Q3C!H6@CF$Qlfv8oEPv5b6i2PPkZA*OF{=^Wxnc#g9Z}!$}{? z9^Fb-?PU_drWAEn>8SM*MkuY~5<@ZWvC9cR5^M?bcBGVMKa>ANedhN^(hjMvL@ z^!bmAmv)Kq*Mll@p*L%ta;57NSRvKL$>d?!jSA?9>#tA$jG~Mg_-3nWkt2QSj5jp_ z^(~4wHe}$s4Rxz4b;j)Jc*Keh2fd|~FykKIU>Blzp$r>Z0viVejH%&fE(%sRGs!}V(evu7Co|5 z9{|Kh777*gcU_u&o0lVf0#?d@VnYufwiDOk9+pM)fX%dUEwDP@{JE zcPO4Sqp~*W$>+2?m73gk;d4y7LFPfdK4YIk*)=~SuId>kJ_@m~g!+H!;XYk?(P1db zQ2P@S9|W_I0Bv@RU$N+@*1+ZcxqBo*hZDg_BzLf_;ta=cqERHa#Nb z*6V18!Af$^fXEvIR;Qd_Z1&+F8wJcpdSf$$;m6(*!t%1aHsXXd7oPWVJMYBbu8iqd z4`Q?Id>JOwOQHj9FH zSxQ7gxb&`4z$)Iy^(R@rv`<^TlK8hHWTQIXYTM6h)j`yC#RDhhzmnXRsF=E&K`IhqXgi%J$jBKbX!QZ2Iaa>gl zbYkJ=8QU$})@#pBTQUEi1#qMC*YN>s`_3bDTIqzcwvi=tHbzm?$0KWK89z*LO*)Ac zg+*S62X&oGC!l+^ftG>5i+6rqRBXpgT)UrmHOqITZ+FB*l}CIo;8bH6e_fO=phxTK zIkDssLMu{F$1sFCdvk*O^}`#|*tA~_7qn-etqB*Xp^3Z>spOxK+tRX1g~iO@=|{%H zf|}2PTgP@(2&XRt_^(n$aQ-`%z?myJql(EKQ%R(`YzBI9h>Lh!HpU4!f8BJm%#5mt z^nXcTJ;Spz_fTRQoEs%b^ppjiAigQ@r=~K#dp;JViOdG} zF7)ymt_*srQ4;Ikzs&^oXk5u<5iqTTP+RtMJ?UboYZ7~N zt9y)g3I)a;M|SMQjO#+Vw(rTsR!es&XOo{Av;KAL?oWU*a{>LA*_-Z+e^g%hv=5nL z!)l?jj3*WQ1V*W*-rd3(oT^tJv+EL_itbw@tnS*M>Q2&{SbEyn+=A99%qn|%i%_hu zQm0WGzp-X3$qm}FM)~aEOXI=j>Xo#3xN9v`R2P?92uPm}eVFx9=XAjwMeIYRoJ8cfaOO!@_~( z;rN7XvD@=Vc=+Ic-u#2IF@=htAWsF@2W`&#YhUoW+9w1J{?}U|FKRt&buN9-^6ASb z`B3Bq)tBZ)$sDBt7fv*X{nk2%5yOgNU$=8zXIg4$e{DI{#@ig=>Z?@aeXLunJ=;IX zRk&XvA{|4vx4XZqkNF0MZipb7`fdoTEQ|qeeo0SS8nG6l6e{APH6fRuI(w$;%NN@u zy|&XheLoY~)|}qnEa(i?FXFPUxhlbQ3bHFPf`oO4xpKy}mR{!Unb5w(@{o5pC-2=| z9cOLnzv{~csX1CUE_L&m>~){loug&@w*0u#=_q0DDwnOaM6fBN*&lDWkNU>fMTC-K zF#<~5fvm;U$d~Klk^K?x^U&uTIzCPB3}f-Z2SNxO_%MX3i8?H$_JX&-2&6SjMeg$g z&xV*3TLK=J;}i}+rp^_>;kfZlX(XVAf`P<9 zHQ!Vsz%e$Xm7Mt4u+)wOB`d4Z!;#7BP>q9CMTY*wM25BGxW`bH_Xo*J++?l$3X6Ag zg^pY@VSs9=@zjS*dIExClc=FfcC@4!+I?!%G*y0IG=W6K)65-9g~P{nbiJA{Ny%wU1N-VlnNeY`+g>@*$ltJ@tcJ!zkeWQrm0#04w=~P;SBC ziWE5ZmU#a72cSG5uh2-H#!;S+#T~y(&OW9;8&G?QrlOB&H9hi-j54^ zBqZ1o!f)+0P(K-R>8=1t*c$97QUtfLw@Y0|C=s<@+0c;PyQo#QxBJB2n!XRV>V2q* zjJ}J8sBGG6xjSe4pz&9F`)r~(x^u~K?Kv&*R~C^qSz@!o$M^wz9hM82zXnqLp+JnL zhl>BUTttNzKR@@Sr|pXiS(!~5rTeGyFHh8(DYw(gq5~OzQPrchc&NMjoNxGhiom{}4+3MHo=IxLN{r8%X zO`ac|PR#O&`x6bQVz^S_Bm%l)K-K)rQ<#=S^g@`a)a$LT9~tStXSQkc?9Y9V&t(Qo zW4(S|QRH^(_UN}x?F}rHfb0T=(#V(HvOypNzG(6D7?&Sn5GIeqK zS$kpBH%!pQTLJx%V5O=xE6#EHKsERT1U4u3;(1f6+TWbyZ-*Ni43=K;%?gp>PPNLowO6-v%RuDl+$Z8h#PlDKsT_F}&u;(0w44beptcM~ z#1!%p)_^DlUnG~eUO1;*K7B&f7$z=KBlI;<@dNSu$y?B|uMKTONW+9D1JUIB5BV#l zkhqSVexsjQ`QW~gXGdw>ezARxJL|Rj%FBJ8>toLGI2(_t>X`x}gWZ^MYWXvQVN#7- zY&Q;`pvj!Z#9>fRj`WzIV2l6|) zW@Gf7O-_-s#G|Y7W`8Vd{9YL9J+GEdt?dSi!xw`ZCy{zs64yxK3NpL>WtNwfPZQ{*qf@`5J3fXz9Q?wH|wzGYJYsz z=wKDrK{`s@G&^5WcWXDkPC|^mXVGY9nXeS#p_BoMi(8ZSYJh%Qw&s+y?-Avx208nSW(- ztG57J!4lvy?oyB|$FOx_(E6EL-gw-~3lU^%NzHs8)r)ixN2WB+#^3@LGv?cg*f(`` zo{{~^%+3n3Gpn0z2b~`VifjzV5p1?|WpMD~Zui{Hx5ci0-R~XX+3PcheJ&_bcDr$d zbr|nE^%37r5b|L!le_`>iRpT` zbzv%gOnxDrI66x8Rh)U~cz5lA`A?7O-7EgOe>^Vy=+EOJ_zdi6g=!kZtqlxgrLVOS zD2PJhTNw-=IX%?0T{2MK-<9{ZS~fKy!`Ow}==N-GQih9b>q( z0dl{y{kVG6oSgzVkZW(ZSAj7{_x7oAmojd;im z(Rv2@Y1Ooqp>ghvD9)JYvo_)gw9!n)@7b!W#Mi{VGpYA@kxo^UkUMK47+d8$Mm)W@ ztRXztv1BnyG>OoiNaXB^L)wHHICj{>wHnS@`vyL;@fA>n3YbC?R3bvpS#I%X3`h3% zoVVd9Y_if=&)N*h;){iA>pDE0N$gaichH)2!3sJ!+}L5n@cbcX(FWe>D$Mz2<>hDx z^6D{UW)?jehtRe0hyAn!8zDQqFJqH@>`@TBe~q$E;X~{zWB7_a?nltk6upP#IPAT) z;g`RKd6@f3m=igYm81VCqvl{l-0uyG0||maJLiqX{N4{OSbW%E&xw;=Fq^8@ry#~h zi{z9ohO=g{2Azu7Grwr_qL#v<&dSK|UpvFx1=K&c39d7VNjfYLli>i$Kc}4*c6*Wk z{K*UAJ+k&yn&)dQvWlRKp4S8#-MIMMFsI+d`ThF9wM`fh0eS5zhb|X zd}HW}xIPUCLO{7YiC(rFhe0+j1&}#0tZuAD`Q{r>hlK{Z^$ScW2xJoZwew8rWWhZmmA;2I*X#Y8k%?k>l3?MTNOX23(CUg`B|Qv$UobLXGFshiVc^ z<=Tol;pTI)HBMJU?7vQ=J6g_Fk_{qnCiA=YcJ~zt66-2!Dh2Kym${buhc{*IZ;Hg} zr=Goz*3S9Qj75(%5oysUwP{@v&zRY=aZc;QA~v4-P^olgl0?e@;0LKDP|MBQ1A(6ks#TxS1Fq z8$I&;);%wJ&7p4bCRJ3YRj5=(7%rZjk!YLoO9j6@e;k%`*eP@{#H%*jz#R6ASH{p! zl07FQ$?Twrqr}e_l1M2g0ya)t+lP8j{DhwgLJQhi+6T3#^b3OzMe(u7l`Ubm;+m5w z82@zxy1|LHKm~8mrrco_@P-{_N7^P{Tp zrhy6=vZzT`w?5Dz*X_zF15s8!2SR^yuJ}AAtT)Kgx00RVu^NP(U!9!QK$(D?VIy&# zl@GdLv2v3TJ-9`t%6_Zwx{vH6aLu}KG8mv4?NHHdGQZi)&7ydyUT$&_c|6St+k-4cBap(NV^`1{q)qzckrwKNc zOUD9v?hsPVRI)XX6J5K0J;!zpAtcTvy$U85@HL)$wnh7-#F%J1m&g2hwoo}f{JS#O z*~q*L&dcwc9c-Q*G@YD}KvET^=0ZW$1|{nbGbat(d5*Xt=Wy4LQlDB?_45X&eD~%l z|IOo$IPqCXx8o7|UppJMdNt2gJB}`q&1XZjmF`zYE0cBNZ6bRJZ>PJ3Wvsr^4Yap# z*9_gr)ZXD&2V1k@kQP1IbWWnU72@IJc)!bJ{vw=<(ns4#$W(E5$aJ$=Ja^h$?3vf? z2-2xZECsmJvh7Xu5{ zj~}#BJ_uJ$v6j!8{am!B#!`JuK~B)8Nq4f;YM1Uu~Akmw&_s^FZb`W+jeM&G|#d7KzZ5A-h;f3G}!pYZMhAHi?h7k(?-wNR!vd=e& zru?=Gadqy8$=Uc{%s%4@(1)5ukd2n3=odV_e2Gq)qBc|Qtg`A&V}^_=J=R%%ORPV{ z3XfU7xyHjaWjeceX8Rtqyyc?YgNBY5J;Cg5R()IL`=b3}!$!}tUJ(5aK3|-^W4b;O z2i#RMaJ+2zO?rg5dXy@4*G^=8^N_RI$J1hcdZVCjb?bh_zV4DS{p#9aR}()5Y|X>R zU{Qxhs{U7%-4QSkSJ3^Rq|Npt40edKF3v?1r$l!vb%Sn|pAWQ61AP{|tjlD_Mt?pQ zP~>Mh=Tq}!V!UHXGj+_@BPxIG)WWQPI{W#R9?!R&*M_5FB6(WYy_6pFR*ik%UOg9D zQU0<5?JU-o80RPf)smOxe2UlZ#U- z=GKnHEpkQwx9gfxv@f5sIRMhJ+G<`eLeu>{k5%VTVhj3L($Yh#S^H2`_D*#L0_L1E0qaayiW!e<}O?lO5`ma!Y1WKPyWAY1ZP3 zM4EE&G(UOr%@>UsG@^3tU@=S4npr9oyTQgcs#(K2IatS=s;|0wrdU2+SNpMI*8jjc zw{PHli!ywxg!&Bt{Uu+gB1o-25Z@TB>gPER+*3tLjn_9h6jjqu`~Chs0pvwE-H?3W zhCWYj(alsYfi4W=QjDwrv!o|j;JQ(mA)8-|vi<2(2U(D9oI3yyUy>x}E?O&;)H6z{ zLa1tQ#*hU`nblX-FpfM%-STC2RlGh!?$I|A7~1? zx-Hb}DBJ#jPW>brCkbrr{jcowenc8w=Q}WW+?lb;QXKNioXm~dK77DXJjT)$doh6aA`)5a^~iYAN4ioU0983+CRD}9 zDvW0R6`?$Ci~^UAOd2~9p^qxDDEbUxWXfbeR@~~SyKz_fUD0d0xJU90qU zZK-R{NZp8ApOb5FKX}c7w2!{Y<6$QHGUa7LBwvF#&i0W{L4K4!FRG@{QZ2+gX7LB!qwJB#OJPs?j&-o4lvE+X8RODuHL%yqHkO?yt4+fIee z2kfiLmOsg)_s+*UAO4uTg&fInsAjgAGA+*8_(nI6e)Bh$ZEHDSNl&om0`(Kt=7u@{1OfjqBWVD+83Dfx>MW6f0lj~F3*5m`91q3Cw*9O+^ zg+(^(giD?9+IGvn+_-}Ui}wfas2&b#3HAzzF*IoU)=iRRQG2*QQ~If*Y6(+W4fS2dj~RBTnV=u=RPV`q|RLH@>L8&-DlWQ_5Mt+fzPp`mWyG zn|q>=A$7b_Z;nKI-YbGG^FB>ECkF!lYq)0#BAJ|d)9ygXd&c?dm)?(xeYIbr==nQT<`8f+-8% zUva&1_qzeb`XNi9a+veTgK<$&P5w}2>&YvBp{0uk$wGR2O3df?gJwS}f?{-8C-xuO z^2=n;>0dYB^O@$?)kq#$czE64-p2c@;*3(J{dO9ceHcG}SYnE1X}|YN&;GNy6;FY{2u7)1 z?KFO*&YCXX5ZEtv(KSPDa9eAm%vjdA8L0isp%WF zb{enucW4yWtTdYeuQ;n!CB97bfF568I~1HecoR0+yO;7!^r!r&a_0x=z9D%61@g)o z{8S;p+0QLl+_M%PrT_tc4mYT*0e^u`S3=5IGiz?O$@?mO!o3{t9nw0}_^AFi?>}xr z_Dp#)PL52(>`H=}+hl1Qc94U{bLDy$h5Ac!(A^Xagxt@{qyE5It)>p75$S_dXh(S5 z(Rz3$^Su4|YkMK9Ly?nP9sjwLm(A|nBDl#Upw^D?ly!|qw!YQUwmNP=-x8kLr&C9+ zJb&wu;3mphYvsAhudOn=JI;C7(IOh((fkM>?5&xaoYdJW09~no3K?&@FvmgFR$EJW zjRf~Hq7*mGD(Gt4rCAs1n+x+6cU8hVbamH=wi@W)Yn`~-@nu!QwK8i7S4y}*()p0X zOOX=@18X(gXIq^rBu2D59cRhwaE7z7P12$$AyoIR`ZXP8h;@02sIgl7C$lK0(fhTX zahV;nqEl^)p$l_-|4}IqGzOOO5Y;QxOY)VpIa!lx6NimmkRoEV;>ZC=il&A&r|Wk>67)_TJAmd zRWNp$#28dkK#7E>k+ZE#HM3(Z>oW|UjvHibl99R$@7st^dV4*RWFa_(7yHi?Eo||(64v`iP(*`*H3Xhf;2Enof)ce7$Fe-=6uG1JCIo0U~mRGS9eO z>4jSJZd^~9vHAF{54^uhm1k|^<4M8Y*|V^*54KTjiFnI9)=Ve)%%Cn|z>zD_(tRiG z9yf6;H%(&kSWs36aL~LU-P<=d*i5L~yLCT>%-Oh|g3*l?ogzV)akbO~(BSgGl7`AX z<<1KJ_28t1g@zMd^lgJ8bRrs{LAhlthC1Am!5!2>!~g=kG1oJ%jyRPu=t+d8cJ&r$ z`EaPpxK>_f4(%m3wH@Q+ zPl^@-w0PGGY;y!i8Oq0cU!gt%t+_?Y95ewyP5YhVHM=dJ`fmX3%NnGCx18PL)4U^^ z!KAt7Y{bVlrC?P9Mz=Hws#v}<-3#tbwU&5m_q_0pYpwa}VEeO zI5TW~e4o&RwqL3ielp&d=qmSRs*%I7!shIoiPN3Q;m3&pQTe;mrlKFD^c^L(lW!RB z#etuM>puj}Xyhmg-5&O(UIfNA)sAvUh4tT^Kh;0G?XGn^F(dVC$ah8{Tc<%oe^KY` z&9PM7h>Uz&lI|i~?s0vw3Tw2mlh#oEoCqE})}S9JuW<2Gf9>t;iR^71p-g2~C%pPC zbY34Nfr5_3Kt~r`nK!3-;iRf~7xokwkUeBteUR_~*jUt($|y?&@3i@run=RS?uR?H z0wGHfYrKk?KmOQNdl{yOoSkCjq+^9Z)Lck*e-S#k?US2BPjBb-a}_TXfWafGWTBD< zJH{j;*i*y8rhOlA(dZ8^MbxR0k%fpgwcNT%+V)aV4sB#wk^fjz`7$roctB&;2#Ev~cL=0<^E5nP2{Q zgc7ouv>9KTRlmE^_DJ3HZ^K6}rBoodZ?QIJFAe7U!Y{zT7RX8%G-|{*OX`ociyi=j zcEtIQrf@t8h$tfdFwFF=TDFYJyu4b%7qo*mo^(^gDFs(;_;R|Gk=EiB#G>w#5gCD| z2GYYh8xDDm#iz=$v)z0<>@5HsqFpELS7D@o>AY$4osn$`<~%tPS(m~t)_QWrNAf%X z4pH@D^}bHnmnDyu2l!rye8zGk_B~D(6)^&PIN2_=b80NyG~Ov2@N{)rP5r9SRH#t) zAEao7zId|yCR$T0P=#~gsj+Kvd!y>eq5_VO*fl2h*MlIc{c}quX(cc3*nAr3{vAzm z?MmLeCtp?RH7!Ipzm>f?c>yOYVC*9Z^6BLDHaM1cVIasZIaP|2D%5Y8Y-?;8s3L_k zv*o>^Ks27e=`0nkAFV`r3404HL^&0CxxO{EfWP(0_*X=@C+2t#fC+i0F%AfRJ^bm_ zM5_3YCa>S1M~)dyrjv*{u=I8DLlP-~=|7?Btj6xVXd?sf3}1`~ zu>UE?9=$c&Yhp72L0`Sli1vDkUJtl7yglqUr8%|dydlo+ZGbjfCfb6t*Y&p|uY2FNt!6JN1-DY9VJsnBoi~D~v7GrAdyga@jT}tvCHIZphBla6{i*G&}|nr`CnX zZ9|Suad_eWH@#je;sc&IS=kNH6OCuJ9q}0P&<=hJR|la0*CAu^1MBq$Xmb%|{SRfD zhcwPxeN^;&-o%5BHnt@fMMPK1L(TD4?nEINowTKXmV?t6HrHLauf6JU7(uYn%qo%^ zxEgj6=!T3!I24ErUdl+Bp_QJJwd|Xv6>)AbllA_oqId1J@3Rgcxm!0}KVF$GCUHl> ziIYqD@$CeD?u>4;9}zg}W8k@@5VsK{XzWE1-e~%J-FO*$<;N;#&E!ibfLt^^JIxnD z1{pTyw*=2p$KgJZ+pv3qGYBf*hU`L?mG`BUHXSfo0lyQPkugn*`TRBXviy&Ee)VrY zQem{euRrW`v!BTqLXKOwy+7Ane*IniL3YO6+&#Ea zAAQ{~h*_e53P9Y?ro*zF8#UL27NL7@y!sSMAaM$~hS6^hB#O1mE1qP;MR;%c&o8pL zvl4z$ulSe5$eRwI93ONcv2Ajily;QEr!!Fxrkhkaz2uyDzg8SlQ$D%|!8mn2u?4-< z*w_nEp|e1pFFKOXFl#hMC ztAHrI^O|RE_%LFXO?UQwt%DzVc51K#0Iq8uXRV`#3TN94L9nGl@R~beVXdrh&EblA z$)5ufoK;qZ8ss3en@r*DYgWN_d7`+FSBCE~ID$=fv+0A`4Z&+j=-`@6qZujkI!SAc zmxXy0!1yN54r4No2IvUM5BIBBTYBw~4>8{Xcw`K#nY3q-Yzn$&gV+GjYx-$^Egk*z zA@~c0;4OVHaEwAkFd5DnL^1Ldzx`+g!z)k&%68s0Bs4N*+--7=zs$=i=)AX?en;>a z{Y-!_6@ug*X1441%$yR1$KnN{bLg0i#gpuz0!vuXqlC~<$?eUnx_ik$mB2SRXCu;q z;$uwZKk#9n2vYzTy;hC$Mzjz5WTLwJvBvGSQt?>c`Lu-J~Sul5=9J{2wTU@Q-vyzsi#bMyV%U2Jr`F#n}>?hGtOZjZf1OJlrz-88`qm{_ zgV9fMc|qF-U%e##3w$8`0 z4x8rDr+s~gr)SudH9}^|M*^aH7$#{lIW!f*`(Tp_qIvf*B%x2kqV6Rj`hu6S#1gp4C zYpHIhJ&e5spz|xQjZ}dTBH7DC05g;wi^9#+=wIC7J~YaP?-SWE#B8Pv*qg2y7)0>` zQJT-{=HB~lmZ0|=$44@KWc`JXwl_52%v5eHQWVM_zC0LgUp9m zUp7lcgLOFS`DelV+SE2;Qsd7J!p!)OtvBd{X}+W%022vjkaLU2p3{|{E{D$m;5 z7;Z@&%)TFeH%qSZN)h)X=vg|KK)S+=f3T7BSD3l-Xn$b9o2{P)Ftd}z{UY1dxCNoz zI;Vr*#~kt%eF=8GwV${71B1%ET<%(U3c#Ni!6Z?4WRx766=1O^gWtG@^dEiYHUaYm zbQE-LCeXs5N>A2LY|giBgjq~j?Ah>FPs18x(bM#Mn1o`G+D4k;=1hkMK}PiuS8bZr zw{Pc--e6uPzS1BR5mFX!7sLk<(QL{;@gT_o{!}4PjD$p{vS5i9)kSA_YC!e*cOlL0 z06n!VKR?LM`KB1*YSp*E%R;B)T49{;urTJC2;Bz51DoOy5e<*Q>BU%Fd9f*)Y!Ic5 z&s=ql&cyZnP75_WFAhxR+>R2RocJCox97T4|JNJ^`F7ps%MC3drkD&;RdDl~p9WSC zwVT9OPx!Rec*M6j}=F6qwiwL}{Vv(z*;(3=fhP#cwYMPmPk%PJW zd4Z~RQb|-K`Mh#m)>X*x&7TzVzr&Wtny8_HZJi+YCLY?pX2B+cH*7w$m09iXRGkin z^IR450D0htVPQzSK2;lZIPB5VEJBlVu*i;buV)6qX-9=C3G*i+!YcZ^JKcm7K=0dN zej+Ld|3fazDFl1QLfg$W13G;4=k~V)>nP!eWi6k~%ukXkw%Z9Si2Ep=3p;as@u-0c zm3Ou^lZzNnfphIAF21guISmV&@5uncu61i@ ztgE9>WtMqOjL9YuGG`8mK9(v$B!?v> zbRO^9BTi+!!#Sl=g2kQnKF1?B6n46G3^Jn{BUkIO!&0!qIn~b|6}ywLf8k{AvHjgZ zOXsjBfkBVoM4_}g{NGa`(%MRSon=)%R z!HcAr*n5=jwDiX4&RQtj)s(@}0ii}At>DFgfheK)H!Uj9q5(l1j^fW&J2(~8`lL=4 z{&F~R8sq}eSgJp#BL`RH&AXYJG5uvQdcchS_!RX&bI##+d19V%y6x5vB8%0nf4oaN zsT>Mq{K52nkKKLxE?amR;H-WIhkM4DGEj|R=t&p_+W&>`dK6sLpVbnSB`20iY=r|^ z^I1M`?u=?bnf1KdrL#fS@=*$k4w8T~+$Ybg&(z4kYqNBnO@yVD7l1pVK{#0(4PD{Z z-z5wpXU*GC6t^8EhVgjy*uQCZD&`oq4!pZegm1~SlMd6O-KnT@ewVG*T_9oa+B|Yc zaPa8h+C}j1xJumNuk6DyBAh18?k2*S!AE6nfyBsHOV2U>uakG`FQ9uD$^YWa;O7L2 zdx!g!M4A1>F4VFUbw@m#O0-2U)BZpf-%fZ9EjDY8g6AbGWq`0+X!~QNL@;*eohA%i z83Ejy9>VRN6BQ>AaL%j4eyh>_8mWplwz{G`eOfz0zAEXije#+~qr0&uZoF&d}%LLHWl}fAD>JWsi z&Rn|IzIkgmiWNcH#|80?)!&p&{9Nzx*c$cYDU-02_~0y`xAm#?2iCy?0nuXq?`HN1 z@_mv0o2}^BM1Y)~bb~ZW^e{n-|Xe>gwxmof?x|Un{lMyj+Ui8TX zy{8tH4vJ;(Hz#L`r;QAuimyY^pW`~GiX{EwIZFmRQsytoN2;vUWzova`Nnq&(W+f3 z^9tv%nl9oPej$~}Kk9el5fFRVjG2x%3Oi&w!f!AAag``tJCpD}bhY`<*wyK>vr89L zZsSsX)Rg4})i1M}&GOYz4>fUhK>Lzx!uO@=T<4v)0EHk=Ph9QI*VPK^y_Y8R4D1Xq zYNH7?>MYF}jFC+_t&ly$I|XB)n44>&nDwfI7+O(l#8* zUPCZ&?1MEriZ^1804way;3HMI7(Q)AD#v!(8ctT5o`N|Wr?@Qre)I7#wB zt0xt!El@c@Rntoe?Yh`O#X_BamAi+rrhrMQR6>MH#fI14cWC3rt~5XPAWCzODn8j2 z(9UnMTHC8hYPIyifFdL{W|p?srMGa7;{2dZ7xm%H&cC7jlVgOIn7Tgvn*8*3>a_bM zEneQ6kLsI-7K@%O2upC;re7BQ6d&mmIB0l++1z zR1%?T+OFl?-OAZcwtrN3@2El)SdUqxdb2lLHP1rtB4MCde9}NJ^ zm9y|`j3y=L!V`rH4cfP(bvLM#Yfqd*{4H;QV$Iaumx3R;*KGRlR#kSJ;xZDvj!rqC zwF!|h8#wsh9(YN)7&feHJ%xEH1oFypy9~qeNdxNPRsc74ADh}g$;t=sk|r<=@!+&< zpzT8Ld{Jb+mwxvlKfmVPY#qu25pM(Rj2>w|m|>}@vg)bffMmrgsvVYWkYD*>Nlffl z5IH4OwV0SP#{!8p@aEzm1-$XF-PVlLx~_7kzYK z3jMnirAQ#0<`4Lb=rpye>P=eIe$to91KhF3?aZ7G$AP}&fC>0T-}ht3g}5jv&pa~T((`4N(N z^^0W7FR?L7Th3)8#vVU)TRB>Wq9#9Dac{eI*{p?MJRJAmsLMAWH6HJi-5M@?W~`$3 zmcx+=6-L=^lD?Mb{rWgeJWXW<0G2I3E_@5PS7J{+tvvg7@>!vRabHIEOh52)pRj7~ z{sB`LHDC)4NoZGkD z5i`Z4|ykZjjByWaa6muYrnP0_;s|bs``=Fh#QXxL#n{>k<`O&2Zz-*@A|G;9$ z7+s+0c@R6t9^{w1F67mpR+8#ge5AGJ7uasNz1+VF8Vr;4u_@UoJbB=IJwnw-n%vfF zoB{O3gT6=X>7CHgl3nli*yN8XJ!2eO-;IzlrMz6eTP+`h$72imzPnC$re<)oja*7x zfS-B#&b#ym{2}@ozajUR%Qgd^v>RMO6}04rnDfL7Tvqb40h+sn?@}nD1j_PBDJb6% zqHk3Q7WlOEisen#_uVTFBOo;`_0_R_375_^5{Jt+oh9QD2s2_|RhF9u$Rg9iV#z`Z z$nA-8ooCuO*+eO)X}?C@=xucqOU*+00nq0**T~JAyV6c0 zF`0&@5F1C$);Y4-M2BT)lh6;kTM`hqMLOd9Xmmvk@abxZYuO zdCF^In!n)XzWxM`wzV}AfOZm17&E_g7_?hnrM;nXLYx564^O5iRD+Jzw*~o+he1a} z{{nV&^G=Se8Sf^nhvjmDNXCIb8b6zXEJr&=7eb(sS%~PI_uXcmTrb4tsW_7mDkh$z zY|M(5*#+h>gwBKg$rv%r0;bW!YicF0Uy+Rm&iH1Hs?8bGAE8V&Vl`&Qp<+mN`zd3P zFGH$d%mC}KGweP`O)7}N9kneUbH41ljQ=B zh;6n*A~j7IcS;1O>o<#^4gqa{sM=M6SN(RFX_kF{r}xtGuKuK2_Kcb6M*NFxbC2f1 z*da(C|GKLsL>1&q5Ro>e{Lt#cM4Lp8EeWy>TxPaRfRN*T-a0068sTU*BZNq?WoVSN z$2}lti{c$8RNl%*htkW&b>Rh!SC=^(OFbFwde7R;S^E>puVho*PC15tAeOxOq3cCuM#4TfFy5Z4IQ zjiG)y_Ni)5^tRjw_=cIPjqG>Vc$ys5CBHGDjSZ#-Nhj|*YyR`WAdUr_@~0cEhEyIAd95cZJVev4;)Wd`={jKL!|I^Bp3Wa-ZP-$jAinF? z>B;AA?rw2nt%mscnw{;Y{W=UUMRC;$`!XNlw;M%Gc4E{^+Sdpoug_xpdvEL(f=-;$ z2FKjiFak)(Cu_U~ytVt;`y||YpK*>)NRK=L+`*!~8}nwWjA(k+w)^1a{Y^^hI0Sx+ zKTDTa1!-5WKf;nX!Uww>4>%K4q~#Q#pUMjQo~ldcxkZ$6q< z7XUX#@#P?lPs!3Z)a^9lb3<=5iKItV6nwZGNN&IFr2JjJur*@coE#O*1M|pQ|KJfg zd!aZz^Y3~l?p&4GLwA$Q#S3SF>=(12H+QipWSgUFW?quiIx1kGr?gETCSdip$9%X1 zMuP;k%uu!)VCb{f4-25@uYes`JPi8#4@%A6#G+! zzO0j6`m0Hy9EJz{eDR&3ZP@}SycV}Ta!WCTem=+_>NI!$@fmHS)GfD2pfja^^1v}v zOt{MJdx}#xJApC#ukrWbydt_Ygu`{cE}Lc=gBcCW?Gehc)ga5rZfmX0wsoYB`jDGE zOXxg`+FQKY?f7~uA`wQP&Y7!&A)wh4WxMmRpgxp~fiaBF5PQOYn2J6g8Pm$ozK8bh z1RT(d%2ouS*_Q50rx>kyefHNPxXv~}z}9J!vmqlKJPNM%nhD!>;=MhB{^su_C;fK9 zS+Y?4PH%e^qUAzHm1eB^##p;(An)^D=oQQ13?QZY|9yXzh3=srpzqYQv!HAFndjKEeaP>R)la|^X(Z*X=#bM zr#f*v>bbozDO7Zdo{w6rDmChH1R_Q{a_q^m59RcSWSo@{^-nD9^mv=i1IpgRRb+ko zzN+mHs*72Z?wt;U!G!Z#SS8;c42|LL#XjP{35m9d~f8)ZoDw}gFxq-vL@ChFI{SX^hcEITPoqz@3L9e- zIAcNB)^SPST!*45q!;KXVNWOMf&1bXPN-CEPy_VH7msnQ^XP~V&V4xJ(4r@}_Hz2I z&|t_9(>@Kug@$z%n>5cJ=vc1?O#NU@a<@~X5g` z9tO_ce_hP*iIp2t^!?ei+jHbF5es`^q?O!P)F030HJ)^}h4z_*HooLL*I*0f#SgEJ zsPoB_r0obUfBbjVEmWkSv*GJ5;`P-9HTUvA_cdHt*x0~Y*!0Kg=@V{0->L%H?5OL< zv!VZn4+^ag3nd1LXdOS}l=roj%$hkfh`Y$xczAa#QIh=}A=P47f@jA>YH1TPzm*9Q zV&~r3)n+X7dMwypSPaOi7nrl@XMZ+!nWjzPD{5H`y&7^aGJu}f77w+czqX=^`1I}w zx{P#dK6m-R_$ zr2KN|w{->luVG^fm2UI)Yu!s`OA--eitZo?J9gmv)3|D1VlgS+oTOjve<;ELK?4d4 z-($R1@oa+j$TVJJY@-PG89UQ1?7U#SmBeAOC#bav<902ji5jF3c6-^xZ`H!MCCi8z z?%Pu;yUP=Ejpl;>e_xyb@kB9-eWc+8OPUrzq7r%Zy2;L;v+H?E5xso>In43Of*=#H zNS>b^?(xSNC+|S~`PCVKPh1b=3P0=_lmFUF)27ei+1mTH?U}mBdM9ds#!BR0t1+<; zG0Az*jF11Mpg^77DA!OK&~fwgNZyaJYSy_LBqXmQ-BO0jyp9mwgaei!+LM$~QioR6 zeP5a(87;>x2e-LEW7l&2`<<4e=OMa-;8ys&ms}m2bd~4KLgo*@B1NmD#6LPwL{-Kz zHtynI;^HJe;S;kYYhKqt-EUK^*d^wf$M*KO(X;i(t8L+nSfK&>Ey<0_k~1>ySLgj| z(jpQP$PQ%m8}aKU<+s1<=h=|e-$BJ9+2Hc&BeWuDSoNFs*J*B-Y?VeRgb^KwpxMY* zn_UXX@A8YzoTH2MvCuGsqOccdrZkYb6nDcb_dk=Wi0P-@p#r5i38T`@lnWSx&imzY zGLCO@gp5!*O3mQE$RW3Sh4;{a`Cit82yGFwT9-TlJGBjYu# zDX`k@sQntu>K|=~6nd!P$tUpxMQ8eNs^~HS-(gVnY3K6bV4EDX=Y#f*!l!zC>oPFL z|JuriSVqg(?@_pu3IV#Ci6r`6YkOBHQXWkL%0Z*QD|X!YNhZr@zi<@xd!F%YweOuF zao#N%e?|_UA(Fw4-gV_uA+#p45TsyuMd!JC*^q@9zcM=)R0h(L&sXNCln+ky^OB`Y z=>mJJ3L{xjrOPd&`bDRao`1v~7pI=BnZ-7D#tA~z=ljx`li3yVyKv8JCCU}sE~xBM z=?^7dxsUH8pO=095H{oWr$%0=xo%$ARITXh`Jh0~WKGt4`~v(p-Jh<0U6PJy16hz0 zwcJr={X8D`G^-2G2szj;y_+~2Xsf13vBF*li3*D-0*z%i|8Wqdob=`@$hh8dpceJQ zOvlGbu%kG?Pe(+ofWd+6LrpdqiHNm^2XVnjnu*@wK=TxBmB#s13#8C?=PQhuHFNl8 zHr&kiAB?erCOQ#=I|(~LOqE(&$pLKLA{N0TLE6SqYh4CwLOLq3qXamGz1Yu>O>Dnu zl;5twFmriej~1<+Q9_5U(pCZ~97|M6nGJ1=9M(C~YX5zQ% z-%o1)HL4>tYmE@x2Ch#_gN!%FPWrZC;P;_tpW5$)T%mmmoeRo@^%YaYp*^0?FTuEd zP{TbjFReA@gxd)F-H!JttAz=6`7XYg>7aOo=DTb63#T*1?0LtKl-GugvAbHM`Zug( zv)4sMrvYZqOPw9!t?Pf$RjZ(p%7P+bX^r52-#@E9!_dT|+ZX3!3Zl&mxO~sejVN!b7i#0EyXfE(Jdi9XI}vXqMK2W)W3^W=E==_0VK>80a~%3>Qvsh5M~) zxR<$WTp4dyZtFMYlPh*^T5978PF?drIP(k2h#FYfP+pi^QF~C){j$UP-CBr-hi8eL zmC0tX4j8$n^4~i&t`}6s^iN|xeen>!(0V)U@q;=LANhHrSVE*^y9^@*$uD4JWq@LV#Ev7>aX~qg{B@wZfo&^!m?jet{dBP7CQ+5=JrgFK8}@6 z-5wi(G+~Q80fH~u+Zn(8i@wkzANnNc$;jt?;KT`Za)@RTKSSlae`M;!Y%NK;k-M5kooy5-}q>CnOmt-%biSVT3xLMl-o~GlpSs7T$PR-2>#Qmt^i-7G1_Sk;D~yX#6~aiD4GXd4Ctj4v z1L!Af_L7aHMfV_yrjO!AJn*sJop|MtO@9$F3lZ8b3Ir(Mo#RkBil%Ojd6}**)nwUT z`|mO}61Iga1#1jZPI z*WWv|vs}44P7|RWJi?T9h^0#(1%CNL32LbS$0u&i>+heghEG&in1BPE+83&-+Ls^k zdA44+}{J%b}{RhZdE2V{x!*%|2-`3%W#_$ z-HUBF|7IRHhIDQ#NjYQEH;Ro_P(k`eKRlTGt4ZWiphY)B%6CW50(Z)m``t$JnDwz< zA9r}~v1(u5%bti+b!~EB5twc{Jt|QT7UNoMbV~G!3g?Nf7D0N&eG^|YGI=xUB*Kq#c)7Fn4UFF9-Eufy! z>*LK>HKgdPuAIRz!wN*-DL>dUchXGv;;Kx)+IbVP`GE*&YH8V&9&qxtC}v^yYMqFx zKTjy4HPzges##071sd2dhdyfRKGYPmN!S~4@6=Es*(mT7dwN?^v_-W60pX@ctbC}0 zm(z$-y;V{sGp+W2x+yjYK|UiYX%2!`wyY@r84O72R(u}cwUIAFghkir z7ngJLwE+L-y;I|$a6{ZT1Mv{dmhSljhY%t3LVo>X9o$;u{6INC$|{!0a6K6>T7Mni zz`-XRx3Ly~UBA)s{)52jt8ro%a$-1W5><=2Zi9mU%B1T<;7X4;=T01$`^+^7vJzei z$nh(>iY^_V(d4$h!*R^=1R|VYM}pE)q4VBW;%>BYU9oO%AN#;V&)$R=7Jo`hZvw16 zd%|T&V+$sK2Fr?j2jRegP;X{(aA?d_v@VnMz^--!vxikC8+Z&iEJq1bC8!h&Z|gS( zX>9;Q$_h+@yO9ts3;W}1%4E!>WjFH<+5xhV%&t~LkTZUnCtzN+*SFyK_s|WW-ub$o z4-uh|e+Et6?52B`06|szxjxOZZLB*dnY%`mfJA#aP}Zy4X`dcdtMin(2u?{+tBa|d zV^?#Fwm!lzC#ja`(9aO80WiU!1|aB*yB~Bq!y@YD5rVEbRd1rsT^_9HCO-_4J9mlm z81z$Rhvq^-!DbDh(n&p zpF7kaol8w&v zxIWgb{+$qPQeBRswU}otZp;lzgwwgbt`y{`z1J2w(W62^8_LQqNWK7tak@vZ}o zR!?d6Zp#ah5gv3_{T@jePbz$>^Os1Ks$$Eq?vbl$h;`RucK1+4RZPLi$KnwdqX*() z>*~{U=R0?N3k5A3lD?n3h~zV~i{!S_rVMdt?${Dww`y#&-4Eh9j@2-$p_Y{X1j1g@ zEwQES*3a6c>N1TscruJuBGzj>&ablR&4t4@?orhhQe0vrg^Y1S}6f_rWnLow+Hu*9P)bo4oj9pUws*(M=6f{oiqi_~#FIIJWIicPBnw$2**O$Zra8Ii*M_1*95&b9?#T1>3-4=!% zM?98ttIzlzb}5ZGDwkk4zQdos5WFtBV5;W?Q&A0hntQJl6n*NbMyKzCc@56h3$LVB zrnJJgA}FX4Ujnpf&l(|QLOl{6sT{R;9F(SKFihki3CuocuuzBcNNA&nXHMM$z*(FS z%?DbHdFs#%rkCLmFI*-=r9cEz0oSDktDtz+iz2iSLdu7>;ve4$KYLZ(s3&gX__sdo z;H`K&OH41)=(qdi(4Yq=YhiVC^(PU%a+2N<-C%W?N1xMN^mbVt=gCO z&)It|5}>OlNY=BH5U1!N>NWD`D&+D8yx1c3OBJdk>kL4q=>=PHbRkY3(k8lAvvw87 zv9>}V9-=yxMdR$)1TmknheY>#p!i}pEmfW(DZKPd%jlKrc*yQDV)Sr6^1V0Zp8l@9 zwdr#|=5_FJA>kXG098pNIR2}f`iYpv+yw<5j1jB}CF-k8m3)exFP@bfMd6XP!0}X) z_tezOm+K3%QGRu@o7+)y)4nOdH$2v*d-;fwBilq&l{OSA5b;)DS^#Cw92qbpLl}ME z5#Ma$)W6XCL3mGzhcZicqM)pk-d(jaw<4xSr+SIVki;jg|JY|ZF5hnsZBWaI65@Fe z-OGy{dt^=mh>uTFJFHGq`$v-(D&Rbq>;v0NugpKp;LfD}i$toOqP|HBE#gYNYPVR} zFsgaxi?ee^PzLUr1>S0~n}^MguQ87FUvvj z7d9`B7DivZE)1!o4{b$#bh({Hxui4p=b~;OaJuB6Tn%i(+Ia1@c8S_v4FG9lvLtT==nPfRrk2n{<6y@h2$Uq*N+bq* za~BYQ^x08d@JK4a31q($wPkhSHi9}(*YTOs?V&up_>dA5eQ3}`zRa6xJ7C#`*b7^w z2!HnlcTxfam?O~)G%=U%tD04nOu?9>l=9BI3<))I}!rg{5Pf~ zA#vu;!;DHBeQA&`JRZY&YO923v#~ZS&P{$7+J*Z4A8{#mjM>$;@gl+5f}#F1x(CbK zVXE!^>{L*|W-~s;;-~l<8g7WDGyftE!usF?zo@h@^bLN>BzM$6Q<3rqVS_1}daiME zBKo?fw?*o{0XJ4TE>Y1hDhf5#&CTt%-})z|FozOme@Qof0qp{4Q@B+$vCAQ-Se5{n4WBilD8_zSLz^@P?`PifZ)A+c zaB<>W8`k4qGNj&?2v_kEiz&xpaj|xfAd8SkvC@WQ09+<}G{RRe!Z%4d^d*REdYBst&HGkH^ z>6N%Q+iT5)C(8n|LH?XUGX4YCjT}lDFYM|C2rpf@ix=3`H}lwt2wOnCisMlAi(Zl& z$|cumq1x@fbE;D>GZ!s#d;TR zLC!86){}suB`S0GoBlQyp%>TD#uhff!LVFULx%e)&;r7aO^3O5lXqXlJRH zAksP$tps7_V`X3m^%GyL->R!14#vV1wQ6B&)iAb{5sZ)d_7t-)HKuT48@18mV}Wn^ z3J|qiovy@U>}-L@oeJ3Ey{Y3~-_ri!B6P&MVt7QEV$j^FhRujMgY2D>Osb|>i*L|? z)`&IDJ3}#6E}89p8Oz1nXI5%IYw66i2wB_670+QrMarcejROdw!-!0DTUp1 z5#xrwXHe*7ZdoS3=W6@ISTUB&S5EsMbUHH6g!lakn{WP5vVe$FbvKvO?6M#9;RCt% zq3*-Q!nw~IjSXoj#fK@19^{@YGt%pz0s{LzTc0|fQ z*i6;gSuS(yity7~$OYBR3UA=PDM&`^7S*A?TLBKI zZn+r$B^^Vi-qnIEiy*LmXl^bRM%vH|T>qEKiv7yOIuUkJ&J|Jdumf0l`IZkFR8oms z-t1fg8-h&9Zg2r@CKma27?6^^cyL8V#}5}}2@TPv)){UWVC->mIop=N;!Xt~720L2 z%oy_-AbKiut7=N`b&u{?5~{b_Du|>!&uv;7SJ|&I}+?zsb{CS2E^rR2rXZP=2m$`?NuV@=TGTII#e7ejnVA4 zTElMUkb)SSb~OfL_Js&O^6A7o`kqy8*kP^g7U%iWth1MZ zz=uAU*xD`QXBT(l$wZcG`JG@y#ai99b20r-*df0U0Lf%Op%q6{<_G7Sb!+ZcmWMH! zpdRBWW_S}fml(2JaJ6K_T(cAX961R+zDc$~N0m|;LT7oB^)5uEOL{$_g<2uy4fY1WUk?!ac+ zyy{VJLQ$ZR1{tU3CH5SsGYnjL2z1#NPjvVHEj*Z)bYxqH7t5HH{@w;VNK)L|=s4!Y z7MFmx+~k?8rh>kqIpjLVFGuL2Ia$2M1Hj=pT(ldNyX8>-w-}A%D)vN99ww>Qb`DA& zZ+y2t0*o#iXSV#;KNgx;M}VFQ;v6Kg28CHJGGP{wmCUU_GL0-?YJ0+UHgKLV`lX7OLxWuzUxPQk-jjO&CSeGR>EDdvylW6A|9+iOZq7*30`@u-C}0m*{0 zB%HD0V@=P#=55J_ zoEx7ojXQ&K*^7q#-jE37G5kjq^=&yuF;81pEeqFlTg52M@gnfq@?fy<7+J1R*;#+F}n{RCl6t#(b?XFEZXXlA~b2RP6(KMF^L0a5}x zAaKI1+So(%VxQ)2+TO8&;A6LelH=c3sJFJZ2f|#F6tS{nlwI5-G%f~96qQMhZxZp1 zk8PWIYh)?!IAq)v^l8~GzQj;Ti6<SJ>F$ljWw05b46MB-8z0NPK zo!R-v2$U4`%!+Egg9{jw{zOjmK z6`_%y8@2l9hT8-`0dM2CC!I2_Z z+_sT~;96hc45Jnh{p2wO7xh*BQZ}hAnO!ER5T^-LE4@38qk$_M|_86#&yHr zQryks5%bwpp-Nnfu}CJF=t%UBI9Y0zsC*?E)qi#PiktHwH-MP&JCUR3bft;=Yfr;i zBF}}2sH;RZTsLk!zWRErtowJjbCORz(Ua|q$`=fezz@!KXNRQOg(^P&xcE>FPEWQ? zRqMF#2iA3ceApc2GXLeeKE8cH=xLhc-7XV_O{YP-jLOcf5eZFxgT>E>t*h}lYSf_| zxxYXNKP&e7tMuMUSJa-$ZXxOIhSsO53QwT=J3MwjVy1>N7Hd@I-h0*JpuGCKWzVg~ zS4eu;pFtqi^X2@nJqea{x`D!xdt?KsOi;N)52H0{httFx70s% z(1mYODkf)xZS-(#4EgPQ!8(5KVQiG5Sa5F4oG_aug}ribfC+C+<)mICl8PCCs$FCz zvTV4xAJn#2eE{9<4y!=@|d0wdux>AyR13abhPJv`Q0}_F0>-*E^&oKxoLJbX4H8>0s-l&xWu82#g#dtGWHE zrNeP20kwevW-R>y0|>VmxQ8H_qcl#GpU|Gbev&0&*WK>^jCX8;uO;0WRmH-WFy zw>S1*81QBw0*xC3>PV>(RfJCv70VfdxMx2`^QPU*zYpFFVZ-ey*=ou*ZhcI;xU*!Q z9qyJksO>mNL((o8GR36_y>0Fm;P**D&R_hOg!Ko`ud+C$`J7`HWzU=r$)hAI!o~D^ zhMK^2s;<+6aH?`bD+6J{dKY3B6F1=}R@&ubh4(*q`wN#EX$; zE4}ZS7-q)Z5cEB@^?^jkBK-l6FMGRP@=41-?`DU_l@<-3=FX{Cm&@%66~xxM6`=K&QGv~cNwP>~5Qw_qIp&DHJhivIZaIQ#V*Y{#7dLXUQcbZy1( z-}ehm)$zK#GFnZ0i}PZoM{CpWNa1K? z+{>htFU^f;t_S_J^~m9XPDH5pq5BvyR{cp|(O?9?epvfB+oCnu$CnXa+Ea|jtz+UX z?V0^I{CsMd`4~%oFJS`A#H)c-&~&5MSiFqLCsX}PRzp-!7G6OA5C&#!kC)5h`z2pTT6ax z-j>b*v6lVxSl=WE?nck+_zJA`2J)7lSC*VlLWe7PPQ94-jzYG<)8r*a$0B(BXYjy| z_I=^@$@v>%2_2B-I0Kfp8%loCaWiZ^rt!1lEasxPxKKWEg`Nm&*Z*2ywC}XKxmq_; zggLWo*ljmaZNr&dFHUB+Or;FH^VpL8kUDp4uZRV;6F{!tXjllX=0j^{vwo|E&8ytI zawf{*T~|mo2_Qt!IGDznsrA~R+%=k)`r`(B1Tj$PiT%$$Wl~e$t%%3-ui7kpdIMZc z%2(uzc;Em@H<4bl?!W)IAA4P0m>IB7Ex+A~8G)UUQkwKw&E&Y6PqJ2n z+=2X>H`esteWmFbl_SLoa(j8PC+DkT;PR8D0A;Cw4b^;7EpYAQ(AmCkxVs#R)< z&4ntIkcmak4UL}xDFP_+*mxcz99&yr{nq$sTr6Y5aS}DJje!zN2L?*$vQ$QAn|Ijq z!Ehx37~pS)y#ifuE6gl_?JgTPbq*4}_7t@3IGGLI7_73#LEb`?#<2pS^02#lZ_W_J zP5z}g^I&Rdc&VBPcJ%qCEO{yjp8&{FzMI2rWNkq`w(&1+-^+R&EUi{49ps$A+-&$V zbvXKe_Aqm8P=1O$l1Hya4XT!_3*1+K??JXIIw(?2=@G6K=9DQI4UmYcR!??cXz|53 z59V^n`gEe>o&ej=)qX??)6TT4I$c5ZMDaPl8VD=sFLF(t9WM=Onoz1=9%2)~umhZb z(riHBjtiL_$+)e647)^;4!yUT9kcXOQD++Vy>^aXslZ*e?sOUbO9=3<n&l#d#m-sSmM&yBl>_UzJA&OPVS za=d6I=xwtAK8E>0rXPexRKx|61!YSTs@V}irLBu0U*h3*Rg-rWj7U&7abXWU^qq7c z?tS~ z7><*Jg7Q~%NvETLF7Ky1~T=L221%8dhPg-KL*Azzl zP(pginBemf`1TbgZkgJ)6p37iBfF~iSMinU<5uBLP%k*l)bdUN;uYdP>dl%7eBYME z_H2nO4E$1HvcH~-*Yj_S;w3{b5WbixLtc~GB+!|51L}{RcEgQrWLYr}B`wG+!8e2H zo&F+SC${*p80WR-GDDclwWejc;(w<8^VVduo53X%Vd!(U(N|Ok2y7_4CXxDfMdD4^ z1rzoFGw0TbSjeWVZeyiQ{SYmAHyRa<=s*JN+6DJL4_u!2x0^j5VTIEN2@+d2L?+(@ zRl(Hbg)=&FsCXGVWjE>@2^`b37BK9sfk&!Hlbsti8U2?*4^&Ec)z46DfELP)fv3tZ zOWHUKne4u|50oD{$LX@va3$Z+BQ_PQWJ_n!mf!wWXBUdHYc~22^*nZtcw*HZF#di< zw(HkP%Xb}*&!78cIj5Z~<6ByW!k0cXh3$y!(u+J_Y6JjM=TJk|t04~YJcQ0-jdVmP z{N?S{tBQnRe@@@3ow9{Dg**YO-p+kCNAN~IMrYT(hOPOrSs;OxdzG;(j&K^NKtqA@ zWzPvs-B_G~l;E~+?cB^A{Jav|al6y~so~m=gsSayZHmAqdyCwf1$JTQ-l_#ZW^$P3 ze!J}n`Zkn$H}^?vSbyYwd*97RhG4lJfpk1rQqLF}UH!d?XvKfL3d2SzPD%AZexOtO z`M1Ux)5b;a9e~8ZVQpo}O2vutRAXTuMj21o>C7#@nRL(J1BW%*(|_Z0?v@?Iz|bvPOy4Wh zMtLrX@i``IREJTN)%7LblDu4p7WZvp&SAR+{ffO>BL=)bf{sPf6Cw)Mi}#f8ob{9m zk?cLKws8I7>~gMQkjaQs5`p`c%Vr`=2_?57+pp&LCHE>wj{OoCTL}EJIJ!XM#YkdF zpIHdcMY!+2T~3}kFJLZ%K4L#l0-aDJ^iEn|1>7Z>B5PuoTGBk6SF$N*_-=lGqqE6Q6L;Tvai&d)Ck4!GFugjA{=ZIkWf1_>RceD=)y3nPKjQ zWZ}_`d&yOMo2{MdcDf2*;CPcBBd|?`hVEXb$p#p-W*Qd0D`(#NgY?|>WarW1TD8t@ zZ}JYyNvYTrKP_-TZeV-Ab1;BaAD$l7>`(wqky#U{{Nn3%Ne76673 zTd{fHgMA8g_kSE0QR&G)u?8-iCJ15{V!;HMr)J8Y-6C#jn+1?^#fidOwaW1uKyxx%Hw`jCn-KKcp`9#b|+^8y)`a1!@-~_FF z5CzC-IGy9txuFSLg7?H&j)aYgm2yo24)8A4ZnB8R!VAuedJV_*0^|EbDmY@5?Z)~3 z%YQxzR#h85RlJinWl?hN<=K}qbR7bhn%?`S##0YBYw16|hd!G69?836`p!tm`sgd+ z)m7`A(k?u69})TBWcLeOu20l0_XS=8?|;D=p+5+6VPq0!I=;K-SnwPp+moXl#tw%*FJBI%h>GFn3p+ZsU_yBwdpfyFYVYImva1! zw-%9~kcqfQt%X_DbUO+qEiWH+^FB$z!h>J#ZQdamFGudo;W*?l86-yRCeHSqM`?!`;}(itIi{lPBZx9BTd10#j0QPS3%iCI;ap~QjaHYXR?FN%XA+#hitkMy0urfVMb? zEqvb0mv@rb&;FbNYpE-XxkGde4!^|b}!^!bP1x-X5H2nOP4v` z1o+*Uf3L>=ZaxrVCAO;TBl};tVf}(=VqeJ)y4h5Andv@!FOgwZj=yA?J$le`>E-@B zJt;_W^x0{rTW<0S02VwQ_sBAF7Gd??jxR#<=2(Ba-b2#=GVVO$SUCJ91ktI5 zTy57=k6U=dket7OdT|d}m1wIo^!I|*mEO-Lf24kT>OUb?%yWVWWBrRd!J1+y3zX$Z z4&gO(gK=)NcKl}W>D!=8$XuOozLWr$$xNggK@Os(e`UQi>l|<#AFun~y3Pevet%P8 zfe(=z9YK(#E$nyrx2;2C8aFu}t8Q1~66fzSJ9AXA+^Lb~T=PsV9~ zBXz45Mp2*kgf;x#4@_>~7JZWi@srJ{w>qcr&$#eBUR<62stv2ASoLLXmc^9Db?m~I zP3C!cBKek{2H{_v*~U=nV&2G0=D82iVh2i6Z3Y3OZwET!vqyHO90SqQ`R=|BlU(mY zI8=7sQ&GNRrvBWi(jG*%KCXrkZ(JfEJy^^NcpJ5G;H3L?XTOL;9{g(eM~!NyTYjZK zk|9S9-J9{8415yRDtBWAaYC*@+sbYFI}b6GwIvFmM`!0+WM+u(*rsi61ZQsi-4MPQ zs=7~`tqNpJnlT0rgD%S;>zi%N4JZ8XNEn^@$#A83 zY?s5&41Co<8e2T{KF*&l$KV1C+0SVyt;)t6x8QR4j7A8mrO2 z_!VegHX7gs(}&7F-zQgdbEA8#?M}DV3*5|L7k;BUIkHzG_|>im;>xQo3tec2+3RJ~ z?f$gK@`zY=w6yC-_BhNVWPh6!?;H`ucza8!^eaY}+>zFv7c&S4g<7=u%bES18xTer z4A1X+dZS;v1kko_|^izCpHrONIagVGn)?bg1iRx`g7HwrjCyj>*Z z{|`~zbus32a$Mnu3p^|;q5BD=h>NC?O92I>1j3^^Q3=PX1!qmS(zJ)3ch~8vI!P=? zX6-C%irH5J*y~oXgmJA`gdIq}bVfjUtM>%V3OBImPPvo+-e>um{2j;h0Jm4t_sJZ+ zgBu2xB+|Q{Pj^v=equjV`zt*TWVm$huP_a5dn9&Pp? zxBn~G-bYmJ1s-|oo%ZdVM6#L2Z3WZJ!v6x`7xL~mQ2xBkypVLUI!09cM=Ix;%iJcO zi)USxem&;ZyTbsNUTC(p)-~sR=pC9USavXTpCTt`#VkHj;yh<@;|E;Xy*K2Ry4Xvv zwlSU?=r6(Wmi=Cl8}c2{Hp*CSu*v9>UJ^z)8DXdQlA&A~*d85WE49a}qD?vgEC5M@ z0rx7brlf#v`o9pdj~Bj+RI96m3Qf6v%nW1A(ET1Idj96b$H*XZ*W8eZJnU71Ku_r{ z{oGrUk0lr0{}(ksQ}YRZR|O@qy?g~PA6p%e36U_|a<_CUz=Mg$JgdCeAK%VNrbhGM ze-)}Tx?iTxU=zWoL;-4XK0WAQK|$KT9H%`hZDF5+2y& zzDY78Sqqp*zhV950&gc9-RueaPopm%xt`9w+fttnMxoF8j)8NXZx2kQVESB}F!Ke0)PJhzW#i6<3zs^>gs|_*miM-B zU|SGi(1BQW=?KDyNwKXXw(XfTd30DiqtU3}u_G9H7vy`d4MN_Q{clN&c^!u};1|VuHu-vos0m77d6tbK50E4{c$zX(qq>XdBCPFCve- z_fAc`McVxDxh+iho;t=G9_M?~%$t@$b(l?RU{(KxSBZ`sTDunD_`21Oao6=-3P&Bk zXQ>v&l~&}r7;#xcABPOTW#8I0koBvb5HY>W;~nL zec1lz9G_&K-lYi2Y0rP5JP)GDO$IIs2CeN@H0|xpSTPN?G?%`6Pj<(%ONP!a6`RRh zf=nr#aIY4{b?CxkF}j#OrZpT<-k|JrN%U#)HRc~%1n8;|Uw6O7wVum;uR*W%g=@+Z z)=;&fAcyiFw3T|;y7h3kav*ch)^e%WaOl*_tCxqG=!!X|9Wwh&ys!G_ZGXz{mi8u# zY{>NfQpzNZJ}H;`_y7K$Hqt>`I+jwKn}{ab?sC)aQI*_r*$n#dXA?!VVRZMJ!}>Sv zHx2rc#|8r8N1ipn`Jc^xH{^EdmTeGXMdMDm50?4@r^U%5G4P@N?6~ zQo%Pu#3pC^z3+6A^Rm9?Ubb_Qarj{0xcrw}@b0Il$v4kMp^FmyWfw4%#kwl%!`?hs z?W2^Y31o;5?-2J8aE){I{~sA)zoR!f4Gn&KxvE6YqZMRew`TnU3l zmj92cuZ)YT>)sw3BnCvfMFi>YP6Yu`x_jtu7*awSq`RcMh8#Mik!EP5yBl7-pZ9tG zx4-@2d_4QCv*KFU-fOKs&m;1Nl?eivP~QMj{`$D%UUekjM0{rO-k92T+?m3di6!f{ zsz(3AhsZWl6yNfQUUSPM^TkzomMR{Dk0HS)aFBcxaY!|BBWA4b~m@?&{Po{zH*f6MIB0+ zoGsdZWES;6TMF^#?i&hlDwv4f>qHR$9PC??T_qB(fF;5zM{&BXO!Oi6B*|Q#}R=+T^hF4A2&vn$aKcnMf+cV-l34hh(C{n~wUU_n}J0tRRLu7`>%VI-u6B3%J zRQjGz2NyZ>cukY?`9clzD^>)y^hkB^_$eGscC+uw>L^~samI(< znZ|-10%*iV@MK8k3l?x)vGmLb4!h-p|0(c3Mw+pxC!H1@WL`6Zk3qSbqT)@5?vB6` z7m}w4R}U}M%ezjYh0$j>%pN7gOMEs$_P~IjRKu(?*3#H|rTakV8?liJN&BVU@SeLZ z(6t*GMfTvUX%82V{)Vz?O9I_WXMQ`@#=m(5lC-TQ2mxeV+MqQmC;=@ zKWzCGgHWYkP%hUn;OIdt5kBO32*KM#+O{A0UzLt25#->`4@=Y%Xp+uXjNjzvw&%3p zh&tSz;EcU)9Mkmr`h$iSi#LRJIB;Cu_$D!^F*J8lw&T$Ie;!>Qw8F&RPA(XVT3Y>7 zfdSTw9O3e}YL@RU=Ueg43*_LA5-sxxKV!pcMR0k=y=eaXa3jY9Nq(VNB1x@;gOl0j z4R2`Sc4DW=E4H*9K3?Q_{-xLe2Cwe8hT~z4d~+G0H_2NKXA#Zg^Q<|4OCSTzHgh3D zNZ{^pAxd#5KrEi^VNqCkKSv}xIR|e7oEf2Z|AwE)$+@|H8(K$mNDO1!AuK>56VN0`Q6bZ38#ToxdnqgZkT7eRzFEZ-Na*ABofEsR zC9pRTmJX@C`|H!K*;(sn%wt>Q!My85Ud8}?lB4C$vU-W6e*$2%5F?04X|*jy?4FP?p;hEVBllKSAd17htKMqX z(fXGz+OO#|f!H8_I=g#YM7eek+yVApdr}+Y2`nlGcI_}4aFeu*bC~9j({Kc9;(ITv z%v~Bd!wIe5=a(aa6Q`@_6=XbW^0G&amDHZuQd>W$A6-xz1XhCP=NZnxVeU2ylI6}UwFsawO2~NBBvbY$0>GO z8naZt=Gt>xCpzxRSpCkHK_UT(b<>*LJ1O3+p?7`;$G#PtK)2)uBkrZF0$2jdK(%H1 zFRN@(L9X@jc(RqAE7{>VymJchApCe+9<>-(NUR#JEZ)1#&gVF17(dX{C@WNq+MzsOeOZ|-8^y>%8tVN!zUOOeUu{GTQz9YTT zX>_da^|x!+V~*Q=ZRTKjQ*CB^JWMH-c(SjOW$+|RfSs&C>!G{nZw4JF#;^^dNjS{K zlIVdPx&9BtxF9bvBMc^hK||iD3HFxz1%&MmNO1V>d-le;>T5-8LANRi^9J#42Mf!LWPN+f!H)Xc7VUHQUoJw&hR|rT8B3 z)(KifT(MSb8Q}{1-|J_IuI-5Wp%Kn3Z>yt3dUspZef2XfDZHM0jP}n!&sg7S5$4;0O^56C#fUtDisxzun ze`(8B+9OMQ&=lT!FdyQWAfPytUK_VExuk5?+1vCe#emLV(WmztBlim7 z1W2%uy!)m0`B6jC*vER;K#8<3=s`)#fITcqIc(yoBvNJap{-?viI$PWa7gEUtLRJr zFue{lC2cyc#e*5mZWD zB?z@Ww+&#vkobK*E_FF6*iaXxa}~oTbgN%^ux{rpSnXk1S~dxodbRT%sXtmtuf;99 z=KcNZ*c8fA(D1QwqcNY5k??(ZjpDK9TO10{Ev>?LcF`x8zs^kw9uXc!2=z+0;bk1= zx24_cuDhQHwEVT97BF(Jf|ln=b!I-fZ(USPLB&$}@6jquf?0_9$xR#?Z@EG_x7Vy& zKb@rR?+F8Vm?$W)P`sgk&ep_F-s{ElPzxD)HZi*hV5==cnt1QTj%|y|TVXGmK8=!@ zqrI|f`^!GN*c>sPB%x_+@||dexqoLZD_th~i_%31(`){XmcbA^`yPazfvE>)o#(q% zM@bwu#uaqzbjoz}OWS8#RCy4`pYJSrwZ62GsZIq|Ec=NKM^fbo=DgooP8%IAz8g;6E73JWlPdiWQ z?@h5y*yMi4f3g3crs$a|W)uo*hr>)Ng z5}`;4I6pY&?T4OaI*03@7+&28hP~EK;Z+bOq`2Q5Z**DD7+>OQ*06Lym;dFs+}IJy z{afTc+sGyw6pCo+Lw>_LU8xG0D;=ITncDoV^7;@`ffP#-1Ai<_zoYY?;@1g~M^wPN&*~UH*p(g6EO+ z!6PC~x3WE$!y~#-PBGE*SAs|O6Ee-ZAD)85-v@@Xq>v-MFn%Rqcb(rE0v~7?EKZC5 z0cgt{Zu*e}MPs7v709a(+fleT6SAbu+i{?$R@N}gKvd>6*}?Gh@4x1a%zH!0={i3{ zVY$CJ2P2wD0u9|;ghx(4_d*aSy&9*8^?d9X02zZG7(!#bKDMIF6ZoaIUEN5V=}hkT zYQ~eGDDP!B8rLUcN}(gghLJn)RifG5#t1%w{18PhPmla%ThhSAW~_yThA7i+&0;^T z|N2#sX9Uc3F&ehNmD}!T^o-!`(t#&r|QG)By#ucMp2LV84!49br!KQPvnt>+f`X<3b=<1vT&4zW+ZQSgguHYMU zW?s`6F_#=AiW|94nu3`tpR)}~Xsg>ft_@Pf`@HFzf<*dgK0j8nMOiJtbnH`Y?Qjr= zQ55=z(7erA5vw=V9*stBud8SBfUojMdbM2H2B*k9#RV6lCV2s`EE1-2W zP;Dvtf&4acN@a7KcxVYM9R2Dai7cOQnP?yUB@I5J!d7>wrGuW5Q;DIw$49E6OwJE2 zaO{dgFXu|GmP+(I3heBuax;({yc=qTH%C+?D;ht!tFj{K+38`+rpS$KaTMYT3b@pUP0`k$(Q<#f?bX1mQ?O|K(eyoK4S@)g zbO!TV;r=QS$aL(EiM{exCi_#2Plq!-1=yQwqX*KzJW)#W)gQdzQ(*ZYca zs`vdD0s)CgC5)YQ&gv93N)0-%hY7>Q{O3k)RL2}xu?3C5uZJCH1U8|xHnX4Kw7P@3 zGqo{1dH=$lZg&{x;N~cU-Lw5+5V^k`1x#12+a~@(GuwzAOD*%terr!#2>*OQ!_u8j{2u^vhic(@?DCjBntmXW2e6p=Niq;N&{y+5r*SGgdY zu3qp&uX&Mv{hfnm!d-s0?U=I_5>a^Hz70<6`1M*5Gx`QTbz@wr<8-L!M!ek`5v?ve6@X_vY3d^3$i`1D5eEi6ZKG*vN0rImB9D1YvYdT$0 z6j?P+nXKyGvULm=$KQ`mn)p`b*cdN;{{j!s1k9XpQBXsjKdS#E23X{fy?0^EagTq$ zne41~HV;`8IxmfXSi{FYpPYFeVxvo~j6Y08Bdx`2D}_VYqogy#Awwj48gjLX{kF@!w zK52S4ER_b`W!IF`L<>oUW~x}JANw=$g8A>v>rRriQH8nyY8Qh_eygskzua8`d)C8u za9oQ1BvO?=5Na`(+bn!NNs#RNvA2UY)3der>(~K5mepoQo(!a3pV}w5hKZ5;#S7{u z^K3MDvY8!a;o^o$t5?JwO0#)(AF$8s$!2c!w;+qsuZ{MWG%D2FX|Q0}UC}sRcxDG* zKoWZP)4)2@nC8C_0}SI6h4T1!p>%Kqq`!H{^TKfEB0RGTSNmjj?724rDnUe+PCM0c0rp4Cx&E7onIY1b z+4zmZRn$BQ7?(MGaN71dI>=Lj=Ux)1+g?o|TkWqQXi&If7^R2^ z1L;HwNKRMxyy!xt_iSxx)O*-Y2EmYTS^VaE!6o2nEJBN7^ z5p@P*F?8bGIW>pS2g$bl<@z&H;kYL{O{4NNJrAGjw|8*DM z!8XF=eP2&Xu@j~6T!b%7@afzmY>3S+C`4BE$>raPuNw@5)YF-)9qe`0S^nwV24L9PVKW9^kt_%$Qt49cvv(iH%2hoa;s#AHe3S2#G>VsLO`MDVEa?B7M-_J0gg0DibS@ZNh; z0pCq7f^7-}&JVhcrw+iy7V>o#i=HF5O~seO0Q}W&Zr?UP_wsLZBiY<Cp2U5R^5{}M5_;1bezD5LwRB8MwJc zd^X44u37j%Q{nWbQ||@+jOeJeG$l2w5PS`TtVToqe#31J?}V#$i&(A?H8aN_X3HFOMiNC~pPs=@9&8>eoSUI+% z$R|PFqpctXjY4TSFSl{pMSr9^anfjifM@l6+b->c_SMP5fjtC}@e`Q8Q}=qM6M#$G zZC@H|SA&RyI@2EJnUlP+`ktYfWUrs7#)!Q*`bcJd_0^Z$1@T%>+h+sw z-;YWjBb-g%Q<~i+I4nqHYD7Lj3lh^|Jc-G8D3PG}hj3A8eF`a2bM+#pSVc@aZH~CJ ziw0|+xJ-s(%{S;|I(t{#WtPHqH{~%^5gDe7Y!T3nGC49idd#n%N~m3gTygcgw3Opj zBF6BsziGPq_LS}QkJnGc+R~1g5Y)usW2B_Chym+c;PIwg>AwzjUIrdojjzQQdmG;W z+EwQ*#OgBsv+;aMeU}Sldm0l`lX$y0j;@0Z)(sQRc;Fw#bPu0+Kf z9X-wN?xoDW-V^>}qtD`a9o{a_03Rd!^T)uH#k32Mb>(6u2M7?{6L*E?FHY>tymW77 zNZ7gHzZ^^B7Um4K{?u%pfjMcL350tgnny4_fX=|y+F{|D#Cz%s#PlU9kH(?=R`2$j zT^tk9Yj1p0Jknk;!O{sM+Dsy9XH2=3!=|nvi8+H-yQh0J@sI3wP`ANtoOjYa$;rv< z64^I#wx=XhEVSv3KP7!#Rfo&Jzq@cJDn51VLNUsyi%ac5lehWk+6FO6ab7&ytMam? zAV<=)HDX+UeD2}46C?bchCZC|m5QZvXEO$=fq(C!Ch^!PX(2XJ9y?+&{HynPyl`HE zSVm))>T5lh1SVM}YIn2IHuo$_ZAJO>lHD)^&$p)OIQ^)Mwupu$)~3==kWil8$ZJ0qe&;d5h7 zkr6?d#_MjBu}>HXT4nK6J}aD5{*rKUp9HbN0yY`fRHJ2A2~s4LuY+@pMBV^&B5v1y zj-By#5yoP!^aj5R`NA#1YSA(n`}_^su86zMH%%M)ABIW=3x~+v-fJ}6FSzyf`0c5h z&X8#hT=Isr?!5f&QUsbIRUNo5u3j&;RdjPK8CWlfF%w|pPMb|gzeP76CC;m!eqvUap3IEq2F5D*=`59wYx2@{h!y|`Lij_NI9 zZ^;>MudVsV$>I6U1=uLLShcX)2*L`frqjII+@40`Et&ZWtlIWT$4!C4{Jsi+1f^v3 ztXjJbh@_7F?++#$*?rw}2bKc~HNr~x<-9C_&kK02Pyh|B!T5cg&#C33ISsV8Q8f8=&^mf^t%VM7Msb)wT3k)mG;2fZi5Y``-tS+}&pVB2K4&@~i(wS_KjK;|64P+Nl? zp2%+_3@}O#k4WaV8!%8tellUQ7$gwi7+(VObO$xw`g06IgiohW4}3f$GQM;(-7?pp zP*7t#{oYZeBOyP<-Do#bU@x&+b~0()AACOj@EGP8Ou=+zDiB_U3^r1Dd}+MSwT--b zx^%b$LHPk=m#05w9>Sfl+GeN+nJ7-zHyC`La;o2nPQFw0G2y$PyhDjB4lZ%+l^xrZ z8)4XbydxP5e0oeYagi@2-xwIfKC&`KOo#*w0>2wlt_oJPkXl)sy=DS7&N`@9VjL{u z?S1^tQ!#VZAY@BC%->4N*_#|}7UV0}1e3D z+3LPKNh#I89&~vZ} z;<11}P_|}MXRW5E%X~ZJIhYVOibm-ys^MDFyj{+^TeI{SY_j;_ip~om4o=`XjfqpsuSe!yGm6!enpmYmVZFEs_STP|!4sYj zRaop}bp68!B*akcluvDCP48d0&>d4}y^^ehBa0Z}X|qInXQn$&q-qJ^mqaf!b+s!- zBKD*o&kR$^oel%ePWpJF9|Q}h(~7rY(h`U*HOqfi~8_v*5McM zp~ZJ7ap_uXQ*R~s zRI;%?`fZCKV&DYmiBNu$%qsTQB>C7 zkCJ$Esd_K5R;v%}_?$LYuiicB@m*Q7OuFYLH>%i2K92rL>rq80b6tAq5$HQ zkaN$BV=;Ziy~ayX1T0kX(cHx|#^o7ul=;KoOfxVU&_{yZW65sB>#vk6Z#Q}AvOeOp zM}KTV%oG;cc7Rh35{t3aNBc1En}Sw0&v`oj)gQ4x2II1mZ``~u$~f0S%!N>K2u%j7 zDb@KI?i?@5P}=BhwSH*40168%MF|Xm9bo#GNfYoH}d@=&EAz?$5GAEaU+R4c|-g zeBL&UP7|<~UV1%Pv*4g=+MgFqB_d!kF+{btN{-$gry|8ExJ^1vW}1&GRi~G7JbQ(` zNZ+$E5tPzZ=uLBr;<{s(d-}Y?^fIgoA~KxtpfO-m@#U)2mk<*ZvpvTzspI{_ehCA+ z7^$kR_-Kh}KbC%=%Q0^WH8KAI!lV)AX#{N}a=Ezqm_(%E!+Zd144kilcl5Yd%0z%T z_a7g0^cJ3jVcqvM;V6z;!Skbr=YsVhjo!6g<87%T(s85woXhx3?XPO1GZT10$Ka*U z66sgjZA@n+GYMKkyNQz`kEZ$4jr`1KOXN_A+drU0^GXF^*YD#{)dfE_rDyb z8udb-;>tppGE$j}mk3h=hDP~4)@=WFr6(>@q_YRnTgz5Td^qn4l zx#Dy}{OVG#LX755)~R7Fa8lVx9I$&o1{dJVPk-DVjfoKIH3i2oEuP^htgXrA|5IHF zH4d|}`WU=ji93c;Bc7DFHw;6dkwS24j;Ct+;cfZ4u z%EDh@;aVc|`WOz^1U99Hh&_*=WgdTfyHZrnIEz#0cK! zTq$x*fI>Pe%h2lZa)?IYdy+KeEd;H^YA|PhS$c<1^h#QKTZX&f{|qj6Wpw)9VVCgi zC03fFM4QhXH|8bQ(?;s6PZn6zQoRiJ;@F$>y>bF4PEuqXP6_m08@(fB=q6`U%W?f9hm;qF>8rTr zY`85gGs*lIPQ+X@yjK7fz z=TUxm^_UX4edIc;Px;4p>Bvwnsdyjt-2wHxzGS{T(aU-_y&m!N#mBfg^*T1uIq%_w z>b3R&=LD3cV|R%Hyv*fi(|&idvK@bt%*MxPo%~_AIsKPUw6g3!sy@R4@4@pt>DPVB z{@J$bG00MGCc&QXZgiLV6Py=eRUa$1>Nge(xQDqt$gL-W6k7{{^s97=FQpE`=#lWtFjZ%4Ij<;0rwA|=~ z=hYZ&=}Sv;{0ZWYQnLA$+jKXFzvxBXf>}sj=nINgJ$G|=4Datu|a9<9L&^3Od{DgrLP*^dwK-{WK8*C*~cCtAQ1Mvts_C!_%VSyZM`v4{Ji z^POYG+DXMpl3)x^>=PN7?lIsky^f#|j)myQ5CgO5iA%LK+TxX>TPh9X>tM6l8lO#j z;r_?=(LZ_0z6K%&_vUmt0U=y;ctx_CF0j_|>Bc0`)=%ViNrZ77JuzKp6N^tcBZPQa zlmbYf7O{0TMDCR2Mgn~*@`&=eTenqvIvs6Q)XTP?eRst`LVjUsau=vqrWZ}D*V8o+ zHA=R4V(wE4JLHSQ6dm~Im7}Q9iCPMg2Ie)YtL&S}hiMCEtI0NeyFxKl_v-aWSM}z1 z)rZbgT|PDRgyy)JL*Ow23dEN^0VCZ97quul*TZOT65mXZYImGTO879x>Dh5{WLUfr zD^qm#q+RJUIE@My{i?+1NdDMxEY8Y7Uck@E6G6)M{z(R?!IJ34eN>B-mhP3?qo=VN zWUz11NU+RZMz9TZ*Q3Wm`*bZgU;q)(Y2S*CYNcuag%Y$17Ai-`eN8Z*4pd+IjYFrFD9pGv%Lci-Ne z&MnEi((QOSrdQ(tIz+^&=#9t<1A*dk*AYoVglKg|5Li5ciQ6_6le=>W;5NVF^0_S> zpmI)>iazI|T6DYOD0y1Y^k&&5S?l;80xB1^+cRt`EBEkr>{_?njlXtes}|@NLw6(s z9S5(w>oJ2K7S9G!x}sS67OuuOyjdQc`0j)%m=eJUZRc3R+l5*QTD=pwKp?i$6rUd5 z(?gETz^}*>W_pei;5)6+JHwm(OrhMg+usDwT*po^uZsQH!}|BU~&}^*L`%?AE$g1p=y2)$p*KzO#{=G(H|+9n7SzRhI8^KxoO z{FKA20!W8q_y)Ik0|U+xzD=Ja*~}YkuVy(ObBYaqeXuCv|H?G-;vl36*|Pf9NXSbx zIOoI@rRE<3B2x5jY`)6ca$y8oS1Ph|*o2SHba?U=1RYuXg)kHExU4bobibq6&C{Hz z6)Eswzu^*fSLUXmXl2x+^$AiNyblq+tUnEm&K@ca<&c=^J~%!|mLO@ntvda-?3R`B z8QiTy{#mtGg9`fH%1DsvHqEs~oq`MEw(@;_m=tDmVD-|)MZ1{>>Qwi1SXJf`i47Sm zVSF@;O_z;&N^)NQQr}#lq9$>Zg42*JlLeNZOw%%2Z4r*daN1Za^i0;B;TKvy&>eAM zTt3UXc=$2jKj*Ss-(u-@d+AR6Dz5aswU}rW7EK=tMhOeN&|)xVi5NT;CQ*|$IGu-G z^rY|eb`AfV%87Hq`g8h>BJaB9&TBn}9Qe=K<~}i3>U7(7Tw0E7!HoZ5JCEb>B6>4Q1tL&Vr_KW-6_C`N(<;wE&-1{& z>Vs;>H#{{KI!IzCOczx%Dhh7hqkG}wffSE>4nK)(r>3I#JXdf`w({i${A8B-g&j8s zrU=rwDn;&^^ujNHw}Mw?mQ~9`Py}>w^;Tr(+z+Iuy5#N*r_y1N1V!k6-};S=+P6Bp zo11|5|A68ioWe{bCY|adpl4k*GY_*cF zObKU|1xNE`bTzdvc8T&yBugr@uv!90wUlYbdk@_?4!O9pbz_KQzW=tJ$enEm%YhVn z`Qq2t^s+y>qb%b4E}a*8Z&tk)a8Zcec?UQt4Hx`MZ|V(F4%F)*b+5`G;}9-n^*15) z=$V(smLD^};Rfr=@^0gKa{@kZ(cJmshLU~8Bs4Iz#w$3bdBe{jHx-{1*kpX6q;{b$ zUoAw|n*hUYoYpaxsJ*VYdm0y7KvUP@fK~k0Vn%6*4@Kp#BY-AtR_gt21=kK2Tt=0>cFVa>>N)koI{eV&e?8K>T;uqDpa2{UrXQsCn0Y?^8*M+8rW zd(aYqvJxkwghF4M=Jun^b0z7Oo7k7Ex28LC#nm|26ZOFo!yUoBB76jx){wwjgaEKm zGo4rTB61}sGfRIjaDC3(_DhB`+t1BExTsPR(J<_}ID|=#^(wlwxo0hsP1XAujULw> zVGG=WD_BsLPcJtnX&-Dz$Dr1HcdZpnusLaTy-grrdD?Y=h*qS}%KCcPXBHL^bp1!Q zy7Rh37odM#-xc_<{Dm)dgrC~ZF#@pT82+x8FLRa`q~($lZjStJV8;)*aAaiVS-*H@ z22)kcl-|3sp$>jHX*e_T&zKwvU!y>Rj-W^>y8yy-F5eVOwjg8j0S$#L%+luOc0TYl zZ^F3{4&Khcov`&i*-f{Y9V29eW^j{%PwZr12IE@-L)$2d-ul%4K)>8j08st6_P9x= zhs@1x6ZOD1pr`cQ@z|5vGdfy#o*}edyFpmzlV(usa}7?{fnH9F(5ZQ^2AH@Eug-Ti zE6Kl2|B1Trm3r*Qu8!%Bm;55Z#%>1oK~<^AM~ZJi-cE<|#8??0;);UteEkv#tzipB z@DC(LVt|2G82iFYU?%_saJhy{I;WW(YbC2Us~mGK%_Aswc%fB|i})xd@TO!+RmGdS zE}qImMbBcq$jj=}%1-dpMv9uovt#W?T|j-Ean#YU5Hh5EPu~FXh)iL#)*phxQ!2<3&dblVrtN(gdD3uBSCH|M#V$t5KZV5;v}5~9`2Ij) z@WsAh7{~p!s}TLBLR}M$N1dkFgIr6LKJVaM)HchUPz^PB1>S3|QF1}PSMeG(tHd{) z?Vm``14Zq=JKqfpJ;VruU9w!SkT^v=q-nU@d0q5|B8siI8;ej^QoI)Rc)L8qNjArG zTIN_C?79r-YFu_2{HYAc`7xjl1e?`c3c;M8tJIA&EMPku!#tP|aH!_>^6;O=SHkGp z6N%E`54uHc<1r(-P2i=z!(CSe0A9^6?Zyh{SXaYqZGUBk*|r8$BcY5)M?As~ds ze$(hfV?>)U$7@d#?-;l3xjw}H|! zW~G&=sb$0;NBYqZl`4Ffl3b1t5NIO<3>14ik1S0{j2u2ow7q?=IKlR|O6a!c0_wIS zOEE{NcYvIM=wPV)qQ%~TtFTU;wh>IG?s%GK{-S|RDhvMG zix0$a)jNf@tQ{b7nH99wrw(Y#K3%u9rsM zM}VLk9DVbeof`mo1tJ@zARp}lJ6eiUWgzAtVl%`3DJRY|&yEzD97 zNn4+k{Zg^eQN)WEgg9Ad2pvWjNMt)I%j>0z2t4xMW9B1Q-1hzysu5ldnrGdr+G~CE zz=JAsm*Ak8De87s?CyqJ<2-Yb}K(I11%AD_RQ}&1KBou}&Y{ftw)(Wo$TW_{@M1 zwGaRW{F{SPEackI3GBEPS>M>Dr1TvWtp#ZY*&4RvoKfH{{}Dn6oZ^Ruy4*oNnqDKC z4-D#;Ouv6r2c(pEUlDQtbJFpQe?X-L0T_Z37ba?-dWlr?;f0Ax`J|N#B3ILBDZ(Iu=;FF zy(%`qw-xvx0MFzr1TqpOrfBt>m*OKJ7yR!%$mrj~$*nKRbI(TxY!Dr@7ty3CD5A5O zNV4;-o4JFWjEh=Dfp=5*0VaRw>_0a52RT(xi@vZ16l|`1P$1jVy#)*FSuhT^A6ZYj z$nDEFZb`7?+bwn@3)EW+4K~)_H{fGy<}GZRQ|8V4p=NbOh2BTFEbxy;AtP6|M>Q`8 zPT_l1X?OiMok1`#=HhAXyW?yP8{#%u zRh_dK*CH(=Ou?l0i8Z{c03)-&9{9=GN?prAqO32e*x<5BPIutG#B{9f2!;`rz^pay zE7B4dgOctfUpCt+xI9ksfsR2AaV+Kk`}?!asL?@ze*EoYT6QCcXF>-*PMbD7Nopg| z6V|Ry6YMcZt#_9aV69Ntq?Gt;@F=H!03L;wNSGh|Nwq1SyHH0;+z zXUMtPQB1ZvbHZHIN-p(NBy~pZ9r+DY6lIr{YZLyPXom2_NS{>tUS^cchZ293s`z!v z^>2HR^sO$f5-pG#an?QTx4?4e_plMryQ)4OI@+0-cj-7Khh1={|1i7ksgDleuD~NU z2)b3?vY>oRFZt^Gw|KmHc(SbMw+!_o)Q~JngzK!Y1`6A?y0gCARo_C~s}Vetm|CJY zN?(fOo%Pob^$nJ{qXh`g6yCh72WVaY6@Xf!d_S8d$^;7v^~9Y$srNdSoP*~Rj&}M} zY=m}ommV^r6p|LC%6~EJ+QHVxXF{<>`yhE;lO~1m2`ev1E}|WDz&jD@lUshIJo~CJ zylBFYRq0Y4$ku=%{R(UFD(U(Ff$7^DLXx@bj`Bfq((nYq$+41kHL}6KeE&t1?^*4c zgPu|Ry=8LBcUq&12WZ4sXR}mLiltkeecR_dHHRle3UzO*88D~wOcENM9US{L&Tli$ zuS{D<_w4dpA&dmVS%Yms@ALZT6@0PrjZv#Tt;eY*pJem1SM-ecIz?Hbg~Tt>xzHa{r|?|OM3Xc&!=|7Gqu^1P}sU~ zHS@C-ELv}Qnc1YG4EG4$f}0y(vrXto)H0bdPnb<7gDgWM(NIg4>kHqynoLp7n(0{i zO#?=;E4RD$d%7N9KNqN}k6A>&>I4Fm@B6`T$Bj2As)t3kmkbdQ;lfvT?y(gVHWgX^ za!Q17p9?>;76wQ&jC7RC)5?6wYEI%l)S9UtI7-jhD6;OVE?(pG26ug(W&yKi7bs9e zOFI?o&Mk_1CpP?2=?Q|~%dV^M{Vx9#1Ur0l1c0x}o8fEhar9O8m#=WdZfx>5ttW44 zyTdjT^%*ME?o>Km5@Vl@#rW>zE0J`TCBC07YBU@xTm!}mjWo_Rz?P74N*!YzhFl^b zd~f9&5PhTiNyMt(re*j36N1`!*^iS&E*%$?tS^no3NQTOeo?L~)r_Dr>LFtBuJ~3P z_Jl5C`3~K;xa7GqfZkrJR_K-;4#YDI7ORvDHHlgD_C=+Brh?vCD%?4irv5sj+j2mV z1W>+OzWZQ99)Nyz*J6_*6o@i>4viT4?Bs^qj0@h5L$lqfx4t@U&A@PGIl~K49vHI$ zi1+4LQ+B4CAjoALUNTpqw&iJB5u(^8?{rUXT3a00M;>j^3N z#U|&HBwy<7yJpryt{H8|fZNK7t)a9_HSMb{^*eqA^P^2-KM&kr82WU=>)L4riv>ZO zr1DIRW8;hx*3gaY##xuqJ#!(lbZ>3gw&h^d!_LK8WAKGl#49*5B>?d~hPwE0Xh^LC zLZP2&El5c8Q}gq1*2NyY%V-YY>IceGv+Qib1~+YiBDPMPm%+4eNZ7ETlrmz=`sjSa zStoCzpYPn6gaUkQ?+?A#JUq*gh5Ds-cHN*EWY=A864KPcqbtvw%sRORa~_ zEHrxp3#(Wg8CNX@qGL;?^h{j6OJkS=#~aM9jbUDdqxQD@i-g8Pw1ysA0?Y0iTeTv6 zO>EuV;D&FKl)^ClwHj+JFHoUlvm-OdZ^z+8kd^THBHo!bB$2D4;Nn2HuezK`Cew0X zu_BD|;U_JdFi%^VSwJZwnlYkYuTfpl8i$ZYFk5?w4~FD^h*;RUL@3)E7*ZG>nK!35 zN-d%MskLD^fgyc;iT5_@-Le0}h)ewQd4D@J0)Tdy6@V2xE^=2R!q9d<*j9QuE<+)N zF*(?BJ5|9v>OSJ=60`G^3ph(Mii{aLd;Y-F*u)megRSQZ`wigJF>p%w@p_%$0epm| z{K0@lulG`ccNI~??IcW3Tld(Xpb)%Z--oFhL$QZ3G`;e``v@FXH&xu<|28zs{7{v# zbuQy`F0F@YBT zQLBr8>mxwu)l)>%fiTF*Ycm*8_HNcFYAONuTlAjR^6hlA@13LA_HFp5hr6YB?X{-E z#MXoMk7nz=5gR#S%&|bvQ$qm&k80NJE&pjhwaF;Ve);hd5`41~H9CDqr|x~O_ap=3BXu~o>y4tdom>>=M#d`kFRkH2=m>P(vey(dXID9@ zPVvoc+iX1<*X&mOQ0U2P$w+ovZ^$m|pV{eIHJt5e-z5TMamU>F{cFOIUvey$?U~@% z-P5MC<{yiY7Ln8;z2bWEd+6d-Hmv*^7GE5kVI#VT>Yq$7pn7$aN+DQ|ZPKt}_XewE zQ~vx`$P|EO>jBH%j2#ZrGGzy6H9xUJ@20w{OPK$D&WWT58(@t{sy zuPvfhf)^oxIMZIHXSspH?Sg4K$Mn6&PNEu`H{tx&-AUDKg|2Sfc@VQS+=SWsRvL~d z^k;+24^)-yR2{k`zMirNah@N&;EHg(!3mG!un;Xe!4unh-z>%L!L5iJ>wrZU1|{7# z&UX2Ft2OSjV*tMK_pV3?8K!FV_6^CN)ZK4uvb1fSOSBN*3tYy4n;__}lXy zT3>G}n1!Fag}?i(!~2M|iyMp)>t5&L4KnG`%1N%ng#q-aeAGdJ>sT*$Tbr0WYGWZG z+h=zgv6ha)`Mc;MbF)ETw0jOg{!8PTExgm)%aHy6vgh?nJl_jESrFNM2mG~< z`@T4tCggya6Z?fvL1KMYmAl7_020~0yjlUGjzjBFVjjmo9D%9t+HAQ z5O4Ctfj9GgEc7jYfX-DHeb}ZE{uo<5tqwIxs# zeY?>`4t;rQe`_{dyAoXcIwo)>|L`V2C5PQFL=K9(^)A%x_*5Y#+A)SpLr zXkM??Nz;FVd#ZKc;wGME`{u~r)^TcmgMJEJF6I=9uyiBD^9uR$|t@2ZBC-maA_gP=tMBkPk! z$mUv1Y2VwZn);mG`6waII{+}i&H%b`uU+;VUVXCF^I&cS;>zBcvTo_zqGK5_!)Ma)cXdIJl_Q

phrxYd)X1FoUFI!J?jEMIN8l_se`)?IX{8%yw>i#b@h9J7*3E|pbh_1W~jnzhrX`*yrExEF&B_3_;LB6uNZ#tS<$sA;hmrh zZ|MmBOL(jwv4fIZ7nTd__;XeNAv`@LC^Mv6rRX0m08$u@&MSjq2zFRjS$FjoT#qAy z6C?%Cz=^x`ImUg&5au&ah&ZdA-mvAzrL4#4!uP`wdrp^wG{`7od7}~!5U2Ns!dFeh zk6{!s!zK;spn|3CnII3Jsk5In)qnEz8-E6fKA(D-5?q-`g!0di@t?IEc}efNMIM{N z+{(ac3Q_AnQ4G%S*rpIGD4^}NcJEv@lP;xncptJ_FH7}hAy2s(`Y;;`&Ly1~x9}Md z%ysLV2fl1jkozana^;y#`6!HAnqW(Hqsy-%f=m}vuZ9uqU(nqL#E1U=Rk<^6NNh6> zV5Hpbu)y&7>T|m1qnLfV_Ik4RDPW9?Fgvn~ivnO;R0Yr$fZs2(^)B%OKCcV!$S8Tl zgZjRJ<1T)xr*1q)tC>DRuM(Tl^a+ti6Ymw#{_Hil2@xypZ)ayMXaN+UU{vi`t60^% z>p4r=oL6Lx`xV(yEzwc*16z(2H@mF;!mZ+}zUZ1L3vs&CnHi{Xt?|5% zpu+-xU|!9_$y8ldCV5Bs)LB2Ca8ap!fR*Njrv484?$c5Y*30a-hHNtGJ;qv{Oz=q~ zu5e#}CKIvpJjUt1ynJV9cv+e1aY&OW>9OLco-fb8Y=bSeARXY!GphAFG~YrHK2k`; z0^F8?gh6*OYVK9rhOZJ$rduum1~D^GitVmfwv&JDK`{e|lHxXqm39E&K&vx)o`ej7 z69&+|w^e05PR1^1Iqx)C0`CQmK^a&n$8H!%AOixepH}9`9w$O-*?JE#Orv?eqmXH% zX|(S!+7f_6nVOH;%Eauc5z;|~ne{N_1~^gp$2JVAeSj3~wWeqRz4)%7nRzZi;0aB* z@NYriyI$f}a%g;DsU3H^+#9#vqVr780;tUQ%l$mAD;RSR0ws7Mfb#zH$>(-0&r%4_ zUm$1e+k4$s-^D#>Hsa!0#ye5R&fpUieDW0Bs$Xjn`;)iE+WX$k$$1J@WmUv4tYtpE zl2iMsEE|A>8c72mLk2mkGMZ4yTGR$0rSOCk6q8G2#_mKruTu>8;gMxv z^NCuAP*%nB^0RW)#TgkDK!t$M&s!FRb zY_MF`c4ZhYyZ8FpI<-0*EvU6@;sCL)dEsI9-9>-iY~LoC|UHGDDZX7}}!^ z)X%V+K2xps`17yxY;k}`AE;GRRw2(4OM%^9Swg)NaD8i;YS4VK|5z#`cwpYdsBVPy z{A{rfvv?JK1C2Q3)Su`$eSWz`BgvM&+y zGq^^_SM_J@zA<}kD*fL3f>B^+?YpJ|jcCm?F?^?y%6K@y7|i$wk3)9%vc(>Oi9JGa zQ*4ZHyt(!D2><}UK)R1FFEbXvx#V;repb>;*S=_~VZ(i2q&DaRDUT>S*62k#liz%b zG?dq4nOu1V?;6Jw(Lsb`Sjs$=BP-vSTFckO+wzGBY^F?R2A3EBaBJYPA%qgPc{mt? z<9Wy+#S0wNJljCBl6|y+?%Nt!E!x~)0HRpN}T zY61wu1|-&RhtiOT0xP%f`fg{wWQo389>#mKDJ*($9i1x`FhlGRP+&GE@bkun+Br+Q zGM8d?x>zfJGX%tN@#2g0n4;FtKb_&fHs~1^;>q!uRERGn_aA?9HP=k`P}*k25SlZ0 zCl3`T66ltV3axWkViQcc$Oa?ghgUK<6etp>`*rOCLuLvr$}Y_WLYksv>S-j1w3%Xd z2t{KipJo}16EWutF;kvb>d^h}0r<&PD2Rz-)ux<*dvGsvzAwqD?|qK@edNQ^+1ap- zUWA$FCZOa5oMIR`RKN2ScHIv8zV7+ThBOZXC;+$snDP9a^U7ZHphRp{0Umr*k*yIV zc;~hIKJLR?cX07{lmfR^)YsRcif7r4byi0``UumV%BD-m0jMwOF8eEOEQl_98>dGj zJAgRbJhmZX`feL8o=7DIkZH6A$(W8kz)JvEm$!>O!mSNGBm#=A<*ikr;fJ-?HTZ`p zhGDfs4-yf*j=)xk%Evxa%UBh9h)ozQW^dYg6`v+v;XL>RWXB7w3FZbSb}wD<_exNx zH+1K?{ssA6bB3YhMt-Vom*V?n8UE&CIacvaHQLQqx@aSOD8y*A_)HBv<`U`RI^r00 z`sHyTW$!NP=J!imnn}07_O9_SXaX*z1aq~m+Vsg-iJxsWkVZ?41dmt`qVO3i)!9%e5A43{ zvn7uG0*&CbwXAVgijp2or>7_sj&1oo7a|`>`_Lz>BQ~8%tsms|B+wD$bZUw;W6gf) z_~V{`XIMk#*sA)@w?WEz%W0U?7I3OIda5bVq#w=z|*AO+{a$ysG6=$6=?!tHoy zm`T8`r;;1=tRGfIu(lA?ebTM1*Sj8!K+9$g)Di8yb%{_~u>Qjm%=e zNAMcCFMuYF-B@R)mjL0bdd!y_z=9I7!O{SZ+J)JRa5!`t z7?`U3n*#1u8TKt+zMrn0c*3P|%?+^uyInQ*fRClKfcI`g7wnlAkq(<-G_t3h74A`= zpm41E?Po(^#x{(eI#g%7NpD%o^eXwbW*Dwm0sDIC5$>MOVd}&#^ZJ?!o9nFgfaSjb?4l;?rBpQv#cAYh3m#y!6qCs9MC)}5wTzD*i*OH%efebc3`qsXF(Sjs z^ys|BKQCWmZ~zWMCRST8bz4F0+TiYNXp34#+%xzsgrhIb+1-12psyHePM1jp!|94E zSMvP@2QN>EZBI$gQ35TgOTxPvmx}N|@{A1;STG4f?|#FXT~#WBLPW7afnelIFe{W; z0wSOQPMcnWk!9)`BoH~{A3Ev>2drk;LiYcRrLgr!tI8(IC54s*+16;5a`I2LOEyw-#?bYRXNAkZK; z+$$2gx1bksC9<`7)(YgfudLfM)2Rq}0}z1*-2}GPje)FW=~%n_H~HTtVxz#B?i8ZnEn6Ou_drF{5biyc9=0~@mB2sf%a z{vbB^Ox6MHGCr3MEPGU4#lZNs+`ROLeZrO~vLuNb`-{WkSg+zL3A)HIO5tKDtSmYj zUG~59@>MJlP6zy4En89!I{x}IBA)LN2p-_KhWuXs-3RgkYZ`r3tn4a}9$8GMYbbgz z1m*QsNK0(`5NWU-UiAFM=fg(RD9M*nP5l^qRG~^_gbrJ1%4bu~;9(!&W^4`%>0kd> zJGPGwv99$Q+n?x1Yh&kHQX&m;`#z^mXg4(MywE57oMUGap~9&;sGitm3c_9=K>rN0 zTy<%xcSu1(_V`MYDmA($K_>jFGhxpr66}8I3F<$4N8+`9ne^V_Z$u^a8)$wOtRBj{ zCgcoiS6V&#WqkjgPSmwHNwG8*XcgNQqmR6J+i)Egw33}FwRB6N6kN=Y{EiK0+1CJGyfuao4ULrf*4iVfWXu*9pcd=5*skd2lpP?SO zbf`n$n~k+ji%@Pe1hlBe5t0ZsF7bu_f#adzCrjyi3kxW`NQ+#W__(j!=Y*N;MsUxr8R!QxY`-+nZd)*iLKZ}Z7$fi5 zuMprmt#YqEUV0+9qv=OPE4<^!JE7gIH#%c2L(T$67(>>JL>d<{N@=-9QJ8H&m2sX! z4XkHHJl=;^$n(AuETcq|kHBp8bF5se4*n#utka12Z_si z%504odC&9ljG&pfk9_YZCSd0Lg5_1<_d`8|GHDh-A`-0#4<5&HlDYeHU^dZ9wZ|>Q zHgkJD@5wMc&wN*Csqov-Jw~Yvhav#~+sF@3H}#m^ZywGXu6f;Os1PNu1IrR+zM0d? z&AimPb+eyg6~J#zdGb)jhAh$jho5GCC>%>vp-*Oi4f_|+@jpXt3G&NwRgjpasn$vr zRAzj)2j*LpzZ8YkRPJr@IFIYxn@bLn8bfwq<@SRP82U0n=cdhKYYVHmQhEWB zZ-eEC>=aC@4Z3APxUP{V3bq*5)vmTWO+qzKHcA_}MMnUwN(OgXU z4lW6a@rS+lMFG;0%9Vy%)iCk>fRGpN;#+`O{UaNU;Q`Ut~E?# zTYK;G&aKWIFR$5oEfCwe-6fA*w7I{(B z)=9r|PamN6lU3Uy+GVXJF@cP*XzA9r<$sO2J&Bs2#%s0(uJVEd7i)~g2Mkc#7ELB|$>*=|H zgj5Ni^^HUga(^nrlE!|AE{v)km{t#72v$$RJSY5&X(LB2ThwYsrbE0C?X$7Ol(e?p zudl{9+4%lVj~@&P=^-uJe_^Bkq7mk=5O{)!ya4LU)Dh?{Y(j6J|<<60gx04_P?cW;D7?U$ccV- z@{FHgUgP)7oP+k=SQM&rsC@I`yCD1Qvx)fIDD&V@+pNuh5}xr1ZGnBP|7>Kd-ba-A zg(d#wCj5hsI97(xwa36D6b=nn4OgrLT%kA0oRfj&-$`Y@pR99Y>PM)bV(8Y-!UuRM zrAKirSY4`^R(EXJC+B)H%nc})!mkLJ)oL$C?;Yk}-lhqM^S zCA7*WMuMh?eqNN^#;Eusa`H4EdFne5wAbYXw*JKV~VwNRKk2 z6Sc$^KQ*_md*&mckY{7A%j^XJNCx^NP8lr0?_$p0mg@ei6(FbuHJ2m!Z|;vx|4W6?_k?0y_+ zttR>8LA!KdoM+t7sEYsIvD#k5@-$k;&+f-FkT&L%c6cN^(j4dXTFP)XwX1aRw?OUf zGmEKj%;u~j1kH9PU0Yis$fHIbpOgEmdc+1IuCU^w!biesncq|T@;4XU_-syRABk4~ zE{I2-^P|BPTZ=;ZO-#DV(hB;0~Y~(!+b5SKm^rW>g~y zh*=F;%mn=UxC{5Cf`%Lhp3}RA`FeSBgb? z%(3S#Ducc!kMK0m)ZNPbXEqkA(FwEDOXx1eqKFISU!wm%_?mKlV4PeKG>VdDo3rW% z->0sWtBcq_0g_9+gc=ouGHn+*hF={Sk!d7+jENY(g74dSc;mvN<1WT$sYAb z1-ASYRZ=$RIQXRc)@CYkS-#Z6F{DuD*0l{f1QIQK^@T!>C?|3`ZTsq=! zeEhTRjl_9vhVpSW1w^O;z-DXuT6$ytHIUO^N!P`HchOMVj+;42m*LAv0Q?BqQc3-I z$ZXFIAB7SiK=pEgWaS3OiK1uXr@)0NFuT%}chSB^jfXVK54wg&Bi0x1ACq7{%d)%yow*58&XBnrs@*B&M&8|Y8{2tQ|kzUMN;fL(# z1Q{`+|26@wPo>Hek1{i_zD{~2&E&9jJ#4R+)5jSL=N@{6q|RVj?gQC@znT&M@n?46 zwx!QNo;~VA-Pdo?!DY)r8XY1=1KkQb)r@QWoanWZQne;G1=9zAY84JeU90xj3kQ?( zTn?5dc2jAo9G_(dnBf5GZX%vRx#kXCD5ZMsqw?^nd4>-@9ir`s%s_elKr+S*{c1-| zAvQ(&KM|}FuAc(tj>!3DEe|z}|GDK5=rlYgh8H=RRCyUM_a(oS5{!@kI{~Bj{_+zl z{w%diJY8r5{k^%ef?e-M3ZOHP8;c`$mPP~EODP9nk89F`># zQRt#I0d^D0BK|^c0mweO>z*QW=QGr1ood+Wf1-KTsIq`*4~i_{ZHwRO69bUdGC~yo zzL?uYx$DDF@WgiFC>e%-hsEwB~A<^F4Crh|jgx=d!&4-)riO3m7vKr=xi z7J%Y%FUc5P8L|+^L_jI4$lC0t)WCfy#z98OA={9V)pc1(mA-3!;f#cPbk?!fdazV4hsrAH^0-2LGm^-fQ~F5&ytNAn-5RNnNJ1<=C*L%- zDZ=J}T`AAGw71QT!c~l?m+kWvqv_ntZ+g69|31!TE6Vlf>UL^*Syja-xW?pLyCfPn zqZOgIt571dF2sGX%eP#DeSjD3wI{(;jy=6M0|6@U3cgtQ1!cRY)K-u}f4{)ouGU=L z&c;z?Esgm)J3a!)4+E>maEdjs^pW*yPy`2Nvan+={~(;BR4DZndZtxilOOMJUXvB6 z!0KI&g~xdi6PuSz$;&#ua2j&T3Ukl{%c~zesk$QnNv%hcMSJAWfPcb+0w)j@#XiQ9 zXSG-><39f2+_)!avqI3!dgCdYw-P-PdqjJ!#iyEuS8*Dc7a@X{4d31?RsX?k5_taE zQ9u2m+IqJw3Vn-%Uy_9nx`dPfqzyacgTmS)%R^EYvI*e+QTnkF4VF;b%Y0b3x!_l116??$XLN4*c7iVh={7Hk8+2j{dcxnd>TPCd|Bh;hA;^GhiT0Kk7B95FGEjeieC|$! zSoA@9?7h?%c7+bf$ex)?`mOl%jDBtLLVV#AMWkE0I6StWvvr)a@0z~WSq@KBsFTya ze^s^0VzM5Lbel2@y%zc-sT-0%$^n2n#veBq@tlEkfCwQxX+l{+f>M_-KN#UxNBj#? zrByfIsT$Tht4nB8Wy4B^iQ)~3=bb~IYzAGQb!am6a{WIx|2QuS6^r8iFq!{A7lT)i zhzN$o)B2TQE4u&3I9JBz&^Zy5>`*czD{*|P$3M2R1?KiaD_N`aKfpVqY_pZ^yXiVR zhoKWNfoAt&IeeON@qR%lLENnr+q8UnQ%P0pY8rt@`o;R@C8OAF$AO^%x%NJ+ubpTs_Ny`EH%2}dzr3LC&_kuom2DY~_7)w7==S^-No8 z&6+5-#d@Q0NDOH?C9GjtH^8H6faG#@=3o5l`gx?0ghX&0wLyoApWqtdoJuR~7Xqz< zsu0XkEuncj6TAV+(DF%z!F%*$a_Ei+#!1bi0+;1gJJAk{ia!ayc}oG`w=NX%3NC!# z?+i3+dR(3}b9^?f-aW4KcIO2-a z>DB~8$^Vs=At-KC0MFbX6|~dH4yq->7HR57ua{u=p-BZ(D`Yml0c4aPW)Rs!<-R`gsU;9 z@)a-}awq#P@MCFDzQ1*;~ z4l8JijRTtM(x(?HL4Z+n-(u%?jl>jJAf{Mw5J7pHUORIi+(ab%Nd57bYj>#d*h~bZ zuLHbi3kxaK1{1jecM%BCyo6(b9m+3fOl{JiDc=A1U>0-zD^JBIt+pVRI`DF_x_rE3 zLNDRlKAqy^1#cmBmdbz16*izJ0n{IJg}N`;v7yT+i>}d7ZtA0{8R;ddsV=l)@LI8H zFDF@(BvyoK{N2A zLTl@K5Jp=71dwz{7}k-RMo=0>tZo{i6RGvEYCti>7uQKdBpJ_$9=h977%+iiwiDX# z=lYE1Y4^=6(c2M-3@Mn~i{<~NvhwfDP>F~6nGhEGn;x`XD(Kx8>sEcF%3QIr6NkDB zDEIGrv~G`zY>)PFFO9Ta2!A&mx2p0rE?-Nk<_nN9ZoynJSPEUUj`B@=RCCPd_+%j@ zR2Ctzc1fH)3^gKiu`$Eun~Q!si3jEe%!UbfxT>lK#+vCdWsVxyIaH` zwN_9589x;9w;A<}Oz6BZsXW?4r{XoeaIJsL&(4u`r->GM6XD8EV`2QSmr+dYaPkhc z|G##@v`V^k2`7C2g03D^@}Ai^LCia$GLa7|BBYdYYMFh7!ej z*Q)3zNH*-K08^L9B>9;>6)4A;vzic9FZ9Ar1ruuWKU)z(6BV&)TW1A*yia4f1P|gn z<;7%XNY1+aj#DFvHux%#sf6uht4DRgK!bmG*)O=reWO1Dwd>AfXI7P53)Kas*EZs?*5n3(|uzw;Q1-RaSg)O+~G z+6-vRlhc_FkF(4&TKs#EHB9!8k-4P=O=JTt%p{2tKx4t|>vYG-^&RJILujj_Or<{)0*ap-r29@2sKOj@#8R% z4s%@@l_1fb96Bk-hRO|~^b1Xhpz|@;vZxG}xzCTLjgri}16|kw7`3Zq9UhXk*}oYl zRdjiSH~p#Rf1HYn+-d?4siJ8?>Y^RYK-Abg-n_l(Cq?vAANx-vZy7Q}4tncCRf`pu z`;|*w%{qXBl_oxjpz!&hj$txp$}jzoNJ!_oFmjov zE+PJK*?u&9ZlXw5)+%X!@O2k~f^4HjOFRLFOweEi{kF&%m(ry3+ZMIjmDkJ zOnWe((Wum7yz?GA>mrmriXG=2;s@Y4xF8U;G;pQ(7xtoE17k)mMsm%X$=B`_3c+QW zyId_BykfYdkwF1`$y{nU_hG!>~I5TY4yaiJO)4(;p(%%IZ(3{g@DJ;%YW}XZ7i1ec2)7xwRs*^@(zMj)=?|%)E4Ibew1;} zjR2w(^Epf)1AvLW<3P#QDVyi-3339-|1{AD9m1UpYA z9fs#(Tqxz#{)Sx2ixTZJs^d@N22!UWUAcn2wtaVF9F^(6-)3*|2&L%4=#fXc4d69t zuTxRPb@3vu%O+gnE~)&L-`@3HmsQ8gte|}y_5rkxz#ueS`t@E|$=^lILpScEKBEUJ z(XalvUvXjdP=YHbk8(_&H#JjWB(bM{!v@mv>KMX6B`DGs5F=p}W1lJ#$vY_&EsAPF z2d%Q`Jsn0`6isptn+34tjp|TJ7|O%ppz}{W4bCU2`FDLGs^GQqd-+}waZw(9q-DMA zDb>nXPBdGxE3f*`+X149kZNoBJu5Wgji)9-gtU>ZoTvZrl@E^M@T}* z#V4lcyUc~=l`Df;k1PhCV=0V2fM5UXFv($v{BMd1l^hHxa{VDLmLXZpEjNaH5M6mA zS2>(5b05+lRG+o8CFJF3vMode)`gr;SfU^q3C(lrgC+7`d_-gYFrM83B%|(Cq+1wp zK92_J69#5F?i*^^iSL_$e3z)$8os=^TY(SJD_y0l54qyd>u^E5%LSqo+q6Q4@+VsP-W0CeXDN(`EmrzPFtP=wZu zSkDx!-MNy;V70z{LO)$Tk%9;2Cz7PD05e0i5{1a6TTED!E{e0eK{ROn2*@_ZBYB@N zY(L~Z1g%DlIF#dta>DX{2f@JJw!raq!hzrBDO80b0$U7z^$~_WszbAr##{!yyy*302 z+D)2E)!;pzWD8p!)X`5Zc4};4hxnpEQ6_k3iY1nDLwI;w98i;(N`R^6SdxEdLI@4e>EVk6riKq{m)zI^M!A&k1+@pJQy7{ zY^syDkj2QeI)bC`mT_#0lg~@7LNm+`l{+Syd!$1TY`>~FNlQA$q5_cn2Z%Z9XX0*F%Sh#s;F!LKq8I8v>PPDR!p7sLvJkIviiZZacf}84 z7qtqxfLB z*V4f*KZ2tL;Ihux(`k-IeFPN-bvbRr*9RL(^ROPmYF#(j=9(o&ih;#Eqgdjl&L+}kMdkyI^H^@IDK1wmz zhwS^21qzBG6Vs9M9XK|*!rJR7gj!Z*t;e{0;dS%ZTkF=Q-gQ2!knh0dhr|E#toa0l zSndI`ZOltV_n>F7%mv#IU-m)JT@+(`Ok?eO!A<8NrSk?DmRxitdgf7m2SLc&!vSG} zx+0-8gI@9u;@WU|2)Jy??UK2zVxc;QXdmG)`{R0x^2~{bw^5`+%c|Atur!|i+0w>6o#4kD0D7O4X@tVATu*8dFDw=yhvl8kN ztH#nc4D}-Y0L8+CWR@f$G?MDBNW^iprX)_Mt^Vo+03TuEIR5NWe~{wjJ$|Hb8chz8 zlty0hXeF^XUQEbHU^s=`@!BICq05^ho7C{XtMwOLKce>)_|ml=JmYyi-)qWV2pt?S znyv+U;Bn47^{9AeS$8{faSb(@3Ux0!^d!BZ0^)?0tZFV2iR5sO8GxdrGS39yK8(#= zk#A)6L}i5N5DCD8{W+O$1OcRnqBJHH{G)J9Ufc+HhS|14P@DZOA{^CZOn&d5ntM}5 zSS0WDiIDWJkhN{@sILD4G6?-tN|Jo`u0kJhF5Vg?&hm_JcAMFwv+hUgguQmV%|0m2 zEruBTj_BVUvN`GrJmI~$s-+OId5QRP`@+wQ2ty!PzLMmx#{(7HdWrY^zw(zANDD~t z^tv918>w4|p8}pw4FsK_ShsC=T#!Gl>|IBfRvCTN;jm$;=l0%?L^SK}AG>w4qr?+1 zW9p;oMx;tvEq-UVvHW=e3%V2g@V14N2$NZdrJS>cs}dyNl3nOe;u9NTVCoUVKnG=X zKN$dhX!MI47b(}9Yt3*vTZtOwuSr>wp!OF9`#{!JJ&&5}KB|Y4<)*sh(z)mEYsZ6+`1eP0 zLR10u-yJ*NPL`0jAe$Brt51gLhsVx+2YEK&9k;sgAT7hUHK?t3G;bu{$@Wcc7YeQE z`Y@Y}bl=GtK0BIwTUYJB;)b*k`BnhA6?)LMf2NnXbt%Ij0xCVbxvu8N+G! z?RaA*T30&vCna|#7$2lZ3o=c4G;drPiNNR~eS*oj@X#mXM#Z2c7jwE_j?}ybh<>pl zoJYjy9YVwVI?F={Z8B5iZDnScT8bqJM-&m>Lx(DSPSiYNC{h)HU7dhAFNL{&#@{g( zo}fs#1A?Z*uQq=zuV@92ka;_$3SWGxOO{WWZKODK%le_d(6AdXHxvygy^AK?GEx@N zUk`P9Yiv%wzj)?VXx03D$#acSLdQC`{CJZO^Lc`9`i6vg^+}7lO`SYC5zCuNKVm%2 zTjl(%vU{kGb*z|wrHJ_UN8yjgyy&#oX5(c5^OY2_vTP|nTmR9ED~1ccD}=!c`@5}# z=cGjaS4O%53{Pn(^za4uXtQ|-@=5ECkO12SjQBK0=iUp?SpNWY3hjQ8M8LQT9Vb0c z?wNfyvSUYx&BHzlpm4Ao9_B{9+h<-UbO8LiL_@ixbD;#FPQkx~YzyR?F&&9=A2aO(8kV{f zboZB|n@(MI1u7;;*m=pD-nLMqBPa8G7#rG7oU6ZJ^vt-Uf+AjsHMO4Cm4fIPu?pZ0b$0( z`v#`O@Fg(aP+taJsi!d*%+a{7#Av;};Wep_(q`OMWnV=$@l>%rk-|v(sAnF2>5DyI zH3}izw3Q&#a!*)+;-R;EU)X+u`P?WEC{)6Vtv zf(J+9>?5i%vSCPXtgcnuVuFs3S^H_Bx+1uBQ2wmaPi8_11Tuo)ZtHcO zRZ_!dXaU&tUl&ym#$PI}@j&{f)9)9XU-x5@#1(}!!aNj85z4|6(S*dn8SW-GoZul7 z^_7k}+8X`z6AG^x^?M|BMob@7GAqL z)7ya55LDc}oRwBtXkti7+eK8D$5dw(U*$nJS+wbCzxW*#ciekCzz2Jh*WXf!bxt!P0Ar!p}3meYn60~74VBH>z0F2 zQ1^MySEs!3ysMfHgj7P3-Zkf3^{49e)Rj4%;HdR%=A^ZzN|PN==K0WZobl+)bFKPy z%#|rUH;UO3Xx1z9OYBP_OetOZ+n(=`XSZnwGQCOq7;ho5S90@@o2oxx#$CsY^wnS6 z?Q9)=oci$Oc1ESNW#JEAdy(uzDp?PZ`+uaB9B}4RU(Ie%MZF!(xAWt&2%z;NpnJ^{ zdPM&%R7$w16h*|TH$>$CK#@ee(Y79;qB*#QIqAUeG3vG$xyzNm2YZ+MD zl7K!uH$2koemqhVZY^!^CfUA{u=UD&-X^LNK94m0QQ}|m_Cf0VO(Qm#OX*2Fq=Mnf zHe!vNEFk1^&Z)<0s{0 z>4PSE$>MudY~BxHa(LX3p1)5c?tt~y8Mx7*AhdC`b$E>_u!nc@guff+Z1JWrC=)Udn%~N%9gw0ZGw1Hfj2ilS{*rLAywz6`g$y$uQ}Lx`4s&5=hfL z=(ORX^{7Edm--l4WIt2F>|DK4O@I}ti-sOrddt6IWdf5#1#GEGqHFQnN_ZbFm+aZT zFR`N&!Gx}tdT-e54?}p1grR&8d6djtmF7TaB#3V5-_4+{=i%V z0E|SosKdK`NwNOBmv$A)EN{iNg7i4gbej^JteO(lvTsK}Yv$%u>h4q>+AfzJhYvQ_ z&LOpskgcz0qh_{#;mfV#J0a0wbvSfQpkWOcV52hY`By0ohSO82hOsu3zt-#B8`B!z z{^AD2{+MOcEQd?>EDcp?^}#GpSRSAUAcwc)&46izJ>8*8ZF>73%1-2rHHmI%+scW-`4F=Mj19eXEKpHUS4JCa=9;W4NbvP&tm*;kg8#@Y~Lc;>4KC~d*)%5h7YxO zZ!hgT<6HNh;g71Aq3_$Q!gZWhoOeVRovji@OwYBJKTC*M`z{C`pxV+Re>h8M$*uoPZq+jW$lyK8;3jBQzcS<(zqQ;K z`KLI%bLY{j=t^OVpgIxPZ!iqx=-{3_iCYnK4 zC4OfC-#Y$j1&0Sv1(oOg$+m^2K$`GmEHgCkX1bTvcw^&v_X%J0xZ(-QhBouGn0!Ez z4y7u7Xezlb5*>C!=((&yB`>|Y; zAy)K^z+rx%mlS9H=gd-X);$CfFSVzzXdLPLR#2Z0kY|zl`|b0o>u>>3w7>N_e>Tg9L{GlHl$R!QGu8!5N&Of#5-dyYA%OeRuy`UDW+HMfE+W zZ=ciM&+pU}>#v5sDlhr4?WY}j;8zO-U%qVa!eeT#0o<9)abs*`75Qv$O_(OqeFYWk znOhWKMlkQu@IK*qlIT_W-t`$K+u?H3<$nLw(c}$vLl`a(R-k`k;?<|e69W~^km1GC zk-Qjq^cz?J9m^@r{=m1$HnY%qY8?AI9K<%Pa9gjhxMG+U<@Ev!{rvyZsJy_(Uv4Q^ z6ztT^;w=j^(MxOk4dy1Zu^?wARC#jF@9Ws6ne5b_b-hH~E2rzPYmi;ygNJT&_Y%k| zUXfoc|mn5^GT}SE5uwzev;K`^eM``!t zTI{Zc*jcb!=~l}Z>!hLU+fXVtFNaUoEJ{YRyfT0zZ(vI$XIGse2ewy}_;ky|6J_y1B<$^S}0~S;l&}sZea|@>Ktb>pWL&rrM|>Uw>)3Qp{}eS&3|-K0*O9Jk0^Pj^yO zEIO5#wrzS)ZZBlwD%PCK=AIEI&Y8zSsPAmB*xfrFUaE1!`m|kH_KBRDjC4Ew5{ti2 zM6iM6G&??`x@Fl~y!EF)ZV7zo+ed5@H{`6QO~r{f4*1Q&@uhTew4M`QOp&_Pf{fHKG?CvG z+&OH|$8!=lj6i;IG9BkNR_d^t$G3>7SK-&+_4R)#YJG3YBhjE}q z#i(9sx!(18)G@i9j~Y$c<7+BFFp=$$r3?GoaaD1Rp#Hb^ho(7p*VD!SY5|O$XO1pu z^RiT;_#c-qCqKPh1~6qbNPJ?yUZ*>AZ|p_!^S)at&5>DYZR|+>Jn6g33gyVm@m?-3 zO+`>Vc2HPfSn20g@{1@zMfT`ve0Us7&yU(AemIAbGlB@~Lcs6+!qBPT_Wwv+Ce19? z)#$ZY)amIs{zj5_mviX#rduneO$Uz(urmeX48gK0;7GB_OPn-+D1BqAm9UxO+52N9 zvoEtEBlc+bRjAIP+&(%3|K6iP9N1Ngf__}G%zX2$OE#2265sm6ucnJj4elXQYmM)HQ6EgN;vLn?F~(@fJ!GuMiL?8lo3u1blS zvw};8-HDhS=HIRK@zM&yH{Zt)b^Kg#(({pjQf0Y-%LaB>F)bshN_q-GRQQ}yZ)o69 z0}FSPSeuUPpI;wLtfVHqkI#qrQ~%~ZA75O?1^#U0b8jjqs&i?7_}-%kWxhPrG6xX6 zzDo6I5IsAW?xWWFy@UH0ZVh9Qe9J3dPU}pO=M;FpYRJ0z;X1fN?!?20^0-L*{mEFq z?Du6U9ifv}z?nCql-%OG?X5&PAVy%8<4|ttGEvU6(D%JDMzV@`d7|NP4{B<|Rz}Yq zD85OQm$uOy4Zu3;TnAfi%Wm-v_iOV{M?w?g+$Bl~Y`2yrib@XdyC%{#D@nL30Cf(i z7nKkY3;$rZ(JV>e(d$WUV*lVNrcsH(OMi&yh?z1SPv{i zL5UQHL<@MG!RaB3&zw?UKA4u2OrmdwJqT(DiX9moU!uGX6nnsoBeX3aer~E1`H_SE zNk&d;7B|_9HwgMN(N9KjIh$5o3r7`zDMy2Wg>L+DQwWjyHz&QhF(?nybP$yR4-p4L z6jS`22$zc|HvnbDIKIPowu)p|Hy-r#QNRgplQeuqXZ{Wnbl{Np`;Z-kr3jy#-uBu5 zMsV-0;Xv+Cu|^NXKK{YA{mS3z4@0p_+3TQ5)pAI6b5TFr7|P1g$L4d$RbI;aVtm*Zu z6=Q1L&3xk6d&MU<(U=G#I}Tu8?J}0Xfl0SX+js>Z63-h`3y{kg{iJhtz zn=G|bO;;W%e3b4PFA0$-yvn`2H%8SZ82fh=Hg9GS&;=GZPSbn$=QDAB$tt;J?+_wG zqV3Ah_zu>zn;ze?^6!oFisCH*>Cf5guZBJcrqZ`2iS41H=TurjF@AQd)aEqZ`{~Dc znGo$233iOdjMS-T>HT=BYF(IJ$GiI8rXX%F7iN0WTerJ=|NU43RzK zzVY8(p8;dPlwtcgEQM_Pj>uHcJH>TcF1OB9N6a}l)X|*NPD(=c7vrqYME33boMNx- zX@SzDt?>gH>bi1dsS5e@(17M3Yc!`3Ywbbn7qiAs-Z^i3j zdI(+pC-FpTWW6>ozF9 z|8h_4;F0^6U3Ux=QTftH^GjyD%w zFF3W?gJFi#qc*)cr3-UjON`%cYQ!)&_d12V^bJm4nWaodb>Lp{jkw9XJn%I74(i`bTl}IlJJWB^5}Br zYKyeyAP(BAygEK;XMLd%U9Raet@3LjNKe^NQ#c z_=iQ{=EswG;99W((s9)zlBfyPf`9Bpw!tS2fXyp|WGDN_)=9iuxl!!VuBy_3?~n1s zO%*Nn7_rL2F%%|WcW^-)j9Mf4OIgWDXXG{SD6#{i*^HEnJGTez2!(e_5285qqbkW| zsq8@pWYOs`_c-*><$=p`WQTaxnn|+58`w}Iw9Wh0R9pGa(V*j+UFN-@{Q8%IDgBK< z%J-mrAsMC20UKWS*0oYSt}VZE@OIewKHl}^auugvW%*y1&j9;>ON=O3ck%=157Tst z;no&E&KF(k^z4^3D}ZQQkh@}(hVDA>8<_C=Zez@H5>=T57aoYs+el?cz4 z5md&Fm?Uy2yx;z{%=f@=c!WBs0tNd^V~WJUz*R;0+x@TMWGM9G)5Sl>vscTc1Hbd# zxc%0ZNmDz58l21@_v^0=H#Vn&OB%U#0sD->1kRZPCMcO1+3Zb0wr~^ntKamB9o}X2 zsTA7jQ)bo_fAi_Ew@<(=bos^{V5Gi<)a6(a(_?5YCg&xXTdXuO(;Do!#%kK9Ji^%F z5rD>yGLc%V6L^u7+n2$zh6c~9d!ldi`V94$P+Vo_8Y<-YV|O#+HNFsy&hKO>!z+7P z)78K>Es&1#OS9KXV?vU<|D5Ts3yne?3bJw@ci}jmctdR_!e(&c90K@?j{Q=`hQ#&V zXmznw@iNHOB63OuNPcs;TG|~0-$XenV7bQnr%*A`fblrh=i7n+|kQ7~yWgOi)$sDZOUOJb0^Hja&ct{7s^h z)owUo4=YtQujF*0(nG|ccAU3D#jyO|?V*D#jRI4^u*c{bB)A6w+dEH^|1~t2l6#uW zPm0?t{L4^tyf_0;6#PvD)(S+FwDy_|LoCQFRFvTKxYR_X`ZjlURa{sZmj!Mx|02@z zmx@`+V@1&6oz-wZ!e;>0!*+PHuK5QUIR0uObEdQOkauq+=`nW2MU+Cd0VpCY%W}d; z(~r;GnllgLsAH-!RkLX|bMMJv1j)^i$ zF}m3H&YW&%(|SXxn)9XQH$P%u9uX*?0o+O)WW&g=?+;Fed{&vT=h$<~YncV%m<4Dq zLXFVjBPLzqhfT)mxGPa?b+vS|>n(XszmlyE-H0qtzRVAt(z6(I8UTj|qD)3KydA@8 z)wYUC)^T4C)Fv#pB&yv9u>@%BYFPr#*k;Fv;%fmi!7O|!8c*IRz>qJbOr`*XrK?l@ zjp?`_Y9iA|AMz2(6yT=Mj`D?st0dU zi)ASv)<=`XN4i_Us$i6?2=Dgy<-jL4`K%mh00-HFb zx})nPhOf;kvQ8XFooB7|wRi#!Pqs4jfDBLNphh7rSQj-muYDc_FIjPH{B? zMGo}_He3{ud((|8192I+K$QG-;+KANey}Rtp`|dr*+pIyJNbm*pK&{3-~)J*{atyx z^_vijU}n!OZaT5lbQpP$LQ1mSq>u41ur5*V5aLWtZ@rDP6JKidX!qDHee6^5WU&Te zN!p?3RtrJ&uF~{Sbha!x$s)h8oU^lZU3JllwO((JCBo9$m;z?TyJ$;`6-I2+P6&LF zF4m#kamv!m*Vcz;qys&Lr!?iXJ>DGNcF?`q{BtZX2RoKRLUuC(gD2zCExm&f9`z|J z#e!q!00k{iWyk<2LI76rLmOMS*AoPPnT$p0f!^${7mhDbKYa1WGOb) zM69P9tSG9uHejmB@%Q>Z9?E0<&y)8Da1gZ$XSkGvDI0FF@OQOWHeFLfO+%fI#PZj6 zC?WaR77KfJ*Mz}H??9nWO!XH(baa=sYRA`}s7ImGBW*w5JQV-bAE6h!I`PV{*yBBn zBc(`=ZCyE>`*w0m^Gqm%#RCp8sKBx>T~|A1RkAKq-((i22My%TSoYCO61aAlqG$xa-7{ zun+lv4NDt7Rmr$~sn^HHk{UM4D9hMTy)?11>wqKDPq$p;X%Ek4t_-IvK?a`MF9Y6~ zT8A%_+4jX%M=A|qu^%@m7Ln{aN)?@WaecuKQP;sXmw98IobQ2UBx7#tqN3H?2e7e6 zAQUKCCWIvPA^)yWo$&Dzu>aGl-ah?KO5dCx{`D2ZL*)EZ))&Iy|7|IppdI`RVWkg0D1WHHO6?I`Lx^gX^K6p$mXb$WG zmDGF0uHBmWh4RG`7`p5@&!ZAdoTjJptSp{L-)r(D2ly56lQ?-wuHQAdJ-%FC&)yt2 z6o3X#zK&js59!La`a1#xM9B2)vJSb5<&+?SH-5`>4d^lPOA}2I6S3|iFUWUo(g6?xm?~6~4-Tk)Kli!avzY9Gd$%4l&^hs;cH3G2g_{2`* z(G~U3kU@1L=;C(=mwcYE{NjMj?QE$EZ*>B)k1ECX3&k6q5ASg&_%=p69zHNy{GFI3 zF1E?@JOlTW=*mx_ae7 zy%>u6=g2WU2A3XsU$_9l)G9w~rH9d}GYkT( zG7k4$d9{?=LR(1%wdsju%Y(yyv7K2zQ!}bM~!0U?snl8mM`TxgEyO87m>S9_jB4bNa7M#fw zUW{3$0SLrXfQB?daBA{{U8@>>7%x`NDk!l-NTTcu4);I^&`{mHfxegUQWmX}!YfhE z3flOdHa|>;meICuZjAw~34}Mj=>AsrRp&;*X#YnmHzW#e+=yb68VjO0y>T9x{}!G^ z@4Mk45D8sb`Z$*MN7~;4-@IBxcq*aqq5&=2eB1PZ1IM^^<)qi4G*7ATfrX1Fz5&`M ze<(csKO1-8$@^C5|Bn!b1N^|kZ)2)Dz3j`4Cry*LdbncQv#CB&zGE;yy0&B4(!`uJ zOz`W9n_c6hI2Op`o`X>VQE0;|gEei6t>1w7oJ|dsKj{pcO|0Y;%2!lPL^fS0hn%SV z*3_X)y$ob1aqW5N<;}(6DQ(~EXHygzcMiZZLjrcBjwNClum4n&v#mlRP2Vu&NK#gE56!+7q^=MB~MtAvK*|K0YsIK;64y|~K$$y&?Q{&W<5Ff}q0yk@dH@2U04g>-mg-R)60^iERF zT8DYZ*iCTT>;}1_Q#yarxNu~11`)k4%-=AlG;ehp1djkv5sLrVWPm! zlj?jr5CQ+8Fn{rrouVp$MhiO@LlH!YPMIRWM4bp=kbR5p?;0}ko;a4KuuZ5OOw=q~ zm)zlmXR|e#K(Vjh^Ow4e1E-c;2%W9v@$-hM9HvhI0*3Ydw^+ zwc>y77cyWCrh!In)|Eab)U01cCfD=iuctIe>@MqwQIA_qedwj|5;dbZy1D$ZDX2H$ zVRVjsnaBJXy97O%#~n_4HO_cmPY9mNN=!}@l%Ma{(`Z{?PAGDpY2jF~RuwIZfQMjNFYw6ArS-TW=4ragUwk25f4xeWdriec}BA5_F~!WlH&_B}~i z)A?PSEBI3dm4Nu~`KT=q*4%Wnh^}nG?A1K~K*sVrJx!>iJXI~c@CXo@r_QzjOGz(Ey4tk#uWYGJS^nhoCo@ck?B@(C3|LKCC#t>QG}YM^TF=9cGo8K;Eh=xBX6 zLXj0A3Hd+|ddik}`7eR*OT_zeb>U09io&qU4dg1%g{u~_ zkt7mrkEpr6WsnoSiNuke10W9VR4a0A1^2JB;y~0wlJKp=gaVt@%`gu}wl+3hDF7a- zo?3pRVReHQwhs{U!JR_~ra6}XCL8~rP~u>-Gx5p4jJ!YhFWN7h!zg@x()`Ks$j3&{ zp!V;Vjbd+avVMNi2`I@;6KzgJD1}Gdm;~p(`_Vc!zsPSOHxO!~R~5y`@n`>h7#*&A$7T4xnZ>_nv5a`T9-AizUHWKa1w%fBn3$%caRR4q zvvSm1zHucOM;a=U^ETEuLnTk!o7%(w2TF@h>%MrcD;=Zm0J`isi`x7y>+FvA87emy zjs@#H*4<$uS>XE^39hDew;v&W$~>fIpRv2{L)O7MMKW2EVhF?b#ZplMDI;u1qufVJ zCAmUBw6#LH39uNI(}`Yw+I_WOxW1wxg%xxE8`|?_OfzV)A)h^tt}0hE+cOL?YRc@E zsRzobtnYYlwM76ErX_#8SCEBYv-olOS>@k^V3u{Y-Hhs#mnUU$k)r6*i>sN3_o8nk z=hilClksY=*JW+XcX3T;mjBaI^OosG;gR<5Tc=)WZ2bbJQS|gLVjyw*Ie^2LZ3_rSY+}II-U%Fl%IJfsTRYZC1%xyJU@2)6(u_R z_2XyrP6A%>IcWEoT%=EBE#Qrb<6wRF21z3jdiegUdn!ULx~Zl@>1MM9WzK_y;g*tk z;xmNcs2WZp&Qoi6EwRQhq(6a;5^@)>8gSOB8Sqmh>~DH}??mVu4ex!2F}=3$&Hpz= zX+mbxfX{XrM9HUKyp6nUT=}SZLJ;>cUNidR9)1yp>6A7G3Wx_ojF1DpXArE_dY z{3se$AvV=ChNBbGd>Da}4$ct>TiBwR$UL~OF;oo%*60Tfdczu z<$|=3=$G;<3S^4^f5F<}5VPqdsPL{cmbvCKARSRjTm3)xlpY;G{@h=x=wp;%TIJB7kzN_%T6`fKf3B{2p1a3zc3Ce4MO^`z zo%hV{_wI^Eth$83XXSJV)nO5GfORlotX@&%mw>nBWn{Tm8QVXz?GL%6tU~h4foNZV z`1(1`y=peD(lVac1xaWOfwu;jEZH&&=pyQr9*1_Vm(c7@sWD4esWg(OAyZ*0q#bRC z|8r9KcV2*r&JP^NT{I=#iR=o6DWPOdL*4KTW9l?>*P_zEDy6Ryl5#SVKyQ?! zNtbz}=AO7m7Sr9gF+ii*X)lrQjxtfWeW44~O-qC`4=P?{^hjXg1`uf=4$5?bMN9%A zkpCk8s%wA4j4auGE5BZ-p5NbQ=n$F9YR)(#^hA1jvpqb^u|dJi@IUFoY7jgCU;GQl zVnvSU1>Y2CqEn#%V6{qw@|PWmU!3WSmw>q9T8%d-LwB^CRS3CPDky-#y3Y9aGF2ZT z|4MEhLi%mL+VWSvSljqvJr|{zc_`{v^Kq>V{3{^J*YQ2H2RdTnk^D2ZxYeg)plN*8 zo2{zX!I`In2zjYSv1zl$%g~K5=q!?LMZdV}%E1E;R%w~8&P}sLRBt3{@KepY@6m?f z&nIX9*^FL^>iQv4tI2G^Kr=+_gt+kx@kYE7q350hMoJq!)a}m4lTM~_V~thXx^Hq2 z_c$AskxUZ*XNags6V z?)+gYc;2HN*73)12Vicc6g)E5A6HE&PW~G*5-QGe^%wek^h&}?#F2dcvRv5uq!BSt z2{M5&f9KB);Br?om;K7v(m;>Wwcr@jPuLaY4d>X+x$JRum^FuAYGFlX0zuF{)fdkN zy;2xf<&^m}==BlW4{M`(eUU%L(@N(C(sw=Wa&p3OEl5zlUyc^oZ~6H6)ESvHPp=N< z{=ULcI7|OTua~yX{Rf(1zegB+P8WZl>yHi^$#!zyTTSOGcyEGVA{H{4fa~YeP%MIx zKVvev1&@e)FaWoV6fcQ()x-^93I+m%5QP__zIzwo_#VEERHyR(!6WoxXrMq!0F8Gr zRMyN%N{MOza+D;4<&efR9`%Iztb}8VFhVRiK}xdo!qo$X=tr(&^aEguI@?||5KH1k zKaW7`)zHO-9mHx44-kH`&G^3Lxo8yNztm5uUDNaO@R(BotgGrctO#85S`YZL_;i0s zg!Y4_vdTQ?X%c|wzBkEUS>2ME7MqT-;s)lCso*_N|oatXWY2TylxwyqL?ep4y22lh$YG|7TT=Tg678(93)R8dy zLQdp+9>ezp(>%^)JF4k)-b3oX7c*Qgr~9a26hDJtlG<%@7vE^RJt$I?w8`wJ8Z6wSEf`oKo8k+JU7dW@0W78#a!@X&TE`~li8js!uLPT?yG?F<6+zg2L z-~6Bm%jyBvl=v)7fhVR7CSrLv(t2lWv5C_~h<7y0z_abR}rxdq`p- zB!Pt)RgEql%z$DThocdWc{%UOk(Z3e@8-B*08^Z1nF;&;ek#b=x$|#}+nVR19{P8D zT(EyvLy=?4<%kPj-V91QFdjx(qgZxQgGUaH0~;rc*l_&;=X76T#n0Y`@WU z`Vpv<{2;|m=cQuLZ}d>}5%0n2-vSnmyf6;N+IDrPQ<|Dk(j838(3~o(%5cXBwaRE<2AvHQTC;h#6bu8<%(!=;yyRpk)k;byaLQ z8=bkYdU~_z3;GW1q13T{r{BFY1l_IMw_qhqtf0I8SQYb9D(t3yOyT5G@O3#N09NEv zg}MYi{%V*4KN8~RA2OHYxb?^@`)V`Z)fF2Kc zr+1dIes7)Sr2T2duG9_om-3!}t%=-szu?dJvma>CgVH?bPj{5JZNn+oizYqUekbh| zuAnZFm-D#RDVrS6)INNR&cljI5vA*K8*rmz^St&hj7r7Cye#1ObT19mwtxC8!BE$hqCsy+cI(khrp6>w)>&st^; zN44`h=MCVsVM2^HSDAEnJqFdjbxm^gh#l~ADyK`)niP&%r6c_?>M!|Tgq z+Uv{dE8hml64=5#j;kItrjct-b>1SLbHced?md>pS%6AGykjY6Afq z4j)+e4^x=z)VkJU_-WY+QL@%=?Fc=jt{L{~A6A1;VEjEO7`Q}?$14>5x?dQ_F-+l= z{R@I;nUBN!qJdD>`EXbX{l~D9bYzak>wzsI;Y%(k+&T)ZCA|A?kTY{nhSN7ef|&aB zKsBf%4V8pbJY0{r*BW*M!)gg{Z_iZufgwxCD6VLJe3y#^u8gWX`J-{|#X#_Sz)eB& zaz=8$_7V=3kUiD&H1IulXc4$&o0zpX%=+QFB<((5OGwTF`C6}ZWi^>Z$mxB7+OX}D z3vWsEbP9)-Y%m>}Y;ZK)@c8?&O?VY`Li&rONHq+DaIlA_M|}QmZkA_Ve9fpglkBP`yaifJ2SlLh`VXNrP&*Iz|EJT|EI03N`t zY4>sNVQ<0XQPsc(8*Ac6IkAVCAL9h3sMN9&NaEon^r`i*`4^YufApnXBhXpbUndt{ zDwk7#SaZJx#`EjoOgmk*{rAN) zghyn9XTHc}Dei{8F@x-S>}K$*XHnh(gj(8oV%D`` z?X20op$1NM7vCB)Q94#eq*^B`1}x%LV)vnv!nxq7x~eKnP*Kqq152{{tR5fp!BnIO z1HsX2AH2!FcsoV?;h2VJME|62oJSEDDR}oSnmNzI^h5-w2cmokzX?1##Z$j3I656h zOe3WD7yP1eHoSm$`Ny57-H1pqmRoCwUX+Ha=zJp&n;bV>{{?;{7X%G3(Ax9t1kLrB zRoI15G}`*qUTo-sEXd!GAHd<0`|Ko?)L(t31mGfwL!8C6344*KKZ^?fQ>RNhUVdZk zmj2i5J~pvM2-db|G7WXfT~6hPxp?>HmkU2DucoTs%3PN+f;en!28MGRrV8@+TBlC! zK8p!Zt@R#c6(PLqzRWpI=Jel0+f|SAO|}SEfh-^p8LIt;{kK21+=fVOl2u_fdSex7 zL=%8T&+GGP*wCP^JJpA=7FfE7N)Y^z<+ZXPIMnluDk(rFpgM=b0W8wgf4}a$=dDiA z#(1SU|E?5CXD7hsV&pIFqan54Uf}!qJ9R_*#;Gt*f!kkw8yFN7N1TUS8uk97vqRvw z(8@LTn9b(2UKU>Tu7^k>cD1YnX7nhrg>zz4>Q)h-ip7Qnb&5l>X8+y#Q1rTx+U_d2 zLkY~@xNCWvLs^}%ExGCHLGTBMVi{AbSU?2DS>IQqn=Jr#_x*&6?x?2fHb2|2Z6VRAEi<=@Ws(abKj3Z5cy~|<(t@m>o;KF@Jx4dEblV`(}R!F&R=PA_p`)%hDs8Br|aN z-aJJDcsqodz5@I7cRni&#O?B=zWO^S)GnFIMuTGbs1rlLPe1+>XguISQt^jy`)cal zyTUHtm}CI>V|^)U=YL$*%MC#F?HRe4LTy_lCF9Gp5x?Up0QkpClnqPr!sJ%ewJH|N zN>h4qA!e5a8jkj%PF*XOYB)mQ`B4y4>fe5bGbWr<-zo@)L&cUAME$sc0ri^fp9>ny zkC)Rz=b^uHzJ?QRVOq-#{=m;v7LT+kLm+!pW8P{6=z`QOp=aHv0)EZEIdbf>7!9pe3#F$$t0%Oi^jz#fb-Swx(pFRnpB;L zkHsWHBnBYfljUT;_*tFfU4a6iFRuSP?4M{Jl{HH^)O#8%y5T}x)LfvRl)Ie7M?IMj z4TyAQso$JwI70$i)?Cs8@4DRPxaAN&K?t6@u>TN02BzbiZNVQf-vK8#S_PsJ8pIrD z6di*lHMif%C|L*)DLSIVVfzk_={3w!$$m#!u{Vt=cLOCdMJ|2*d|7p=&{2zZRJQlU z>3R37{hdg3H**@tzYwsl1d+fz(#} zhSYsCd>#4R(2%L<6i{zJlP!w*>Wm+ms!nZZ<&R-ELWEwpGqdBP>egHf6bL*$58usG z-T2VFBZU9vnd>O^Lhz+2=i_N~Gpwf_l`{A#R@i_Q2?;ww;-Iu>J>r6kRc6N~;htT5 z3bzz_60hqUT+Z3O2pvxn*Id^Mz6W1tFPh0nm~oPD<_`CO7{xi7xO9EACN-9A#fgtO zlCcC{9$jf!tXw`3+E)9^7k5p26uBRQ_-gsf1!Mie;Ft7o<}6jh3EDOv;^Mrutd75s z+4sFsxk}w0AV{xp0GM^w4ONRsNT~CK`1!lkk~%hoZ^0| z++R}0#P+?+T0f5YGaV2+%YD6<&<(rB)80XLB@C}JzVs7iKcnDxRC_6=Zw{^Xn+_e{& z+YY$n3I+C>)ncc`Yb?$E_)W@zw1>))I&I4fO>X2qyKnuK^_QX+!{i|iEOA7%f8QY{ z)Enb>UYC%eN8C&5)oQ&uZde@K#9!ecBJ|c6AA)^u{`KI!i*HgbGTfQ#;8HXRZ9JVvaM$aF|t+)X(EX`rOZ!)%&=zho~~Bl*)p&FlnHyJmI#ZaJ=mmw zSRXdG1z|}K(^sKSZgy-zHV`J`A zB73O3iVq3fqlLo13}E}3JQxBTtDw#ZQq6UbWd>aVm1vfN=Pb4vU&e&a{hzf z{d6eGG5b!U@71lcq+BRBTnBX-b(}FJz`<{sN$(cfumJxgzD^gyrj-EnKTs<2Qc$`u%H0l$Xyl=b-$gXaIBZU?c$gcKiu|c+okDTz1)Mk%#tZApZng zSB*r|dJ6?R?}^&S$uYlEJT0(gfCVWXO7TP!TSL{lVi@Z;Hnb56Yq zFJEV%j<`zthCcJ9mj*=>=;#fG>O&3WFCZ}Ak|`XgUwu;=KaVsO|HlEZ)R(q;+DC87 z^KiN3D2|SB=TM1MP&TPYgl@jl$0r{wl(2dkl8*aO3L4>CUgeL;xNoQqDNZ zx#SAq0((jh$Oqa{OfWuAr^J$p(J)w(=kG+Y`>?e8IuepJXdRgyK&i`SLo85EMTN_$ z{Oov(9|8i__ow=b#_?4e9!!2yP2D-eNs{z_ddi9bD3DIi=8>4Wb3&CMRN_dy6tK(5 zG|tc|zY|xDUY+iX6!3BvjO}=EGikYj+hyse7x(n(vNb~akfeAH(Gk!EAkoA1u)j$WWAVxg&+=6|J9E|{2I5zGA93yO#bk)km=;|Idti} z=d*xCvDRP|JC9Jal{>*%})p@8AGS$wzRgxj7GR$6TmwxB)n4 z3HyRPmpmQP1I9Ggy54N?afSJLdNipK-k;$cnZ|2eJxMk`2VQN!wcxT@ilj-GicMhv z>J7i@zIRxQnsw5_+vX77*9>RZSlE(2r+j`MXQ0nl3Be9%Hw5lRuA_^u=+G zNGh4ayR0bp@KF9;qOIeRhMfARRlcKM@juP68Ey59|D!<#)jTOIH3x*^;lN=d)F}uK zBzWTB2)+L$oe(LZ#$4U9JqFAH?y7gOJPT)g|qy57ntx1C~Q5m>cH7gu#5 z&8+)&t=t*Fzm(8UXW^^_zV0Qz(I-_BPf*eabPX@6 zI1e|zVaZBeC~`WAHX#h~?s(!9+_SRyIt@39Ad{%1mb7C#Jb@Ri)Z{}V<*F*>%p23q zVoIc0TVweiTt`oN*W31)@~Me4(VABF75?*;aWjdgW+BjeKU``3pwV5;)tJG?30>s} z!kh*cuhJ7qQ5jMl9N9B1R%GV#&9v#W<6+fd6rkg79W;|mPtt$K){)qA+`ZL(3YPWmWVTcOVlE9V^;aG0 zDz(#?jLVsE+x{W})II-x`&L;TSGac!M}z2?T1mLG^)n&xzk2JclhGv9!Ntd}`=$9aB#PA(hCf z=JQ(W#M%I6MjbLg)s|v`ze$D4{qC5L#qB#jg64j5{2zs-wpV0`RIjjQzy`X1_cJD& zrq}P4o4MxRN>}+880y3Xk1&5yG_`$sLg3><)!sM|PM~HeoNk`rM>k)(#gm8*2N=4Y zO=DOhN53dz@hJ=OOfMldg>OVrsVyvr>PYPGlp(z#mzDb;T|lsjG!amSi3AxUc0G~2 z!eU1>8m_JQ2bB`24@E3~RK+E4S%14>G-3U3Q+Y>#C>nDgtJoIa6Zi6;nF(!D=4+>f zTkJ1^7D$#tCUA!I17&ByqLPV3c#V>C9)?^9)c9|?h@JH_@;5anM&KP2+mg411Nh8i zwiem2N6-aB$&=ODKy!5`tMu$Q({Q1l>g8X+#1F+6-cs5~1{$rzqT$`*m977?IO_mU zd&H7(X^d!ppF9k-2!Est3q-a$#UWR7oD37_wUo$6^`q;CrW+mOR!w>DpLE67GK5X+S;L z3*XP-L?;wueIib_Nj{Xd2_@3|gnfPTX{aEC$oBl|{up`U_kd>1#^UsBwj5p#&T5&L z#YZ(iWi3_V|2Dk+dy2#(Glx1Lel`@=68xPp4}sI)-(1=R6<>_}*&-6Hc0PKV+2E^p*jksX=2{((6L}LJsdgoz?(Xsr`>$ZAlaU(J1!;@bUVzv2NqIFvO zc`9qb8Fg{BV%emBgD3ybpyWVRbLJSKsm1IlF2FYvTkDsJ??bsqT%zv2PMYdZjijp5KZp7+k3LqU3oOtT+mN5Xq&F8E!Lq&W^Tae4)oDYt6QqX3i~>Z%zl|P7yF;^A8<(WmgWvpQvL11! z8%|7prn)b72dBAxeIriLYAR>?^U8HVJ0vqmRZ)SqLTR# zS^|F02?9}P)OLzsosg0U&2Y0&1*`YGsPo5>>J9h5G-Vu6&Y5PSlU!nq>rP#GTPSe4 zO!bHy^Jo3nfvm>xy6U6DD{QK#F{uBGss$Jjy3}vm5)LOK}b@KbTLR-TxHA&41wk# zKLgs_i}c*Y>StN6bf>1Vgs#)3g-72lFD39Vc&!|}Et^Ag18DZ$frr742y)!Z>Fx3_CeQJLYqWy9Bb zgVjcyY(-t0P>s@T#^6AI!z;JOW%6HTy zz^(lcL*f*GXUrJ*^QV!|R-xsfuS)u5PNtU?ea zBRD-E=lKaJQ-8ed8@mm2j!bOqpf0X)9x&25whV0L!|b|h!10BIYINe|l>hCQ;Qsuz z+*wNsKOlT0d;Z7m1eM#E#9Ge%R?Yw*`>t#Vt<5k^XITD2K^V(Kf*NAw5c>XCYim(P zx2A$y1xbqQDQm*9AaOz4NtNy_BRbhiCHQA5P&l@KSM(gI-9K3Xsj>4~@f`yBAo(Fn z9izM=Y;%@@TZ6y$sbfu*Vc5lf;*r5$I+~g+OLNs@NXr4Ie;_s{EHyFjOV6g>)P%~e zj!Ly;hEHpZVOWKp4tdNlF^TCSuE?D!sW*vxVcKhv|Tk+CDmk*5As`Y2dGK7`^(t8sE-#|czu#u2w)^;7$kKPyy# z@S7X<3t#^3Uuf!US~U_cq5PzZ&d(Pj$ixTYUj7=1E6rSMWUzqkF?fkbYFGzcG_m$y zZ_a0L%JGnXT^M>euQh#g%C%(r^Kkjy?H9g6m8R&zpEg6j%|DP?w#=)(xHhRM-6ONE z^fQVF=M>2vO4A7W%a$i9DQpggOMa4VT_Ht44da>oHmm)@4Bs%{CA}e;B(p7FV&Aqk zJo&_B)`OYvwsA%XWPe?PO~V} z1bPHfjp-ieavP25Pb03P0){}pf67XhjpU7@T$Q{UxB6BJwg zaal+rLVEE+=cT!(JdlsdWx2}r9x66Qz}`j72QuMY3RE6G$5w#)mr-6f$)Nfz|87Sy zs?HG0ulniRa_k08XYr24)6@#zbNh2umLajybRnn2K1#L|IkYO4^BM<& zd#TXa8A|>6B(P9rL3#L>ezD#1b9A36pqP#1Qd}TT;MlD5Z*(8PaX!+;HzcN@9zS6` z88VNVJPef9buGsi`!Fn6PX~e!Sh}-Z4l&5Jj%`~yY2YmAH*YzA)~oVuvoVH5e~Dk; z>TLS-0o_`vtJ0oZ-Q09dDwR(6_o@#r)F-uG4y{l}jZ^#wwJ5M&__@8;7!iHqvP~PwN6)G>r zeMrM!yCGNMB!iw7Ko=Sph*ctNpY&ykNkvLMm})Y!_$8GP0;^D>06T8=I*PTQ?yJ&e zm}#bQA_G;LM6q}9ZleLe!L0|KZ>_;lsHy-Gr_op~LX`-kETNae`goP|N-pjh@u~KS z5}BN(uK;S$E(#hL^)1BwC+>A9Cs)|@^nnfFgZaM)Xvn-e3Br;GqhuQGOuQ}bH#U!t zYbRqn{DSx1OJ+-mPV4|2z^ks!UPs0jB^Odj9D)o2YvoiLYnRN}eK zB~mwf{(Z}>U1=ADG|P5tKF!UIyVu0C?NUe1g%)2~mY$#kY)m}bLx*XwcAP?cbOr5u z+7HC(|MOwx${@fpu>NTngG&t<_t|guKn&66(f*+D6UY6tcG<$Y%-_fer?g|&5eCvr zc_T}k!-26q*Iy$o`b0xmVc`sPeQ8{5GdOP>pY+Wqnw0dI8+k!`E0D>2o*s4c>4Kl2 zU*THO<~M?}+x<1pWIYYX)QW={^|)%OzhfbWM>Y&Ai*hWK@OSUrg$H0=!Wy!lPS3nW zypBNT$H$ke3b0kaw9a=tcOX(0iO$OK9w#X+{=Ryu(bMy~RkTy_l{b}zXYDzQac^er z7IR`(Ne|K&Qwq1JRqDq7AwKU1(0*k)fTSsnmohO5RPl!83XPbUh_=z>m*%mu%A-km zQoq2d$G9B1Um~+#-yp*LPYS61Y)Xb(|D7QI7Kx*QMH)z9en#Y9K+mDtOY5E=%+xKE zPo`L&i_e8Ou3ye36E&_jjwZfJq5buA@9;8)Gj9+xL@qP>+2EUinQsPkx^f9_(wl?t zzPALNe&_N>?(sTBH_9}0rjW_U$^8>&F$J!Amhmn7iB?{5tUtBTO;yX?uTTnh#ffVn z-GBI6VZO2IFfWo@dSQmbHVD(3%$qQ0PU@q(8_z`# zxrl%F+FF@bgEW^=81)QC@Y(XxmRiclN>AjYUXzYc;};j+uiTrZ99>e*Ws3bA z=@tH_JJYqT0R=e)ilzl#xRG=Lq%TF_O>y z(p1W^)7g+SnI9p;z#C_g}4$r za>nJjGyoej^ei6teW2G8O}Ct;`j2LM;}NzCpoh}-V>Fj_48Qn?LnH}pN~wwSa3 zarRe{U=w#`639pt*>{e6&TTdFLIixJw|Jcz2t>qYzu$lMaFz3*!?);r0_>;JE^T0F zveDhP7AnU~t}y|*$n$Wk3KM8`*KnIZpnD|0;+rklZMoU6t2yc+PrGQjXr|0X@@>A` zb7a@E|E@Xfvr}OJRi@3kb{zsLS^qxnaX8~4qO;So%|gE^#yW{DJvrcc*|_sv+|_*| zv-CGS+fPYE=7PGi0n&&^@%h(Ma$^1~WzIa=3_`#dE!0+ua70p-6N|nFe6_nv%VZs-#L)3=l z_Gcy+EBg$`B zOv5orjBV3VyuBJ_wX!b-9p>HEyexSp3%hz0FcXlYq=yFfUz6gh(WcXq=j|Y>291PY za+0H_l!^VulEwR5O&m$(I1ThI5RY^eFq{Je!qWC&Th%;;SbnDB9qG;1bl7nmE`Hly z<9*plZRqjWT`QQ`3#_`46VO6^)E;~V&>X#9Qz&DuBZ3=VZ!OPvXV(UvSG@pa61l5C z(=F@8WStigaw4B^GV8N$`k8Zf!@FB{E!ep)m-7PPi9ip#ViY5<*gpYx(*fR0Xinb& zd@SXWL|9V^xK?imfQ6H*0j(A_%aP12(qd$bOV{;}R;f6?2uLb)6%0CPxp9d5NaA}n zXvCJL@AAR%*(fyZ0SFPP!rJ|VKP$EWe4fJQktWumhjA6fkBUy>$9L9p5Wa4c@F_aw z7nS0nq)?S0*d7CAHSyZ(>T^1nL>&Gx2eBQSeS;7qWG!4rK8K1u@$>WV%kED^G6ScN z^}b;|OV17SqQQEO9x52QW=WGaf(gS*UL7>sE_@}rHI@GZ#qd0#K>st)`NWXY ze6jeDR3~mArM!4i!FQ7iOdygUtwVCY1ENcRbM^PYUkh9GRCP2N5)d^s4K$4dxw_;) z$j%&O2?{5wcbm%X=YLLU4 z@6P8&Z#NfQ247+|YCjnyrQ5#5NjF;@d!(%R{#fUCD8Ky!5&*9*oMd0jK*dg^um!tv z!<`pA=Ipb<9a9N%R61e+c}TpQ1+YO=S&PKa?EsDZ-wy#9SbQea?g?&t;sS`|?)KA- z3#LuqsAybMBP1Z4I?TdEW&|!Ha%fShBJ(0D;kQ|*yR{0{My31}t=3syT98<4$+XtM z1hvJgnB?2C?7+!>?O6#bR;6v6N-sIB9CqpOcl|2W>*yfPyHv3;;#{VNU;DFiKj!KS z@FvbtZNHc(qs zsi_1nunev7Ej&6TjH>Zdzn17qD#=*AfmGM_H15loI9$uX^ljK6r$FEWqNM zX>;G@!sd&BAU&Hl3h41w)9 zd@&QLB$gr#Qz2pFfrY1$5^dq*j6|}+YNpkKZl_%-CNILfKjpg#882~+=%T`* zJ+`%eikFD}Jqr~4;#JbZC;+AbVS^-h2lGGObeBLoGSDa*j9eJ-5NhR~});=fuLzEZuENf0Znlu#b70MkLq2eEkfz z)8CYS>q1L?hQLf^+bfQi?kqx1(5j*QG?A3?O_+T9U^6A0Q(}iLr??&NI`*yi`Kgsr z4*yQy=}qmzG>ZMc2q-=icTB>=PPvw5lV~Lw5u*l#F+!3RmHwN7qbu zKLQe?QJMR#?l_6u!g!mbVhi7i%zxKvLN2P~249Z{V^bzTnK=U_12!?14#@(RN9{SC zDRjw#|3aQL>{Ev7gxy$R@e0IE3Y{xWsD(KojoU|tt~l9`m$8YqlDGf|-* zZV~B$L&efxn^Se5v_KWZ*BmglO+AKWO6iu`&HKcQnRFA-D3uR=r3192chA;lpS>9M z8hL*e4$@7dwb@9e5f@#Kyg{2#Ud^NWso& z@5fuUBJC&VGi5(TCQ+ny(agR85a{FojC%Sz_Y$ zCXYD8Tvc)RUy^f{$8s0b~*sPg@u~hP1nLrR9Pko z)iMUFfk;8f+uoXlcSAH4wIf1Pqh4E3>+1H8h2Jwx21KRcXomSH)j@`K=1m{noiW$c zTgT$Cy~Z93zjK|)2K&%U-!3-oTU9yfMW}|Bn28AW0ed&aWMI_@2 z3cg##=kfAj(JbAgNEXx=SuK9C8G{~QMjUWz^?qV$KG=w_B)={F%S8CXq0D{%s06t& zw926*J*-E`)I%Aw6nUZGr9$PRc=qeT*}4Ur57ocg8Q%21&PL!q6&!{Yy~?tz?xY#Y z_ZLG>{lfwob`V=#B!PU${zwZ`4tkPWf?s|ZY>b0-^h&pf3>OSHCgAparXnshw%GlZ z7z>2fR`3vNmTJ|MDCFWDS;*zv@phsoiTpbbJGX{@P~6BH@9Ts|R|bD7YEVyeT5&b`pPqFQ{Kvtn9Q7kc#E_=H)At7X|#!7U3(GG{^+40FQd~M-)GO^v|aUI z^8!5;3!J7|e=+{_hKc%%LdLeW1Xe5S>k`?c$@d{@xy%PPm}Dox6UA?+UnUBaPxPUlw`2WwD^B8JUTEV|); zrWZ(xc#6eM=+Ixj?V7r%)O1Nn3LC3<_huA=jPnwF7%X(7C+no!eLaW>>&zR?(nt`{ zd+wdVF}lI8aJNWHZ?_1oCp@S}t68)%{XrBycM&me9KwP{$KyiwA!%{B^+%o!fJ8_*>)Oz-hlzQuq=VbWS6iWcFJ{LlSL;?%!`x%H~P2YJX42#%( zkIH=8H%qR&IYjY_@5f8l?*+pgu!oK@TM14RaV)25c~4czzp#DM|rJm>dAgftU|DWzZ!m&2haUY0P4E_PHT z_`n*6+j}QXVLw!Do0ZX^E6!jZ^Zy&#$01H718-=rX$E5&^&40jF(~X0lhT0Dt|;^q zYI)Ha@dI)PKQt|ZWv(bmFUoL4XI%9h-;j^(MVXrqpSPphWq{ontCF=1jq|=NSL;^K zh0T4I$m@k!8w)%gqr#a9IcIG3^qIh`VN)P>gJab4gQ)nVqIeL+CZ4D3v735{XWx>< z1X%n2gB|?4HgO22!`(`%c(!VMFC+HK4#6XyXsTn$RsE*;1}vz?(>J;ll-5wj|0@gV z6*D~eIq902U96jo+5ST)Gr_U4;b4YmuuD0&gKdiVG+vZoE1h8L@w)Za6L6HPzJv(R&@PTBl( z?0o!JDGEN`2mip6DOk6o777T?Dv2sEGpccj3uapk?=yaNfy=^1r}&+*@g21zu)7nu z(c7J(%mWnTYjl=yywnk1UEr|{XWbV&W2S6bBF%fMDwpbj7@V1Yc0k%FZeZtYX&E80 zgd4n`;-gj|7No7P$V$_3}jvVIcO!`_Rht$O(pp{H^v5TdQy|;dU zNU)wtLK*LlS{P|0f0G+49%0o{(Z7Aqm>e#I8W5nc5WDp4a>7X^ zu=f6*b_}l~i;9Ruk3Id#{B0jco5%q;#_o@d=9^`yLO=aqIiCsXqjg?DJ8x1}0t z>FJjKCvMJF_d8DR75(ST(daW#>Xa@6n)H6f!7b^-c&+zeG2M`}vUg>0*mnif=ru@P zsPW~de_Q0ZVP??=8|>su{vFZGMt*f!>;nx6O1WSSMZoL3bomjnX0sBikuz5|bycGh zsV9Q)Rio5=i?q-qiDi>X{B^pcx4{mf8J~W1dj$M5s3d0c}QrI z^zYXzQ1(FUD@GTp&f=CZj*3(X({~wp`}zlkh=0Ohcd9!)8a+1_1cFn+UacO0?Ied@ z5Hg>(e^4-`u}oFUvcb9ihPqSocO9qrecVj-%1qfnPg~WYgq0j|tU}w|-}{DmmfNm13R9(-PbB;N;`kQU9s9Bt+@KJmnuTi&N&AxT2PS zvT?cr5h^GJZ=cTZ?rd5(hlA{RuwVpDkXTMEcAkR!jQ0I>jGFBTyYWS52&OInyRIjp}zU`S!}BF`?lwNA)VQ*QGWp` zhl+tLwdT}fUxg1kyU{C+>43OoF{(>je{D5qrcHJcyf~V)181zaw zjh2ByN<6#a$_wp(JaARp!%xjt%Q!tVo-GD(GTfZ)ZbYmoZSR~gvddl8;_mwQw_sXt zkI*;W3GLBR@8bOGXZO{)nxG1}J@ViCI>=_xd^UB$V-;(A+-yViPcRA9HXcn}ja90s z1hJu4-d_VTni5&X2Eh|28FI)Nt&zgtRbCSsR#X;rMQe2s?>0}>2@j9%HcpM#C)i;% z^x36U1Ft-kwIKM3drG=Oq|Y8U2NTt`=?acmD9pWBJ<4c^XDQ&Kob%VLwl4aeiC3l% zqkA};Hl@W@%1uo?$ka>dw%*bx3$~r06gsN17g3=vc$#hcXQ}x)J1tH@7274HyW|N4Dv=&^9{E8#HSU7-xL$7w>b)RXa8J zKk_c%j`}3tUlWLqlpJ4P9O&TYcF(xP#IBisr$W=EF0*Qu&YHnNXv}i{6s5WNGuIZb z!N}UPIC?%prt;b#=;RFvy|SXh@1&cMF^p&4H|IOxF#YEw1{@YRk>KGVJi>UAdHMPvbP$p;OO)%+Plimvubx~g9U?XF z8(}-;>Az~k7Jf@ENLg0w*and}u+spoc<|b1hhmJGbHV%hS5xgSsV8PWGq5eq?BQ)g z2)6sp!OeL-$*&i^3fYAX117G0{ccX<>eScouhpm_D9&~Nhp7M*sCWeYsEa0!tWSe? zRo7?cVVjZdJD3V=$x!n8$LyflLOre7K*FLoI8vG50ZG)62ZP59bVIYC{b9$hE$v)C zO{8w+mE3nJ$C*6#J&@&R%DQpxuW~FPG$bAT__5a;Jv#@JY91O)Ye^%Vr#N%LjtbY; z_cSUB3wbSp1I9K7|ND*xi2@@bLITFBpEE03n?`ZqNHh{h$|^LtXW{4&O3fR=Piq{1 z{AJU}l|TeM%+$u+BHH>qoR%P6>X!ckMiDvS;;)DJFns#{_vYDMFJ5Y7#@BvT(EOH%BGSB;uAYGs zP%3b-Iw;)A*VH3yjm^cm1I045ud`8JDH<#mzjI;_|rN!ML8rijZHxs!nHoUkpVNyxv84TjMP zvnFLid}3bjX@6=aJJXm1T+;vd4B~>V^a7u>lNU~C*CE+;G46pGRFh~}EW=RKX;120 ze_nF+dg^3G;$iA)R9oPx*MQERmcgt?`dx@0pC@^y3^)Z{r zZ*7m&8pm%qB45Sh{9638?&Bv*cBRBsX`6R_)V2Cdn2jL9%g+1j}Jf?(4%R%lAnf4t_&_#@I~xzn|@WF`oQb{FSEM@U3~J1v?ib2o+Xn zNXkU!D@&8@g_r*j3ST^9Vlg&A6>6e|;u)HSrx8LG({I+b6lBwJZ zq~4l9i=Bly!Q?%zSAxTVyH!)2zlZClC#)#@PJOotvTO(g?{L8_O8X4Vg8d!uEBQNb z4ggQ?-oRD%^c`U64>^)svldnUVk-kj%Uph1JT`rH*sOlH*bwJ}6FVIuT~?k1$cwB}Ahk^P{@zT##zKNMA)OovtyAAONJiX>Le*B6RoY6oil>iVu5HKFB z>9{WHe)~bK!Yx1=&K|pgq4JyV?p!dvN!S!cjT=XMxR+3kh8hw}5?R#h+zbkOMU6%#jBZUe2W}wg6sv9S?})-0&p&X;x=jvrO$Mw z!4<~rRv3=zNn%=)`6W=HCcD|0>z=N8v6sEAQA`#qv|X~4^KiQ{aYaY~&P`+~PFM+==O1r`M^*cnM~U?* za{bnBh9;LT6+Jmx==8(H47Tv?PPGDS)JCpCnyYBAC4p1tMdsC^TXaD$G3qgNZ5%m- z#yo?xb*<*04c? zeHSDxpw2%X_LzdvNjl;b7HE%428*<>hhPi9;M+hVMg}~UY2`yC_#9-xEPmDBEncPl zMg|52VJ);QK|na5o&(Z*PFeQ4t7YSz9~9284T^6j!99P*f=A2a%19I_?-GT_llrD#p*X{(* zZ=G(_!@~@zF1z!mA>w@Tf#GNP#9nsfdQI75qX2|~L)?1V9scM&N0J;`+L#x&)B1vD zr-^*|S1l@Phx6WmHv(+i#ysUEBqSz5M)h}uN)3j$h5qR}H^q7)NkHZ#`dKA&{Ri(6 zTA4W_XhX1$p2?xpbKmRVOCOC>#70A@S5ozd(9u4E3kN?D|7@Ekav&4gzlmhKzMJQ| z6MZ?ObyF<&HRM6cc}VgZYm3koYV?4#(jQq3LTec zKq$+*RSCimfBD9zt2&Fcf3!ygFxw}Yt5B4GfuhWGiQ(8i0L5?0vo@SuWK4nc%ETeR z>KFIm7h{tUA~!HiuCq)wiBRkiBr`(PHJ1Ng!t9l+UsvdNFVRB;`%&=JPSG;7*@(TV ztK0cR_s-|x{-U+_WjE^Fg5}=XA92npbs1wLS$N1$FcI;>Vu3-~%kAFG(KQyzDBc>7 zp6RoYC+JEkTy8}U<0$eZ`NEe7l-U zdI$sk@WF{M54aO&0Fkn^m#Z5}?R)41e1?9P2&lM#J`mMGQ3+^v&++_$dN_sHRliDE z03dUE3M^iY6n7~ULP*_`ZnF+6ffxfE;`%leRQwgag=3;|g>`uN7lS>U&PT;>3DBIU zoN6=v+6fH5d(GXntyz^Q#%xojwIMX!5S9Z(8gxEd`N8CNG%DZ0)IeLzD(qIk<)2(W z8`c1@1kVjLN*@JOr5uUALUzA*VERo|^xJ!b`{T5B&QpibC<-@*G%_JAv;D+tTV_k{-6jl;*7Dlec>>+{CIQARfB4`6XI zAPfg5t!b6 zR832D?<>#;b+OF;4jCI#ibWGD9S1vSe9|0psDi54O3vqfH`mKe%WA_QH>c6JeHs7*QIR>Y0Y0Ya_>LSL{S z!$ZP>^1MD`6Of~FU?5FmIMjG63+OstH&qf1n)2A4$*bTm)3^X4X}+g)QWL?)nt{%t z;5=rLC3GZ79RI`M@aG0wipNO>0iEOvPM5$-6l+4Du#?D7eG>-Ssw&J#BYV_<;n@v8Ly`u)2a!z;HN5zfPj$uuroAo?93U2X%wZvX4oBW-8u6&BeTF(? zdandnjSu_e#MD|A@6Ue_bC^V9w^4K5{-y1CbXUI-pWpZRL4fc9wv~Kt6VJxUtgsz} z1D{9;P2BVjwr73kA&{D5>$PWVBs`G0La~86(=g&*nXmZtH{Cu@*8(uemdy+0STGbc zY2qs8y>TsDuJGy1ICgveVO#{bxSgFm%71i}NrJ;XiYo(Z$88y~Oj) ze`)@Ccm(YOli4Xkp*LxNLlAUSzmdbPt#pta6U$RL>17Xx+?YEesr6;B^_mRvPJDTb zH&cv@svS= zl|+LEM1ISjgK90fLORNl{WwXGFtnPtHKBG@ineL zt8f(EovAT{-2-Sr$tfh$V}Je`X&D|+gSrd1HQ3Pw-W=}~SiEfsz~HKO=^_lK`me3; z?|3Q65Rka<~u44vQs`+=z*i(jvfkK`p*u+N}30q6?+F)^6nr3)!#^7hoAJ1BDFNuwgKMc zdmE}I4-EB4nt3i5gnvC#Bq@6qJsmd<0U?)|*>}ZFN1s8$K8O?kc>INR*){1e!Q$eV z?Kr0(Wbg>c9Ijya-WSSqq>FDvCU!|HDXNKl?vA`HT0Vd+Kr_Gxq9i-m6S*IPJuD}B z>*dPyi%nL+)ek3+9i`95F=hk!$3C#F?Q$fgntpi>i@xfj7oA%T{)Ia8$y{BPNEH{; zF6JFp36A01pz!dgJH(`sBRSf5jSfw-QsA2JS7t#$KAUu*O3^rc*P&SdxX4Fau*N7_%Yev&kjnPMTMFx(m~Tzm#SZ}(rMUR-#0rE z2JX=%?u>v$8Qw!^6JOkWE1_1y3Q?PL?slyTqZE6%vyU(X1?Nr=cEHr}GS_Qh%0OR0B(6WIbF!bEuG7_wKIT#6#K)R>-DtaZQ^KYxX>VTq~uo^Q1jDNHmx6;UdyJ*&5-TcnLgf(_~W-q z9rj3=mA$?U*lscc6FugoS)_B~B)*7=g!WUyCG$IAE79m!I{b-Zdg7V1KFb6-CDIYE z;3z_+6l3y3cI@CFfwWFOLgW4z8;gS4Q_x7%#__m9gHXkJbNq|ydwRC_e#~9G+xLtVr9n6P3o<O?|%J_$t+RwK1 zyt-bz2U^~M(Mr(9);%e&nlTZ1-pbVQU=cm>t6r$hu_`IYnDGc9__}3JtN|KW3LJP& z%lN>cnKF}~AA*}fXjCR)M3?bP`d_ z>DhVKRCL#ofTAm2x`EWdmT+khq5qqH`Y9l~$1I9~vPCbZj0WBp{?{+;3H7^j=widl z7_^BJ60B|7=JT$JY3SxIkgBIC2NeGsSXe}mz!b7=cmrDpe^MT5cI=PD3KF&m_`YSb z@5aL{R`GJtdY+DJ9=wwd3S*@*eqk1OJ_5GSzW3lJ1t;hQ-&FIa-kJDNx%-JG_mWw>V(MFv) z>r4Z0#t5&zPloMtt#~HAb4vIHEj&=M&yxJB0|=UU2aK+pCI^T$8Z63SnkcUKj7RH< zPn)@@z8|?T;R_fTXEAG?HTs86rmw;RgHM@`um^ypb=rP&xJ4nU9)<`&&@MfHi;y>b zWrI^|l8vaDOy?&2M2z+G5m{N!lr2{ZV;ew-BDljxmguqJ!foT7ROcLLM_G_w4Udxh zYI}5;iERutg{W=)w`oRv1xH;qNHTK{NGpr0ke|8-&I+=clq0X4`?4B)!{Bi~ zW^5fw#l)KTO)AlJo$z)QP?}+MHaAse~aQNN%8g^cgIE@k{eN>(`NE3LOlx z_&gsdX+ZME@1ss+DZX`&lr2UX@)M$fFs!2Ghd=^lv>Je~Tc2P~K;w;r&tyjAsGbjl z|8DhbvRvq5E|?YcW?odLBRjZoAx_f|U+^0Af@jyIC!AXtjs-yjG240rIbrM^UDsev zkR%L3SS9>->vh?$rBQbOBaFY>BUdzajn(bvw0g#mVTR^W6|g!i!G{nBc=U6AI4y{F z<44J@s{L~NwV(=0+md_Un-BDLeb@O&`b(yiT{&Kpx1Wwak?-b)i&bG@!Mo3=f!oWS zNpCErk0SyDtE~rY2cxLrKAbRr-1y%hgU}Jtm%P(S2MGLgG}9)(-(J)^!T1n(Njo)` z5Kf!YTT7ZAak!$0F+nam)lO`szxb&z61&-ICshjNRnW0zFlXbtuY`XSpnPq3U;A?v z9$Mtt)`?o&en-|<{#M;asqF5h@IA4-%Ff1+Z+2;%&CW2IT+a5`@a3&U+qFmb zic@RP)$N=L38?YPnSf%70N0u6n;gztzmxa#ZjO%C%^g!XDbSJILvQZ+fswa33V3ZD zV1v^e5W7!B@sII~BMcoFhG(I3_){)84H@-%g#W%x{AUOP2!8Dg#5c*Mq{!RbZv-T8En^%vE{@i3U$)s{fqW%B`dxK`>`_NPFN4 zE2oT)bOiDA#=ARJXS!<5zmnI)Fs#gchh%=NBkSO&Ut-w|Tu6!P122FJXeo@+w%ZYe zOUT9Q$g>ZFpgDW&j02dl6L6Auh*pZH-XkWhY=Q4MYSL?RpM;n$`^ttr@ zJ&_Cn>+;R|r5#R}4TYu#%jiy_Z2na;!TctXn^bwOr{L0}-lpi#fKQdl7|m{tVJ{m( zMVZXvbEtpm$9Vf~m1TXk8 zVEj4KdjfFlbSYZAmx9l&^Cr2-kVJS~_;XSJIBu2Y4aNKc*!OUAWf^!G{@!EEBP*dD zDOk1y7O$#MKfi^7wt1%A8e*lg@Y?(0=c1_o%QEH5{=XVLtc38$&gIUV+@!uEh~KRQ z5;6iK#v6oZWd$M=+r)x{;z4EBeKq@6e|QDo)4lBq!eKSXh+@UXLUic*g_F#gz}Z+~ z6uC@P8g3;;PCZai*A+D!BWDzXkYLXx9P6O;`Su8$BN1x6JzR7)8^pquTGF-rl`Xky{SRD+SGiA#Rk`6 zLt9_i2+obhbYxpgG@L7-zz^|6Go`$bBX)l1riwI59C}2h0_s>qZ7w!TY|+)<=Ic#!`9UHTEoxAW6V29 z>F*Nwr`$%NgPDq9L2~tgb^eKx#_4UgENhzaz_R;COp2ZHrCGv&+m@pieyoSW(&ZQnhbZzhBF0NuJg_BQ9RfhtgL!Es1x$pvI{6a1XHDsFjE`@9jBHwh9QF%Cn zjAPzqCT0r${j`dt8yDjn$kQ1zq}A#y^SKkvKWuJg%62c`EG-fF)nyz4Z6dyR3lfus zN0&-FG4<>DX{3ONP@UjJ*5z>(6eHge%+!2nl%U=z+TTSBP|^ryY+8uwqsyQasT;~` z8fOEoL7{MI`SAT5o)||36Nk2xQjO=*23P5qW~+YB`x=6C5BSn!x>BaYd(QLSYeHpH zBBmoRK|_ZqWWzkZP&9A*nPuKQa0n=@sikj18>-2-Abx5PV;XyQdA80WP!p2&ggEAV zZukZ09@h%SSz~n8s8pTJij?sIHkigNbSBZ+K3zZS6ts8bZIV##9p}6dW{Jo@;pdDk z9a`fQ?FILt$0Jj_T8~X>pZ;y~TdR2}q9ZT+U9ucOMK6uzJ0xshu_VpG+s>2Jo${+o zUnsiVX{zwy;DPpQ_(^^nlaRoxq+{MygkD_lGWk;0oJEtZ7AWt62-k&Tr}2QUI^klK z%Qn?@V%PgJM?AMP{FA7hi}^@Dp^(p|4{GB3#ndfc@m9yj-P|JRK#soj>&vc+O;HYb z&cK*HKRPAN@&J%&BA!{Fu+!SuVH^5dZ!IGbml~&ycC%MxopZ&CtZ?oe>2d8B@4vZ%P!ZgpVH8eNS(ODxG;n}UhHkE?JS9`2pM}AxhG}z^Ej7P(w z26Nt#A*9%yUB6>c`MT-XpyQm}35_32lX-ik%Q1^_kLEjeC3)}2qUv=;_sj@k)xU6T zjUX2>R2f|yWUqBJaIZk4NJ87ZXamtdy}Ahcax*bn#SwtIw080F+Zd}M2t@0nAT6Qc zJdLdXg1}dZfztQrIsVI!#L|BjkzE8lkXz!Ts5L+P5X5MSq5qBGyp>N|1sdZKwz~4P zl(zf`ZM~$YS(UkpOH2-f@NjzgS&O#b6kQ1AzO-#t7RT}X=&Q1Gw`FnDaz(l7UwI7_ zWbp!Hm}nBGL}pC_NGZwUy!CqKPF_qdj{Y229W6Hz4zGOpRZNGKRJs|YiCy}!P* z60~sU3o#y_xz9Tog?$!>lGN19e+9I_=c)_DaQVHyxW%>Eok%R5J~k?1t~rV`h=^v zIR3{NlY)5(h!(DV>n9>~Z${9uIYA+0M$;D3E-OdxYcs|;T8|}(>K(RX@-F=j%1N04 zLwDs_XH1t8&6qB*5XnCIK5debeezpmD8tI(%m3@@Dj1^dy6qIw-QA#sbR*p%AfR+3 zAR#Fs;Ltgwbb|uY9ZC!m14s;@bk|VQQlj4RyMDg!z4HgoGw1Am&f2loMm3wCHFljC z^4pqogAlz~x?5JX(a+x;(HchiH+)647VC&aNtK90z78-B%k1V@%*4tmTkW$H($Q>( zv-`1>z0fAlxug5Kwg;0g`|u~pr5k3$&A(8+(9?YbNjYQst_x^7nZnsrMLKnaT1l91p^wE3hjs^|n3Hff+=VF=*@ zA%Y=;^>ozhl{~q6-#ZTJcyw&z)QzR60yY6(p#9t_X5~#CY>MUMYYng(we3=eeykrS z8(}iM6LGS5y434Y_2ZP)I+iNr|xUM?%{IdqFJImDK@9V#D zI5n(A@KEIr2|CD}Yo((ep}`s5FBbS*+O>b-uk^ch`Kj86#7q0Nq1ENhYPJ-1gCU3V*8XGfxtS@gn4nPjLAVP2V6zWIeBibTr4KdA%+j zBol+S5TP3O3)i>IHo0JlD-rrLkb<*h%s?9KL5l$vZtV9KmkxBfGP`SKzf^YSNZGA# z04Rllg}L6R#46_QE9$uyWB&Y@=u3#>2>n#rsh$;T7c zYGF>Cc^^=elPq5lhQb&NsvFI(X|_L*Hverdzt=9uGJuFu0p&pcX^bI6uE`;s0Ffdk zKUUJ}vGbnF7zp!luL{j^EV+5KAQ9qjZ{VXz`K>^|u$nOBxxEzDaip7JQZXNl|Frhr zq_p%&>b}}1Bl(BEh5gbq9?p1%&LU(*euk#b76}n(kr8rw+E3d7*UJ_wmRpu+4EA>e zW{n^ax%JJnmMc9O(LpSax+thh*!{qSB!IpZq~K(V8KtW*5t)8XTSo?d05Wctz|SIb zryfe_Z6Q$Tr6u&+I8Ho2OlZ_R1Ro-e;cpUUoTr^~qhkALk*fZ~U6-yv>iK+rb<_*W^5k`;m1O_hZgs6v9Bz@$(I!^84C(k{% z#STPK|NKC$$(CUBh}gug&d35^W@N*7>cNH2m_xugUz9O~!57~+dv~anIKR{`xtVzX z(SOc_>-X-!RalVLm?5vFz3I>?H%2+^QUCWd@2F4T|72fLuz23a<^*(m;g9P)i5drz z6gn9)%18K33NVKhbx3J-I6XZ_P$@Ct$Zqsxr{o6(QZ9yNCYs&((LCRvT)S>*`9!i= ztE;u7-&boIH*x8!zml{3ZeNAzzgCwdc0{rRbk~6)SU30#Jew#vb{TlQ$tj=dqv0tS z<9qwUL_5j&1;rms*Nv~__;y&kzmpaRJ;X*!L1G-k_ah(NHkgM9I^y%d;|@Mj7v*Xi zJXJ<)KC{jFQZFDu(P$>*5&b*`Mt;9wg^LTgZF|xFxDsuR|NZB31e^MEV(GYI#U6Zq zEZuwjrxy=f-ZuO^Za6)-E$M!rtNN4G5akt0Bm4+hoQwbpoxBl%y!fot8%0$DKHfM} z<&Wi9>Zv_Vik^&;oa8V%orZv5_~}!1@k>h*qGF)ycVGVO1<_% zNVTaA@b}q|^q>1^WGm4zapa%zd#T6;CRa|d!@=!CsNBe*5i&VU_NDx!=-^7`TQ1&793fR+J4t6u_)_+^$3fDO^3iHXIH&MC2 zkHwC2EMDKAHV|IoR%3N6meGmgO{#dYiHEj0BuWv6^p|_Y;tIi(i#QxEc zH7d3GQie-lEzZ;5&Y*|FlRHMtaa)y?Aq{i8rW8{uc zO%ty`M28%y3W!QwkgVbv2Jd!qYPbAKb6hTMlM#5q`$Oy7+ClkV#Y3Ooi;vTp@%>Yw z9;7pE*(*;P$0!?JT&Qb)uyjy)JHh-q-xvocTNZhL&QSX*o3he0({<4trAYX|TYRQ{ zOyswWZ%)GQ&$Bw=Cw~m!l`~|}K9Ks9Sd~tI?!~Ni?^+b2jCiff+wrW#mvR2IQob(s z%dj_eFO8t2uy;7h8(AOv6DWvc%;>xi7h~5`u8^8wC>EXw0E}N=Y(}8vwBU-JnRIE! zA4zZ$Ql*gR9SQrq=m@Ar7LA+Pfv8>jnr>mhpm_$l!Qry~zIbQ|X3!b3pf!Ko3z=lB z={EMMZKhdc`u$6b{rQT0G&@|wFcctPk_8#jZ}nSeCLJf+H-G&?qw))3G9vlBqp%aMvZx-f~Cj zbCMI-%~$M!(U;fXf%@X4qrR`1SxvwXLq^zeeoa`DiXA6=+#u*3c<#RLTf8VI_zDci zOUApqngRB{D6ao(Aqdpm%dKo2jY(jmDSev1%t;aZGJk5AGnsdHjnI;2i1yok-}X=L z30}Fj;(O&K>-bXz!V4r%hSmO<4IP5@7~P1X>K`5mB4X)ww{RTs`u;MAw^pSnBAoZb z9j>Hf#X6>|!AXN)6&gHwJI&aE38FJW4$DcrVh9N`j2=!oWkyp@Od?mB=8G4(+QShn z0D~=AJ4^e9)0}(2)GLf9@p~?cb1W2GT!kGK%=GH2s*4+`_`HQ_aI`diAOd>xpjQr# z5pxN>=EW}#L=Oq1P6t^r#~>%G5l4hk^dFYfzWuqX#qTRaZ{-<09x`_)IkYrjzr5Rd z=guk@Q%bw(H8nr6-Aw?z_?FN-ls*{x&VR+H2x~SRWE%?+eJ9VN{V+op7fGD2M*8R( zT@Sfs_^V6@VslddSpO3t`b1>wAf!95XroQ(8q~>YuuQ+yGB;&p<{qwB;R7INs(=R=2mRe-4LyJw!8@&UM zFVm0Y?%dct9>BJMT}PMFho+Q0tXH_)VpG9gr%%!I0|J-E-Cp1PcLNDj3&&Zj2d2mt;Y!)y6W{9WH7Z9~k@w>0_vS1h6QfAHad?pv$ptgF)N`^$TCrV^87Tw;>E^gph8D3{nN zG!O?kbvtr+(suAwf?)5Y;{}l&gRDaEQ_nc=keI7=yhIoG<+}hpUY~cB5()Ic7Xvz3 z3}3ZH59nlUOZ-zcvMr69;00H9PVr+s8nSLFo`q$XLEa;#vg2mY9hNOMU(`5!X)ANM z@>`y&ZLg;Ja~u7}N_AAg$@ksf5v^OuP+$7B~tYy&O7PX7a~W6B-Xe?7`h6K z@Nh=Y#tM;xbf@Bwd;q%^E(C*q+59VMxjJh2On@&3J=q+zQyxHeCTT|BH=Cip01);A zJf4s*I8b-Xk#UZWA-w>wY(JvHOnNpN%E0&G;&#N>nRadhY&ote`_1V z8b(!Vkn6yI8vFht7Z)y2D1e@T>DS>iLmFg+M~FP}u(FU^Um?n~{Y*%7 zaOOP{xY#Fu!WK>0c`eki=PbU8UnNAc20lQdHLGnj0+cmmZg&AVi@3fpr-qYD%G~XV z@yj6I3d(4iftL)W87Eoy9sDaE{|hYC(*Wxf*iMugS(MM5M%*^f7j1?c>$QMJB=Jz{ z(8jkuWxi{mE1O3hBdsUpV&OzSy$L71<&C>(>0>(k+H;vOiJ^_?v|>K0a;Ay7jd-FP zqJ}#96A{#d?3&6e&V=Td=y2XIOIUgiYqGECzCOKccD2P{1j_~5SB8>R3hx`_L@WD! zgtPfTR$1en<9| z8vlI6KCHL^sQ8@atZsZwYG-g}r;kS}G87ugozKR#oNp~~cWR_*HKwIP3}r5Q=#)At zQlZt|+x0rV_r@B9v1k&HM z?cwR3Uv}j1*h@^6@V3?|7htwCN`VAMiQWgsb*TyHG$szRJsez5*sdF=saqLC9_SH= zdXPL7ZZ^oY1*hZ>Xz5%oas_QiC1M6{=OwN+%iOqqa?H0a`UkJ*63@Co+P*%Jp~|dv zD8sgEDh>l+e@SP;loPCDV$_Eb6RZwf+oLW3LV!XU2ksSCdTA#XK+?c9F>=R&%jb;+ z_|37B?8u3t^D|GfkNG(=Ym%-`npM}>;|j`H%6C}KQ7{Q!cbN&8{p_-^WD~3f-9@_m zbftC7URXKw?ms{d9h9CCGx>n2Oq5lwJHbMm7H$rhDR(U~`MxkMHK0q*h3fQO8XSI( z>C{g0qE$sW;ZM6dM9%zY9R-K4k5AQSCeE$nLWHgc{0;p>J-opgluIDr z)b-3e4kyq+eElj>P#B)M8<=o0?2?8#i~M?S?|q)iRiq9 zmYz(t-!J)ghTC!z!y%P%gg8v>iqxvDEgLtOsr#3e;;YDAw}jwBBcKq&tjAfz^8jxo zoIwxffu2()gBuT(EZzmxk`0g_Ox%o=j5H*rKOi5qP@Ux=i>eCpj&}$v~kC^vA@Ga-$6PI zdGR&S9#itHiYV`#S9yE9Yhm;!e>WykHm<;7-ahK9TL4H(frwCB_;4 zf$U6>0H8`hL(Si4vmC366v!o=tPG2^sl!JS+oEi1Bwvxr^`~VEbc0`Lqu`IxWd8gLr%E#|q4Jch<7=6r;7_>3bj;||Kh&-m@sOkt}u*SXSint31 zicnx6!19_akZ#Sr=9N8pC^}i9?t98FtNtw@{hR7b=9K-za88jgf8!jqd%&=ivULh4 zTQUdxK}3Lr9V|6DC_`(4$0e2aDu?4R!Yp+WMk)p(+VOm-CVC>I7C5GBL)rwVX*5w>r)qOk`xM9lr3}8} zVH&%DgO^-~e;`BknMy}LYEC{sIFA6<(c?cbmS<^pV2|}*vLIAE-a=tC?~z$yzG@TY zd@E}-VM}j@5x$cN49anxt&^VlcAn+i_~P-s#!baYIYeOe|Qrbn{Yv-pEQf3S(xI!fAM_`>lX#%0#vuXPHW|&b+spvxUl4HYJGnv*_h`F z&KWs|yda1$c}k+d={r_eP0XgJVBj2r;j~(t>F%hOLzE}o{740NCh+-OAOtA(a3 zV%6O*svh_+b$#P9N^Mtniyc*}{6FuR3Y0ASTBHzEa7f3bR)8W^Untm&Cjk;OzczUH zmAeZo4c!HnsW(Pog%K@JxZoH_(zJu01l4CFmHtFCS;02c?tbq)9Q1Q5N?f#%wLljN zH2~&bh3~PQ%YX+=tg&L=!8AA~BLh0=egsQDsheKRZDkza!ix@IxcQi1avoTU?tlHe z4ONuDEsvz|3V~!puxip{!=V`G?YYki)*P}(B8EL4>`37_oM3SSeB0YF#5J8oNcwhC z5Am6#FInL|rBh-=WL|IgPvAzXDyX%5`ppD&twEjm>-0> zzme0QXEf)#{ghbY3aD+poI0JZhS$_RUq*M;{}YHiKnB0IHG9f#==A#j10=Sq*pG{_ zdr}tAc7f1my901xEaNom%h3xgWRjv0$onb2ZBS0) z_x9$S7l3>-xjpl@&&ij9@8?{CUjBe|nEVU-X>$^(NIayPncfD)4T9s7Ny_TtAxfsmrQ5{k1)%`{Fs3hpQJVGM*K zfzbt#XmN|s5{_32yavl}MsC{+%DS^6!|qMd?S%`(NcuU_PAr`vbtbk>N1l%@jJ4Y$ z)0Qa8&OOGP8NuJ!P5wYaL>N|*tYgr_xncXVZ-bV}j%oex4W`XV;kw1HUQo(Sm6Z=X zJiGuxflUo$uWlOMCZ2ayZwpX_EC@u34Zx@y=F-{0Wyk}P%woItaOGPed=oLcki=|T z+dEXR%318nl5@nU9z1708>EVSIvOZAy;*H*lb1W|<+h%E8IS{UH#A+J=9&)D7@ss7 z81a}byQ5+JXUlHK(TR~Yx(cqL`Z^nwo}tmEj^tV|V%P%+Y~rOjV~E3bM6QMmlRz1u z1UqFDh+*BjlyT$QV>!GwDIQ=#6MLbPxn+vj_?@h2GMJ)aq~yyBbG%V4qXPGbp;^C065}pIq4FFWo13$@(uD#m>vGVzr9}?HK_*Is1if2SSv%9J zG~JxBH|d=#_}u-huDi7$Nig?BH!Q zKbGCLx7R0wa*!@?cBYmeHgn*c8kaBFKSI?Dp^Qs4FNE?tuY&h~eP8*-FoqTjBmCVF z7R8z%ZX-UV{;*iAdZS?lFJt}B{cu$f3-Ax?(_vsPNP05Jx0zM_3_ur>%daMbFD{(_ z;pCbYnA2t&cXUPq?~&MAf^aSGk?=o5c~s39mTu}uTn(XaJZHY1V1Ef*)`e28_q5P% zP+2Rls&*i45*n3`Pmoj$bk9eb%4><%c!Kxii2|`2bQkK5Rcb`>_E_JPsBjQZ2{EXVIF(RPZytqiBwg%9lb_13T=F>W-~EAD330?swLj20 zja0#C$wC}Rvd$oP_xGivmOzQXqTQDAk<}?I=to>net?Sa3z0&g!LC>14cmrVZ%EjB zc3qf*s{?yQOso#*4O6B1<^9CTbSt7lj_|i)F56L3G;#vTf^ltttZ?b#UJCNU#YxQ| zHJF^Epwzd32y4oqm%@G>el_V?LfH-vFK0bX+-E&ab;bhIEmx1uGoQb*^lv;Z4MI0e zR3n(9=mc}o+=S&vY~9^6MmK-(vDGgn=rbaR(BD%GhvD@Yp$6toMjQH+g*z{h^&CVBY6Cv@O|#N7`Y%mF%bdPR9JYU#AwY@GDA{@Gb&hQgI!t|!xI9BV zX5{y-(9hF&tKFTI$ZI+5_Qx~nE?MANOf9_$Fb!Qs-qXs8yDra_EeVl|rRdUj=$U|| zw^Y!k50DURkl$@6zw$com-VM~FE}U$11t*?tS&IM6$-)vvz+t&NW&aGEdC{rw=5Ep zl&4)*>OfYVEkqeCe5stBILcX*)rE)k388wA=6mJA{kLT}LvG(l7wlf4bsi(pG$|`< zeABP0bN|JV8;>D_4!=bo6PNPB@6Z8=4ZH;r4_CwMg61_QET`J16QleKfxc| zgBK(ThHyEpGAAiP8wZB~tii>#QXg6n*1PE?5`%aoYifz`c*-T{P=hq#Xq)^2vnD}- zj6-=yb*UzR`^L$$!ax9aAIN%}FmRbXfssyS$E?%K;U6#>n&L+pL6v%tSANnzehQUb|-iv<)2B zqfGZmM<9w#UxDd^U*ij<##NtK;V?i`<>STm4TgulX^W2&Mg;q{xyn2hPSbH5eoAZR zF$owv^EYo0X<=#`?A%t13@yRr2x7G6WvkhaP-#R@l-T1Rm3AHqNDx6Y#QqdD&|sgB z74RMqh$QJ029Vk=0n-f`*HZ7eb9CL&vckXP*?1~s1@T!Ye0!3pI8j3fYXn!8gx17-FMGZL{yM+zT> z1<1mzHtnNwiiU*nMkLS*$e}+8B zTx<#Y5EzS-B9WC(b8hHGI`eto|7(-OcL_&^?_6ax^z(E^#sjzUOIl}Nym#&D|6edQ zSQ()776I?OmO#y2W+NtL{d63*V4Km`)%YVh8td$1=<8_j#4;Trq| z#1b%k%^aq^J;5Gy+&WB#*%AT->Gj0j9~zMEh>4C|`vum2`!rY0g}N4i{;4ZJRH{+1 G3jH5PJs*_- literal 0 HcmV?d00001 diff --git a/docs/img/authorization_cancel.png b/docs/img/authorization_cancel.png new file mode 100644 index 0000000000000000000000000000000000000000..8629297d96a39a4d636903f9827b576d2297afde GIT binary patch literal 368630 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

X|*qI)WB)`%4j+$$E7 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�m#X93>8)j^-=D1*-;`t`c){&9G_2K|{DU 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஦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�@Kdj(>ay$7(^rOLhjg6NWN zGKQ8grT@mOAyLG3!;TyfD@A^9si(E|wj=ss(n1Vwxem_$FSN#N~u*8XI^ zSoP@jx5#4U+UtL06-Q<~ga*9ko3HvCKU~pJHXMmO#77jRZ(}b8ynma5 z-`SXKR+R?-mLilGPB#$y@hUrw>?bz&q*fAU!S^IVk(f*<*80`^m({tg=7(${q9Qu4 zG~qPmL*i|ZSsAbok85S=e}GHS@riPsi1+_{4gK5ZPA!1f&dlKy%s<>~Jrm-j?<(P# zySd|Di5yt9xTb390fAYZSTY@^l;2&+6x)keUC^O%$Dz=lzA(MruHNNu8potBIjI*% zlwRpP^CXbqNSd5h$5l%yl%kDEfe{URw<9k|H+l2VN2@4o0-HxuKNJd6*T7yLGtT|@ zary6wY1YO4Is_nPBsFuG;(m{j@v19fw?7Wy#I)0dR?&{qB3@&hD_0bqk;O1 zRAHqKes&0e6uo>Wb&eF4P9|^GG4SpeKiT^h8s-664r1HPyOte2C^FWx6#Y#VUld)# zGxOh0Bi~IX|4(x5-?OS5NYOsBzH;1fvU;`6k#bu$cy@!>#08h8=c2RJdLydx2K0gZ zKi5+v$iKe?hXhlKym3ewD0B87x)7z8jAW?7(f9`xs31C?;XNLG)FM_Q~j6C}uQ zBHyfzQ`L(TzOe4S=N9~Uv88Kl5u$V7-<(n?;p&C{okQsO?>CMIMS$)%vrxVV#|>!0C7_7#kzFFwLu6>>~`%!<>P zeaCgq={9@ zgn$@qT6hWreI0}7PX{M>9#)^seIO*E$yKQC|6d03KZ_(w(Ozb+;X(?kJ_a0m4JYH2 z=S*|Q+__#O)2#Yk#=|k|vfM&!*JR8lc{$&KU)Ph%#oWnpuD{|Yr9!}n7#}qliC{m) z(%$uQgpl28G`q-moAII*dA`Yrj4Naxv~?Yd6fCeeL}i(R6OmZZ3PXgj35LdNOcwcV)q-{>iZGbTATbu|jY6DE>^igV&as;=>Va zs_srpx8v0$3y%*)l3yNc2(0FfmeSYg-%xop*$4_`n(aa=)&n+|i|x192x6O4>cqa6 zgXPGI`aHY&aa}%DOLAH-bG0$g|7|56ct2;*e!3!#NTKV&szL)`DDcgGXmcGuZJG{F(W z*t#(?CAs!tza;mCG_%35F;<4|se>6ybWocSaJs=#m?B7+s$RFb3V%3Ip`lk zJ_1GS^@TnSGPSV`d8il>S@;0C1g$SkA1}E4L)JxJJj~h^XGNgA>2==)qfiCY_Ql3t zbMj}~5pfaZPj$ga=;^Rf9u4`DKGH2J%6$MFU^ShF@vA&P+kFD_KJ=E{n(+li zuwRcMh7MWYi4~n7Ct-w*WCa8@6E@#R{b(-l zvK#C)B+qpMr~A4zDEGSZm*F5MeOF?UFrQxN_BH}z!g⁢q$la1oV&f@jY`yL20^B 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 b_iM{<<;`%@pgtwk>rYlv@k5okQQ-drV|P*_ literal 0 HcmV?d00001 diff --git a/docs/img/choose_segment.png b/docs/img/choose_segment.png new file mode 100644 index 0000000000000000000000000000000000000000..9d42803e07b1af8c30e5a26e7c6784cf349a1f97 GIT binary patch literal 68427 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≤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þ(&}HR0+Yz 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 AT>t<8 literal 0 HcmV?d00001 diff --git a/docs/img/login_invalid.png b/docs/img/login_invalid.png new file mode 100644 index 0000000000000000000000000000000000000000..a2c9ae63c2388ce16a4526d9cdfb58763b1f525f GIT binary patch literal 105546 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 z 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

3P4&HfF#W32}9}EB|w%{f{W1vPGjw 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 Z|9{bWWQw#$!bAW7002ovPDHLkV1j>u;3fb7 literal 0 HcmV?d00001 diff --git a/docs/img/mtoken_online.png b/docs/img/mtoken_online.png new file mode 100644 index 0000000000000000000000000000000000000000..ab03487e3c275f4c2af71f9bc0da0dfa9c90524c GIT binary patch literal 189413 zcmZ^}1yr2PvNj4KK=1@7$l&e-mq`Ky2r^iLOV9uVgS$%zIuH_Ef`{M`+;wpG!3TF| zV33<{@BN>1?z#W%clGM(s(Pxsx_kAiRc}YAt0@rRzQjdCLnBa9l+#2*d&2*>RzAb} z%Tc9GBt}ES?X;1VRacUgrB`=`SlNIr(a;nlek5UQlkAei+ESGGo<5_eXSrZieDRE) zC6wG7l0*FM^;;YP2KKohJ!FPta&qlhWs&Uldkiu)M?=>{q; zEU7f!XbFJBOgN$18+^}EKA^+>!e7$LS4rOTG(8J6pIifT+>f*$o(R~z*CH?Pi{U#t z&4`T9=vH=aCi77e>>@i2RtX3*Nuv7!A`X))2ef3s zn2?6xrZNY{&xYq{!`NCfh(ok7T(r-&+x__sBr-#DMCA9_KhcGMVqOHk;K!b6rxQaL zUB&c$L;nn8oF07$LyG>X-fLX)U=~vr_NP6jOmq009faz5S3x1G{GYMd+Nm7T4bes0 zX-}SC1p1#4;|CF$J`JXqk_+33BhMpBdHpd?x;s>g-h`bpGL-nI1v>$;tn+7_KQB4I zyw86BnL-=;{t0dP$m^t^ygM>ecm!`D*?jy@v`mF{DMZ4oJ5`b~u{*|348;hH(YCuV zPrU1&lm!vBtDaCHaec9mf=oKQp1tn-ie(n4%cK$-6Uq>w$jK<5$RMvMt{L)*zElz0 z8E^NEF+-Ms7(Q)RyRP{nKYB7HK2bGVHGVarR>XX`O=o)7V&{d~7ygw>?GnNn-2KQ+ zQ$(fBT-e-Ou(&(X73G!G6=5v^g&y8zvpVEBQjcc%gqOCCvW~EhVD_tBm)qK{W0$9t zF&-q$0~Ws4fTZzd@aK9!dwBK0+6s7#c+I*)a)9F>Di@qw5vi^=2NIL7SMpS&WZ)!G z{aV(|&zP00u=sjW70hDHc15C~$jL19O_C$^yPCezZ+hXlkp#N<<@kOJ*(yBoU~a~8 zdYw3;c)o8w{aGBpNtJQazRAUF&1hX|F0fy79RJe(%`qL7syLioRyd^GlgxhAk^IXCEYvaRDQL1B^4G&A+ZrtyN6!AJv?04t}#*7NjnnB z5N-KTXY0{g*j<4A%pQ6_|yWVxd-Z3*3X#Cbl(P$cv zt88`pdP=;p(hR9xqFb3;i(7fj z7uAYk&NQpES)mwf))DTMd4cn$(p>w3LkD=c`)~Ik_u>Qn!{r5oh4X{r1Bj$L?Hx^` z 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

w2w~(aHxc$gSGFdNl}%@d`W(kcb<@~d zg;?>A+xaUkqt5}t*)m+IlE)hR+o_hR6M_KQ09F8U05U8ICL_^20Q6d9os;eqjLbbV z1R+{IXZH#wz?+h}6=}bb09o!?ue-s<-bQ(oT9Nf1-2+92thu0rwZQ$sicq82MN~uj zI9kIp2DsoOgm=T$Ne~qfpm9)G0JoCipl$SS*^gULyK06{5sSYv7<5rQm`!G6)WAh) z3)7lu9R#?<%ZK~8^%#yigkZjyPWF1(qxP@S4dC+D(A2ccgMY6S|9!RPtlRBaEAu?5 z@o*{e`sJ8i`L9Rpp>kLDm1JWk(%&jrzf8#JO{auytUiCswMJaLcx%k=AGW2xxw5@t z0uoaMn#uvTh$og^00Z|KQ##kq611Q0?qQ?~Q^@uq3>j%UnGDD*dviHY%6p<|`+U9+~y?Fx#s z8i|n5&wN?+Vnjl_uchlU@?sdj0@xSHIN!LUECHeY>jnWrv9FC2k9h=(S-Vk|HJJn% zT*s3rpYPp1Sa#uv4Q}qE8`M~^o5($LGk3N$qxQ^VR}Apau-L=(5}o$^AjspJz2Rfq zWo^xdzT;pGCcOy$PGhISnmz}SYc9H$Z?7@D>2gK)=u}q zCs%i$YW+DQ)Mg9getL5GVg8eN^nS!8fN0OJhVYhGJS>quU~jO9ss@^|pFDlb=rhh5 zuvhJ~0mNDj#mO64*SaGW(yl3?_uRiB1-LT-ws?uuvS?nI>>AzAV!f#Sor;6J@f@|H z?5Kod*nN4n9oHF{8OT=d_2OeTR*5WleK|Md>%p+y23XM)XnUu_L^Ow=ED>&rblC_) z)6I^T#`>|Ri#$AwU&t*O(cEuZf`@*wqv*D@_j$>GXJ(nL_@j+@eX*kjvw#0sR!#z; zcX?m@I5e}XHy)D{gx;|xKRPDQCCLv0IUWOyp=0r?c%k5y>0)Z(4W{HWY_ViQ%0fNy zpMhN8q478elKg>PmplD9d$sH!b&qrLE-K3|^5wU0B$B%Ag}5$x=)P_5@0%O!-OxW2 z7tARYc(acvnfQvJy+09Auq{`n_N5#K$)2DzMMm;)I?xnKM0aQL93n?7W;AFH4AMZE#k9v#eCBu;&S5t zaNcdqNBW$HOW}-7%Bmni>f=(*xer_|Flf%hMy>_Bj#LHG1P~;+ez#&B+zg0K%wQXrLX}aI9f>2 z0SZ?kI<(ytnUom@zZ{)r40bZ-h7NH2rxl*X5NsqQ@+%Nihy9lgW-o@ zL=@q>wI55;)-(8DBRENf8v6pW)BLgrbi1R4MN$S@hb<9B6=Zwl|AF_?-F|lrN-cdDym+rQ2oV(Kl3F za`|>_#U9_OI;_c=x|qZ3*^`A5dO-%mpheb2Y5>Vk|7r(DW{S-YBxBMSzt8$()5K`* z;ht$TIIg{*!9O5biyqs{`e|dr@OS+ldoMuqWIFF1SdIaSQeg?4DKg6`u(Zr@vL}=pX@^9+KKAz>U|LP61uI|r`CIXTM<5hnkw!$h+%lQR0dsY(1 z*MgJ9IJ@buA{@H^62bQk{d)0n?5`|mv4SUTN?zfQ1&sdX?ma@2Zm0!m$QL5{CXSuvZLNtM|56j_NUgT^^A~o78E})Y z#6z@YZAr7ImCL0BKm}PXm1=o7#l8_6%CwyGmx^E3IyGS(sHHjSEI!r;A}-}t)F1Hb z?>IpyTHYy2gY1#~h@=iI7gUe9$!V?}nHaM%qLE7fMiS0fGnH9RmJz5;P*kvs&<%6m z39BDfLdQ8R!e!O&ZHh0m4QHFuMqZ%$!u7 zUjQ5ub|s_TtYj@EAv@f9c3(&Jp)EMOK`$Q$y~gZ}k`T*g)e`u5-1UEtnGd9ES-N6f zSgtG57y`O1Wat@(2Dg3 zyeZjyY8;7}2hcmc^`;?z%qYogBBhU%j3Au!ujsS%gBHyf`uz$@ZGvpRh7psGj9sUA zv*&s^BZlz<7e?fV|1nqoOFN%{iZ+L>+dxJVZXM~8APF!RV5z6vxPD1Eh2MLz&4Rv( zJ{Y}_)kynBQ%#Fg39-k51-6vpQ?SKf=$FV?`a|$6%egZlqDhhki9|;9G}OgoZ~fCr zpOdo)6CfZR5SqOe&Zf&Mud{M&Nm;)ill^aX9X@{LsaTJXr>N{C3;vn>Z*%;=|Kd!6 zVv56Tfx$7ml@v}Sn2-_-eT^E)H5Vps9##!LraYV1Fcj(_;x5)f6-?T^EYcummwMEf z#sCHYK3|C`YBgzvhCkbO`MXB|`cBaRMVeea0`n<&#<$C_6i`C{HVo@D{m(E<*+&No zv+OPC&jq%oz{z3x1(;xe$qt8~q;>>)zkcc~<6A|IdQb3!=_MMZ#Hes-1gRng71-%#V03pYFyfR)IJkyKV!d zuH>)Q;Kioaeh$<|;*?&0t@Tn4d;?F&&We!dzV%B7J_n>U6j{Eqg=B7-tC0^dCbos9 z_k%ePfv;hyhBjRqd5vxI&J+D>TY?PNuQJ%J+x~IsKTTAB8Y*>ND_jg+fO_}H$+zK` z4l)PfA;_68WMLMNUnR|db5DX>^yM~a!f)iQ!v|#34cmN77)_Ai%6W*@gchiTP*#byhh*4o`L10zn`Ixq@VH9R4EP-h9F$gZ=JWO zo&V2;(+m360}A_nsR`>_eiq2iRhtbzps55E&J6?or1D6OMTw_Yqp`f9S+xpZYLJJs zW!m=im|`|UfTZX$lh+p0C=~P0(^1N60~%iPGVS6xApEo@+;JXQu~@RjT?2CU39Fo& zrHHby%)vkb*LJupH|e*7f*m^9(f=QU!r$O$@}L(lgwsEyY^jm3aDZO$Xi8%-RT1`L zg0yl?RE!nT98m~{UVEYc;e$V981B-SA;x5(G z4Ra;C@p0M72XlNjCS!5QiN1(vYqI9we_uya5e7|B6Y@B2)mJqptp8R>YWI&1@X64N zFbQP7hFcZ&a2pV!5No41Id0Lr>R9#S^*fupid&6tAjQ&w1)W}!MX&S)ZGRdnqs< z%)mSFC?srt$DT-7YtP{o_P|+Ue){V-HoDLM+qD3r+F9caBTmfAv8a^!-s?=_Cui;; z1$T56qK=R76OytQ!u!_n((QvQWy(rKpPzaA39^dMD?OqMO(aI|rCtK|w@ko=h1pvT zt7DpH6GMt2#INYpI{+*wQAtk4uj3_9jmO^;t0r3QS8lvxY#N(-Ti0vV`9XzV`i2%H{l$5gBapeW9k#)eXqhEOPYM-lvj{cmbnI<6`YH9`2<<7h6rF9`4yi}EFWKR3Lt_yMMSYq@E@)k$V!zcOWFsmpYF z?tEP0HE|%@0sn*lg{@-`;DaCkPkO<>%r9Y7w%loR_IR4Wk5}U9XYZV&XG`gs{)eh> zj*c_>x}IcWqp@w9jnO!bZQJfd4H`GLZQE>Y+jfH{%{%>l>wB^8zq8gn>psstXP27Ii@|9AYRmDmYM z!S0DIG&E%JdIqE7{=MnmVvDbm=Z4&4>oVzG+etiHb$sJ`cjYn7Ku7*$~sFhE%T z0Ar%ictI(Spe*u?L~9lKo0{=*rqI<~rjmA_ZK>Xp;wb9zkjYn1FF8E72lwjL0+=OH zB0vBE{`XpVpFOsB#L9LiZsQim2Ij}V<{RdO{7yzgBkL2Td0t*STHd|E zUw}{tk0iZu>S$`Nh6nqTiLx6cabS~3;r-C>@JC7*SYs2t^_WlU?;-B~`K=MVa{g6F z_y>6uxIlc2c4efp$MX{*)&&-tV9dH3Sll}0!xw{81E)I(5pLyv1S%Qt?vw3xrHErReL|OCTds3m0L`AbUL5}E&o8IByfIgQn zz{H}aAs4uBU9$u1R^i`q+9{Cv`EsLaeEIM2)h{iP@71FDj&1)TByuI8 z$3|;OrC6YvL)<;@gkU2qp~eX5>0XIcOPN|2W|RaA z6$E#86m7bWdf$R>o(+WusS6I&LogKLj)3*T<$Y|NFJ{>OWAJp6m-A42`WN*%&iZ=G zf1d9+Qy|OvC~ba<=q+(XW@G>u#r)@SEbOWKSZKau%l+j6Y>;H`v-$ab|Dpb~ciCc2 zz$+e1TAH;mF*h<1xPTZ2O57E#Ajl}|D?~DOyHzh=$6Y{_36pi^J04yC6mML6u`d!s zdS-tRnuRy6q5H4rWz@74mpMkl*~s%V05~br6gujL7Aq zYZ8++-?~bCW1>)(K6wKp34&Fifag`F$Mu%!%^f_> zx4DN=>2GUpyP-IW$J@J|r(pT8ERUR8+qE`V>CLbW{QZQ_%_SW#skas%f0ItXKW+2s zyDu)z7o~K&`m9h8b9Ft3PUjfh-lZte1BJOR;H_G8c9Cp+pHQc0=#n}1YpkIW6Kn;rjksc%$&?q@R?oEU^cL%-He zKp=3bTV-HvR?6@)jY|6Bl}67n+JVE~O2$Y*`mypAFV<|HLaV0KMLHewjBy0xHfcu3 zRy^_VCQ2-kNic!33j>soF^2ukO)~eP6h85a6)~XGZh7Jt*V^%2p`+K`L%6iCP5bfY zHUH+-1xJZchti7G=4#{bt-qNK#RB?HVc;Q@Re{ap?x(D)KYdR**^j25IkQN2#vUF4 zY#F~79M58?LfGeBKs=#pp+-Gy9VZ@|&00zs8Me?vx9uxO@2tasAuGY&r`wuHaN+Go zRXGAJ;g%?MB|lQUO%2NmROCZLE8qs-dS#4BIi-Gh)-C)P-lo)l1@vv<1vAwEy@ z?bkqY$F}>m+Zi2=eH^hJ69+^hPUg2ir*4yxS02+ew$%qC~+iPfmsCXKq z1_?h4BYg7zZLo2>6c|;0AP7)AAwb%Ih|)NyxIbH zmakrXKgtBKURSv`+50@Z4RvfCrs4h`)blpKG+es~zWXkOU9GE7Ly~lt@_x#9byFE*Dyxhx~Bll~+i4$yz}kgPb1Y z1x9?yDwj+10Rg430>uL`w|17+uzsJYsE{GbO+6&P-A5tlB$>cTuf6+1S9Loo5ra&D zl(C=d7!AxWnM#x9Dx`oyuckmD7Txh=6MQh1J>Lcs2m%j>ZiUjquk&5URO3?a3N;_X zcIJq#F^WQmW;q?wr-TX5&%VTa&Gp};ws~S;!!IdE)Q8se)-O1A&mj|*d}<*FQ*|A0 z`26md63o+bsVPc}W9aXjaSb}7rQFFOk+dSsdq)o77JmhE$xQu->AA$krPwTWN&PV= zc*HJOfQl>?uf)e5H}-vVXe-4+Qko?D#L=NnsE&dEG8yhnVh zOoweFN{Ho7I~vMPTvhr8C6u!D2!je5i0*iHJVP;z)M) zp-n9vmLu-_$jmgXnV;j)qtKdFKEWxU(1NB8X0g!r{UYox)kkSkG~kIscLR}k0ylka za>he(0!H1W{nhw$xNTBiU{3m2+5Yo*oi`99HYEoeD5%J&c2HnRm+_g%bpU)9`)$IH z%$Nt~O%QNR5|wD0z~4}ba5@B`cPK~r$~evoZU0%RcDZ5%rVkTQAt`ux0ekAHw{!uM zCdU+t5wRqbpYe2DN=p@l5>^y$6wuTitP`li_>Z<@+wgaz6GOtcCT3176dY?f|SEF{62sG|bns}^lG={sxNyH*YHP8eQI*HQYZ2iUjMZL00~Rqkx*N7eOW3)p{a z^O`$+$5#QYi8^-*76~uFaC@0v;DSH-2X(s6gu4WF_tzRz z69K`4mj~shgkyEcd_*BXGJU(7l5EMuA}TvtZK7ziWebxF3D?uA9E{pNZfU|I#t{%Q z(jI|J0q5s>nN``aGS27cA=Q!%|0v^K^6LZ;7? zNH)8}x2>1I%;??5osa2#h&$IgM-ur@~C$mpDg}#)IAf0BPgQq~!SVGJH1tNkW;0AVKR)@!HOZ1U# zXSrj8=anomvm&qY?PU++>A}xXwkY<;5&Ej4d#zJ`9T&c^H$|-D#6(xW#sgG7Frb

vWI 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

4Swox= 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

xllgdd=By`%T+FXE%_&I#x2UKdCXW484Qe zaZwYjoN41npoGhHGj^aGf4P24s1Zf6e9NBGL^RoHRSM*KKsVm1; z?&jd8381vSnq^M>&(^>LAR5iq%zH(0X=L;5pl^yV^;J6&_}x4Et&L6gE*4scoK;?2 z1PvFxd$Q*p*2P$grPT7g&koq;Ikz^B&Y=HBYC%gnX3@^hzSJb=MOGIb^ZOg;;zs?8 zC+V>RhQ=7LP86DbTH(uamvtk~_nbIg;pM;jBS&E_8urv~+{4G%BQ3b&#ad zJ?X+cL;JW4)3tv`!S(YhOFOuM^(^wA>^|irhCn0naW*ux_w;Ts9McUPN}LmjZL`tpf3v>5Ug^V$$Mi$wrjcm$GRTx$ zc}#W8=pEF?e9WnwP4-(joX(0QrVX5!G&L|3Bv1m7K{p-GeGC1W8Sc!u_B{2!*htBUOK1E+j^ z>NC79va_F;<%HBbyt=K@QO4Of6}mNE!Jm8liLs>aa{L5){XcfkL^qVEgMrwCcnupk zm`??tXUbN-RarO_Z&8B`RGLF@3NO6$Uj1 z4f^C(sZO(6)gdj_gTg~84eoy(5g40p+&gn;8pRQBKEiwnJg84jpVLi2glAOC!~g-B@B{Vj5$-wKhicp%7h%wf;9JY zc1kHuB@^R9BGE_(N5ag6FU(aIudr>RuHw=@p*^&SvNav~J|MWKBLUO<-<6eGyC+-m zH7m{co|{{@pQH9{pF!4q8}(BrRxn|R5yNw!;UeM*oCrUL3y)M^@PJE!WBPg{Inc46tWCY{j*_NY!>Jof@4P2M zjS79H{te94mmfUf0kN1Ey*0CWe3>4zp&qTjve$#&0H};>+Y|Np2zULG z`CQkE@EghVg$>vY)$apyo_+k&-ZH)&{c$?cQXzW4V}aL6Kb7#1GpFFx%3KBV)^O$s z#x0R4YzuunjMvUrT!~XjitxohSk*LF$?uz2;g%o`E^VZuP z&)6Jz=oY|Z&Urd@U#V5YLQ64_H^0?z?bJx`kG>cT57PPKhUH4A4nY14)#}ANRxs5O zRNGftrLWB#yev9s`-+pl;HhO0c3{5PbyvAXukOB~@s4^bUei%%9u-*fXmZZ&=CXI+9g#+)$ub!z9riq-1gt#zQ3CG_LuLv zv8mFc6Z}+q_r))hdb&&1Gzkc7CiN{hdw#m}rm6F8;%;L1`{+X^+0RT5FL}&Q0v}=;~rXgRnI>t<>k=KWv)RT0WSMJv%PG)^FMcYoc4<3pSw0WVTD%< z*XyWXHo^Nx9A8*SEEi!6PV56GN`|5#2AjQ*8h3isjZvwvx0WvH!C8^0)E}3EKy~JB zm75?}Y@PZBA~P;q9$lY}?$a4Dg7W55wKK-&GjY=!@B$ZL;rp;B6R7I&mnQPA{Cs3IHN6R7 z{$3z;%!xF8rgQ6m#OiRbk4y94$ca~iO!wR40i|ofkP#z!raaRkd=Y=R33HD_?sd)$ zB_i#GCR)H}qdy+{_d5ZlDdFq=JnX#_%r3bnSz?w)rqGvJf+fz7!Kzam*x!rzRcM7e zQ%sj)Z0NXi^>mT=7xx!sRjQ8r#FP{6q3JYkuC}|r2Zah76)v|YjIG|QOXth?M=@a& z=6TjOAwvdSd^cLp6jatBYld19n-43*;QQ{qO%vI5FZ7&p4kR@l+Qmt7mbtme{>u1? z&t|LQjyA`cK&aWTKHUJR@Shi~rvdSRJSA$p)JNb0#b?}cLmAfq6dAC7y#SXZb%0Dreft-wV5#m$m`u7?{!VR6ZZ~PRvG!atw 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

1mO7Eo%RoFGHfl+Ow_VjkE}Bu%D5_ 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 P2j|8$yT42Sa)0@M6j{Xt literal 0 HcmV?d00001 diff --git a/docs/img/reload.png b/docs/img/reload.png new file mode 100644 index 0000000000000000000000000000000000000000..5434b8fac3c15057c7cdf397b3dd492e3f1948f9 GIT binary patch literal 73205 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 literal 0 HcmV?d00001 diff --git a/docs/img/sms_resend.png b/docs/img/sms_resend.png new file mode 100644 index 0000000000000000000000000000000000000000..47f5395045a26218c6941bbfd5c440faafbb0d57 GIT binary patch literal 49175 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 G`~L$;mez9s literal 0 HcmV?d00001 diff --git a/docs/img/test_client_authorization.png b/docs/img/test_client_authorization.png new file mode 100644 index 0000000000000000000000000000000000000000..77c3322afa00b8e0e8a46e6b469d446213beacbb GIT binary patch literal 141721 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�vmOcn20?RccZ6n?WSf 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

eze~Jv@H`!96G_< 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 FV1l)XldAv# literal 0 HcmV?d00001 diff --git a/docs/img/timeout_warning.png b/docs/img/timeout_warning.png new file mode 100644 index 0000000000000000000000000000000000000000..217c6ed0e9a04e64385f6a4b0e0f0f3ec0339eaa GIT binary patch literal 122597 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

kNOKo&@VyS(3VWOn)*K}_xBVIIj2$$v;0ghjI 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 literal 0 HcmV?d00001 From a435efe5dddc88ac075d04a71b5ab2ebf72feda3 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Fri, 13 Dec 2019 15:32:59 +0100 Subject: [PATCH 176/197] Fix typo --- docs/Users-Guide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Users-Guide.md b/docs/Users-Guide.md index c21edf06b..4af3a21eb 100644 --- a/docs/Users-Guide.md +++ b/docs/Users-Guide.md @@ -276,7 +276,7 @@ curl --request POST \ }' ``` -- Either of the previous commands returns an operation ID which should be used in the authorization form: +- Either of the previous commands returns an operation ID which should be used in the authorization form. - The AISP or PISP operation authorization continues with same steps as an operation triggered directly by the test client. - See the documentation for [customizing operation form data](./Next-Step-Server-REST-API-Reference.md#operation-formdata) and [customizing operation data](./Operation-Data.md) in case you want to test an operation with custom data. From 15298f88c715dd07c3ce8c8a0c21beb3e9a71084 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Fri, 13 Dec 2019 15:35:30 +0100 Subject: [PATCH 177/197] Update subchapter title --- docs/Users-Guide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Users-Guide.md b/docs/Users-Guide.md index 4af3a21eb..ac2b4bcba 100644 --- a/docs/Users-Guide.md +++ b/docs/Users-Guide.md @@ -124,7 +124,7 @@ This chapter describes generic behaviour which is independent on chosen operatio | In case the user tries to refresh the page a confirmation dialog appears. The refresh action interrupts operation which is in progress. | ![Preview](./img/reload.png) | | In case the user tries to navigate away from the page or close browser window a confirmation dialog appears. The navigation action interrupts operation which is in progress. | ![Preview](./img/leave.png) | -## Login SCA Testing (AISP) +## Login Testing (AISP) - AISP contains only a user authentication step, there is no approval step. - AIPS contains a consent step. From b4e9694e46ca6a70d8cf74ccf5f5587a66d3be82 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Fri, 13 Dec 2019 17:13:27 +0100 Subject: [PATCH 178/197] Fix #732: Limit maximum length of the HTML input fields --- powerauth-webflow/package-lock.json | 41 +++++------------- .../WebFlowServerConfiguration.java | 42 +++++++++++++++++++ .../webflow/controller/HomeController.java | 3 ++ .../src/main/js/components/login.js | 4 +- .../src/main/js/components/loginSca.js | 2 +- .../src/main/js/components/smsComponent.js | 4 +- .../src/main/resources/application.properties | 5 +++ .../src/main/resources/templates/index.html | 3 ++ 8 files changed, 69 insertions(+), 35 deletions(-) diff --git a/powerauth-webflow/package-lock.json b/powerauth-webflow/package-lock.json index 9b5aa2fbe..dd095bc77 100644 --- a/powerauth-webflow/package-lock.json +++ b/powerauth-webflow/package-lock.json @@ -3069,8 +3069,7 @@ }, "ansi-regex": { "version": "2.1.1", - "bundled": true, - "optional": true + "bundled": true }, "aproba": { "version": "1.2.0", @@ -3088,13 +3087,11 @@ }, "balanced-match": { "version": "1.0.0", - "bundled": true, - "optional": true + "bundled": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, - "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -3107,18 +3104,15 @@ }, "code-point-at": { "version": "1.1.0", - "bundled": true, - "optional": true + "bundled": true }, "concat-map": { "version": "0.0.1", - "bundled": true, - "optional": true + "bundled": true }, "console-control-strings": { "version": "1.1.0", - "bundled": true, - "optional": true + "bundled": true }, "core-util-is": { "version": "1.0.2", @@ -3221,8 +3215,7 @@ }, "inherits": { "version": "2.0.3", - "bundled": true, - "optional": true + "bundled": true }, "ini": { "version": "1.3.5", @@ -3232,7 +3225,6 @@ "is-fullwidth-code-point": { "version": "1.0.0", "bundled": true, - "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -3245,20 +3237,17 @@ "minimatch": { "version": "3.0.4", "bundled": true, - "optional": true, "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { "version": "0.0.8", - "bundled": true, - "optional": true + "bundled": true }, "minipass": { "version": "2.3.5", "bundled": true, - "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -3275,7 +3264,6 @@ "mkdirp": { "version": "0.5.1", "bundled": true, - "optional": true, "requires": { "minimist": "0.0.8" } @@ -3348,8 +3336,7 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true, - "optional": true + "bundled": true }, "object-assign": { "version": "4.1.1", @@ -3359,7 +3346,6 @@ "once": { "version": "1.4.0", "bundled": true, - "optional": true, "requires": { "wrappy": "1" } @@ -3435,8 +3421,7 @@ }, "safe-buffer": { "version": "5.1.2", - "bundled": true, - "optional": true + "bundled": true }, "safer-buffer": { "version": "2.1.2", @@ -3466,7 +3451,6 @@ "string-width": { "version": "1.0.2", "bundled": true, - "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -3484,7 +3468,6 @@ "strip-ansi": { "version": "3.0.1", "bundled": true, - "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -3523,13 +3506,11 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true, - "optional": true + "bundled": true }, "yallist": { "version": "3.0.3", - "bundled": true, - "optional": true + "bundled": true } } }, diff --git a/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/configuration/WebFlowServerConfiguration.java b/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/configuration/WebFlowServerConfiguration.java index 84ed63886..a766f00de 100644 --- a/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/configuration/WebFlowServerConfiguration.java +++ b/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/configuration/WebFlowServerConfiguration.java @@ -80,6 +80,24 @@ public class WebFlowServerConfiguration { @Value("${powerauth.webflow.afs.enabled:false}") private boolean afsEnabled; + /** + * Maximum length of username. + */ + @Value("${powerauth.webflow.input.username.maxLength:256}") + private int usernameMaxLength; + + /** + * Maximum length of user password. + */ + @Value("${powerauth.webflow.input.password.maxLength:256}") + private int passwordMaxLength; + + /** + * Maximum length of SMS authorization code. + */ + @Value("${powerauth.webflow.input.smsOtp.maxLength:8}") + private int smsOtpMaxLength; + /** * Get custom external stylesheet URL. * @@ -146,4 +164,28 @@ public boolean getShowAndroidSecurityWarning() { public boolean isAfsEnabled() { return afsEnabled; } + + /** + * Get maximum length of username. + * @return Maximum length of username. + */ + public int getUsernameMaxLength() { + return usernameMaxLength; + } + + /** + * Get maximum length of password. + * @return Maximum length of password. + */ + public int getPasswordMaxLength() { + return passwordMaxLength; + } + + /** + * Get maximum length of SMS authorization code. + * @return Maximum length of SMS authorization code. + */ + public int getSmsOtpMaxLength() { + return smsOtpMaxLength; + } } diff --git a/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/controller/HomeController.java b/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/controller/HomeController.java index f4592c00e..3149416ea 100644 --- a/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/controller/HomeController.java +++ b/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/controller/HomeController.java @@ -172,6 +172,9 @@ public String authenticate(Map model, HttpServletRequest request model.put("i18n_EN", i18nService.generateMessages(Locale.ENGLISH)); model.put("operationHash", operationSessionService.generateOperationHash(operationId)); model.put("showAndroidSecurityWarning", webFlowConfig.getShowAndroidSecurityWarning()); + model.put("usernameMaxLength", webFlowConfig.getUsernameMaxLength()); + model.put("passwordMaxLength", webFlowConfig.getPasswordMaxLength()); + model.put("smsOtpMaxLength", webFlowConfig.getSmsOtpMaxLength()); logger.info("The /authenticate request succeeded"); return "index"; } diff --git a/powerauth-webflow/src/main/js/components/login.js b/powerauth-webflow/src/main/js/components/login.js index db2ec83db..ac5b1a1ca 100644 --- a/powerauth-webflow/src/main/js/components/login.js +++ b/powerauth-webflow/src/main/js/components/login.js @@ -230,11 +230,11 @@ export default class Login extends React.Component { ) } - - diff --git a/powerauth-webflow/src/main/js/components/loginSca.js b/powerauth-webflow/src/main/js/components/loginSca.js index bd4e7c437..ad68717e0 100644 --- a/powerauth-webflow/src/main/js/components/loginSca.js +++ b/powerauth-webflow/src/main/js/components/loginSca.js @@ -221,7 +221,7 @@ export default class LoginSca extends React.Component { ) } - diff --git a/powerauth-webflow/src/main/js/components/smsComponent.js b/powerauth-webflow/src/main/js/components/smsComponent.js index 22453ccbc..ddb3011e4 100644 --- a/powerauth-webflow/src/main/js/components/smsComponent.js +++ b/powerauth-webflow/src/main/js/components/smsComponent.js @@ -96,7 +96,7 @@ export default class SmsComponent extends React.Component {

@@ -112,7 +112,7 @@ export default class SmsComponent extends React.Component {
- +
diff --git a/powerauth-webflow/src/main/resources/application.properties b/powerauth-webflow/src/main/resources/application.properties index 5d04da53d..b789d1569 100644 --- a/powerauth-webflow/src/main/resources/application.properties +++ b/powerauth-webflow/src/main/resources/application.properties @@ -79,6 +79,11 @@ powerauth.webflow.afs.forceIpv4=true powerauth.webflow.afs.tm.cookies.deviceTag= powerauth.webflow.afs.tm.cookies.sessionSid= +# User input validation +powerauth.webflow.input.username.maxLength=256 +powerauth.webflow.input.password.maxLength=256 +powerauth.webflow.input.smsOtp.maxLength=8 + # Disable JMX spring.jmx.enabled=false diff --git a/powerauth-webflow/src/main/resources/templates/index.html b/powerauth-webflow/src/main/resources/templates/index.html index 4df402d15..8fd9bf084 100644 --- a/powerauth-webflow/src/main/resources/templates/index.html +++ b/powerauth-webflow/src/main/resources/templates/index.html @@ -27,6 +27,9 @@ var csrf = {headerName: [[${_csrf.headerName}]], token: [[${_csrf.token}]]}; var operationHash = [[${operationHash}]]; + var usernameMaxLength = [[${usernameMaxLength}]]; + var passwordMaxLength = [[${passwordMaxLength}]]; + var smsOtpMaxLength = [[${smsOtpMaxLength}]]; var showAndroidSecurityWarning = [[${showAndroidSecurityWarning}]]; window.onbeforeunload = function() { // Modern browsers do not allow custom messages, so text will be only shown in old browsers. From d9784d47db49db60777f53cc2d7c5baa6c315f43 Mon Sep 17 00:00:00 2001 From: Roman Strobl Date: Mon, 16 Dec 2019 20:28:56 +0100 Subject: [PATCH 179/197] Fix #596: Consent screen should allow longer consent texts --- .../src/main/resources/static/css/main.css | 2 +- .../src/main/resources/templates/home.html | 2 +- .../WebFlowServerConfiguration.java | 14 ++++++++ .../webflow/controller/HomeController.java | 1 + .../src/main/js/actions/consentActions.js | 7 ++-- .../src/main/js/components/app.js | 2 +- .../src/main/js/components/consent.js | 34 +++++++++++++++++-- .../src/main/resources/application.properties | 3 ++ .../src/main/resources/templates/index.html | 1 + 9 files changed, 58 insertions(+), 8 deletions(-) diff --git a/powerauth-webflow-client/src/main/resources/static/css/main.css b/powerauth-webflow-client/src/main/resources/static/css/main.css index eb5ec3e23..d2744d631 100644 --- a/powerauth-webflow-client/src/main/resources/static/css/main.css +++ b/powerauth-webflow-client/src/main/resources/static/css/main.css @@ -197,6 +197,6 @@ a { float: left; } -.auhtorized { +.authorized { padding: 50px 0; } \ No newline at end of file diff --git a/powerauth-webflow-client/src/main/resources/templates/home.html b/powerauth-webflow-client/src/main/resources/templates/home.html index c328ff53b..222abeccc 100644 --- a/powerauth-webflow-client/src/main/resources/templates/home.html +++ b/powerauth-webflow-client/src/main/resources/templates/home.html @@ -38,7 +38,7 @@

-
+

Operation authorized by user display name! diff --git a/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/configuration/WebFlowServerConfiguration.java b/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/configuration/WebFlowServerConfiguration.java index 84ed63886..a7ca74112 100644 --- a/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/configuration/WebFlowServerConfiguration.java +++ b/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/configuration/WebFlowServerConfiguration.java @@ -80,6 +80,12 @@ public class WebFlowServerConfiguration { @Value("${powerauth.webflow.afs.enabled:false}") private boolean afsEnabled; + /** + * Configuration of limit for large consent panel in number of characters. + */ + @Value("${powerauth.webflow.consent.large.limit:750}") + private int limitLargeConsentPanel; + /** * Get custom external stylesheet URL. * @@ -146,4 +152,12 @@ public boolean getShowAndroidSecurityWarning() { public boolean isAfsEnabled() { return afsEnabled; } + + /** + * Get limit of characters for displaying large consent panel. + * @return Limit of characters for displaying large consent panel. + */ + public int getLimitLargeConsentPanel() { + return limitLargeConsentPanel; + } } diff --git a/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/controller/HomeController.java b/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/controller/HomeController.java index f4592c00e..200b0e783 100644 --- a/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/controller/HomeController.java +++ b/powerauth-webflow/src/main/java/io/getlime/security/powerauth/app/webflow/controller/HomeController.java @@ -165,6 +165,7 @@ public String authenticate(Map model, HttpServletRequest request model.putIfAbsent("afs_js_snippet_url", ""); model.put("title", webFlowConfig.getPageTitle()); + model.put("limitLargeConsentPanel", webFlowConfig.getLimitLargeConsentPanel()); model.put("stylesheet", webFlowConfig.getCustomStyleSheetUrl()); model.put("lang", LocaleContextHolder.getLocale().getLanguage()); // JSON objects with i18n messages are inserted into the model to provide localization for the frontend diff --git a/powerauth-webflow/src/main/js/actions/consentActions.js b/powerauth-webflow/src/main/js/actions/consentActions.js index 63b642ce2..8f77d3aa7 100644 --- a/powerauth-webflow/src/main/js/actions/consentActions.js +++ b/powerauth-webflow/src/main/js/actions/consentActions.js @@ -65,7 +65,7 @@ export function init() { * Perform SMS authentication. * @returns {Function} No return value. */ -export function authenticate(options) { +export function authenticate(options, callback) { return function (dispatch) { axios.post("./api/auth/consent/authenticate", { options @@ -76,10 +76,12 @@ export function authenticate(options) { }).then((response) => { switch (response.data.result) { case 'CONFIRMED': { + callback(); dispatchAction(dispatch, response); break; } case 'CANCELED': { + callback(); dispatch({ type: "SHOW_SCREEN_ERROR", payload: { @@ -117,13 +119,14 @@ export function authenticate(options) { * Cancel operation. * @returns {Function} No return value. */ -export function cancel() { +export function cancel(callback) { return function (dispatch) { axios.post("./api/auth/consent/cancel", {}, { headers: { 'X-OPERATION-HASH': operationHash, } }).then((response) => { + callback(); dispatch({ type: "SHOW_SCREEN_ERROR", payload: { diff --git a/powerauth-webflow/src/main/js/components/app.js b/powerauth-webflow/src/main/js/components/app.js index 62a6927d2..31f84c501 100644 --- a/powerauth-webflow/src/main/js/components/app.js +++ b/powerauth-webflow/src/main/js/components/app.js @@ -113,7 +113,7 @@ export class App extends React.Component { )}

-
+

#rUOA)i@2RkY1Z?w}8m-UtPvOPa;o<`E_N$ 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 literal 0 HcmV?d00001 diff --git a/docs/img/authorization_success.png b/docs/img/authorization_success.png new file mode 100644 index 0000000000000000000000000000000000000000..0917bf58d0cf6622a64e39da18ff90518adb294c GIT binary patch literal 155009 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�d^s@!Dm%^d8r$Z9Ys-ONRQc;%0g~R@duLa6(z7@3-qTyYTLY@77hmA} zJ8s4r38NF+WSFX5V!@VTRYQiN9~Fd}ssUFnXLP}Xj!Ai2genJ1Un88u@vz54ro?9b z7WqS@8lgQi5L)D*awf=F2kl2#;=;qw5TOKv^gVg)qs=@hXg^EJeyXDc-zLBVZ%^|Qz_<7^|_#s`op>*iGUd@uXV z{T`>iRkBRIajXcSFYHhHwKh`p<|y*1Tgq_dqhfpwBE?8$?}OQMQH z0K%9KznaG*JNm%tmjSN}e1qj`7Fo?U9jhmQ3g^H43px>My-s)G(R{yrRch71p$xPPr_lfgTuqv*V5|es;WedgtLtfMknB3IRg2psdC>`G7mNmE;%IfOr!7N=t@HE>HW>iEK z0Ev)YNF6CZ%WYOWYxx7D%3<2xBfz8i)a@sMJU}SOIupazQJb-^oVNA8op-636&7khlF!J5Lh74fi$j;C@;5)c~ zj4f+LMW}c<{MGEe2is~>m%cUL|Lr$_lv=<|?3Ppqd9*&l7!1nJ0;Rjvrk>>CL*Hr? zxBrO|14X3~IMgx_j8?uB8ZE(}KLYFAS#O}#qj6&hU!KZSLjgHRdc_g*gN2M7f~bM$ z_*eeYc3b%t97WY|-(MNT{@cL}3s)mcaL?{bS~%M5v_25Z6=l9jQDC_q*P*&6ck8NyknFR{S`Kir^r`~9@F;z)a+h&(&d>EhPgrV<_6)nWp z*kq8}7>UW+Oyv5YXj+yN7PsGOXy=jK1ncVjaar?XTlc8O&P(dYS!{~K>fs2bLI?9^=Fkduwp&?t+O{}({E}Dz zp9%{o+TuJ8x1H2NFPYKq2Yp?wvf*FK+$7WS%T6lGEX z?%LP_d$Jn4TgO!1<1p)C^=tx|(8Gprknq3vAO#=bKG<%nj7rJVNN3h3x8){K zxxNeixurT@8L;J}uBwYITBm-8TZpD!Gft%�i+aKZ?}2aE+Usm3;}ij0=4}gdpiZ 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 M07*qoM6N<$f+{}piU0rr literal 0 HcmV?d00001 diff --git a/docs/img/backend_error.png b/docs/img/backend_error.png new file mode 100644 index 0000000000000000000000000000000000000000..91dfd988e628659d00b54caa97227023c7d2148e GIT binary patch literal 113801 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