问题描述
我正在编写一些软件来与多个 Microsoft Azure 资源进行交互:一个 Active Directory B2C 实例、一个带有一些加密字段的 T-sql Server,以及一个包含用于 T-sql 数据库加密的密钥的 Azure 密钥值。每个资源在其 API 中使用略有不同的身份验证提供程序,因此我收到三个浏览器提示以完成程序任务:每个身份验证提供程序一次。我对所有这些请求使用相同的帐户,所以这是毫无意义和糟糕的用户体验。我想知道要避免跨不同资源出现这种冗余的三重登录提示吗?
我认为这是可能的,因为 Azure Data Studio(必须分别使用 Azure Key Vault 和 sql 数据库的身份验证来处理加密数据)等工具可以通过单个缓存登录来实现。我不知道如何在我的应用程序中缓存登录信息,也不知道如何在不同的 Azure 身份验证提供程序 API 之间共享缓存。
这些资源中的每一个都使用略有不同的身份验证处理程序(Microsoft.Identity.Client.PublicclientApplication
用于 MS Graph 授权,Azure.Identity.InteractivebrowserCredential
用于 Azure Key Vault 身份验证,Microsoft.Data.sqlClient.ActiveDirectoryAuthenticationProvider
用于数据库。
当前为每个资源设置我的 Active Directory 登录的示例代码:
// Configure the Active Directory authentication provider for the Microsoft.Data.sqlClient
sqlAuthenticationProvider.SetProvider(
sqlAuthenticationMethod.ActiveDirectoryInteractive,new ActiveDirectoryAuthenticationProvider()
)
...
// Register Key Vault authentication via AAD for the Microsoft.Data.sqlClient
InteractivebrowserCredentialOptions credentialOptions = new();
credentialOptions.TenantId = _tenantId;
InteractivebrowserCredential azureCredential
= new(credentialOptions);
sqlColumnEncryptionAzurekeyvaultProvider akvProvider
= new(azureCredential);
sqlConnection.RegisterColumnEncryptionKeyStoreProviders...
// Acquire MS Graph tokens
return _application
.AcquiretokenInteractive(scopes)
.WithUseEmbeddedWebView(false)
.ExecuteAsync();
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)