Настройка:
На стороне клиента мы используем библиотеку Auth от Amplify. При входе в систему мы устанавливаем некоторые clientMetadata просто:
async function login(username, password, metadataValue) {
try {
Auth.configure({clientMetadata: { metadataKey: metadataValue }})
await Auth.signIn(username, password)
} catch(e){
console.log(e)
}
}
Это работает, как ожидалось, и мы получаем clientMetadata в нашем PreTokenGeneration Lambda в event.request.clientMetadata
. Мы используем эти данные для динамической генерации утверждений нашего токена, и все в порядке (мы установили метаданные в Auth.configure()
, поэтому Amplify отправит их с последующими запросами на обновление токена).
Проблема:
Через 1 час (истечение срока действия токена) срабатывает обновление токена. Теперь в запросе, который Amplify делает для обновления наших токенов, мы видим, что clientMetadata действительно отправляется как часть запроса на обновление токена (на самом деле, похоже, что это было , недавно решенное командой Amplify).
Таким образом, поскольку метаданные отправляются, как ожидалось, это не похоже на проблему с Amplify.
Однако clientMetadata не отображается как часть запроса в нашем PreTokenGeneration Lambda, который запускается обновлением, и поэтому наш токен не содержит ожидаемых утверждений.
Любая помощь с этим будет чрезвычайно признательна.
Примечание.
Это сообщение о стеке связано, однако, похоже, это было результатом ошибки Amplify, которая с тех пор устранена.