Skip to content

Commit 98929de

Browse files
committed
AC-10982::[2FA] Integrate with Duo Web SDK to support Universal Prompt-fixes for unit static and integration tests
1 parent 56a445f commit 98929de

File tree

15 files changed

+141
-125
lines changed

15 files changed

+141
-125
lines changed

TwoFactorAuth/Controller/Adminhtml/Duo/Authpost.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,8 @@ public function execute()
143143

144144
return $this->_redirect('*/*/auth');
145145
}
146+
147+
return $this->_redirect('*/*/auth');
146148
}
147149

148150
/**

TwoFactorAuth/Model/Provider/Engine/DuoSecurity.php

Lines changed: 2 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010

1111
use Magento\Framework\App\Config\ScopeConfigInterface;
1212
use Magento\Framework\DataObject;
13-
use Magento\Framework\Encryption\EncryptorInterface;
1413
use Magento\Framework\UrlInterface;
1514
use Magento\User\Api\Data\UserInterface;
1615
use Magento\TwoFactorAuth\Api\EngineInterface;
@@ -27,21 +26,6 @@ class DuoSecurity implements EngineInterface
2726
*/
2827
public const CODE = 'duo_security'; // Must be the same as defined in di.xml
2928

30-
/**
31-
* Duo request prefix
32-
*/
33-
public const DUO_PREFIX = 'TX';
34-
35-
/**
36-
* Duo auth prefix
37-
*/
38-
public const AUTH_PREFIX = 'AUTH';
39-
40-
/**
41-
* Duo auth suffix
42-
*/
43-
public const AUTH_SUFFIX = 'DUOAUTH';
44-
4529
/**
4630
* Configuration XML path for enabled flag
4731
*/
@@ -92,33 +76,25 @@ class DuoSecurity implements EngineInterface
9276
*/
9377
private $duoAuth;
9478

95-
/**
96-
* @var EncryptorInterface
97-
*/
98-
private $encryptor;
99-
10079
/**
10180
* @var UrlInterface
10281
*/
10382
private $urlBuilder;
10483

