keepassxreboot / keepassxc-browser

KeePassXC Browser Extension
GNU General Public License v3.0
1.77k stars 188 forks source link

Plugin fails to save new entry for explore.garmin.com account #1882

Open GregDeitrick opened 1 year ago

GregDeitrick commented 1 year ago

The plugin fails to save a new entry for my explore.garmin.com account. The username is input on one page and the password is input on a second page.

I had the same problem for my walmart.com account login, but after MANY iterations I somehow got that to work. I noticed that I now have a Site Preference for https://www.walmart.com/account/* with "Ignore" = "Enable all features" and "Username only detection" checked. Where is that feature explained in the documentation? I experimented blindly with and without that and got nowhere on my explore.garmin.com account.

On the explore.garmin.com account I get a page asking for my username. There is a green icon from the plugin. I enter that (email) and select Next. The next page asks for the password. There is a grey icon from the plugin. I enter my password and select Next. I am then successfully logged in. I expect to get a banner telling me the plugin saved a new login, and see a new entry for that login to appear in KeePassXC. I see neither.

My settings include a check by "Show a banner on the page when new credentials can be saved to the database."

I am using KeePassXC 2.7.4 and Firefox on a laptop running Debian Bookworm. They were installed using apt.

I got this log from the browser console during a login attempt at explore.garmin.com. While typing in this issue report additional instances of Content Security Policy lines added to the log.

LoginRecipes: getRecipes: falling back to a synchronous message for: https://sso.garmin.com/ LoginRecipes.jsm:297:11 TypeError: gRecipeManager is null LoginManagerParent.jsm:136:3 LoginRecipes: getRecipes: falling back to a synchronous message for: https://sso.garmin.com/ LoginRecipes.jsm:297:11 TypeError: gRecipeManager is null LoginManagerParent.jsm:136:3 Content Security Policy: Ignoring “'unsafe-inline'” within script-src: ‘strict-dynamic’ specified Content Security Policy: Ignoring “https:” within script-src: ‘strict-dynamic’ specified Content Security Policy: Ignoring “http:” within script-src: ‘strict-dynamic’ specified

This is from the console window of the debugger(?) from a login attempt on explore.garmin.com

KeePassXC-Browser: Connecting to native messaging host org.keepassxc.keepassxc_browser client.js:317:13 KeePassXC-Browser: Server public key: zgwRyBkpSlG8zGq6vn2zJdKJFP66bi1p25aBv43QVjk= keepass.js:445:17 [Error ] KeePassXC-Browser - No content script available for this tab. 2 global.js:145:13 [Error client.js:175] KeePassXC-Browser - 15: No logins found global.js:145:13 [Error ] KeePassXC-Browser - Cannot send activated_tab message: Could not establish connection. Receiving end does not exist. 4 global.js:145:13 [Error client.js:175] KeePassXC-Browser - 15: No logins found 5 global.js:145:13 [Error ] KeePassXC-Browser - Cannot send activated_tab message: Could not establish connection. Receiving end does not exist. 2 global.js:145:13 [Error client.js:175] KeePassXC-Browser - 15: No logins found global.js:145:13 [Error ] KeePassXC-Browser - Cannot send activated_tab message: Could not establish connection. Receiving end does not exist. 5 global.js:145:13 [Error client.js:175] KeePassXC-Browser - 15: No logins found 6 global.js:145:13 [Error ] KeePassXC-Browser - Cannot send activated_tab message: Could not establish connection. Receiving end does not exist. 4 global.js:145:13 [Error client.js:175] KeePassXC-Browser - 15: No logins found global.js:145:13 [Error ] KeePassXC-Browser - Cannot send activated_tab message: Could not establish connection. Receiving end does not exist. global.js:145:13 [Error client.js:175] KeePassXC-Browser - 15: No logins found global.js:145:13 [Error ] KeePassXC-Browser - Cannot send activated_tab message: Could not establish connection. Receiving end does not exist. global.js:145:13 [Error client.js:175] KeePassXC-Browser - 15: No logins found 2 global.js:145:13 [Error ] KeePassXC-Browser - Cannot send activated_tab message: Could not establish connection. Receiving end does not exist. 3 global.js:145:13 [Error client.js:175] KeePassXC-Browser - 15: No logins found 4 global.js:145:13 [Error ] KeePassXC-Browser - Cannot send activated_tab message: Could not establish connection. Receiving end does not exist. global.js:145:13 [Error client.js:175] KeePassXC-Browser - 15: No logins found global.js:145:13 [Error ] KeePassXC-Browser - Cannot send activated_tab message: Could not establish connection. Receiving end does not exist. global.js:145:13 [Error client.js:175] KeePassXC-Browser - 15: No logins found 9 global.js:145:13 [Error ] KeePassXC-Browser - Cannot send activated_tab message: Could not establish connection. Receiving end does not exist. 7 global.js:145:13 [Error client.js:175] KeePassXC-Browser - 15: No logins found 2 global.js:145:13 [Error ] KeePassXC-Browser - Cannot send activated_tab message: Could not establish connection. Receiving end does not exist. global.js:145:13 [Error client.js:175] KeePassXC-Browser - 15: No logins found 5 global.js:145:13 [Error ] KeePassXC-Browser - Cannot send activated_tab message: Could not establish connection. Receiving end does not exist. global.js:145:13 [Error client.js:175] KeePassXC-Browser - 15: No logins found global.js:145:13 [Error ] KeePassXC-Browser - Cannot send activated_tab message: Could not establish connection. Receiving end does not exist. global.js:145:13 [Error client.js:175] KeePassXC-Browser - 15: No logins found 2 global.js:145:13 [Error ] KeePassXC-Browser - Cannot send activated_tab message: Could not establish connection. Receiving end does not exist. 2 global.js:145:13 [Error client.js:175] KeePassXC-Browser - 15: No logins found 2 global.js:145:13 [Error ] KeePassXC-Browser - Cannot send activated_tab message: Could not establish connection. Receiving end does not exist. global.js:145:13 [Error client.js:175] KeePassXC-Browser - 15: No logins found global.js:145:13 [Error ] KeePassXC-Browser - Cannot send activated_tab message: Could not establish connection. Receiving end does not exist. 3 global.js:145:13 [Error client.js:175] KeePassXC-Browser - 15: No logins found 3 global.js:145:13 [Error ] KeePassXC-Browser - Cannot send activated_tab message: Could not establish connection. Receiving end does not exist. 11 global.js:145:13 [Error client.js:175] KeePassXC-Browser - 15: No logins found 2 global.js:145:13 [Error init.js:66] KeePassXC-Browser - Cannot send activated_tab message: Could not establish connection. Receiving end does not exist. global.js:145:13

