0
votes

I am doing MFA authentication flow to Yodlee backend and I have understood that only way to know that MFA flow is finished is to do getMFAResponse call and get following response.

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

And there that errorCode is what counts. Empty fieldInfo values are just unnecessary noice.

But problem is that when first call that get actual needed MFA fields in our test environment using DAG account lasts 0,4 seconds. But then extra getMFAResponse needed to know that MFA flow is finished takes 43 seconds.

Yes 43 seconds!!! I could walk to bank and queue to get some personal service in that time. Is that kind of response times normal what you can expect in production environment or is it problem with test environment? With that kind of response times it is pretty hard to do UI that would be somehow acceptable.

Of course if would know in advance that MFA flow is only 1 level deep then could just skip the extra refresh. Propably with that kind of response times have to do some dirty tricks and assumptions...

Seems that DAG config xml has following

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

So from that it would look 20 seconds delay is expected (delayBeforeLoginComplete) but that is still 23 seconds less than what happens, and would expect getMFAResponse to return with isMessageAvailable = false in little bit shorter time.

1

1 Answers

0
votes

First of all when you have any value in error_code then you need not call the getMFA API again. Refer the refresh flow

getMFAResponse is a blocker call because it waits for Yodlee's data agent to encounter the MFA from the endsite and then pass it on to the internal server to provide a response through the API. In real bank scenario it can take 1 second to 30 seconds of time to provide a response depending on the availability of the MFA at end site.

Since the API has already sent out the final response(an error code) hence when you call the getMFA again the server will not find any message to return and hence will only return back when the timeout happens.

Hence please follow the documented flow and you should not face any problem.