OWIN Startup クラスの Configuration メソッドの次の行で有効にし Network Service
て実行される OWIN でホストされた Web API があります。WindowsAuthentication
HttpListener listener = (HttpListener)appBuilder.Properties["System.Net.HttpListener"];
listener.AuthenticationSchemes = AuthenticationSchemes.IntegratedWindowsAuthentication;
ユーザーの詳細を取得しようとする場合を除いて、すべて正常に動作します。
caller = System.Security.Principal.WindowsIdentity.GetCurrent();
戻り値:AuthenticationType: "Negotiate", Name: "NT AUTHORITY\NETWORK SERVICE"
ApiController.User.Identity
戻り値:AuthenticationType: "NTLM", Name: "Domain\Username"
私は実際にApiController.User.Identity
与えられた資格情報を期待していました。両方で異なる結果が得られた理由について混乱しています。誰でもこれで私を助けることができますか?
public class CustomFilterAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext actionContext)
{
var caller = OperationContext.Current; //null
caller = System.Web.HttpContext.Current; //null
caller = actionContext.RequestContext.Principal.Identity as WindowsIdentity; //desired
caller = System.Security.Principal.WindowsIdentity.GetCurrent(); //gives account details under which the project is hosted.
}
}
OWIN スタートアップ クラス:
public class Startup
{
public void Configuration(IAppBuilder appBuilder)
{
HttpConfiguration config = new HttpConfiguration();
HttpListener listener = (HttpListener)appBuilder.Properties["System.Net.HttpListener"];
listener.AuthenticationSchemes = AuthenticationSchemes.IntegratedWindowsAuthentication;
config.MapHttpAttributeRoutes();
config.MapODataServiceRoute(
routeName: "ODataRoute",
routePrefix: "Data",
model: GetModel()
);
config.EnsureInitialized();
appBuilder.UseWebApi(config);
}
}