Implement ArkoseLabs sign-in challenge
-
Review changes -
-
Download -
Patches
-
Plain diff
What does this MR do and why?
This adds ArkoseLabs' challenge to the sign-in form.
Screenshots or screen recordings
Screen recording |
---|
arkose_ux_v4_480p |
ArkoseLabs failure | Submitting form without completing the challenge |
---|---|
![]() |
![]() |
How to set up and validate locally
-
Set the
ARKOSE_LABS_PUBLIC_KEY
environment variable:export ARKOSE_LABS_PUBLIC_KEY="9F5BDFCD-E895-43B5-8D96-B24E0107B685"
-
Restart the GDK in the same terminal you've set the
ARKOSE_LABS_PUBLIC_KEY
environment variable:gdk restart
-
Enable the
:arkose_labs_login_challenge
feature flag.echo "Feature.enable(:arkose_labs_login_challenge)" | rails c
-
Sign out of your instance (or open an incognito browser window) and navigate to the login form at
/users/sign_in
. -
Type a username in the form's top field.
- If the user is considered safe based on the criteria, or if it doesn't exist, no challenge should appear when the field loses the focus.
- Otherwise, an Arkose challenge should show up.
Forcing ArkoseLabs challenge's behavior
By following the instructions above, you're relying on ArkoseLabs' decisions on whether or not a challenge should appear. You might want to force it into specific decisions to be able to test all possible outcomes. The setConfig
call can be modified to include a data.id
property to request specific behaviors:
-
'ML_defence'
forces a challenge to appear. -
'customer_request'
results in a suppressed challenge (meaning ArkoseLabs considers your session safe).
Apply the following patch to force a challenge to show up:
diff --git a/ee/app/assets/javascripts/arkose_labs/components/sign_in_arkose_app.vue b/ee/app/assets/javascripts/arkose_labs/components/sign_in_arkose_app.vue
index e9396c26c7d..e6788acbf02 100644
--- a/ee/app/assets/javascripts/arkose_labs/components/sign_in_arkose_app.vue
+++ b/ee/app/assets/javascripts/arkose_labs/components/sign_in_arkose_app.vue
@@ -132,6 +132,7 @@ export default {
const enforcement = await initArkoseLabsScript({ publicKey: this.publicKey });
enforcement.setConfig({
+ data: { id: 'ML_defence' },
mode: 'inline',
selector: `.${this.arkoseContainerClass}`,
onShown: this.onArkoseLabsIframeShown,
Or this patch to simulate a suppressed challenge:
diff --git a/ee/app/assets/javascripts/arkose_labs/components/sign_in_arkose_app.vue b/ee/app/assets/javascripts/arkose_labs/components/sign_in_arkose_app.vue
index e9396c26c7d..88da1bbd3a1 100644
--- a/ee/app/assets/javascripts/arkose_labs/components/sign_in_arkose_app.vue
+++ b/ee/app/assets/javascripts/arkose_labs/components/sign_in_arkose_app.vue
@@ -132,6 +132,7 @@ export default {
const enforcement = await initArkoseLabsScript({ publicKey: this.publicKey });
enforcement.setConfig({
+ data: { id: 'customer_request' },
mode: 'inline',
selector: `.${this.arkoseContainerClass}`,
onShown: this.onArkoseLabsIframeShown,
MR acceptance checklist
This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.
-
I have evaluated the MR acceptance checklist for this MR.
Merge request reports
- version 354dbebbbe
- version 34aa86f5db
- version 33465cca4b
- version 32733779c3
- version 313000aa17
- version 30ccd69d82
- version 29d0b50214
- version 2869e7cf0f
- version 272a289edd
- version 264bc6a198
- version 25ce76f64d
- version 24885f9838
- version 232a289edd
- version 228d1bce49
- version 210bc0f7ae
- version 20b154a527
- version 194fe3b324
- version 188881068e
- version 17cb0164ce
- version 163bbe3031
- version 159fa211c0
- version 146b238526
- version 13c8bf361a
- version 12bd16feed
- version 112d0134df
- version 10e717aead
- version 916c829f1
- version 851dd1818
- version 79cbb5184
- version 6a7972915
- version 50a56d041
- version 461dcc2f4
- version 345742059
- version 211c7ab4d
- version 108dfc3fa
- master (base)
- latest version7ecc4b6615 commits,
- version 354dbebbbe15 commits,
- version 34aa86f5db12 commits,
- version 33465cca4b12 commits,
- version 32733779c312 commits,
- version 313000aa1712 commits,
- version 30ccd69d8212 commits,
- version 29d0b5021411 commits,
- version 2869e7cf0f10 commits,
- version 272a289edd9 commits,
- version 264bc6a19810 commits,
- version 25ce76f64d10 commits,
- version 24885f983810 commits,
- version 232a289edd9 commits,
- version 228d1bce499 commits,
- version 210bc0f7ae8 commits,
- version 20b154a5277 commits,
- version 194fe3b3244 commits,
- version 188881068e19 commits,
- version 17cb0164ce18 commits,
- version 163bbe303117 commits,
- version 159fa211c017 commits,
- version 146b23852617 commits,
- version 13c8bf361a14 commits,
- version 12bd16feed7 commits,
- version 112d0134df6 commits,
- version 10e717aead5 commits,
- version 916c829f12 commits,
- version 851dd18182 commits,
- version 79cbb51841 commit,
- version 6a79729151 commit,
- version 50a56d0414 commits,
- version 461dcc2f43 commits,
- version 3457420593 commits,
- version 211c7ab4d2 commits,
- version 108dfc3fa1 commit,
- Side-by-side
- Inline