【问题标题】:Windows Authentication - Postman (HttpContext Name is Null)Windows 身份验证 - 邮递员(HttpContext 名称为空)
【发布时间】:2021-09-01 20:15:37
【问题描述】:

我的问题类似于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] 标记,因此至少我可以看到这是否有效,但名称始终为空。

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

如果我将 Authorize 属性添加到我的 IISDetails 函数中,它会给我

System.InvalidOperationException: 没有指定 authenticationScheme,也没有找到 DefaultChallengeScheme。

【问题讨论】:

    标签: api authentication .net-core windows-authentication authenticationchallenge


    【解决方案1】:

    所以我添加了 [Authorization] 标签并将 Startup.cs 从

    services.AddAuthentication(IISDefaults.AuthenticationScheme);
    

    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 下一个,HttpContext 上下文,AuthorizationPolicy 策略,PolicyAuthorizationResult 授权结果) 在 Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext 上下文) 在 Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext 上下文)

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

    【讨论】:

      猜你喜欢
      • 2017-04-15
      • 2021-09-15
      • 2014-10-13
      • 2023-03-12
      • 2021-02-05
      • 1970-01-01
      • 2018-05-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多