@workos/mcp-docs-server 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.docs/organized/changelogs/workos-platform.json +277 -0
- package/.docs/organized/docs/admin-portal/_navigation.mdx +16 -0
- package/.docs/organized/docs/admin-portal/custom-branding.mdx +111 -0
- package/.docs/organized/docs/admin-portal/example-apps.mdx +46 -0
- package/.docs/organized/docs/admin-portal/index.mdx +240 -0
- package/.docs/organized/docs/audit-logs/_navigation.mdx +22 -0
- package/.docs/organized/docs/audit-logs/admin-portal.mdx +20 -0
- package/.docs/organized/docs/audit-logs/editing-events.mdx +27 -0
- package/.docs/organized/docs/audit-logs/exporting-events.mdx +29 -0
- package/.docs/organized/docs/audit-logs/index.mdx +110 -0
- package/.docs/organized/docs/audit-logs/log-streams.mdx +56 -0
- package/.docs/organized/docs/audit-logs/metadata-schema.mdx +21 -0
- package/.docs/organized/docs/custom-domains/_navigation.mdx +16 -0
- package/.docs/organized/docs/custom-domains/admin-portal.mdx +38 -0
- package/.docs/organized/docs/custom-domains/auth-api.mdx +59 -0
- package/.docs/organized/docs/custom-domains/authkit.mdx +36 -0
- package/.docs/organized/docs/custom-domains/email.mdx +41 -0
- package/.docs/organized/docs/custom-domains/index.mdx +19 -0
- package/.docs/organized/docs/dashboard.mdx +244 -0
- package/.docs/organized/docs/demo/_navigation.mdx +26 -0
- package/.docs/organized/docs/demo/accordion.mdx +34 -0
- package/.docs/organized/docs/demo/checklist.mdx +33 -0
- package/.docs/organized/docs/demo/code-block.mdx +185 -0
- package/.docs/organized/docs/demo/definition-list.mdx +35 -0
- package/.docs/organized/docs/demo/index.mdx +7 -0
- package/.docs/organized/docs/demo/punctuation.mdx +37 -0
- package/.docs/organized/docs/demo/replacements.mdx +26 -0
- package/.docs/organized/docs/demo/table.mdx +26 -0
- package/.docs/organized/docs/demo/tabs.mdx +17 -0
- package/.docs/organized/docs/directory-sync/_navigation.mdx +28 -0
- package/.docs/organized/docs/directory-sync/attributes.mdx +209 -0
- package/.docs/organized/docs/directory-sync/example-apps.mdx +46 -0
- package/.docs/organized/docs/directory-sync/handle-inactive-users.mdx +52 -0
- package/.docs/organized/docs/directory-sync/identity-provider-role-assignment.mdx +134 -0
- package/.docs/organized/docs/directory-sync/index.mdx +107 -0
- package/.docs/organized/docs/directory-sync/quick-start.mdx +129 -0
- package/.docs/organized/docs/directory-sync/understanding-events.mdx +209 -0
- package/.docs/organized/docs/domain-verification/_navigation.mdx +10 -0
- package/.docs/organized/docs/domain-verification/api.mdx +60 -0
- package/.docs/organized/docs/domain-verification/index.mdx +67 -0
- package/.docs/organized/docs/email.mdx +109 -0
- package/.docs/organized/docs/events/_navigation.mdx +22 -0
- package/.docs/organized/docs/events/data-syncing/data-reconciliation.mdx +56 -0
- package/.docs/organized/docs/events/data-syncing/events-api.mdx +114 -0
- package/.docs/organized/docs/events/data-syncing/index.mdx +66 -0
- package/.docs/organized/docs/events/data-syncing/webhooks.mdx +173 -0
- package/.docs/organized/docs/events/index.mdx +783 -0
- package/.docs/organized/docs/events/observability/datadog.mdx +76 -0
- package/.docs/organized/docs/fga/_navigation.mdx +64 -0
- package/.docs/organized/docs/fga/identity-provider-sessions.mdx +68 -0
- package/.docs/organized/docs/fga/index.mdx +60 -0
- package/.docs/organized/docs/fga/local-development.mdx +155 -0
- package/.docs/organized/docs/fga/modeling/abac.mdx +107 -0
- package/.docs/organized/docs/fga/modeling/blocklist.mdx +84 -0
- package/.docs/organized/docs/fga/modeling/conditional-roles.mdx +99 -0
- package/.docs/organized/docs/fga/modeling/custom-roles.mdx +90 -0
- package/.docs/organized/docs/fga/modeling/entitlements.mdx +127 -0
- package/.docs/organized/docs/fga/modeling/managed-service-provider.mdx +131 -0
- package/.docs/organized/docs/fga/modeling/org-roles-and-permissions.mdx +95 -0
- package/.docs/organized/docs/fga/modeling/policy-context.mdx +231 -0
- package/.docs/organized/docs/fga/modeling/public-access.mdx +61 -0
- package/.docs/organized/docs/fga/modeling/shareable-content.mdx +106 -0
- package/.docs/organized/docs/fga/modeling/superusers.mdx +74 -0
- package/.docs/organized/docs/fga/modeling/user-groups.mdx +92 -0
- package/.docs/organized/docs/fga/operations-usage.mdx +104 -0
- package/.docs/organized/docs/fga/playground.mdx +12 -0
- package/.docs/organized/docs/fga/policies.mdx +462 -0
- package/.docs/organized/docs/fga/query-language.mdx +112 -0
- package/.docs/organized/docs/fga/quick-start.mdx +174 -0
- package/.docs/organized/docs/fga/resources.mdx +92 -0
- package/.docs/organized/docs/fga/schema-management.mdx +224 -0
- package/.docs/organized/docs/fga/schema.mdx +388 -0
- package/.docs/organized/docs/fga/warrant-tokens.mdx +44 -0
- package/.docs/organized/docs/fga/warrants.mdx +92 -0
- package/.docs/organized/docs/glossary.mdx +184 -0
- package/.docs/organized/docs/integrations/_navigation.mdx +6 -0
- package/.docs/organized/docs/integrations/access-people-hr.mdx +87 -0
- package/.docs/organized/docs/integrations/adp-oidc.mdx +103 -0
- package/.docs/organized/docs/integrations/apple.mdx +169 -0
- package/.docs/organized/docs/integrations/auth0-directory-sync.mdx +78 -0
- package/.docs/organized/docs/integrations/auth0-enterprise-connection.mdx +92 -0
- package/.docs/organized/docs/integrations/auth0-saml.mdx +81 -0
- package/.docs/organized/docs/integrations/aws-cognito.mdx +81 -0
- package/.docs/organized/docs/integrations/bamboohr.mdx +90 -0
- package/.docs/organized/docs/integrations/breathe-hr.mdx +89 -0
- package/.docs/organized/docs/integrations/bubble.mdx +129 -0
- package/.docs/organized/docs/integrations/cas-saml.mdx +65 -0
- package/.docs/organized/docs/integrations/cezanne.mdx +74 -0
- package/.docs/organized/docs/integrations/classlink-saml.mdx +100 -0
- package/.docs/organized/docs/integrations/cloudflare-saml.mdx +164 -0
- package/.docs/organized/docs/integrations/cyberark-saml.mdx +138 -0
- package/.docs/organized/docs/integrations/cyberark-scim.mdx +100 -0
- package/.docs/organized/docs/integrations/duo-saml.mdx +127 -0
- package/.docs/organized/docs/integrations/entra-id-saml.mdx +156 -0
- package/.docs/organized/docs/integrations/entra-id-scim.mdx +218 -0
- package/.docs/organized/docs/integrations/firebase.mdx +98 -0
- package/.docs/organized/docs/integrations/fourth.mdx +66 -0
- package/.docs/organized/docs/integrations/github-oauth.mdx +85 -0
- package/.docs/organized/docs/integrations/gitlab-oauth.mdx +81 -0
- package/.docs/organized/docs/integrations/google-directory-sync.mdx +86 -0
- package/.docs/organized/docs/integrations/google-oauth.mdx +173 -0
- package/.docs/organized/docs/integrations/google-saml.mdx +135 -0
- package/.docs/organized/docs/integrations/hibob.mdx +98 -0
- package/.docs/organized/docs/integrations/jumpcloud-saml.mdx +96 -0
- package/.docs/organized/docs/integrations/jumpcloud-scim.mdx +106 -0
- package/.docs/organized/docs/integrations/keycloak-saml.mdx +128 -0
- package/.docs/organized/docs/integrations/lastpass-saml.mdx +134 -0
- package/.docs/organized/docs/integrations/linkedin-oauth.mdx +77 -0
- package/.docs/organized/docs/integrations/login-gov-oidc.mdx +103 -0
- package/.docs/organized/docs/integrations/microsoft-ad-fs-saml.mdx +96 -0
- package/.docs/organized/docs/integrations/microsoft-oauth.mdx +101 -0
- package/.docs/organized/docs/integrations/miniorange-saml.mdx +124 -0
- package/.docs/organized/docs/integrations/net-iq-saml.mdx +75 -0
- package/.docs/organized/docs/integrations/next-auth.mdx +257 -0
- package/.docs/organized/docs/integrations/oidc.mdx +64 -0
- package/.docs/organized/docs/integrations/okta-saml.mdx +144 -0
- package/.docs/organized/docs/integrations/okta-scim.mdx +210 -0
- package/.docs/organized/docs/integrations/onelogin-saml.mdx +131 -0
- package/.docs/organized/docs/integrations/onelogin-scim.mdx +150 -0
- package/.docs/organized/docs/integrations/oracle-saml.mdx +76 -0
- package/.docs/organized/docs/integrations/pingfederate-saml.mdx +103 -0
- package/.docs/organized/docs/integrations/pingfederate-scim.mdx +150 -0
- package/.docs/organized/docs/integrations/pingone-saml.mdx +86 -0
- package/.docs/organized/docs/integrations/react-native-expo.mdx +93 -0
- package/.docs/organized/docs/integrations/rippling-saml.mdx +174 -0
- package/.docs/organized/docs/integrations/rippling-scim.mdx +148 -0
- package/.docs/organized/docs/integrations/salesforce-saml.mdx +143 -0
- package/.docs/organized/docs/integrations/saml.mdx +64 -0
- package/.docs/organized/docs/integrations/scim.mdx +64 -0
- package/.docs/organized/docs/integrations/sftp.mdx +150 -0
- package/.docs/organized/docs/integrations/shibboleth-generic-saml.mdx +84 -0
- package/.docs/organized/docs/integrations/shibboleth-unsolicited-saml.mdx +84 -0
- package/.docs/organized/docs/integrations/simple-saml-php.mdx +78 -0
- package/.docs/organized/docs/integrations/slack-oauth.mdx +102 -0
- package/.docs/organized/docs/integrations/supabase.mdx +68 -0
- package/.docs/organized/docs/integrations/vmware-saml.mdx +100 -0
- package/.docs/organized/docs/integrations/workday.mdx +156 -0
- package/.docs/organized/docs/integrations/xero-oauth.mdx +83 -0
- package/.docs/organized/docs/magic-link/_navigation.mdx +16 -0
- package/.docs/organized/docs/magic-link/example-apps.mdx +46 -0
- package/.docs/organized/docs/magic-link/index.mdx +199 -0
- package/.docs/organized/docs/magic-link/launch-checklist.mdx +27 -0
- package/.docs/organized/docs/mfa/_navigation.mdx +18 -0
- package/.docs/organized/docs/mfa/example-apps.mdx +46 -0
- package/.docs/organized/docs/mfa/index.mdx +140 -0
- package/.docs/organized/docs/mfa/ux/enrollment.mdx +74 -0
- package/.docs/organized/docs/mfa/ux/sign-in.mdx +30 -0
- package/.docs/organized/docs/migrate/_navigation.mdx +6 -0
- package/.docs/organized/docs/migrate/auth0.mdx +98 -0
- package/.docs/organized/docs/migrate/aws-cognito.mdx +115 -0
- package/.docs/organized/docs/migrate/clerk.mdx +106 -0
- package/.docs/organized/docs/migrate/firebase.mdx +80 -0
- package/.docs/organized/docs/migrate/other-services.mdx +179 -0
- package/.docs/organized/docs/migrate/standalone-sso.mdx +105 -0
- package/.docs/organized/docs/on-prem-deployment.mdx +119 -0
- package/.docs/organized/docs/postman.mdx +90 -0
- package/.docs/organized/docs/reference/_navigation.mdx +527 -0
- package/.docs/organized/docs/reference/admin-portal/index.mdx +6 -0
- package/.docs/organized/docs/reference/admin-portal/portal-link/generate.mdx +268 -0
- package/.docs/organized/docs/reference/admin-portal/portal-link/index.mdx +15 -0
- package/.docs/organized/docs/reference/admin-portal/provider-icons/index.mdx +52 -0
- package/.docs/organized/docs/reference/api-keys.mdx +22 -0
- package/.docs/organized/docs/reference/audit-logs/audit-log-export.mdx +239 -0
- package/.docs/organized/docs/reference/audit-logs/audit-log-schema.mdx +69 -0
- package/.docs/organized/docs/reference/audit-logs/create-event.mdx +673 -0
- package/.docs/organized/docs/reference/audit-logs/create-export.mdx +308 -0
- package/.docs/organized/docs/reference/audit-logs/create-schema.mdx +95 -0
- package/.docs/organized/docs/reference/audit-logs/get-export.mdx +117 -0
- package/.docs/organized/docs/reference/audit-logs/get-retention.mdx +34 -0
- package/.docs/organized/docs/reference/audit-logs/index.mdx +6 -0
- package/.docs/organized/docs/reference/audit-logs/list-actions.mdx +40 -0
- package/.docs/organized/docs/reference/audit-logs/list-schemas.mdx +40 -0
- package/.docs/organized/docs/reference/audit-logs/set-retention.mdx +39 -0
- package/.docs/organized/docs/reference/client-libraries.mdx +19 -0
- package/.docs/organized/docs/reference/directory-sync/directory/delete.mdx +90 -0
- package/.docs/organized/docs/reference/directory-sync/directory/get.mdx +105 -0
- package/.docs/organized/docs/reference/directory-sync/directory/index.mdx +385 -0
- package/.docs/organized/docs/reference/directory-sync/directory/list.mdx +281 -0
- package/.docs/organized/docs/reference/directory-sync/directory-group/get.mdx +105 -0
- package/.docs/organized/docs/reference/directory-sync/directory-group/index.mdx +277 -0
- package/.docs/organized/docs/reference/directory-sync/directory-group/list.mdx +295 -0
- package/.docs/organized/docs/reference/directory-sync/directory-user/get.mdx +112 -0
- package/.docs/organized/docs/reference/directory-sync/directory-user/index.mdx +470 -0
- package/.docs/organized/docs/reference/directory-sync/directory-user/list.mdx +304 -0
- package/.docs/organized/docs/reference/directory-sync/index.mdx +10 -0
- package/.docs/organized/docs/reference/domain-verification/create.mdx +38 -0
- package/.docs/organized/docs/reference/domain-verification/get.mdx +32 -0
- package/.docs/organized/docs/reference/domain-verification/index.mdx +84 -0
- package/.docs/organized/docs/reference/domain-verification/verify.mdx +36 -0
- package/.docs/organized/docs/reference/errors.mdx +30 -0
- package/.docs/organized/docs/reference/events/index.mdx +9 -0
- package/.docs/organized/docs/reference/events/list.mdx +246 -0
- package/.docs/organized/docs/reference/fga/batch-check.mdx +277 -0
- package/.docs/organized/docs/reference/fga/check.mdx +563 -0
- package/.docs/organized/docs/reference/fga/index.mdx +6 -0
- package/.docs/organized/docs/reference/fga/policy/create.mdx +27 -0
- package/.docs/organized/docs/reference/fga/policy/delete.mdx +18 -0
- package/.docs/organized/docs/reference/fga/policy/get.mdx +23 -0
- package/.docs/organized/docs/reference/fga/policy/index.mdx +52 -0
- package/.docs/organized/docs/reference/fga/policy/list.mdx +41 -0
- package/.docs/organized/docs/reference/fga/policy/update.mdx +26 -0
- package/.docs/organized/docs/reference/fga/query.mdx +375 -0
- package/.docs/organized/docs/reference/fga/resource/batch-write.mdx +175 -0
- package/.docs/organized/docs/reference/fga/resource/create.mdx +130 -0
- package/.docs/organized/docs/reference/fga/resource/delete.mdx +86 -0
- package/.docs/organized/docs/reference/fga/resource/get.mdx +88 -0
- package/.docs/organized/docs/reference/fga/resource/index.mdx +98 -0
- package/.docs/organized/docs/reference/fga/resource/list.mdx +188 -0
- package/.docs/organized/docs/reference/fga/resource/update.mdx +115 -0
- package/.docs/organized/docs/reference/fga/resource-type/apply.mdx +35 -0
- package/.docs/organized/docs/reference/fga/resource-type/create.mdx +24 -0
- package/.docs/organized/docs/reference/fga/resource-type/delete.mdx +22 -0
- package/.docs/organized/docs/reference/fga/resource-type/get.mdx +23 -0
- package/.docs/organized/docs/reference/fga/resource-type/index.mdx +68 -0
- package/.docs/organized/docs/reference/fga/resource-type/list.mdx +36 -0
- package/.docs/organized/docs/reference/fga/resource-type/update.mdx +23 -0
- package/.docs/organized/docs/reference/fga/schema/apply.mdx +42 -0
- package/.docs/organized/docs/reference/fga/schema/get.mdx +24 -0
- package/.docs/organized/docs/reference/fga/schema/index.mdx +39 -0
- package/.docs/organized/docs/reference/fga/warrant/batch-write.mdx +226 -0
- package/.docs/organized/docs/reference/fga/warrant/create.mdx +215 -0
- package/.docs/organized/docs/reference/fga/warrant/delete.mdx +212 -0
- package/.docs/organized/docs/reference/fga/warrant/index.mdx +186 -0
- package/.docs/organized/docs/reference/fga/warrant/list.mdx +282 -0
- package/.docs/organized/docs/reference/idempotency.mdx +21 -0
- package/.docs/organized/docs/reference/index.mdx +194 -0
- package/.docs/organized/docs/reference/magic-link/index.mdx +8 -0
- package/.docs/organized/docs/reference/magic-link/passwordless-session/create.mdx +268 -0
- package/.docs/organized/docs/reference/magic-link/passwordless-session/index.mdx +203 -0
- package/.docs/organized/docs/reference/magic-link/passwordless-session/send-email.mdx +158 -0
- package/.docs/organized/docs/reference/mfa/authentication-challenge.mdx +217 -0
- package/.docs/organized/docs/reference/mfa/authentication-factor.mdx +381 -0
- package/.docs/organized/docs/reference/mfa/challenge-factor.mdx +170 -0
- package/.docs/organized/docs/reference/mfa/delete-factor.mdx +93 -0
- package/.docs/organized/docs/reference/mfa/enroll-factor.mdx +241 -0
- package/.docs/organized/docs/reference/mfa/get-factor.mdx +108 -0
- package/.docs/organized/docs/reference/mfa/index.mdx +8 -0
- package/.docs/organized/docs/reference/mfa/verify-challenge.mdx +228 -0
- package/.docs/organized/docs/reference/organization/create.mdx +216 -0
- package/.docs/organized/docs/reference/organization/delete.mdx +89 -0
- package/.docs/organized/docs/reference/organization/get-by-external-id.mdx +40 -0
- package/.docs/organized/docs/reference/organization/get.mdx +104 -0
- package/.docs/organized/docs/reference/organization/index.mdx +274 -0
- package/.docs/organized/docs/reference/organization/list.mdx +258 -0
- package/.docs/organized/docs/reference/organization/update.mdx +236 -0
- package/.docs/organized/docs/reference/organization-domain.mdx +189 -0
- package/.docs/organized/docs/reference/pagination.mdx +244 -0
- package/.docs/organized/docs/reference/radar/attempts/create.mdx +115 -0
- package/.docs/organized/docs/reference/radar/attempts/index.mdx +7 -0
- package/.docs/organized/docs/reference/radar/attempts/update.mdx +34 -0
- package/.docs/organized/docs/reference/radar/index.mdx +8 -0
- package/.docs/organized/docs/reference/radar/lists/delete.mdx +36 -0
- package/.docs/organized/docs/reference/radar/lists/index.mdx +7 -0
- package/.docs/organized/docs/reference/radar/lists/update.mdx +36 -0
- package/.docs/organized/docs/reference/rate-limits.mdx +50 -0
- package/.docs/organized/docs/reference/roles/index.mdx +268 -0
- package/.docs/organized/docs/reference/roles/list-for-organization.mdx +152 -0
- package/.docs/organized/docs/reference/sso/connection/delete.mdx +89 -0
- package/.docs/organized/docs/reference/sso/connection/get.mdx +104 -0
- package/.docs/organized/docs/reference/sso/connection/index.mdx +388 -0
- package/.docs/organized/docs/reference/sso/connection/list.mdx +320 -0
- package/.docs/organized/docs/reference/sso/get-authorization-url/error-codes.mdx +28 -0
- package/.docs/organized/docs/reference/sso/get-authorization-url/index.mdx +434 -0
- package/.docs/organized/docs/reference/sso/get-authorization-url/redirect-uri.mdx +21 -0
- package/.docs/organized/docs/reference/sso/index.mdx +8 -0
- package/.docs/organized/docs/reference/sso/logout/authorize.mdx +47 -0
- package/.docs/organized/docs/reference/sso/logout/index.mdx +14 -0
- package/.docs/organized/docs/reference/sso/logout/redirect.mdx +32 -0
- package/.docs/organized/docs/reference/sso/profile/get-profile-and-token.mdx +229 -0
- package/.docs/organized/docs/reference/sso/profile/get-user-profile.mdx +127 -0
- package/.docs/organized/docs/reference/sso/profile/index.mdx +364 -0
- package/.docs/organized/docs/reference/testing.mdx +8 -0
- package/.docs/organized/docs/reference/user-management/access-token/index.mdx +13 -0
- package/.docs/organized/docs/reference/user-management/authentication/code.mdx +448 -0
- package/.docs/organized/docs/reference/user-management/authentication/email-verification.mdx +359 -0
- package/.docs/organized/docs/reference/user-management/authentication/get-authorization-url/error-codes.mdx +25 -0
- package/.docs/organized/docs/reference/user-management/authentication/get-authorization-url/index.mdx +425 -0
- package/.docs/organized/docs/reference/user-management/authentication/get-authorization-url/pkce.mdx +9 -0
- package/.docs/organized/docs/reference/user-management/authentication/get-authorization-url/redirect-uri.mdx +23 -0
- package/.docs/organized/docs/reference/user-management/authentication/index.mdx +66 -0
- package/.docs/organized/docs/reference/user-management/authentication/magic-auth.mdx +353 -0
- package/.docs/organized/docs/reference/user-management/authentication/organization-selection.mdx +349 -0
- package/.docs/organized/docs/reference/user-management/authentication/password.mdx +350 -0
- package/.docs/organized/docs/reference/user-management/authentication/refresh-and-seal-session-data.mdx +57 -0
- package/.docs/organized/docs/reference/user-management/authentication/refresh-token.mdx +381 -0
- package/.docs/organized/docs/reference/user-management/authentication/session-cookie.mdx +79 -0
- package/.docs/organized/docs/reference/user-management/authentication/totp.mdx +369 -0
- package/.docs/organized/docs/reference/user-management/authentication-errors/email-verification-required-error.mdx +42 -0
- package/.docs/organized/docs/reference/user-management/authentication-errors/index.mdx +20 -0
- package/.docs/organized/docs/reference/user-management/authentication-errors/mfa-challenge-error.mdx +44 -0
- package/.docs/organized/docs/reference/user-management/authentication-errors/mfa-enrollment-error.mdx +37 -0
- package/.docs/organized/docs/reference/user-management/authentication-errors/organization-authentication-required-error.mdx +68 -0
- package/.docs/organized/docs/reference/user-management/authentication-errors/organization-selection-error.mdx +44 -0
- package/.docs/organized/docs/reference/user-management/authentication-errors/sso-required-error.mdx +51 -0
- package/.docs/organized/docs/reference/user-management/email-verification/get.mdx +88 -0
- package/.docs/organized/docs/reference/user-management/email-verification/index.mdx +227 -0
- package/.docs/organized/docs/reference/user-management/identity/index.mdx +74 -0
- package/.docs/organized/docs/reference/user-management/identity/list.mdx +52 -0
- package/.docs/organized/docs/reference/user-management/index.mdx +13 -0
- package/.docs/organized/docs/reference/user-management/invitation/accept.mdx +39 -0
- package/.docs/organized/docs/reference/user-management/invitation/find-by-token.mdx +87 -0
- package/.docs/organized/docs/reference/user-management/invitation/get.mdx +87 -0
- package/.docs/organized/docs/reference/user-management/invitation/index.mdx +374 -0
- package/.docs/organized/docs/reference/user-management/invitation/list.mdx +247 -0
- package/.docs/organized/docs/reference/user-management/invitation/revoke.mdx +90 -0
- package/.docs/organized/docs/reference/user-management/invitation/send.mdx +230 -0
- package/.docs/organized/docs/reference/user-management/logout/get-logout-url-from-session-cookie.mdx +52 -0
- package/.docs/organized/docs/reference/user-management/logout/get-logout-url.mdx +147 -0
- package/.docs/organized/docs/reference/user-management/logout/index.mdx +26 -0
- package/.docs/organized/docs/reference/user-management/magic-auth/create.mdx +148 -0
- package/.docs/organized/docs/reference/user-management/magic-auth/get.mdx +88 -0
- package/.docs/organized/docs/reference/user-management/magic-auth/index.mdx +225 -0
- package/.docs/organized/docs/reference/user-management/mfa/authentication-challenge.mdx +194 -0
- package/.docs/organized/docs/reference/user-management/mfa/authentication-factor.mdx +324 -0
- package/.docs/organized/docs/reference/user-management/mfa/enroll-auth-factor.mdx +296 -0
- package/.docs/organized/docs/reference/user-management/mfa/index.mdx +5 -0
- package/.docs/organized/docs/reference/user-management/mfa/list-auth-factors.mdx +194 -0
- package/.docs/organized/docs/reference/user-management/organization-membership/create.mdx +155 -0
- package/.docs/organized/docs/reference/user-management/organization-membership/deactivate.mdx +106 -0
- package/.docs/organized/docs/reference/user-management/organization-membership/delete.mdx +76 -0
- package/.docs/organized/docs/reference/user-management/organization-membership/get.mdx +95 -0
- package/.docs/organized/docs/reference/user-management/organization-membership/index.mdx +265 -0
- package/.docs/organized/docs/reference/user-management/organization-membership/list.mdx +291 -0
- package/.docs/organized/docs/reference/user-management/organization-membership/reactivate.mdx +106 -0
- package/.docs/organized/docs/reference/user-management/organization-membership/update.mdx +119 -0
- package/.docs/organized/docs/reference/user-management/password-reset/create.mdx +108 -0
- package/.docs/organized/docs/reference/user-management/password-reset/get.mdx +88 -0
- package/.docs/organized/docs/reference/user-management/password-reset/index.mdx +227 -0
- package/.docs/organized/docs/reference/user-management/password-reset/reset-password.mdx +144 -0
- package/.docs/organized/docs/reference/user-management/session-helpers/authenticate.mdx +176 -0
- package/.docs/organized/docs/reference/user-management/session-helpers/get-logout-url.mdx +42 -0
- package/.docs/organized/docs/reference/user-management/session-helpers/index.mdx +14 -0
- package/.docs/organized/docs/reference/user-management/session-helpers/load-sealed-session.mdx +105 -0
- package/.docs/organized/docs/reference/user-management/session-helpers/refresh.mdx +213 -0
- package/.docs/organized/docs/reference/user-management/session-tokens/access-token.mdx +90 -0
- package/.docs/organized/docs/reference/user-management/session-tokens/index.mdx +5 -0
- package/.docs/organized/docs/reference/user-management/session-tokens/jwks.mdx +110 -0
- package/.docs/organized/docs/reference/user-management/session-tokens/refresh-token.mdx +8 -0
- package/.docs/organized/docs/reference/user-management/user/create.mdx +327 -0
- package/.docs/organized/docs/reference/user-management/user/delete.mdx +76 -0
- package/.docs/organized/docs/reference/user-management/user/get-by-external-id.mdx +39 -0
- package/.docs/organized/docs/reference/user-management/user/get.mdx +103 -0
- package/.docs/organized/docs/reference/user-management/user/index.mdx +322 -0
- package/.docs/organized/docs/reference/user-management/user/list.mdx +260 -0
- package/.docs/organized/docs/reference/user-management/user/update.mdx +344 -0
- package/.docs/organized/docs/reference/vault/index.mdx +6 -0
- package/.docs/organized/docs/reference/vault/key/create-data-key.mdx +106 -0
- package/.docs/organized/docs/reference/vault/key/decrypt-data-key.mdx +84 -0
- package/.docs/organized/docs/reference/vault/key/decrypt-data.mdx +52 -0
- package/.docs/organized/docs/reference/vault/key/encrypt-data.mdx +58 -0
- package/.docs/organized/docs/reference/vault/key/index.mdx +25 -0
- package/.docs/organized/docs/reference/vault/object/create.mdx +62 -0
- package/.docs/organized/docs/reference/vault/object/delete.mdx +75 -0
- package/.docs/organized/docs/reference/vault/object/get.mdx +50 -0
- package/.docs/organized/docs/reference/vault/object/index.mdx +174 -0
- package/.docs/organized/docs/reference/vault/object/list.mdx +105 -0
- package/.docs/organized/docs/reference/vault/object/metadata.mdx +52 -0
- package/.docs/organized/docs/reference/vault/object/update.mdx +67 -0
- package/.docs/organized/docs/reference/vault/object/version.mdx +87 -0
- package/.docs/organized/docs/reference/vault/object/versions.mdx +83 -0
- package/.docs/organized/docs/reference/widgets/get-token.mdx +185 -0
- package/.docs/organized/docs/reference/widgets/index.mdx +6 -0
- package/.docs/organized/docs/reference/workos-connect/authorize/index.mdx +75 -0
- package/.docs/organized/docs/reference/workos-connect/index.mdx +33 -0
- package/.docs/organized/docs/reference/workos-connect/introspection/index.mdx +122 -0
- package/.docs/organized/docs/reference/workos-connect/metadata/index.mdx +25 -0
- package/.docs/organized/docs/reference/workos-connect/metadata/oauth-authorization-server/index.mdx +99 -0
- package/.docs/organized/docs/reference/workos-connect/metadata/openid-configuration/index.mdx +70 -0
- package/.docs/organized/docs/reference/workos-connect/token/authorization-code-grant/access-token.mdx +53 -0
- package/.docs/organized/docs/reference/workos-connect/token/authorization-code-grant/id-token.mdx +60 -0
- package/.docs/organized/docs/reference/workos-connect/token/authorization-code-grant/index.mdx +69 -0
- package/.docs/organized/docs/reference/workos-connect/token/client-credentials-grant/access-token.mdx +46 -0
- package/.docs/organized/docs/reference/workos-connect/token/client-credentials-grant/index.mdx +56 -0
- package/.docs/organized/docs/reference/workos-connect/token/index.mdx +39 -0
- package/.docs/organized/docs/reference/workos-connect/token/refresh-token-grant.mdx +69 -0
- package/.docs/organized/docs/reference/workos-connect/userinfo/index.mdx +46 -0
- package/.docs/organized/docs/sdks/dotnet.mdx +6 -0
- package/.docs/organized/docs/sdks/elixir.mdx +6 -0
- package/.docs/organized/docs/sdks/go.mdx +6 -0
- package/.docs/organized/docs/sdks/java.mdx +9 -0
- package/.docs/organized/docs/sdks/laravel.mdx +6 -0
- package/.docs/organized/docs/sdks/node.mdx +9 -0
- package/.docs/organized/docs/sdks/php.mdx +6 -0
- package/.docs/organized/docs/sdks/python.mdx +6 -0
- package/.docs/organized/docs/sdks/ruby.mdx +9 -0
- package/.docs/organized/docs/sso/_navigation.mdx +44 -0
- package/.docs/organized/docs/sso/_sequence-diagrams/saml-protocol-security-considerations.md +59 -0
- package/.docs/organized/docs/sso/attributes.mdx +110 -0
- package/.docs/organized/docs/sso/domains.mdx +111 -0
- package/.docs/organized/docs/sso/example-apps.mdx +46 -0
- package/.docs/organized/docs/sso/identity-provider-role-assignment.mdx +113 -0
- package/.docs/organized/docs/sso/index.mdx +295 -0
- package/.docs/organized/docs/sso/it-team-faq.mdx +35 -0
- package/.docs/organized/docs/sso/jit-provisioning.mdx +101 -0
- package/.docs/organized/docs/sso/launch-checklist.mdx +71 -0
- package/.docs/organized/docs/sso/login-flows.mdx +101 -0
- package/.docs/organized/docs/sso/redirect-uris.mdx +44 -0
- package/.docs/organized/docs/sso/saml-security.mdx +122 -0
- package/.docs/organized/docs/sso/signing-certificates.mdx +121 -0
- package/.docs/organized/docs/sso/single-logout.mdx +45 -0
- package/.docs/organized/docs/sso/test-sso.mdx +73 -0
- package/.docs/organized/docs/sso/ux/sign-in.mdx +44 -0
- package/.docs/organized/docs/user-management/_navigation.mdx +87 -0
- package/.docs/organized/docs/user-management/actions.mdx +169 -0
- package/.docs/organized/docs/user-management/authkit.mdx +69 -0
- package/.docs/organized/docs/user-management/branding.mdx +143 -0
- package/.docs/organized/docs/user-management/connect.mdx +110 -0
- package/.docs/organized/docs/user-management/custom-emails.mdx +164 -0
- package/.docs/organized/docs/user-management/directory-provisioning.mdx +78 -0
- package/.docs/organized/docs/user-management/domain-verification.mdx +28 -0
- package/.docs/organized/docs/user-management/email-password.mdx +42 -0
- package/.docs/organized/docs/user-management/email-verification.mdx +29 -0
- package/.docs/organized/docs/user-management/entitlements.mdx +46 -0
- package/.docs/organized/docs/user-management/example-apps.mdx +39 -0
- package/.docs/organized/docs/user-management/identity-linking.mdx +52 -0
- package/.docs/organized/docs/user-management/impersonation.mdx +82 -0
- package/.docs/organized/docs/user-management/index.mdx +525 -0
- package/.docs/organized/docs/user-management/invitations.mdx +60 -0
- package/.docs/organized/docs/user-management/invite-only-signup.mdx +72 -0
- package/.docs/organized/docs/user-management/jit-provisioning.mdx +36 -0
- package/.docs/organized/docs/user-management/jwt-templates.mdx +278 -0
- package/.docs/organized/docs/user-management/magic-auth.mdx +36 -0
- package/.docs/organized/docs/user-management/mcp.mdx +146 -0
- package/.docs/organized/docs/user-management/metadata.mdx +119 -0
- package/.docs/organized/docs/user-management/mfa.mdx +32 -0
- package/.docs/organized/docs/user-management/migrations.mdx +20 -0
- package/.docs/organized/docs/user-management/modeling-your-app.mdx +149 -0
- package/.docs/organized/docs/user-management/organization-policies.mdx +33 -0
- package/.docs/organized/docs/user-management/overview.mdx +46 -0
- package/.docs/organized/docs/user-management/passkeys.mdx +42 -0
- package/.docs/organized/docs/user-management/radar.mdx +127 -0
- package/.docs/organized/docs/user-management/roles-and-permissions.mdx +155 -0
- package/.docs/organized/docs/user-management/sessions.mdx +101 -0
- package/.docs/organized/docs/user-management/social-login.mdx +34 -0
- package/.docs/organized/docs/user-management/sso-with-contractors.mdx +85 -0
- package/.docs/organized/docs/user-management/sso.mdx +96 -0
- package/.docs/organized/docs/user-management/users-organizations.mdx +91 -0
- package/.docs/organized/docs/user-management/widgets.mdx +190 -0
- package/.docs/organized/docs/vault/_navigation.mdx +14 -0
- package/.docs/organized/docs/vault/index.mdx +38 -0
- package/.docs/organized/docs/vault/key-context.mdx +32 -0
- package/.docs/organized/docs/vault/quick-start.mdx +82 -0
- package/README.md +252 -0
- package/dist/chunk-64GKEK6G.js +48 -0
- package/dist/chunk-64GKEK6G.js.map +1 -0
- package/dist/get-tools.d.ts +23 -0
- package/dist/get-tools.js +8 -0
- package/dist/get-tools.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +552 -0
- package/dist/index.js.map +1 -0
- package/dist/prepare.d.ts +2 -0
- package/dist/prepare.js +269 -0
- package/dist/prepare.js.map +1 -0
- package/package.json +49 -0
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Xero OAuth
|
|
3
|
+
description: Learn how to set up OAuth with Xero.
|
|
4
|
+
icon: xero
|
|
5
|
+
breadcrumb:
|
|
6
|
+
title: Integrations
|
|
7
|
+
url: /integrations
|
|
8
|
+
originalPath: .tmp-workos-clone/packages/docs/content/integrations/xero-oauth.mdx
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Introduction
|
|
12
|
+
|
|
13
|
+
To configure your global Xero OAuth setup, you’ll need three pieces of information: a [Redirect URI](/glossary/redirect-uri), a Xero Client ID, and a Xero Client Secret.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## What WorkOS provides
|
|
18
|
+
|
|
19
|
+
WorkOS provides the Redirect URI, an allowlisted callback URL. It indicates the location to return an authorized user to after both an authorization code is granted, and the authentication process is complete.
|
|
20
|
+
|
|
21
|
+
Open your [WorkOS Dashboard](https://dashboard.workos.com) and browse to the _Authentication_ section on the left hand navigation bar. Scroll down to the _Xero OAuth_ section and click _Configure_.
|
|
22
|
+
|
|
23
|
+
In the modal, you’ll see the Redirect URI as well as the fields you’ll populate later with information from Xero. This URI will be used as part of the registration process later in the Xero developer settings page.
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## What you’ll need
|
|
28
|
+
|
|
29
|
+
In order to integrate you’ll need the Xero Client ID and the Xero Client Secret.
|
|
30
|
+
|
|
31
|
+
These are a pair of credentials provided by Xero that you’ll use to authenticate your application via the OAuth protocol. To obtain them:
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
### (1) Create the Xero OAuth Application
|
|
36
|
+
|
|
37
|
+
Log in to your [Xero developer account](https://developer.xero.com) and create a new application.
|
|
38
|
+
|
|
39
|
+

|
|
40
|
+
|
|
41
|
+
In the top right corner, select _New app_.
|
|
42
|
+
|
|
43
|
+
Fill out the form starting with the application name.
|
|
44
|
+
|
|
45
|
+

|
|
46
|
+
|
|
47
|
+
For the _Integration type_, select _Web app_.
|
|
48
|
+
|
|
49
|
+
For _Company or application URI_, use your application's homepage URI.
|
|
50
|
+
|
|
51
|
+
For _Redirect URI_, use the Redirect URI from the Xero OAuth configuration modal in the WorkOS Dashboard.
|
|
52
|
+
|
|
53
|
+

|
|
54
|
+
|
|
55
|
+
Agree to Xero's Developer Platform Terms & Conditions and click on _Create app_.
|
|
56
|
+
|
|
57
|
+
### (2) Generate client credentials
|
|
58
|
+
|
|
59
|
+
On the next page, you will see the Xero _App details_ for your new OAuth application.
|
|
60
|
+
|
|
61
|
+
From the left sidebar, navigate to the _Configuration_ page.
|
|
62
|
+
|
|
63
|
+

|
|
64
|
+
|
|
65
|
+
Select _Generate a secret_ to create a client secret.
|
|
66
|
+
|
|
67
|
+

|
|
68
|
+
|
|
69
|
+
Copy the _Client ID_ and _Client secret 1_.
|
|
70
|
+
|
|
71
|
+
In the next step, you will provide both the Xero Client ID and Client Secret to the WorkOS dashboard.
|
|
72
|
+
|
|
73
|
+
### (3) Provide client credentials to WorkOS
|
|
74
|
+
|
|
75
|
+
Go back to the _Authentication_ section in the WorkOS Dashboard, and click on _Edit_ under _Xero OAuth_.
|
|
76
|
+
|
|
77
|
+

|
|
78
|
+
|
|
79
|
+
Toggle _Enabled_ on and provide the client credentials from Xero that you generated in the previous step.
|
|
80
|
+
|
|
81
|
+
Finally, click _Save_.
|
|
82
|
+
|
|
83
|
+
You are now ready to start authenticating with Xero OAuth. Your users will see the option to sign-in with Xero when visiting your [AuthKit](/user-management) domain.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Magic Link
|
|
3
|
+
links:
|
|
4
|
+
- title: Getting Started
|
|
5
|
+
links:
|
|
6
|
+
- title: Quick Start
|
|
7
|
+
url: /magic-link
|
|
8
|
+
- title: Example Apps
|
|
9
|
+
url: /magic-link/example-apps
|
|
10
|
+
- title: Going Live
|
|
11
|
+
links:
|
|
12
|
+
- title: Launch Checklist
|
|
13
|
+
url: /magic-link/launch-checklist
|
|
14
|
+
originalPath: .tmp-workos-clone/packages/docs/content/magic-link/_navigation.mdx
|
|
15
|
+
---
|
|
16
|
+
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Example Apps
|
|
3
|
+
description: "View sample Magic\_Link\_apps for\_each\_SDK."
|
|
4
|
+
originalPath: .tmp-workos-clone/packages/docs/content/magic-link/example-apps.mdx
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
You can view minimal example apps that demonstrate how to use the WorkOS SDKs to authenticate users via Magic Link:
|
|
8
|
+
|
|
9
|
+
<ExampleApps.Root>
|
|
10
|
+
<ExampleApps.Card
|
|
11
|
+
href="https://github.com/workos/node-example-applications/tree/main/node-magic-link-example"
|
|
12
|
+
title="Node.js Magic Link app"
|
|
13
|
+
/>
|
|
14
|
+
<ExampleApps.Card
|
|
15
|
+
href="https://github.com/workos/typescript-example-applications/tree/main/typescript-magic-link-example"
|
|
16
|
+
title="TypeScript Magic Link app"
|
|
17
|
+
/>
|
|
18
|
+
<ExampleApps.Card
|
|
19
|
+
href="https://github.com/workos/ruby-example-applications/tree/main/ruby-magic-link-example"
|
|
20
|
+
title="Ruby Magic Link app"
|
|
21
|
+
/>
|
|
22
|
+
<ExampleApps.Card
|
|
23
|
+
href="https://github.com/workos/python-flask-example-applications/tree/main/python-flask-magic-link-example"
|
|
24
|
+
title="Python Flask Magic Link app"
|
|
25
|
+
/>
|
|
26
|
+
<ExampleApps.Card
|
|
27
|
+
href="https://github.com/workos/python-django-example-applications/tree/main/python-django-magic-link-example"
|
|
28
|
+
title="Python Django Magic Link app"
|
|
29
|
+
/>
|
|
30
|
+
<ExampleApps.Card
|
|
31
|
+
href="https://github.com/workos/go-example-applications/tree/main/go-magic-link-example"
|
|
32
|
+
title="Go Magic Link app"
|
|
33
|
+
/>
|
|
34
|
+
<ExampleApps.Card
|
|
35
|
+
href="https://github.com/workos/java-example-applications/tree/main/java-magic-link-example"
|
|
36
|
+
title="Java Magic Link app"
|
|
37
|
+
/>
|
|
38
|
+
<ExampleApps.Card
|
|
39
|
+
href="https://github.com/workos/php-example-applications/tree/main/php-magic-link-example"
|
|
40
|
+
title="PHP Magic Link app"
|
|
41
|
+
/>
|
|
42
|
+
<ExampleApps.Card
|
|
43
|
+
href="https://github.com/workos/dotnet-example-applications/tree/main/dotnet-magic-link-example"
|
|
44
|
+
title=".NET Magic Link app"
|
|
45
|
+
/>
|
|
46
|
+
</ExampleApps.Root>
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Magic Link
|
|
3
|
+
description: >-
|
|
4
|
+
The fastest way to securely enable authentication – passwordless sign-in via
|
|
5
|
+
email in a couple lines of code.
|
|
6
|
+
showNextPage: true
|
|
7
|
+
originalPath: .tmp-workos-clone/packages/docs/content/magic-link/index.mdx
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Introduction
|
|
11
|
+
|
|
12
|
+
Managing password authentication entails significant overhead for engineering teams and opens up many risks for breaches. Magic Link from WorkOS gives you the ability to build a secure passwordless authentication flow utilizing email. Send users a one-time-use link and let them sign in with a single click.
|
|
13
|
+
|
|
14
|
+
> Magic Link sets you up to handle Single Sign-On via the [WorkOS SSO API](/sso). The redirect URI / profile retrieval process is identical between Magic Link and SSO.
|
|
15
|
+
|
|
16
|
+
[border=false]
|
|
17
|
+
|
|
18
|
+
Magic Link is not a session management solution – instead it is an authentication solution. You as the developer have the ability to manage user sessions as you see fit. This means you determine how long a session is valid for, as well as how to store and invalidate a session.
|
|
19
|
+
|
|
20
|
+
Magic Links are single use, meaning that they will immediately expire after they are first clicked. If end users have security checks included with their email provider that test all embedded URLs, it can cause the Magic Links to expire before they reach the user’s inbox. To work around this, we recommend that end users add these Magic Link emails to an allowlist in order to bypass these security checks.
|
|
21
|
+
|
|
22
|
+
## What you’ll build
|
|
23
|
+
|
|
24
|
+
In this guide, we’ll take you from learning about passwordless authentication all the way through to building production-ready passwordless authentication flows with the WorkOS Magic Link API.
|
|
25
|
+
|
|
26
|
+
This guide will show you how to:
|
|
27
|
+
|
|
28
|
+
1. Add Magic Link to your app
|
|
29
|
+
2. Configure a redirect URI
|
|
30
|
+
3. Create a new Magic Link Connection
|
|
31
|
+
|
|
32
|
+
## Before getting started
|
|
33
|
+
|
|
34
|
+
To get the most out of this guide, you’ll need:
|
|
35
|
+
|
|
36
|
+
- A [WorkOS account](https://dashboard.workos.com/)
|
|
37
|
+
|
|
38
|
+
## API object definitions
|
|
39
|
+
|
|
40
|
+
[Passwordless Session](/reference/magic-link/passwordless-session)
|
|
41
|
+
: Represents a passwordless authentication session.
|
|
42
|
+
|
|
43
|
+
[Profile](/reference/sso/profile)
|
|
44
|
+
: Represents an authenticated user. The Profile object contains information relevant to a user in the form of normalized and raw attributes.
|
|
45
|
+
|
|
46
|
+
## (1) Add Magic Link to your app
|
|
47
|
+
|
|
48
|
+
### Install the WorkOS SDK
|
|
49
|
+
|
|
50
|
+
WorkOS offers native SDKs in several popular programming languages. Choose a language below to see instructions in your application’s language.
|
|
51
|
+
|
|
52
|
+
<LanguageSelector>
|
|
53
|
+
Install the SDK using the command below.
|
|
54
|
+
|
|
55
|
+
<CodeBlock title="Install the WorkOS SDK" file="install-sdk">
|
|
56
|
+
<CodeBlockTab language="js" file="install-sdk-npm" title="npm" />
|
|
57
|
+
<CodeBlockTab language="js" file="install-sdk-yarn" title="Yarn" />
|
|
58
|
+
<CodeBlockTab language="java" file="install-sdk-maven" title="Maven" />
|
|
59
|
+
<CodeBlockTab language="java" file="install-sdk-gradle" title="Gradle" />
|
|
60
|
+
<CodeBlockTab language="ruby" file="install-sdk-terminal" title="Terminal" />
|
|
61
|
+
<CodeBlockTab language="ruby" file="install-sdk-bundler" title="Bundler" />
|
|
62
|
+
</CodeBlock>
|
|
63
|
+
</LanguageSelector>
|
|
64
|
+
|
|
65
|
+
### Set secrets
|
|
66
|
+
|
|
67
|
+
To make calls to WorkOS, provide the API key and, in some cases, the client ID. Store these values as managed secrets, such as `WORKOS_API_KEY` and `WORKOS_CLIENT_ID`, and pass them to the SDKs either as environment variables or directly in your app's configuration based on your preferences.
|
|
68
|
+
|
|
69
|
+
```plain title="Environment variables"
|
|
70
|
+
WORKOS_API_KEY='sk_example_123456789'
|
|
71
|
+
WORKOS_CLIENT_ID='client_123456789'
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### Add a callback endpoint
|
|
75
|
+
|
|
76
|
+
Let’s first add the redirect endpoint which will handle the callback from WorkOS after a user has authenticated via a magic link. This endpoint should exchange the authorization code (valid for 10 minutes) returned by WorkOS with the authenticated user’s Profile.
|
|
77
|
+
|
|
78
|
+
<CodeBlock file="callback-endpoint" title="Callback Endpoint">
|
|
79
|
+
<CodeBlockTab language="js" file="callback-endpoint-next" title="Next.js" />
|
|
80
|
+
<CodeBlockTab
|
|
81
|
+
language="js"
|
|
82
|
+
file="callback-endpoint-express"
|
|
83
|
+
title="Express"
|
|
84
|
+
/>
|
|
85
|
+
<CodeBlockTab language="ruby" file="callback-endpoint-rails" title="Rails" />
|
|
86
|
+
<CodeBlockTab
|
|
87
|
+
language="ruby"
|
|
88
|
+
file="callback-endpoint-sinatra"
|
|
89
|
+
title="Sinatra"
|
|
90
|
+
/>
|
|
91
|
+
<CodeBlockTab
|
|
92
|
+
language="python"
|
|
93
|
+
file="callback-endpoint-django"
|
|
94
|
+
title="Django"
|
|
95
|
+
/>
|
|
96
|
+
<CodeBlockTab
|
|
97
|
+
language="python"
|
|
98
|
+
file="callback-endpoint-flask"
|
|
99
|
+
title="Flask"
|
|
100
|
+
/>
|
|
101
|
+
</CodeBlock>
|
|
102
|
+
|
|
103
|
+
### Create a Passwordless Session and email the user
|
|
104
|
+
|
|
105
|
+
Create a Passwordless Session to generate an authentication link for a user. An authentication link is valid for 15 minutes and can be sent via the WorkOS API or using your own email service.
|
|
106
|
+
|
|
107
|
+
You can use the optional `state` parameter to encode arbitrary information to help restore application state between redirects.
|
|
108
|
+
|
|
109
|
+
You can use the optional `redirect_uri` parameter to override the default [Redirect URI](/glossary/redirect-uri) set in the dashboard.
|
|
110
|
+
|
|
111
|
+
> A Magic Link Connection will be automatically created if there isn’t already one for the domain specified when creating a new Passwordless Session.
|
|
112
|
+
|
|
113
|
+
- | WorkOS email
|
|
114
|
+
|
|
115
|
+
Use the WorkOS API to send the authentication link to the user. The email sent will be WorkOS branded.
|
|
116
|
+
|
|
117
|
+
<CodeBlock
|
|
118
|
+
title="Create a Passwordless Session"
|
|
119
|
+
file="create-passwordless-session-with-workos"
|
|
120
|
+
>
|
|
121
|
+
<CodeBlockTab
|
|
122
|
+
language="js"
|
|
123
|
+
file="create-passwordless-session-with-workos-next"
|
|
124
|
+
title="Next.js"
|
|
125
|
+
/>
|
|
126
|
+
<CodeBlockTab
|
|
127
|
+
language="js"
|
|
128
|
+
file="create-passwordless-session-with-workos-express"
|
|
129
|
+
title="Express"
|
|
130
|
+
/>
|
|
131
|
+
<CodeBlockTab
|
|
132
|
+
language="ruby"
|
|
133
|
+
file="create-passwordless-session-with-workos-rails"
|
|
134
|
+
title="Rails"
|
|
135
|
+
/>
|
|
136
|
+
<CodeBlockTab
|
|
137
|
+
language="ruby"
|
|
138
|
+
file="create-passwordless-session-with-workos-sinatra"
|
|
139
|
+
title="Sinatra"
|
|
140
|
+
/>
|
|
141
|
+
<CodeBlockTab
|
|
142
|
+
language="python"
|
|
143
|
+
file="create-passwordless-session-with-workos-django"
|
|
144
|
+
title="Django"
|
|
145
|
+
/>
|
|
146
|
+
<CodeBlockTab
|
|
147
|
+
language="python"
|
|
148
|
+
file="create-passwordless-session-with-workos-flask"
|
|
149
|
+
title="Flask"
|
|
150
|
+
/>
|
|
151
|
+
</CodeBlock>
|
|
152
|
+
|
|
153
|
+
- | Custom email
|
|
154
|
+
|
|
155
|
+
Use your own email service and custom branded email template to send the authentication link to the user.
|
|
156
|
+
|
|
157
|
+
<CodeBlock
|
|
158
|
+
title="Create a Passwordless Session"
|
|
159
|
+
file="create-passwordless-session-custom"
|
|
160
|
+
>
|
|
161
|
+
<CodeBlockTab
|
|
162
|
+
language="js"
|
|
163
|
+
file="create-passwordless-session-custom-next"
|
|
164
|
+
title="Next.js"
|
|
165
|
+
/>
|
|
166
|
+
<CodeBlockTab
|
|
167
|
+
language="js"
|
|
168
|
+
file="create-passwordless-session-custom-express"
|
|
169
|
+
title="Express"
|
|
170
|
+
/>
|
|
171
|
+
<CodeBlockTab
|
|
172
|
+
language="ruby"
|
|
173
|
+
file="create-passwordless-session-custom-rails"
|
|
174
|
+
title="Rails"
|
|
175
|
+
/>
|
|
176
|
+
<CodeBlockTab
|
|
177
|
+
language="ruby"
|
|
178
|
+
file="create-passwordless-session-custom-sinatra"
|
|
179
|
+
title="Sinatra"
|
|
180
|
+
/>
|
|
181
|
+
<CodeBlockTab
|
|
182
|
+
language="python"
|
|
183
|
+
file="create-passwordless-session-custom-django"
|
|
184
|
+
title="Django"
|
|
185
|
+
/>
|
|
186
|
+
<CodeBlockTab
|
|
187
|
+
language="python"
|
|
188
|
+
file="create-passwordless-session-custom-flask"
|
|
189
|
+
title="Flask"
|
|
190
|
+
/>
|
|
191
|
+
</CodeBlock>
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
## (2) Configure a redirect URI
|
|
196
|
+
|
|
197
|
+
You should set a redirect URI (i.e. the callback endpoint from [Add a callback endpoint](/magic-link/1-add-magic-link-to-your-app/add-a-callback-endpoint)) via the Configuration page in the WorkOS Dashboard – be sure not to include wildcard subdomains or query parameters.
|
|
198
|
+
|
|
199
|
+

|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Launch Checklist
|
|
3
|
+
description: Make sure you’re ready to take your app to production.
|
|
4
|
+
originalPath: .tmp-workos-clone/packages/docs/content/magic-link/launch-checklist.mdx
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Create an IP Allowlist
|
|
8
|
+
|
|
9
|
+
WorkOS makes use of Cloudflare to ensure security and reliability of all operations. If you are looking to create a list of allowed IP addresses for redirect requests, you can use the IP Ranges listed in the [Cloudflare documentation](https://www.cloudflare.com/ips/).
|
|
10
|
+
|
|
11
|
+
## Go-live checklist
|
|
12
|
+
|
|
13
|
+
- [ ] Unlock your Production environment by adding your billing information
|
|
14
|
+
|
|
15
|
+
> Only enterprise connections in your Production environment will be charged. Any Google OAuth or Magic Link connections in Production will be free.
|
|
16
|
+
|
|
17
|
+
- [ ] Configure a production redirect URI in your Production project
|
|
18
|
+
- [ ] Secure your Production project’s API key
|
|
19
|
+
- [ ] Ensure that your application can receive redirects from WorkOS
|
|
20
|
+
|
|
21
|
+
Depending on your network architecture, you may need to allowlist incoming redirect traffic from `api.workos.com`.
|
|
22
|
+
|
|
23
|
+
## Frequently asked questions
|
|
24
|
+
|
|
25
|
+
### Can I customize the email sent via Magic Link?
|
|
26
|
+
|
|
27
|
+
Yes, you can use your own email service and custom branded email template to send the authentication link to the user. See the custom email code snippet in the [create passwordless session section](/magic-link/1-add-magic-link-to-your-app/create-a-passwordless-session-and-email-the-user) for an example.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Multi-Factor Auth
|
|
3
|
+
links:
|
|
4
|
+
- title: Getting Started
|
|
5
|
+
links:
|
|
6
|
+
- title: Quick Start
|
|
7
|
+
url: /mfa
|
|
8
|
+
- title: Example Apps
|
|
9
|
+
url: /mfa/example-apps
|
|
10
|
+
- title: User Experience
|
|
11
|
+
links:
|
|
12
|
+
- title: Enrollment
|
|
13
|
+
url: /mfa/ux/enrollment
|
|
14
|
+
- title: Sign-In
|
|
15
|
+
url: /mfa/ux/sign-in
|
|
16
|
+
originalPath: .tmp-workos-clone/packages/docs/content/mfa/_navigation.mdx
|
|
17
|
+
---
|
|
18
|
+
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Example Apps
|
|
3
|
+
description: "View sample Multi-Factor\_Auth apps for\_each\_SDK."
|
|
4
|
+
originalPath: .tmp-workos-clone/packages/docs/content/mfa/example-apps.mdx
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
You can view minimal example apps that demonstrate how to use the WorkOS SDKs to authenticate users via MFA:
|
|
8
|
+
|
|
9
|
+
<ExampleApps.Root>
|
|
10
|
+
<ExampleApps.Card
|
|
11
|
+
href="https://github.com/workos/node-example-applications/tree/main/node-mfa-example"
|
|
12
|
+
title="Node.js MFA app"
|
|
13
|
+
/>
|
|
14
|
+
<ExampleApps.Card
|
|
15
|
+
href="https://github.com/workos/typescript-example-applications/tree/main/typescript-mfa-example"
|
|
16
|
+
title="TypeScript MFA app"
|
|
17
|
+
/>
|
|
18
|
+
<ExampleApps.Card
|
|
19
|
+
href="https://github.com/workos/ruby-example-applications/tree/main/ruby-mfa-example"
|
|
20
|
+
title="Ruby MFA app"
|
|
21
|
+
/>
|
|
22
|
+
<ExampleApps.Card
|
|
23
|
+
href="https://github.com/workos/python-flask-example-applications/tree/main/python-flask-mfa-example"
|
|
24
|
+
title="Python Flask MFA app"
|
|
25
|
+
/>
|
|
26
|
+
<ExampleApps.Card
|
|
27
|
+
href="https://github.com/workos/python-django-example-applications/tree/main/python-django-mfa-example"
|
|
28
|
+
title="Python Django MFA app"
|
|
29
|
+
/>
|
|
30
|
+
<ExampleApps.Card
|
|
31
|
+
href="https://github.com/workos/go-example-applications/tree/main/go-mfa-example"
|
|
32
|
+
title="Go MFA app"
|
|
33
|
+
/>
|
|
34
|
+
<ExampleApps.Card
|
|
35
|
+
href="https://github.com/workos/java-example-applications/tree/main/java-mfa-example"
|
|
36
|
+
title="Java MFA app"
|
|
37
|
+
/>
|
|
38
|
+
<ExampleApps.Card
|
|
39
|
+
href="https://github.com/workos/php-example-applications/tree/main/php-mfa-example"
|
|
40
|
+
title="PHP MFA app"
|
|
41
|
+
/>
|
|
42
|
+
<ExampleApps.Card
|
|
43
|
+
href="https://github.com/workos/dotnet-example-applications/tree/main/dotnet-mfa-example"
|
|
44
|
+
title=".NET MFA app"
|
|
45
|
+
/>
|
|
46
|
+
</ExampleApps.Root>
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Multi-Factor Authentication
|
|
3
|
+
description: A composable API for implementing multi-factor authentication.
|
|
4
|
+
showNextPage: true
|
|
5
|
+
originalPath: .tmp-workos-clone/packages/docs/content/mfa/index.mdx
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Introduction
|
|
9
|
+
|
|
10
|
+
The Multi-Factor Authentication (MFA) API is intended to be a composable, unopinionated set of endpoints that can be integrated into existing application/session management strategies.
|
|
11
|
+
|
|
12
|
+
The available types of authentication factors are:
|
|
13
|
+
|
|
14
|
+
- `totp` – Time-based one-time password
|
|
15
|
+
- `sms` – One-time password via SMS message
|
|
16
|
+
|
|
17
|
+
> The MFA API is not intended to be used with the WorkOS SSO feature. It’s recommended to leverage the MFA features of the Identity Provider that is powering your SSO implementation.
|
|
18
|
+
|
|
19
|
+
## What you’ll build
|
|
20
|
+
|
|
21
|
+
In this guide, we’ll walk you through the process of enrolling new authentication factors for a user, and the challenge/verification process for existing authentication factors.
|
|
22
|
+
|
|
23
|
+
This guide will show you how to:
|
|
24
|
+
|
|
25
|
+
1. Create an Authentication Factor
|
|
26
|
+
2. Challenge the Authentication Factor
|
|
27
|
+
3. Verify the Challenge
|
|
28
|
+
|
|
29
|
+
## Before getting started
|
|
30
|
+
|
|
31
|
+
To get the most out of this guide, you’ll need:
|
|
32
|
+
|
|
33
|
+
- A [WorkOS account](https://dashboard.workos.com/)
|
|
34
|
+
|
|
35
|
+
## API object definitions
|
|
36
|
+
|
|
37
|
+
[Authentication Factor](/reference/mfa/authentication-factor)
|
|
38
|
+
: A factor of authentication that can be used in conjunction with a primary factor to provide multiple factors of authentication.
|
|
39
|
+
|
|
40
|
+
[Authentication Challenge](/reference/mfa/authentication-challenge)
|
|
41
|
+
: A request for an Authentication Factor to be verified.
|
|
42
|
+
|
|
43
|
+
## (1) Create an Authentication Factor
|
|
44
|
+
|
|
45
|
+
We’ll first need to enroll a new Authentication Factor.
|
|
46
|
+
|
|
47
|
+
### Install the WorkOS SDK
|
|
48
|
+
|
|
49
|
+
WorkOS offers native SDKs in several popular programming languages. Choose a language below to see instructions in your application’s language.
|
|
50
|
+
|
|
51
|
+
<LanguageSelector>
|
|
52
|
+
Install the SDK using the command below.
|
|
53
|
+
|
|
54
|
+
<CodeBlock title="Install the WorkOS SDK" file="install-sdk">
|
|
55
|
+
<CodeBlockTab language="js" file="install-sdk-npm" title="npm" />
|
|
56
|
+
<CodeBlockTab language="js" file="install-sdk-yarn" title="Yarn" />
|
|
57
|
+
<CodeBlockTab language="java" file="install-sdk-maven" title="Maven" />
|
|
58
|
+
<CodeBlockTab language="java" file="install-sdk-gradle" title="Gradle" />
|
|
59
|
+
<CodeBlockTab language="ruby" file="install-sdk-terminal" title="Terminal" />
|
|
60
|
+
<CodeBlockTab language="ruby" file="install-sdk-bundler" title="Bundler" />
|
|
61
|
+
</CodeBlock>
|
|
62
|
+
</LanguageSelector>
|
|
63
|
+
|
|
64
|
+
### Set secrets
|
|
65
|
+
|
|
66
|
+
To make calls to WorkOS, provide the API key and, in some cases, the client ID. Store these values as managed secrets, such as `WORKOS_API_KEY` and `WORKOS_CLIENT_ID`, and pass them to the SDKs either as environment variables or directly in your app's configuration based on your preferences.
|
|
67
|
+
|
|
68
|
+
```plain title="Environment variables"
|
|
69
|
+
WORKOS_API_KEY='sk_example_123456789'
|
|
70
|
+
WORKOS_CLIENT_ID='client_123456789'
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Enroll the Authentication Factor
|
|
74
|
+
|
|
75
|
+
- | Using TOTP
|
|
76
|
+
|
|
77
|
+
Use the TOTP type when the user is using a third-party authenticator app such as Google Authenticator or Authy.
|
|
78
|
+
|
|
79
|
+
<CodeBlock title="Enroll Endpoint" file="enroll-totp" />
|
|
80
|
+
|
|
81
|
+
The response returns a `qr_code` and a secret. The `qr_code` value is a base64 encoded data URI that is used to [display the QR code](https://css-tricks.com/data-uris/) in your application for enrollment with an authenticator application.
|
|
82
|
+
|
|
83
|
+
The `secret` can be entered into some authenticator applications in place of scanning a QR code.
|
|
84
|
+
|
|
85
|
+
- | Using SMS
|
|
86
|
+
|
|
87
|
+
Use the SMS type when the user wants to receive one time passwords as SMS messages to their mobile device.
|
|
88
|
+
|
|
89
|
+
Phone number must be valid. An error will be returned for malformed or invalid phone numbers.
|
|
90
|
+
|
|
91
|
+
<CodeBlock title="Enroll Endpoint" file="enroll-sms" />
|
|
92
|
+
|
|
93
|
+
Now that we’ve successfully created an authentication factor, we’ll need to save the ID for later use. It’s recommended that you persist the factor ID in your own user model according to your application’s needs.
|
|
94
|
+
|
|
95
|
+
## (2) Challenge the Authentication Factor
|
|
96
|
+
|
|
97
|
+
Next we’ll initiate the authentication process for the newly created factor which we’ll refer to as a challenge.
|
|
98
|
+
|
|
99
|
+
- | Create Authentication Challenge
|
|
100
|
+
|
|
101
|
+
<CodeBlock title="Challenge Endpoint" file="create-challenge" />
|
|
102
|
+
|
|
103
|
+
- | Sending Custom SMS Message
|
|
104
|
+
|
|
105
|
+
When challenging an SMS authentication factor, you can pass an optional SMS template to customize the SMS message that is sent to the end user. Use the `{{code}}` token to inject the one time password into the message.
|
|
106
|
+
|
|
107
|
+
<CodeBlock title="Challenge Endpoint" file="create-sms-challenge" />
|
|
108
|
+
|
|
109
|
+
Now that we’ve successfully challenged the authentication factor, we’ll need to save the challenge ID for the last step, challenge verification.
|
|
110
|
+
|
|
111
|
+
## (3) Verify the Challenge
|
|
112
|
+
|
|
113
|
+
The last step in the authentication process is to verify the one time password provided by the end-user.
|
|
114
|
+
|
|
115
|
+
<CodeBlock title="Verify Endpoint" file="verify-challenge" />
|
|
116
|
+
|
|
117
|
+
### Verification Response
|
|
118
|
+
|
|
119
|
+
If the challenge is successfully verified `valid` will return `true`. Otherwise it will return `false` and another verification attempt must be made.
|
|
120
|
+
|
|
121
|
+
<CodeBlock title="Response" file="authentication-challenge-response" />
|
|
122
|
+
|
|
123
|
+
### Already Verified Error
|
|
124
|
+
|
|
125
|
+
If a challenge was already successfully verified, it cannot be used a second time. If further verification is needed in your application, create a new challenge.
|
|
126
|
+
|
|
127
|
+
<CodeBlock
|
|
128
|
+
title="Response"
|
|
129
|
+
file="authentication-challenge-previously-verified"
|
|
130
|
+
/>
|
|
131
|
+
|
|
132
|
+
### Expired Error
|
|
133
|
+
|
|
134
|
+
For SMS authentication factors, challenges are only available for verification for 10 minutes. After that they are expired and cannot be verified.
|
|
135
|
+
|
|
136
|
+
<CodeBlock title="Response" file="authentication-challenge-expired" />
|
|
137
|
+
|
|
138
|
+
We’ve now successfully verified an end-user’s authentication factor. This authentication factor can now be used as a second factor of authentication in your application’s existing authentication strategy.
|
|
139
|
+
|
|
140
|
+
The ID of the authentication factor should be persisted in your application for future authentication challenges.
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Enrollment UX
|
|
3
|
+
description: User experience considerations for MFA enrollment.
|
|
4
|
+
showNextPage: true
|
|
5
|
+
originalPath: .tmp-workos-clone/packages/docs/content/mfa/ux/enrollment.mdx
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Introduction
|
|
9
|
+
|
|
10
|
+
Now that we've seen how the MFA APIs work, you may want to consider how you want to present the MFA enrollment experience to your users. This guide will cover some of the considerations you should take into account when designing your enrollment experience.
|
|
11
|
+
|
|
12
|
+
## Provide multiple methods
|
|
13
|
+
|
|
14
|
+
The MFA APIs support multiple methods of authentication. Consider providing your users with multiple options for enrolling in MFA. Adding flexibility will reduce friction in users adoption.
|
|
15
|
+
|
|
16
|
+
<MfaEnrollmentDemoMultipleMethods />
|
|
17
|
+
|
|
18
|
+
## Let users choose their primary method
|
|
19
|
+
|
|
20
|
+
If a user has enrolled in multiple methods, consider letting them select a primary. This will allow you to challenge them with the method they are most comfortable, whilst still benefiting from the security of a backup in case they lose access.
|
|
21
|
+
|
|
22
|
+
<MfaEnrollmentDemoPrimaryMethod />
|
|
23
|
+
|
|
24
|
+
## Setup a `totp` factor accessibly
|
|
25
|
+
|
|
26
|
+
As we have previously seen, [when enrolling a `totp` factor using the MFA API](mfa/1-create-an-authentication-factor/enroll-the-authentication-factor), the response returns a `qr_code` and a `secret`.
|
|
27
|
+
|
|
28
|
+
The `qr_code` value can be passed directly to the source on an image tag as follows:
|
|
29
|
+
|
|
30
|
+
<CodeBlock title="Embed QR Code" file="embed-qr-code" />
|
|
31
|
+
|
|
32
|
+
However, some users may not be able to scan the QR code. Consider providing the `secret` value in the UI as an alternate way to set up their authenticator app.
|
|
33
|
+
|
|
34
|
+
<MfaEnrollmentDemoTotp />
|
|
35
|
+
|
|
36
|
+
Additionally, consider describing the QR code for assistive technologies:
|
|
37
|
+
|
|
38
|
+
<CodeBlock title="QR Code accessibility" file="link-qr-code-and-secret" />
|
|
39
|
+
|
|
40
|
+
## Interoperable one-time-passcode input
|
|
41
|
+
|
|
42
|
+
In order to make the experience as smooth as possible for your users, there are a few things to consider regarding the input they will use to fill in their one-time-passcode.
|
|
43
|
+
|
|
44
|
+
### Provide the right affordance
|
|
45
|
+
|
|
46
|
+
You may be tempted to use [a number input](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/number) as it will show the mobile keyboard for numbers only. This is not recommended because a browser expects a number input to be countable, rather than a sequence of multiple numbers, which can cause unexpected behavior.
|
|
47
|
+
|
|
48
|
+
Instead, we recommend using a text input (`type="text"`) with the `inputmode="numeric"` attribute to provide mobile devices with the expected numerical keyboard prompt.
|
|
49
|
+
|
|
50
|
+
### Autofill
|
|
51
|
+
|
|
52
|
+
Setting `autocomplete="one-time-code"` will enable autofill with in any user-agent that supports it. This will for example ensure Safari on iOS/MacOS can suggest/auto-fill the one-time-code received via SMS.
|
|
53
|
+
|
|
54
|
+
Consider also submitting the form automatically as soon as the passcode length has been met. This should help reduce the friction of using two-factor authentication for your users.
|
|
55
|
+
|
|
56
|
+
### Validation
|
|
57
|
+
|
|
58
|
+
Consider using client-side validation to ensure the user enters a valid one-time-passcode. This will reduce the number of requests to the server and improve the user experience.
|
|
59
|
+
|
|
60
|
+
`pattern="^\d{6}$"` can be used to validate the length of the one-time-passcode.
|
|
61
|
+
|
|
62
|
+
Here is a code example implementing the above considerations:
|
|
63
|
+
|
|
64
|
+
<CodeBlock title="One-time-passcode input" file="otp-input" />
|
|
65
|
+
|
|
66
|
+
<MfaEnrollmentDemoOtpInput />
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## Full UI interactive example
|
|
71
|
+
|
|
72
|
+
The following interactive example shows a full UI for enrolling in MFA, and encompasses all of the considerations mentioned above.
|
|
73
|
+
|
|
74
|
+
<MfaEnrollmentDemoFull />
|