2014-08-28 5 views
0

Как установить задержку для истечения срока действия, которая допустит допустимую погрешность, например: 1 минута?одноразовый пароль (OTP) expyy leeway

В настоящее время это моя грубая реализация, я должен добавить еще одну проверку на последнюю минуту, если сервер получит сообщение 00:01:00 и клиент отправит 00:00:59;

/**Client**/ 
int minutesNow = timeInSeconds()/60; 
String mySignature = genAlgo(minutesNow, firstPassword); 
sendToServer(mySignature); 

/**Server**/ 
int minutesNow = timeInSeconds()/60; 
String userPassword = getUserPassword(); 
boolean result = verifySig(mySignature, userPassword, minutesNow); 
if(!result) 
{ 
    result = verifySig(mySignature, userPassword, --minutesNow); 
} 

этот вопрос является разработка Password Reset Link Expiry ... Мне нужно больше деталей в то время +/-

ответ

1

Вам нужно просто сделать несколько проверок в стороне сервера: для текущей минуты, минуту назад и минуту в будущем.

Это будет выглядеть примерно так:

/**Server**/ 
int validationWindow = 1; // in minutes 
int minutesNow = timeInSeconds()/60; 
String userPassword = getUserPassword(); 

int timeToCheck = minutesNow - validationWindow; 
boolean result = verifySig(mySignature, userPassword, timeToCheck); 
while (!result && timeToCheck <= minutesNow + validationWinwow) { 
    result = verifySig(mySignature, userPassword, ++timeToCheck); 
} 
Смежные вопросы