По поводу сессий. Старайтесь избегать их. Храните в куках и/или локал сторе (лучше через и). Почему не сессии? Взгляд со стороны PHP
Сессия по дефолту файловая, при некачественном коде или большом трафике, можно упереться в inode диска (частая проблема WordPress) и всё пойдет "по кочкам", дополнительно по дефолту маштабировать тяжело, когда несколько серверов. Если всё же вы любите сложности и хочется сессий, то нужно сменить конфиг на хранение в Redis - с ним можно не бояться за inode и можно маштабировать.
Почему хранить лучше и в куках и в локале - не поверите но существует параноики, которые отключают куки, плюс в соответствии с пунктом 30 GDPR вы должны оповестить пользователя о хранении кук и дать возможность отказаться от их хранения и на выручку приходит локалстор.
Дальше уже всё зависит от вашей архитектуры.
Bearer токен удобнее, в случае sso меньше гемора, да и прокидывать между микросервисами тоже удобнее.
Это только моё мнение, основанное на опыте бекендера. Но в каждом проекте всё индивидуально и нужно продумывать архитектуру вначале, а не в середине работы 🙈