0

我有一个用户池,希望在其中使用自定义挑战和 TOTP MFA 进行身份验证。我在 PASSWORD_VERIFIER 质询完成后检查用户是否在 DefineAuthChallenge 中设置了 TOTP。如果未设置,我将 next challengeName 设置为带有会话的“MFA_SETUP”,而不是发出令牌。但是当我尝试点击aws cognito-idp associate-software-token --session <<session from password-verifier challenge>>它时,会出现以下错误:
An error occurred (NotAuthorizedException) when calling the AssociateSoftwareToken operation: Invalid session for the user.
即使该会话是有效的。

当我使用 access_token 尝试相同的事情时,它不会给我任何问题。此外,当用户池的 MFA 模式为 ON(强制)时,来自 PASSWORD_VERIFIER 质询的会话可用于通过 associate-software-token 设置 MFA。

观察到 MFA ON 与 OPTIONAL 设置的差异:对于 ON,在 PASSWORD_VERIFIER 忽略 CUSTOM_AUTH 触发器后自动发出以下质询,并获得以下响应:

{
    "ChallengeName": "MFA_SETUP",
    "Session": "<<session>>",
    "ChallengeParameters": {
        "MFAS_CAN_SETUP": "[\"SOFTWARE_TOKEN_MFA\"]"
    }
}

对于 OPTIONAL,在 PASSWORD_VERIFIER 将下一个挑战设置为 MFA_SETUP 之后发出我的自定义挑战的 DefineAuthChallenge 触发器,并获得以下响应:

{
    "ChallengeName": "MFA_SETUP",
    "ChallengeParameters": {},
    "Session": "<<session>>",
}

我不确定我在自定义流程中是否做错了什么。有什么方法可以强制用户通过此类自定义挑战在首次登录时设置 totp?

4

0 回答 0