2015-01-02 4 views
0

Я делаю проверку подлинности MFA в Yendlee, и я понял, что только способ узнать, что поток MFA закончен, это сделать вызов getMFAResponse и получить следующий ответ.Yodlee getMFARОтвет ответа времени?

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

И вот что такое errorCode. Пустые значения поляInfo - это просто лишний шум.

Но проблема в том, что при первом вызове, который получает реальные необходимые поля MFA в нашей тестовой среде с использованием учетной записи DAG, составляет 0,4 секунды. Но тогда дополнительный getMFAResponse должен был знать, что поток MFA завершен, занимает 43 секунды.

Да 43 секунды !!! В то время я мог ходить в банк и в очереди, чтобы получить личную услугу. Является ли такое время ответа нормальным, что вы можете ожидать в производственной среде, или это проблема с тестовой средой? С таким временем отклика довольно сложно сделать интерфейс, который будет как-то приемлемым.

Конечно, если бы знали заранее, что поток MFA находится всего на 1 уровень, то можно просто пропустить дополнительное обновление. Propably с таким временем отклика должны сделать некоторые грязные трюки и предположения ...

Кажется, что DAG конфигурации XML имеет следующие

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

так от того, что будет выглядеть через 20 секунд, как ожидается задержка (delayBeforeLoginComplete) но это все равно на 23 секунды меньше того, что происходит, и ожидал бы, что getMFAResponse вернется с isMessageAvailable = false за меньшее короткое время.

ответ

0

Прежде всего, когда у вас есть значение в error_code, вам не нужно снова обращаться к API getMFA. Обратитесь к

getMFAResponse - это блокиратор, потому что он ждет, когда агент данных Yodlee встретит MFA с конечной точки, а затем передаст его на внутренний сервер, чтобы обеспечить ответ через API. В реальном банковском сценарии может потребоваться от 1 секунды до 30 секунд времени, чтобы обеспечить ответ в зависимости от доступности MFA на конечном сайте.

Поскольку API уже отправил окончательный ответ (код ошибки), поэтому, когда вы снова вызываете getMFA, сервер не найдет никакого сообщения для возврата и, следовательно, вернется только тогда, когда произойдет таймаут.

Следовательно, следуйте документированному потоку, и вы не должны столкнуться с какой-либо проблемой.

+0

Из потока обновления, который вы связали, говорится, что вы должны позвонить getMFAResponse не менее двух раз, это именно то, что я делаю. 1) getMFAResponse => обязательные поля, код ошибки 2) putMFAResponse => {"primitiveObj": true} 3) getMFAResponse => код ошибки, а вызов занимает 43 секунды –