Я работаю с Java-приложением корпоративного уровня, и мне нужно встроить аутентификацию пользователя на основе токенов. Внешний интерфейс использует PHP и взаимодействует с внутренним интерфейсом Java через SOAP.
Я думал об использовании HashBiMap от Guava, чтобы помочь мне с этой проблемой. Это было бы полезно для меня, потому что я мог генерировать токены UUID в качестве ключей и сохранять объекты User в качестве значений в статическом HashBiMap. Когда пользователь впервые успешно войдет в систему, он будет добавлен в HashBiMap, и в ответ на вход в систему будет возвращен сгенерированный токен UUID. Последующие запросы SOAP для того же пользователя будут выполняться только с использованием токена.
Проблема, с которой я сейчас сталкиваюсь, заключается в том, что мне нужна какая-то логика выселения, которая позволила бы удалить эти токены после 30 минут бездействия. В моем исследовании выяснилось, что HashBiMap изначально не поддерживает выселение, как MapMaker в Guava.
У кого-нибудь есть какие-либо рекомендации о том, как я могу использовать HashBiMap и поддерживать выселение за неактивность? Если этот подход не идеален, я открыт для других стратегий.
Обновление:
Я думаю, что мне нужно использовать HashBiMap, потому что я хочу иметь возможность искать объект User на карте и получать его уже существующий токен, если пользователь все еще находится на карте. Например, если пользователь закрывает свой браузер в течение 30-минутного окна и через несколько минут возвращается и снова входит в систему, мне нужно проверить, существует ли пользователь на карте, чтобы я мог вернуть его существующий токен (так как он технически все еще в силе).