如何使用PowerShell将Api权限添加到Azure应用注册

Mattruma

我在Azure PowerShell中找出了将User.ReadApe权限添加到Azure中的应用程序注册中的命令。

现有的应用程序

我可以找到一些使用的示例*Azure,但更喜欢使用*Az命令的示例,例如https://docs.microsoft.com/en-us/powershell/azure/?view=azps-2.8.0

想知道是否有人知道该怎么做?谢谢!

阿斯塔科夫

当前只能使用Azure AD PowerShell来实现请注意,Azure AD PowerShellAzure PowerShell之间存在区别Azure的AD PowerShell的不是简单的旧Azure的PowerShell的模块。Azure AD PowerShell是一个单独的模块。Azure AD还没有“ AZ *”。只有两个最常用的命令具有Azure资源提供程序实现。Azure PowerShell具有一组与Azure AD一起使用的功能。如果需要更多功能(如您提到的功能),则必须使用Azure AD PowerShell。Azure AD PowerShell不是 描述,是用于Azure AD的官方支持的PowerShell模块。

您可以通过Set-AzureAdApplication cmdlet并传递适当的-RequiredResourceAccess对象来管理这些必需的权限

为了构造该对象,您必须首先获得对“公开”权限的引用。因为权限是由其他服务主体公开的。

由于我无法上传整个文件,因此以下是一个PowerShell脚本,该脚本创建了一个示例应用程序,该应用程序具有对某些MS Graph和某些Power BI权限的必需权限。

Function GetToken
{
    param(
        [String] $authority = "https://login.microsoftonline.com/dayzure.com/oauth2/token",
        [String] $clientId,
        [String] $clientSecret,
        [String] $resourceId = "https://graph.windows.net"
    )
    $scope = [System.Web.HttpUtility]::UrlEncode($resourceId) 
    $encSecret = [System.Web.HttpUtility]::UrlEncode($clientSecret) 
    $body = "grant_type=client_credentials&resource=$($scope)&client_id=$($clientId)&client_secret=$($encSecret)"
    $res = Invoke-WebRequest -Uri $authority -Body $body -Method Post
    $authResult = $res.Content | ConvertFrom-Json
    return $authResult.access_token
}

#`
#            -RequiredResourceAccess @($requiredResourceAccess)
#

