Я не знаком с реализацией Passport, но общие OAuth2 принципы
везде одинаковы.
Вы
аутентифицируетесь (то есть система вас узнаёт в лицо (в логин-пароль): о, да это же
NNovosad !!). В ответ вам присылают access_token - на вот тебе штуку для "действия". Вы этим токеном должны заявить о намерении. То есть начинается вторая фаза - авторизации. Обычно это означает, что вы идёте на некий эндпойнт, который уже сверившись с валидностью access_token-а может подтвердить, можно вам такое действие Х выполнять или нет.
Беглый осмотр доков подсказывает, что вам необходимо реализовать провайдера, который по скоупу (scope) будет выдавать вам Bearer-токен или нет.
Пример из жизни: заходит человек на проходную завода. Его по паспорту и спискам сверяют и выдают пропуск - это аутентификация. А теперь этот человек на "территории завода" и хочет люлей бухгалтерии выписать за медленную работу. Можно ему так делать или нет? Вот если у него авторизация (scope - "управление бухгалтерией") не ниже руководителя правления завода - то конечно же может. В жизни авторизация происходит по визуальным признакам, а в цифровом мире - вот так, через токены, разрешающие действие "разнести в пух и прах"!
В гугл-продуктах, например, не требуется создавать своих провайдеров, а можно для указанных учетных записей задать роли, если такая учетка будет запрашивать действие (ну например, СкачатьГуглДок()), то в соответствии с настройками ролей, Bearer будет выдан или нет). Scope при этом указывается в виде url- для гугл-док-апи.
Надеюсь, работа OAuth2 стала яснее для Вас.