首页 > 解决方案 > 如何在 ASP.NET Core (.NET 5) 中获取 (IIS) 证书映射用户

问题描述

问题当通过客户端证书完成身份验证时,
如何访问与请求绑定的 IIS映射用户名。

设置
项目类型:ASP.NET Core Web API (.NET 5) 项目
主机:IIS
身份验证类型(在 IIS 中):客户端证书

配置
“证书 A”到“用户 A”的一对一映射(在站点级别)。这可行,并且用户 A 允许该请求。
带有映射用户的 IIS 请求

并在 ASP.NET Web API 项目中使用以下身份验证配置

public void ConfigureServices(IServiceCollection services)
{
    //...

    services.AddAuthentication(CertificateAuthenticationDefaults.AuthenticationScheme)
    .AddCertificate(options =>
    {
        options.AllowedCertificateTypes = CertificateTypes.All;
        options.Events = new CertificateAuthenticationEvents
        {
            OnCertificateValidated = ValidCertificateHandler,
            OnAuthenticationFailed = InvalidCertificateHandler
        };
    });
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    //...

    app.UseHttpsRedirection();

    app.UseRouting();

    app.UseAuthentication();
    app.UseAuthorization();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
    });
}

我可以访问相关用户对象中的一些用户信息。
获取用户信息代码
用户信息快速观看

但此信息来自证书本身(“证书 A”的主题)。
如果可能的话,我想得到的是来自映射用户“用户 A”的用户信息。
这完全可能吗?如果可以,我需要进行哪些更改才能访问 IIS 映射用户?

标签: c#asp.net-coreiisasp.net-web-apiclient-certificates

解决方案


推荐阅读