andychiare / netcore2-reverse-proxy

An example of how to implement a reverse proxy in .NET Core 2
MIT License
142 stars 67 forks source link

windows authentication #3

Open dragouf opened 3 years ago

dragouf commented 3 years ago

great example. Just a not, in a windows authentication (NTLM) network, just do that :

private static readonly HttpClient _httpClient = new HttpClient(new HttpClientHandler { UseDefaultCredentials = true });

to transfer authentication with the request.

dragouf commented 3 years ago

also, since it will be windows auth of the server in this case you can transfer browser windows user by using impersonation like this :

var wi = (WindowsIdentity)context.User.Identity;
// transfer windows user of the browser request (impersonate)
await WindowsIdentity.RunImpersonatedAsync(wi.AccessToken, async () =>
{
    using (var responseMessage = await _httpClient.SendAsync(targetRequestMessage, HttpCompletionOption.ResponseHeadersRead, context.RequestAborted))
     {
         context.Response.StatusCode = (int)responseMessage.StatusCode;

        this.CopyFromTargetResponseHeaders(context, responseMessage);

         await this.ProcessResponseContent(context, responseMessage);
    }
});