100 lines
2.3 KiB
PowerShell
100 lines
2.3 KiB
PowerShell
|
|
<#
|
|||
|
|
AZA – Diagnose: Inspect OpenAPI for /license/status auth expectations
|
|||
|
|
|
|||
|
|
Run (with server running):
|
|||
|
|
cd "C:\Users\surov\Documents\AZA\backup 24.2.26"
|
|||
|
|
powershell -ExecutionPolicy Bypass -File .\deploy\openapi_auth_inspect.ps1
|
|||
|
|
#>
|
|||
|
|
|
|||
|
|
[CmdletBinding()]
|
|||
|
|
param(
|
|||
|
|
[string]$BaseUrl = "http://127.0.0.1:8000"
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
function SafeJson($obj) {
|
|||
|
|
try { return ($obj | ConvertTo-Json -Depth 20 -Compress) } catch { return "" }
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$base = $BaseUrl.TrimEnd("/")
|
|||
|
|
$url = "$base/openapi.json"
|
|||
|
|
|
|||
|
|
Write-Host "[AZA] OpenAPI auth inspect"
|
|||
|
|
Write-Host (" BaseUrl: " + $base)
|
|||
|
|
Write-Host ""
|
|||
|
|
|
|||
|
|
try {
|
|||
|
|
$api = Invoke-RestMethod -Method GET -Uri $url -TimeoutSec 15
|
|||
|
|
} catch {
|
|||
|
|
Write-Host "ERROR: cannot fetch /openapi.json"
|
|||
|
|
Write-Host $_.Exception.Message
|
|||
|
|
exit 1
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# 1) Components securitySchemes
|
|||
|
|
Write-Host "components.securitySchemes:"
|
|||
|
|
try {
|
|||
|
|
$schemes = $api.components.securitySchemes
|
|||
|
|
if (-not $schemes) {
|
|||
|
|
Write-Host " (none)"
|
|||
|
|
} else {
|
|||
|
|
foreach ($p in $schemes.PSObject.Properties) {
|
|||
|
|
$name = $p.Name
|
|||
|
|
$val = $p.Value
|
|||
|
|
$type = $val.type
|
|||
|
|
$inLoc = $val.in
|
|||
|
|
$paramName = $val.name
|
|||
|
|
Write-Host (" - " + $name + ": type=" + $type + " in=" + $inLoc + " name=" + $paramName)
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
} catch {
|
|||
|
|
Write-Host " (failed to read)"
|
|||
|
|
}
|
|||
|
|
Write-Host ""
|
|||
|
|
|
|||
|
|
# 2) Global security
|
|||
|
|
Write-Host "top-level security:"
|
|||
|
|
try {
|
|||
|
|
if ($api.security) { Write-Host (" " + (SafeJson $api.security)) } else { Write-Host " (none)" }
|
|||
|
|
} catch { Write-Host " (failed to read)" }
|
|||
|
|
Write-Host ""
|
|||
|
|
|
|||
|
|
# 3) /license/status GET details
|
|||
|
|
$path = "/license/status"
|
|||
|
|
Write-Host ("path: " + $path)
|
|||
|
|
try {
|
|||
|
|
$item = $api.paths.$path
|
|||
|
|
if (-not $item) {
|
|||
|
|
Write-Host " (path not present in openapi.json)"
|
|||
|
|
exit 0
|
|||
|
|
}
|
|||
|
|
$get = $item.get
|
|||
|
|
if (-not $get) {
|
|||
|
|
Write-Host " (GET not present for this path)"
|
|||
|
|
exit 0
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
Write-Host " operationId:"
|
|||
|
|
Write-Host (" " + $get.operationId)
|
|||
|
|
|
|||
|
|
Write-Host " security:"
|
|||
|
|
if ($get.security) { Write-Host (" " + (SafeJson $get.security)) } else { Write-Host " (none)" }
|
|||
|
|
|
|||
|
|
Write-Host " parameters:"
|
|||
|
|
if ($get.parameters) {
|
|||
|
|
foreach ($par in $get.parameters) {
|
|||
|
|
$pname = $par.name
|
|||
|
|
$pin = $par.in
|
|||
|
|
$preq = $par.required
|
|||
|
|
Write-Host (" - " + $pname + " in=" + $pin + " required=" + $preq)
|
|||
|
|
}
|
|||
|
|
} else {
|
|||
|
|
Write-Host " (none)"
|
|||
|
|
}
|
|||
|
|
} catch {
|
|||
|
|
Write-Host " (failed to read path details)"
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
Write-Host ""
|
|||
|
|
Write-Host "Done."
|
|||
|
|
|