Как «jti», «client_secret» и «exp» используются для проверки «id_token»? - PullRequest
0 голосов
/ 19 февраля 2019

Я делаю это "учебное пособие"

https://developers.google.com/identity/sign-in/web/backend-auth

, и похоже, что я понял идею, лежащую в основе концепции.

В основном пользователь аутентифицирует себя с помощью Google, получает «сертификат», который подтверждает, что это он, и отправляет его мне, я проверяю этот сертификат с помощью Google (открытые ключи), и я могу создать сеанс для пользователя, которому принадлежит идентификатор в »sub ", поскольку я могу быть уверен, что он был создан google (" iss ") для меня (" aud "), не так давно (" exp ").

Однако, как я вижу, тамразрыв в 1 час, когда токен действителенЯ не совсем понимаю, почему именно 1 час.Я предполагаю, что причина в том, что токен может быть как-то украден ( как именно? ), и тогда злоумышленник может выдать себя за пользователя.Если это причина, почему не 5 минут или 1, поскольку это одноразовый токен, используемый только для входа в систему, сразу после входа в Google?

Я также ... Я вижу "jti"(идентификатор токена) и секрет клиента.Когда я создал свои учетные данные в консоли Google, я также получил client_secret (вместе с client_id).Однако я нигде не пользуюсь, какова была его цель?

И должен ли я использовать jti, чтобы убедиться, что никто другой не хочет использовать id_token?Если это был способ сделать это (я сомневаюсь в этом, это привело бы к постоянно растущему дБ использованных «jti»), почему это нигде не упоминается в этом уроке?

Я прошел через весь путьучебник, и он работает - однако эти вопросы остаются для меня.Итак, подведем итоги:

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

1. Нужно ли что-то делать с"JTI"?Оставляю ли я пробел в безопасности, если не использую его для чего-либо?

2. Почти такой же вопрос для секрета клиента - я оставляю пробел в безопасности, ничего не делая сЭто?( Почему у меня это тогда? )

3. А как насчет "опыта"?Я понимаю, что метод verify () позаботится об этом, но нужно ли мне что-то с ним делать?( Если это имеет значение, почему 1 час, почему так долго, если нет, почему бы не Long.maxValue или что-то еще? )

Я думаю, основываясь на том, что там написано, я понимаю, что происходитно я чувствую, что не понимаю полностью того, что происходит, (все эти поля и значения) я мог бы создать огромный пробел в безопасности - для меня кажется, что без всего этого аутентификация может работать просто отлично,но тогда почему они существуют?

...