azure-devops-node-api: аутентификация с использованием имени пользователя и пароля - PullRequest
2 голосов
/ 23 мая 2019

Я новичок в node.js 'azure-devops-node-api'. Я хочу соединиться со своей коллекцией, метод getPersonalAccessTokenHandler (token) работает нормально, но я хочу аутентифицироваться с помощью имени пользователя и пароля. getNtlmHandler (имя пользователя, пароль) выполняет аутентификацию, но я не могу получить репозитории с этим подходом. Пожалуйста, предложите мне лучший способ аутентификации, пожалуйста

const azdev = require("azure-devops-node-api");

const collectionURL = 'https://dev.azure.com/username';
let authHandler = azdev.getNtlmHandler('username', 'password');
let connection = new azdev.WebApi(collectionURL, authHandler);

connection.connect().then(connData => {
    console.log(`Connection established successfully!!!. This is 
    ${connData.authenticatedUser.providerDisplayName}. Welcome!!!`);

    connection.getGitApi().then(vstsGit => {
        vstsGit.getRepositories('projectName').then(repos => {

            // repos is null or undefined
            console.log('There are', repos.length, 'repositories in this 
            project');
            // But When I authenticates with Token, It works fine.

        });

    });
});

1 Ответ

1 голос
/ 24 мая 2019

При просмотре исходного кода azure-devops-node-api вы можете видеть, что есть 4 различных способа аутентификации.

export function getBasicHandler(username: string, password: string): VsoBaseInterfaces.IRequestHandler {
    return new basicm.BasicCredentialHandler(username, password);
}

export function getNtlmHandler(username: string, password: string, workstation?: string, domain?: string): VsoBaseInterfaces.IRequestHandler {
    return new ntlmm.NtlmCredentialHandler(username, password, workstation, domain);
}

export function getBearerHandler(token: string): VsoBaseInterfaces.IRequestHandler {
    return new bearm.BearerCredentialHandler(token);
}

export function getPersonalAccessTokenHandler(token: string): VsoBaseInterfaces.IRequestHandler {
    return new patm.PersonalAccessTokenCredentialHandler(token);
}

Поскольку вы передаете только имя пользователя и пароль, вы также можете использовать getBasicHandler()для аутентификации.


Кроме этого, убедитесь, что ваши параметры безопасности настроены правильно.Например, Alternate authentication credentials должен быть включен на в политиках безопасности вашей организации, чтобы использовать базовую аутентификацию для REST Api.

Ссылка безопасности Azure DevOps: https://docs.microsoft.com/en-us/azure/devops/organizations/accounts/change-application-access-policies?view=azure-devops

...