AWS 用户池 - 在没有会话标识符的情况下调用 defAuthChallenge
AWS User Pools - defAuthChallenge called without session identifier
我已将 lambda 函数添加到我的 AWS 用户池Define Auth Challenge
当我的 iOS 应用程序尝试让用户登录时,会调用 Define Auth Challenge
lambda。但是 event.request.session
参数是一个空列表 []
.
有 only one example(这是 JavaScript lambda 的一部分的屏幕截图),但需要定义 session
。
我需要在 iOS 应用程序中定义什么才能正确填充 session
?
event = {
u'userName': u'SET',
u'userPoolId': u'SET',
u'callerContext': {
u'awsSdkVersion': u'aws-sdk-ios-2.6.10',
u'clientId': u'SET'
},
u'region': u'SET',
u'request': {
u'session': [],
u'userAttributes': {
u'email_verified': u'true',
u'email': u'SET',
u'sub': u'SET',
u'cognito:user_status': u'CONFIRMED',
u'cognito:email_alias': u'SET'
}
},
u'triggerSource': u'DefineAuthChallenge_Authentication',
u'version': u'1',
u'response': {
u'issueTokens': None,
u'failAuthentication': None,
u'challengeName': None
}
}
event.request
中的session
不是客户设置的
对于 Define Auth Challenge Lambda 函数的第一次调用,session
是一个空列表。后续调用将填充 session
使用 Python,单步自定义流程 Define Auth Challenge
可以采用以下形式:
def handler(event, context):
step = len(event['request']['session'])
if step == 0:
event['response']['challengeName'] = 'CUSTOM_CHALLENGE'
event['response']['issueTokens'] = False
event['response']['failAuthentication'] = False
elif step == 1 and event['request']['session'][0]['challengeName'] == 'CUSTOM_CHALLENGE':
event['response']['issueTokens'] = event['request']['session'][0]['challengeResult']
event['response']['failAuthentication'] = False
else:
event['response']['issueTokens'] = False
event['response']['failAuthentication'] = True
return event
我已将 lambda 函数添加到我的 AWS 用户池Define Auth Challenge
当我的 iOS 应用程序尝试让用户登录时,会调用 Define Auth Challenge
lambda。但是 event.request.session
参数是一个空列表 []
.
有 only one example(这是 JavaScript lambda 的一部分的屏幕截图),但需要定义 session
。
我需要在 iOS 应用程序中定义什么才能正确填充 session
?
event = {
u'userName': u'SET',
u'userPoolId': u'SET',
u'callerContext': {
u'awsSdkVersion': u'aws-sdk-ios-2.6.10',
u'clientId': u'SET'
},
u'region': u'SET',
u'request': {
u'session': [],
u'userAttributes': {
u'email_verified': u'true',
u'email': u'SET',
u'sub': u'SET',
u'cognito:user_status': u'CONFIRMED',
u'cognito:email_alias': u'SET'
}
},
u'triggerSource': u'DefineAuthChallenge_Authentication',
u'version': u'1',
u'response': {
u'issueTokens': None,
u'failAuthentication': None,
u'challengeName': None
}
}
event.request
中的session
不是客户设置的
对于 Define Auth Challenge Lambda 函数的第一次调用,session
是一个空列表。后续调用将填充 session
使用 Python,单步自定义流程 Define Auth Challenge
可以采用以下形式:
def handler(event, context):
step = len(event['request']['session'])
if step == 0:
event['response']['challengeName'] = 'CUSTOM_CHALLENGE'
event['response']['issueTokens'] = False
event['response']['failAuthentication'] = False
elif step == 1 and event['request']['session'][0]['challengeName'] == 'CUSTOM_CHALLENGE':
event['response']['issueTokens'] = event['request']['session'][0]['challengeResult']
event['response']['failAuthentication'] = False
else:
event['response']['issueTokens'] = False
event['response']['failAuthentication'] = True
return event