Asp.net-Web-Api

帶有 OWIN SelfHost 和 Windows 身份驗證的 WebApi

  • August 18, 2017

我有一個控制台應用程序伺服器,它使用 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;

引用自:https://stackoverflow.com/questions/32080694