我正在开发一个C#桌面应用程序(一个3D建模软件的插件(,因此我需要从GraphQL端点访问信息。为了访问端点,我需要提供一个密钥。所以我所做的就是将该密钥存储在Azure密钥库中
这是我用来从Azure密钥库获取密钥的代码:
var clientProd = new SecretClient(new Uri("my-azure-keyvault-url"),
new ClientSecretCredential(
"tenantId",
"clientId",
"clientSecret"));
Response<KeyVaultSecret> secret = await clientProd.GetSecretAsync("cbe-graphQL-prod");
但现在我发现自己陷入了这种恶性循环,我不确定clientSecret应该来自哪里,所以它不会被推向版本控制
我将把这个应用程序部署到我公司的多个用户,所以我不想在每个人的机器上创建环境变量(甚至不想使用组策略(。
最好的方法是什么?
谢谢!
如果您在Azure中托管应用程序,您可以使用系统分配的托管身份访问密钥库,而无需任何凭据(客户端id、客户端机密(
如果您的应用程序是本地托管的,您可以限制应用程序注册(服务主体(对存储机密的密钥库的访问。
然后,您可以将客户端机密存储为环境变量,也可以对客户端机密进行硬编码