Skip to content

Commit 55a5bc0

Browse files
committed
updated docs
1 parent 7807d13 commit 55a5bc0

File tree

2 files changed

+17
-6
lines changed
  • src/pages/[platform]/build-a-backend
    • auth/connect-your-frontend/switching-authentication-flows
    • functions/examples/custom-auth-flows

2 files changed

+17
-6
lines changed

src/pages/[platform]/build-a-backend/auth/connect-your-frontend/switching-authentication-flows/index.mdx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -189,12 +189,12 @@ if (nextStep.signInStep === 'CONFIRM_SIGN_IN_WITH_CUSTOM_CHALLENGE') {
189189
await confirmSignIn({ challengeResponse });
190190
}
191191
```
192-
To create a CUSTOM_AUTH challenge with a Lambda Trigger, please visit [AWS Amplify Google reCAPTCHA challenge example](/[platform]/build-a-backend/functions/examples/google-recaptcha-challenge/) for detailed examples.
192+
To create a CAPTCHA challenge with a Lambda Trigger, please visit [AWS Amplify Custom Auth Challenge example](/[platform]/build-a-backend/functions/examples/custom-auth-flows/) for set up instructions.
193193

194194

195195
### CAPTCHA authentication
196196

197-
To create a CAPTCHA challenge with a Lambda Trigger, please visit [AWS Amplify Custom Auth Challenge example](/[platform]/build-a-backend/functions/examples/custom-auth-flows/) for set up instructions.
197+
To create a CUSTOM_AUTH challenge with a Lambda Trigger, please visit [AWS Amplify Google reCAPTCHA challenge example](/[platform]/build-a-backend/functions/examples/google-recaptcha-challenge/) for detailed examples.
198198

199199
</InlineFilter>
200200

src/pages/[platform]/build-a-backend/functions/examples/custom-auth-flows/index.mdx

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -95,8 +95,9 @@ After creating the resource file, create the handler with the following contents
9595
import type { DefineAuthChallengeTriggerHandler } from "aws-lambda"
9696

9797
export const handler: DefineAuthChallengeTriggerHandler = async (event) => {
98+
// Check if this is the first authentication attempt
9899
if (event.request.session.length === 0) {
99-
// If it's the first auth stage
100+
// For the first attempt, we start with the custom challenge
100101
event.response.issueTokens = false;
101102
event.response.failAuthentication = false;
102103
event.response.challengeName = "CUSTOM_CHALLENGE";
@@ -105,11 +106,15 @@ export const handler: DefineAuthChallengeTriggerHandler = async (event) => {
105106
event.request.session[0].challengeName === "CUSTOM_CHALLENGE" &&
106107
event.request.session[0].challengeResult === true
107108
) {
108-
// If CUSTOM_CHALLENGE is passed
109+
// If this is the second attempt (session length 1),
110+
// it was a CUSTOM_CHALLENGE, and the result was successful
109111
event.response.issueTokens = true;
110112
event.response.failAuthentication = false;
111113
} else {
112-
// Fail auth if we don't have the expected challenge results
114+
// If we reach here, it means either:
115+
// 1. The custom challenge failed
116+
// 2. We've gone through more attempts than expected
117+
// In either case, we fail the authentication
113118
event.response.issueTokens = false;
114119
event.response.failAuthentication = true;
115120
}
@@ -124,6 +129,7 @@ Or if you are using `CUSTOM_WITH_SRP`:
124129
import type { DefineAuthChallengeTriggerHandler } from "aws-lambda"
125130

126131
export const handler: DefineAuthChallengeTriggerHandler = async (event) => {
132+
// First attempt: Start with SRP_A (Secure Remote Password protocol, step A)
127133
if (event.request.session.length === 0) {
128134
event.response.issueTokens = false;
129135
event.response.failAuthentication = false;
@@ -133,6 +139,7 @@ export const handler: DefineAuthChallengeTriggerHandler = async (event) => {
133139
event.request.session[0].challengeName === "SRP_A" &&
134140
event.request.session[0].challengeResult === true
135141
) {
142+
// Second attempt: SRP_A was successful, move to PASSWORD_VERIFIER
136143
event.response.issueTokens = false;
137144
event.response.failAuthentication = false;
138145
event.response.challengeName = "PASSWORD_VERIFIER";
@@ -141,6 +148,7 @@ export const handler: DefineAuthChallengeTriggerHandler = async (event) => {
141148
event.request.session[1].challengeName === "PASSWORD_VERIFIER" &&
142149
event.request.session[1].challengeResult === true
143150
) {
151+
// Third attempt: PASSWORD_VERIFIER was successful, move to CUSTOM_CHALLENGE
144152
event.response.issueTokens = false;
145153
event.response.failAuthentication = false;
146154
event.response.challengeName = "CUSTOM_CHALLENGE";
@@ -149,9 +157,12 @@ export const handler: DefineAuthChallengeTriggerHandler = async (event) => {
149157
event.request.session[2].challengeName === "CUSTOM_CHALLENGE" &&
150158
event.request.session[2].challengeResult === true
151159
) {
160+
// Fourth attempt: CUSTOM_CHALLENGE was successful, authentication complete
152161
event.response.issueTokens = true;
153162
event.response.failAuthentication = false;
154163
} else {
164+
// If we reach here, it means one of the challenges failed or
165+
// we've gone through more attempts than expected
155166
event.response.issueTokens = false;
156167
event.response.failAuthentication = true;
157168
}
@@ -212,4 +223,4 @@ export const auth = defineAuth({
212223
})
213224
```
214225

215-
After deploying the changes, whenever a user attempts to sign in with `CUSTOM_WITH_SRP` or `CUSTOM_WITHOUT_SRP`, the lambda challenges will be triggered.
226+
After deploying the changes, whenever a user attempts to sign in with `CUSTOM_WITH_SRP` or `CUSTOM_WITHOUT_SRP`, the Lambda challenges will be triggered.

0 commit comments

Comments
 (0)