我正在对Yodlee后端进行MFA身份验证流程,我已经明白只有这样才能知道MFA流程已经完成,就是进行getMFAResponse调用并得到以下响应。
{
"isMessageAvailable":true,
"fieldInfo":{
"questionAndAnswerValues":[],
"numOfMandatoryQuestions":-1
},
"timeOutTime":99300,
"itemId":12689201,
"errorCode":0,
"retry":false
}
那就是errorCode是重要的。空fieldInfo值只是不必要的噪音。
但问题是,在使用DAG帐户在我们的测试环境中获得实际需要的MFA字段的第一次调用持续0.4秒。但是需要知道MFA流程完成所需的额外getMFAResponse需要43秒。
是43秒!!!我可以走到银行排队,在那段时间获得一些个人服务。在生产环境中您可以期待的那种响应时间是正常的还是测试环境存在问题?有了这种响应时间,很难做到可以接受的UI。
当然如果事先知道MFA流量只有1级深度,那么可以跳过额外的刷新。对于那种响应时间,必须做一些肮脏的技巧和假设......
似乎DAG配置xml有以下
<flowControlInfo>
<delayBeforeChallenge>-1</delayBeforeChallenge>
<delayBeforeLoginComplete>20</delayBeforeLoginComplete>
<delayAfterLoginComplete></delayAfterLoginComplete>
<expireToken>false</expireToken>
</flowControlInfo>
因此,预计延迟时间为20秒(delayBeforeLoginComplete),但仍然比发生的情况少了23秒,并且期望getMFAResponse在更短的时间内返回isMessageAvailable = false。
答案 0 :(得分:0)
首先,如果您在error_code中有任何值,则无需再次调用getMFA API。请参阅refresh flow
getMFAResponse是一个阻止调用,因为它等待Yodlee的数据代理从端点遇到MFA,然后将其传递给内部服务器以通过API提供响应。在真实银行场景中,根据终端站点MFA的可用性,可能需要1秒到30秒的时间来提供响应。
由于API已经发出了最终响应(错误代码),因此当您再次调用getMFA时,服务器将找不到任何要返回的消息,因此只会在超时发生时返回。
因此,请遵循记录的流程,您不应该遇到任何问题。