我需要将IE中的activex智能卡身份验证升级为NET5中的Blazor web身份验证。这是通过带PIN码的smartcard进行身份验证的强制要求。我为Configure certificate authentication in ASP.NET Core设置了identityServer4,但是当调用登录页面时,智能卡读取器不能读取插入客户端的智能卡。我需要根据要在客户端的智能卡中读取的证书来验证服务器上的登录。有什么方法可以实现这个目标吗?或者以某种方式通过blazor客户端页面?谢谢
发布于 2021-08-27 16:11:51
如果要从identity server中的控制器读取智能卡信息,请使用:
var cert = Request.HttpContext.Connection.ClientCertificate;我也在进行同样的斗争。我可以让IdentityServer4进行智能卡身份验证,但它不会回传令牌。我将其修改为使用不同的身份验证方法,但我从智能卡获取信息。它在某种程度上对我来说是有效的。我希望有更好的方法。
发布于 2021-08-30 08:22:48
客户要求放弃identity server,而我被迫设法解决这个问题。我创建了一个WebApi,并将其配置为像https://docs.microsoft.com/en-us/aspnet/core/security/authentication/certauth?view=aspnetcore-5.0一样需要证书。您在WebApi中公开的任何方法都需要证书,您可以通过X509Certificate2 clientCertificate = await HttpContext.Connection.GetClientCertificateAsync();获取证书并根据需要进行处理,即返回指纹。在服务器上,您需要在受信任的证书根目录中安装与您的智能卡相关的证书颁发机构,以使webapi正常工作,否则您将得到一个“禁止”响应(https://docs.microsoft.com/en-us/skype-sdk/sdn/articles/installing-the-trusted-root-certificate)。在Blazor客户端端,您只需调用webapi端点并读取智能卡,然后键入正确的安全代码即可获得所需的响应
https://stackoverflow.com/questions/66601577
复制相似问题