问题描述
我正在使用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"]
},});
}
这没有问题。
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.
解决方法
您可以签出此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。