我有一个需要同时使用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主体,但还需要启用匿名以便能够访问提供程序中的其他端点。
答案 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身份验证模式:
如果您没有看到“身份验证”图标或Windows身份验证模式,请安装以下Windows功能:
Visual Studio Web调试(IIS Express)
最后,为了便于从Visual Studio进行Web调试,您可以在项目属性中启用Windows身份验证。打开Solution explorer并选择您的项目:
然后打开“属性”选项卡并设置匿名和Windows身份验证:
有关详细信息,请查看this article。