从c#中获取来自Azure的keyVault的秘密
我有以下代码,它从KeyVault检索秘密。
var kv = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(GetToken)); var sec = await kv.GetSecretAsync(ConfigurationManager.AppSettings["SomeURI"]); secretValue = sec.Value ;
GetToken方法:
async Task GetToken(string authority, string resource, string scope) { var authContext = new AuthenticationContext(authority); ClientCredential clientCred = new ClientCredential(ConfigurationManager.AppSettings["ClientId"],ConfigurationManager.AppSettings["ClientSecret"]); AuthenticationResult result = await authContext.AcquireTokenAsync(resource, clientCred); if (result == null) throw new InvalidOperationException("Failed to obtain the token"); return result.AccessToken; }
在GetToken方法中,我从Appconfig中获取ClientId
和ClientSecret
。
我觉得在Appconfig中保留这些值并使用它们是不安全的。 有没有办法可以从配置文件中删除并从其他任何地方获取。 或者我的问题是否有任何可能的解决方案。
任何回复都非常感谢!
PS:我的是用c#开发的windows服务
有没有办法可以从配置文件中删除并从其他任何地方获取。 或者我的问题是否有任何可能的解决方案。
根据我的理解,您可以将相关信息存储到数据库中。 您可以使用Windows身份validation访问数据库以获取相关信息。
使用托管标识的另一种方法是通过Microsoft.Azure.Services.AppAuthentication 。
var azureServiceTokenProvider = new AzureServiceTokenProvider(); var kv = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback( azureServiceTokenProvider.KeyVaultTokenCallback));
这样您就不需要存储相关信息,但是在运行服务之前,您需要先使用azure cli登录到azure。 AzureServiceTokenProvider
类将令牌缓存在内存中。 有关更多详细信息,请参阅对自定义服务的身份validation 。
- 支持HTTP和HTTPS Web.Config WCF服务
- 在azure色的窗户上找不到路径的一部分
- Azurefunction的事件中心输入绑定
- 未调用AssemblyResolve,并且在序列化期间抛出FileNotFoundException
- 在Azure Service Fabric服务中实例化ServiceInitializationParameters的位置和方式是什么?
- IIS应用程序池回收触发器:没有足够的存储空间可用于完成此操作(Azure应用程序服务)
- ADAL – AcquireTokenSilentAsync失败(Azure Active Directory身份validation库)
- 如何添加对Azure Function C#项目的引用?
- 从其他设备访问Azure模拟器