避免 IIS 服务器出现登录提示进行 Windows 身份验证

问题描述 投票:0回答:1

我有一个 Web 应用程序,将托管在 Intranet IIS 服务器中。要求是登录端点应执行 LDAPS 身份验证。在本地开发环境中一切顺利。但是,当将其放置在实时 IIS 服务器或我的本地 IIS 服务器中时,它会提示登录,如下图所示:

sign_in_prompt_error

我不希望这种事发生。我将允许来自任何 Windows 用户的请求,我的身份验证端点将负责处理。

我应该在哪里进行更改?是在我的 .NET6 Web api 代码中还是需要更改 IIS 服务器设置?

我在 IIS 中执行的步骤: --首先,我在管理模式下启动了本地 IIS 服务器。

  1. 在我的网站中,我单击“身份验证”=> 匿名身份验证=已禁用=> Windows 身份验证=已启用;
  2. 我尝试选中/取消选中“扩展保护”和“启用内核模式”。这里没有任何帮助。

但是,登录提示仍然存在。

3)在互联网上我找到了一些解决方案,说,转到控制面板=> Internet选项=> Internet => 身份验证登录=> 选择使用当前用户和密码验证登录

上述步骤对我来说也不起作用。

我处理 CORS 和 Windows 身份验证的 .net6 program.cs 代码是:

//c# .net6 code
var builder = WebApplication.CreateBuilder(args);

var corsOrigins = builder.Configuration["Cors:origins"].Split(",");//Taking origins from config. file
var corsMethods = builder.Configuration["Cors:methods"].Split(",");
builder.Services.AddCors(options =>
{
    options.AddDefaultPolicy(builder =>
    {
        builder.WithOrigins(corsOrigins)
               .AllowAnyHeader()
               .WithMethods(corsMethods)
               .AllowCredentials();
    });
});

builder.Services.AddAuthentication(NegotiateDefaults.AuthenticationScheme)
   .AddNegotiate();

builder.Services.AddAuthorization(options =>
{
    // By default, all incoming requests will be authorized according to the default policy.
    options.FallbackPolicy = options.DefaultPolicy;
});

我在 IIS 中所做的更改也显示在图像iis_settings中。另外,我在 IIS 中没有任何角色/组。

最后,我想要的是我不想在我的 API 端点上触发自动登录事件。身份验证端点已通过识别用户的 Windows 身份并执行 LDAPS 来处理要处理的实际身份验证逻辑。

请帮助我解决这个问题。

sign_in_prompt_error

iis_settings

windows authentication asp.net-core-webapi .net-6.0 iis-10
1个回答
0
投票

我在 IIS 中执行的步骤:

--首先,我在管理模式下启动了本地 IIS 服务器。

  1. 在我的网站中,我单击“身份验证”=> 匿名身份验证=已禁用=> Windows 身份验证=已启用;

这里需要理解的是 Windows 身份验证是 而不是 LDAPS 身份验证。您想要允许表单身份验证。这将让您使用允许用户登录的Form 构建自己的登录页面。然后,您还必须授予匿名访问登录页面的权限。

© www.soinside.com 2019 - 2024. All rights reserved.