0

我正在使用 DefaultCredential 连接以从 azure keyvault 构建配置。

      var secretClient = new SecretClient(new Uri($"https://{keyvaultName}.vault.azure.net/"),
           new DefaultAzureCredential(true) 
           );

      IConfigurationRoot configuration = null;

      configuration = new ConfigurationBuilder().AddJsonFile("appsettings.json")
             .AddEnvironmentVariables()
             .AddAzureKeyVault(secretClient, new PrefixKeyVaultSecretManager(environment))
             .AddUserSecrets<Program>().Build();

这在早期工作,但现在交互式浏览器身份验证失败。选择帐户后,它会重定向回 l​​ocalhost 并抛出错误(“localhost sent an invalid response”)我正在使用 "Azure.Identity" Version="1.4.1" 。我还尝试了最新的 beta 包(1.5.0-beta.4)。还有 Azure.Security.KeyVault.Secrets" Version="4.2.0"

4

2 回答 2

0

在 Azure 门户中检查应用程序的重定向 URI。您可以在应用程序页面的身份验证下找到它。

将重定向 URI 设置为https://login.microsoftonline.com/common/oauth2/nativeclient

有关重定向 URI 的更多信息:https ://docs.microsoft.com/en-us/azure/active-directory/develop/reply-url

于 2021-10-09T15:35:12.830 回答
0

我在使用交互式 AzureAD 身份验证的 Windows 应用程序中遇到了类似的错误。结果是 localhost 域出现在我的 Edge(和 Chrome)HSTS 策略缓存中。Azure AD 登录流程试图重定向到 http://localhost:61425/?code=.... 但是因为我一直在使用 HSTS 中间件的机器上开发一个不相关的 ASP.NET 应用程序(即称为 app. UseHsts) 我的浏览器记住了该策略并强制 AzureAD 登录重定向到 https://localhost:61425/?code=.... 从 http 到 https 的切换破坏了我的 Windows 应用程序中的重定向处理。

解决方案是从浏览器的域安全策略列表中删除localhost域。

在 edge 中,在地址栏中输入:edge://net-internals/#hsts

在 Chrome 中:chrome://net-internals/#hsts

从 HSTS 缓存中删除 localhost

从 Visual Studio 调试中查看localhost 的 ERR_SSL_PROTOCOL_ERROR

于 2022-03-02T15:21:02.587 回答