@@ -213,7 +213,7 @@ spec:
213
213
- '2001:db8::/96'
214
214
` ` `
215
215
216
- # # Configuring SSO
216
+ # # Configuring SSO for login
217
217
218
218
Teleport works with SSO providers by relying on the concept of an
219
219
**authentication connector**. An authentication connector is a configuration
@@ -411,6 +411,116 @@ values to match your identity provider:
411
411
412
412
At this time, the `spec.provider` field should not be set for any other identity providers.
413
413
414
+ # # Configuring SSO for MFA checks
415
+
416
+ Teleport administrators can configure Teleport to delegate MFA checks to an
417
+ SSO provider as an alternative to registering MFA devices directly with the Teleport cluster.
418
+ This allows Teleport users to use MFA devices and custom flows configured in the SSO provider
419
+ to carry out privileged actions in Teleport, such as :
420
+
421
+ - [Per-session MFA](../guides/per-session-mfa.mdx)
422
+ - [Moderated sessions](../guides/moderated-sessions.mdx)
423
+ - [Admin actions](../guides/mfa-for-admin-actions.mdx)
424
+
425
+ Administrators may want to consider enabling this feature in order to :
426
+
427
+ - Make all authentication (login and MFA) go through the IDP, reducing administrative overhead
428
+ - Make custom MFA flows, such as prompting for 2 distinct devices for a single MFA check
429
+ - Integrate with non-webauthn devices supported directly by your IDP
430
+
431
+ <Admonition type="note">
432
+ SSO MFA is an enterprise feature. Only OIDC and SAML auth connectors are supported.
433
+ </Admonition>
434
+
435
+ # ## Configure the IDP App / Client
436
+
437
+ There is no standardized MFA flow unlike there is with SAML/OIDC
438
+ login, so each IDP may offer zero, one, or more ways to offer MFA checks.
439
+
440
+ Generally, these offerings will fall under one of the following cases :
441
+
442
+ 1. Use a separate IDP app for MFA :
443
+
444
+ You can create a separate IDP app with a custom MFA flow. For example, with
445
+ Auth0 (OIDC), you can create a separate app with a custom [Auth0 Action](https://auth0.com/docs/customize/actions)
446
+ which prompts for MFA for an active OIDC session.
447
+
448
+ 2. Use the same IDP app for MFA :
449
+
450
+ Some IDPs provide a way to fork to different flows using the same IDP app.
451
+ For example, with Okta (OIDC), you can provide `acr_values : ["phr"]` to
452
+ [enforce phishing resistant authentication](https://developer.okta.com/docs/guides/step-up-authentication/main/#predefined-parameter-values).
453
+
454
+ For a simpler approach, you could use the same IDP app for both login and MFA
455
+ with no adjustments. For Teleport MFA checks, the user will be required to
456
+ relogin through the IDP with username, password, and MFA if required.
457
+
458
+ <Admonition type="warning">
459
+ While the customizability of SSO MFA presents multiple secure options previously
460
+ unavailable to administrators, it also presents the possibility of insecure
461
+ misconfigurations. Therefore, we strongly advice administrators to incorporate
462
+ strict, phishing-resistant checks with WebAuthn, Device Trust, or some similar
463
+ security features into their custom SSO MFA flow.
464
+ </Admonition>
465
+
466
+ # ## Updating your authentication connector to enable MFA checks
467
+
468
+ Take the authentication connector file `connector.yaml` created in [Configuring SSO for login](#configuring-sso-for-login)
469
+ and add MFA settings.
470
+
471
+ <Tabs>
472
+ <TabItem label="OIDC">
473
+
474
+ ` ` ` yaml
475
+ (!examples/resources/oidc-connector-mfa.yaml!)
476
+ ` ` `
477
+
478
+ </TabItem>
479
+ <TabItem label="SAML">
480
+
481
+ ` ` ` yaml
482
+ (!examples/resources/saml-connector-mfa.yaml!)
483
+ ` ` `
484
+
485
+ You may use `entity_descriptor_url` in lieu of `entity_descriptor` to fetch
486
+ the entity descriptor from your IDP.
487
+
488
+ We recommend "pinning" the entity descriptor by including the XML rather than
489
+ fetching from a URL.
490
+
491
+ </TabItem>
492
+ </Tabs>
493
+
494
+ Update the connector :
495
+
496
+ ` ` ` code
497
+ $ tctl create -f connector.yaml
498
+ ` ` `
499
+
500
+ # ## Allowing SSO as an MFA method in your cluster
501
+
502
+ Before you can use the SSO MFA flow we created above, you need to enable SSO
503
+ as a second factor in your cluster settings. Modify the dynamic config resource
504
+ using the following command :
505
+
506
+ ` ` ` code
507
+ $ tctl edit cluster_auth_preference
508
+ ` ` `
509
+
510
+ Make the following change :
511
+
512
+ ` ` ` diff
513
+ kind: cluster_auth_preference
514
+ version: v2
515
+ metadata:
516
+ name: cluster-auth-preference
517
+ spec:
518
+ # ...
519
+ second_factors:
520
+ - webauthn
521
+ + - sso
522
+ ` ` `
523
+
414
524
# # Working with an external email identity
415
525
416
526
Along with sending groups, an SSO provider will also provide a user's email address.
0 commit comments