@@ -236,6 +236,8 @@ Define Auth Challenge | `data_classes.cognito_user_pool_event.DefineAuthChalleng
236
236
Create Auth Challenge | ` data_classes.cognito_user_pool_event.CreateAuthChallengeTriggerEvent `
237
237
Verify Auth Challenge | ` data_classes.cognito_user_pool_event.VerifyAuthChallengeResponseTriggerEvent `
238
238
239
+ #### Post Confirmation Example
240
+
239
241
=== "app.py"
240
242
241
243
```python
@@ -248,6 +250,201 @@ Verify Auth Challenge | `data_classes.cognito_user_pool_event.VerifyAuthChalleng
248
250
do_something_with(user_attributes)
249
251
```
250
252
253
+ #### Define Auth Challenge Example
254
+
255
+ !!! warning "NOTE "
256
+ In this example we are modifying the wrapped dict response fields, so we need to return the json serializable wrapped event in ` event.raw_event `
257
+
258
+ !!! info "NOTE "
259
+ This example is based on the AWS Cognito docs for [ Define Auth Challenge Lambda Trigger] ( https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-define-auth-challenge.html ) {target="_ blank"}
260
+
261
+ === "app.py"
262
+
263
+ ```python
264
+ from aws_lambda_powertools.utilities.data_classes.cognito_user_pool_event import DefineAuthChallengeTriggerEvent
265
+
266
+ def handler(event: dict, context) -> dict:
267
+ event: DefineAuthChallengeTriggerEvent = DefineAuthChallengeTriggerEvent(event)
268
+ if (
269
+ len(event.request.session) == 1
270
+ and event.request.session[0].challenge_name == "SRP_A"
271
+ ):
272
+ event.response.issue_tokens = False
273
+ event.response.fail_authentication = False
274
+ event.response.challenge_name = "PASSWORD_VERIFIER"
275
+ elif (
276
+ len(event.request.session) == 2
277
+ and event.request.session[1].challenge_name == "PASSWORD_VERIFIER"
278
+ and event.request.session[1].challenge_result
279
+ ):
280
+ event.response.issue_tokens = False
281
+ event.response.fail_authentication = False
282
+ event.response.challenge_name = "CUSTOM_CHALLENGE"
283
+ elif (
284
+ len(event.request.session) == 3
285
+ and event.request.session[2].challenge_name == "CUSTOM_CHALLENGE"
286
+ and event.request.session[2].challenge_result
287
+ ):
288
+ event.response.issue_tokens = True
289
+ event.response.fail_authentication = False
290
+ else:
291
+ event.response.issue_tokens = False
292
+ event.response.fail_authentication = True
293
+
294
+ return event.raw_event
295
+ ```
296
+ === "SPR_A response"
297
+
298
+ ```json hl_lines="25-27"
299
+ {
300
+ "version": "1",
301
+ "region": "us-east-1",
302
+ "userPoolId": "us-east-1_example",
303
+ "userName": "UserName",
304
+ "callerContext": {
305
+ "awsSdkVersion": "awsSdkVersion",
306
+ "clientId": "clientId"
307
+ },
308
+ "triggerSource": "DefineAuthChallenge_Authentication",
309
+ "request": {
310
+ "userAttributes": {
311
+ "sub": "4A709A36-7D63-4785-829D-4198EF10EBDA",
312
+ "email_verified": "true",
313
+ "name": "First Last",
314
+ "email": "define-auth@mail.com"
315
+ },
316
+ "session": [
317
+ {
318
+ "challengeName": "SRP_A",
319
+ "challengeResult": true
320
+ }
321
+ ]
322
+ },
323
+ "response": {
324
+ "issueTokens": false,
325
+ "failAuthentication": false,
326
+ "challengeName": "PASSWORD_VERIFIER"
327
+ }
328
+ }
329
+ ```
330
+ === "PASSWORD_VERIFIER success response"
331
+
332
+ ```json hl_lines="30-32"
333
+ {
334
+ "version": "1",
335
+ "region": "us-east-1",
336
+ "userPoolId": "us-east-1_example",
337
+ "userName": "UserName",
338
+ "callerContext": {
339
+ "awsSdkVersion": "awsSdkVersion",
340
+ "clientId": "clientId"
341
+ },
342
+ "triggerSource": "DefineAuthChallenge_Authentication",
343
+ "request": {
344
+ "userAttributes": {
345
+ "sub": "4A709A36-7D63-4785-829D-4198EF10EBDA",
346
+ "email_verified": "true",
347
+ "name": "First Last",
348
+ "email": "define-auth@mail.com"
349
+ },
350
+ "session": [
351
+ {
352
+ "challengeName": "SRP_A",
353
+ "challengeResult": true
354
+ },
355
+ {
356
+ "challengeName": "PASSWORD_VERIFIER",
357
+ "challengeResult": true
358
+ }
359
+ ]
360
+ },
361
+ "response": {
362
+ "issueTokens": false,
363
+ "failAuthentication": false,
364
+ "challengeName": "CUSTOM_CHALLENGE"
365
+ }
366
+ }
367
+
368
+ ```
369
+ === "CUSTOM_CHALLENGE success response"
370
+
371
+ ```json hl_lines="34 35"
372
+ {
373
+ "version": "1",
374
+ "region": "us-east-1",
375
+ "userPoolId": "us-east-1_example",
376
+ "userName": "UserName",
377
+ "callerContext": {
378
+ "awsSdkVersion": "awsSdkVersion",
379
+ "clientId": "clientId"
380
+ },
381
+ "triggerSource": "DefineAuthChallenge_Authentication",
382
+ "request": {
383
+ "userAttributes": {
384
+ "sub": "4A709A36-7D63-4785-829D-4198EF10EBDA",
385
+ "email_verified": "true",
386
+ "name": "First Last",
387
+ "email": "define-auth@mail.com"
388
+ },
389
+ "session": [
390
+ {
391
+ "challengeName": "SRP_A",
392
+ "challengeResult": true
393
+ },
394
+ {
395
+ "challengeName": "PASSWORD_VERIFIER",
396
+ "challengeResult": true
397
+ },
398
+ {
399
+ "challengeName": "CUSTOM_CHALLENGE",
400
+ "challengeResult": true
401
+ }
402
+ ]
403
+ },
404
+ "response": {
405
+ "issueTokens": true,
406
+ "failAuthentication": false
407
+ }
408
+ }
409
+ ```
410
+
411
+ #### Create Auth Challenge Example
412
+
413
+ !!! info "NOTE "
414
+ This example is based on the AWS Cognito docs for [ Create Auth Challenge Lambda Trigger] ( https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-create-auth-challenge.html ) {target="_ blank"}
415
+
416
+ === "app.py"
417
+
418
+ ```python
419
+ from aws_lambda_powertools.utilities.data_classes.cognito_user_pool_event import CreateAuthChallengeTriggerEvent
420
+
421
+ def handler(event: dict, context) -> dict:
422
+ event: CreateAuthChallengeTriggerEvent = CreateAuthChallengeTriggerEvent(event)
423
+ if event.request.challenge_name == "CUSTOM_CHALLENGE":
424
+ event.response.public_challenge_parameters = {"captchaUrl": "url/123.jpg"}
425
+ event.response.private_challenge_parameters = {"answer": "5"}
426
+ event.response.challenge_metadata = "CAPTCHA_CHALLENGE"
427
+ return event.raw_event
428
+ ```
429
+
430
+ #### Verify Auth Challenge Response Example
431
+
432
+ !!! info "NOTE "
433
+ This example is based on the AWS Cognito docs for [ Verify Auth Challenge Response Lambda Trigger] ( https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-verify-auth-challenge-response.html ) {target="_ blank"}
434
+
435
+ === "app.py"
436
+
437
+ ```python
438
+ from aws_lambda_powertools.utilities.data_classes.cognito_user_pool_event import VerifyAuthChallengeResponseTriggerEvent
439
+
440
+ def handler(event: dict, context) -> dict:
441
+ event: VerifyAuthChallengeResponseTriggerEvent = VerifyAuthChallengeResponseTriggerEvent(event)
442
+ event.response.answer_correct = (
443
+ event.request.private_challenge_parameters.get("answer") == event.request.challenge_answer
444
+ )
445
+ return event.raw_event
446
+ ```
447
+
251
448
### Connect Contact Flow
252
449
253
450
=== "app.py"
0 commit comments