如何开始使用已创建的服务主体来更新 devops 中的 WorkItem

How to start using Service principal already created to update WorkItem in devops

我期待在我公司的主要 Devops 中设置一个服务主体,以用作令牌访问以在 C# 中的应用程序中使用 Devops Api 更新或创建工作项...

我们已经在使用 api 但使用个人令牌,因为我们知道这不是最佳做法,因为万一有人下班,他们的个人访问令牌将过期...

所以,为了做到这一点,我遵循了这个指南:https://cann0nf0dder.wordpress.com/2020/09/27/programmatically-connecting-to-azure-devops-with-a-service-principal-subscription/

然后我将服务主体添加到拥有我们所有用户(访问 devops 的人)的 azure 活动目录组中

        public void UpdateAzureDevopsPullReviewed(List<int> user_story_numbers, string assigned_to)
    {
        #region Azure DevOps data connection

        Uri orgUrl = new Uri("https://dev.azure.com/nfpnso/");            
        String tokenWrite = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
        //create a connection
        VssConnection connection = new VssConnection(orgUrl, new VssBasicCredential(string.Empty, tokenWrite));

        #endregion
        PullReviewedWorkItem(connection, user_story_numbers, assigned_to).Wait();
    }

我在 Azure 中所做的是创建一个新的 APP 注册,在 Active Directory 中,我得到了应用程序(客户端)ID、目录(租户)ID、对象 ID,然后我创建了一个新的秘密,这意味着 ID并且 Value ... 探测所有这些字符串并且未执行连接,它告诉我我无权访问 devops 。

我认为您不能使用服务主体来调用 Azure DevOps API。

请参阅Choosing the right authentication mechanism

注意注意提示:

The Azure DevOps API doesn't support non-interactive service access via service principals.

唯一的非交互式客户端类型是 Device Profile Authentication mechanism