Mobile app crash after two request (password and 2FA)

Checklist
I have read intro post: https://community.passbolt.com/t/about-the-installation-issues-category/12
I have read the tutorials, help and searched for similar issues
I provide relevant information about my server (component names and versions, etc.)
I provide a copy of my logs and healthcheck
I describe the steps I have taken to trouble shoot the problem
I describe the steps on how to reproduce the issue

Hi all,

I have installed Passbolt community on an Ubuntu server, with Let’s encrypt certificate.All works correctly on browser in Windows computer, but mobile app crash when I try to login.

After qrcode, the app requests password → 2FA, then requests password again → 2FA and crash.

This is the log:Device:

samsung SM-G975FAndroid 12 (31)Passbolt 2.4.0-43

11:37:56 [Session] Passphrase cache cleared
11:37:56 [Session] Passphrase cached
11:37:56 Getting server pgp and rsa keys

11:37:56 Getting server pgp and rsa keys succeeded
11:37:56 Checking if time adjustment is needed
11:37:56 Local time sync needed. Adjusted: 1
11:37:56 Verifying server fingerprint
11:37:56 Server key fingerprint is valid
11:37:56 Preparing sign in challenge
11:37:57 Prepared sign in challenge
11:37:57 Signing in

11:37:57 Sign in success
11:37:57 Decrypting challenge.
11:37:57 Challenge decrypted successfully
11:37:57 Verifying challenge
11:37:57 Challenge verified with success
11:37:57 Checking MFA status
11:37:57 MFA required
11:38:00 Checking biometry state
11:38:07 Checking biometry state
11:38:10 Verifying TOTP

11:38:10 MFA succeeded
11:38:10 Authentication success
11:38:10 Uncaught exception in thread: main
java.lang.IllegalArgumentException: Required value was null.
at

This is healthcheck:

Healthcheck shell

If you want to have more information about the different checks, please take a look at the documentation: https://www.passbolt.com/docs/admin/server-maintenance/passbolt-api-status/

Environment

[WARN] Cannot detect your system distribution details.
[HELP] See uname -a.
[PASS] PHP version 8.3.6.
[PASS] PHP version is 8.2 or above.
[PASS] 64-bit architecture system detected.
[WARN] Cannot detect your gpg or libgcrypt version.
[HELP] See gpg --version | grep gpg and gpg --version | grep libgcrypt.
[PASS] PCRE compiled with unicode support.
[PASS] Mbstring extension is installed.
[PASS] Intl extension is installed.
[PASS] GD or Imagick extension is installed.
[PASS] The temporary directory and its content are writable and not executable.
[PASS] The logs directory /var/log/passbolt/ and its content are writable.
[WARN] System clock and NTP service information cannot be found.
[HELP] See timedatectl | grep -i -A 1 clock. More information: https://www.passbolt.com/docs/hosting/configure/ntp/

Config files

[PASS] The application config file is present
[PASS] The passbolt config file is present

Core config

[PASS] Cache is working.
[PASS] Debug mode is off.
[PASS] Unique value set for security.salt
[PASS] Full base url is set to https …
[PASS] App.fullBaseUrl validation OK.
[PASS] /healthcheck/status is reachable.

SSL Certificate

[PASS] SSL peer certificate validates.
[PASS] Hostname is matching in SSL certificate.
[PASS] Not using a self-signed certificate.

SMTP settings

[PASS] The SMTP Settings plugin is enabled.
[PASS] SMTP Settings coherent. You may send a test email to validate them.
[PASS] The SMTP Settings source is: database.
[WARN] The SMTP Settings plugin endpoints are enabled.
[HELP] It is recommended to disable the plugin endpoints.
[HELP] Set the PASSBOLT_SECURITY_SMTP_SETTINGS_ENDPOINTS_DISABLED environment variable to true.
[HELP] Or set passbolt.security.smtpSettings.endpointsDisabled to true in /etc/passbolt/passbolt.php.
[PASS] No custom SSL configuration for SMTP server.

JWT Authentication

[PASS] The JWT Authentication plugin is enabled.
[PASS] The /etc/passbolt/jwt/ directory is not writable.
[PASS] A valid JWT key pair was found.

GPG Configuration

