Я полный noob, когда дело доходит до безопасности, стратегий аутентификации. Так что я читал эту статью о «Проверка подлинности на основе маркеров»: https://scotch.io/tutorials/the-ins-and-outs-of-token-based-authenticationJWT & OAuth2 - хранит ли сервер токен? & Как они безопасны/безопасны для хакеров?
У меня 2 вопроса:
я не понимаю, почему посредник (или хакер) не смог бы увидеть токен, отправленный клиентом, и использовать его для выдачи себя за этого клиента/человека для извлечения ресурсов? Что делает аутентификацию JSON Web Tokens/OAuth2 более безопасной в этом смысле? Если мы каждый раз используем токен, используемый только для использования, я бы понял, что даже если хакер может прочитать токен, он не сможет использовать его для другого запроса. Но поскольку токен остается прежним до истечения срока его действия, как это безопасная стратегия аутентификации?
Как сервер знает, что маркер, отправленный клиентом, действителен, то есть что-то, что сервер обменивал с клиентом во время входа в систему. Хранит ли сервер токен, сгенерированный в базе данных или где-то, и продолжает обновлять «последнюю доступную временную метку» или что-то еще и продолжает удалять токены, где last_accessed_time> 1 час назад, чтобы продолжать истекать через 1 час бездействия?
Удивительные объяснения. – user1102532
Я смог реализовать это, и он хорошо работает, но есть еще одна вещь, о которой я не уверен. Мы создаем токен и говорим, что мы установили его в течение 15 минут. Он истекает через 15 минут независимо от того, что нужно, и пользователь должен снова аутентифицироваться. Однако я хочу обновить этот токен до тех пор, пока пользователь активен и истекает его, только когда он/она становится неактивным в течение 15 минут. Как мы можем это сделать, поскольку токен хранится на стороне клиента, и даже если мы изменим временную метку истечения срока действия, расшифровав токен base64 и переведя его обратно, работать не будет. – user1102532
Вы не можете изменить время истечения срока действия JWT, потому что оно сломает подпись, и сервер отклонит токен. Вы должны обновить токен, когда он близок к истечению срока действия. Например, при ответе на запрос сервер выдаст новый JWT и настроит настраиваемый заголовок в ответ. В качестве альтернативы выполните конкретный запрос AJAX от клиента, чтобы получить новый токен. – pedrofb