【发布时间】:2020-05-29 16:43:09
【问题描述】:
我们是 .NET Core 的新手。我们有一个 ASP.NET Core 2.1 应用程序,由我们的系统管理团队使用 Apache 2.2 代理在 Linux 服务器上托管。用户将在浏览器中启动我们的应用程序 URL,Apache 代理将接收请求并将其转发到我们在 Linux 服务器上的应用程序。
一切正常,我们能够自行进行持续的开发和部署。现在我们开始保护我们的应用程序,我们公司决定将 Windows 身份验证添加到我们的应用程序中。在系统管理团队完成他们的工作后,我们开始低于请求标头中的关键值。
我们正在尝试在我们的 ASP.NET Core 2.1 应用程序中编写 C# 代码来获取用户名。我们觉得 Key: Authorization 的值是加密的,里面会有用户名。我们尝试了很多方法来解密它,但无法解密它。
有人可以帮忙,让我们知道在这种情况下如何获取用户名。
请看下面我正在尝试的代码。
if (!Request.Headers.ContainsKey("Authorization"))
{
string cookieValue = Request.Headers["Authorization"];
cookieValue= cookieValue.Substring("NTLM ".Length).Trim();
UTF8Encoding specialUtf8Encoding = new UTF8Encoding(false, true);
// below code do not work. How to get plain text ?
//byte[] protectedBytes = Base64UrlTextEncoder.Decode(cookieValue);
//string plainText = System.Text.ASCIIEncoding.ASCII.GetString(protectedBytes);
}
下面是我们在 Request Header 中看到的键和值
Key: Cache-Control, Value=max-age=0
Key: Connection, Value=Keep-Alive
Key: Accept, Value=text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng
Key: Accept-Encoding, Value=gzip, deflate, br
Key: Accept-Language, Value=en-US,en;q=0.9
Key: Authorization, Value=NTLM TlRMTVNTUAADAAAAGAAYAIAAAABUAVQBmAAAAAwADABYAAAACAAIAGQAAAAUABQAbAAAAAAAAADsAQAABYKIogoA7kIAAAAPNSOWmAbXlPi5fhYGSO54RVAATQBBAF8ATgBCAHAAYwBhAG8AQQBOAFAAWABEAFcAVAAxADYANgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhmacrZwRfdlIkhEBBfdWjAQEAAAAAAACNce03PTXWAcU/7pwxmsPkAAAAAAIADABQAE0AQQBfAE4AQgABABAAQQBOAFQAVgBQAFcAUwAxAAQAJgBhAG0AZgAuAHAAYQBjAGkAZgBpAGMAbABpAGYAZQAuAG4A
Key: Cookie, Value=.AspNetCore.Antiforgery.Xf_oDoHBPRA=CfDJ8LQZvjci-adCv0t9XQ2PRfiQ6oFCKJDXb8Xe8d7Gd6wOtJc97d7fVTEUt8xrxjk9XYfqmyeGyO7iLAbWLKRTGPUVo9v2_zoRnCqVSrADnZPhBToSzxuoLf9u2QNcFTvkbYEOaNvphVotB4saPlb_osw
Key: Host, Value=dev.myweb.net:4443
Key: User-Agent, Value=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36
Key: Upgrade-Insecure-Requests, Value=1
Key: Sec-Fetch-Site, Value=none
Key: Sec-Fetch-Mode, Value=navigate
Key: Sec-Fetch-User, Value=?1
Key: Sec-Fetch-Dest, Value=document
Key: site, Value=dev.myweb.net
Key: port, Value=443
Key: X-Forwarded-For, Value=11.123.13.456
Key: X-Forwarded-Host, Value=dev.myweb.net:4443
Key: X-Forwarded-Server, Value=dev.myweb.net
【问题讨论】:
标签: c# asp.net-core-2.1 ntlm