Test-Bearer

Inhaltsverzeichnis
  1. IIS Tracing
  2. Weitere Links

Im Rahmen meiner Tests um OAUTH u.a. habe ich mit ein kleines Skript gebaut, welches eine HTTP-Url mit Bearer-Authentication aufruft und die Antwort auswertet. Es war erst etwas kniffliger da die PowerShell-Commandlets den HTTP 401-Fehler abfangen und eine Exception werfen:

Die eigentliche Antwort kommt gar nicht in der Variable "$result" an. Das funktioniert also nur mit einer Try/Catch-Konstruktion.

Hinweis: Das Skript wurde mit PS7 getestet. PS2 kennt die Exception "[Microsoft.PowerShell.Commands.HttpResponseException]" z.B. nicht

# Test-bearer 
#
# Probe web page for bearer
#
param (
   $url = "https://graph.microsoft.com/v1.0/me"
)

write-host "Test-Bearer: Start"
write-host "URL: $($url)"
$HeaderParams = @{ 'Authorization' = "Bearer" }
try {
   write-host "Test-Bearer: Start Request with Bearer Header"
   $result = Invoke-WebRequest -UseBasicParsing -Headers $HeaderParams -Uri $url 
   write-host "Got not error. Bearer not working "
}

catch [Microsoft.PowerShell.Commands.HttpResponseException] {
   write-host "Error $($_.Exception.message)"
   $result=$_.Exception.Response.headers
}

catch {
   write-host "Error $($_.Exception.message)"
}

$WwwAuthenticate= $result | where-object {$_.key -eq "WWW-Authenticate"}
if ($WwwAuthenticate) {
   Write-Host "Got WWW-Authenticate-Header"
   foreach ($line in $WwwAuthenticate.value.split(", ")) {
      Write-host $line
   }
}

Dann erhalte ich aber die gewünschten Informationen, wenn die Gegenseite mit "Bearer" etwas anfangen kann:

Auch im Fiddler sind die Daten gut zu sehen

Dieser Webserver unterstützt also OAUTH.

Eine ausführlichere Version des Skripts gibt es hier zum Download.

test-bearer.ps1.txt

IIS Tracing

Wenn Sie selbst den Webserver betreiben und dies ein IIS ist, dann sollten Sie die Möglichkeit der Protokollierung des HostHeader (cs-host) und des Authentication-Headers kennen. Beide Optionen sind standardmäßig nicht aktiv aber können einfach und schnell im IIS Manager addiert werden

Danach finden Sie im IISLog den Hostheader aber vor allem den Inhalt des Felds "Authentication". Wenn Sie hier nach "Bearer" suchen, finden Sie alle an ihren Webserver gesendeten Anforderungen und können diese sogar decodieren. Für einen Fehlersuche und Analyse der verwendeten Anmeldedaten ist dies sehr nützlich.

Achtung
Schützen Sie den Zugriff auf die Logfiles, denn auch Anmeldungen per "Basic" können so erfasst und einfach decodiert werden und auch die Bearer-Tokens können missbräuchlich verwendet werden.

Weitere Links