Skip to content
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

Improving Passkey Support #19314

Closed
8 tasks done
benarent opened this issue Dec 12, 2022 · 13 comments
Closed
8 tasks done

Improving Passkey Support #19314

benarent opened this issue Dec 12, 2022 · 13 comments
Assignees
Labels
feature-request Used for new features in Teleport, improvements to current should be #enhancements passwordless platform-security ux

Comments

@benarent
Copy link
Contributor

benarent commented Dec 12, 2022

Tasks (in order of priority)

  1. bug mfa test-plan-problem ui
    bl-nero
  2. bl-nero
  3. bl-nero
  4. bl-nero
  5. 3 of 4
    bl-nero
  6. bl-nero
  7. feature-request
    bl-nero
  8. feature-request
    bl-nero
@benarent benarent added feature-request Used for new features in Teleport, improvements to current should be #enhancements ux passwordless labels Dec 12, 2022
@codingllama
Copy link
Contributor

Some interesting web-specific advice here, including auto-fill, "upselling" logins, etc: https://passkeys.dev/docs/use-cases/bootstrapping/. All interesting to consider.

@twakes
Copy link
Contributor

twakes commented Dec 14, 2023

I have also noticed that you can not log into Teleport Connect as Connect expects a hardware security token (see attached screenshot). Using the fingerprint reader does not work. This also breaks the flow for Connect My Computer since that requires the use of Teleport Connect.

So the onboarding flow for Connect My Computer (which I think was created to show fast time to value) does not work if you use passwordless login.

Screenshot 2023-12-14 at 10 56 58 AM

You also can not go back and create a password login because that flow requires a hardware key or authenticator app.

Screenshot 2023-12-14 at 11 30 42 AM

@codingllama
Copy link
Contributor

FYI @ravicious, see Taylor's comment above.

@ravicious
Copy link
Member

I'm not familiar with how macOS passkeys support interacts with Touch ID and our auth. However, doesn't the problem described by @twakes boil down to Touch ID being scoped by application? If you add a passwordless Touch ID device to your Teleport account through a browser, you cannot use this device to log in through tsh or Connect.

It's still an UX issue, but it's not unique to Connect. Well, it's two issues:

  1. The UI in Connect focuses on hardware keys, just as this GitHub issue describes.
  2. Touch ID registrations are scoped per app and we don't have a good way of handling that for the user. Currently, the user needs to know that this is the case and they need to register a Touch ID device through a browser and through tsh.

See also #35770 that I just created, the passwordless docs should explain how Connect interacts with Touch ID.

@codingllama
Copy link
Contributor

There's really no way around the per-app limitation for the credentials, that's baked into macOS' security model. Using the "modern" version of macOS passkeys could solve it, but sadly it's gated behind APIs we can't use either (as they require an explicit associated domain, and we can't do that because of on-prem installs). We could do some of it for Cloud, but not on-prem.

@ravicious thanks for taking a look and for the insights.

@twakes, did you register your passwordless credential directly in the browser, using touch ID? Have you tried the same flow using a Yubikey (or similar) as the passwordless authenticator?

@twakes
Copy link
Contributor

twakes commented Dec 15, 2023 via email

@codingllama
Copy link
Contributor

If using Touch ID breaks a lot of UX, perhaps we don’t allow for it?

Finding out what kind of authenticator is used ranges from difficult to impossible depending on cluster settings. Cluster admins could forbid Touch ID using attestation settings, although many other authenticators might end up being blocked in process.

This is in a way the root of the problem, as we often can't say if the user has only Touch ID, so it makes it difficult to show a good error message. Adding to that, if the user isn't authenticated yet we shouldn't leak anything about what MFA devices they have. We could, based on cluster settings (specifically "connector=passwordless"), make an educated guess about the problem, but that won't catch all cases.

Forbidding Touch ID also feels bad, as it is very practical and has good security properties. I don't have any great suggestions at the ready, but my gut is that we should figure out a way to show better errors or somehow make it work.

@twakes
Copy link
Contributor

twakes commented Dec 15, 2023

Forbidding Touch ID also feels bad, as it is very practical and has good security properties. I don't have any great suggestions at the ready, but my gut is that we should figure out a way to show better errors or somehow make it work.

I agree

@OskyEdz
Copy link

OskyEdz commented Feb 28, 2024

My passkey manager (Bitwarden) supports adding, removing and verifying it's passkey. But it does not support logging in with that passkey manager.

What I mean is that when adding a passkey Teleports first prompts the browser for any available passkey managers, where Bitwarden responds. But when it comes to accually log in to Teleport it will skip/fail to prompt Bitwarden and go for Windows Hello/Hardware keys.

Teleport version: 15.0.2
Bitwarden version: 2024.2.0

Edit: Browser Extensions for Chromium based browsers

@codingllama
Copy link
Contributor

@OskyEdz I don't think there's much we can do here, it sounds like this is all browser behavior. You can check https://webauthn.io/ and see if you can repro the problem there, if you can then I suggest opening an issue in your browser of choice (or even Bitwarden itself).

@OskyEdz
Copy link

OskyEdz commented Feb 28, 2024

@codingllama I'm mostly confronting to there being a difference in the code between the Teleport login screen and the account setup options screen for MFA's and Passkeys.

There also seam to be a more overall issues with browser extension passkeys.

The way it is done on the login screen might be the most secure way and it works on the settings page because it is an internal page and does not need all the bells for detecting attacks.

@naimo84
Copy link

naimo84 commented Mar 8, 2024

@codingllama I'm mostly confronting to there being a difference in the code between the Teleport login screen and the account setup options screen for MFA's and Passkeys.

I can second this. For me passkey is working on the options Screen, but not in the login page. I'm also using bitwarden

@codingllama
Copy link
Contributor

@OskyEdz or @naimo84, could you please open a bug report for your problem and add as much detail as you can, in particular reproduction steps? I just ran some tests but it looks alright to me.

https://github.com/gravitational/teleport/issues/new?assignees=&labels=bug&projects=&template=bug_report.md

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature-request Used for new features in Teleport, improvements to current should be #enhancements passwordless platform-security ux
Projects
None yet
Development

No branches or pull requests

8 participants