Хранение в HashMap
- это решение, которое не масштабируется, поскольку внутренняя память не распределяется между узлами сервера.
Вам придется хранить его в каком-то постоянном хранилище
- база данных SQL
- база данных NoSQL
- база данных значений ключей
Обратите внимание, что вам понадобится не только определить пользователя, для которого он был создан, но и клиента, поскольку клиентам не нужно проходить аутентификацию для получения кода. Также знайте, что вам нужно будет иметь возможность определять, какие области охватываются данным кодом, и обнаруживать двойное использование кода, а в случае двойного использования - отзывать связанные маркеры доступа.
С другой стороны, вам нужно снова легко забыть коды. Они используются в течение короткого периода времени, и бесполезно держать их рядом с ттл.
У вас будут аналогичные требования для хранения токенов доступа, обновлений и идентификаторов, которые вы создаете, поэтому имеет смысл создать что-то, что также можно использовать для них.