java获取匿windows身份认证_在ASP.NET Core应用程序中启用Windows身份验证和匿名身份验证...

我对ASP.NET Core 2.0应用程序有类似的情况(除了单个控制器之外在整个应用程序中使用Windows身份验证),Daboul的解释还不够 .

中间件

public class NtlmAndAnonymousSetupMiddleware

{

private readonly RequestDelegate next;

public NtlmAndAnonymousSetupMiddleware(RequestDelegate next)

{

this.next = next;

}

public async Task Invoke(HttpContext context)

{

if (context.User.Identity.IsAuthenticated || context.Request.Path.ToString().StartsWith("/Anonymous"))

{

await next(context);

return;

}

await context.ChallengeAsync("Windows");

}

}

及其在Startup.cs中的用法:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)

{

app.UseMiddleware();

// other code here

}

因此,中间件仅接受对匿名控件的匿名请求,如果未提供Windows身份验证信息,则会提供质询 .

匿名控制器

由于中间件在匿名和需要身份验证之间进行区分,因此它看起来就像任何普通的控制器:

[Route("Anonymous")]

public class AnonymousController : Controller

{

[HttpGet("Echo")]

public string Echo(string data)

{

return data;

}

}

测试##

(全部在Windows机器上完成)

Chrome访问非匿名控制器操作=>正常工作( @User.Identity.Name 和 @Context.User.Identity.Name 返回正确的用户

Chrome匿名操作=>直接投放

Firefox(不直接从OS转移NTLM票证)非匿名=>模态请求user / pass =>如果提供正确,它工作正常

Firefox匿名操作=>直接工作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值