首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >具有客户证书认证的.Net核心Web

具有客户证书认证的.Net核心Web
EN

Stack Overflow用户
提问于 2018-12-13 12:16:54
回答 4查看 27.4K关注 0票数 12

我在.Net Core2.1中开发了一个简单的WEB服务

我正在尝试实现一个客户端证书身份验证,因此我只能将访问API的权限授予在其计算机上安装了特定证书的客户端。

客户端使用浏览器(Chrome、Edge、IE11或Firefox)访问API。

我在API方法中添加了对证书的请求:

代码语言:javascript
运行
复制
[HttpGet]
public ActionResult<IEnumerable<string>> Get()
{

    X509Certificate2 cert = Request.HttpContext.Connection.ClientCertificate;
    if (cert!=null && cert.Verify())
    {
        //more verification here...
        return Content("....", "application/json");
    }
    else
    {
        return Content("....", "application/json");
    }

}

然后,我安装了一个自签名证书,并添加到受信任的根中,从而启用了客户端身份验证功能。

但是变量cert总是null,浏览器甚至没有提示我在请求页面时使用证书。

我想,因为我必须在某个地方设置web服务器必须请求客户端证书的地方,因为在IIS中可以设置,但是在我的开发环境中,我使用的是IIS。

如何强制IIS express请求客户端证书?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-12-13 13:10:33

为了使用ASP.NET核心身份验证堆栈进行适当的证书身份验证,您还可以通过巴里·多兰斯自己签出idunno.Authentication.Certificate。它允许您为您的应用程序启用证书身份验证,并像处理任何其他身份验证方案一样处理它,这样您就可以将实际的基于证书的逻辑排除在业务逻辑之外。

这个项目包含了证书认证 for ASP.NET Core的一个实现。证书身份验证发生在TLS级别,在它到达ASP.NET核心之前很久,因此,更准确地说,这是一个验证证书的身份验证处理程序,然后提供一个事件,您可以在该事件中将该证书解析为ClaimsPrincipal。 您必须使用配置您的主机进行证书身份验证,无论是IIS、Kestrel、Azure应用程序还是其他您正在使用的应用程序。

确保还检查了如何正确设置“文件”,因为它要求主机配置正常工作,就像您对IIS所做的那样。还包括其他服务器的说明,如原始的Kestrel、IIS、Azure或一般反向代理。

票数 5
EN

Stack Overflow用户

发布于 2018-12-13 12:40:58

为了使IIS Express能够开始请求客户端证书并将它们传递给服务器端,必须编辑配置文件:

整个配置位于.vs\config\applicationhost.config中的解决方案文件夹中。

确保设置下列值:

代码语言:javascript
运行
复制
<security>
   <access sslFlags="Ssl, SslNegotiateCert, SslRequireCert" />

代码语言:javascript
运行
复制
<iisClientCertificateMappingAuthentication enabled="true"></iisClientCertificateMappingAuthentication>
票数 3
EN

Stack Overflow用户

发布于 2019-07-30 14:14:17

对于本地测试,可以从Visual在IIS Express中启用SSL。在“属性”窗口中,将“启用SSL”设置为“真”。注意SSL的值;使用此URL测试HTTPS连接。

谁需要这里的细节

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53761660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档