如何创建新的 Microsoft Entra ID 应用程序和服务主体
先决条件
- 一个 Azure 订阅
- Azure CLI
- jq
- OpenSSL(默认包含在所有 Linux 和 macOS 系统中,以及 WSL 中)
- 确保您使用的是 bash 或 zsh shell
使用 Azure CLI 登录 Azure
在新终端中,运行以下命令:
az login
az account set -s [your subscription id]
创建 Microsoft Entra ID 应用程序
使用以下命令创建 Microsoft Entra ID 应用程序:
# 应用程序 / 服务主体的友好名称
APP_NAME="dapr-application"
# 创建应用程序
APP_ID=$(az ad app create --display-name "${APP_NAME}" | jq -r .appId)
选择传递凭据的方式。
要创建一个客户端密钥,运行以下命令。
az ad app credential reset \
--id "${APP_ID}" \
--years 2
这将生成一个基于 base64 字符集的随机40字符长的密码。此密码有效期为2年,之后需要更新。
请保存返回的输出值;您将需要它们来让 Dapr 通过 Azure 进行身份验证。预期输出:
{
"appId": "<your-app-id>",
"password": "<your-password>",
"tenant": "<your-azure-tenant>"
}
在将返回的值添加到您的 Dapr 组件的元数据时:
appId是azureClientId的值password是azureClientSecret的值(这是随机生成的)tenant是azureTenantId的值
对于 PFX (PKCS#12) 证书,运行以下命令以创建自签名证书:
az ad app credential reset \
--id "${APP_ID}" \
--create-cert
注意: 自签名证书仅建议用于开发环境。在生产环境中,您应使用由 CA 签名并通过
--cert标志导入的证书。
上述命令的输出应如下所示:
请保存返回的输出值;您将需要它们来让 Dapr 通过 Azure 进行身份验证。预期输出:
{
"appId": "<your-app-id>",
"fileWithCertAndPrivateKey": "<file-path>",
"password": null,
"tenant": "<your-azure-tenant>"
}
在将返回的值添加到您的 Dapr 组件的元数据时:
appId是azureClientId的值tenant是azureTenantId的值fileWithCertAndPrivateKey表示自签名 PFX 证书和私钥的位置。使用该文件的内容作为azureCertificate(或将其写入服务器上的文件并使用azureCertificateFile)
注意: 虽然生成的文件具有
.pem扩展名,但它包含编码为 PFX (PKCS#12) 的证书和私钥。
创建服务主体
一旦您创建了 Microsoft Entra ID 应用程序,为该应用程序创建一个服务主体。通过此服务主体,您可以授予其访问 Azure 资源的权限。
要创建服务主体,运行以下命令:
SERVICE_PRINCIPAL_ID=$(az ad sp create \
--id "${APP_ID}" \
| jq -r .id)
echo "服务主体 ID: ${SERVICE_PRINCIPAL_ID}"
预期输出:
服务主体 ID: 1d0ccf05-5427-4b5e-8eb4-005ac5f9f163
上面返回的值是服务主体 ID,它与 Microsoft Entra ID 应用程序 ID(客户端 ID)不同。服务主体 ID 在 Azure 租户内定义,用于授予应用程序访问 Azure 资源的权限。
您将使用服务主体 ID 授予应用程序访问 Azure 资源的权限。
同时,客户端 ID 由您的应用程序用于身份验证。您将在 Dapr 清单中使用客户端 ID 来配置与 Azure 服务的身份验证。
请记住,刚刚创建的服务主体默认没有访问任何 Azure 资源的权限。需要根据需要为每个资源授予访问权限,如组件文档中所述。