Аутентификация кукловода против разработчиков Azure

#azure #authentication #azure-devops #oauth-2.0 #puppeteer

Вопрос:

У меня есть задача автоматизировать процесс сохранения рабочих элементов Azure DevOps в виде PDF-документов. После некоторых исследований Кукловод кажется лучшим вариантом. Проверил несколько руководств, написал немного кода:

 const puppeteer = require ('puppeteer')

describe('My first puppeteer test', () => {
    it('Should launch the browser', async function()
    {
        // create basic auth info here
        const user = 'someUser'
        const pwd = 'hisPassword'
        const url = 'https://dev.azure.com/projectName/_workitems/edit/12345/'

        const headers = new Map();
        headers.set(
        'Authorization',
        `Bearer SomeTokenValueHere`
        );

        const browser = await puppeteer.launch({headless: true})
        const page = await browser.newPage()        
        
        await page.setExtraHTTPHeaders(headers);
        await page.goto(url)            
        
        //await page.authenticate({username:user, password:pwd});

        await page.waitForTimeout(15000)
        await page.pdf({path: 'page.pdf', format: 'A3'})

        await browser.close()
    })
})
 

Хотя документ, который я вижу, всегда находится на странице входа. Как вы также можете видеть, я попробовал page.authenticate() с пользователем службы, у которого не включен MFA, — не работает.
Как я знаю, вы можете проходить аутентификацию только с помощью инструментов автоматизации против Azure DevOps с использованием oauth2, но я не нашел никакой документации об использовании oauth2 на официальном сайте. Подход, который я использую с заголовками, был найден где-то во время поиска в Google…