А в чем именно проблема? Добавляете поле с вводом ключа, при подтверждении ввода делаете fetch на сервер для проверки валидности ключа, если все норм - сохраняете ключ в storage. По необходимости, при каждом открытии попапа/другой страницы - проверяем валидность токена из storage.
Минусы - ключ может быть будет храниться в открытом виде на компьютере пользователя