dani-garcia / vaultwarden

Unofficial Bitwarden compatible server written in Rust, formerly known as bitwarden_rs
GNU Affero General Public License v3.0
36.75k stars 1.78k forks source link

2024.8 Beta app, unable to log in or sync #4870

Closed turnah closed 3 days ago

turnah commented 3 weeks ago

Subject of the issue

Unable to sign into bitwarden app using version 2024.8.0 (beta) on android with 2FA.

Can confirm the webvault works as expected. no issues.

Attempted Yubikey, authenticator app code and email. Each one comes up with an error unable to validate.

Left the beta programme on android and rolled back to 2024.7.1 and all worked as expected.

Logging as a bug in case this is a breaking change on the android app - apologies if should be a discussion

Deployment environment

Steps to reproduce

Join android beta, install 2024.8.0 and try to sign in (self hosted)

Expected behaviour

2FA validates

Actual behaviour

2FA unable to validate

BlackDex commented 3 weeks ago

It works just fine for me. Please provide logs which are generated during these attempts and if possible screenshots maybe of what you see. Without that information we can't help.

Edit: I tested all options, WebAuthn (USB/NFC/Passkey via Other Bitwarden App), Fido2, Duo, Email and TOTP.

turnah commented 3 weeks ago

The only line from the log is: [2024-08-19 10:42:55.196][error][ERROR] 2FA token not provided

Which seems pretty standard, as this appears when the 2FA screen pops up (before submitting)

The exact error on the app is "An error has occurred. Invalid verification code"

Once i attempt to log in, for example using yubi key and i get the above message i immediately get an email to say new device was logged in.

To confirm, this is on a Pixel 8 pro running android 14 (latest security/play system update) and bitwarden app: Version 2024.8.0 com.x8bit.bitwarden.beta

I'm running this side by side now with 2024.7.1 com.xbit.bitwaren which works as expected

I also removed all 2FA from my account and the beta app signed in as expected. Added the 2FA again and same issue

BlackDex commented 3 weeks ago

I suspect that your reverse proxy is catching the error and returns it's own version.

The 2FA token not provided error contains a json which is used to provide all available 2FA options. As mentioned, it works fine for me, just tested all options a few minutes ago.

turnah commented 3 weeks ago

I see, i've found the logs in caddy (which is setup as per the wiki) and looks like it's returning a 400:

I've removed the url and changed ip's below:

{
    "level": "info",
    "ts": 1724066098.393086,
    "logger": "http.log.access.log0",
    "msg": "handled request",
    "request": {
        "remote_ip": "172.71.00.00",
        "remote_port": "61308",
        "client_ip": "172.71.00.00",
        "proto": "HTTP/2.0",
        "method": "POST",
        "host": "vw.xxx.uk",
        "uri": "/identity/connect/token",
        "headers": {
            "Cf-Ray": [
                "8b59b915bd498889-LHR"
            ],
            "Cf-Ipcountry": [
                "GB"
            ],
            "Accept-Encoding": [
                "gzip, br"
            ],
            "Cf-Connecting-Ip": [
                "94.196.000.000"
            ],
            "Auth-Email": [
                "ZXhhbXBsZUB2YXVsdHdhcmRlbi5kb21haW4udGxk"
            ],
            "User-Agent": [
                "Bitwarden_Mobile/2024.8.0 (Android 14; SDK 34; Model Pixel 8 Pro)"
            ],
            "Bitwarden-Client-Version": [
                "2024.8.0"
            ],
            "Content-Type": [
                "application/x-www-form-urlencoded"
            ],
            "Content-Length": [
                "352"
            ],
            "X-Forwarded-Proto": [
                "https"
            ],
            "Cf-Visitor": [
                "{\"scheme\":\"https\"}"
            ],
            "Bitwarden-Client-Name": [
                "mobile"
            ],
            "Device-Type": [
                "0"
            ],
            "Cdn-Loop": [
                "cloudflare"
            ],
            "X-Forwarded-For": [
                "94.196.000.000"
            ]
        },
        "tls": {
            "resumed": false,
            "version": 772,
            "cipher_suite": 4865,
            "proto": "h2",
            "server_name": "vw.xxx.uk"
        }
    },
    "bytes_read": 352,
    "user_id": "",
    "duration": 0.803423585,
    "size": 348,
    "status": 400,
    "resp_headers": {
        "Content-Security-Policy": [
            "default-src 'self'; base-uri 'self'; form-action 'self'; object-src 'self' blob:; script-src 'self' 'wasm-unsafe-eval'; style-src 'self' 'unsafe-inline'; child-src 'self' https://*.duosecurity.com https://*.duofederal.com; frame-src 'self' https://*.duosecurity.com https://*.duofederal.com; frame-ancestors 'self' chrome-extension://nngceckbapebfimnlniiiahkandclblb chrome-extension://jbkfoedolllekgbhcbcoahefnbanhhlh moz-extension://* ; img-src 'self' data: https://haveibeenpwned.com ; connect-src 'self' https://api.pwnedpasswords.com https://api.2fa.directory https://app.simplelogin.io/api/ https://app.addy.io/api/ https://api.fastmail.com/ https://api.forwardemail.net ;"
        ],
        "Cache-Control": [
            "no-cache, no-store, max-age=0"
        ],
        "X-Xss-Protection": [
            "0"
        ],
        "X-Frame-Options": [
            "SAMEORIGIN"
        ],
        "Referrer-Policy": [
            "same-origin"
        ],
        "X-Content-Type-Options": [
            "nosniff"
        ],
        "Server": [
            "Caddy",
            "Rocket"
        ],
        "Alt-Svc": [
            "h3=\":443\"; ma=2592000"
        ],
        "Date": [
            "Mon, 19 Aug 2024 11:14:58 GMT"
        ],
        "Content-Type": [
            "application/json"
        ],
        "Content-Length": [
            "348"
        ],
        "Permissions-Policy": [
            "accelerometer=(), ambient-light-sensor=(), autoplay=(), battery=(), camera=(), display-capture=(), document-domain=(), encrypted-media=(), execution-while-not-rendered=(), execution-while-out-of-viewport=(), fullscreen=(), geolocation=(), gyroscope=(), keyboard-map=(), magnetometer=(), microphone=(), midi=(), payment=(), picture-in-picture=(), screen-wake-lock=(), sync-xhr=(), usb=(), web-share=(), xr-spatial-tracking=()"
        ]
    }
}
BlackDex commented 3 weeks ago

A valid response to the client should look like below. Anything else will cause the clients to generate an error. So, for us to see what might be the issue the exact same as i provided below. I extracted this by using tcpflow -i any -C port 8080 which i run on the Vaultwarden host and i know this is forwarded 1:1 by my reverse proxy. But you need to know what the client receives.

HTTP:

POST /identity/connect/token HTTP/1.1
Connection: close
Host: vaultwarden.domain.tld
X-Real-IP: 111.222.333.444
X-Forwarded-For: 111.222.333.444
X-Forwarded-Proto: https
Content-Length: 238
auth-email: ZXhhbXBsZUB2YXVsdHdhcmRlbi5kb21haW4udGxk
user-agent: Bitwarden_Mobile/2024.8.0 (Android 14; SDK 34; Model Android 14)
bitwarden-client-name: mobile
bitwarden-client-version: 2024.8.0
device-type: 0
content-type: application/x-www-form-urlencoded
accept-encoding: gzip

scope=api%20offline_access&client_id=mobile&username=example%40vaultwarden.tld&password=EncRypTedPasSw0Rd&deviceIdentifier=11111111-aaaa-2222-bbbb-333333333333&deviceName=Android%2014&deviceType=0&grant_type=password
HTTP/1.1 400 Bad Request
content-type: application/json
server: Rocket
permissions-policy: accelerometer=(), ambient-light-sensor=(), autoplay=(), battery=(), camera=(), display-capture=(), document-domain=(), encrypted-media=(), execution-while-not-rendered=(), execution-while-out-of-viewport=(), fullscreen=(), geolocation=(), gyroscope=(), keyboard-map=(), magnetometer=(), microphone=(), midi=(), payment=(), picture-in-picture=(), screen-wake-lock=(), sync-xhr=(), usb=(), web-share=(), xr-spatial-tracking=()
x-content-type-options: nosniff
x-frame-options: SAMEORIGIN
referrer-policy: same-origin
x-xss-protection: 0
content-security-policy: default-src 'self'; base-uri 'self'; form-action 'self'; object-src 'self' blob:; script-src 'self' 'wasm-unsafe-eval'; style-src 'self' 'unsafe-inline'; child-src 'self' https://*.duosecurity.com https://*.duofederal.com; frame-src 'self' https://*.duosecurity.com https://*.duofederal.com; frame-ancestors 'self' chrome-extension://nngceckbapebfimnlniiiahkandclblb chrome-extension://jbkfoedolllekgbhcbcoahefnbanhhlh moz-extension://* ; img-src 'self' data: https://haveibeenpwned.com ; connect-src 'self' https://api.pwnedpasswords.com https://api.2fa.directory https://app.simplelogin.io/api/ https://app.addy.io/api/ https://api.fastmail.com/ https://api.forwardemail.net ;
cache-control: no-cache, no-store, max-age=0
date: Mon, 19 Aug 2024 12:35:40 GMT

Body:

{
    "MasterPasswordPolicy": {
        "Object": "masterPasswordPolicy"
    },
    "TwoFactorProviders": [
        "0",
        "1",
        "2",
        "3",
        "7"
    ],
    "TwoFactorProviders2": {
        "0": null,
        "1": {
            "Email": "ex*****@vaultwarden.tld"
        },
        "2": {
            "AuthUrl": "https://api-12345678.duosecurity.com/oauth/v1/authorize?response_type=code&client_id=xxxxx"
        },
        "3": {
            "Nfc": true
        },
        "7": {
            "allowCredentials": [
                {
                    "id": "123456789abcdefghijklmnopqrstuvwxyz123456789abcdefghijklmnopqrstuvwxyz123456789abcdefg",
                    "type": "public-key"
                },
                {
                    "id": "abcdefghijklmn-1234567",
                    "type": "public-key"
                }
            ],
            "challenge": "abcdefghijklmnopqrstuvwxyz1234567890abcdefg",
            "extensions": {
                "appid": "https://vaultwarden.domain.tld/app-id.json",
                "getCredBlob": false
            },
            "rpId": "vaultwarden.domain.tld",
            "timeout": 60000,
            "userVerification": "discouraged"
        }
    },
    "error": "invalid_grant",
    "error_description": "Two factor required."
}
BlackDex commented 3 weeks ago

Also, i see you are using Cloudflare, it might be that something there changes the response.

turnah commented 3 weeks ago

Here is the tcp flow result:

POST /identity/connect/token HTTP/1.1
Host: vw.xxx.uk
User-Agent: Bitwarden_Mobile/2024.8.0 (Android 14; SDK 34; Model Pixel 8 Pro)
Content-Length: 352
Accept-Encoding: gzip, br
Auth-Email: xxx
Bitwarden-Client-Name: mobile
Bitwarden-Client-Version: 2024.8.0
Cdn-Loop: cloudflare
Cf-Connecting-Ip: 94.196.000.000
Cf-Ipcountry: GB
Cf-Ray: 8b5a6ef52f7079c5-LHR
Cf-Visitor: {"scheme":"https"}
Content-Type: application/x-www-form-urlencoded
Device-Type: 0
X-Forwarded-For: 172.69.000.000
X-Forwarded-Host: vw.xxx.uk
X-Forwarded-Proto: https
X-Real-Ip: 94.196.000.000

scope=api%20offline_access&client_id=mobile&username=myemail.co.uk&password=12345678%12345678%2FW8NbvI%2BNDVLh%2BY%3D&deviceIdentifier=1234567-7787-43b6-1234-13904bc6a1e7&deviceName=Pixel%208%20Pro&deviceType=0&grant_type=password&twoFactorToken=asdfghjkl&twoFactorProvider=3&twoFactorRemember=1

