Получить членство в организации (или иным образом проверить разрешение на установку приложения) для приложения GitHub - PullRequest
0 голосов
/ 18 июня 2019

Я создаю приложение GitHub, чтобы связать установку приложения со сторонней учетной записью. Очень похоже на то, как это делают службы CI, например конвейеры Azure.

Это задокументировано здесь: https://developer.github.com/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/, но вкратце вот как это работает:

  1. Пользователь устанавливает приложение на GitHub
  2. Приложение устанавливается, и пользователь перенаправляется на сторонний веб-сайт
  3. Пользователь входит на сторонний веб-сайт и перенаправляется обратно на GitHub, чтобы попросить пользователя "авторизовать" это приложение GitHub.
  4. После входа (при необходимости) и авторизации GitHub перенаправляет обратно на сторонний веб-сайт с кодом.
  5. Сторонний веб-сайт (на стороне сервера) может использовать этот код для получения токена доступа для взаимодействия с API в качестве пользователя, который только что авторизовал приложение.

Я могу использовать токен доступа для запроса определенных API. Например:

const installations = await octokit.apps.listInstallationsForAuthenticatedUser();

Что я хотел бы сделать, так это убедиться, что тот, кто только что авторизовал приложение, является пользователем, который мог установить приложение (т. Е. Имеет определенные разрешения в организации, для которой было установлено приложение). , В идеале я бы удостоверился, что они точно были одним и тем же человеком, но я думаю, что это невозможно.

Очевидный способ сделать это - получить членство в организации авторизованного пользователя (вместе с уровнем его прав). т.е. https://developer.github.com/v3/orgs/members/#get-organization-membership

Маленькое «i» (в кружке) на этом методе на этой странице указывает, что оно должно быть доступно для приложения GitHub. Тем не менее, я получаю 403 запрещено

Resource not accessible by integration

Эта ошибка указывает на то, что этот метод недоступен для авторизованного пользователя приложения GitHub, что противоречит документации.

В конечном итоге все, что я действительно хочу сделать, - это обеспечить, чтобы пользователь, нажимающий кнопку авторизации на GitHub, имел разрешение на установку приложения в рассматриваемой организации. Я предполагаю, что это должно быть как-то возможно, если только такие интеграции, как конвейеры Azure, не проверяют это при выполнении одной и той же процедуры установки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...