Tohle se dá řešit krátkou životností access tokenu (řádově minuty), nicméně to vyžaduje implementace refresh tokenů, které ukrást jde taky. Nicméně pro ty už lze implementovat blacklist/whitelist, což sice ve výsledku vede na znovuvynalézání session, ale refresh tokeny se na rozdíl od access neposílají při každém requestu. Samozřejmě to výslednou implementaci komplikuje, takže dost záleží na konkrétní implementaci, kterého identity providera používáte atd.
Druhá možnost je token neukládat do local storage, ale do cookie, pokud ho resource server dokáže odtud přečíst. Tím se zbavíte problému s XSS (které je ale velký problém v každém případě), nicméně je pak výměnou za to třeba dát pozor na CSRF, protože takový token je pak posílaný automaticky s každým requestem, nejenom ajaxovým, ale i browserovým.