[v18] Add Browser MFA#65239
Conversation
192b674 to
d3fdd2c
Compare
|
I'm doing a full review right now. Just curious, did you test with VNet? I learned last week that MFA implementation is a separate code path than |
There was a problem hiding this comment.
In addition to manual testing VNet, can we also add test cases for testing backwards compatibility if a newer client that tries browser MFA with an older cluster that doesn't support it if it makes sense? I'm expecting it should fail fast, but I think it is worth checking since we might have users running newer clients that may try to connect to older clusters.
cthach
left a comment
There was a problem hiding this comment.
Changes look OK overall and comments are mostly questions or nits. They are not blocking.
Please just perform the additional manual testing for VNet and older Teleport clusters before merging.
Thanks for the thorough review, @cthach. I tested VNet, which worked as it uses similar code paths to the MFA prompts that are triggered and resolved inside of Connect. I had tested old/new client/servers, but had forgotten to mention that in my test plan, added now. |
d3fdd2c to
970ee0d
Compare
[Browser MFA] Add protobuf and config (#63831) [Browser MFA] Add proto for Browser MFA feature (#64048) [Browser MFA] Add CompleteBrowserMFAChallenge gRPC (#63873) [Browser MFA] Rename browser mfa config name (#64980) [Browser MFA] Add BrowserMFARequestID to CreateAuthenticateChallenge (#63945) [Browser MFA] Add Browser MFA to challenge request flow (#63936) [Browser MFA] Add initial requests for browser MFA process to client tools (#64301) [Browser MFA] Add tsh callback handling for webauthn response (#64461) [Browser MFA] Add Browser MFA to presence checks (#65052) [Browser MFA] Add browser MFA path to MFA finish flow (#64523) [Browser MFA] Add Browser MFA to Connect (#64887) [Browser MFA] Add Browser MFA UI (#64692) [Browser MFA] Fix formatting in moderated sessions (#65236) [Browser MFA] Add Browser MFA ceremony tests
This is a backport of the Browser MFA feature to v18. The RFD for this feature can be found here.
I've had to make some modifications to get this working with v18:
MFAServicebecause some Browser MFA RPCs/proto was added to that service, added files are:challenge.protoservice.protobuf.yamlgrpcserver.gomessage MFADevicehas been moved out oftypes.protoin tomfa_device.proto, so I've movedmessage BrowserMFADeviceback for the backportRouteinTeleport.tsxto useelementinstead ofcomponentto work with v18's version of react-router, along with test router changes inBrowserMFA.test.tsxchangelog: Added browser-based MFA option to tsh, enabling passkey/biometric authentication via the browser
Manual Test Plan
Test Environment
Using a mix of v17/v18 clients and servers, testing with OSS and
eTeleport (with SSO via Keycloak) locally against with these resources:For Browser MFA to be offered to a client, a WebAuthn device must be registered for that user.
Test Cases
--mfa-mode=browseruses Browser MFA--mfa-mode=browserfalls back to Browser MFA when no keys present locally--mfa-mode=browseruses Browser MFA--mfa-mode=browserfalls back to Browser MFA when no keys present locally--mfa-mode=browseruses Browser MFA--mfa-mode=browserfalls back to Browser MFA when no keys present