[PASS] PHP GPG Module is installed and loaded.
[PASS] The environment variable GNUPGHOME is set to /var/lib/passbolt/.gnupg.
[PASS] The directory /var/lib/passbolt/.gnupg containing the keyring is writable by the webserver user.
[PASS] The server OpenPGP key is not the default one.
[PASS] The public key file is defined in /etc/passbolt/passbolt.php and readable.
[PASS] The private key file is defined in /etc/passbolt/passbolt.php and readable.
[PASS] The server key fingerprint matches the one defined in /etc/passbolt/passbolt.php.
[PASS] The server public key defined in the /etc/passbolt/passbolt.php (or environment variables) is in the keyring.
[PASS] There is a valid email id defined for the server key.
[PASS] The public key can be used to encrypt a message.
[PASS] The private key can be used to sign a message.
[PASS] The public and private keys can be used to encrypt and sign a message.
[PASS] The private key can be used to decrypt a message.
[PASS] The private key can be used to decrypt and verify a message.
[PASS] The public key can be used to verify a signature.
[PASS] The server public key format is Gopengpg compatible.
[PASS] The server private key format is Gopengpg compatible.

Application configuration

[PASS] Using latest passbolt version (5.6.1).
[PASS] Passbolt is configured to force SSL use.
[PASS] App.fullBaseUrl is set to HTTPS.
[PASS] Selenium API endpoints are disabled.
[PASS] Search engine robots are told not to index content.
[INFO] The Self Registration plugin is enabled.
[INFO] Registration is closed, only administrators can add users.
[PASS] The deprecated self registration public setting was not found in /etc/passbolt/passbolt.php.
[WARN] Host availability checking is disabled.
[HELP] Make sure this instance is not publicly available on the internet.
[HELP] Or set the PASSBOLT_EMAIL_VALIDATE_MX environment variable to true.
[HELP] Or set validate mx to true in /etc/passbolt/passbolt.php.
[PASS] Serving the compiled version of the javascript app.
[WARN] Some email notifications are disabled by the administrator.
[PASS] The database schema is up to date.

Database

[PASS] The application is able to connect to the database
[PASS] 34 tables found.
[PASS] Some default content is present.

Metadata

[FAIL] No server metadata private key found.
[FAIL] No active metadata key found.
[PASS] The server has access to the metadata keys or does not require access to it.
[PASS] The server metadata private key is valid.

[FAIL] 2 error(s) found. Hang in there!

Thanks to all,Luca

This is log error complete in the app:

11:38:10 Uncaught exception in thread: main
java.lang.IllegalArgumentException: Required value was null.
at com.passbolt.mobile.android.feature.authentication.auth.presenter.SignInPresenter.signInSuccess(SourceFile:225)
at com.passbolt.mobile.android.feature.authentication.auth.presenter.SignInPresenter.mfaSucceeded(SourceFile:219)
at com.passbolt.mobile.android.feature.authentication.auth.AuthFragment.totpVerificationSucceeded(SourceFile:499)
at com.passbolt.mobile.android.feature.authentication.mfa.totp.EnterTotpDialog.notifyVerificationSucceeded(SourceFile:215)
at com.passbolt.mobile.android.feature.authentication.mfa.totp.EnterTotpPresenter.otpSuccess(SourceFile:78)
at com.passbolt.mobile.android.feature.authentication.mfa.totp.EnterTotpPresenter.access$otpSuccess(SourceFile:14)
at com.passbolt.mobile.android.feature.authentication.mfa.totp.EnterTotpPresenter$otpEntered$1.invokeSuspend(SourceFile:52)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(SourceFile:33)
at kotlinx.coroutines.DispatchedTask.run(SourceFile:101)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:226)
at android.os.Looper.loop(Looper.java:313)
at android.app.ActivityThread.main(ActivityThread.java:8751)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135)
Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [StandaloneCoroutine{Cancelling}@379c608, Dispatchers.Main]

java.lang.IllegalArgumentException: Required value was null.
at com.passbolt.mobile.android.feature.authentication.auth.presenter.SignInPresenter.signInSuccess(SourceFile:225)
at com.passbolt.mobile.android.feature.authentication.auth.presenter.SignInPresenter.mfaSucceeded(SourceFile:219)
at com.passbolt.mobile.android.feature.authentication.auth.AuthFragment.totpVerificationSucceeded(SourceFile:499)
at com.passbolt.mobile.android.feature.authentication.mfa.totp.EnterTotpDialog.notifyVerificationSucceeded(SourceFile:215)
at com.passbolt.mobile.android.feature.authentication.mfa.totp.EnterTotpPresenter.otpSuccess(SourceFile:78)
at com.passbolt.mobile.android.feature.authentication.mfa.totp.EnterTotpPresenter.access$otpSuccess(SourceFile:14)
at com.passbolt.mobile.android.feature.authentication.mfa.totp.EnterTotpPresenter$otpEntered$1.invokeSuspend(SourceFile:52)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(SourceFile:33)
at kotlinx.coroutines.DispatchedTask.run(SourceFile:101)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:226)
at android.os.Looper.loop(Looper.java:313)
at android.app.ActivityThread.main(ActivityThread.java:8751)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135)
Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [StandaloneCoroutine{Cancelling}@379c608, Dispatchers.Main]
11:38:22 File logging tree planted