49 Commits
Author SHA1 Message Date
Maja Cieślak 007a84c4c2 Adjust proto comments after implementing Approve and Deny RPCs (#69642) 2026-08-13 21:07:18 +00:00
Maja Cieślak a93db5895b Add missing license header (#69648) 2026-08-13 20:51:11 +00:00
Maja Cieślak efe6598170 Add audit events for approving & denying an EnrollPairing (#69505)
* Add audit events for approving & denying an `EnrollPairing`

* Add web changes

* Drop `device.enroll_pairing.approve` from `eventGroupTypes`

* "not approved" -> "denied"

* Update wording around `device.enroll_pairing.approve` emitted on failure

While working on the RPC handler implementation, I realized that
`TV011W` is not emitted on MFA failures. This commit updates the godoc
and the fixture accordingly.

* Update `deny` audit event wording around expiry

In a typical scenario there will be no one to observe expiry, so this
event won't be emitted on enroll pairing expiry. I'll update the RFD
accordingly soon. For now just putting this here since I have no other
outstanding OSS PRs.

* Remove no longer necessary TODO comment

"Retryability" will be implemented one level above the storage layer, in
the RPC handler, so the comment here is no longer necessary.

* Remove `error` field from `device.enroll_pairing.deny`

Now that it's only going to be used for an explicit user denial, there's
no need to carry the `error` field.
2026-08-12 15:11:58 +00:00
Maja Cieślak 481ff4f469 audit/types.ts: Remove unused eventGroupTypes (#69517) 2026-08-11 08:34:21 +00:00
Maja Cieślak 54a2cfd06c Add RPC definitions for approving & denying EnrollPairing (#69458) 2026-08-10 09:00:23 +00:00
Maja Cieślak 4aa80c63ec EnrollPairingService: Add methods for approving and denying (#69459) 2026-08-10 09:00:16 +00:00
Maja Cieślak 5351582917 lib/client/proxy/insecure: Add support for api/client.ALPNConnUpgradePing (#69355) 2026-08-07 07:00:29 +00:00
Maja Cieślak d1381cab23 tctl devices add: Derive --os flag from devicepb.OSType (#69136)
* `tctl devices add`: Derive `--os` flag from `devicepb.OSType`

* Base accepted `--os` values on the api layer
2026-07-31 08:36:00 +00:00
Maja Cieślak f865d1eac5 Update the authors on Maja's RFDs (#69080) 2026-07-28 13:30:27 +00:00
Maja Cieślak b8a5ee291b Add missing members to events.OSType (#69058) 2026-07-27 15:30:40 +00:00
Maja Cieślak 8c8a9e0f71 RequestEnrollPairingApproval: Accept pairing rather than token (#68836)
* RequestEnrollPairingApproval: Accept pairing rather than token

* Move nil device test to table

* Assert the `CompareFailed` message
2026-07-27 14:10:03 +00:00
Maja Cieślak e71a23f144 Add audit events for CreatePairedDeviceEnrollToken (#68835)
* Add audit events for CreatePairedDeviceEnrollToken

* Add Web UI formatter for new audit events

* Update audit events reference

* Use `OSType` from generated protos
2026-07-24 10:20:49 +00:00
Maja Cieślak dbe4a8b23e Deprecate TrustedDeviceOSType in favor of TrustedDevice['osType'] (#68834)
* Deprecate `TrustedDeviceOSType` in favor of `TrustedDevice['osType']`

This is because in another commit we're going to introduce `OsType`
which mirrors the teleport.devicetrust.v1.OSType proto enum and has
numeric values as member values.

`TrustedDevice['osType']` is `OSType` converted into a string on the API
layer.

* Add type imports
2026-07-24 09:17:36 +00:00
Maja Cieślak 9b0bc1d39a EnrollPairing: Add get by token & requesting approval (#68256)
* Atomically create index by token for `EnrollPairing`

* Add methods for getting enroll pairing by token and requesting approval

* Use table tests

* Validate enroll pairing device if it's not nil

* Use `indexItem.key` instead of hashing the token again

* Add messages to `trace.Wrap`

* Use const for error message

* Add TODO comment about making the call retryable

* Use smaller scope
2026-07-14 11:22:43 +00:00
Maja Cieślak 5bd571f02f Add missing type modifier to FilterMap re-export (#68076) 2026-07-13 08:46:36 +00:00
Maja Cieślak 7666ed630b Set up public DT service proxy (#68255) 2026-07-13 08:44:33 +00:00
Maja Cieślak 62adf315b5 Add initial protos for public Device Trust service (#68254)
* Add initial protos for public Device Trust service

* Store a subset of `DeviceCollectedData` on `EnrollPairing`

* Regenerate protos

* Fix typo
2026-07-02 14:09:42 +00:00
Maja Cieślak b828b2ae7f oslog_darwin.go: Add blank line after build constraint (#68231) 2026-06-30 11:35:36 +00:00
Maja Cieślak ed40e1c66d Add mobile_device.create_enroll_token permission; make boombuler/barcode a direct dep (#67863)
* Add `mobile_device` kind for `mobile_device.create_enroll_token` permission

* Update preset-roles.json

* Add `mobile_device.create_enroll_token` to user ACL

* Make boombuler/barcode a direct dep

It's used in teleport.e to generate the QR code that's going to be
consumed by the mobile app.

* Enable defaultAllowRules to return roles which need `buildType`

* Backfill device-admin role

* Add `mobile_device.create_enroll_token` to admin role
2026-06-26 15:53:20 +00:00
Maja Cieślak 6b1ecf2c01 Add protos and OSS storage for EnrollPairing (#67862)
* Add RPCs for creating and getting EnrollPairing

* Add storage service for EnrollPairing

* `AWAITING_UNAUTHORIZED_CLIENT` -> `AWAITING_DEVICE`

* Mention RFD 32e in the comment for EnrollPairing message

* Use generic service to implement service for `EnrollPairing`

* Remove fake clock from tests

* Use a want object in tests

* Use `ErrorAs` for error-type assertions

* Add workaround for DynamoDB issue

* Capture just clock as a field

* Do not set PageLimit

* Copy fields to `want` rather than adding ignores

* Log and ignore error from GetResource on CreateEnrollPairing

* Update the workaround comment to refer to #68038

* Fix imports
2026-06-23 10:24:02 +00:00
Maja Cieślak 4f97883437 Add TestLoginShell to avoid lib/web tests polluting shell history (#67594)
* Add `TestLoginShell` to avoid lib/web tests polluting shell history

* Use `go:embed` to avoid problems with cwd

* Add regression test to make sure `noHistoryShell` works

* Remove unnecessary comment
2026-06-18 14:57:48 +00:00
Maja Cieślak 813776fd7a Add Xcode project for Teleport Verify; add gomobile as tool dep (#67750)
* Generate Xcode project for Verify

* Set Swift version to 6; remove macOS and Vision as destinations

* Handle `teleport://` links and add enrollment screen

* Avoid building macOS-specific stuff on iOS

This is needed for gomobile to build our stuff from lib/mobile from the
next commit.

* Add `lib/mobile/verify/enroll` compiled with gomobile

* `lib/mobile`: Temporarily use private Device Trust service

The public gRPC service exists on the demo branch but not on this
branch. In order to make it possible to compile
`lib/mobile/verify/enroll`, temporarily use the private service which
has similar RPCs.

* Run `make go-mod-tidy-all`

* Make Swift app connect to public DT service on "Request Now" tap

* mobile: Add sheet for enroll request status

* Revert go.mod changes

This reverts commit b9af7a7614 and
2c00ecd7fa.

* Add `build.assets/tools/gomobile`

* Move gomobile back to main go.mod

This reverts commits 9b2a6c4ea3 and
a83c2959fa.
2026-06-16 17:29:26 +00:00
Maja Cieślak 0860626eae StepHeader: Accept <Box> props (#67806) 2026-06-15 16:28:25 +00:00
Maja Cieślak 4943a39420 Mention mobile device sync in Device Trust MDM integration docs (#67612)
* Update Jamf docs with new conf fields and how to sync mobile devices

* Mention in Jamf docs how to update the plugin

* Mention iOS and iPadOS devices in Intune docs

* Mention that "Read Mobile Devices" is needed for mobile devices only

* Use subheadings rather than tabs

* Add an example serial number to docs/cspell.json
2026-06-12 17:02:12 +00:00
Maja Cieślak 5db931b71b Add missing type modifier to ResourceIconName import (#67554) 2026-06-11 13:16:46 +00:00
Maja Cieślak 0f503997db Update tmp and brace-expansion (#67448)
* Update tmp

* Update brace-expansion
2026-06-08 10:34:21 +00:00
Maja Cieślak 256b28e84c Deprecate async state hooks (#67366)
* Deprecate async state hooks

* Ban imports of async state hooks across packages

* Exempt legacy call sites from the ban

* Update RFD 197's number and state
2026-06-03 08:45:22 +00:00
Maja Cieślak d6e0e5a208 Update protos to enable syncing iOS/iPadOS devices through MDM integrations (#65834)
* Add iOS and iPadOS as new OSType values

* lib/msgraph: Add `Model` field back to `ManagedDevice`

We need it to differentiate between iPhones and iPads in e/lib/intune.

* Add device_type to JamfInventoryEntry

* Use a separate block for computer types

* Add godoc and examples for `ManagedDevice.Model`

* Add os_types to SyncInventoryStart
2026-06-02 13:08:26 +00:00
Maja Cieślak 5e0f7be25d Bring back single Dependabot group for UI updates (#67060) 2026-05-29 10:02:39 +00:00
Maja 111b7c9962 Fix flaky vnetContext.test.tsx (#67037)
* Make `VnetContext` tests depend on action order rather than no of calls

* Explain the idea behind acknowledgement/dismissal being "sticky"

* Update Jest mock outside of `act`
2026-05-25 17:42:40 +00:00
Maja c118891fb0 Audit event reference: Update tests and instructions on regeneration; fix typo (#66994)
* Fix typo in T1014W (`headdless` -> `headless`)

* Use snapshot tests in gen-event-reference.test.ts

* audit-events.mdx: Update instructions on how to regenerate file
2026-05-22 16:00:49 +00:00
Maja 50e5e98b69 Remove protobufjs 8.0.1 by updating opentelemetry package (#66831) 2026-05-18 15:55:33 +00:00
Maja 212f0acc26 Add leaf cluster to MFA prompt and fix resource casing; Improve look of MFA modal in Connect (#66714)
* Improve look of ReAuthenticate in Connect

* Display `<Text>` for reason only if reason is present.
* Drop "from trusted cluster" being appended to reason. This will be
  moved to api/mfa/prompt.go.
* Center text for browsermfa and sso so it matches webauthn.
* Consistent comma at the end of text for each method.

* Add leaf cluster name to prompt reason for MFA

* Fix resource type casing in MFA prompt

* Assert MFA prompt in tests
2026-05-14 07:27:11 +00:00
Maja d8a5a2ca8b Update protobufjs, ip-address, @babel/plugin-transform-modules-systemjs (#66699)
* Update protobufjs 7.5.5 to 7.5.7

* Dedupe packages to remove vulnerable deps used by protobufjs 8.0.1

* Update `@babel/plugin-transform-modules-systemjs`

* Update ip-address
2026-05-14 00:26:18 +00:00
Maja 7d5686cbdf dbcmd: Default to sqlcmd for sqlserver (#66702) 2026-05-13 15:02:41 +00:00
Maja 14d09364e5 webclient: Check Content-Type before parsing non-200 ping response (#66706)
* webclient: Check Content-Type before parsing non-200 ping response

* ClusterLogin: Replace "cluster auth preferences" with "authentication methods"
2026-05-13 13:00:29 +00:00
Maja a0b8072b84 Update e ref (#66674) 2026-05-13 08:38:45 +00:00
Maja c217bdede8 app access: Serve HTML page for browsers on ErrTrustedDeviceRequired (#65878)
* Serve HTML page for browsers on `ErrTrustedDeviceRequired`

* Add notes to docs sections linked to in the product
2026-05-12 16:18:49 +00:00
MajaandTiago Silva 3fd8ee76ba Extract gRPC bidi proxy to separate package and fix edge cases (#66143)
* Extract gRPC proxy func to separate package

* Use debug logs for err on `stream.Recv()`

* Add regression test for treating server response as authoritative

The current buggy code path: `forwardServerToClient` returns nil on
server trailer, main waits on `<-errCh`, `forwardClientToServer` is
parked in `client.Recv()` until either the connection is torn down
(hang) or the client happens to send another message whose `server.Send`
fails on the half-closed upstream (reshape: server's nil becomes a
proxy-side error).

* Treat server response as authoritative & propagate client-side errors

* Migrate tests to use a custom gRPC service

* Test if errs from client.Recv and server.Send are surfaced

* Fix flaky `TestProxyBidiStream_ReturnsEOFWhenServerReturnsEarly`

* Don't set `clientErrCh` to `nil`

* Use existing gRPC service instead of special one for tests

* Forward header and trailer to client; use bufconn in tests

Co-authored-by: Tiago Silva <[email protected]>

---------

Co-authored-by: Tiago Silva <[email protected]>
2026-05-11 10:38:30 +00:00
4b0c4fc421 Fix Jamf plugin duration serialization (#65944)
* Fix Jamf plugin duration serialization

Co-authored-by: Edoardo Spadolini <[email protected]>

* Update comment, simplify `UnmarshalJSONPB`

Co-authored-by: Edoardo Spadolini <[email protected]>

---------

Co-authored-by: Edoardo Spadolini <[email protected]>
Co-authored-by: Edoardo Spadolini <[email protected]>
2026-04-24 15:10:15 +00:00
Maja b2621d9d6c Update e ref (#66123) 2026-04-24 10:23:29 +00:00
Maja 57c60b6052 Introduce DurationStringForJamfSpecV1 as an alias (#65940) 2026-04-24 08:32:50 +00:00
Maja 4056dfd009 Fix ReportSecrets hanging on upstream error (#66062)
* Add regression test

* Add regression test for waiting for correctly waiting for upstream

* Fix ReportSecrets hanging on upstream error

* Replace `context.AfterFunc` with `defer`
2026-04-23 15:28:11 +00:00
Maja 88e883fd16 Re-export everything from Icon, add IconComponentType (#65974) 2026-04-22 16:55:19 +00:00
Maja 68cb8a2af2 VNet macOS: Handle "No such process" race condition on the very first launch (#65169) 2026-04-17 11:38:34 +00:00
Maja a844145510 Connect: Make menu bar action reliably show app window (#65705)
* Make `showWindow` reliably focus on the app window

* Clean up callsites of showWindow
2026-04-15 08:57:04 +00:00
Maja 361553cac2 Remove nested Oxlint config for teleterm (#65691) 2026-04-14 15:19:43 +00:00
Maja 414d5e75ac Add MDM token to "Token resource reference" and "Supported token types" (#65696) 2026-04-14 14:03:47 +00:00
Maja 5b6e14f86b DocumentCluster: Don't fetch user prefs until cluster is connected (#65693)
* DocumentCluster: Don't fetch user prefs until cluster is connected

* UnifiedResources.test.tsx: Add leaf cluster to state
2026-04-13 17:19:44 +00:00