Windows 身份验证 - 邮递员HttpContext 名称为空

问题描述

我的问题与 Postman Windows Authentication (NTLM) not working 类似,但目前还没有答案。

我使用了 .NetCore rest api (netcoreapp3.1)。

  1. 在launchsettings.json

    {
     "iisSettings": {
     "windowsAuthentication": true,"anonymousAuthentication": false,..
    }
    
  2. 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
    
       }
    
  3. EmployeeController.cs

    [Route("IISDetails")]
     [HttpGet]
     public IActionResult IISDetails()
     {
    
         var name = User.Identity.Name;
         return new ContentResult() { Content = $@"IIS authorized. AD: {name}" };
     }
    

我没有使用 [Authorize] 标签,所以至少我可以看到这是否有效,但 Name 始终为空。

邮递员 我正在授权选项卡中设置用户名。附上图片供参考。

enter image description here

如果我将 Authorize 属性放在我的 IISDetails 函数中,它会给我

system.invalidOperationException: 没有指定 authenticationScheme,也没有找到 DefaultChallengeScheme。

解决方法

所以我添加了 [Authorization] 标签并从

更改了 Startup.cs
MutableLiveData

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)

仍然感谢有关为什么其他事情不起作用的任何指导:)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...