Я считаю, что это сильно зависит от того, как вы используете ID пользователя.
Например: если вам нужен идентификатор пользователя глубоко внутри вашего уровня бизнес-сервисов, а уровень бизнес-сервера реализован, вам ничего не нужно знать о веб-приложении.вещи (Session, ...) до сих пор, тогда было бы разумно не использовать HttpSession, чтобы он оставался «свободным от веб-материалов».
Кстати: третий подход, который вы можете принять во внимание,это использовать сессионный компонент области видимости.