You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tailscale/ipn
Nick Khyl 5bc9fafab8 ipn/ipnlocal: always send auth URL notifications when a user requests interactive login
This PR changes how LocalBackend handles interactive (initiated via StartLoginInteractive) and non-interactive (e.g., due to key expiration) logins,
and when it sends the authURL to the connected clients.

Specifically,
 - When a user initiates an interactive login by clicking Log In in the GUI, the LocalAPI calls StartLoginInteractive.
   If an authURL is available and hasn't expired, we immediately send it to all connected clients, suggesting them to open that URL in a browser.
   Otherwise, we send a login request to the control plane and set a flag indicating that an interactive login is in progress.
 - When LocalBackend receives an authURL from the control plane, we check if it differs from the previous one and whether an interactive login
   is in progress. If either condition is true, we notify all connected clients with the new authURL and reset the interactive login flag.

We reset the auth URL and flags upon a successful authentication, when a different user logs in and when switching Tailscale login profiles.

Finally, we remove the redundant dedup logic added to WatchNotifications in #12096 and revert the tests to their original state to ensure that
calling StartLoginInteractive always produces BrowseToURL notifications, either immediately or when the authURL is received from the control plane.

Fixes #13296

Signed-off-by: Nick Khyl <nickk@tailscale.com>
2 months ago
..
conffile cmd/tailscaled, ipn/conffile: support ec2 user-data config file 5 months ago
ipnauth ipn/{ipnauth,ipnlocal,ipnserver,localapi}: start baby step toward moving access checks from the localapi.Handler to the LocalBackend 2 months ago
ipnlocal ipn/ipnlocal: always send auth URL notifications when a user requests interactive login 2 months ago
ipnserver ipn/{ipnauth,ipnlocal,ipnserver,localapi}: start baby step toward moving access checks from the localapi.Handler to the LocalBackend 2 months ago
ipnstate cmd/tl-longchain: tool to re-sign nodes with long rotation signatures 2 months ago
localapi ipn/{ipnauth,ipnlocal,ipnserver,localapi}: start baby step toward moving access checks from the localapi.Handler to the LocalBackend 2 months ago
policy ipn,tailconfig: clean up unreleased and removed app connector service 12 months ago
store all: add test for package comments, fix, add comments as needed 4 months ago
backend.go health: begin work to use structured health warnings instead of strings, pipe changes into ipn.Notify (#12406) 4 months ago
conf.go ipn,wgengine/magicsock: allow setting static node endpoints via tailscaled configfile (#12882) 3 months ago
doc.go all: update copyright and license headers 2 years ago
ipn_clone.go cmd/cloner, cmd/viewer, util/codegen: add support for generic types and interfaces 3 months ago
ipn_test.go all: do not depend on the testing package 5 months ago
ipn_view.go ipn,wgengine: remove vestigial Prefs.AllowSingleHosts 5 months ago
prefs.go ipn: allow FQDN in exit node selection 3 months ago
prefs_test.go ipn: allow FQDN in exit node selection 3 months ago
serve.go cmd/serve: don't convert localhost to 127.0.0.1 4 months ago
serve_test.go cmd/serve: don't convert localhost to 127.0.0.1 4 months ago
store.go ipn: add comment about thread-safety to StateStore 8 months ago
store_test.go ipn: avoid useless no-op WriteState calls 1 year ago