使用Owin和IIS托管设置身份验证模式

时间:2017-07-31 14:19:00

标签: c# asp.net iis owin

我目前有一个自托管的OWIN WebAPI服务,它使用某些URL的Windows身份验证模式,而使用App Startup(startup.cs)中的以下代码的几乎所有其他URL使用Anonymous:

if (app.Properties.ContainsKey("System.Net.HttpListener"))
        {
            HttpListener listener = (HttpListener)app.Properties["System.Net.HttpListener"];
            listener.AuthenticationSchemeSelectorDelegate = request =>
            {
                var restrictedAuthenticationScheme = (AuthenticationSchemes)AuthenticationSchemes.IntegratedWindowsAuthentication;
                var scheme =
                    request.RawUrl.IndexOf("internal", StringComparison.OrdinalIgnoreCase) >= 0
                    || request.RawUrl.IndexOf("admin", StringComparison.OrdinalIgnoreCase) >= 0
                ? restrictedAuthenticationScheme // use intergated for internal or admin end points only
                    : AuthenticationSchemes.Anonymous;
                Logger.LogInfo(string.Format("Request : {0}, Authentication Scheme {1}", request.RawUrl, scheme.ToString()));
                return scheme;
            };
            listener.Start();
        }

但是,在IIS下运行时,似乎不是HTTPListener,因此app.properties(app.Properties [" System.Net.HttpListener"]不存在),所以关键数量是12,但是当他自己托管它时13.任何想法,我应该如何处理这个问题? 希望我已经包含了足够的细节,但请告诉我。

0 个答案:

没有答案