根据当前经过身份验证的用户创建VssCredentials

时间:2020-09-03 14:01:04

标签: c# azure-devops active-directory adal workitem

我正在使用ADAL + Windows Azure Active Directory从Angular应用程序向我的WebAPI应用程序验证用户身份,

public void ConfigureAuth(IAppBuilder app)
{
    app.UseWindowsAzureActiveDirectoryBearerAuthentication(
        new WindowsAzureActiveDirectoryBearerAuthenticationOptions
        {
            Tenant = ConfigurationManager.AppSettings["ida:Tenant"],
            TokenValidationParameters = new TokenValidationParameters
            {
                ValidAudience = ConfigurationManager.AppSettings["ida:ClientID"]
            },
        });
}

这没有问题。

我有一些代码可用于修改Azure DevOps中的工作项:

 Uri baseVsoUri = new Uri("https://xxxxx.visualstudio.com/DefaultCollection");
 VssCredentials creds = new VssBasicCredential("", azureDevOpsPersonalAccessToken);
 VssConnection conn = new VssConnection(baseVsoUri, creds);

 ...

 await conn.UpdateWorkItemAsync(jsonPatchOperations, 1);

我面临的问题是因为我的个人访问令牌已用于通过Azure DevOps进行身份验证,因此我被列为已更新WorkItem。

是否可以为当前通过WebAPI进行身份验证的用户创建VssCredentials对象?

修改

我尝试了this问题中建议的代码来自行设置ChangedBy属性,但我没有所需的权限:

You don't have bypass rules permission. Please contact your collection administrator to grant this permission for enabling this action.

1 个答案:

答案 0 :(得分:0)

您可以签出此example project来使用ADAL通过交互式提示来验证用户身份并调用rest api。

您还可以签出本文档Authorize access to REST APIs with OAuth 2.0来为用户生成访问令牌,然后使用该令牌调用rest api,

向您的Web应用程序用户授权以进行REST API访问,因此您的应用程序不再继续询问用户名和密码。 Azure DevOps Services使用OAuth 2.0协议为用户授权您的应用并生成访问令牌。从应用程序调用REST API时,请使用此令牌。

这里是您可以检出的example project

有关更多示例,请参见Choosing the right authentication mechanism