GregDeitrick commented 1 year ago

I now understand a bit more about the plugin and I was able to manually create an entry in KeePassXC and add a Site Preference in the plugin so that the username and password fields of the login are filled by the plugin.

Whether or not this issue is a bug I recommend expanding the documentation to include walk throughs on how to use the plugin for various situations:

If y'all would like to have something like this added to the docs I would be willing to create a first draft.

varjolintu commented 1 year ago

Yeah the documentation clearly needs some updates.

GregDeitrick commented 1 year ago

FWIW, attached are comments I have from my "new user" phase with KeePassXC-Browser. I'm glad that phase is over. But while that phase wasn't pleasant, now that it's over I'm a convert. The comments in the attached file are suggestions and information that I think would have helped me.

Comments on using KeePassXC.odt

droidmonkey commented 1 year ago

Please just paste them here instead of a file

GregDeitrick commented 1 year ago

Please just paste them here instead of a file

Comments on using KeePassXC

These comments are intend for prospective and new users of KeePassXC / KeePassXC-Browser from someone who just recently moved to KeePassXC / KeePassXC-Browser for personal use (March, 2023). For prospective users these comments are intended to provide one perspective on what to expect. For new users these comments are intended to provide warnings and solutions for common challenges and hopefully get you through the new user stage with less time and frustration than you would without them.

Anticipated Advantages

The anticipated advantages of using KeePassXC and KeePassXC-Browser are: • You need to remember only one long password to strongly encrypt your database of web login credentials. (Using and memorizing this password is likely easier than you expect.) • Typically you need only one mouse click to fill in the login credentials for a web site, even if each of your logins has a unique, secure password. • The KeePassXC / KeePassXC-Browser system is simple to understand and use, and works consistently under MacOS, Windows, and Linux.

KeePassXC is a desktop/laptop application which is very good for creating and managing strongly encrypted database files stored on your local computer. These database files are intended for storing passwords and other “small” secrets. They conform to an open standard which is supported by other applications should you have a need for those applications in addition to KeePassXC or should you eventually desire to migrate away from KeePassXC.

The strength of the encryption depends upon the strength of the encryption password, and strong passwords are long and can be awkward to deal with. One popular strategy supported by KeePassXC and many other applications is to create a strong password from 7 randomly selected words, all in lower case. Such a password is long, typically around 50 characters. However, it is relatively easy to type since it is only letters with no capitalization or punctuation. Further, most people can memorize such a list with only a bit of effort during normal use over several days or weeks. Also for most people, keeping the password written on paper is adequately safe and secure until it is memorized in the short term and in case it is forgotten in the long term.

KeePassXC-Browser is a browser extension available for several desktop/laptop browsers that does a fair job at integrating web page logins with an instance of KeePassXC. Once KeePassXC-Browser and KeePassXC are properly configured, the typical workflow is:

  1. Startup KeePassXC
  2. Open an encrypted database file with KeePassXC. This typically requires typing in a long password although there are other options that can work “better” depending on your particular requirements.
  3. Open a browser and tell KeePassXC-Browser to connect to KeePassXC
  4. Browse to a login web page which has NO entry in the open database. a) KeePassXC-Browser will display an icon near the end of the login input fields b) Selecting the icon will do nothing. c) Enter your login credentials.
    d) KeePassXC-Browser will display a message asking if you want to create a new entry for that login page. e) Select the “New” button and the new entry with the login information is saved to the database file.
  5. Browse to a login web page which HAS an entry in the open database.
    a) KeePassXC-Browser will display an icon near the end of the login input fields b) Select the icon at the end of the username field. c) KeePassXC-Browser fills in the username and password fields with the data for that web page from the database file. Advanced users can configure database entries that support login fields in addition to username and password.

