客户端认证通过X509证书在asp.net
发布时间:2020-05-23 14:31:13 所属栏目:asp.Net 来源:互联网
导读:我有一个asp.net应用程序,我需要验证使用X509证书的用户。也就是说,用户必须安装我颁发的证书,以便他可以浏览我的网站,我可以通过此证书来识别哪个用户。 我已经在IIS上配置了SSL,但现在不是我要找的,我不知道从哪里开始。 如何在asp.net c#中实现? 要
|
我有一个asp.net应用程序,我需要验证使用X509证书的用户。也就是说,用户必须安装我颁发的证书,以便他可以浏览我的网站,我可以通过此证书来识别哪个用户。 我已经在IIS上配置了SSL,但现在不是我要找的,我不知道从哪里开始。 如何在asp.net c#中实现? 解决方法要创建安全身份验证机制,您将使用客户端证书和用户名/密码。原因是证书是可以被窃取(复制)的,但是密码只是该人才知道的。另一种可能是智能卡上的证书,受PIN保护。要在ASP.NET应用程序中使用客户端证书,您需要执行以下操作: 步骤1:在IIS管理器中,打开您的应用程序或网站,选择SSL设置并选择要求SSL和要求客户端证书。 现在当用户打开您的网站时,浏览器将提示他选择将在通信中使用的客户端证书。 重要此处,您必须确保证书是由您信任的人颁发的(因为任何人都可以创建自己的自签名证书)。 步骤2:添加配置项(web.config,数据库等)。在此列表中,您将为客户端证书添加整个CA(证书颁发机构)链的指纹。 <add key="ClientCertificateIssuerThumbprints" value="4901f5b87d736cd88792bd5ef7caee91bf7d1a2b,0113e31aa85d7fb02740a1257f8bfa534fb8549e,c9321de6b5a82666cf6971a18a56f2d3a8675602"/> 步骤3:创建一个经典的用户名/密码登录页面。验证用户名/密码。 步骤4:将以下代码添加到您的登录页面: var x509 = new X509Certificate2(this.Request.ClientCertificate.Certificate);
var chain = new X509Chain(true);
chain.ChainPolicy.RevocationMode = X509RevocationMode.Offline;
chain.Build(x509);
var validThumbprints = new HashSet<string>(
System.Configuration.ConfigurationManager.AppSettings["ClientCertificateIssuerThumbprints"]
.Replace(" ","").Split(',',';'),StringComparer.OrdinalIgnoreCase);
// if the certificate is self-signed,verify itself.
for (int i = chain.ChainElements.Count > 1 ? 1 : 0; i < chain.ChainElements.Count; i++)
{
if (!validThumbprints.Contains(chain.ChainElements[i].Certificate.Thumbprint))
throw new UnauthorizedAccessException("The client certificate selected is not authorized for this system. Please restart the browser and pick the certificate issued by XXXXX");
}
// certificate Subject would contain some identifier of the user (an ID number,SIN number or anything else unique). here it is assumed that it contains the login name and nothing else
if (!string.Equals("CN=" + login,x509.Subject,StringComparison.OrdinalIgnoreCase))
throw new UnauthorizedAccessException("The client certificate selected is authorized for another user. Please restart the browser and pick another certificate.");
只有当密码和证书都已经被检查时,才允许用户在系统中被允许。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 如何让ASP.NET AJAX通过GZip压缩发送JSON响应?
- asp.net-mvc – Asp.net MVC 3验证在TryUpdateModel中排除了
- asp.net网站默认文件在子文件夹中
- asp.net-mvc – 更改项目URL Visual Studio
- 有没有办法我仍然可以在我的ASP.NET MVC 2项目中使用app_of
- ASP.NET MVC中多个浏览器选项卡中的唯一会话
- ASP.NET MVC默认项目结构和脚本文件夹
- 什么时候最早我可以在ASP.NET MVC页面生命周期中访问SESSIO
- asp.net-mvc – ASP.Net 5 project.json脚本命令的完整列表
- 用ASP.NET MVC阻止ZmEu攻击
推荐文章
站长推荐
- asp.net-mvc – 为会话设置HttpContext.User
- ASP.NET MVC 1是否与ASP.NET MVC 2兼容?
- asp.net-mvc – Jasmine在一个单独的测试项目中
- asp.net-mvc – 当前动作是ChildAction吗?
- asp.net-mvc – 会员提供商中的GetAllUsers在哪里
- asp.net-mvc – MVC – 更改模型的视图中的值[封
- asp.net-mvc – 在同一个视图文件夹中的RenderPa
- asp.net – 在哪里可以下载DLR的Managed JScript
- asp.net – 命名空间“系统”中不存在类型或命名
- asp.net-mvc – 使用Data Annotation验证DateTim
热点阅读
