如何通过Powershell配置新的Azure AD应用程序?

时间:2017-02-10 16:50:43

标签: powershell azure

我正在通过Powershell创建一个新的Azure AD应用程序。我已成功创建应用程序并使用以下PowerShell命令分配client_secret

$app = New-AzureRmADApplication -DisplayName "PowerShell-Test-POC2" -HomePage "http://www.microsoft.com" -IdentifierUris "http://kcuraonedrive.onmicrosoft.com/PowerShell-Test-POC2" -AvailableToOtherTenants $true

我的问题是如何通过Powershell配置这个新创建的应用程序(即所需权限和回复URL)?

1 个答案:

答案 0 :(得分:16)

我建议您使用新的Azure AD v2 cmdlet:https://docs.microsoft.com/en-us/powershell/azuread/v2/azureactivedirectory

它们比ARM更通用,允许您更轻松地指定密钥和回复URL等内容。

例如,要添加回复网址:

Set-AzureADApplication -ObjectId 1048db5f-f5ff-419b-8103-1ce26f15db31 -ReplyUrls @("https://localhost:8080","https://localhost:8081")

要添加所需的权限,您必须找到一些事情。定义权限的服务主体,您将需要其appId。 (我从我的租户那里找到了Microsoft Graph API主体)然后你需要找到你想要的 appRole oauth2Permission 。你需要它的身份。

然后添加委派权限:

$req = New-Object -TypeName "Microsoft.Open.AzureAD.Model.RequiredResourceAccess"
$acc1 = New-Object -TypeName "Microsoft.Open.AzureAD.Model.ResourceAccess" -ArgumentList "e1fe6dd8-ba31-4d61-89e7-88639da4683d","Scope"
$acc2 = New-Object -TypeName "Microsoft.Open.AzureAD.Model.ResourceAccess" -ArgumentList "798ee544-9d2d-430c-a058-570e29e34338","Role"
$req.ResourceAccess = $acc1,$acc2
$req.ResourceAppId = "00000003-0000-0000-c000-000000000000"
Set-AzureADApplication -ObjectId 1048db5f-f5ff-419b-8103-1ce26f15db31 -RequiredResourceAccess $req

ResourceAppId 是Microsoft Graph API的服务主体的appId。在这种情况下,ResourceAccess对象包含两个要求。第一个保存我想要的oauth2Permission的id,以及指定它是委托权限。第二个包含app权限,id是appRole的对象ID。

范围=委派权限

角色=申请许可

要查找所需的服务主体,您可以运行:

Get-AzureADServicePrincipal
ObjectId                             AppId                                DisplayName
--------                             -----                                -----------
f004dde9-b40f-4259-91be-e257009a444a 00000003-0000-0000-c000-000000000000 Microsoft Graph

然后获取委托人并列出委派权限:

$msGraph = Get-AzureADServicePrincipal -ObjectId f004dde9-b40f-4259-91be-e257009a444a
$msGraph.Oauth2Permissions | select Id,AdminConsentDisplayName,Value
Id                                   AdminConsentDisplayName                                           Value
--                                   -----------------------                                           -----
e1fe6dd8-ba31-4d61-89e7-88639da4683d Sign in and read user profile                                     User.Read

或者,如果您需要应用程序权限:

$msGraph.AppRoles | select Id,DisplayName,Value
Id                                   DisplayName                                            Value
--                                   -----------                                            -----
798ee544-9d2d-430c-a058-570e29e34338 Read calendars in all mailboxes                        Calendars.Read

Id是重要人物。

对于脚本,好处是MS服务的应用程序ID始终相同。许可ID在所有租户中也是相同的。例如:

  • Microsoft Graph API
    • AppId:00000003-0000-0000-c000-000000000000
  • Azure AD Graph API
    • AppId:00000002-0000-0000-c000-000000000000