10584
/**
10685
* @param ScopeConfigInterface $scopeConfig
107-
* @param EncryptorInterface $encryptor
10886
* @param UrlInterface $urlBuilder
10987
* @param Client|null $client
11088
* @param DuoAuth|null $duoAuth
11189
* @throws \Duo\DuoUniversal\DuoException
11290
*/
11391
public function __construct(
11492
ScopeConfigInterface $scopeConfig,
115-
EncryptorInterface $encryptor,
11693
UrlInterface $urlBuilder,
11794
Client $client = null,
11895
DuoAuth $duoAuth = null
11996
) {
12097
$this->scopeConfig = $scopeConfig;
121-
$this->encryptor = $encryptor;
12298
$this->urlBuilder = $urlBuilder;
12399
if ($this->isDuoForcedProvider()) {
124100
$this->client = $client ?? new Client(
@@ -152,9 +128,7 @@ public function getApiHostname(): string
152128
*/
153129
private function getClientSecret(): string
154130
{
155-
return $this->encryptor->decrypt(
156-
$this->scopeConfig->getValue(static::XML_PATH_CLIENT_SECRET)
157-
);
131+
return $this->scopeConfig->getValue(static::XML_PATH_CLIENT_SECRET);
158132
}
159133

160134
/**
@@ -218,7 +192,7 @@ public function verify(UserInterface $user, DataObject $request): bool
218192
try {
219193
// Not saving token as this is for verification purpose
220194
$this->client->exchangeAuthorizationCodeFor2FAResult($duoCode, $username);
221-
} catch (LocalizedException $e) {
195+
} catch (DuoException $e) {
222196
return false;
223197
}
224198
# Exchange happened successfully so render success page

TwoFactorAuth/Test/Integration/Block/ChangeProviderTest.php

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,10 @@ protected function setUp(): void
7272
/**
7373
* @magentoConfigFixture default/twofactorauth/general/force_providers authy,duo_security
7474
* @magentoConfigFixture default/twofactorauth/authy/api_key abc123
75+
* @magentoConfigFixture default/twofactorauth/duo/client_id ABCDEFGHIJKLMNOPQRST
76+
* @magentoConfigFixture default/twofactorauth/duo/client_secret abcdefghijklmnopqrstuvwxyz0123456789abcd
7577
* @magentoConfigFixture default/twofactorauth/duo/integration_key abc123
76-
* @magentoConfigFixture default/twofactorauth/duo/api_hostname abc123
78+
* @magentoConfigFixture default/twofactorauth/duo/api_hostname test.duosecurity.com
7779
* @magentoConfigFixture default/twofactorauth/duo/secret_key abc123
7880
*/
7981
public function testBlockRendersWithActiveProviders(): void
@@ -94,8 +96,10 @@ function ($item) {
9496
/**
9597
* @magentoConfigFixture default/twofactorauth/general/force_providers authy,duo_security
9698
* @magentoConfigFixture default/twofactorauth/authy/api_key abc123
99+
* @magentoConfigFixture default/twofactorauth/duo/client_id ABCDEFGHIJKLMNOPQRST
100+
* @magentoConfigFixture default/twofactorauth/duo/client_secret abcdefghijklmnopqrstuvwxyz0123456789abcd
97101
* @magentoConfigFixture default/twofactorauth/duo/integration_key abc123
98-
* @magentoConfigFixture default/twofactorauth/duo/api_hostname abc123
102+
* @magentoConfigFixture default/twofactorauth/duo/api_hostname test.duosecurity.com
99103
* @magentoConfigFixture default/twofactorauth/duo/secret_key abc123
100104
*/
101105
public function testBlockRendersWhenCurrentProviderIsActivated(): void
@@ -111,8 +115,10 @@ public function testBlockRendersWhenCurrentProviderIsActivated(): void
111115
/**
112116
* @magentoConfigFixture default/twofactorauth/general/force_providers authy,duo_security
113117
* @magentoConfigFixture default/twofactorauth/authy/api_key abc123
118+
* @magentoConfigFixture default/twofactorauth/duo/client_id ABCDEFGHIJKLMNOPQRST
119+
* @magentoConfigFixture default/twofactorauth/duo/client_secret abcdefghijklmnopqrstuvwxyz0123456789abcd
114120
* @magentoConfigFixture default/twofactorauth/duo/integration_key abc123
115-
* @magentoConfigFixture default/twofactorauth/duo/api_hostname abc123
121+
* @magentoConfigFixture default/twofactorauth/duo/api_hostname test.duosecurity.com
116122
* @magentoConfigFixture default/twofactorauth/duo/secret_key abc123
117123
*/
118124
public function testBlockRendersWhenCurrentProviderIsNotActivated(): void

TwoFactorAuth/Test/Integration/Block/ConfigureLaterTest.php

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,8 +83,10 @@ public function testGetPostData(): void
8383
/**
8484
* @magentoConfigFixture default/twofactorauth/general/force_providers authy,duo_security
8585
* @magentoConfigFixture default/twofactorauth/authy/api_key abc123
86+
* @magentoConfigFixture default/twofactorauth/duo/client_id ABCDEFGHIJKLMNOPQRST
87+
* @magentoConfigFixture default/twofactorauth/duo/client_secret abcdefghijklmnopqrstuvwxyz0123456789abcd
8688
* @magentoConfigFixture default/twofactorauth/duo/integration_key abc123
87-
* @magentoConfigFixture default/twofactorauth/duo/api_hostname abc123
89+
* @magentoConfigFixture default/twofactorauth/duo/api_hostname test.duosecurity.com
8890
* @magentoConfigFixture default/twofactorauth/duo/secret_key abc123
8991
*/
9092
public function testBlockRendersWithCurrentInactiveAndOneOtherActive(): void
@@ -99,8 +101,10 @@ public function testBlockRendersWithCurrentInactiveAndOneOtherActive(): void
99101

100102
/**
101103
* @magentoConfigFixture default/twofactorauth/general/force_providers duo_security
104+
* @magentoConfigFixture default/twofactorauth/duo/client_id ABCDEFGHIJKLMNOPQRST
105+
* @magentoConfigFixture default/twofactorauth/duo/client_secret abcdefghijklmnopqrstuvwxyz0123456789abcd
102106
* @magentoConfigFixture default/twofactorauth/duo/integration_key abc123
103-
* @magentoConfigFixture default/twofactorauth/duo/api_hostname abc123
107+
* @magentoConfigFixture default/twofactorauth/duo/api_hostname test.duosecurity.com
104108
* @magentoConfigFixture default/twofactorauth/duo/secret_key abc123
105109
*/
106110
public function testBlockDoesntRenderWithCurrentInactiveAndNoOtherActive(): void

TwoFactorAuth/Test/Integration/Controller/Adminhtml/Duo/AuthTest.php

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,11 @@ class AuthTest extends AbstractConfigureBackendController
3232
/**
3333
* @inheritDoc
3434
* @magentoConfigFixture default/twofactorauth/general/force_providers duo_security
35-
* @magentoConfigFixture default/twofactorauth/duo/integration_key duo_security
36-
* @magentoConfigFixture default/twofactorauth/duo/secret_key duo_security
37-
* @magentoConfigFixture default/twofactorauth/duo/api_hostname duo_security
35+
* @magentoConfigFixture default/twofactorauth/duo/client_id ABCDEFGHIJKLMNOPQRST
36+
* @magentoConfigFixture default/twofactorauth/duo/client_secret abcdefghijklmnopqrstuvwxyz0123456789abcd
37+
* @magentoConfigFixture default/twofactorauth/duo/integration_key abc123
38+
* @magentoConfigFixture default/twofactorauth/duo/api_hostname test.duosecurity.com
39+
* @magentoConfigFixture default/twofactorauth/duo/secret_key abc123
3840
* phpcs:disable Generic.CodeAnalysis.UselessOverridingMethod
3941
*/
4042
public function testTokenAccess(): void
@@ -45,9 +47,12 @@ public function testTokenAccess(): void
4547
/**
4648
* @inheritDoc
4749
* @magentoConfigFixture default/twofactorauth/general/force_providers duo_security
48-
* @magentoConfigFixture default/twofactorauth/duo/integration_key duo_security
49-
* @magentoConfigFixture default/twofactorauth/duo/secret_key duo_security
50-
* @magentoConfigFixture default/twofactorauth/duo/api_hostname duo_security
50+
* @magentoConfigFixture default/twofactorauth/duo/client_id ABCDEFGHIJKLMNOPQRST
51+
* @magentoConfigFixture default/twofactorauth/duo/client_secret abcdefghijklmnopqrstuvwxyz0123456789abcd
52+
* @magentoConfigFixture default/twofactorauth/duo/integration_key abc123
53+
* @magentoConfigFixture default/twofactorauth/duo/api_hostname test.duosecurity.com
54+
* @magentoConfigFixture default/twofactorauth/duo/secret_key abc123
55+
* @magentoConfigFixture default/twofactorauth/duo/duo_failmode open
5156
* phpcs:disable Generic.CodeAnalysis.UselessOverridingMethod
5257
*/
5358
public function testAclHasAccess()
@@ -58,9 +63,12 @@ public function testAclHasAccess()
5863
/**
5964
* @inheritDoc
6065
* @magentoConfigFixture default/twofactorauth/general/force_providers duo_security
61-
* @magentoConfigFixture default/twofactorauth/duo/integration_key duo_security
62-
* @magentoConfigFixture default/twofactorauth/duo/secret_key duo_security
63-
* @magentoConfigFixture default/twofactorauth/duo/api_hostname duo_security
66+
* @magentoConfigFixture default/twofactorauth/duo/client_id ABCDEFGHIJKLMNOPQRST
67+
* @magentoConfigFixture default/twofactorauth/duo/client_secret abcdefghijklmnopqrstuvwxyz0123456789abcd
68+
* @magentoConfigFixture default/twofactorauth/duo/integration_key abc123
69+
* @magentoConfigFixture default/twofactorauth/duo/api_hostname test.duosecurity.com
70+
* @magentoConfigFixture default/twofactorauth/duo/secret_key abc123
71+
* @magentoConfigFixture default/twofactorauth/duo/duo_failmode open
6472
* phpcs:disable Generic.CodeAnalysis.UselessOverridingMethod
6573
*/
6674
public function testAclNoAccess()

TwoFactorAuth/Test/Integration/Controller/Adminhtml/Duo/AuthpostTest.php

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,11 @@ protected function setUp(): void
4141
/**
4242
* @inheritDoc
4343
* @magentoConfigFixture default/twofactorauth/general/force_providers duo_security
44-
* @magentoConfigFixture default/twofactorauth/duo/integration_key duo_security
45-
* @magentoConfigFixture default/twofactorauth/duo/secret_key duo_security
46-
* @magentoConfigFixture default/twofactorauth/duo/api_hostname duo_security
44+
* @magentoConfigFixture default/twofactorauth/duo/client_id ABCDEFGHIJKLMNOPQRST
45+
* @magentoConfigFixture default/twofactorauth/duo/client_secret abcdefghijklmnopqrstuvwxyz0123456789abcd
46+
* @magentoConfigFixture default/twofactorauth/duo/integration_key abc123
47+
* @magentoConfigFixture default/twofactorauth/duo/api_hostname test.duosecurity.com
48+
* @magentoConfigFixture default/twofactorauth/duo/secret_key abc123
4749
*/
4850
public function testTokenAccess(): void
4951
{
@@ -55,9 +57,11 @@ public function testTokenAccess(): void
5557
/**
5658
* @inheritDoc
5759
* @magentoConfigFixture default/twofactorauth/general/force_providers duo_security
58-
* @magentoConfigFixture default/twofactorauth/duo/integration_key duo_security
59-
* @magentoConfigFixture default/twofactorauth/duo/secret_key duo_security
60-
* @magentoConfigFixture default/twofactorauth/duo/api_hostname duo_security
60+
* @magentoConfigFixture default/twofactorauth/duo/client_id ABCDEFGHIJKLMNOPQRST
61+
* @magentoConfigFixture default/twofactorauth/duo/client_secret abcdefghijklmnopqrstuvwxyz0123456789abcd
62+
* @magentoConfigFixture default/twofactorauth/duo/integration_key abc123
63+
* @magentoConfigFixture default/twofactorauth/duo/api_hostname test.duosecurity.com
64+
* @magentoConfigFixture default/twofactorauth/duo/secret_key abc123
6165
*/
6266
public function testAclHasAccess()
6367
{
@@ -70,9 +74,11 @@ public function testAclHasAccess()
7074
/**
7175
* @inheritDoc
7276
* @magentoConfigFixture default/twofactorauth/general/force_providers duo_security
73-
* @magentoConfigFixture default/twofactorauth/duo/integration_key duo_security
74-
* @magentoConfigFixture default/twofactorauth/duo/secret_key duo_security
75-
* @magentoConfigFixture default/twofactorauth/duo/api_hostname duo_security
77+
* @magentoConfigFixture default/twofactorauth/duo/client_id ABCDEFGHIJKLMNOPQRST
78+
* @magentoConfigFixture default/twofactorauth/duo/client_secret abcdefghijklmnopqrstuvwxyz0123456789abcd
79+
* @magentoConfigFixture default/twofactorauth/duo/integration_key abc123
80+
* @magentoConfigFixture default/twofactorauth/duo/api_hostname test.duosecurity.com
81+
* @magentoConfigFixture default/twofactorauth/duo/secret_key abc123
7682
*/
7783
public function testAclNoAccess()
7884
{

TwoFactorAuth/Test/Integration/Controller/Adminhtml/Tfa/ConfigureLaterTest.php

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,10 @@ protected function setUp(): void
5555

5656
/**
5757
* @magentoConfigFixture default/twofactorauth/general/force_providers duo_security
58+
* @magentoConfigFixture default/twofactorauth/duo/client_id ABCDEFGHIJKLMNOPQRST
59+
* @magentoConfigFixture default/twofactorauth/duo/client_secret abcdefghijklmnopqrstuvwxyz0123456789abcd
5860
* @magentoConfigFixture default/twofactorauth/duo/integration_key abc123
59-
* @magentoConfigFixture default/twofactorauth/duo/api_hostname abc123
61+
* @magentoConfigFixture default/twofactorauth/duo/api_hostname test.duosecurity.com
6062
* @magentoConfigFixture default/twofactorauth/duo/secret_key abc123
6163
*/
6264
public function testNotAllowedWhenProviderAlreadyActivated(): void
@@ -73,8 +75,10 @@ public function testNotAllowedWhenProviderAlreadyActivated(): void
7375

7476
/**
7577
* @magentoConfigFixture default/twofactorauth/general/force_providers duo_security
78+
* @magentoConfigFixture default/twofactorauth/duo/client_id ABCDEFGHIJKLMNOPQRST
79+
* @magentoConfigFixture default/twofactorauth/duo/client_secret abcdefghijklmnopqrstuvwxyz0123456789abcd
7680
* @magentoConfigFixture default/twofactorauth/duo/integration_key abc123
77-
* @magentoConfigFixture default/twofactorauth/duo/api_hostname abc123
81+
* @magentoConfigFixture default/twofactorauth/duo/api_hostname test.duosecurity.com
7882
* @magentoConfigFixture default/twofactorauth/duo/secret_key abc123
7983
*/
8084
public function testNotAllowedWhenProviderNotActivatedButIsTheOnlyProvider(): void
@@ -91,8 +95,10 @@ public function testNotAllowedWhenProviderNotActivatedButIsTheOnlyProvider(): vo
9195
/**
9296
* @magentoConfigFixture default/twofactorauth/general/force_providers google,duo_security,authy
9397
* @magentoConfigFixture default/twofactorauth/authy/api_key abc123
98+
* @magentoConfigFixture default/twofactorauth/duo/client_id ABCDEFGHIJKLMNOPQRST
99+
* @magentoConfigFixture default/twofactorauth/duo/client_secret abcdefghijklmnopqrstuvwxyz0123456789abcd
94100
* @magentoConfigFixture default/twofactorauth/duo/integration_key abc123
95-
* @magentoConfigFixture default/twofactorauth/duo/api_hostname abc123
101+
* @magentoConfigFixture default/twofactorauth/duo/api_hostname test.duosecurity.com
96102
* @magentoConfigFixture default/twofactorauth/duo/secret_key abc123
97103
*/
98104
public function testSkippingAProvider(): void
@@ -110,8 +116,10 @@ public function testSkippingAProvider(): void
110116
/**
111117
* @magentoConfigFixture default/twofactorauth/general/force_providers duo_security,authy
112118
* @magentoConfigFixture default/twofactorauth/authy/api_key abc123
119+
* @magentoConfigFixture default/twofactorauth/duo/client_id ABCDEFGHIJKLMNOPQRST
120+
* @magentoConfigFixture default/twofactorauth/duo/client_secret abcdefghijklmnopqrstuvwxyz0123456789abcd
113121
* @magentoConfigFixture default/twofactorauth/duo/integration_key abc123
114-
* @magentoConfigFixture default/twofactorauth/duo/api_hostname abc123
122+
* @magentoConfigFixture default/twofactorauth/duo/api_hostname test.duosecurity.com
115123
* @magentoConfigFixture default/twofactorauth/duo/secret_key abc123
116124
*/
117125
public function testSkippingAllProvidersWhenThereAreNoneConfigured(): void

TwoFactorAuth/Test/Integration/Controller/Adminhtml/Tfa/IndexTest.php

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -115,8 +115,10 @@ public function testNotConfiguredWithSkipped(): void
115115
/**
116116
* @magentoConfigFixture default/twofactorauth/general/force_providers google,authy,duo_security
117117
* @magentoConfigFixture default/twofactorauth/authy/api_key abc123
118+
* @magentoConfigFixture default/twofactorauth/duo/client_id ABCDEFGHIJKLMNOPQRST
119+
* @magentoConfigFixture default/twofactorauth/duo/client_secret abcdefghijklmnopqrstuvwxyz0123456789abcd
118120
* @magentoConfigFixture default/twofactorauth/duo/integration_key abc123
119-
* @magentoConfigFixture default/twofactorauth/duo/api_hostname abc123
121+
* @magentoConfigFixture default/twofactorauth/duo/api_hostname test.duosecurity.com
120122
* @magentoConfigFixture default/twofactorauth/duo/secret_key abc123
121123
* @magentoDbIsolation enabled
122124
*/
@@ -134,8 +136,10 @@ public function testDefaultProviderIsUsedForAuth(): void
134136
/**
135137
* @magentoConfigFixture default/twofactorauth/general/force_providers google,authy,duo_security
136138
* @magentoConfigFixture default/twofactorauth/authy/api_key abc123
139+
* @magentoConfigFixture default/twofactorauth/duo/client_id ABCDEFGHIJKLMNOPQRST
140+
* @magentoConfigFixture default/twofactorauth/duo/client_secret abcdefghijklmnopqrstuvwxyz0123456789abcd
137141
* @magentoConfigFixture default/twofactorauth/duo/integration_key abc123
138-
* @magentoConfigFixture default/twofactorauth/duo/api_hostname abc123
142+
* @magentoConfigFixture default/twofactorauth/duo/api_hostname test.duosecurity.com
139143
* @magentoConfigFixture default/twofactorauth/duo/secret_key abc123
140144
* @magentoDbIsolation enabled
141145
*/
@@ -153,8 +157,10 @@ public function testFirstProviderIsUsedForAuthWithoutADefault(): void
153157
/**
154158
* @magentoConfigFixture default/twofactorauth/general/force_providers google,authy,duo_security
155159
* @magentoConfigFixture default/twofactorauth/authy/api_key abc123
160+
* @magentoConfigFixture default/twofactorauth/duo/client_id ABCDEFGHIJKLMNOPQRST
161+
* @magentoConfigFixture default/twofactorauth/duo/client_secret abcdefghijklmnopqrstuvwxyz0123456789abcd
156162
* @magentoConfigFixture default/twofactorauth/duo/integration_key abc123
157-
* @magentoConfigFixture default/twofactorauth/duo/api_hostname abc123
163+
* @magentoConfigFixture default/twofactorauth/duo/api_hostname test.duosecurity.com
158164
* @magentoConfigFixture default/twofactorauth/duo/secret_key abc123
159165
* @magentoDbIsolation enabled
160166
*/

TwoFactorAuth/Test/Integration/ControllerActionPredispatchTest.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,11 @@ public function testUnauthenticated(): void
104104
* Verify that users would be redirected to "2FA Config Request" page when 2FA is not configured for the app.
105105
*
106106
* @magentoConfigFixture default/twofactorauth/general/force_providers google,duo_security
107+
* @magentoConfigFixture default/twofactorauth/duo/client_id ABCDEFGHIJKLMNOPQRST
108+
* @magentoConfigFixture default/twofactorauth/duo/client_secret abcdefghijklmnopqrstuvwxyz0123456789abcd
109+
* @magentoConfigFixture default/twofactorauth/duo/integration_key abc123
110+
* @magentoConfigFixture default/twofactorauth/duo/api_hostname test.duosecurity.com
111+
* @magentoConfigFixture default/twofactorauth/duo/secret_key abc123
107112
* @return void
108113
*/
109114
public function testConfigRequested(): void
@@ -134,6 +139,11 @@ public function testUserConfigRequested(): void
134139
* Verify that users returning with a token from the E-mail get a new cookie with it.
135140
*
136141
* @magentoConfigFixture default/twofactorauth/general/force_providers google,duo_security
142+
* @magentoConfigFixture default/twofactorauth/duo/client_id ABCDEFGHIJKLMNOPQRST
143+
* @magentoConfigFixture default/twofactorauth/duo/client_secret abcdefghijklmnopqrstuvwxyz0123456789abcd
144+
* @magentoConfigFixture default/twofactorauth/duo/integration_key abc123
145+
* @magentoConfigFixture default/twofactorauth/duo/api_hostname test.duosecurity.com
146+
* @magentoConfigFixture default/twofactorauth/duo/secret_key abc123
137147
* @return void
138148
*/
139149
public function testCookieSet(): void

0 commit comments

Comments
 (0)