【发布时间】:2020-04-28 16:28:43
【问题描述】:
我正在编写一个 Blazor Web 应用程序来从 Azure DevOps 中提取管道数据。到目前为止,我一直使用 PAT 进行访问,但我希望用户能够使用他们的 Azure AD 帐户而不是 PAT 进行访问。我已经通过 Microsoft.AspNetCore.Authentication.AzureAD.UI 库添加了 Azure AD 身份验证,因此您必须使用您的 Azure AD 帐户登录才能访问该站点,这很有效。
现在我已经让他们登录了,我想使用该登录名来调用用于调用 REST API 的 VssConnection。目前我正在使用这样的个人访问令牌:
VssCredentials vssCredentials = new VssBasicCredential(string.Empty, PAT);
VssConnection vssConnection = new VssConnection(new Uri($"https://dev.azure.com/{Org}"), vssCredentials);
如何更改它以利用他们正在使用的 Azure AD 登录名,这样他们就不需要提供 PAT?
更新
我想我真的很接近这一点。我在 Github 上找到了一个名为 Microsoft.Identity.Web 的库,它似乎可以满足我的需求。我想我只是在努力理解如何使用正确的范围进行调用。所以在我的创业公司中,我现在有:
services.AddMicrosoftIdentityPlatformAuthentication(Configuration)
.AddMsal(Configuration, scopes)
.AddInMemoryTokenCaches();
其中“作用域”是一个字符串数组。后来我有:
string token = await _tokenAcquisition.GetAccessTokenOnBehalfOfUserAsync(scopes);
其中 _tokenAcquisition 是来自 Microsoft.Identity.Web 的 ITokenAcquisition。同样,范围是一个字符串数组。我不确定我应该为这两个调用使用什么范围。在我在 Azure 门户中注册的应用程序中,我有
那么我在 Startup 中的调用使用什么范围,以及稍后在调用中使用什么来获取令牌?我已经尝试了很多选项,我什至不能全部提及。有些在启动时调用失败。有些在令牌获取中失败。有些人一直通过,然后告诉我我无法访问 dev.azure.com。任何帮助将不胜感激。
【问题讨论】:
标签: c# .net-core azure-devops azure-active-directory blazor-server-side