microsoft / Partner-Center-PowerShell

PowerShell module for managing Partner Center resources.
https://docs.microsoft.com/powershell/partnercenter/
MIT License
130 stars 59 forks source link

Error: The provided tokens must have less than 180 seconds difference in the time range of expiration #377

Open seanunuy opened 2 years ago

seanunuy commented 2 years ago

Starting this month MicrosoftTeams Module cmdlet "Connect-MicrosoftTeams -AccessTokens @()"receives the ff error when connecting

The provided tokens must have less than 180 seconds difference in the time range of expiration.

clownwilleatme commented 2 years ago

The problem seems to be that the tokens issued from New-PartnerAccessToken have wildly varying expiration dates. I'm seeing two tokens issued at the same time have expiration times varying between 10 seconds and 20 minutes.

Here's a "dumb but it works" temporary solution until Microsoft fixes this which just keeps reissuing the tokens and checking the difference between their expiration date until it's under 180 seconds.

do { $teamsToken = New-PartnerAccessToken -ApplicationId $appId -Credential $appCred -RefreshToken $refreshToken -Scopes '48ac35b8-9aa8-4d74-927d-1f4a14a0b239/.default' -ServicePrincipal -Tenant $tenantId $graphToken = New-PartnerAccessToken -ApplicationId $appId -Credential $appCred -RefreshToken $refreshToken -Scopes 'https://graph.microsoft.com/.default' -ServicePrincipal -Tenant $tenantId

$diffSeconds = [Math]::Abs(($graphToken.ExpiresOn - $teamsToken.ExpiresOn).TotalSeconds)
Write-Output "Graph Token: $($graphToken.ExpiresOn) - Teams Token: $($teamsToken.ExpiresOn) - $diffSeconds"

if ($diffSeconds -ge 180)
{
    Write-Output "Expiration time range too high, waiting to reissue"
    Start-Sleep 10
}
else
{
    break
}

} while ($true)

Connect-MicrosoftTeams -AccessTokens @($graphToken.AccessToken, $teamsToken.AccessToken)

NZLostboy commented 2 years ago

Having the same issue, unfortunately I am unable to use an Application auth in my project, so the work around @clownwilleatme posted doesn't seem to work. Tested using the latest module.

If there are any other suggestions let me know.