我正在尝试使用管理身份Azure密钥库和Azure应用程序配置。
当我部署到我的Azure应用服务时,下面的代码工作-但是当我在本地运行时,SecretClient代码成功,AppConfig代码失败。
对于我的KeyVault,我尝试过使用Vault访问策略和RBAC -并且两者都有效。我将自己和App Service添加为密钥库秘密用户角色。
对于我的AppConfig,我已将自己添加到RBAC作为应用配置数据所有者,并将我的应用服务添加为应用配置数据阅读器。请注意,App Service可以成功地配置和读取这些内容,但是当我在本地运行它时,我得到了各种错误,这取决于我尝试的内容:
调用AddAzureAppConfiguration时,我得到以下异常:
Process "C:Program FilesMicrosoft Visual工作室专业 2022 Common7 IDE lybeojxv.4oe TokenService 扩展Microsoft.Asal.TokenService.exe"失败时出现意外错误:TS003:错误,TS004:无法获取访问令牌。'AADSTS50020:用户帐户'{EmailHidden}'来自身份提供者"live.com"在租户"Microsoft"中不存在并且无法访问应用程序"{GuidHidden}"工作室)在那个租户。该帐户需要作为外部添加租户中的用户优先。登出并用不同的密码再次登录Azure Active Directory用户帐户。
我在Azure AD中的帐户作为外部用户添加到租户my_email_com#EXT#@mycompany.onmicrosoft.com,尽管Azure AD的来宾和成员模型非常令人困惑。
我试着退出和再次登录,但无济于事。我不知道为什么它说我的用户需要作为外部用户添加到租户中,而它似乎已经是这样了。有人有什么建议吗
?我的全部代码如下:
using Azure.Identity;
using Azure.Security.KeyVault.Secrets;
var builder = WebApplication.CreateBuilder();
// Azure KeyVault - succeeds locally and for Azure AppService
var keyVaultUri = "https://{MYVAULT}.vault.azure.net/";
var client = new SecretClient(new Uri(keyVaultUri), new DefaultAzureCredential());
var testSecret = client.GetSecret("secretTest").Value.Value;
// Azure AppConfig
var appConfigUri = "https://{MYCONFIG}.azconfig.io/";
// The following code fails when run locally:
builder.Configuration.AddAzureAppConfiguration(options =>
options.Connect(new Uri(appConfigUri), new DefaultAzureCredential()));
var app = builder.Build();
var testConfig = app.Configuration["testConfig"];
app.MapGet("/", () => $"secret: {testSecret}, appConfig: {testConfig}");
app.Run();
我今天又试了一次,但得到了一个稍微不同的错误:
Azure.Identity。CredentialUnavailableException:"DefaultAzureCredential未能从包含的凭据中检索令牌。看到故障排除指南以获取更多信息。https://aka.ms/azsdk/net/identity/defaultazurecredential/troubleshoot
- EnvironmentCredential认证不可用。环境变量没有完全配置。请参见故障处理指南更多的信息。https://aka.ms/azsdk/net/identity/environmentcredential/troubleshoot
- manageddentitycredential鉴权不可用。多次尝试从托管身份端点获取令牌失败。
- Process "C:Program FilesMicrosoft Visual Studio2022ProfessionalCommon7IDEExtensionslybeojxv.4oeTokenServiceMicrosoft. asal .TokenService.exe"失败时出现意外错误:TS003:错误,TS004:无法获取访问令牌。'AADSTS50020:用户帐户'{EmailHidden}'来自身份提供者"live.com"在租户"Microsoft"中不存在并且无法访问该应用程序'872cd9fa-d31f-45e0-9eab-6e460a02d1f1'(Visual Studio)。该帐户需要首先作为外部用户添加到租户中。用不同的Azure Active Directory登出并再次登录用户帐户。产品编号:c265dbc1-6bfc-495c-b633-d79b609beb00相关ID: 773c8fe6-fc1b-4afb-9e85-82208ded72d2时间戳:2022-06-16 00:48:03Z"。
没有找到存储的凭据。需要在VSCode Azure帐户中验证用户。有关详细信息,请参阅故障排除指南。https://aka.ms/azsdk/net/identity/vscodecredential/troubleshoot比;-请运行'az login'设置帐户PowerShell未安装
所以我打开powershell并运行命令:
az login
它打开了浏览器,我已经登录了。然后当我在本地再次尝试时,它成功了!
非常奇怪,SecretClient不需要powershellaz login但是AppConfig确实…
我也不确定昨天以来发生了什么变化,给了我不同类型的错误。Azure有时是一个善变的野兽。