Real-World Inconveniences

Mobile

Mobile device apps such as KeePassDroid and KeePassDX can use the same encrypted database files that are used by KeePassXC. These apps do not have great browser integration, however. Instead one must copy/paste login credentials from the app into the browser input fields. The process is practical but not nearly as easy as the laptop/desktop experience provided by KeePassXC / KeePassXC-Browser.

Multiple Devices

KeePassXC provides no functionality for synchronizing database files among multiple devices. You must manually copy database files between devices. Bluetooth file transfer can be a convenient method of copying database files between devices since laptops and handheld devices usually have bluetooth built in and bluetooth adapters for desktops are inexpensive. A remaining inconvenience is to avoid the situation where there are two (or more) copies of the database file but each having unique updates. Merging the updates will need to be done manually.

Browser Integration Annoyances

The typical browser integration workflow described above fails in a number of common situations. Fortunately with a bit of knowledge and experience these failures are more like minor annoyances that can be resolved simply and quickly. Some of the common annoyances are:

• KeePassXC automatically closes the database file in a number of situations including inactivity. When this happens the KeePassXC-Browser icon in the browser toolbar will turn gray.  You will need to select the KeePassXC window and re-enter the (typically long) password to re-open the database file.  On the upside this annoyance will train you first to memorize the password and second to build muscle memory for typing it.

• KeePassXC-Browser typically displays a banner to ask whether you want to save a new entry or update an existing entry when you are logging into a web page with credentials that are different from those in the database.  This banner often disappears before you can interact with it and sometimes before you can see it.
    ◦ Recommended:  increase your opportunity to see the banner
        a) Select the KeePassXC-Browser icon in the browser toolbar
        b) Select the Settings icon to open the Settings page in a tab
        c) Select the General item in the left side menu
        d) Scroll down to Saving Credentials section
        e) Check Show a banner on the page when new credentials can be saved to the database.
        f) Change Number of allowed redirects to infinite by moving the blue dot to the right end of the bar.
    ◦ Recommended:  automatically save new login credentials
        a) Select the KeePassXC-Browser icon in the browser toolbar
        b) Select the Settings icon to open the Settings page in a tab
        c) Select the General item in the left side menu
        d) Uncheck Always ask where to save new credentials
    ◦ Work-Around:  manually create an entry for a new login that KeePassXC-Browser fails to save.
        a) Browse to a login web page
        b) Copy the domain part of the URL
        c) Select the KeePassXC application window
        d) Create a new entry
        e) In the URL field paste the URL copied in step b.
        f) Fill in the username and password for the login
        g) Return to the browser and refresh the page.
        h) KeePassXC-Browser will prompt you to confirm that the database entry is to be used for that login web page.

• The entry in the database file for the login web page was created manually in KeePassXC and the URL is not the same aSs the one actually open in the browser.  For example, at the time of writing, the web site https://[www.newegg.com](http://www.newegg.com/) will redirect to https://secure.newegg.com for account login web pages.  If you browse to a login web page and have an entry for that page in the database file but KeePassXC-Browser fails to fill in the login input fields make sure that the URL in the database is consistent with the URL in the browser.

• The entry in the database file for the login web page was created manually in KeePassXC and IS matched to the login web page.  KeePassXC-Browser may prompt you to confirm that the entry and the page are correctly matched.

• Some web sites have more than one URL for the login web page.  Advanced users can configure the entry in the database file so that the entry is matched to multiple URLs.

• Some web sites have the username input field on one page and the password input field on a second page.  One resolution for this the following:
        1. Copy the domain information for that login page.
        2. Select the KeePassXC-Browser icon in the browser toolbar and open the Settings page.
        3. Select the Site Preferences item in the left side menu.
        4. Paste the domain information from step 1 into the “Add URL manually” input field
        5. Select the Add button.  A line is added to the bottom of the table.
        6. In the new line of the table, ensure that “Enable all features” is selected in the “Ignore” column and the box is checked in the “Username-only Detection” column.
  THIS IS A KEEPASSXC-BROWSER CONFIGURATION.  If you use a different browser on the same computer, or copy the database file to another device and user a browser on that other device, you must add this site preference to the configuration of the KeePassXC-Browser on that other browser.  At this time the author doesn’t know if there is a mechanism for synchronizing KeePassXC-Browser site preferences across different browsers and/or devices.

• KeePassXC-Browser has a button to “Choose custom login fields”.  I have not yet needed that.  But I did try it a bunch of times when I was having problems and had no clue what to try.  My guess is that when this is what you need it will be very obvious; if it isn’t obvious your solution lies elsewhere.