Мы стремимся использовать AWS Cognito для аутентификации с архитектурой, которая выглядит следующим образом: client (browser) -> our server -> AWS Cognito
При различных конфигурациях initiateAuth
кажется не отличается от AdminInitiateAuth
, и поэтому я хотел бычтобы понять, когда под этими конфигурациями имеет значение, выбирается ли одно из другого.
Кажется, что когда я создаю приложение с client secret
и использую initiateAuth
, кажется, что это почти та же интеграциявоспринимается как adminInitiateAuth
, использующий поток аутентификации ADMIN_NO_SRP_AUTH
.Последний даже не требует учетных данных AWS, как указано в документации AWS.Моя интеграция с Cognito выглядит следующим образом:
initiateAuth :
const payload = {
AuthFlow: "USER_PASSWORD_AUTH",
ClientId: cognitoClientId,
AuthParameters: {
USERNAME: username,
PASSWORD: password,
SECRET_HASH: generateSignature(username)
}
}
const response = await cognitoClient.initiateAuth(payload).promise();
adminInitiateAuth :
const payload = {
UserPoolId: userPoolId,
AuthFlow: "ADMIN_NO_SRP_AUTH",
ClientId: cognitoClientId,
AuthParameters: {
USERNAME: username,
PASSWORD: password,
SECRET_HASH: generateSignature(username)
}
}
const response = await cognitoClient.adminInitiateAuth(payload).promise();
Вы можетевижу разницу в различных значениях AuthFlow
, вызывающих разные методы и ADMIN_NO_SRP_AUTH
, требующих параметр UserPoolId
, который мне кажется поверхностным.
Мы также генерируем подпись на основе секрета клиента, который является чем-точто мы будем обращаться безопасно.