HTTP/1.1 400 Bad Request
content-type: application/json
server: Rocket
permissions-policy: accelerometer=(), ambient-light-sensor=(), autoplay=(), battery=(), camera=(), display-capture=(), document-domain=(), encrypted-media=(), execution-while-not-rendered=(), execution-while-out-of-viewport=(), fullscreen=(), geolocation=(), gyroscope=(), keyboard-map=(), magnetometer=(), microphone=(), midi=(), payment=(), picture-in-picture=(), screen-wake-lock=(), sync-xhr=(), usb=(), web-share=(), xr-spatial-tracking=()
x-content-type-options: nosniff
x-frame-options: SAMEORIGIN
referrer-policy: same-origin
x-xss-protection: 0
content-security-policy: default-src 'self'; base-uri 'self'; form-action 'self'; object-src 'self' blob:; script-src 'self' 'wasm-unsafe-eval'; style-src 'self' 'unsafe-inline'; child-src 'self' https://*.duosecurity.com https://*.duofederal.com; frame-src 'self' https://*.duosecurity.com https://*.duofederal.com; frame-ancestors 'self' chrome-extension://nngceckbapebfimnlniiiahkandclblb chrome-extension://jbkfoedolllekgbhcbcoahefnbanhhlh moz-extension://* ; img-src 'self' data: https://haveibeenpwned.com ; connect-src 'self' https://api.pwnedpasswords.com https://api.2fa.directory https://app.simplelogin.io/api/ https://app.addy.io/api/ https://api.fastmail.com/ https://api.forwardemail.net ;
cache-control: no-cache, no-store, max-age=0
content-length: 348
date: Mon, 19 Aug 2024 13:19:07 GMT
{"error":"","errorModel":{"message":"Failed to verify Yubikey against OTP server","object":"error"},"error_description":"","exceptionMessage":null,"exceptionStackTrace":null,"innerExceptionMessage":null,"message":"Failed to verify Yubikey against OTP server","object":"error","validationErrors":{"":["Failed to verify Yubikey against OTP server"]}}
BlackDex commented 3 weeks ago

That specific error message looks like an issue with configuring the YubiKey settings. Validate the these settings, restart and test again. https://github.com/dani-garcia/vaultwarden/blob/669b9db7583327f506a94da03c3cbb6838c0062e/.env.template#L432-L438

BlackDex commented 3 weeks ago

Or, your Vaultwarden is not able to connect to the Yubi Server. Check your /admin/diagnostics page for details.

turnah commented 3 weeks ago

I've regenerated the yubi key, updated the confid and can log into my webvault with the new (as i could the old) but same issue on beta app.

digagnostics all look green, here is the support string:

Your environment (Generated via diagnostics page)

Config (Generated via diagnostics page)

Show Running Config **Environment settings which are overridden:** ```json { "_duo_akey": null, "_enable_duo": true, "_enable_email_2fa": true, "_enable_smtp": true, "_enable_yubico": true, "_icon_service_csp": "", "_icon_service_url": "", "_ip_header_enabled": true, "_max_note_size": 10000, "_smtp_img_src": "cid:", "admin_ratelimit_max_burst": 3, "admin_ratelimit_seconds": 300, "admin_session_lifetime": 20, "admin_token": "***", "allowed_iframe_ancestors": "", "attachments_folder": "data/attachments", "auth_request_purge_schedule": "30 * * * * *", "authenticator_disable_time_drift": false, "data_folder": "data", "database_conn_init": "", "database_max_conns": 10, "database_timeout": 30, "database_url": "***************", "db_connection_retries": 15, "disable_2fa_remember": false, "disable_admin_token": false, "disable_icon_download": false, "domain": "*****://************", "domain_origin": "*****://************", "domain_path": "", "domain_set": true, "duo_context_purge_schedule": "30 * * * * *", "duo_host": null, "duo_ikey": null, "duo_skey": null, "duo_use_iframe": false, "email_2fa_auto_fallback": false, "email_2fa_enforce_on_verified_invite": false, "email_attempts_limit": 3, "email_change_allowed": true, "email_expiration_time": 600, "email_token_size": 6, "emergency_access_allowed": true, "emergency_notification_reminder_schedule": "0 3 * * * *", "emergency_request_timeout_schedule": "0 7 * * * *", "enable_db_wal": true, "enable_websocket": true, "event_cleanup_schedule": "0 10 0 * * *", "events_days_retain": null, "experimental_client_feature_flags": "fido2-vault-credentials", "extended_logging": true, "helo_name": null, "hibp_api_key": null, "http_request_block_non_global_ips": true, "http_request_block_regex": null, "icon_blacklist_non_global_ips": true, "icon_blacklist_regex": null, "icon_cache_folder": "data/icon_cache", "icon_cache_negttl": 259200, "icon_cache_ttl": 2592000, "icon_download_timeout": 10, "icon_redirect_code": 302, "icon_service": "internal", "incomplete_2fa_schedule": "30 * * * * *", "incomplete_2fa_time_limit": 3, "increase_note_size_limit": false, "invitation_expiration_hours": 120, "invitation_org_name": "Vaultwarden", "invitations_allowed": true, "ip_header": "X-Forwarded-For", "job_poll_interval_ms": 30000, "log_file": "/var/log/vaultwarden/vaultwarden.log", "log_level": "warn", "log_timestamp_format": "%Y-%m-%d %H:%M:%S.%3f", "login_ratelimit_max_burst": 10, "login_ratelimit_seconds": 60, "org_attachment_limit": null, "org_creation_users": "", "org_events_enabled": false, "org_groups_enabled": false, "password_hints_allowed": true, "password_iterations": 600000, "push_enabled": true, "push_identity_uri": "https://identity.bitwarden.eu", "push_installation_id": "***", "push_installation_key": "***", "push_relay_uri": "https://push.bitwarden.eu", "reload_templates": false, "require_device_email": false, "rsa_key_filename": "data/rsa_key", "send_purge_schedule": "0 5 * * * *", "sendmail_command": null, "sends_allowed": true, "sends_folder": "data/sends", "show_password_hint": false, "signups_allowed": false, "signups_domains_whitelist": "", "signups_verify": false, "signups_verify_resend_limit": 6, "signups_verify_resend_time": 3600, "smtp_accept_invalid_certs": false, "smtp_accept_invalid_hostnames": false, "smtp_auth_mechanism": "\"Login\"", "smtp_debug": false, "smtp_embed_images": true, "smtp_explicit_tls": null, "smtp_from": "*******************", "smtp_from_name": "Vaultwarden (vw.xxx.uk)", "smtp_host": "*********************", "smtp_password": "***", "smtp_port": 587, "smtp_security": "starttls", "smtp_ssl": null, "smtp_timeout": 15, "smtp_username": "*******************", "templates_folder": "data/templates", "tmp_folder": "data/tmp", "trash_auto_delete_days": null, "trash_purge_schedule": "0 5 0 * * *", "use_sendmail": false, "use_syslog": false, "user_attachment_limit": null, "user_send_limit": null, "web_vault_enabled": true, "web_vault_folder": "web-vault/", "yubico_client_id": "xxx", "yubico_secret_key": "***", "yubico_server": null } ```
turnah commented 3 weeks ago

I've also run tcp flow with a authentication app key, as it fails on the app with the same message:


POST /identity/connect/token HTTP/1.1
Host: vw.xxx.uk
User-Agent: Bitwarden_Mobile/2024.8.0 (Android 14; SDK 34; Model Pixel 8 Pro)
Content-Length: 317
Accept-Encoding: gzip, br
Auth-Email: ...
Bitwarden-Client-Name: mobile
Bitwarden-Client-Version: 2024.8.0
Cdn-Loop: cloudflare
Cf-Connecting-Ip: 94.196.000.000
Cf-Ipcountry: GB
Cf-Ray: 8b5aa43c7e16cd5c-LHR
Cf-Visitor: {"scheme":"https"}
Content-Type: application/x-www-form-urlencoded
Device-Type: 0
X-Forwarded-For: 172.70.000.000
X-Forwarded-Host: vw.xxx.uk
X-Forwarded-Proto: https
X-Real-Ip: 94.196.000.000

scope=api%20offline_access&client_id=mobile&username=myemail.co.uk&password=123456%2BYrwClbceYr56%123456%2BNDVLh%2BY%3D&deviceIdentifier=123456-7787-43b6-b195-13904bc6a1e7&deviceName=Pixel%208%20Pro&deviceType=0&grant_type=password&twoFactorToken=123456&twoFactorProvider=0&twoFactorRemember=0%20
HTTP/1.1 200 OK
content-type: application/json
server: Rocket
x-content-type-options: nosniff
x-frame-options: SAMEORIGIN
permissions-policy: accelerometer=(), ambient-light-sensor=(), autoplay=(), battery=(), camera=(), display-capture=(), document-domain=(), encrypted-media=(), execution-while-not-rendered=(), execution-while-out-of-viewport=(), fullscreen=(), geolocation=(), gyroscope=(), keyboard-map=(), magnetometer=(), microphone=(), midi=(), payment=(), picture-in-picture=(), screen-wake-lock=(), sync-xhr=(), usb=(), web-share=(), xr-spatial-tracking=()
referrer-policy: same-origin
x-xss-protection: 0
content-security-policy: default-src 'self'; base-uri 'self'; form-action 'self'; object-src 'self' blob:; script-src 'self' 'wasm-unsafe-eval'; style-src 'self' 'unsafe-inline'; child-src 'self' https://*.duosecurity.com https://*.duofederal.com; frame-src 'self' https://*.duosecurity.com https://*.duofederal.com; frame-ancestors 'self' chrome-extension://nngceckbapebfimnlniiiahkandclblb chrome-extension://jbkfoedolllekgbhcbcoahefnbanhhlh moz-extension://* ; img-src 'self' data: https://haveibeenpwned.com ; connect-src 'self' https://api.pwnedpasswords.com https://api.2fa.directory https://app.simplelogin.io/api/ https://app.addy.io/api/ https://api.fastmail.com/ https://api.forwardemail.net ;
cache-control: no-cache, no-store, max-age=0
content-length: 3253
date: Mon, 19 Aug 2024 13:55:29 GMT

