«Если я открою новую вкладку (или окно) того же браузера, над которым я работаю (скажем, Firefox)»
Ваша предпосылка не точна.
Если я использую другой профиль того же браузера (FireFox или Chrome и т. Д.), Это будет считаться другим сеансом.
В этом и заключается идея - я могу иметь конфиденциальность, не позволяя серверу или веб-службе просматривать другие мои профили. Как пользователь, я никогда не позволю вашему приложению пересекать эту линию запросов в других моих браузерах или профилях. Более того, FF, Chrome, Safari, IE и т. Д. Не используют одну и ту же схему хранения для своих файлов cookie.
Конечно, вы можете потратить много времени, пытаясь взломать настольное приложение, которое будет обмениваться файлами cookie между браузерами, но это будет бесполезно, потому что
- как вы собираетесь расшифровывать эти куки?
- готовы ли вы написать одно и то же приложение для всех операционных систем
- тогда как вы собираетесь убедить меня в том, что вы можете позволить установить это приложение для установки файлов cookie в моей системе?
Ваше время будет лучше потрачено на принятые в отрасли и распространенные практики.
Однако, если ваше приложение имеет логин / аутентификацию пользователя, я бы хотел, чтобы ваше приложение распознало меня и мою историю независимо от того, на каком ПК, в каком профиле или в какой части мира я нахожусь.
Поэтому ответ на ваш вопрос - аутентификация пользователя.
Вы не должны иметь дело с обходом сервера для распознавания одного и того же идентификатора сеанса на нескольких компьютерах или в «сеансах» браузера. Становится проволочным, волосатым и пышным.
Не изобретай велосипед. Используйте OpenID или OAuth2.
OpenID-потребитель очень прост в реализации. Как бы просто это ни было, литературных примеров реализации openID не так много. Но Google выложил достаточное количество полезной литературы по OAuth.
Google Federated login / OAuth также довольно забавный и простой в реализации. Даже с GWT.
Остается вопрос - почему я хочу усложнить вопрос с аутентификацией пользователя, когда все, что мне нужно, это разделить сеанс между несколькими «сеансами браузера». Причина в безопасности. Даже если это внутреннее заявление компании. Как вы думаете, ваши менеджеры хотели бы знать, что любой в компании может маскировать свои сессии.
К тому времени, когда вы углубитесь в свой проект, вы поймете, что нет смысла пытаться сбежать от маршрута аутентификации пользователя. И нет никакого смысла в создании собственной безопасной аутентификации сеанса.