本文共 3509 字,大约阅读时间需要 11 分钟。
Azure Key Vault 有助于解决以下问题:
请记下下面列出的两个属性:
目前,只有你的 Azure 帐户有权对这个新保管库执行操作。
借助 Azure 密钥保管库,可以在集中的安全云存储库中存储机密并控制其分发,因而无需在应用程序中存储凭据。 应用程序只需要在运行时使用密钥保管库进行身份验证即可访问这些机密。
使用密钥保管库进行的身份验证可与 结合使用,后者负责对任何给定安全主体的标识进行身份验证。
安全主体是一个对象,表示请求访问 Azure 资源的用户、组、服务或应用程序。 Azure 为每个安全主体分配唯一的对象 ID。
注册应用程序会在应用与 Microsoft 标识平台之间建立信任关系。 信任是单向的:应用信任 Microsoft 标识平台,但标识平台并不信任应用。
按照以下步骤创建应用注册:
登录 。
如果有权访问多个租户,请使用顶部菜单中的“目录 + 订阅”筛选器 ,选择要在其中注册应用程序的租户。
搜索并选择“Azure Active Directory” 。
在“管理”下,选择“应用注册”,然后选择“新建注册” 。
输入应用程序的名称。 应用的用户可能会看到此名称,你稍后可对其进行更改。
指定可使用该应用程序的人员,这有时称为“登录访问者”。
支持的帐户类型 | 说明 |
---|---|
仅此组织目录中的帐户 | 如果要生成仅供租户中的用户(或来宾)使用的应用程序,请选择此选项。 通常称为业务线 (LOB) 应用程序,这是 Microsoft 标识平台中的单租户应用程序。 |
任何组织目录中的帐户 | 如果希望任何 Azure AD 租户中的用户都能够使用你的应用程序,请选择此选项。 例如,如果要构建打算向多个组织提供的软件即服务 (SaaS) 应用程序,则适合使用此选项。 这在 Microsoft 标识平台中被称为多租户应用程序。 |
请勿对“重定向 URI (可选)”输入任何内容,你将在下一部分中进行配置。
选择“注册”,完成初始应用注册。
注册完成后,Azure 门户会显示应用注册的“概述”窗格,其中包括其应用程序(客户端)ID 。 此值也被称为客户端 ID,它可唯一地标识 Microsoft 标识平台中的应用程序。
应用程序的代码(或者更通常是应用程序中使用的身份验证库)也将使用客户端 ID 来验证从标识平台接收的安全令牌。
凭据供访问 Web API 的机密客户端应用程序使用。 Web 应用、其他 Web API 或服务类型和守护程序类型的应用程序都是机密客户端。 通过凭据,应用程序可以自己的身份进行身份验证,无需用户在运行时进行任何交互。
可将证书和客户端密码(字符串)作为凭据添加到机密客户端应用注册。
客户端密码(也称为应用程序密码)是应用可用于代替证书来标识自身的字符串。 这是两种凭证类型中更容易使用的一种,而且通常在开发过程中使用,但它不如证书安全。 应在生产环境中运行的应用程序中使用证书。
若要在本地运行 Azure CLI 命令,请安装 。
仅限本地 CLI:使用 az login
登录到 Azure:
Bash复制
az cloud set -n AzureChinaCloudaz login
3 .应用程序和其他服务主体:请使用 命令来检索服务主体。 请检查命令的输出,以确定要为其分配访问策略的安全主体的对象 ID。
Azure CLI复制
az ad sp list --show-mine
使用 命令来分配所需的权限:
az keyvault set-policy --name myKeyVault --object-id--secret-permissions list get --key-permissions list get --certificate-permissions list get
将 <object-id>
替换为服务主体的对象 ID。即Azure AD 所创建应用的object-id 。az ad sp list --show-mine中查找。
program.cs
public static IWebHost BuildWebHost(string[] args) => WebHost.CreateDefaultBuilder(args) .ConfigureAppConfiguration(SetkeyVault) .UseStartup() .Build();public static void SetkeyVault(WebHostBuilderContext ctx, IConfigurationBuilder builder){ var builtConfig = builder.Build(); builder.AddAzureKeyVault( builtConfig["KeyVault"], builtConfig["AzureADApplicationId"], builtConfig["AzureADPassword"]); }}
Startup.cs
public class Startup{ public Startup(IConfiguration configuration) { this.Configuration = configuration; } public IConfiguration Configuration { get; } public void ConfigureServices(IServiceCollection services) { this.Configuration.Bind(new ApplicationConfiguration());
ApplicationConfiguration.cs
public class ApplicationConfiguration{ public static string SqlConnectionString { get; set; }}
appsettings.json 文件中配置用于访问Azure Key Vault所创建的AD应用的ID和Secret。
转载地址:http://xmnci.baihongyu.com/