如何解决Windows 身份验证 - 邮递员HttpContext 名称为空
我的问题与 Postman Windows Authentication (NTLM) not working 类似,但目前还没有答案。
我使用了 .NetCore rest api (netcoreapp3.1)。
-
在launchsettings.json
{ "iisSettings": { "windowsAuthentication": true,"anonymousAuthentication": false,.. }
-
Startup.cs
public void ConfigureServices(IServiceCollection services) { services.AddAuthentication(IISDefaults.AuthenticationScheme); } public void Configure(IApplicationBuilder app,IWebHostEnvironment env) { //... app.UseHttpsRedirection(); app.UseRouting(); app.UseAuthentication(); app.UseAuthorization(); //....useEndpoints middleware is being called afterwards }
-
EmployeeController.cs
[Route("IISDetails")] [HttpGet] public IActionResult IISDetails() { var name = User.Identity.Name; return new ContentResult() { Content = $@"IIS authorized. AD: {name}" }; }
我没有使用 [Authorize] 标签,所以至少我可以看到这是否有效,但 Name 始终为空。
如果我将 Authorize 属性放在我的 IISDetails 函数中,它会给我
system.invalidOperationException: 没有指定 authenticationScheme,也没有找到 DefaultChallengeScheme。
解决方法
所以我添加了 [Authorization] 标签并从
更改了 Startup.csMutableLiveData
到
services.AddAuthentication(Microsoft.AspNetCore.Authentication.Negotiate.NegotiateDefaults.AuthenticationScheme).AddNegotiate();
在浏览器中试了一下,成功了!!
P.S:仍然不能使用 Postman NTLM 身份验证(测试版)
- 在 IISDefaults.AuthenticationScheme 上,它给了我
System.InvalidOperationException:未指定 authenticationScheme,也未找到 DefaultChallengeScheme。可以使用 AddAuthentication(string defaultScheme) 或 AddAuthentication(Action configureOptions) 设置默认方案。 在 Microsoft.AspNetCore.Authentication.AuthenticationService.ChallengeAsync(HttpContext 上下文、字符串方案、AuthenticationProperties 属性) 在 Microsoft.AspNetCore.Authorization.Policy.AuthorizationMiddlewareResultHandler.HandleAsync(RequestDelegate next,HttpContext context,AuthorizationPolicy policy,PolicyAuthorizationResult authorizeResult) 在 Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext 上下文) 在 Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
仍然感谢有关为什么其他事情不起作用的任何指导:)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。