强制Windows挑战

时间:2017-08-25 18:21:37

标签: c# asp.net .net asp.net-mvc identity

我有一个需要同时使用Anonymous和Windows的AuthorizationProvider,我似乎无法使用Windows挑战来使用:

if (principal == null || principal.Identity == null || string.IsNullOrWhiteSpace(principal.Identity.Name))
            {
                context.OwinContext.Authentication.Challenge();
                return Task.FromResult(0);
            }

我需要设置任何其他配置值才能使此线路正常工作吗? :context.OwinContext.Authentication.Challenge();

为什么这不起作用的任何想法?我需要能够获得只在启用Windows的情况下工作正常的Windows主体,但还需要启用匿名以便能够访问提供程序中的其他端点。

1 个答案:

答案 0 :(得分:3)

简而言之,您应该在Web主机中启用Windows身份验证。 根据您使用的Web主机,有不同的设置。

配置Web主机后,您的控制器代码就会开始工作。

OWIN自我主持人

配置HttpListener以接受OWIN Startup类中的两种身份验证模式:

class Startup
{
    public void Configuration(IAppBuilder app)
    {
        var listener = (HttpListener)app.Properties["System.Net.HttpListener"];

        listener.AuthenticationSchemes = 
            AuthenticationSchemes.IntegratedWindowsAuthentication |
            AuthenticationSchemes.Anonymous;

        // Other initialization
    }
}

<强> IIS

如果要在IIS上托管应用程序,则应在应用程序的IIS网站设置中启用Windows身份验证模式:

enter image description here enter image description here

如果您没有看到“身份验证”图标或Windows身份验证模式,请安装以下Windows功能:

enter image description here

Visual Studio Web调试(IIS Express)

最后,为了便于从Visual Studio进行Web调试,您可以在项目属性中启用Windows身份验证。打开Solution explorer并选择您的项目:

enter image description here

然后打开“属性”选项卡并设置匿名和Windows身份验证:

enter image description here

有关详细信息,请查看this article