(PowerShell) HTTPS Windows Integrated Authentication

This example pertains to running on the Windows operating system only.

It provides guidance on how to send HTTP requests using the current logged-on Windows user credentials. This is where NTLM/Negotiate authentication is used, but the login/password credentials are not explicitly provided by the application, but are implicitly provided based on the Windows logged-on user (i.e. the Windows account for the running process).

Chilkat .NET Downloads

[Reflection.Assembly]::LoadFile("C:\myAssemblies\ChilkatDotNet47.dll")
# This example requires the Chilkat API to have been previously unlocked.# See Global Unlock Sample for sample code.
$http = New-ObjectChilkat.Http# Chilkat implements the NTLM protocol directly, which is how it can be used on non-Windows systems.# However, Chilkat can also optionally use Microsoft's SSPI (see https://docs.microsoft.com/en-us/windows/desktop/secauthn/ssp-packages-provided-by-microsoft) # to allow for Windows Integrated Authentication.# Setting the HTTP Login equal to the empty string, and the Password equal to the keyword "default"# will cause Chilkat to use the Microsoft SSPI w/ integrated authentication.
$http.Login = ""
$http.Password = "default"# We can also explicitly indicate that NTLM or Negotiate authentication is to be used:
$http.NegotiateAuth = $true# Set various properties unrelated to authentication..# Automatically follow redirects.
$http.FollowRedirects = $true# Give verbose logging in the LastErrorText (in case there are errors)
$http.VerboseLogging = $true# Optionally log the exact session to a file (for debugging)
$http.SessionLogFilename = "c:/someDir/session.txt"# Perhaps you wish to be seen as a browser on Mac OS X..
$http.UserAgent = "Mozilla/5.0 (Windows NT; Windows NT 6.1; en-GB) AppleWebKit/534.6 (KHTML, like Gecko) Chrome/7.0.500.0 Safari/534.6"# Note: If the result of authentication is to set Cookies that are used in subsequent requests,# then make sure Chilkat both saves and sends cookies:
$http.SaveCookies = $true
$http.SendCookies = $true
$http.CookieDir = "memory"# Send a GET request to a URL, using Windows Integrated Authentication...
$responseStr = $http.QuickGetStr("https://somewhere.net/api/user")
if ($http.LastMethodSuccess -ne $true) {
$($http.LastErrorText)
exit
}
$("response status code = " + $http.LastStatus)
$("response header:")
$($http.LastHeader)
$("----")
$($responseStr)