C# 强制Windows挑战
我有一个需要同时使用匿名和Windows的授权提供程序,但我似乎无法使用以下方式获得Windows挑战:C# 强制Windows挑战,c#,asp.net,.net,asp.net-mvc,identity,C#,Asp.net,.net,Asp.net Mvc,Identity,我有一个需要同时使用匿名和Windows的授权提供程序,但我似乎无法使用以下方式获得Windows挑战: if (principal == null || principal.Identity == null || string.IsNullOrWhiteSpace(principal.Identity.Name)) { context.OwinContext.Authentication.Challenge();
if (principal == null || principal.Identity == null || string.IsNullOrWhiteSpace(principal.Identity.Name))
{
context.OwinContext.Authentication.Challenge();
return Task.FromResult(0);
}
是否需要设置任何其他配置值才能使该行正常工作<代码>上下文.OwinContext.Authentication.Challenge()代码>
你有没有想过为什么这行不通?我需要能够获得windows主体,它只在启用windows的情况下运行良好,但还需要启用匿名,以便能够访问提供程序中的其他端点 简而言之,您应该在Web主机中启用Windows身份验证。 根据您使用的Web主机,有不同的设置 配置Web主机后,控制器代码开始工作 OWIN自主机 将
HttpListener
配置为在OWINStartup
类中接受两种身份验证模式:
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)
最后,为了方便从VisualStudio进行Web调试,您可以在项目属性中启用Windows身份验证。打开解决方案资源管理器并选择您的项目:
然后打开“属性”选项卡并设置匿名身份验证和Windows身份验证:
有关更多详细信息,您可以签出。我在IIS中启用了windows身份验证,但一旦启用了匿名,我就可以获得windows用户帐户,只有启用了匿名。此行应提示输入windows creds context.OwinContext.Authentication.Challenge();但是不起作用,所以我不确定是否还有其他设置需要设置。@Fab客户端有什么?是
HttpClient
?@Fab btw尝试显式指定身份验证模式:context.OwinContext.authentication.Challenge(“Ntlm”)
。该客户端是隐式流Javascript客户端。我试着用谈判,但还是没有成功。我重定向到授权服务器,然后重定向回url中的令牌,对其进行解析,但一旦我尝试调用服务器端点,由于windows和我尝试匿名的原因,请求被拒绝,因此我可以请求获取JWT密钥,以在客户端验证令牌。