我正在尝试以编程方式使用terraform授予对应用程序注册的API权限。 我不知道如何获取我要授予的权限的ID。我已经尝试从清单文件中复制和粘贴在其他地方使用的权限,但这看起来并不那么简单。
此设置的描述来自Terraform文档。
id-(必需)资源应用程序公开的OAuth2Permission或AppRole实例之一的唯一标识符。
有人知道如何获取此处使用的权限指南吗?它们特定于应用程序注册吗?我猜是这样。
答案 0 :(得分:1)
terraform中的id
不是屏幕截图中的id
,而是权限的同意显示名称,而不是id
,它只是一个向导。
要获得id
,可以使用AzureAD
Powershell,如下所示。
例如,获得xxx-nex-kv-access
API委派权限的Get-AzureADServicePrincipal -SearchString "xxx-nex-kv-access"
,例如您的屏幕截图。
1。找到服务主体。
xxx-nex-kv-access
该命令将列出与ObjectId
相关的所有服务主体,确保您需要哪个,然后复制其中的AppId
和Get-AzureADServicePrincipal
。 (如果没有结果,则可以使用不带参数的ObjectId
列出所有服务主体并找到所需的主体。)
2。使用$sp = Get-AzureADServicePrincipal -ObjectId "<ObjectId>"
$sp.Oauth2Permissions | select Id,AdminConsentDisplayName,Value
获取委派的权限。
Id
required_resource_access {
resource_app_id = "<AppId>"
resource_access {
id = "<Id>"
type = "Scope"
}
}
是您要在地形中指定的内容,如下所示。
type
此外,您应该注意到Scope
属性有两个值,Role
和Scope
,您应该知道Delegated permission
是{{ 1}}和Role
是Application permission
。
因此,如果要添加Application permission
权限,则需要使用以下命令,然后在terraform中使用type = "Role"
。
$sp = Get-AzureADServicePrincipal -ObjectId "<ObjectId>"
$sp.AppRoles | select Id,DisplayName,Value