创建 Microsoft Entra 应用程序注册
适用于:✅Azure 数据资源管理器
Microsoft Entra 应用程序身份验证要求创建应用程序并将其注册到 Microsoft Entra ID。 在 Microsoft Entra 租户中创建应用程序注册时,会自动创建服务主体。
可以在 Azure 门户中创建应用注册,也可以使用 Azure CLI 以编程方式创建。 选择适合你的方案的选项卡。
注册应用
登录到 Azure 门户,然后打开“Microsoft Entra ID”边栏选项卡。
浏览到“应用注册”,然后选择“新注册”。
为应用程序命名,例如“example-app”。
选择支持的帐户类型,它决定了谁可以使用应用程序。
在“重定向 URI”下,选择“Web”作为要创建的应用程序类型。 URI 是可选的,本例中将其留空。
选择“注册”。
设置身份验证
服务主体可以使用两种类型的身份验证:基于密码的身份验证(应用程序机密)和基于证书的身份验证。 以下部分介绍如何对应用程序的凭据使用基于密码的身份验证。
在本部分中,你将复制以下值:应用程序 ID 和密钥值。 将这些值粘贴到某个位置(如文本编辑器),以便在步骤将客户端凭据配置到数据库中使用。
浏览到“概述”边栏选项卡。
复制“应用程序(客户端) ID”和“目录(租户) ID”。
注意
你将需要应用程序 ID 和租户 ID 来向服务主体授予访问数据库的权限。
在“证书和机密”边栏选项卡中,选择“新建客户端密码”。
输入说明和到期时间。
选择 添加 。
复制密钥值。
注意
离开此页后,将无法访问密钥值。
现已创建了 Microsoft Entra 应用程序和服务主体。
为应用程序配置委托的权限 - 可选
如果你的应用程序需要使用进行调用的用户的凭据访问你的数据库,请为应用程序配置委托的权限。 例如,如果要生成 Web API 并且想使用调用 API 的用户的凭据进行身份验证。
如果只需要访问授权的数据资源,则可以跳过本部分并继续向服务主体授予访问数据库的权限。
浏览到“应用注册”的“API 权限”边栏选项卡。
选择添加权限。
选择“我的组织使用的 API”。
搜索并选择“Azure 数据资源管理器”。
在“委托的权限”中,选择“user_impersonation”框。
选择“添加权限”。
向服务主体授予访问数据库的权限
创建了应用程序注册后,你需要向相应的服务主体授予对你的数据库的访问权限。 以下示例为查看器提供访问权限。 有关其他角色,请参阅 Kusto 基于角色的访问控制。
使用上一步骤中复制的应用程序 ID 和租户 ID 的值。
在查询编辑器中执行以下命令,将占位符值 ApplicationID 和 TenantID 替换为实际值:
.add database <DatabaseName> viewers ('aadapp=<ApplicationID>;<TenantID>') '<Notes>'
例如:
.add database Logs viewers ('aadapp=1234abcd-e5f6-g7h8-i9j0-1234kl5678mn;9876abcd-e5f6-g7h8-i9j0-1234kl5678mn') 'App Registration'
最后一个参数是字符串,当查询与数据库关联的角色时,该字符串会显示为注释。
注意
创建完应用程序注册后,可能会有几分钟的延迟,之后才可以引用它。 如果收到了找不到应用程序的错误,请等待并重试。
有关角色的详细信息,请参阅基于角色的访问控制。
使用应用程序凭据访问数据库
使用应用程序凭据通过客户端库以编程方式访问数据库。
. . .
string applicationClientId = "<myClientID>";
string applicationKey = "<myApplicationKey>";
string authority = "<myApplicationTenantID>";
. . .
var kcsb = new KustoConnectionStringBuilder($"https://{clusterName}.kusto.chinacloudapi.cn/{databaseName}")
.WithAadApplicationKeyAuthentication(
applicationClientId,
applicationKey,
authority);
var client = KustoClientFactory.CreateCslQueryProvider(kcsb);
var queryResult = client.ExecuteQuery($"{query}");
注意
为之前创建的应用程序注册(服务主体)指定应用程序 id 和密钥。
有关详细信息,请参阅如何在应用中使用 Microsoft 身份验证库 (MSAL) 进行身份验证、将 Azure Key Vault 与 .NET Core Web 应用配合使用。
疑难解答
“资源无效”错误
如果你的应用程序用于对用户或应用程序进行身份验证以实现访问,则必须为服务应用程序设置委托的权限。 声明你的应用程序可以对用户或应用程序进行身份验证以实现访问。 进行身份验证时,不这样做将导致出现类似于以下的错误:
AADSTS650057: Invalid resource. The client has requested access to a resource which is not listed in the requested permissions in the client's application registration...
你需要按照说明为应用程序配置委托的权限。
“启用用户同意”错误
你的 Microsoft Entra 租户管理员可以制定一种策略,阻止租户用户向应用程序提供同意。 用户尝试登录到应用程序时,这种情况将导致出现类似于以下的错误:
AADSTS65001: The user or administrator has not consented to use the application with ID '<App ID>' named 'App Name'
这时需要联系 Microsoft Entra 管理员,向租户中的所有用户授予同意,或者为特定应用程序启用用户同意。