如何在 Powershell 中向 Azure AAD 应用程序授予管理员同意?

Sab*_*Far 4 authentication powershell active-directory azure

我正在尝试使用 Azure Active Directory 对 Azure Web 应用程序进行身份验证。到目前为止,我已采取以下步骤:

1-通过Azure门户,我在AAD中创建了应用程序注册,并按照此处的说明将其分配给Web应用程序

2-我使用 向我的应用程序分配了一些用户New-AzureADGroupAppRoleAssignment cmdlet,然后使用将用户分配设置为要求set-AzureADServicePrincipal -AppRoleAssignmentRequired $true

这按预期工作:未分配到应用程序的用户会看到“访问被拒绝”页面,而分配到应用程序的用户会看到“管理员同意”提示页面。

问题是管理员同意提示中没有可供他们请求的链接。我尝试按照此处的说明进行操作,但我无法通过门户访问 AAD。我只能通过 Powershell 来做到这一点。

如果您知道用于设置此链接(或将管理员同意更改为用户同意)的 Powershell cmdlet,如果您能将其发布到此处,我将不胜感激。

Joy*_*ang 6

目前PowerShell中没有授予管理员同意的命令,在您的情况下,如果您可以使用powershell访问Azure AD,我认为您也可以通过Azure CLI访问它。

所以我的解决方法是在 Azure CLI 中使用az ad app permission admin-consent,它相当于门户中的管理员同意按钮。

确保您已安装 Azure CLI,用于az login登录作为 AAD 租户中的管理员的用户帐户或服务主体,然后运行以下命令。

az ad app permission admin-consent --id <application-id>
Run Code Online (Sandbox Code Playgroud)


Mar*_*ark 5

在尝试让它与服务主体一起工作后,事实证明这是不可能的,因为这只能由用户帐户执行,az ad app permission admin-consent --id <application-id>将在未来的版本中被弃用,如本问题线程中讨论的:

https://github.com/Azure/azure-cli/issues/12137

现在,向 API 授予管理员同意的建议方法是:

az ad app permission grant --id 46eb4122-bd2b-4f54-af7b-6d79b46ee31a 
                           --api 00000003-0000-0000-c000-000000000000
                           --scope "Directory.Read.All Directory.ReadWrite.All"
Run Code Online (Sandbox Code Playgroud)

Microsoft Docs:az ad 应用程序权限授予