在生产环境中使用交互式浏览器凭据向 Azure 密钥保管库进行身份验证不起作用



我想从我的ASP.NET web应用程序读取Azure密钥库中的机密。为了做到这一点,我不想验证应用程序(服务主体(,而是要验证单个用户(用户主体(。从所有可能的凭据类型中,我得出结论,实现这一点的最佳方法是交互式浏览器凭据:

DefaultAzureCredentialManagedIdentity凭据
EnvironmentCredential
ClientSecretCredentialertificateCredential
UserPasswordCredential
DeviceCodeCredential
InteractiveBrowserCredential

这是我的代码:

var client = new SecretClient(new Uri(keyVaultUrl), new InteractiveBrowserCredential();
KeyVaultSecret secret = client.GetSecret(secretName);
string password = secret.Value;

这在localhost上运行得很好——系统会提示我输入Azure AD用户和密码,并且我可以访问vault。但是,我注意到这不是我的默认浏览器,而是IIS Express工作进程。

1

当在生产上运行相同的代码时,我会得到以下错误:

Azure.Identity.AuthenticationFailedException:InteractiveBrowserCredential身份验证失败:显示模式对话框或窗体UserInteractive模式不是有效的操作指定ServiceNotification或DefaultDesktopOnly样式以显示来自服务应用程序的通知--->System.InvalidOperationException

Afaik应该打开浏览器,而不是模式对话框。有人能帮我了解一下这里发生了什么吗?

根据错误,您的托管环境不支持UserInteractive模型,无法自动打开模式对话框或表单。但是当我们使用InteractiveBrowserCredential进行身份验证时,运行环境应该能够自动打开模式对话框或表单,然后我们就可以进行身份验证了。有关更多详细信息,请参阅此处。

相关内容

最新更新