@@ -31,26 +31,66 @@ function Invoke-CIPPStandardOauthConsentLowSec {
3131 # #$Rerun -Type Standard -Tenant $Tenant -Settings $Settings 'OauthConsentLowSec'
3232
3333 $State = (New-GraphGetRequest - Uri ' https://graph.microsoft.com/beta/policies/authorizationPolicy/authorizationPolicy' - tenantid $tenant )
34+ $PermissionState = (New-GraphGetRequest - Uri " https://graph.microsoft.com/beta/servicePrincipals(appId='00000003-0000-0000-c000-000000000000')/delegatedPermissionClassifications" - tenantid $tenant ) | Select-Object - Property permissionName
35+
36+ $requiredPermissions = @ (' offline_access' , ' openid' , ' User.Read' , ' profile' , ' email' )
37+ $missingPermissions = $requiredPermissions | Where-Object { $PermissionState.permissionName -notcontains $_ }
38+
3439 If ($Settings.remediate -eq $true ) {
35- try {
36- if ($State.permissionGrantPolicyIdsAssignedToDefaultUserRole -notin @ (' managePermissionGrantsForSelf.microsoft-user-default-low' )) {
37- Write-Host ' Going to set'
38- New-GraphPostRequest - tenantid $tenant - Uri ' https://graph.microsoft.com/beta/policies/authorizationPolicy/authorizationPolicy' - Type PATCH - Body ' {"permissionGrantPolicyIdsAssignedToDefaultUserRole":["managePermissionGrantsForSelf.microsoft-user-default-low"]}' - ContentType ' application/json'
40+ if ($State.permissionGrantPolicyIdsAssignedToDefaultUserRole -in @ (' managePermissionGrantsForSelf.microsoft-user-default-low' )) {
41+ Write-LogMessage - API ' Standards' - tenant $tenant - message ' Application Consent Mode(microsoft-user-default-low) is already enabled.' - sev Info
42+ } else {
43+ try {
44+ $GraphParam = @ {
45+ tenantid = $tenant
46+ Uri = ' https://graph.microsoft.com/beta/policies/authorizationPolicy/authorizationPolicy'
47+ Type = ' PATCH'
48+ Body = @ {
49+ permissionGrantPolicyIdsAssignedToDefaultUserRole = @ (' managePermissionGrantsForSelf.microsoft-user-default-low' )
50+ } | ConvertTo-Json
51+ ContentType = ' application/json'
52+ }
53+ $null = New-GraphPostRequest @GraphParam
54+ Write-LogMessage - API ' Standards' - tenant $tenant - message ' Application Consent Mode(microsoft-user-default-low) has been enabled.' - sev Info
55+ } catch {
56+ $ErrorMessage = Get-NormalizedError - Message $_.Exception.Message
57+ Write-LogMessage - API ' Standards' - tenant $tenant - message " Failed to apply Application Consent Mode (microsoft-user-default-low) Error: $ErrorMessage " - sev Error
58+ }
59+ }
60+
61+ if ($missingPermissions.Count -eq 0 ) {
62+ Write-LogMessage - API ' Standards' - tenant $tenant - message ' All permissions for Application Consent already assigned.' - sev Info
63+ } else {
64+ try {
65+ $missingPermissions | ForEach-Object {
66+ $GraphParam = @ {
67+ tenantid = $tenant
68+ Uri = " https://graph.microsoft.com/beta/servicePrincipals(appId='00000003-0000-0000-c000-000000000000')/delegatedPermissionClassifications"
69+ Type = ' POST'
70+ Body = @ {
71+ permissionName = $_
72+ classification = ' low'
73+ } | ConvertTo-Json
74+ ContentType = ' application/json'
75+ }
76+ $null = New-GraphPostRequest @GraphParam
77+ Write-LogMessage - API ' Standards' - tenant $tenant - message " Permission $_ has been added to low Application Consent" - sev Info
78+ }
79+ } catch {
80+ $ErrorMessage = Get-NormalizedError - Message $_.Exception.Message
81+ Write-LogMessage - API ' Standards' - tenant $tenant - message " Failed to apply low consent permissions Error: $ErrorMessage " - sev Error
3982 }
40- Write-LogMessage - API ' Standards' - tenant $tenant - message ' Application Consent Mode(microsoft-user-default-low) has been enabled.' - sev Info
41- } catch {
42- $ErrorMessage = Get-NormalizedError - Message $_.Exception.Message
43- Write-LogMessage - API ' Standards' - tenant $tenant - message " Failed to apply Application Consent Mode (microsoft-user-default-low) Error: $ErrorMessage " - sev Error
4483 }
4584 }
46- if ($Settings.alert -eq $true ) {
4785
86+ if ($Settings.alert -eq $true ) {
4887 if ($State.permissionGrantPolicyIdsAssignedToDefaultUserRole -notin @ (' managePermissionGrantsForSelf.microsoft-user-default-low' )) {
4988 Write-LogMessage - API ' Standards' - tenant $tenant - message ' Application Consent Mode(microsoft-user-default-low) is not enabled.' - sev Alert
5089 } else {
5190 Write-LogMessage - API ' Standards' - tenant $tenant - message ' Application Consent Mode(microsoft-user-default-low) is enabled.' - sev Info
5291 }
5392 }
93+
5494 if ($Settings.report -eq $true ) {
5595 if ($State.permissionGrantPolicyIdsAssignedToDefaultUserRole -notin @ (' managePermissionGrantsForSelf.microsoft-user-default-low' )) {
5696 $State.permissionGrantPolicyIdsAssignedToDefaultUserRole = $false
0 commit comments