@@ -193,6 +193,20 @@ function New-CIPPAPIConfig {
193193 if ($PSCmdlet.ShouldProcess ($APIApp.displayName , ' Reset API Secret' )) {
194194 $Step = ' Resetting Application Password'
195195 Write-Information ' Removing all old passwords'
196+
197+ $AppManagementPolicy = New-GraphGetRequest - uri ' https://graph.microsoft.com/v1.0/policies/defaultAppManagementPolicy' - AsApp $true - NoAuthCheck $true
198+ $PasswordExpirationPolicy = $AppManagementPolicy.applicationRestrictions.passwordcredentials |
199+ Where-Object { $_.restrictionType -eq ' passwordLifetime' }
200+
201+ $NewPasswordCredential = @ {
202+ displayName = ' Generated by API Setup'
203+ }
204+ if (-not ($PasswordExpirationPolicy.state -eq ' disabled' -or $null -eq $PasswordExpirationPolicy.state )) {
205+ $TimeToExpiration = [System.Xml.XmlConvert ]::ToTimeSpan($PasswordExpirationPolicy.maxLifetime )
206+ $ExpirationDate = (Get-Date ).AddDays($TimeToExpiration.Days ).ToUniversalTime().ToString(' yyyy-MM-ddTHH:mm:ss.fffZ' )
207+ $NewPasswordCredential.endDateTime = $ExpirationDate
208+ }
209+
196210 $Requests = @ (
197211 @ {
198212 id = ' removeOldPasswords'
@@ -213,15 +227,19 @@ function New-CIPPAPIConfig {
213227 ' Content-Type' = ' application/json'
214228 }
215229 body = @ {
216- passwordCredential = @ {
217- displayName = ' Generated by API Setup'
218- }
230+ passwordCredential = $NewPasswordCredential
219231 }
220232 dependsOn = @ (' removeOldPasswords' )
221233 }
222234 )
223235 $BatchResponse = New-GraphBulkRequest - tenantid $env: TenantID - NoAuthCheck $true - asapp $true - Requests $Requests
224- $APIPassword = $BatchResponse | Where-Object { $_.id -eq ' addNewPassword' } | Select-Object - ExpandProperty body
236+ $AddPasswordResponse = $BatchResponse | Where-Object { $_.id -eq ' addNewPassword' }
237+ if ($AddPasswordResponse.status -ge 400 ) {
238+ $ErrorBody = $AddPasswordResponse.body
239+ $ErrorMsg = $ErrorBody.error.message ?? ($ErrorBody | ConvertTo-Json - Compress - Depth 5 )
240+ throw " Failed to add new password during secret reset: $ErrorMsg "
241+ }
242+ $APIPassword = $AddPasswordResponse.body
225243 Write-LogMessage - headers $Headers - API $APINAME - tenant ' None ' - message " Reset CIPP-API Password for '$ ( $APIApp.displayName ) '." - Sev ' info'
226244 }
227245 }
0 commit comments