diff --git a/lib/teleterm/clusters/cluster_apps.go b/lib/teleterm/clusters/cluster_apps.go index 102bcb06b0d43..b6e61d1269b53 100644 --- a/lib/teleterm/clusters/cluster_apps.go +++ b/lib/teleterm/clusters/cluster_apps.go @@ -81,15 +81,6 @@ func GetApp(ctx context.Context, authClient authclient.ClientI, appName string) // ReissueAppCert issue new certificates for the app and saves them to disk. func (c *Cluster) ReissueAppCert(ctx context.Context, clusterClient *client.ClusterClient, routeToApp proto.RouteToApp) (tls.Certificate, error) { - // Refresh the certs to account for clusterClient.SiteName pointing at a leaf cluster. - err := clusterClient.ReissueUserCerts(ctx, client.CertCacheKeep, client.ReissueParams{ - RouteToCluster: c.clusterClient.SiteName, - AccessRequests: c.status.ActiveRequests, - }) - if err != nil { - return tls.Certificate{}, trace.Wrap(err) - } - result, err := clusterClient.IssueUserCertsWithMFA(ctx, client.ReissueParams{ RouteToCluster: c.clusterClient.SiteName, RouteToApp: routeToApp, diff --git a/lib/teleterm/clusters/cluster_databases.go b/lib/teleterm/clusters/cluster_databases.go index 7b4ef1b1da0c7..32b6a7bc00e29 100644 --- a/lib/teleterm/clusters/cluster_databases.go +++ b/lib/teleterm/clusters/cluster_databases.go @@ -95,15 +95,6 @@ func (c *Cluster) reissueDBCerts(ctx context.Context, clusterClient *client.Clus return tls.Certificate{}, trace.BadParameter("the username must be present") } - // Refresh the certs to account for clusterClient.SiteName pointing at a leaf cluster. - err := clusterClient.ReissueUserCerts(ctx, client.CertCacheKeep, client.ReissueParams{ - RouteToCluster: c.clusterClient.SiteName, - AccessRequests: c.status.ActiveRequests, - }) - if err != nil { - return tls.Certificate{}, trace.Wrap(err) - } - result, err := clusterClient.IssueUserCertsWithMFA(ctx, client.ReissueParams{ RouteToCluster: c.clusterClient.SiteName, RouteToDatabase: client.RouteToDatabaseToProto(routeToDatabase), diff --git a/lib/teleterm/clusters/cluster_kubes.go b/lib/teleterm/clusters/cluster_kubes.go index a5f88ce5fd383..51a4d38053541 100644 --- a/lib/teleterm/clusters/cluster_kubes.go +++ b/lib/teleterm/clusters/cluster_kubes.go @@ -58,15 +58,6 @@ type KubeServer struct { // reissueKubeCert issue new certificates for kube cluster and saves them to disk. func (c *Cluster) reissueKubeCert(ctx context.Context, clusterClient *client.ClusterClient, kubeCluster string) (tls.Certificate, error) { - // Refresh the certs to account for clusterClient.SiteName pointing at a leaf cluster. - err := clusterClient.ReissueUserCerts(ctx, client.CertCacheKeep, client.ReissueParams{ - RouteToCluster: c.clusterClient.SiteName, - AccessRequests: c.status.ActiveRequests, - }) - if err != nil { - return tls.Certificate{}, trace.Wrap(err) - } - result, err := clusterClient.IssueUserCertsWithMFA( ctx, client.ReissueParams{ RouteToCluster: c.clusterClient.SiteName, diff --git a/web/packages/teleterm/src/mainProcess/clusterLifecycleManager/clusterLifecycleManager.ts b/web/packages/teleterm/src/mainProcess/clusterLifecycleManager/clusterLifecycleManager.ts index 2301dc5b96d53..e08d75d53dfa4 100644 --- a/web/packages/teleterm/src/mainProcess/clusterLifecycleManager/clusterLifecycleManager.ts +++ b/web/packages/teleterm/src/mainProcess/clusterLifecycleManager/clusterLifecycleManager.ts @@ -248,6 +248,9 @@ export class ClusterLifecycleManager { // The watcher 'changed' event may be emitted right after the user logs in // or assumes a role via Connect (which already closes all clients // for the profile), so we avoid closing them again if they're already up to date. + // + // This needs to be done before the check for changed access. It handles a scenario where the + // user logged in again via tsh and the auth server has disconnect_expired_cert enabled. await client.clearStaleClusterClients({ rootClusterUri: next.uri }); await this.syncOrUpdateCluster(next);