-
Notifications
You must be signed in to change notification settings - Fork 14
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add a way to store/fill in user names #22
Comments
|
These questions aren't as obvious as they seem ;)
Currently, if you want to change the password name you have to create a new password. This is more intuitive than allowing to edit the password name as that operation modifies the generated password. That's the reason why Easy Passwords currently doesn't have a concept of editable password metadata. And the question here still is, do we need to complicate the UI by adding editable metadata or is changing the username retroactively uncommon enough that recreating the password entry would be acceptable.
We are already "guessing" password fields and some users considered that not intuitive which is why we now have a mixed approach (only guess if the currently focused field isn't a password field). Same will be the case for usernames, some users might prefer selecting the username field explicitly rather than deal with unexpected implicit behavior. One possible flow would be right-clicking a form field and selecting "Remember for this password" from the context menu. The advantage here: we can associate form data with a password without (much) additional UI, and we don't have to limit it to user names. Challenge: how does one choose the right password, in particular during registration when the password doesn't exist yet? Additional complication: can it happen that people will associate sensitive data with their passwords? Should we encrypt stored form data? And even if we don't, can we show it in the "All passwords" list in a way that people can restore this data manually? |
Good question. Well looking through my vault I can see this metadata:
Personally I don't find any of these useful apart from the user name. Being able to add tags to entries might be nice but with a decent text search feature this isn't very important. So perhaps you're right and we can completely avoid adding editable metadata, putting the user name into the password's salt instead. I guess in the future we could even add a wizard that helps the user change the user name / name for an entry. It could explain that the password must change too, saving the old password as a legacy one until the user is finished. That would be fine for me, since changing the user name is a pretty unusual thing to do and changing the password on a site at the same time as changing the user name wouldn't be hard. |
Let's try it with the following design:
|
Sounds really good to me, some thoughts:
|
Trouble is, typically the first form submitted on a website is going to be very different from the usual one (registration vs. login). Also, Mozilla seems to have had some trouble with password change forms (see https://bugzilla.mozilla.org/show_bug.cgi?id=1243722 for example).
That was the idea with the second flow above - rather than creating a password first and associate the user name with it then, fill in user name on the registration form, right-click it and go into the password creation flow from the context menu - with the user name already being preset. But we need a field name from somewhere (and I'm concerned about websites that use different field names in registration and login forms).
I'm afraid that this will not be sufficient, there are lots of possible variations here. Looking at what Firefox is doing, they search backwards from the password field assuming that the first text/email/url field will be the user name. But they also have to maintain chrome://passwordmgr/content/recipes.json for the "special" cases (granted, this is a rather short list).
As indicated above, this would be optional - the user would have to request form fields to be displayed explicitly. Similar functionality is planned for passwords in #11.
LastPass stores these notes on the dummy "sn" host name. With the spec here, you could do that manually - open a special page like "New Tab", go into passwords, edit site name into "sn" and add a password. In future we might add UI to get there easier, but that's definitely unnecessary in the first step. |
Yea, fair enough. That sounds fine to me for now, I just don't want to lose any data when I migrate. Any opinion on the dummy host name we'll use for these? Simply
Good point, I didn't consider registration forms. I guess when the user is recording a new password they might have already registered on the site, but we don't know either way. Tricky. Also this makes me think, what's to stop the user using our form context menu for the user name field during registration? I guess then we'd have exactly the same problems. Personally I still think we should treat the user name as a special case, prompting for it when recording a new password. It's true the approach of guessing which field to fill won't be perfect, but neither are the alternatives. With the context menu interaction you've suggested for recording form fields manually the user will have the power to do something when the magic doesn't work, but the rest of the time something sensible will happen. (If we don't treat the user name field as a special case we will also have trouble migrating people's data from LastPass. Since LastPass doesn't store the field name for the user name field we won't know where to put it otherwise. Sure we could throw them all in field called "user" or something, but then form filling would completely break, hardly a nice first experience for someone trying Easy Passwords. I have just over 200 passwords saved, fixing the form fields for every one would be a lot of work and probably more than we could expect from the average migrating user...) |
No, I wouldn't go with anything like that, in order to avoid conflicts with real hosts. It should definitely be some reserved domain name. It seems that Ok, here is the alternative design:
Advantage here is that filling in user names is usually covered without requiring any additional actions, in particular nothing as obscure as context menus. Also, since user names can be considered non-confidential it simplifies dealing with them a lot. |
Sounds good to me 👍. |
The reason is mainly sites that require you to change your password regularly - there you would generate a new password by choosing a different password name but keeping the user name the same. It might indeed be better to have a "User name" field here, with a small link below it: "I want a password name that is not the user name" (tooltip: "This is useful if you need to generate a new password for the same user name, different password name will result in a different password"). Clicking this link will hide it and show the second field as you have it in the screenshot above. This approach also makes the placeholder of the password name field unnecessary. It should also be a good idea to display both password name and user name in the passwords list rather than moving this information into the tooltip as proposed above. It should really be "password name (user name)" if a user name is set. Note that user names which are identical to the password name should not be saved in the first place. |
Ah, I didn't consider the case of the user needing to generate a new password for a site. I like your idea for the password creation form, keeping things simple for the majority of the time whilst still allowing power users to tweak the password name if they want. |
The alternative would be relabeling the current password name as "user name" and merely introducing an optional (numeric?) "revision" field - both would go into the password calculation. This would more obviously serve the purpose of regenerating passwords. Modifying the user name will not be possible then, one can view this both as an advantage and disadvantage. |
Great idea, that would make this all much simpler to use, let's do that. (I think it would be quite a nice feature too, being able to regenerate an old revision again should it be required. Much easier than thinking "hmm what did I put for the password name 2 months ago?".) Also if we start the revision field as an empty string instead of zero then we don't even have to implement it right away, since the seed for the first revision will be the same either way. (In the mean time if one of us really needs to generate a new password for a website I guess we can just change the password length!) |
Well, one more design that will hopefully make things more obvious:
This approach works without any editable metadata - changing user name or revision requires creating a new password. |
…st internal data representation accordingly
The details are still to be determined. However, it's clearly important to store the user name in addition to the password. It should be filled in automatically as well. Password name cannot be used as user name (at least not in all cases) - some websites require frequent password changes, so password name needs to change. UI-wise it will probably boil down to an optional "User name (if different from password name)" field.
To be determined:
Usually, the user name field should be the one preceding the password field - is this a safe assumption?
The text was updated successfully, but these errors were encountered: