在 Azure 标识、Microsoft Graph 授权和 Microsoft 标识之间共享凭据

问题描述

我正在编写一些软件来与多个 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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...