首页 > 解决方案 > 获取只有显示名称的服务主体客户端 ID

问题描述

以下 bash 脚本代码用于通过 AZ CLI 获取服务主体的客户端 ID,方法是将其显示名称传递给脚本。

az ad sp show --id http://$SP_NAME

但现在我收到以下错误:

服务主体...不存在

$SP_NAME变量包含与我在 Azure AD 中的应用注册中看到的完全相同的显示名称。


通过脚本部署服务主体时,在运行脚本之前我们没有服务主体对象 ID,只有我们想要分配给服务主体的名称(显示名称)。不仅这在几个月前可以使用,根据文档,它应该仍然可以使用!


知道如何让它再次工作吗?

标签: bashazureazure-cli

解决方案


执行命令az ad sp show --id http://$SP_NAME时,它会尝试通过在ServicePrincipalNamesAD 应用程序对象的元素中搜索确切的 id 来解析服务主体,如az cli Github 上所示

创建服务主体时,请务必添加http://$SP_NAME为应用程序标识符 URI,如下所示。 应用注册概述

然后,如果您转到该应用程序注册的清单,应用程序 ID URI 将显示在 下identifierUris标识符 URI

ServicePrincipalNames元素是标识符的集合。所以现在命令应该输出正确的服务主体。 输出


推荐阅读