Фронт приложения - React. Бэк - PHP, а точнее Yii2.
Приложение работает само для себя, т.е. реализуемое на бэке API только этому приложению и нужно. Подключения сторонних сервисов и приложений не предполагается.
Как при такой схеме луше авторизовывать запросы от React?
Стоит ли поднимать OAuth сервер? Я правильно понимаю, что токены React будет хранить в открытых для всех хранилищах (localStorage или куки, доступные скриптам)?
Или достаточно будет использовать серверные сессии (с кукой httpOnly)? Как при этом защищаться CSRF? Записывать токен в заголовок, чтобы React его увидел?
Я бы не парился.
Из коробки при авторизации Yii2 Создает токен, который потом отправляется во все запросы.
Так и делай, при отправке запроса на авторизацию сохраняй токен в куках или локалсторже и потом юзай его в запросах. Как токен протухнет, так отправляй юзера обратно на страницу авторизации.
axios к примеру вполне может сохранять данные в заголовки
axios.defaults.headers.common['Authorization'] = 'Token ' + token
и если надо
axios.defaults.headers.common['X-CSRFToken'] = csrf