Private/ConvertFrom-NSPFortinetToken.ps1
|
function ConvertFrom-NSPFortinetToken { # When a portal JWT expires (its 'exp' claim), as local time. [CmdletBinding()] [OutputType([datetime])] param([Parameter(Mandatory)][string]$Token) $parts = ($Token -replace '^Bearer\s+').Split('.') if ($parts.Count -lt 2) { throw 'That is not a Fortinet support portal token.' } $payload = $parts[1].Replace('-', '+').Replace('_', '/') $payload += '=' * ((4 - $payload.Length % 4) % 4) $claims = [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($payload)) | ConvertFrom-Json if (-not $claims.exp) { throw 'The portal token has no expiry.' } [DateTimeOffset]::FromUnixTimeSeconds([long]$claims.exp).LocalDateTime } |