Function CreateChildApp
{
    param (
        [string] $displayName,
        [string] $tenantName
        )
    # create your new application
    Write-Output -InputObject ('Creating App Registration {0}' -f $displayName)
    if (!(Get-AzureADApplication -SearchString $displayName)) {
        $app = New-AzureADApplication -DisplayName $displayName `
            -Homepage "https://localhost" `
            -ReplyUrls "https://localhost" `
            -IdentifierUris ('https://{0}/{1}' -f $tenantName, $displayName) 

        # create SPN for App Registration
        Write-Output -InputObject ('Creating SPN for App Registration {0}' -f $displayName)

        # create a password (spn key)
        $appPwd = New-AzureADApplicationPasswordCredential -ObjectId $app.ObjectId
        $appPwd

        # create a service principal for your application
        # you need this to be able to grant your application the required permission
        $spForApp = New-AzureADServicePrincipal -AppId $app.AppId -PasswordCredentials @($appPwd)
    }
    else {
        Write-Output -InputObject ('App Registration {0} already exists' -f $displayName)
        $app = Get-AzureADApplication -SearchString $displayName
    }
    #endregion

    return $app
}

Function GrantAllThePermissionsWeWant
{
    param
    (
        [string] $targetServicePrincipalName,
        $appPermissionsRequired,
        $childApp,
        $spForApp
    )

    $targetSp = Get-AzureADServicePrincipal -Filter "DisplayName eq '$($targetServicePrincipalName)'"

    # Iterate Permissions array
    Write-Output -InputObject ('Retrieve Role Assignments objects')
    $RoleAssignments = @()
    Foreach ($AppPermission in $appPermissionsRequired) {
        $RoleAssignment = $targetSp.AppRoles | Where-Object { $_.Value -eq $AppPermission}
        $RoleAssignments += $RoleAssignment
    }

    $ResourceAccessObjects = New-Object 'System.Collections.Generic.List[Microsoft.Open.AzureAD.Model.ResourceAccess]'
    foreach ($RoleAssignment in $RoleAssignments) {
        $resourceAccess = New-Object -TypeName "Microsoft.Open.AzureAD.Model.ResourceAccess"
        $resourceAccess.Id = $RoleAssignment.Id
        $resourceAccess.Type = 'Role'
        $ResourceAccessObjects.Add($resourceAccess)
    }
    $requiredResourceAccess = New-Object -TypeName "Microsoft.Open.AzureAD.Model.RequiredResourceAccess"
    $requiredResourceAccess.ResourceAppId = $targetSp.AppId
    $requiredResourceAccess.ResourceAccess = $ResourceAccessObjects

    # set the required resource access
    Set-AzureADApplication -ObjectId $childApp.ObjectId -RequiredResourceAccess $requiredResourceAccess
    Start-Sleep -s 1

    # grant the required resource access
    foreach ($RoleAssignment in $RoleAssignments) {
        Write-Output -InputObject ('Granting admin consent for App Role: {0}' -f $($RoleAssignment.Value))
        New-AzureADServiceAppRoleAssignment -ObjectId $spForApp.ObjectId -Id $RoleAssignment.Id -PrincipalId $spForApp.ObjectId -ResourceId $targetSp.ObjectId
        Start-Sleep -s 1
    }
}

cls

#globaladminapp
$clientID = "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"
$key = "****"


$tenantId = "aaaaaaaa-bbbb-xxxx-yyyy-aaaaaaaaaaaa";
$TenantName = "customdomain.com";
$AppRegName = "globaladminChild-0003";

$token = GetToken -clientId $clientID -clientSecret $key

Disconnect-AzureAD
Connect-AzureAD -AadAccessToken $token -AccountId $clientID -TenantId $tenantId

$appPermissionsRequired = @('Application.ReadWrite.OwnedBy', 'Device.ReadWrite.All', 'Domain.ReadWrite.All')
$targetServicePrincipalName = 'Windows Azure Active Directory'

#$appPermissionsRequired = @('Files.ReadWrite.All','Sites.FullControl.All','Notes.ReadWrite.All')
#$targetServicePrincipalName = 'Microsoft Graph'

$app = CreateChildApp -displayName $AppRegName -tenantName $TenantName
$spForApp = Get-AzureADServicePrincipal -Filter "DisplayName eq '$($AppRegName)'"


$appPermissionsRequired = @('Tenant.ReadWrite.All')
$targetServicePrincipalName = 'Power BI Service'
GrantAllThePermissionsWeWant -targetServicePrincipalName $targetServicePrincipalName -appPermissionsRequired $appPermissionsRequired -childApp $app -spForApp $spForApp

$appPermissionsRequired = @('Files.ReadWrite.All','Sites.FullControl.All','Notes.ReadWrite.All')
$targetServicePrincipalName = 'Microsoft Graph'
GrantAllThePermissionsWeWant -targetServicePrincipalName $targetServicePrincipalName -appPermissionsRequired $appPermissionsRequired -childApp $app -spForApp $spForApp

有趣的部分涉及“ apppermissionrequired”和“ targetserviceprincipalname”变量。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用Swift将注册页面添加到我的Parse应用程序中?

来自分类Dev

如何使用SDK或Web Api将管理员添加到Azure DevOps中的团队?

来自分类Dev

如何将注册添加到Vue.js Okta身份验证应用

来自分类Dev

将Office 365 API调用权限添加到Azure管理控制台

来自分类Dev

将Office 365 API调用权限添加到Azure管理控制台

来自分类Dev

如何将 Localhost\Users + READ 权限添加到 Powershell 中的文件夹

来自分类Dev

通过 REST API 将 Azure Key Vault 中的证书添加到 Azure 应用服务

来自分类Dev

如何将 MSBUILD 15 添加到 Windows 注册

来自分类Dev

如何使用函数GetStorageFileName将培训文件添加到注册表?

来自分类Dev

如何使用Inno Setup将HEX-Data添加到注册表中?

来自分类Dev

如何使用函数GetStorageFileName将培训文件添加到注册表?

来自分类Dev

如何使用额外的命令行参数将Windows终端添加到注册表?

来自分类Dev

如何将结构添加到Azure IoT中心自定义应用程序

来自分类Dev

如何将SSL添加到Azure容器实例应用程序?

来自分类Dev

使用点对点连接(RM Powershell)将Azure WebApp添加到现有VPN

来自分类Dev

使用点对点连接(RM Powershell)将Azure WebApp添加到现有VPN

来自分类Dev

使用PowerShell ARM脚本将磁盘添加到Azure VM

来自分类Dev

无法使用 PowerShell 将防火墙规则添加到 Azure Key Vault

来自分类Dev

将Gmail操作添加到Azure逻辑应用

来自分类Dev

通过API将Facebook应用添加到页面

来自分类Dev

尝试将 firebase 库添加到使用谷歌地图 API 的应用程序时出错

来自分类Dev

如何将行为添加到我的Azure API(例如,将其连接到后端)?

来自分类Dev

如何防止PowerShell将\添加到字符串

来自分类Dev

如何使用Apache POI API将图像添加到pptx中添加的图像占位符?

来自分类Dev

如何使用PowerShell将VBA代码添加到Excel工作表中?

来自分类Dev

最初如何使用PowerShell将标头添加到CSV文件

来自分类Dev

如何使用Powershell判断何时将一系列文件添加到网络

来自分类Dev

如何使用Powershell将QOS添加到本地计算机策略

来自分类Dev

如何将AFNetworking添加到XCode应用

Related 相关文章

  1. 1

    如何使用Swift将注册页面添加到我的Parse应用程序中?

  2. 2

    如何使用SDK或Web Api将管理员添加到Azure DevOps中的团队?

  3. 3

    如何将注册添加到Vue.js Okta身份验证应用

  4. 4

    将Office 365 API调用权限添加到Azure管理控制台

  5. 5

    将Office 365 API调用权限添加到Azure管理控制台

  6. 6

    如何将 Localhost\Users + READ 权限添加到 Powershell 中的文件夹

  7. 7

    通过 REST API 将 Azure Key Vault 中的证书添加到 Azure 应用服务

  8. 8

    如何将 MSBUILD 15 添加到 Windows 注册

  9. 9

    如何使用函数GetStorageFileName将培训文件添加到注册表?

  10. 10

    如何使用Inno Setup将HEX-Data添加到注册表中?

  11. 11

    如何使用函数GetStorageFileName将培训文件添加到注册表?

  12. 12

    如何使用额外的命令行参数将Windows终端添加到注册表?

  13. 13

    如何将结构添加到Azure IoT中心自定义应用程序

  14. 14

    如何将SSL添加到Azure容器实例应用程序?

  15. 15

    使用点对点连接(RM Powershell)将Azure WebApp添加到现有VPN

  16. 16

    使用点对点连接(RM Powershell)将Azure WebApp添加到现有VPN

  17. 17

    使用PowerShell ARM脚本将磁盘添加到Azure VM

  18. 18

    无法使用 PowerShell 将防火墙规则添加到 Azure Key Vault

  19. 19

    将Gmail操作添加到Azure逻辑应用

  20. 20

    通过API将Facebook应用添加到页面

  21. 21

    尝试将 firebase 库添加到使用谷歌地图 API 的应用程序时出错

  22. 22

    如何将行为添加到我的Azure API(例如,将其连接到后端)?

  23. 23

    如何防止PowerShell将\添加到字符串

  24. 24

    如何使用Apache POI API将图像添加到pptx中添加的图像占位符?

  25. 25

    如何使用PowerShell将VBA代码添加到Excel工作表中?

  26. 26

    最初如何使用PowerShell将标头添加到CSV文件

  27. 27

    如何使用Powershell判断何时将一系列文件添加到网络

  28. 28

    如何使用Powershell将QOS添加到本地计算机策略

  29. 29

    如何将AFNetworking添加到XCode应用

热门标签

归档