获取只有显示名称的服务主体客户端 ID
Fetch a service principle client ID having only its display name
以下 bash 脚本代码用于通过 AZ CLI 获取服务主体的客户端 ID,方法是将其显示名称传递给脚本。
az ad sp show --id http://$SP_NAME
但现在我收到以下错误:
Service principal ... doesn't exist
$SP_NAME
变量包含与我在 Azure AD 中的应用注册中看到的完全相同的显示名称。
通过脚本部署服务主体时,我们没有 运行 脚本之前的服务主体对象 ID,只有我们要分配给服务主体的名称(显示名称)。这不仅在几个月前有效,根据 documentation 它应该仍然有效!
知道如何让它重新工作吗?
当执行命令 az ad sp show --id http://$SP_NAME
时,它会尝试通过在 AD 应用程序对象的 ServicePrincipalNames
元素中搜索确切的 ID 来解析服务主体,如 az 上的 here 所示cli Github.
创建服务主体时,请务必添加 http://$SP_NAME
作为应用程序标识符 URI,如下所示。
然后,如果您转到该应用程序注册的清单,应用程序 ID URI 显示在 identifierUris
下。
ServicePrincipalNames
元素是标识符的集合。所以现在命令应该输出正确的服务主体。
以下 bash 脚本代码用于通过 AZ CLI 获取服务主体的客户端 ID,方法是将其显示名称传递给脚本。
az ad sp show --id http://$SP_NAME
但现在我收到以下错误:
Service principal ... doesn't exist
$SP_NAME
变量包含与我在 Azure AD 中的应用注册中看到的完全相同的显示名称。
通过脚本部署服务主体时,我们没有 运行 脚本之前的服务主体对象 ID,只有我们要分配给服务主体的名称(显示名称)。这不仅在几个月前有效,根据 documentation 它应该仍然有效!
知道如何让它重新工作吗?
当执行命令 az ad sp show --id http://$SP_NAME
时,它会尝试通过在 AD 应用程序对象的 ServicePrincipalNames
元素中搜索确切的 ID 来解析服务主体,如 az 上的 here 所示cli Github.
创建服务主体时,请务必添加 http://$SP_NAME
作为应用程序标识符 URI,如下所示。
然后,如果您转到该应用程序注册的清单,应用程序 ID URI 显示在 identifierUris
下。
ServicePrincipalNames
元素是标识符的集合。所以现在命令应该输出正确的服务主体。