我正在尝试各种Azure功能,目前希望从KeyVault检索一个秘密。
直截了当地说:
我正在使用这个nuget包与我的azure资源进行交互。
我开发了一个简单的。NET核心控制台应用程序,并在本地运行。
我有一个密钥库资源,其中定义了一个处于活动状态且未过期的秘密。
我在AAD中注册了一个应用程序,因此我的本地出货。NET Core控制台应用程序在AAD中具有标识。
然后我在AAD的注册应用程序中创建了一个“客户机密”,用它来验证自己是否是应用程序。
然后我开发了一小段代码,可以检索到想要的秘密:
public class AzureAuthentication
{
public async Task<string> GetAdminPasswordFromKeyVault()
{
const string clientId = "--my-client-id--";
const string tenantId = "--my-tenant-id--";
const string clientSecret = "--my-client-secret--";
var credentials = new ClientSecretCredential(tenantId, clientId, clientSecret);
var client = new SecretClient(new Uri("https://mykeyvaultresource.vault.azure.net"), credentials);
var secret = await client.GetSecretAsync("admincreds");
return secret.Value.Value;
}
}
我错过了一些非常明显的东西吗?或者有一些延迟(
确保你的广告应用程序(服务负责人)在你的keyvault中拥有正确的权限-
我测试你的代码和获取
权限,它工作正常。
从您的屏幕截图来看,您似乎没有将与广告应用相关的正确服务主体添加到访问策略
。
如果添加与广告应用程序相关的服务主体,它将显示为应用程序
,而不是复合标识
。
因此,当您添加它时,您可以直接搜索客户端Id(即应用程序Id)
或应用程序注册的名称
,确保您添加了正确的。
我试图用身份验证详细信息建立到业务中心服务的连接,但它给了我一个错误。然而当我在邮递员上测试它时,它工作得很完美。
我使用。NET Core2.0和ASP.NET Core2.0进行应用程序开发。“测试”应用程序是一个。NET核心控制台应用程序。我正在编写的核心代码是一个类库。一旦适当的测试。我选择这样做是因为我暂时不会使用它(它正在替换旧的ASPNET代码)。 无论如何,由于我必须处理各种服务的大量API密钥,所以我决定使用Microsoft Azure Key Vault来存储密钥。我有这一切设置,并理解这
在https://KeyCloak.gitbooks.io/server-developer-guide/content/v/2.2/topics/admin-rest-api.html中使用CURL的示例适用于从其Docker映像运行KeyCloak。 为了实现应用程序的最终目标形状,我希望使用客户端ID和机密而不是用户名+密码进行身份验证。 该令牌会导致对admin REST API的调用出现
我无法从azure key vault检索到运行在azure windows VM中的.NET控制台应用程序的秘密。下面是我使用过的代码,我已经给了服务主体在密钥库中的所有权限。