【问题标题】:Yodlee getMFAResponse response times?Yodlee getMFAResponse 响应时间?
【发布时间】:2015-01-02 09:50:11
【问题描述】:

我正在对 Yodlee 后端进行 MFA 身份验证流程,并且我知道知道 MFA 流程已完成的唯一方法是进行 getMFAResponse 调用并获得以下响应。

{
  "isMessageAvailable":true,
  "fieldInfo":{
     "questionAndAnswerValues":[],
     "numOfMandatoryQuestions":-1
  },
  "timeOutTime":99300,
  "itemId":12689201,
  "errorCode":0,
  "retry":false
}

错误代码才是最重要的。空的 fieldInfo 值只是不必要的噪音。

但问题是,在我们的测试环境中使用 DAG 帐户获取实际需要的 MFA 字段的第一次调用持续 0.4 秒。但是额外的 getMFAResponse 需要知道 MFA 流程完成需要 43 秒。

是的 43 秒!!!那时我可以步行到银行排队以获得一些个人服务。这种响应时间在生产环境中是正常的,还是测试环境有问题?在这种响应时间下,很难做出可以接受的 UI。

当然,如果事先知道 MFA 流只有 1 级深度,则可以跳过额外的刷新。可能有这种响应时间必须做一些肮脏的技巧和假设......

似乎 DAG config xml 有以下内容

<flowControlInfo>
  <delayBeforeChallenge>-1</delayBeforeChallenge>
  <delayBeforeLoginComplete>20</delayBeforeLoginComplete>
  <delayAfterLoginComplete></delayAfterLoginComplete>
  <expireToken>false</expireToken>
</flowControlInfo>

因此,看起来预计会延迟 20 秒 (delayBeforeLoginComplete),但这仍然比发生的情况少 23 秒,并且预计 getMFAResponse 会在更短的时间内返回 isMessageAvailable = false。

【问题讨论】:

    标签: yodlee


    【解决方案1】:

    首先,当您在 error_code 中有任何值时,您无需再次调用 getMFA API。参考refresh flow

    getMFAResponse 是一个阻塞调用,因为它等待 Yodlee 的数据代理遇到来自终端站点的 MFA,然后将其传递给内部服务器以通过 API 提供响应。在真实银行场景中,可能需要 1 秒到 30 秒的时间来提供响应,具体取决于终端站点 MFA 的可用性。

    由于 API 已经发出最终响应(错误代码),因此当您再次调用 getMFA 时,服务器将找不到任何要返回的消息,因此只会在超时发生时返回。

    因此,请遵循记录的流程,您应该不会遇到任何问题。

    【讨论】:

    • 从您链接的刷新流程中说您必须调用 getMFAResponse 至少两次,这正是我正在做的。 1) getMFAResponse => 必填字段,无错误代码 2) putMFAResponse => { "primitiveObj": true } 3) getMFAResponse => 错误代码,调用耗时 43 秒
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多