You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: examples/Passwordless.md
+6-23Lines changed: 6 additions & 23 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -3,7 +3,7 @@
3
3
Passwordless lets users sign in with a one-time code sent by email or SMS, or with a magic link sent by email. This guide covers the **embedded login** flow on `ServerClient.passwordless` and how each path establishes a server-side session.
4
4
5
5
> [!NOTE]
6
-
> Passwordless API flows use Auth0 Legacy Passwordless connections (`email` and `sms`). Enable the **Passwordless OTP** grant for your application. See the [Auth0 Passwordless API documentation](https://auth0.com/docs/authenticate/passwordless/implement-login/embedded-login/relevant-api-endpoints).
6
+
> Passwordless API flows use Auth0 Passwordless connections (`email` and `sms`). Enable the **Passwordless OTP** grant for your application. See the [Auth0 Passwordless API documentation](https://auth0.com/docs/authenticate/passwordless/implement-login/embedded-login/relevant-api-endpoints).
7
7
8
8
> [!IMPORTANT]
9
9
> These flows are for confidential server-side applications. Tokens stay on the server. The browser should only receive your application's session cookie or opaque session reference.
@@ -35,36 +35,20 @@ OTP start does **not** create a session. The session exists only after `verify()
35
35
## Prerequisites
36
36
37
37
These flows require a **Regular Web Application**. Passwordless token exchange
38
-
needs a client secret, which a public/SPA client cannot hold safely.
38
+
needs a client secret, which a public client cannot hold safely.
39
39
40
-
Two tenant-level settings are also required and are easy to miss because
41
-
neither failure mode looks like a configuration problem:
40
+
Two tenant-level settings are also required:
42
41
43
42
1.**Authentication Profile must be "Identifier First."** The default
44
43
"Universal Login" profile blocks the direct `/oauth/token` call this SDK
45
44
uses for OTP verification. Without it, OTP `verify()` fails with
46
45
`unauthorized_client`. Set it under your tenant's Authentication Profile
47
46
settings. (Skip this if you only use passwordless via Universal Login
48
47
redirects rather than this SDK's embedded flow.)
49
-
2.**Enable the Passwordless OTP grant type** on your application
50
-
(**Applications -> Your App -> Advanced Settings -> Grant Types**). Without
48
+
2.**Enable the Passwordless OTP grant type** on your application. Without
51
49
it, OTP verification also fails with `unauthorized_client`.
52
50
3.**Magic link only.** Set the tenant flag
53
-
`universal_login.passwordless.allow_magiclink_verify_without_session` to
# start_result.id is Auth0's request identifier when returned by the API.
100
83
```
101
84
102
85
### Step 2 - Verify the code and establish the session
@@ -297,7 +280,7 @@ except MfaRequiredError as e:
297
280
```
298
281
299
282
> [!NOTE]
300
-
> Passwordless OTP MFA is like passkey-first MFA: there is no existing application session until MFA verification succeeds. `persist=True` creates the initial SDK session when the MFA response includes an ID token.
283
+
> For Passwordless OTP MFA there is no existing application session until MFA verification succeeds. `persist=True` creates the initial SDK session when the MFA response includes an ID token.
0 commit comments