Реализован поток авторизации OAuth . В этом потоке клиент (он же браузер) никогда не получает токен доступа. Только ваш веб-сервер получает его. И, таким образом, клиент не может совершать звонки на сервер ресурсов (github). Ваш веб-сервер выполняет вызовы от имени клиента.
Вы говорите:
злонамеренный пользователь может перехватить токен доступа, когда провайдер oAuth перенаправляет на обратный вызов в любом случае
Однако, если вы правильно реализуете поток, это не так. Это связано с тем, что после аутентификации на сервере ресурсов он только дает браузеру аутентификацию код . Этот код является всего лишь временным билетом, который можно обменять на токен доступа. Однако, чтобы обменять код на токен доступа, вы должны знать секрет клиента. Только ваш веб-сервер знает секрет. Таким образом, ваш браузер отправляет код на ваш сервер, а ваш сервер вызывает сервер ресурсов (github) с кодом + secret для получения токена.
Второй поток, который вы описываете, это OAuth Implicit Flow .
Этот поток очень похож на то, что вы описали: после того как пользователь проходит аутентификацию на сервере ресурсов, браузер завершает работу с токеном доступа и просто вызывает сервер ресурсов напрямую.
Оба потока очень распространены. Поток Implicit немного менее защищен, потому что у плохих парней больше возможностей получить доступ к токену в памяти браузера (или в локальном хранилище, или в хранилище ie). Процесс авторизации немного более безопасен, поскольку токен остается на вашем сервере, и вам не нужно зависеть от пользователей, чтобы обеспечить его безопасность.