Несанкционированный доступ к групповому API G Suite с использованием делегирования по всему домену - PullRequest
0 голосов
/ 15 октября 2018


Я пытаюсь подключить G Suite, используя делегирование по всему домену, с учетной записью службы, чтобы получить список групп.
После этого Руководство Google вот мои шаги:

  • Аутентификация учетной записи с использованием JWT с необходимыми областями, которая возвращает токен доступа, который я проверяю здесь
    Информация о токене выглядит нормально:


{
 "issued_to": "MY_CLIENT_ID",
 "audience": "MY_CLIENT_ID",
 "scope": "https://www.googleapis.com/auth/admin.directory.group 
  https://www.googleapis.com/auth/admin.directory.group.readonly",
 "expires_in": 3586,
 "access_type": "offline"
}

  • API групп вызовов:

GET: <a href="https://www.googleapis.com/admin/directory/v1/groups?domain=" rel="nofollow noreferrer">https://www.googleapis.com/admin/directory/v1/groups?domain=</a>***.com&customer=***********<br>
HEADER: Authorization: Bearer + access_token

К сожалению, я получаю ответ:

</p>

<pre><code>{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "insufficientPermissions",
    "message": "Insufficient Permission"
   }
  ],
  "code": 403,
  "message": "Insufficient Permission"
 }
}


Я проверил у айтишников, и они сказали, что все настроено правильно в соответствии с этим google руководством.

Кто-нибудь сумел создать приложение или знает, как решить эту проблему?

Спасибо,

Используемый код (NodeJS):




    const fetch = require('node-fetch');
    const googleapis = require('googleapis')
    const gsuiteAdmin = googleapis.google.admin('directory_v1')
    const privatekey = require("./PRIVATE_KEY.json")

    let jwtClient = new googleapis.google.auth.JWT(
        privatekey.client_email,
        null,
        privatekey.private_key,
        ['https://www.googleapis.com/auth/admin.directory.group.readonly', 'https://www.googleapis.com/auth/admin.directory.group'])

    jwtClient.authorize(function (err, tokens) {
        if (err) {
            console.log(err)
            return
        } else {
            console.log("Successfully connected!")
            getGroups()
        }
    })


    function getGroups() {
        console.log('Token:', jwtClient.credentials.access_token)
        fetch('https://www.googleapis.com/admin/directory/v1/groups?domain=***.com&customer=********',
            {
                method: 'GET',
                headers: { Authorization: "Bearer " + jwtClient.credentials.access_token }
            })
            .then(res => { console.log(res.status); debugger; return res.text() })
            .then(body => { debugger; console.log(body) });
     }

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