Commit Graph
12 Commits
Author SHA1 Message Date
Alan Parra a1c7ab71a2 Modify lib/devicetrust/authn to return the DeviceConfirmationToken (#40377)
* Update FakeDeviceService to issue confirmation tokens

* Modify lib/devicetrust/authn to return the DeviceConfirmationToken
2024-04-12 14:34:22 +00:00
Alan Parra fd562794cb Implement client-side device web authentication (#39426)
* Implement client-side device web authentication

* Update TestCeremony_Run
2024-03-18 14:51:53 +00:00
fheinecke b178b8b732 Updated Teleport codebase to AGPL3 license (#35259)
Signed-off-by: Fred Heinecke <fred.heinecke@goteleport.com>
2023-12-01 17:48:14 +00:00
Alan Parra 7008dc1fc2 Implement Linux support for device enroll and authn (#34557)
* Close streams on errors

* Rename fake_windows_device.go to fake_tpm_device.go

* Test enroll/authn ceremonies against Linux

* Allow Linux devices to enroll and authenticate

* Implement Linux TPM methods

* Attempt attestation without the event log on failures
2023-11-14 14:23:30 +00:00
Alan Parra 9db7a1bf96 Implement device data collection for Linux (#34467)
* Rename others.go to device_others.go

* Move various functions to tpm_common.go

* Read device collected data on Linux

* Add the mode param to native.CollectDeviceData

* Add the mode param to collectDeviceData

* Run escalated `tsh device dmi-info`

* Write cached DMI info

* Read cached DMI info

* Avoid asset tags with spaces on them

* nit: Use deviceStateFolderName without a dot on Linux

* Test various data collection scenarios

* Fix macOS/Windows typo
2023-11-14 13:13:22 +00:00
Alan Parra 5c8f91a4dd Add --current-device capabilities to tsh and tctl (#30636)
* Add the `tsh device asset-tag` hidden command

* Implement registration in the fake device service

* Add `--current-device` to `tsh device enroll`

* Add `--current-device` to various `tctl` commands

* s/currentDeviceCommand/canOperateOnCurrentDevice/

* Delete the non-unused `enroll.RunCeremony`

* Document RunAdminOutcome

* fix: Correctly handle partial successes

* nit: Logging
2023-08-18 15:03:50 +00:00
Alan Parra 2033220279 fix: Drop custom OS checking in device authn (#29609) 2023-07-25 22:17:49 +00:00
60a325aa7c Device Trust: tsh privilege elevation for TPM enrollment (#27833)
* Start fleshing out UAC elevation

* Use `runas` and ShellExecuteW to open a child process with elevated privileges

* Add tsh command to re-execute

* Add method to be called in the elevated child process

* Ugly, but working, credential activation in UAC dialogued child

* Add TODO

* Add some further notes/explanation on windows.ShellExecute

* Change error message to match function name

Co-authored-by: Alan Parra <alan.parra@goteleport.com>

* Improve comment

Co-authored-by: Alan Parra <alan.parra@goteleport.com>

* Use `trace.BadParameter` instead of `Errorf`

Co-authored-by: Alan Parra <alan.parra@goteleport.com>

* Use `tpm-activate-credential` instead of `activate-credential`

Co-authored-by: Alan Parra <alan.parra@goteleport.com>

* Remove spurious newline

Co-authored-by: Alan Parra <alan.parra@goteleport.com>

* Move towards more production ready elevated process

* Add stubs for darwin/other

* Use path in state dir for cred activation results

* Fix stub return values

* Fix test missing context.Context pass

* Add additional message when cred activation completes

* Use ShellExecuteExW to get handle to process to wait on

* Improve comment in windowsexec

* Minor stylistic changes from review

Co-authored-by: Alan Parra <alan.parra@goteleport.com>

* Minor adjustments to error handling and logging

* Use `windows` over `syscall`

* Leverage `mkwinsyscall`'s error handling

* Missing param in test

* Always show error, not just when `-d` is provided

* Remove unnecessary trace.Wrap(err)

* Restore cf.Debug check

* Explicitly ignore return values from `FPrintln`

Co-authored-by: Alan Parra <alan.parra@goteleport.com>

* Simplify code

* Add null check to `info.hProcess`

* Minor format changes from review

Co-authored-by: Zac Bergquist <zac.bergquist@goteleport.com>

---------

Co-authored-by: Alan Parra <alan.parra@goteleport.com>
Co-authored-by: Zac Bergquist <zac.bergquist@goteleport.com>
2023-06-16 17:35:03 +00:00
Brian Joerger ae4303c84b Replace global testing variables for device trust with pluggable ceremony interface. (#27039) 2023-06-01 17:37:51 +00:00
Noah Stride 63b0612687 Windows TPM Device Authentication (#26830)
* Start of Windows support for authentication

* Finish clientside implementation of TPM device auth

* Rename getOSType -> getDeviceOSType everywhere

* More efficient byte trimming suggested by Zac

* Use `filepath.Join` rather than `path.Join`

* Add test for device auth

* Improve comments

* Log TPM closure errors

* Rename Auth -> Authn for clarity

* GoDoc for FakeDevice iface

* Use UserConfigDir rather than UserHomeDir
2023-05-30 07:07:12 +00:00
Alan Parra 8dd586b985 Log informative messages for device authn failures (#24849) 2023-04-20 13:50:44 +00:00
Alan Parra 4e07b4dfa3 Implement client-side device authentication (#19377)
Implement the client-side device authentication ceremony.

Device authentication requires a previously registered and enrolled device. In
exchange for solving a challenge, the ceremony allows the user to augment their
certificates with device extensions, which are necessary to clear device-aware
authentication.

Wiring to `tsh` to be done in a follow-up PR.

gravitational/teleport.e#514
2022-12-16 14:24:56 +00:00