Asp.net-Web-Api
帶有 OWIN SelfHost 和 Windows 身份驗證的 WebApi
我有一個控制台應用程序伺服器,它使用 OWIN 自託管託管 WebApi 控制器,並在名為“ServiceTest1”的自定義帳戶下執行。
在同一台機器上,我有另一個控制台應用程序 CLIENT,它在帳戶“ServiceTest2”下執行,我想在 SERVER 中擷取“ServiceTest2”呼叫控制器操作。然而:
WindowsIdentity.GetCurrent()始終是“ServiceTest1”。Thread.CurrentPrincipal是未經身份驗證的GenericIdentity。RequestContext.Principal一片空白。User一片空白。我需要什麼才能讓這個 WebApi OWIN 自託管來獲取呼叫者的 Windows 身份?
你的問題有點不清楚你是如何實現 Windows 身份驗證的。
啟用 Windows 身份驗證:
public class Startup { public void Configuration(IAppBuilder app) { HttpListener listener = (HttpListener)app.Properties["System.Net.HttpListener"]; listener.AuthenticationSchemes = AuthenticationSchemes.IntegratedWindowsAuthentication; // ... } }在 OWIN 中間件中獲取使用者:
public async Task Invoke(IDictionary<string, object> env) { OwinContext context = new OwinContext(env); WindowsPrincipal user = context.Request.User as WindowsPrincipal; //... }在 Web API 控制器中獲取使用者:
// In a web api controller function WindowsPrincipal user = RequestContext.Principal as WindowsPrincipal;