{"ForcePasswordReset":false,"Kdf":0,"KdfIterations":600000,"KdfMemory":null,"KdfParallelism":null,"Key":"2.U...+SZQ==|eyZAY3UIY+xClaCa0URG12...Bzw+DB...WqsYrSl8Dm4=|lInVVP...n8ag=","MasterPasswordPolicy":{"object":"masterPasswordPolicy"},"PrivateKey":"2.D2RfGhNJ4Kp9+1olMQZRqw==|DYPUT...TWK0=","ResetMasterPassword":false,"UserDecryptionOptions":{"HasMasterPassword":true,"Object":"userDecryptionOptions"},"access_token":"eyJ0eXAi...BvUhMw","expires_in":7200,"refresh_token":"9123...ImQ==","scope":"api offline_access","token_type":"Bearer","unofficialServer":true}```
tyde7 commented 3 weeks ago

same problem after update to 2024.8.0, except I cannot remove yubikey from 2FA. it shows YUBICO_CLIENT_ID or YUBICO_SECRET_KEY environment variable is not set. Yubikey OTP Disabled. (I don't remember how I added it in 2FA in the first place...)

BlackDex commented 3 weeks ago

@turnah small warning, you did disclosed your email address, vault domain etc.. by sharing the last post. I redacted the info, but that you know that at least.

BlackDex commented 3 weeks ago

@tyde7 Are you using Cloudflare as well? As I'm not able to reproduce this at all in any way. Also, you can remove all 2FA options via the Vaultwarden Admin /admin interface.

Also @turnah, the last post, if that really is what the client received, then it should have worked without any issue. I'm using the exact same version of the Android app, and i can login just fine.

Please try to use the debug version from here https://github.com/bitwarden/android/actions/runs/10291080138 The -qa.apk has debug enabled and you should be able to see debug data via adb logcat.

EDIT: I updated the link to the exact same build as i have installed on my phone which is 2024.8.0 (18985). Not sure which version you are running right now?

turnah commented 3 weeks ago

@turnah small warning, you did disclosed your email address, vault domain etc.. by sharing the last post. I redacted the info, but that you know that at least.

I spoiled/randomised all the tokens/keys/values; so hopefully OK! Really appreciate you doing that and your help.

BlackDex commented 3 weeks ago

@turnah, nope, the JWT was still able to be decoded, though partially, but still useful info was in there. Also, the Auth-Email contained your base64 encoded mail address.

BlackDex commented 3 weeks ago

And, comparing the outputs, they do match exactly what i see during my tests. So the output of Vaultwarden should be valid, and something unsupported is being received by the client in some strange way.

So, we would need to see what the client receives, which is (if i remember correctly) doable via the -qa.apk version.

turnah commented 3 weeks ago

Lesson learned... hopefully this one is better

using logcat and the -qa version linked

08-19 18:56:48.872 19694 21919 D BitwardenNetworkClient: --> POST https://vw.xxx.uk/identity/connect/token
08-19 18:56:48.872 19694 21919 D BitwardenNetworkClient: Content-Type: application/x-www-form-urlencoded
08-19 18:56:48.874 19694 21919 D BitwardenNetworkClient: Content-Length: 355
08-19 18:56:48.874 19694 21919 D BitwardenNetworkClient: Auth-Email: xxx
08-19 18:56:48.874 19694 21919 D BitwardenNetworkClient: User-Agent: Bitwarden_Mobile/2024.8.0 (Android 14; SDK 34; Model Pixel 8 Pro)
08-19 18:56:48.874 19694 21919 D BitwardenNetworkClient: Bitwarden-Client-Name: mobile
08-19 18:56:48.874 19694 21919 D BitwardenNetworkClient: Bitwarden-Client-Version: 2024.8.0
08-19 18:56:48.875 19694 21919 D BitwardenNetworkClient: Device-Type: 0
08-19 18:56:48.876 19694 21919 D BitwardenNetworkClient: scope=api%20offline_access&client_id=mobile&username=xxxco.uk&password=xxx&deviceIdentifier=xxx&deviceName=Pixel%208%20Pro&deviceType=0&grant_type=password&twoFactorToken=xxx&twoFactorProvider=3&twoFactorRemember=0%20
08-19 18:56:48.877 19694 21919 D BitwardenNetworkClient: --> END POST (355-byte body)
08-19 18:56:49.871 19694 21919 D BitwardenNetworkClient: <-- 200 https://vw.xxx.uk/identity/connect/token (993ms)
08-19 18:56:49.871 19694 21919 D BitwardenNetworkClient: date: Mon, 19 Aug 2024 17:56:50 GMT
08-19 18:56:49.871 19694 21919 D BitwardenNetworkClient: content-type: application/json
08-19 18:56:49.872 19694 21919 D BitwardenNetworkClient: alt-svc: h3=":443"; ma=86400
08-19 18:56:49.872 19694 21919 D BitwardenNetworkClient: cache-control: no-cache, no-store, max-age=0
08-19 18:56:49.872 19694 21919 D BitwardenNetworkClient: content-security-policy: default-src 'self'; base-uri 'self'; form-action 'self'; object-src 'self' blob:; script-src 'self' 'wasm-unsafe-eval'; style-src 'self' 'unsafe-inline'; child-src 'self' https://*.duosecurity.com https://*.duofederal.com; frame-src 'self' https://*.duosecurity.com https://*.duofederal.com; frame-ancestors 'self' chrome-extension://nngceckbapebfimnlniiiahkandclblb chrome-extension://jbkfoedolllekgbhcbcoahefnbanhhlh moz-extension://* ; img-src 'self' data: https://haveibeenpwned.com ; connect-src 'self' https://api.pwnedpasswords.com https://api.2fa.directory https://app.simplelogin.io/api/ https://app.addy.io/api/ https://api.fastmail.com/ https://api.forwardemail.net ;
08-19 18:56:49.872 19694 21919 D BitwardenNetworkClient: permissions-policy: accelerometer=(), ambient-light-sensor=(), autoplay=(), battery=(), camera=(), display-capture=(), document-domain=(), encrypted-media=(), execution-while-not-rendered=(), execution-while-out-of-viewport=(), fullscreen=(), geolocation=(), gyroscope=(), keyboard-map=(), magnetometer=(), microphone=(), midi=(), payment=(), picture-in-picture=(), screen-wake-lock=(), sync-xhr=(), usb=(), web-share=(), xr-spatial-tracking=()
08-19 18:56:49.873 19694 21919 D BitwardenNetworkClient: referrer-policy: same-origin
08-19 18:56:49.873 19694 21919 D BitwardenNetworkClient: vary: Accept-Encoding
08-19 18:56:49.873 19694 21919 D BitwardenNetworkClient: x-content-type-options: nosniff
08-19 18:56:49.873 19694 21919 D BitwardenNetworkClient: x-frame-options: SAMEORIGIN
08-19 18:56:49.874 19694 21919 D BitwardenNetworkClient: x-xss-protection: 0
08-19 18:56:49.874 19694 21919 D BitwardenNetworkClient: cf-cache-status: DYNAMIC
08-19 18:56:49.874 19694 21919 D BitwardenNetworkClient: report-to: {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v4?s=123456"}],"group":"cf-nel","max_age":604800}
08-19 18:56:49.874 19694 21919 D BitwardenNetworkClient: nel: {"success_fraction":0,"report_to":"cf-nel","max_age":604800}
08-19 18:56:49.874 19694 21919 D BitwardenNetworkClient: strict-transport-security: max-age=15552000; includeSubDomains; preload
08-19 18:56:49.875 19694 21919 D BitwardenNetworkClient: server: cloudflare
08-19 18:56:49.875 19694 21919 D BitwardenNetworkClient: cf-ray: 8xxx1b0376a1-LHR
08-19 18:56:49.879 19694 21919 D BitwardenNetworkClient: {"ForcePasswordReset":false,"Kdf":0,"KdfIterations":600000,"KdfMemory":null,"KdfParallelism":null,"Key":"xxx","MasterPasswordPolicy":{"object":"masterPasswordPolicy"},"PrivateKey":"2xxx=","ResetMasterPassword":false,"UserDecryptionOptions":{"HasMasterPassword":true,"Object":"userDecryptionOptions"},"access_token":"xxx","expires_in":7200,"refresh_token":"xxx==","scope":"api offline_access","token_type":"Bearer","unofficialServer":true}
08-19 18:56:49.879 19694 21919 D BitwardenNetworkClient: <-- END HTTP (3253-byte body)
BlackDex commented 3 weeks ago

Strange, that output looks as it should. Are there any errors or warnings in that same output with a reason why it failed?? It looks just fine too me.

turnah commented 3 weeks ago

I've run it again, this time using my local instance of vaultwarden (internal caddy that uses hosts on my router) so this doesn't use cloudflare to take that out of the equation.

Her are the 2 seconds of logs

08-19 19:50:54.849 19694 27685 D BitwardenNetworkClient: <-- 200 https://vw.xxx.uk/identity/connect/token (208ms)
08-19 19:50:54.849 19694 27685 D BitwardenNetworkClient: alt-svc: h3=":443"; ma=2592000
08-19 19:50:54.849 19694 27685 D BitwardenNetworkClient: cache-control: no-cache, no-store, max-age=0
08-19 19:50:54.849 19694 27685 D BitwardenNetworkClient: content-security-policy: default-src 'self'; base-uri 'self'; form-action 'self'; object-src 'self' blob:; script-src 'self' 'wasm-unsafe-eval'; style-src 'self' 'unsafe-inline'; child-src 'self' https://*.duosecurity.com https://*.duofederal.com; frame-src 'self' https://*.duosecurity.com https://*.duofederal.com; frame-ancestors 'self' chrome-extension://nngceckbapebfimnlniiiahkandclblb chrome-extension://jbkfoedolllekgbhcbcoahefnbanhhlh moz-extension://* ; img-src 'self' data: https://haveibeenpwned.com ; connect-src 'self' https://api.pwnedpasswords.com https://api.2fa.directory https://app.simplelogin.io/api/ https://app.addy.io/api/ https://api.fastmail.com/ https://api.forwardemail.net ;
08-19 19:50:54.849 19694 27685 D BitwardenNetworkClient: content-type: application/json
08-19 19:50:54.849 19694 27685 D BitwardenNetworkClient: date: Mon, 19 Aug 2024 18:50:55 GMT
08-19 19:50:54.849 19694 27685 D BitwardenNetworkClient: permissions-policy: accelerometer=(), ambient-light-sensor=(), autoplay=(), battery=(), camera=(), display-capture=(), document-domain=(), encrypted-media=(), execution-while-not-rendered=(), execution-while-out-of-viewport=(), fullscreen=(), geolocation=(), gyroscope=(), keyboard-map=(), magnetometer=(), microphone=(), midi=(), payment=(), picture-in-picture=(), screen-wake-lock=(), sync-xhr=(), usb=(), web-share=(), xr-spatial-tracking=()
08-19 19:50:54.849 19694 27685 D BitwardenNetworkClient: referrer-policy: same-origin
08-19 19:50:54.849 19694 27685 D BitwardenNetworkClient: server: Caddy
08-19 19:50:54.849 19694 27685 D BitwardenNetworkClient: server: Rocket
08-19 19:50:54.849 19694 27685 D BitwardenNetworkClient: vary: Accept-Encoding
08-19 19:50:54.849 19694 27685 D BitwardenNetworkClient: x-content-type-options: nosniff
08-19 19:50:54.849 19694 27685 D BitwardenNetworkClient: x-frame-options: SAMEORIGIN
08-19 19:50:54.849 19694 27685 D BitwardenNetworkClient: x-xss-protection: 0
08-19 19:50:54.850 19694 27685 D BitwardenNetworkClient: {"ForcePasswordReset":false,"Kdf":0,"KdfIterations":600000,"KdfMemory":null,"KdfParallelism":null,"Key":"2.xxx=","MasterPasswordPolicy":{"object":"masterPasswordPolicy"},"PrivateKey":"xxx=","ResetMasterPassword":false,"UserDecryptionOptions":{"HasMasterPassword":true,"Object":"userDecryptionOptions"},"access_token":"xxx","expires_in":7200,"refresh_token":"xxx","scope":"api offline_access","token_type":"Bearer","unofficialServer":true}
08-19 19:50:54.851 19694 27685 D BitwardenNetworkClient: <-- END HTTP (3253-byte body)
08-19 19:50:55.264  2192  2667 W IPCThreadState: Sending oneway calls to frozen process.
08-19 19:50:55.272  2192  2667 W IPCThreadState: Sending oneway calls to frozen process.
08-19 19:50:55.324 19694 19694 I Choreographer: Skipped 55 frames!  The application may be doing too much work on its main thread.
08-19 19:50:55.337 19694 19694 W WindowOnBackDispatcher: sendCancelIfRunning: isInProgress=falsecallback=android.view.ViewRootImpl$$ExternalSyntheticLambda11@a5153f3
08-19 19:50:55.338  1550  2432 D CoreBackPreview: Window{f49caae u0 com.x8bit.bitwarden.dev/com.x8bit.bitwarden.MainActivity}: Setting back callback null
08-19 19:50:55.343  1550  2432 W InputManager-JNI: Input channel object 'f49caae com.x8bit.bitwarden.dev/com.x8bit.bitwarden.MainActivity (client)' was disposed without first being removed with the input manager!
08-19 19:50:55.343  1550  2432 V WindowManager: Loading animations: layout params pkg=com.x8bit.bitwarden.dev resId=0x1030309
08-19 19:50:55.343  1550  2432 V WindowManager: Loading animations: picked package=android
08-19 19:50:55.348 19694 19694 W WindowOnBackDispatcher: OnBackInvokedCallback is not enabled for the application.
08-19 19:50:55.348 19694 19694 W WindowOnBackDispatcher: Set 'android:enableOnBackInvokedCallback="true"' in the application manifest.
08-19 19:50:55.350  2192  2667 W IPCThreadState: Sending oneway calls to frozen process.
08-19 19:50:55.359  1550  1648 V WindowManager: Unknown focus tokens, dropping reportFocusChanged
08-19 19:50:55.368  1550  1612 D CoreBackPreview: Window{6381f72 u0 com.x8bit.bitwarden.dev/com.x8bit.bitwarden.MainActivity}: Setting back callback OnBackInvokedCallbackInfo{mCallback=android.window.IOnBackInvokedCallback$Stub$Proxy@1282aca, mPriority=0, mIsAnimationCallback=false}
08-19 19:50:55.378   555   570 W gralloc4: Unable to set buffer name VRI[MainActivity]#44(BLAST Consumer)44: File name too long
08-19 19:50:55.378   555   570 W gralloc4: Unable to set buffer name VRI[MainActivity]#44(BLAST Consumer)44: File name too long
08-19 19:50:55.379   555   570 W gralloc4: Unable to set buffer name VRI[MainActivity]#44(BLAST Consumer)44: File name too long
08-19 19:50:55.380   555   570 W gralloc4: Unable to set buffer name VRI[MainActivity]#44(BLAST Consumer)44: File name too long
08-19 19:50:55.380   555   570 W gralloc4: Unable to set buffer name VRI[MainActivity]#44(BLAST Consumer)44: File name too long
08-19 19:50:55.382  1550  1649 V WindowManager: Loading animations: layout params pkg=com.x8bit.bitwarden.dev resId=0x1030309
08-19 19:50:55.382  1550  1649 V WindowManager: Loading animations: picked package=android
08-19 19:50:55.395  1550  5276 I ImeTracker: com.x8bit.bitwarden.dev:1dfdb52b: onRequestShow at ORIGIN_SERVER reason ATTACH_NEW_INPUT fromUser false
08-19 19:50:55.396  3956  3956 I GoogleInputMethodService: GoogleInputMethodService.onFinishInput():3184 
08-19 19:50:55.396  3956  3956 I GoogleInputMethodService: GoogleInputMethodService.updateDeviceLockedStatus():2246 repeatCheckTimes = 0, locked = false
08-19 19:50:55.396  3956  3956 I GoogleInputMethodService: GoogleInputMethodService.onStartInput():1982 onStartInput(EditorInfo{EditorInfo{packageName=com.x8bit.bitwarden.dev, inputType=2, inputTypeString=Number, enableLearning=false, autoCorrection=false, autoComplete=false, imeOptions=2000006, privateImeOptions=null, actionName=DONE, actionLabel=null, initialSelStart=6, initialSelEnd=6, initialCapsMode=0, label=null, fieldId=-1, fieldName=null, extras=Bundle[mParcelledData.dataSize=240], hintText=null, hintLocales=[]}}, false)
08-19 19:50:55.397   687   687 W powerhal-libperfmgr: Sess(2233), cannot resume, already active
08-19 19:50:55.398  3956  3956 I GoogleInputMethodService: GoogleInputMethodService.updateDeviceLockedStatus():2246 repeatCheckTimes = 1, locked = false
08-19 19:50:55.398  3956  3956 I AndroidIME: InputBundleManager.loadActiveInputBundleId():450 loadActiveInputBundleId: und-Latn-x-number, number
08-19 19:50:55.398  3956  3956 I HardKeyTracker: HardKeyTracker.unregisterKeySequence():183 Unregister key sequence lmm{labelResId=2132019852, callback=fpg@dfc0a90, lastModifier=0, keyCodes=[57, 57], actions=[1, 0]}
08-19 19:50:55.398  3956  3956 I HardKeyTracker: HardKeyTracker.unregisterKeySequence():183 Unregister key sequence lmm{labelResId=0, callback=fpg@a495faf, lastModifier=0, keyCodes=[58, 58], actions=[1, 0]}
08-19 19:50:55.399  1550  1662 W PackageConfigPersister: App-specific configuration not found for packageName: com.x8bit.bitwarden.dev and userId: 0
08-19 19:50:55.401  3956  3956 I GoogleInputMethodService: GoogleInputMethodService.onStartInputView():2095 onStartInputView(EditorInfo{EditorInfo{packageName=com.x8bit.bitwarden.dev, inputType=2, inputTypeString=Number, enableLearning=false, autoCorrection=false, autoComplete=false, imeOptions=2000006, privateImeOptions=null, actionName=DONE, actionLabel=null, initialSelStart=6, initialSelEnd=6, initialCapsMode=0, label=null, fieldId=-1, fieldName=null, extras=Bundle[{android.support.text.emoji.emojiCompat_metadataVersion=10, android.support.text.emoji.emojiCompat_replaceAll=false}], hintText=null, hintLocales=[]}}, false)
08-19 19:50:55.402  3956  3956 I GoogleInputMethodService: GoogleInputMethodService.updateDeviceLockedStatus():2246 repeatCheckTimes = 1, locked = false
08-19 19:50:55.402  3956  3956 W AvailableModulesNotification: AvailableModulesNotification.loadModule():117 Module lom is not available
08-19 19:50:55.402  3956  3956 I KeyboardHeightUtil: KeyboardHeightUtil.getOemKeyboardHeightRatio():175 systemKeyboardHeightRatio:1.090000.
08-19 19:50:55.403  3956  3956 I KeyboardWrapper: KeyboardWrapper.activateKeyboard():576 activateKeyboard(): type=prime, status=0, imeDef=ksw{stringId=number, language=und-Latn-x-number, languageTag=und-Latn-x-number, processedConditions={}, className=com.google.android.libraries.inputmethod.ime.DummyIme, label=2132018731, keyEventInterpreter=null, inlineComposing=true, autoCapital=false, announceAutoSelectedCandidate=false, statusIcon=0, primeKeyboardType=SOFT, indicatorIcon=0, indicatorLabel=null, displayAppCompletions=false, extraValues=kso{}, processors=kuo@e2f8c9e, unacceptableMetaKeys=4098, languageSpecificSettings=0, asciiCapable=false, alwaysShowSuggestions=false, useAsciiPasswordKeyboard=false, secondaryIme=null, keyboardGroupDef=ktw@7efcf4c, phenotypeFlagId=0, localizationLanguageTag=null, supportsInlineSuggestion=false}
08-19 19:50:55.403  3956  3956 I KeyboardManager: KeyboardManager.requestKeyboard():234 Creating keyboard prime, imeId=number, cacheKey=theme_border_keyboard_mode_screen_size_5_5_keyboard_mode_screen_width_middle_stylesheet_noshadow_pgsans_pillkey_silkpopup_gm3token_hover_dark_phone_bottom4dp_navredesign
08-19 19:50:55.403  4130  5135 I A       : Keyboard closed, ending dictation. [SD]
08-19 19:50:55.403  3956  3956 I KeyboardWrapper: KeyboardWrapper.onKeyboardReady():240 onKeyboardReady(): type=prime(prime), kb=com.google.android.apps.inputmethod.latin.keyboard.LatinNumberKeyboard@f34869f
08-19 19:50:55.403  3956  3956 I KeyboardWrapper: KeyboardWrapper.doActivateKeyboard():607 doActivateKeyboard(): prime
08-19 19:50:55.404  3956  3956 I KeyboardHeightUtil: KeyboardHeightUtil.calculateMaxKeyboardBodyHeight():45 leave 321 height for app when ime window height:2697, header height:132 and isFullscreenMode:false, so the max keyboard body height is:2244
08-19 19:50:55.404  3956  3956 W Keyboard: Keyboard.getKeyboardViewHelper():574 null helper is returned: keyboardDef=ktr{processedConditions={language=en-GB, show_suggestions=true, device=phone, expressions=normal}, globalConditions={global_theme_key=theme_border_keyboard_mode_screen_size_5_5_keyboard_mode_screen_width_middle_stylesheet_noshadow_pgsans_pillkey_silkpopup_gm3token_hover_dark_phone_bottom4dp_navredesign, global_locale=en_GB, global_density_dpi=480, global_orientation=1}, className=.latin.keyboard.LatinNumberKeyboard, resourceIds=[#0x7f1708c3], initialStates=0, keyboardViewDefs=[kue{direction=LOCALE, id=#0x7f0b0150, isScalable=false, layoutId=#0x7f0e05b3, type=HEADER, touchable=true, defaultShow=false}, kue{direction=null, id=#0x7f0b0150, isScalable=true, layoutId=#0x7f0e0607, type=BODY, touchable=true, defaultShow=true}], persistentStates=0, persistentStatesPrefKey=null, popupBubbleLayoutId=#0x7f0e06a1, recentKeyLayoutId=0, recentKeyPopupLayoutId=0, recentKeyType=null, rememberRecentKey=NONE, sessionStates=0}, type=FLOATING_CANDIDATES, helpersCreated=[kha@c392002, kha@f9f6d13, null, null], context.getResources().getConfiguration(): {1.0 234mcc30mnc [en_GB] ldltr sw448dp w448dp h923dp 480dpi nrml long hdr widecg port night finger -keyb/v/h -nav/h winConfig={ mBounds=Rect(0, 0 - 1344, 2992) mAppBounds=Rect(0, 151 - 1344, 2920) mMaxBounds=Rect(0, 0 - 1344, 2992) mDisplayRotation=ROTATION_0 mWindowingMode=fullscreen mDisplayWindowingMode=fullscreen mActivityType=undefined mAlwaysOnTop=undefined mRotation=ROTATION_0} s.38 fontWeightAdjustment=0}
08-19 19:50:55.404  3956  3956 W Keyboard: Keyboard.getKeyboardViewHelper():574 null helper is returned: keyboardDef=ktr{processedConditions={language=en-GB, show_suggestions=true, device=phone, expressions=normal}, globalConditions={global_theme_key=theme_border_keyboard_mode_screen_size_5_5_keyboard_mode_screen_width_middle_stylesheet_noshadow_pgsans_pillkey_silkpopup_gm3token_hover_dark_phone_bottom4dp_navredesign, global_locale=en_GB, global_density_dpi=480, global_orientation=1}, className=.latin.keyboard.LatinNumberKeyboard, resourceIds=[#0x7f1708c3], initialStates=0, keyboardViewDefs=[kue{direction=LOCALE, id=#0x7f0b0150, isScalable=false, layoutId=#0x7f0e05b3, type=HEADER, touchable=true, defaultShow=false}, kue{direction=null, id=#0x7f0b0150, isScalable=true, layoutId=#0x7f0e0607, type=BODY, touchable=true, defaultShow=true}], persistentStates=0, persistentStatesPrefKey=null, popupBubbleLayoutId=#0x7f0e06a1, recentKeyLayoutId=0, recentKeyPopupLayoutId=0, recentKeyType=null, rememberRecentKey=NONE, sessionStates=0}, type=WIDGET, helpersCreated=[kha@c392002, kha@f9f6d13, null, null], context.getResources().getConfiguration(): {1.0 234mcc30mnc [en_GB] ldltr sw448dp w448dp h923dp 480dpi nrml long hdr widecg port night finger -keyb/v/h -nav/h winConfig={ mBounds=Rect(0, 0 - 1344, 2992) mAppBounds=Rect(0, 151 - 1344, 2920) mMaxBounds=Rect(0, 0 - 1344, 2992) mDisplayRotation=ROTATION_0 mWindowingMode=fullscreen mDisplayWindowingMode=fullscreen mActivityType=undefined mAlwaysOnTop=undefined mRotation=ROTATION_0} s.38 fontWeightAdjustment=0}
08-19 19:50:55.405  3956  3956 I GoogleInputMethodService: GoogleInputMethodService.startInputIfInputViewStarted():3739 startInputIfInputViewStarted(): default prime
08-19 19:50:55.405  3956  3956 I KeyboardModeManager: KeyboardModeManager.setInputViewKeyboardViewHolderProvider():618 setInputView() : supportsOneHandedMode=true supportsSplitMode=true
08-19 19:50:55.405  3956  3956 I NormalModeController: NormalModeController.getKeyboardBodyViewHolderPaddingBottom():104 currentPrimeKeyboardType:SOFT systemPaddingBottom:31
08-19 19:50:55.405  3956  3956 I AndroidIME: KeyboardViewManager.updateKeyboardBodyViewHolderPaddingBottom():510 Set finalPaddingBottom = 31 while holderPaddingBottom = 31; navigationHeight = 144
08-19 19:50:55.405  3956  3956 I KeyboardHeightUtil: KeyboardHeightUtil.calculateMaxKeyboardBodyHeight():45 leave 321 height for app when ime window height:2697, header height:132 and isFullscreenMode:false, so the max keyboard body height is:2244
08-19 19:50:55.405  3956  3956 I KeyboardHeightUtil: KeyboardHeightUtil.calculateMaxKeyboardBodyHeight():45 leave 321 height for app when ime window height:2697, header height:132 and isFullscreenMode:false, so the max keyboard body height is:2244
08-19 19:50:55.405  3956  3956 I KeyboardHeightUtil: KeyboardHeightUtil.calculateMaxKeyboardBodyHeight():45 leave 321 height for app when ime window height:2697, header height:132 and isFullscreenMode:false, so the max keyboard body height is:2244
08-19 19:50:55.405  3956  3956 I KeyboardHeightUtil: KeyboardHeightUtil.calculateMaxKeyboardBodyHeight():45 leave 321 height for app when ime window height:2697, header height:132 and isFullscreenMode:false, so the max keyboard body height is:2244
08-19 19:50:55.405  3956  3956 I NormalModeController: NormalModeController.getKeyboardBodyViewHolderPaddingBottom():104 currentPrimeKeyboardType:SOFT systemPaddingBottom:31
08-19 19:50:55.405  3956  3956 I AndroidIME: KeyboardViewManager.updateKeyboardBodyViewHolderPaddingBottom():510 Set finalPaddingBottom = 31 while holderPaddingBottom = 31; navigationHeight = 144
08-19 19:50:55.405  3956  3956 I KeyboardHeightUtil: KeyboardHeightUtil.calculateMaxKeyboardBodyHeight():45 leave 321 height for app when ime window height:2697, header height:132 and isFullscreenMode:false, so the max keyboard body height is:2244
08-19 19:50:55.405  3956  3956 I KeyboardHeightUtil: KeyboardHeightUtil.calculateMaxKeyboardBodyHeight():45 leave 321 height for app when ime window height:2697, header height:132 and isFullscreenMode:false, so the max keyboard body height is:2244
08-19 19:50:55.405  3956  3956 I KeyboardModeManager: KeyboardModeManager.setInputViewKeyboardViewHolderProvider():606 setInputView() : supportsOneHandedMode=true, supportSplitMode=true
08-19 19:50:55.405  3956  3956 I NewLanguagePromptExtension: NewLanguagePromptExtension.onActivate():184 Not activated NewLanguagePromptExtension: not a normal text input box.
08-19 19:50:55.416  3956  3956 I NgaExtension: NgaExtension.onActivate():519 NgaExtension#onActivate [SDG]
08-19 19:50:55.417  3956  3956 I NgaVoiceInputHandlerSwitcher: NgaVoiceInputHandlerSwitcher.restorePrimary():233 not switching to primary. fallback is null [SDG]
08-19 19:50:55.417  3956  3956 I NgaExtension: NgaExtension.onActivate():543 NgaExtension: interaction type=4 [SDG]
08-19 19:50:55.419  3956  3956 I ProactiveSuggestionsHolderManager: ProactiveSuggestionsHolderManager$2.display():199 Requesting to show proactive suggestions: CLIPBOARD PREEMPTIVE_WITH_SUPPRESSION, has extraSuggestions: false
08-19 19:50:55.420  3956  3956 I CurrentMicStatusHolder: CurrentMicStatusHolder.onStartInputView():81 Current Mic status = {MicIconHidden-PasswordOrNumberOrDateInputType,}
08-19 19:50:55.420  3956  3956 W AccessPointsManager: AccessPointsManager.removeAccessPoint():918 The holder controller #0x7f0b2098 is not registered
08-19 19:50:55.421  4130  5059 I A       : (REDACTED) Handling KeyboardVisibilityEvent: %s [SD]
08-19 19:50:55.427 19694 19694 W WindowOnBackDispatcher: sendCancelIfRunning: isInProgress=falsecallback=ImeCallback=ImeOnBackInvokedCallback@61726690 Callback=android.window.IOnBackInvokedCallback$Stub$Proxy@cc2e
08-19 19:50:55.427  4130  5059 I A       : (REDACTED) Starting AiAi status check using Android T API. tag=%s [SD]
08-19 19:50:55.430  3956  3956 I KeyboardHeightUtil: KeyboardHeightUtil.calculateMaxKeyboardBodyHeight():45 leave 321 height for app when ime window height:2697, header height:132 and isFullscreenMode:false, so the max keyboard body height is:2244
08-19 19:50:55.430  3956  3956 I AndroidIME: KeyboardViewManager.updateKeyboardBodyViewHolderPaddingBottom():510 Set finalPaddingBottom = 31 while holderPaddingBottom = 31; navigationHeight = 144
08-19 19:50:55.430  3956  3956 I WindowMetricsNotification: WindowMetricsNotification.notifyWithWindow():141 
08-19 19:50:55.430  3956  3956 I WindowMetricsNotification: WindowMetricsNotification.notify():134 WindowMetricsNotification{bounds=Rect(0, 151 - 1344, 2992), insets=Rect(0, 0 - 0, 144), densityDpi=480, smallestScreenWidthDp=448, displayWidth=1344, displayHeight=2992, xdpi=487.68, ydpi=490.301, isTrustable=true}; DisplayMetrics{density=3.0, width=1344, height=2992, scaledDensity=3.0, xdpi=487.68, ydpi=490.301}
08-19 19:50:55.431  1550  2228 I SpeechRecognitionManagerServiceImpl: Client 10145 has opened 9 sessions
08-19 19:50:55.433  1550  1662 D CoreBackPreview: Window{5589229 u0 com.x8bit.bitwarden.dev/com.x8bit.bitwarden.MainActivity}: Setting back callback OnBackInvokedCallbackInfo{mCallback=android.window.IOnBackInvokedCallback$Stub$Proxy@223761e, mPriority=0, mIsAnimationCallback=false}
08-19 19:50:55.433   555   570 W gralloc4: Unable to set buffer name VRI[InputMethod]#126(BLAST Consumer)126: File name too long
08-19 19:50:55.434  1550  1612 I ImeTracker: com.x8bit.bitwarden.dev:afb6b132: onRequestHide at ORIGIN_SERVER reason HIDE_UNSPECIFIED_WINDOW fromUser false
08-19 19:50:55.435  3855  3855 I AiAi    : AiAiSpeechRecognitionService#onCheckRecognitionSupport#AndroidU
08-19 19:50:55.435  3855  3855 I AiAiSpeechRecognition: #onCheckRecognitionSupport
08-19 19:50:55.436  3855  3855 I RecognitionServiceInten: (REDACTED) Trigger application overridden to %s
08-19 19:50:55.436  3855  3855 I IntentParsingUtil: (REDACTED) Using Locale.getDefault() for recognition: %s
08-19 19:50:55.436  3855  3855 I RecognitionServiceInten: #enableFirstPartyAppFeatures
08-19 19:50:55.436  3855  3855 I IntentParsingUtil: No additional languages specified in RecognizerIntent
08-19 19:50:55.437  3855  3855 I AiAiSpeechRecognition: (REDACTED) onStartCheckRecognitionSupport(): callingPackageName: %s
08-19 19:50:55.437  3855  3855 I ModelManagerImpl: #onCheckRecognitionSupport
08-19 19:50:55.437  3855  3855 I DefaultLPManager: #getAvailablePackages
08-19 19:50:55.438  3855  3855 I tlu     : #getDownloadableLanguagePacks
08-19 19:50:55.438  3855  3855 I LanguagePackConfigImpl: (REDACTED) Loaded languagepack (LP) flag value from latest config %s: %s
08-19 19:50:55.438  3855  3855 W SystemLPSourceImpl: #getAvailablePackages: Note there is not reason to call this method, as getInstalledPackages() returns the same LanguagePacks for this impl.
08-19 19:50:55.438  3855  3855 I DefaultLPManager: #getRequestedPackages
08-19 19:50:55.438  3855  3855 I ZipLPPopulator: #addNewFileGroups
08-19 19:50:55.438  3956  3956 I GoogleInputMethodService: GoogleInputMethodService$1.onKeyboardViewShown():485 onKeyboardViewShown: keyboardType=prime, keyboardViewType=HEADER keyboardView=com.google.android.libraries.inputmethod.widgets.SoftKeyboardView{39a1631 V.E...... ........ 0,0-1344,132}
08-19 19:50:55.438  3855  3855 I tlu     : #getDownloadableLanguagePacks
08-19 19:50:55.438  3855  3855 I LanguagePackConfigImpl: (REDACTED) Loaded languagepack (LP) flag value from latest config %s: %s
08-19 19:50:55.438  3855  3855 W SystemLPSourceImpl: #getRequestedPackages: There is not reason to call this method, as the result is always empty.
08-19 19:50:55.438  3855  3855 I DefaultLPManager: #getAvailablePackages
08-19 19:50:55.438  3855  3855 I tlu     : #getDownloadableLanguagePacks
08-19 19:50:55.438  3855  3855 I LanguagePackConfigImpl: (REDACTED) Loaded languagepack (LP) flag value from latest config %s: %s
08-19 19:50:55.438  3855  3855 W SystemLPSourceImpl: #getAvailablePackages: Note there is not reason to call this method, as getInstalledPackages() returns the same LanguagePacks for this impl.
08-19 19:50:55.438  3855  3855 I DefaultLPManager: #getInstalledPackages
08-19 19:50:55.438  3855  3855 I tlu     : #getInstalledPackages
08-19 19:50:55.438  3855  3855 I tlu     : MDD.getFileGroupsByFilter(langpack-domain_xx-XX_ver_zipfile)
08-19 19:50:55.438  3956  3956 I KeyboardHeightUtil: KeyboardHeightUtil.calculateMaxKeyboardBodyHeight():45 leave 321 height for app when ime window height:2697, header height:132 and isFullscreenMode:false, so the max keyboard body height is:2244
08-19 19:50:55.438  3956  3956 I GoogleInputMethodService: GoogleInputMethodService$1.onKeyboardViewShown():485 onKeyboardViewShown: keyboardType=prime, keyboardViewType=BODY keyboardView=com.google.android.libraries.inputmethod.widgets.SoftKeyboardView{2173425 V.E...... ........ 0,0-1344,798}
08-19 19:50:55.438  3956  3956 I NewLanguagePromptExtension: NewLanguagePromptExtension$1.onKeyboardViewShown():86 Not show new language banner: not prime keyboard, or the extension not activated.
08-19 19:50:55.439  3956  3956 I KeyboardHeightUtil: KeyboardHeightUtil.calculateMaxKeyboardBodyHeight():45 leave 321 height for app when ime window height:2697, header height:132 and isFullscreenMode:false, so the max keyboard body height is:2244
08-19 19:50:55.439  3956  3956 I WindowMetricsNotification: WindowMetricsNotification.notifyWithWindow():141 
08-19 19:50:55.439  3956  3956 I WindowMetricsNotification: WindowMetricsNotification.notify():134 WindowMetricsNotification{bounds=Rect(0, 151 - 1344, 2992), insets=Rect(0, 0 - 0, 144), densityDpi=480, smallestScreenWidthDp=448, displayWidth=1344, displayHeight=2992, xdpi=487.68, ydpi=490.301, isTrustable=true}; DisplayMetrics{density=3.0, width=1344, height=2992, scaledDensity=3.0, xdpi=487.68, ydpi=490.301}
08-19 19:50:55.439  3956  3956 I WindowMetricsNotification: WindowMetricsNotification.notifyWithWindow():141 
08-19 19:50:55.439  3956  3956 I WindowMetricsNotification: WindowMetricsNotification.notify():134 WindowMetricsNotification{bounds=Rect(0, 151 - 1344, 2992), insets=Rect(0, 0 - 0, 144), densityDpi=480, smallestScreenWidthDp=448, displayWidth=1344, displayHeight=2992, xdpi=487.68, ydpi=490.301, isTrustable=true}; DisplayMetrics{density=3.0, width=1344, height=2992, scaledDensity=3.0, xdpi=487.68, ydpi=490.301}
08-19 19:50:55.439  1550  1662 D CoreBackPreview: Window{5589229 u0 com.x8bit.bitwarden.dev/com.x8bit.bitwarden.MainActivity}: Setting back callback OnBackInvokedCallbackInfo{mCallback=android.window.IOnBackInvokedCallback$Stub$Proxy@47194cc, mPriority=0, mIsAnimationCallback=false}
08-19 19:50:55.439  3855  4415 E VoiceSearchConfigProtoU: (REDACTED) Unrecognized recognizer for [%s, %d]: %d. Ignoring it and its associated features.
08-19 19:50:55.439  3855  4614 I SystemLPSourceImpl: (REDACTED) Parsed system partition LanguagePack metadata file: %s
08-19 19:50:55.439  3855  4415 E VoiceSearchConfigProtoU: (REDACTED) Unrecognized recognizer for [%s, %d]: %d. Ignoring it and its associated features.
08-19 19:50:55.440  3855  4614 I SystemLPSourceImpl: (REDACTED) Parsed system partition LanguagePack metadata file: %s
08-19 19:50:55.440  3855  4415 E VoiceSearchConfigProtoU: (REDACTED) Unrecognized recognizer for [%s, %d]: %d. Ignoring it and its associated features.
08-19 19:50:55.440  3855  4614 I SystemLPSourceImpl: (REDACTED) Parsed system partition LanguagePack metadata file: %s
08-19 19:50:55.440  3855  4415 E VoiceSearchConfigProtoU: (REDACTED) Unrecognized recognizer for [%s, %d]: %d. Ignoring it and its associated features.
08-19 19:50:55.440  3956  3956 I KeyboardHeightUtil: KeyboardHeightUtil.calculateMaxKeyboardBodyHeight():45 leave 321 height for app when ime window height:2697, header height:132 and isFullscreenMode:false, so the max keyboard body height is:2244
08-19 19:50:55.440  3956  3956 I AndroidIME: KeyboardViewManager.updateKeyboardBodyViewHolderPaddingBottom():510 Set finalPaddingBottom = 31 while holderPaddingBottom = 31; navigationHeight = 144
08-19 19:50:55.442  3956  3956 I GoogleInputMethodService: GoogleInputMethodService.onFinishInputView():2434 
08-19 19:50:55.442  1550  1662 D CoreBackPreview: Window{6381f72 u0 com.x8bit.bitwarden.dev/com.x8bit.bitwarden.MainActivity}: Setting back callback OnBackInvokedCallbackInfo{mCallback=android.window.IOnBackInvokedCallback$Stub$Proxy@b0cd62a, mPriority=0, mIsAnimationCallback=false}
08-19 19:50:55.442   555   570 W gralloc4: Unable to set buffer name VRI[InputMethod]#126(BLAST Consumer)126: File name too long
08-19 19:50:55.446  3855  4415 E VoiceSearchConfigProtoU: (REDACTED) Unrecognized recognizer for [%s, %d]: %d. Ignoring it and its associated features.
08-19 19:50:55.447  3855  4415 E VoiceSearchConfigProtoU: (REDACTED) Unrecognized recognizer for [%s, %d]: %d. Ignoring it and its associated features.
08-19 19:50:55.447  3855  4415 E VoiceSearchConfigProtoU: (REDACTED) Unrecognized recognizer for [%s, %d]: %d. Ignoring it and its associated features.
08-19 19:50:55.447  3855  4415 E VoiceSearchConfigProtoU: (REDACTED) Unrecognized recognizer for [%s, %d]: %d. Ignoring it and its associated features.
08-19 19:50:55.449  4130  4534 I A       : fetchDeviceUserNames() : Updated the device user names list [SD]
08-19 19:50:55.450  4130  4534 I A       : refreshContacts() : Updated the contacts list [SD]
08-19 19:50:55.451 19694 19694 W RemoteInputConnectionImpl: requestCursorUpdates on inactive InputConnection
08-19 19:50:55.451  3855  4614 E VoiceSearchConfigProtoU: (REDACTED) Unrecognized recognizer for [%s, %d]: %d. Ignoring it and its associated features.
08-19 19:50:55.451 19694 19694 D InsetsController: show(ime(), fromIme=true)
08-19 19:50:55.452  3956  3956 W TooltipLifecycleManager: TooltipLifecycleManager.dismissTooltips():153 Tooltip with id spell_check_add_to_dictionary not found in tooltipManager.
08-19 19:50:55.452  3956  3956 I NgaExtension: NgaExtension.onDeactivate():558 NgaExtension#onDeactivate [SDG]
08-19 19:50:55.452  3956  3956 W AccessPointsManager: AccessPointsManager.removeAccessPoint():918 The holder controller #0x7f0b2098 is not registered
08-19 19:50:55.452  3956 27332 I NgaDataShareClient: NgaDataShareClient.sendCorrectionsAndEndSession():377 endDataPushSession() [SDG]
08-19 19:50:55.452  3956 27332 I NgaDataShareClient: NgaDataShareClient.sendCorrectionsList():385 sendCorrectionsList() [SDG]
08-19 19:50:55.452  3956 27332 W NgaDataShareClient: NgaDataShareClient.getClientInfo():479 null TriggerApplicationId provided. [SDG]
08-19 19:50:55.452  3855  4415 E VoiceSearchConfigProtoU: (REDACTED) Unrecognized recognizer for [%s, %d]: %d. Ignoring it and its associated features.
08-19 19:50:55.452  3956 27332 W NotificationCenter: NotificationCenter.unregisterListener():468 Listener fpt@5a47b0f was not registered for notification class key
08-19 19:50:55.452  3956 27332 W NotificationCenter: NotificationCenter.unregisterListener():468 Listener fps@121279c was not registered for notification class kap
08-19 19:50:55.452  3956  3956 W NotificationCenter: NotificationCenter.unregisterListener():468 Listener foy@8203c22 was not registered for notification class kap
08-19 19:50:55.453  3855  4415 E VoiceSearchConfigProtoU: (REDACTED) Unrecognized recognizer for [%s, %d]: %d. Ignoring it and its associated features.
08-19 19:50:55.453  3855  4415 E VoiceSearchConfigProtoU: (REDACTED) Unrecognized recognizer for [%s, %d]: %d. Ignoring it and its associated features.
08-19 19:50:55.453  3855  4415 E VoiceSearchConfigProtoU: (REDACTED) Unrecognized recognizer for [%s, %d]: %d. Ignoring it and its associated features.
08-19 19:50:55.453  3956  3956 W AccessPointsManager: AccessPointsManager.removeAccessPoint():918 The holder controller #0x7f0b2098 is not registered
08-19 19:50:55.454  3956  3956 I KeyboardHeightUtil: KeyboardHeightUtil.calculateMaxKeyboardBodyHeight():45 leave 321 height for app when ime window height:2697, header height:132 and isFullscreenMode:false, so the max keyboard body height is:2244
08-19 19:50:55.454  3956  3956 I AndroidIME: KeyboardViewManager.updateKeyboardBodyViewHolderPaddingBottom():510 Set finalPaddingBottom = 31 while holderPaddingBottom = 31; navigationHeight = 144
08-19 19:50:55.455 19694 19694 D InsetsController: hide(ime(), fromIme=true)
08-19 19:50:55.455 19694 19694 I ImeTracker: com.x8bit.bitwarden.dev:1dfdb52b: onCancelled at PHASE_CLIENT_ANIMATION_CANCEL
08-19 19:50:55.456  3956  3956 I GoogleInputMethodService: GoogleInputMethodService.onFinishInput():3184 
08-19 19:50:55.456  4130  5134 I A       : shareCorrections()
08-19 19:50:55.456   555   570 W gralloc4: Unable to set buffer name VRI[InputMethod]#126(BLAST Consumer)126: File name too long
08-19 19:50:55.456  3956  3956 I GoogleInputMethodService: GoogleInputMethodService.updateDeviceLockedStatus():2246 repeatCheckTimes = 0, locked = false
08-19 19:50:55.456  3956  3956 I GoogleInputMethodService: GoogleInputMethodService.onStartInput():1982 onStartInput(EditorInfo{EditorInfo{packageName=com.x8bit.bitwarden.dev, inputType=0, inputTypeString=NULL, enableLearning=false, autoCorrection=false, autoComplete=false, imeOptions=0, privateImeOptions=null, actionName=UNSPECIFIED, actionLabel=null, initialSelStart=-1, initialSelEnd=-1, initialCapsMode=0, label=null, fieldId=0, fieldName=null, extras=null, hintText=null, hintLocales=[]}}, false)
08-19 19:50:55.456  3956  3956 I GoogleInputMethodService: GoogleInputMethodService.updateDeviceLockedStatus():2246 repeatCheckTimes = 1, locked = false
08-19 19:50:55.457  3956  3956 I AndroidIME: InputBundleManager.loadActiveInputBundleId():450 loadActiveInputBundleId: und-Latn-x-password, password
08-19 19:50:55.457  3956  3956 I HardKeyTracker: HardKeyTracker.registerKeySequence():139 Register key sequence lmm{labelResId=2132019852, callback=fpg@2a8f387, lastModifier=0, keyCodes=[57, 57], actions=[1, 0]}
08-19 19:50:55.457  3956  3956 I HardKeyTracker: HardKeyTracker.registerKeySequence():139 Register key sequence lmm{labelResId=0, callback=fpg@43a7a52, lastModifier=0, keyCodes=[58, 58], actions=[1, 0]}
08-19 19:50:55.457  1550  5276 W PackageConfigPersister: App-specific configuration not found for packageName: com.x8bit.bitwarden.dev and userId: 0
08-19 19:50:55.458  2056  2079 D WindowManagerShell: onKeepClearAreasChanged: restricted={}, unrestricted={Rect(0, 1887 - 1344, 2992)}
08-19 19:50:55.463 19694 19694 W WindowOnBackDispatcher: sendCancelIfRunning: isInProgress=falsecallback=ImeCallback=ImeOnBackInvokedCallback@61726690 Callback=android.window.IOnBackInvokedCallback$Stub$Proxy@cc2e
08-19 19:50:55.468  1550  2228 D CoreBackPreview: Window{6381f72 u0 com.x8bit.bitwarden.dev/com.x8bit.bitwarden.MainActivity}: Setting back callback OnBackInvokedCallbackInfo{mCallback=android.window.IOnBackInvokedCallback$Stub$Proxy@3e9c8fc, mPriority=0, mIsAnimationCallback=false}
08-19 19:50:55.471  3855  4415 I LPRequestState: (REDACTED) [%s] #resolveDesiredLanguagePacks
08-19 19:50:55.473  3855  4415 I LPRequestState: (REDACTED) Assigning language pack %s for request %s
08-19 19:50:55.473  3855  4415 I LPRequestState: (REDACTED) Assigning language pack %s for request %s
08-19 19:50:55.473 19694 19694 I ImeTracker: com.x8bit.bitwarden.dev:afb6b132: onCancelled at PHASE_CLIENT_ANIMATION_CANCEL
08-19 19:50:55.473  3855  4415 I LPDownloadSettingsState: (REDACTED) Defaulting LP download condition to %s as user has not edited settings.
08-19 19:50:55.473  3855  4415 I LPDownloadSettingsState: (REDACTED) Defaulting LP download condition to %s as user has not edited settings.
08-19 19:50:55.474  3855  4415 I ZipLPPopulator: (REDACTED) MDD.addFileGroup(%s, %s)
08-19 19:50:55.474  3855  4415 I ZipLPPopulator: (REDACTED) MDD.addFileGroup(%s, %s)
08-19 19:50:55.474  3855  4415 I ZipLPPopulator: (REDACTED) Updated file group for group '%s' from location: %s
08-19 19:50:55.474 19694 19694 I ImeTracker: com.x8bit.bitwarden.dev:d4582ed4: onRequestHide at ORIGIN_CLIENT reason HIDE_SOFT_INPUT_ON_ANIMATION_STATE_CHANGED fromUser false
08-19 19:50:55.475  3855  4415 I ZipLPPopulator: (REDACTED) Updated file group for group '%s' from location: %s
08-19 19:50:55.475  3855  4415 I ZipLPPopulator: #addNewFileGroups complete
08-19 19:50:55.475 19694 19694 I ImeTracker: com.x8bit.bitwarden.dev:d4582ed4: onFailed at PHASE_CLIENT_VIEW_SERVED
08-19 19:50:55.475  3855  4415 I tlu     : #getPendingPackages
08-19 19:50:55.475  3855  4415 I tlu     : MDD.getFileGroupsByFilter(langpack-domain_xx-XX_ver_zipfile)
08-19 19:50:55.479  2056  2079 D WindowManagerShell: onKeepClearAreasChanged: restricted={}, unrestricted={}
08-19 19:50:55.483  3855  4415 I ModelManagerImpl: (REDACTED) ModelManager has support for: [%s]
08-19 19:50:55.483  3855  4415 I ModelManagerImpl: (REDACTED) ModelManager pending download for: [%s]
08-19 19:50:55.483  3855  4415 I ModelManagerImpl: (REDACTED) ModelManager has installed: [%s]
08-19 19:50:55.483  3855  4415 I AiAiSpeechRecognition: (REDACTED) onEndCheckRecognitionSupport success: %s
08-19 19:50:55.485  4130  5135 I A       : (REDACTED) RecognitionSupportCallback.onSupportResult tag=%s [SD]
08-19 19:50:55.486  4130  5135 I A       : (REDACTED) AiAi installed languages: %s tag=%s [SD]
08-19 19:50:55.486  4130  5135 I A       : (REDACTED) AiAi pending languages: %s tag=%s [SD]
08-19 19:50:55.486  4130  5135 I A       : (REDACTED) AiAi supported languages: %s tag=%s [SD]
08-19 19:50:55.487  4130  5134 I A       : (REDACTED) Current package suspended=%s [SD]
08-19 19:50:55.488  4130  5135 I A       : (REDACTED) GellerException: (%s) for accountId: %s. Skipping account. [SD]
08-19 19:50:55.495  4130  5134 I A       : (REDACTED) SAA bit for setting %s, account %s: %s. [SD]
08-19 19:50:55.495  4130  5134 I A       : (REDACTED) SAA bit for setting %s, account %s: %s. [SD]
08-19 19:50:55.495  4130  5134 I A       : (REDACTED) SAA bit for setting %s, account %s: %s. [SD]
08-19 19:50:55.495  4130  5134 I A       : (REDACTED) SAA bit for setting %s, account %s: %s. [SD]
08-19 19:50:55.503  4130  5135 I A       : (REDACTED) SAA bit for setting %s, account %s: %s. [SD]
08-19 19:50:55.503  4130  5135 I A       : (REDACTED) SAA bit for setting %s, account %s: %s. [SD]
08-19 19:50:55.503  4130  5135 I A       : (REDACTED) SAA bit for setting %s, account %s: %s. [SD]
08-19 19:50:55.503  4130  5135 I A       : (REDACTED) SAA bit for setting %s, account %s: %s. [SD]
08-19 19:50:55.507  4130  4829 I A       : (REDACTED) Dictation is enabled. workprofile=%s [SD]
08-19 19:50:55.508  4130  5137 I A       : (REDACTED) Dictation is not enabled in the currently focused input field: %s workprofile=%s [SD]
08-19 19:50:55.509  4130  5137 I A       : Automatic switching disabled because AiAi is not compatible [SD]
08-19 19:50:55.511  4130  5137 I A       : Automatic switching disabled because lang-id is not available [SD]
08-19 19:50:55.511  4130  5137 I A       : Automatic switching disabled because Gboard setting is not shown [SD]
08-19 19:50:55.511  4130  5137 I A       : Automatic switching disabled because there aren't enough supported keyboard languages [SD]
08-19 19:50:55.513  4130  5137 I A       : (REDACTED) Keyboard notified that eligibility=%s [SD]
08-19 19:50:55.514  4130  5133 I A       : #onKeyboardShown scheduled [SD]
08-19 19:50:55.514  3956  3956 I NgaStateManager: NgaStateManager.setAssistantDictationEligibility():182 AssistantDictationEligibility = 10 [SDG]
08-19 19:50:55.514  3956  3956 I NgaStateManager: NgaStateManager.lambda$setAssistantDictationEligibility$0():194 AssistantDictationEligibility(config, en-GB) = 1 [SDG]
08-19 19:50:55.514  3956  3956 I NgaStateManager: NgaStateManager.setAssistantDictationEligibility():201 AssistantDictationEligibility(inputField) = 10 [SDG]
08-19 19:50:55.514  4130  5134 I A       : (REDACTED) Handling KeyboardVisibilityEvent: %s [SD]
08-19 19:50:55.515  4130  4829 I A       : #onKeyboardShown [SD]
08-19 19:50:55.959  2192  2667 W IPCThreadState: Sending oneway calls to frozen process.
08-19 19:50:56.033   871   900 D CHRE    : @ 29555.492: [ActivityPlatform] type 4, confidence 33
08-19 19:50:56.039  2192  2667 W IPCThreadState: Sending oneway calls to frozen process.
08-19 19:50:56.063  2192  2667 W IPCThreadState: Sending oneway calls to frozen process.
08-19 19:50:56.118  4130  4829 I A       : Keyboard closed, ending dictation. [SD]
08-19 19:50:56.198  2192  2667 W IPCThreadState: Sending oneway calls to frozen process.
08-19 19:50:56.206  2192  2667 W IPCThreadState: Sending oneway calls to frozen process.
08-19 19:50:56.220  2192  2667 W IPCThreadState: Sending oneway calls to frozen process.
08-19 19:50:56.294  2192  2667 W IPCThreadState: Sending oneway calls to frozen process.
08-19 19:50:56.303  2192  2667 W IPCThreadState: Sending oneway calls to frozen process.
08-19 19:50:56.446  3873  7889 I HDM.SodaTrigFrontend: (REDACTED) appOpsListener %s %s
08-19 19:50:56.447  3873  7889 I HDM.SodaTrigFrontend: (REDACTED) Ignoring irrelevant audio permission changes for package %s
08-19 19:50:56.455  3956 27334 I KeyboardActiveSessionStreamManager: KeyboardActiveSessionStreamManager.closeStream():118 Closing stream. [SDG]
08-19 19:50:56.460  4130  5134 I A       : (REDACTED) %s completed by the client [SD]
08-19 19:50:56.461  4130  4829 I A       : (REDACTED) Shutting down %s [SD]
08-19 19:50:56.465  4130  5134 I A       : (REDACTED) Forgetting %s [SD]
08-19 19:50:56.466  3956 27334 I KeyboardActiveSessionStreamManager: KeyboardActiveSessionStreamManager$AssistantEventObserver.onCompleted():252 Assistant event stream completed. [SDG]
08-19 19:50:56.692   935  1018 I WifiHAL : Creating message to get link statistics; iface = 47
08-19 19:50:56.812   935  1018 I WifiHAL : In GetLinkStatsCommand::handleResponse
08-19 19:50:56.812  1550  1874 D ActivityManager: freezing 4569 com.whatsapp
08-19 19:50:56.814   935  1018 E IPCThreadState: binder thread pool (1 threads) starved for 122 ms
08-19 19:50:56.818  1550  1926 D InetDiagMessage: Destroyed 0 sockets, proto=IPPROTO_TCP, family=AF_INET, states=14
08-19 19:50:56.818   554   554 D DisplayDevice: setDesiredMode 4619827535830457088 {mode=60.00 Hz (60.00 Hz(60.00 Hz)), emitEvent=true, force=false}
08-19 19:50:56.819   558  2024 D hwc-display: setActiveConfigWithConstraints:: PrimaryDisplay config(36) test(0)
08-19 19:50:56.819   558  2024 D hwc-display: [PrimaryDisplay] OperationRateManager::onConfig:rate=60
08-19 19:50:56.819   558  2024 I hwc-display: [PrimaryDisplay] OperationRateManager::updateOperationRateLocked:Target@120(desired:120) | Refresh@60(peak:2147483647), Battery:OK, DBV:619(NsMin:1172)
08-19 19:50:56.819   558  2024 I hwc-display: [PrimaryDisplay] setActiveConfigWithConstraints: config(36)
08-19 19:50:56.821  1550  1926 D InetDiagMessage: Destroyed 1 sockets, proto=IPPROTO_TCP, family=AF_INET6, states=14
08-19 19:50:56.821  1550  1926 D InetDiagMessage: Destroyed live tcp sockets for uids={10302} in 5ms
08-19 19:50:56.828  1550  1648 I DisplayDeviceRepository: Display device changed: DisplayDeviceInfo{"Built-in Screen": uniqueId="local:4619827535830457088", 1344 x 2992, modeId 1, renderFrameRate 60.0, defaultModeId 2, userPreferredModeId 2, supportedModes [{id=1, width=1344, height=2992, fps=60.0, vsync=60.0, alternativeRefreshRates=[120.00001], supportedHdrTypes=[2, 3, 4]}, {id=2, width=1344, height=2992, fps=120.00001, vsync=120.00001, alternativeRefreshRates=[60.0], supportedHdrTypes=[2, 3, 4]}, {id=3, width=1008, height=2244, fps=120.00001, vsync=120.00001, alternativeRefreshRates=[60.0], supportedHdrTypes=[2, 3, 4]}, {id=4, width=1008, height=2244, fps=60.0, vsync=60.0, alternativeRefreshRates=[120.00001], supportedHdrTypes=[2, 3, 4]}], colorMode 0, supportedColorModes [0, 7, 9], hdrCapabilities HdrCapabilities{mSupportedHdrTypes=[2, 3, 4], mMaxLuminance=1000.0, mMaxAverageLuminance=120.0, mMinLuminance=5.0E-4}, allmSupported false, gameContentTypeSupported false, density 480, 487.68 x 490.301 dpi, appVsyncOff 6233334, presDeadline 11500000, cutout DisplayCutout{insets=Rect(0, 151 - 0, 0) waterfall=Insets{left=0, top=0, right=0, bottom=0} boundingRect={Bounds=[Rect(0, 0 - 0, 0), Rect(616, 0 - 726, 151), Rect(0, 0 - 0, 0), Rect(0, 0 - 0, 0)]} cutoutPathParserInfo={CutoutPathParserInfo{displayWidth=1344 displayHeight=2992 physicalDisplayWidth=1344 physicalDisplayHeight=2992 density={3.0} cutoutSpec={M 628.75,75 a 43.25,43.25 0 1 0 86.5,0 a 43.25,43.25 0 1 0 -86.5,0 Z @left} rotation={0} scale={1.0} physicalPixelDisplaySizeRatio={1.0}}} sideOverrides={}}, touch INTERNAL, rotation 0, type INTERNAL, address {port=0, model=0x401cecaabcbe1b}, deviceProductInfo DeviceProductInfo{name=HK3-A0B-00, manufacturerPnpId=GGL, productId=0, modelYear=null, manufactureDate=ManufactureDate{week=1, year=1990}, connectionToSinkType=0}, state ON, committedState ON, frameRateOverride , brightnessMinimum 0.0, brightnessMaximum 1.0, brightnessDefault 0.08711423, hdrSdrRatio 1.0, roundedCorners RoundedCorners{[RoundedCorner{position=TopLeft, radius=91, center=Point(91, 91)}, RoundedCorner{position=TopRight, radius=91, center=Point(1253, 91)}, RoundedCorner{position=BottomRight, radius=91, center=Point(1253, 2901)}, RoundedCorner{position=BottomLeft, radius=91, center=Point(91, 2901)}]}, FLAG_ALLOWED_TO_BE_DEFAULT_DISPLAY, FLAG_ROTATES_WITH_CONTENT, FLAG_SECURE, FLAG_SUPPORTS_PROTECTED_BUFFERS, FLAG_TRUSTED, installOrientation 0, displayShape DisplayShape{ spec=1208095170 displayWidth=1344 displayHeight=2992 physicalPixelDisplaySizeRatio=1.0 rotation=0 offsetX=0 offsetY=0 scale=1.0}}
08-19 19:50:56.830  1550  1748 D BrightnessThermalClamper: Thermal status observer already started
08-19 19:50:56.830  1550  1648 W IPCThreadState: Sending oneway calls to frozen process.
08-19 19:50:56.830  1550  1748 D BrightnessPowerClamper: Power throttling data is missing for configuration data.
08-19 19:50:56.830  1550  1648 W IPCThreadState: Sending oneway calls to frozen process.
08-19 19:50:56.831  1550  1648 D DisplayManagerService: Ignore redundant display event 0/2 to 10125/4531
ManuVice commented 3 weeks ago

I have the exact same issue like you. The problem only occurs on android old app and beta app. I use Cloudflare and NPM.

I can reproduce the error on a public vaultwarden server vault.pwbox.de

Desktop app Windows and Linux and browser apps work fine with 2FA

Webserve commented 3 weeks ago

The same error here. Just tried the new beta app. I'm using DUO

BlackDex commented 3 weeks ago

Very strange. I'm just unable to reproduce this on my environment at all. The responses all look ok as far as i can see.

It is going to be very hard to fix this without me being able to reproduce this with an environment i can control.

Webserve commented 3 weeks ago

Very strange. I'm just unable to reproduce this on my environment at all. The responses all look ok as far as i can see.

It is going to be very hard to fix this without me being able to reproduce this with an environment i can control.

Just updated to the latest version and its working now :O. Dont know it was the restart or the update.

(Didn't knew there was a new version :-)

BlackDex commented 3 weeks ago

@ManuVice, I am unable to reproduce this via pwbox either using Bitwarden Mobile Beta. I'm not sure what issue you have, but this is just not reproducible for me in any way.

ManuVice commented 3 weeks ago

Thank you 👍 I will debug my phone and post information if I find something.

ManuVice commented 3 weeks ago

I have tried another phone. With 2024.7.1 2FA is working fine, 2024.8 (18985) same error on my own vault and at pwbox. At Bitwarden.eu I can login with Mobile Beta 2024.8 (18985), but it never asks me to insert 2FA. It will immediately login after my Master-Password (tried it 5 times).

I have create a logcat, but I think its not a problem of Vaultwarden Logcat

BlackDex commented 3 weeks ago

@ManuVice, I'm not seeing any output from the Bitwarden app. That will only happen when using the -qa.apk file. While it also doesn't provide any useful info for me btw, it does show the http requests and responses, but that is all. No error's or backtraces or something like that.

BlackDex commented 3 weeks ago

I have some strange issues my self when trying to check an other issue. I'm unable to use login with device. Even thought the connection/response seems to be 100% identical to the Bitwarden server, except for some values of course since those need to be different.

I have no clue on how to tackle this any further. If there are android developers in this community and able to get more details out of the Bitwarden Android app in some way, please help us :)

nickdollimount commented 3 weeks ago

I'm also having this issue. Got a new Samsung Tab S9 FE and trying to log into the app. I've re-added all my webauthn keys but it fails with that error. Mine is also failing with that error when using email verification codes. Interestingly enough, possibly unrelated, I'm not able to use the 'Log in with device' option either; it errors with, "We were unable to process your request. Please try again or contact us.".

As a workaround, I've removed all the two step options just to get logged in and added them back.

BlackDex commented 3 weeks ago

I just found the issue with Login with device, it's because we return milliseconds instead of microseconds, and that seems to break the client.

@nickdollimount, did adding them again solved all the issues with all the 2FA's?

nickdollimount commented 3 weeks ago

I just found the issue with Login with device, it's because we return milliseconds instead of microseconds, and that seems to break the client.

@nickdollimount, did adding them again solved all the issues with all the 2FA's?

Unfortunately not. I tried re-adding them first when I was initially troubleshooting. I then removed them all again after just to get logged in.

BlackDex commented 3 weeks ago

That strange thing is, that some people have issues with a public system, and if i use that, i have no issues at all. Not sure what could be wrong there or which response is causing the client to work for one, and not for the other.

ManuVice commented 3 weeks ago

did adding them again solved all the issues with all the 2FA's?

For me I remove 2FA, login with email and password and after that I re-add 2FA.

I have tested the last app versions. Last version which works for me with 2FA is 2024.7.2-beta (18910).

Logcat com.x8bit.bitwarden-qa.apk 2024.8.0

BlackDex commented 3 weeks ago

@ManuVice, so even 2024.7.3-beta (18938) breaks for you? And 2024.7.2-beta (18910) does work right?

And which 2FA are you using? Is it just one 2FA? Are all 2FA's broken. So, what i would like to know is this.

  1. Which 2FA's are activated.
  2. What happens if just one 2FA is activated?
  3. Test every 2FA option one at a time, so add email, test it, remove it and then the next option.

Which items break, which do not. If using Webauthn, what kind of device are you using, does it has any more restrictions added to it?

ManuVice commented 3 weeks ago

so even 2024.7.3-beta (18938) breaks for you? And 2024.7.2-beta (18910) does work right?

Yes

  1. Which 2FA's are activated.

Only Authenticator App. I will try the 2. and 3. tommorow

Gerardv514 commented 3 weeks ago

Only Authenticator App. I will try the 2. and 3. tommorow

Which Authenticator app are you using?

ManuVice commented 3 weeks ago

Which Authenticator app are you using?

Aegis

tyde7 commented 3 weeks ago

@tyde7 Are you using Cloudflare as well? As I'm not able to reproduce this at all in any way. Also, you can remove all 2FA options via the Vaultwarden Admin /admin interface.

@BlackDex I'm not using cloudflare, just nginx deployed in a server. And I didn't find an option to disable 2FA completely. I could disable yubikey in admin panel but it doesn't help. Is there anyway I could edit database and remove yubikey from it? I don' have yubikey, I might add a webauthn incorrectly to a yubikey. (I guess, not sure)

BlackDex commented 3 weeks ago

@tyde7, that is only if you are adding a YubiKey as far as i know. That is nothing to do with WebAuthn. If you want to use WebAuthn, you need to select that, and not YubiKey

I have a YubiKey 5C NFC, and that supports both YubiKey and WebAuthn. You only need to have YubiKey settings for the backend to let it work.

You can remove all 2FA Options via the /admin interface at the user overview. There is a link which does this.

ManuVice commented 2 weeks ago

And which 2FA are you using? Is it just one 2FA? Are all 2FA's broken. So, what i would like to know is this.

  1. Which 2FA's are activated.

I'am using Authenticator App with Aegis.

2. What happens if just one 2FA is activated?

Error wrong pin

3. Test every 2FA option one at a time, so add email, test it, remove it and then the next option.

I could only test Authenticator App and E-Mail. To my surprise, email didn't work either... wrong pin. I have tried them one at a time and both at the same time.

YubiKey, Duo and FIDO2 WebAuthn I cant test sorry.

I have checked my installation of vaultwarden, diagnostic in admin interface is fine and my mariadb is set correctly utf8mb4 and utf8mb4_unicode_ci, websocket works correctly.

turnah commented 2 weeks ago

I got the same results, authenticator using authy and also tested using another vault warden session (codes matched). Email and Yubikey failed for me. Tested all individually. Can get in if disabled all 2FA.

And which 2FA are you using? Is it just one 2FA? Are all 2FA's broken. So, what i would like to know is this.

  1. Which 2FA's are activated.

I'am using Authenticator App with Aegis.

2. What happens if just one 2FA is activated?

Error wrong pin

3. Test every 2FA option one at a time, so add email, test it, remove it and then the next option.

I could only test Authenticator App and E-Mail. To my surprise, email didn't work either... wrong pin. I have tried them one at a time and both at the same time.

YubiKey, Duo and FIDO2 WebAuthn I cant test sorry.

I have checked my installation of vaultwarden, diagnostic in admin interface is fine and my mariadb is set correctly utf8mb4 and utf8mb4_unicode_ci, websocket works correctly.

BlackDex commented 2 weeks ago

So just to be clear, you do get the window to select a specific 2FA option? And then you are able to provide a code and press the submit button within the client? But then you are denied access??

Please provide the Vaultwarden logs during these attempts.

ManuVice commented 2 weeks ago

So just to be clear, you do get the window to select a specific 2FA option? And then you are able to provide a code and press the submit button within the client? But then you are denied access??

Thats correct

1 2

Newest Android App 2FA failed

[2024-08-23 11:11:15.130][request][INFO] GET /api/devices/knowndevice
[2024-08-23 11:11:15.133][response][INFO] (get_known_device) GET /api/devices/knowndevice => 200 OK
[2024-08-23 11:11:26.482][request][INFO] POST /identity/accounts/prelogin
[2024-08-23 11:11:26.483][response][INFO] (prelogin) POST /identity/accounts/prelogin => 200 OK
[2024-08-23 11:11:27.366][request][INFO] POST /identity/connect/token
[2024-08-23 11:11:27.499][error][ERROR] 2FA token not provided
[2024-08-23 11:11:27.499][response][INFO] (login) POST /identity/connect/token => 400 Bad Request
[2024-08-23 11:11:44.628][request][INFO] POST /identity/connect/token
[2024-08-23 11:11:44.783][vaultwarden::api::identity][INFO] User ABC@DEF.XYZ logged in successfully. IP: XXX.XXX.XXX.XXX
[2024-08-23 11:11:44.784][response][INFO] (login) POST /identity/connect/token => 200 OK

2024.7.2 (18910) beta 2FA works

[2024-08-23 11:20:26.165][request][INFO] GET /api/devices/knowndevice
[2024-08-23 11:20:26.167][response][INFO] (get_known_device) GET /api/devices/knowndevice => 200 OK
[2024-08-23 11:20:36.564][request][INFO] POST /identity/accounts/prelogin
[2024-08-23 11:20:36.566][response][INFO] (prelogin) POST /identity/accounts/prelogin => 200 OK
[2024-08-23 11:20:37.660][request][INFO] POST /identity/connect/token
[2024-08-23 11:20:37.793][error][ERROR] 2FA token not provided
[2024-08-23 11:20:37.794][response][INFO] (login) POST /identity/connect/token => 400 Bad Request
[2024-08-23 11:20:45.379][request][INFO] POST /identity/connect/token
[2024-08-23 11:20:48.278][vaultwarden::api::identity][INFO] User ABC@DEF.XYZ logged in successfully. IP: XXX.XXX.XXX.XXX
[2024-08-23 11:20:48.279][response][INFO] (login) POST /identity/connect/token => 200 OK
[2024-08-23 11:20:50.632][request][INFO] GET /api/accounts/revision-date
[2024-08-23 11:20:50.634][response][INFO] (revision_date) GET /api/accounts/revision-date => 200 OK
[2024-08-23 11:20:50.860][request][INFO] GET /api/sync
[2024-08-23 11:20:50.908][response][INFO] (sync) GET /api/sync?<data..> => 200 OK
BlackDex commented 2 weeks ago

The logs say it all is ok haha.

BlackDex commented 2 weeks ago

And @ManuVice, you are 100% sure you are running the latest version of Vaultwarden?

LekisS commented 2 weeks ago

Had the same issue, it's coming from the Android Bitwarden Beta App, not Vaultwarden : https://github.com/bitwarden/android/issues/3796

ManuVice commented 2 weeks ago

Iam running 1.32.0 at Docker with image vaultwarden/server:latest-alpine

BlackDex commented 2 weeks ago

Ok, then i actually need the full unedited response from the Vaultwarden server. I would suggest to provide me that information and trust me to not abuse it, but i see no other way on fixing this. To provide this in a secure way, send it directly to me via the Matrix Chat to @blackdex:matrix.org. Or send an image.

I prefer the Matrix way btw.

There are multiple ways to get the output.

  1. Install the Bitwarden -qa.apk as describe above, and fetch the output with adb logcat a few example are also above.

  2. Use the browser, i think the response should still be the same and it might help. You need to use the developer console, and make sure you login using the same 2FA method. Via the developer console you can export the session as a HAR file, which i then can use to see what what send and received. Some info on how to generate a HAR file can be found here: https://requestly.com/blog/how-to-generate-har-files-in-chrome-firefox-safari/

Without this info it will be very difficult to see what is going on here. I really need the unredacted version of this.

BlackDex commented 2 weeks ago

Also, an other method which might work is using tcpflow. This works if Vaultwarden is accessed via a reverse proxy and you do not have the connection between Vaultwarden and the reverse proxy encrypted.

On the host where you have Vaultwarden running execute the following.

sudo tcpflow -i any -C port 8080

Port 8080 here is the port where Vaultwarden is listening on, change that to the port you are running Vaultwarden on.