Commit Graph
9449 Commits
Author SHA1 Message Date
Steven Martin 87a80da26c spell fixes (#17374) 2022-10-13 15:34:19 +00:00
Alan Parra 6d0b1c3119 Bump AWS SDK dependencies (#17279)
Bumps:

* github.com/aws/aws-sdk-go to v1.44.114
* github.com/aws/aws-sdk-go-v2/service/ec2 to v1.63.1
2022-10-13 15:14:03 +00:00
Edward Dowling d0a602deb6 Add initial OSS part of license expiry code. (#16753)
In “tsh login” show only alerts with on-login label.
    In “tsh status” show only alerts with “high” severity. Which license warning should match.
    In all “tctl” commands show only alerts with “high” severity.
2022-10-13 14:59:47 +00:00
Alan Parra b289295f93 Move away from deprecated protoc-gen-go plugin (#17267)
Moves from github.com/golang/protobuf protoc-gen-go plugin to google.golang.org/
plugins.

This change was a long-time coming, but is now possible to do since our
dependencies are up-to-date.

* Move away from deprecated protoc-gen-go plugin
* Embed unimplemented server in handler.Handler
* Embed unimplemented server in multiplexer_test.go
* Update generated protos
2022-10-13 14:01:44 +00:00
Alex McGrath 5a5c8f35b6 mention preview (#17331) 2022-10-13 09:37:06 +00:00
Noah Stride 4ac629aab1 Support certificate expiry on bot join (#17206)
* Support certificate expiry on bot join

* Test bot register expiry

* Fix trailing slash in comment.

* goimports l/a/join_test.go
2022-10-13 08:16:12 +00:00
Tiago Silva 6e0cc8d765 Add support for managing kube_cluster resources with tctl and fix tsh for large labels (#17174)
* Fixes the tsh asciitable when large number of labels are present.
* Adds support for managing `kube_cluster` resources with tctl.
2022-10-13 07:20:28 +00:00
Steven Martin d1dc374998 Instructions updates for EC2 Auto Discovery (#17356)
* Instructions fixes

- Missing Effect Allow for teleport discover service policy
- Incorrect URL for installer script

* Troubleshooting

* Formatting
2022-10-12 22:20:42 +00:00
Isaiah Becker-Mayer ac547df856 Updates the clipboard UX documentation for the new system (#17351) 2022-10-12 22:01:42 +00:00
Michael 4d9b78050e Move enterprise key before Connect binary conditional in mac drone pipe (#17350)
* enterprise key added before connect binary check in pipeline

* updated dronegen

* dronesig
2022-10-12 15:40:45 -05:00
Walt 07cc588735 Fix build-buildboxes timeouts (#17314)
* Refactor build-buildboxes to uses multiple profiles

This greatly reduces the number of steps in the pipeline, allowing drone-runner-kube to successfully schedule the pipeline.

Fixes https://github.com/gravitational/teleport/issues/17310

Furthermore, I also updated un-dronegen'ed pipelines to have same syntax as dronegen'd ones, which is nice for consistency.
2022-10-12 19:59:41 +00:00
Walt 5e5a323ae6 Fix yum repo cleanup (#17334)
Previously, "${ARTIFACT_PATH}" was interpreted as Drone variable
subsitution, resulting in "rm -rf ${ARTIFACT_PATH}/*" becoming
"rm -rf /*", which deleted credentials on the filesystem.
2022-10-12 19:05:54 +00:00
Jakub Nyckowski 716c2bdbf9 Fix BPF (#17269)
* Revert "Refactor bpf/restrictedsession usage in lib/srv (#15824)"

This reverts commit 769951fe4b.

* Remove unused Linux BPF includes

* Fix linter issue
2022-10-12 18:41:26 +00:00
Ryan Clark 1800d5a18f Set the default proxy listen addrs even if a file config isn't present (#17218) 2022-10-12 17:35:18 +00:00
756eb91ede Add X-Forwarded-SSL and X-Forwarded-Port to appaccess. (#16965)
* Add X-Forwarded-SSL and X-Forwarded-Port to appaccess.

Application Access now adds in X-Forwarded-Ssl and X-Forwarded-Port headers.
Tests have been added and adjusted to look for these new headers as well.

* Update lib/srv/app/header_rewriter.go

Co-authored-by: Ryan Clark <ryan.clark@goteleport.com>

* Update integration/appaccess/fixtures.go

Co-authored-by: Roman Tkachenko <roman@goteleport.com>

* Remove common.XForwardedPort

* Change order of websocket delegates.

* Make ReservedHeaders more future-proofed.
2022-10-12 16:54:53 +00:00
Ryan Clark 31bf9a4a4d Fix the version yaml in configure-ad.ps1 (#17266) 2022-10-12 15:50:05 +00:00
Ryan Clark dc8355f082 Neaten up the config comments for config v2 and above, remove config changelog (#17128) 2022-10-12 16:20:40 +01:00
Michael cc1eaf6f75 Add enterprise module support to Connect builds (#17315)
* add windows submodule support for connect builds

* added connect enterprise support to mac builds

* update submodule command

* removed ability to fail webapps.e and recursive

* dronegen
2022-10-12 08:39:53 -05:00
Marek Smoliński 0f2ade1255 Fix FuzzMongoRead (#16665) 2022-10-12 14:56:34 +02:00
Ryan Clark 7098879ff2 Set AuthServer instead of AuthServers during teleport configure (#17270) 2022-10-12 11:40:37 +00:00
Marek Smoliński a60174cc4f Fix tctl auth sign call for Snowflake in trusted clusters env (#17263) 2022-10-12 11:28:38 +02:00
Tobiasz Heller 0ab69fbf8a User proper leaf address in docs (#17232) 2022-10-12 09:35:15 +02:00
Michael 5ea562c7cc [auto] Update webassets in teleport/master from webassets/master (#17312) 2022-10-11 21:36:21 -05:00
Michael 87325be703 [connect] access requests for Teleport Connect (#16694)
* access requests for teleterm

* removed unused imports and named returns

* remove comment

* using timestamppb instead of string for access requests

* updated proto with some more comments

* updated protos with comments

* using clusterClient, comments, and moving validation to daemon for access request delete

* separated GetAccessRequests into separate RPCs

* protobuf updates

* moved requestid check before resolving cluster

* fullstops in comments

* used standard access_request_id through rpc messages

* updated protofiles

* updated daemon service types to match grpc

* added kube advanced search support

* updated protos for kubes in access requests

* testing tag build

* fix detached head

* new tag build

* protobuf update

* lint fixes

* allow drone windows Connect build to include webapps.e

* protobuf files

* remove drone changes and updated comment

* proto changes with comment fixes and changed field order

* protobuf updates
2022-10-11 18:52:16 -05:00
Forrest Marshall 62ccbb6fd6 Revert "move to compare-and-swap node hbs"
revert compare-and-swap node hbs
2022-10-11 16:14:39 -07:00
Alan Parra 8a25dc9755 Add Device Trust protobuf definitions (#17302)
Add definitions for Device Trust RPCs.

DeviceTrustService is fairly isolated from other services, so it is generated
using plain `protoc-gen-go` instead of Gogo.

teleport.e#514

* Add Device Trust proto definitions
* Allow proto generation without gogo
* Drop Gogo from lib/multiplexer protos
* Update generated protos
* Tidy modules
2022-10-11 22:21:38 +00:00
Tiago Silva 249a4c5595 Adds Azure AKS auto-discovery (#16633)
This PR presents a watcher for automatic  `kube_cluster` discovery for Azure AKS clusters. Given a user with access to the Azure cloud, the auto-discovery service will scan the cloud and register all clusters available in AKS .

Once the discovery service creates a `kube_cluster` in Auth Server, the Kubernetes Service will start serving it. The credentials used to access the cluster depend on the different AKS clusters configurations:

# Authentication 
## Local Accounts

If the AKS cluster auth is based on local accounts created during the provisioning phase of the cluster, the agent will use the [`aks:ListClusterUserCredentials`](https://learn.microsoft.com/en-us/rest/api/aks/managed-clusters/list-cluster-user-credentials?tabs=HTTP) endpoint. 

This endpoint returns a `kubeconfig` fully populated with user credentials that Teleport can use to access the cluster.

## AZ Active Directory

When AZ active directory integration is enabled, Azure allows login with AD users. Azure forces the login to happen with dynamic short-lived user tokens. These tokens are generated by calling `credentials.GetToken` with a fixed Scope: `6dae42f8-4368-4678-94ff-3960e28e3630` and with the cluster's `tenant_id`. The token contains the user details as well as `group_ids` to match with authorization rules.

```go
// getAzureToken generates an authentication token for clusters with AD enabled.
func (a *aKSClient) getAzureToken(ctx context.Context, tentantID string, clientCfg *rest.Config) (time.Time, error) {
	const (
		azureManagedClusterScope = "6dae42f8-4368-4678-94ff-3960e28e3630"
	)
	cred, err := a.azIdentity(&azidentity.DefaultAzureCredentialOptions{
		TenantID: tentantID,
	})
	if err != nil {
		return time.Time{}, trace.Wrap(ConvertResponseError(err))
	}

	cliAccessToken, err := cred.GetToken(ctx, policy.TokenRequestOptions{
		// azureManagedClusterScope is a fixed scope that identifies azure AKS managed clusters.
		Scopes: []string{azureManagedClusterScope},
	},
	)
	if err != nil {
		return time.Time{}, trace.Wrap(ConvertResponseError(err))
	}
	// reset the old exec provider credentials
	clientCfg.ExecProvider = nil
	clientCfg.BearerToken = cliAccessToken.Token

	return cliAccessToken.ExpiresOn, nil
}
```

# Authorization

## Local Accounts
The [`aks:ListClusterUserCredentials`](https://learn.microsoft.com/en-us/rest/api/aks/managed-clusters/list-cluster-user-credentials?tabs=HTTP) endpoint returns credentials with enough permissions for Teleport to enroll the cluster.

## AZ AD 

### Azure RBAC

When Azure RBAC mode is enabled, the cluster authorization is based on rules specified in the Azure Identity permissions. 

The AZ group associated with the AZ identity the Teleport Process is running has to define the following permissions:

```json
{
    "Name": "AKS Teleport Discovery Permissions",
    "Description": "Required permissions for Teleport auto-discovery.",
    "Actions": [],
    "NotActions": [],
    "DataActions": [
      "Microsoft.ContainerService/managedClusters/pods/read",
      "Microsoft.ContainerService/managedClusters/users/impersonate/action",
      "Microsoft.ContainerService/managedClusters/groups/impersonate/action",
      "Microsoft.ContainerService/managedClusters/serviceaccounts/impersonate/action",
      "Microsoft.ContainerService/managedClusters/authorization.k8s.io/selfsubjectaccessreviews/write",
      "Microsoft.ContainerService/managedClusters/authorization.k8s.io/selfsubjectrulesreviews/write",
    ],
    "NotDataActions": [],
    "assignableScopes": [
        "/subscriptions/{subscription_id}"
    ]
}
```

If correctly specified, the Azure authentication service automatically grants access to any cluster within  `subscription_id` 
 without any other definition. On the other hand, if it's incorrectly configured, an error is triggered but Teleport cannot gain access to the cluster.


### Kubernetes RBAC

If AZ RBAC integration is disabled, the authorization to the cluster is processed by Kubernetes RBAC. This is done by matching the Az Identity principals (`group_ids`) with `Role`, `ClusterRole` objects that live in the AKS cluster.  This mode requires that the `ClusterRole` and `ClusterRoleBinding` must exist and must be well configured for each cluster to enroll.

```yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: teleport-role
rules:
- apiGroups:
  - ""
  resources:
  - users
  - groups
  - serviceaccounts
  verbs:
  - impersonate
- apiGroups:
  - ""
  resources:
  - pods
  verbs:
  - get
- apiGroups:
  - "authorization.k8s.io"
  resources:
  - selfsubjectaccessreviews
  - selfsubjectrulesreviews
  verbs:
  - create
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: teleport-role-binding
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: teleport-role
subjects:
- kind: Group
  name: {group_name}
  apiGroup: rbac.authorization.k8s.io
```

#### `ClusterRole` and `ClusterRoleBinding` configured

If cluster operators or previous Teleport run has configured access to the cluster, no further action is required since Teleport already has access to the cluster.

#### Cluster `aks:ListClusterAdminCredentials` returns valid credentials

If the Teleport process has access to [`aks:ListClusterAdminCredentials`](https://learn.microsoft.com/en-us/rest/api/aks/managed-clusters/list-cluster-admin-credentials?tabs=HTTP) and the endpoint returns valid cluster admin credentials, Teleport will automatically create the  `ClusterRole` and `ClusterRoleBinding` objects in the cluster configured to the `group_id` that is listed in the access token. In order to extract the `group_id` from the token, Teleport parses the JWT claims and extracts the first element.

If the object creation was successful, Teleport can access it, otherwise, it will use the `aks:BeginRunCommand` method to try to configure access to itself.

#### Cluster `aks:BeginRunCommand` returns valid credentials

When we reach this mode, Teleport tries to run a `kubectl` command against the cluster to configure the `ClusterRole` and `ClusterRoleBinding`. `aks:BeginRunCommand` allows any user with access to that endpoint to run arbitrary commands in the cluster (commands cannot be validated). Teleport will use it as the last resource to configure the access to itself.

If the command failed, Teleport cannot grant access to the cluster and an error is returned.

# UX

Currently, to discover AKS  resources created and to have them dynamically served by the `kubernetes_service`one can define the following configuration.

```yaml
discovery_service:
   enabled: true
  azure:
  - subscriptions: ["*"]
    types: ["aks"]
    regions: ["*"]
    tags:
      '*': '*'

kubernetes_service:
   enabled: true

   resources:
       labels:
           '*': '*'
```

# Future work
- Support AWS dynamic authentication

Part of #16135, #13376  
Related to  #12048, #16276, #16281
2022-10-11 21:37:50 +00:00
Walt da6c981971 Fix FIPS docker publishing AWS credentials (#17301)
Contributes to gravitational/SecOps#213.
2022-10-11 14:03:18 -07:00
Walt e6e870932e Add AWS Roles to Drone pipelines (#17274)
This is follow up to #17201, that fixes the buildbox pipeline error seen here:

An error occurred (AccessDeniedException) when calling the GetAuthorizationToken operation: User: arn:aws:iam::146628656107:user/teleport_build_user_read_only is not authorized to perform: ecr-public:GetAuthorizationToken on resource: * because no identity-based policy allows the ecr-public:GetAuthorizationToken action

Contributes to gravitational/SecOps#213.
2022-10-11 18:45:04 +00:00
Gavin FrazarandPaul Gottschling 1c3c06ed10 docs: add self signed certs guide (#16182)
* Add slug for self signed certs

* Add self-signed certs guide

* Move tls cert setup into an include snippet

* Update tsh section on self signed certs

* Fix indentation

* Remove extra slash before heading

* Update docs/config.json

Co-authored-by: Paul Gottschling <paul.gottschling@goteleport.com>

* Update docs/pages/management/admin.mdx

Co-authored-by: Paul Gottschling <paul.gottschling@goteleport.com>

* Update docs/pages/includes/tls-certificate-setup.mdx

Co-authored-by: Paul Gottschling <paul.gottschling@goteleport.com>

* Update docs/pages/management/admin/self-signed-certs.mdx

Co-authored-by: Paul Gottschling <paul.gottschling@goteleport.com>

* Update docs/pages/management/admin/self-signed-certs.mdx

Co-authored-by: Paul Gottschling <paul.gottschling@goteleport.com>

* Update docs/pages/management/admin/self-signed-certs.mdx

Co-authored-by: Paul Gottschling <paul.gottschling@goteleport.com>

* Update docs/pages/management/admin/self-signed-certs.mdx

Co-authored-by: Paul Gottschling <paul.gottschling@goteleport.com>

* Fix formatting of github suggestion commit

* Change link title to avoid abbreviation

* Update intro to explain the purpose of the guide and why anyone would want it

* Make 'proxy' and 'certs' consistent throughout the guide:
certs -> certificates
proxy -> Proxy Service

* Move motivation for guide out of warning and into intro

* Simplify the warning notice

* Change headings

* Capitalize helm and simplify label

* Update Helm info to include inline instructions

* Simplify systemd label

* Update systemd tab

* Update slug certs -> certificates

* Fix include snippet yaml example

* Change prereqs to omit cloud tab and instruct user to check for self-signed certs config

* Update docs/pages/management/admin/self-signed-certs.mdx

Co-authored-by: Paul Gottschling <paul.gottschling@goteleport.com>

* Update docs/pages/management/admin/self-signed-certs.mdx

Co-authored-by: Paul Gottschling <paul.gottschling@goteleport.com>

* Update docs/pages/management/admin/self-signed-certs.mdx

Co-authored-by: Paul Gottschling <paul.gottschling@goteleport.com>

* Apply suggestions from code review

Co-authored-by: Paul Gottschling <paul.gottschling@goteleport.com>

* Update docs/pages/management/admin/self-signed-certs.mdx

Co-authored-by: Paul Gottschling <paul.gottschling@goteleport.com>

* Get specific about problem caused by insecure TLS

* Remove 'how to setup tls certs' section in favor of a link at the bottom

* Add examples for tsh and tctl, and clean up tctl wording

* Remove link to systemd guide

* Add more detail to systemd instructions

* Change wording around instructions for teleport

* Rearrange links

* Remove reference to deleted acme.mdx

* Remove v2 config reference to auth_servers

* Remove list syntax for proxy_server

Co-authored-by: Paul Gottschling <paul.gottschling@goteleport.com>
2022-10-11 18:02:42 +00:00
dependabot[bot] 38a07a6400 Bump github.com/Azure/azure-sdk-for-go/sdk/azcore from 1.1.3 to 1.1.4 (#17251)
Bumps [github.com/Azure/azure-sdk-for-go/sdk/azcore](https://github.com/Azure/azure-sdk-for-go) from 1.1.3 to 1.1.4.
- [Release notes](https://github.com/Azure/azure-sdk-for-go/releases)
- [Changelog](https://github.com/Azure/azure-sdk-for-go/blob/main/CHANGELOG.md)
- [Commits](https://github.com/Azure/azure-sdk-for-go/compare/sdk/azcore/v1.1.3...sdk/azcore/v1.1.4)

---
updated-dependencies:
- dependency-name: github.com/Azure/azure-sdk-for-go/sdk/azcore
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-10-11 17:17:42 +00:00
dependabot[bot] 277f50311a Bump go.mongodb.org/mongo-driver from 1.10.2 to 1.10.3 (#17249)
Bumps [go.mongodb.org/mongo-driver](https://github.com/mongodb/mongo-go-driver) from 1.10.2 to 1.10.3.
- [Release notes](https://github.com/mongodb/mongo-go-driver/releases)
- [Commits](https://github.com/mongodb/mongo-go-driver/compare/v1.10.2...v1.10.3)

---
updated-dependencies:
- dependency-name: go.mongodb.org/mongo-driver
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-10-11 16:49:59 +00:00
Alan Parra 901d1280e5 Include Rust/Cargo in Dependabot updates (#17222)
Include `/` and `rdpclient` Cargo updates in Dependabot.
2022-10-11 16:36:31 +00:00
Hugo Shaka 2ef2de956a Use Teleport's standard buildbox (#17122)
* Use Teleport's standard buildbox

This commit edits the teleport-operator container image build process to
rely on Teleport's standard buildbox. This will make sure we are using a
single go version at all time.

This also removed unused environment variables from
`operator/Makefile`.

* Extract BUILDBOX variables out of build.assets/Makefile
* Put `teleport-operator` bin out of the Teleport source volume
2022-10-11 15:19:38 +00:00
Noah Stride c7c16465a0 Clarify testplan for Session Recording (#17261) 2022-10-11 14:48:12 +00:00
Alan Parra f9f0ca339e Bump grpc-related dependencies (#17265)
Bumps:

* protoc to v3.20.3
* protoc-gen-go to v1.5.2 (github.com/google/protobuf version, Teleterm only)
* google.golang.org/grpc to v1.50.0
* google.golang.org/grpc/examples
2022-10-11 14:29:01 +00:00
Mike Wilson 3655075c80 Update JWT docs to reflect new traits in payload.
JWT payloads now contain traits. The docs and the `verify-jwt.go` utility have
been updated to reflect this.
2022-10-11 08:42:50 -04:00
Marek Smoliński 749973c403 [auto] Update webassets in teleport/master from webassets/master (#17216) 2022-10-11 10:58:13 +00:00
Brian Joerger a3b788d3fb Hardware Key Support testplan (#16960) 2022-10-11 01:54:52 +00:00
Isaiah Becker-Mayer 245866542a Update test plan for desktop access (#17236) 2022-10-10 23:39:31 +00:00
Zac Bergquist 10aed927f9 docs: add CLI section for tctl alert create (#16976) 2022-10-10 22:28:01 +00:00
Walt acbf575230 Refactor Drone Pipelines to use AWS role assumption (#17201)
This PR updates our various Drone pipelines to use AWS roles for publishing.

Our AWS FTR requires that we do not use any long lived credentials in our AWS accounts and instead use roles. This means we need to move from attaching policies directly to users to attaching policies to roles and having policyless users assume those roles.

https://aws.amazon.com/partners/foundational-technical-review/

Contributes to https://github.com/gravitational/SecOps/issues/213
2022-10-10 20:32:43 +00:00
Zac Bergquist 64475f830a docs: add Kubernetes instructions for Teleport Connect (#17180) 2022-10-10 19:55:28 +00:00
Mike Wilson e15f4f351e Add traits to JWT payload.
The JWT payload now includes user traits.
2022-10-10 14:52:06 -04:00
Tiago Silva 335faae998 Remove expected kube_server, app, database and installer watchers for remote proxies (#17212)
V10 Leaf clusters when connecting to a V11 Root cluster failed to initialize because they do not have `kube_server` resources defined.
This PR bumps the OLD remote proxy to versions <11 and removes the expected `kube_server` watcher.

It also removes `types.KindInstaller`, `types.KindDatabase`, and `types.KindApp` watchers from Remote Proxies since they do not affect remote reverse tunnels tracked from leaf clusters.
Fix incompatibility with pre/post v10.2.1 versions as the `types.KindInstaller` feature did not exist in older versions.


Fixes #17211 
Fixes #17219
2022-10-10 19:12:44 +01:00
Tiago Silva acad233f53 Add Kubernetes Cluster Connection Tester (#16899)
This PR implements the Kubernetes Tester for the ConnectionDiagnostic feature.

The goal is to validate if the Kubernetes cluster is available and if the user can access it.

A series of checks are performed against Teleport using a Kubernetes Client populated with the user's certificates for accessing the desired cluster.

Currently, the checks are:

- Kubernetes Cluster is up and running
- User's role specifies at least one `kubernetes_groups` or `kubernetes_users`
- User's roles allow RBAC access to the cluster: `kubernetes_labels` match.
- Values specified under `kubernetes_groups` or `kubernetes_users` exist in the cluster and allow the user to list pods in the desired namespace.


Testing:
Post: `/v1/webapi/sites/<teleport-cluster>/diagnostics/connections`

```json
{
  "resource_kind": "kube_cluster",
  "resource_name": "<cluster_name>",
   "kubernetes_namespace": "default"
}

```

Closes #16824
2022-10-10 17:27:29 +00:00
Paul Gottschling 82b199f2c0 Fix broken links (#17003)
Two links didn't render correctly and preserved the ".mdx" extension,
causing 404s for crawlers. This removes the scope param to get link
rendering to work.
2022-10-10 16:46:09 +00:00
Zac Bergquist c8c8feee50 Fix flaky TestHostCertVerification (#17213)
This test is flaky because we use precomputed keypairs to speed up
the tests, and it's possible that the test selects the same keypair
for both the root and leaf clusters.

Fix this by requesting new keypairs until we get one we haven't
seen before.

Closes #17198
2022-10-10 16:13:22 +00:00
Marek Smoliński efb7f3e0de Fix tsh Cassandra pass condition (#17210) 2022-10-10 15:15:22 +00:00
Alan Parra 1024949cee Fix tsh fido2 diag command (#17196)
Add the missing RelyingParty.Name field and tweak error messages.
2022-10-10 14:30:50 +00:00