我有一个控制台应用程序SERVER,该服务器使用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;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句