Azure active directory az帐户获取访问令牌-无法在用户';语境

Azure active directory az帐户获取访问令牌-无法在用户';语境,azure-active-directory,azure-cli,az,Azure Active Directory,Azure Cli,Az,我有一个用户管理的标识,我想为其生成一个令牌 我在用户的上下文中进行了尝试 az login az account get-access-token --resource "<client-id of user managed identity>" 关于上述错误,我遇到一些线程建议将Azure CLI添加为preAuthorizedApplication。但是,我在应用程序注册中未找到此托管标识我在`企业应用程序'中找到了一个条目,但在此处未找到如何预授权Azu

我有一个用户管理的标识,我想为其生成一个令牌

我在用户的上下文中进行了尝试

az login
az account get-access-token --resource "<client-id of user managed identity>"
关于上述错误,我遇到一些线程建议将Azure CLI添加为
preAuthorizedApplication
。但是,我在
应用程序注册中未找到此托管标识
我在`企业应用程序'中找到了一个条目,但在此处未找到如何预授权Azure CLI

我试图在非用户环境中实现同样的目标

az login --service-principal -u <capp-id>  -p <client-secret> --tenant <tenant-id>
az account get-access-token --resource "<client-id of user managed identity>"
az登录——服务主体——u-p——租户
az帐户获取访问令牌--资源“”
这很有效


为什么命令在用户上下文中失败?如何使其工作?

托管身份没有应用程序注册,只有服务主体(又名企业应用程序)

在我看来,你试图使用它们的方式并不是它们应该被使用的方式

第二个有效功能实际上只是Azure AD的功能,它允许使用客户端凭据流(客户端id+机密)的应用程序为租户中的任何应用程序获取令牌。 但是,该令牌没有任何权限,因此如果您正确执行授权,则该令牌无效

您通常不希望将托管标识用作令牌目标,而只用于获取令牌。 因此,如果需要保护API,则需要进行应用程序注册,然后允许Az CLI调用它。 您还可以定义应用程序权限,并允许使用客户端凭据流的应用程序以适当的授权访问API

az login --service-principal -u <capp-id>  -p <client-secret> --tenant <tenant-id>
az account get-access-token --resource "<client-id of user managed identity>"