Хорошо, поэтому я немного исследовал это и закончил обзор того, как Microsoft.AspNetCore.Server.IISIntegrateion.AuthenticationHandler сделал это.
Затем, выяснив один способ, я хотел опубликовать этот ответ, так что 1) я найду его позже, 2) по крайней мере, он на SO на случай, если кому-то еще интересно.
Хорошо, поэтому шестнадцатеричное значение - это дескриптор, а с дескриптором мы можем вызовите олицетворение пользователя, затем получите имя пользователя, готово.
Все, что вам нужно, это pywin32 пакет:
pip install pywin32
Полный пример в Python :
import win32api
import win32security
if 'x-iis-windowsauthtoken' in request.headers.keys():
handle_str = request.headers['x-iis-windowsauthtoken']
handle = int(handle_str, 16) # need to convert from Hex / base 16
win32security.ImpersonateLoggedOnUser(handle)
user = win32api.GetUserName()
win32security.RevertToSelf() # undo impersonation
win32api.CloseHandle(handle) # don't leak resources, need to close the handle!
print(f"user name: {user}")